Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Ogramar

Páginas: [1]
1
Este código sirve para visualizar un reloj cronómetro con cuenta atrás que puede detenerse o resetearse en cualquier momento:

Código: [Seleccionar]
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class StopwatchGUI3 extends JFrame {

    private static final long serialVersionUID = 3545053785228009472L;

    // GUI Components
    private JPanel panel;
    private JLabel timeLabel;

    private JPanel buttonPanel;
    private JButton startButton;
    private JButton resetButton;
    private JButton stopButton;

    // Properties of Program.
    private byte centiseconds = 0;
    private byte seconds = 30;
    private short minutes = 0;

    private DecimalFormat timeFormatter;

    private Timer timer;

    public StopwatchGUI3() {
        panel = new JPanel();
        panel.setLayout(new BorderLayout());

        timeLabel = new JLabel();
        timeLabel.setFont(new Font("Consolas", Font.PLAIN, 13));
        timeLabel.setHorizontalAlignment(JLabel.CENTER);
        panel.add(timeLabel);

        buttonPanel = new JPanel();
        buttonPanel.setLayout(new FlowLayout(FlowLayout.CENTER));

        startButton = new JButton("Start");
        startButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                timer.start();

            }
        });
        buttonPanel.add(startButton);

        resetButton = new JButton("Reset");
        resetButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                timer.stop();

                centiseconds = 0;
                seconds = 30;
                minutes = 0;

                timeLabel.setText(timeFormatter.format(minutes) + ":"
                        + timeFormatter.format(seconds) + "."
                        + timeFormatter.format(centiseconds));
            }
        });

        buttonPanel.add(resetButton);

        stopButton = new JButton("Stop");
        stopButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                timer.stop();
            }
        });

        buttonPanel.add(stopButton);

        panel.add(buttonPanel, BorderLayout.SOUTH);

        timeFormatter = new DecimalFormat("00");

        timer = new Timer(10, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (centiseconds > 0) {
                    centiseconds--;
                } else {
                    if (seconds == 0 && minutes == 0) {
                        timer.stop();
                    } else if (seconds > 0) {
                        seconds--;
                        centiseconds = 99;
                    } else if (minutes > 0) {
                        minutes--;
                        seconds = 59;
                        centiseconds = 99;
                    }
                }
                timeLabel.setText(timeFormatter.format(minutes) + ":"
                        + timeFormatter.format(seconds) + "."
                        + timeFormatter.format(centiseconds));
            }
        });

        timeLabel.setText(timeFormatter.format(minutes) + ":"
                + timeFormatter.format(seconds) + "."
                + timeFormatter.format(centiseconds));

        add(panel);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setTitle("StopwatchGUI.java");

        pack();
        setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                new StopwatchGUI3();
            }
        });
    }
}

Salu2

2
Hola

InputStream es una clase abstracta public abstract class InputStream con un método read() previsto para leer un byte de a cada vez desde un fichero

BufferedInputStream no es abstracta, es una clase concreta, por tanto puedes crear instancias de esta clase. Su método read devuelve un byte de a cada vez pero mantiene un buffer donde va acumulando los bytes internamente.

La clave en las clases que comienzan con Buffered es que usan un buffer, digamos que una memoria interna que normalmente hace que esas clases sean más eficientes, es decir, es esperable que BufferedInputStream sea más rápida que las otras implementaciones de InputStream. La idea sería: un InputStream normal tiene que estar llamando y accediendo al sistema operativo para cada byte que quiera devolver y esto consume cpu y es ineficiente. En cambio un BufferedInputStream llama al sistema operativo una vez y recolecta un array de bytes. Cuando se le pide read() ya no tiene que acceder al sistema operativo, sino que devuelve la información de su buffer interno. En algún momento el buffer interno se agota, pero mientras esto ocurre se han ahorrado un montón de procesos.

Salu2

3
Ejemplo 1: creamos una estructura student que nos permite almacenar los datos de un estudiante. y en el main creamos una variable record de tipo student.

Código: [Seleccionar]
#include <stdio.h>
#include <string.h>

struct student
{
           int id;
           char name[20];
           float percentage;
};

int main()
{
           struct student record = {0}; //Initializing to null

           record.id=1;
           strcpy(record.name, "Raju");
           record.percentage = 86.5;

           printf(" Id is: %d \n", record.id);
           printf(" Name is: %s \n", record.name);
           printf(" Percentage is: %f \n", record.percentage);
           return 0;
}


Ejemplo 2: creamos el tipo de dato y al mismo tiempo declaramos

Código: [Seleccionar]
#include <stdio.h>
#include <string.h>

struct student
{
            int id;
            char name[20];
            float percentage;
} record;

int main()
{

            record.id=1;
            strcpy(record.name, "Raju");
            record.percentage = 86.5;

            printf(" Id is: %d \n", record.id);
            printf(" Name is: %s \n", record.name);
            printf(" Percentage is: %f \n", record.percentage);
            return 0;
}





Ejemplo 3: creamos el tipo de dato y un array de elementos

Código: [Seleccionar]
#include <stdio.h>
#include <string.h>

struct student
{
     int id;
     char name[30];
     float percentage;
};

int main()
{
     int i;
     struct student record[2];

     // 1st student's record
     record[0].id=1;
     strcpy(record[0].name, "Raju");
     record[0].percentage = 86.5;

     // 2nd student's record         
     record[1].id=2;
     strcpy(record[1].name, "Surendren");
     record[1].percentage = 90.5;

     // 3rd student's record
     record[2].id=3;
     strcpy(record[2].name, "Thiyagu");
     record[2].percentage = 81.5;

     for(i=0; i<3; i++)
     {
         printf("     Records of STUDENT : %d \n", i+1);
         printf(" Id is: %d \n", record[i].id);
         printf(" Name is: %s \n", record[i].name);
         printf(" Percentage is: %f\n\n",record[i].percentage);
     }
     return 0;
}

4
Hoola!

Con el código que indico más abajo se pueden leer los datos de un archivo excel y mostrarlos sobre un datagridview con Visual Basic

Para que funcione hay que escribir bien la ruta (C:\ejemplo.xlsx puede ser otra) y el nombre de la hoja (en vez de [Hoja1$] puede ser [Productos$] o como se llame)


Código: [Seleccionar]
Imports System.Data.OleDb
Imports System.IO

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    End Sub

    Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  Dim objConn As OleDbConnection
        Dim oleDA As OleDbDataAdapter
        Dim ds As DataSet
        Dim FileName As String
        FileName = "C:\ejemplo.xlsx"

        Try
            'Create a OLEDB connection for Excel file
            Dim connectionString As String = "Provider=Microsoft.ACE.Oledb.12.0;Data Source=" & FileName & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=1"""
            objConn = New OleDbConnection(connectionString)
            oleDA = New OleDbDataAdapter("select * from [Hoja1$]", objConn)
            ds = New DataSet()
            'Fill the Data Set
            oleDA.Fill(ds)
            'Set DataSource of DataGridView
            DataGridView1.DataSource = ds.Tables(0)
            ds.Dispose()
            oleDA.Dispose()
            objConn.Dispose()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
 
    End Sub

End Class

Salu2!

5
Este código Java permite recorrer recursivamente una lista (o cualquier otra colección análoga) sin usar bucles tradicionales (for, while, etc.)

Normalmente será preferible un recorrido con un iterador, bucle for tradicional, etc. pero en ocasiones nos puede interesar operar recursivamente.

Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Arrays;

public class recorridoRecursivo {
    //Recorrido recursivo ejemplo aprenderaprogramar.com

    public static void recorridoRecursivo (ArrayList<Integer> lista, int indiceActual) {
        if (indiceActual == lista.size()-1) { System.out.println ("Ultimo elemento..."+lista.get(indiceActual)); }
        else {
            System.out.println("Leyendo... " + lista.get(indiceActual));
            recorridoRecursivo(lista, indiceActual+1);
        }       
    }

    public static int numeroDeSietes (ArrayList<Integer> lista, int indiceActual, int contador) {
        if(lista.get(indiceActual) == 7) {contador= contador+1;}

        if (indiceActual == lista.size()-1) { return contador;     }

        else { return numeroDeSietes(lista, indiceActual+1, contador);    }         
    }

    public static void main (String[] args) {
        Integer [] listado = {3, 4, 1, 7, 3, 5, 7, 9, 4, 7}    ;
        ArrayList <Integer> listadoNumeros = new ArrayList<Integer> (Arrays.asList(listado));

        System.out.println ("listadoNumeros contiene " + listadoNumeros);
        System.out.println ("RECORRIDO SIN BUCLES (RECURSIVO)");
        recorridoRecursivo(listadoNumeros, 0);
        System.out.println ("RECORRIDO SIN BUCLES (RECURSIVO) CONTANDO ELEMENTOS QUE CUMPLEN UNA CONDICIÓN");
        System.out.println ("El número de sietes en la lista es " + numeroDeSietes (listadoNumeros, 0, 0));
    }
}

6
En base a lo que ha comentado Camilo voy a dar algunas opiniones (tener en cuenta que se trata de opiniones, no de "verdades") sobre el posicionamiento SEO en joomla y en general para cualquier página web. Me voy a referir a google principalmente porque es quien acapara la operativa de búsquedas en muchos países, pero también sería extensible a cualquier buscador.

- Hace unos cuantos años los buscadores trabajaban en base a algoritmos "tontos". Por decir algo, medían en cuántas páginas de tu sitio aparecía una palabra clave, medían cuántos sitios externos tenían un link a tu sitio... y el resultado era que si el algoritmo decía que tenías una buena posición, aparecías en las primeras posiciones en los resultados de búsqueda.

- Hace unos cuantos años que esto empezó a cambiar. Los ingenieros de google se dieron cuenta de que la gente lo que hacía era preparar sus webs para que el algoritmo les pusiera buena puntuación y aparecer sus webs en los primeros lugares. A raíz de esto empezaron a introducir restricciones que no hacían tan fácil obtener puntuación. Por ejemplo no bastaba con tener un link desde un sitio externo, ahora había que ver si ese sitio externo tenía buena puntuación o no era un sitio dedicado a simplemente colgar links para aumentar la posición de otras webs.

- Con los años los buscadores han desarrollado una meta-inteligencia. Ya no basta con obtener buenas puntuaciones en cosas medibles. Ahora hay más factores, de modo que cada vez se asemejan más al comportamiento que tendría un humano a la hora de clasificar los resultados de búsquedas. Por ejemplo, un aspecto a tener en cuenta es que existe un "factor de retardo". Cuando se crea una página web mucha gente espera verla rápidamente en los primeros resultados de los buscadores y hace todo lo posible para introducir optimizaciones seo gastando mucho tiempo en esto. Sin embargo, Google ahora no te posiciona en primeras posiciones de un día para otro, sino que introduce un tiempo de retardo en el que dice "estoy observando tu web a ver cómo es y cómo evoluciona". Si durante un tiempo la valoración y evolución es positiva, te iré subiendo. Si no, no.

- Google introduce factores de aleatoriedad entre otras cosas. Realmente se especula mucho con el algoritmo de posicionamiento pero nadie lo conoce, y es más, posiblemente no exista un solo algoritmo y posiblemente haya factor humano en algunos casos. Más que de google y de su algoritmo la principal preocupación de los responsables de las webs deberían ser sus propias webs.

- Google busca cada día más con meta-inteligencia o pseudo-inteligencia. En base a esto las recomendaciones para obtener un buen posicionamiento web por orden de importancia (aproximadamente) serían estas:

- Utiliza un buen nombre de dominio: relacionado con la palabra clave de tu sitio web. Por ejemplo si la web es de una tienda de surf debe llevar surf dentro del nombre de dominio.

- Crea una web con velocidades de carga adecuadas: si creas un sitio con excesivo número de animaciones, imágenes pesadas, procesos en base de datos intensivos, etc. tu web irá lenta y la experiencia de usuario (y del robot de google) será mala por esto.

- Crea una web con metadatos: las metadescripciones y meta palabras clave son rastros explícitos para los buscadores. Mucha gente trata de posicionarse con sofisticadas herramientas cuando no hace lo más básico que es introducir metadatos.

- Potencia el tráfico de tu web: el tráfico es un indicador de la calidad de la web. Para conseguir tráfico piensa que tu web es un comercio, escaparate, proveedor o como quieras verlo. La gente acudirá si es atractivo, si tiene contenidos de calidad e interesantes, si se actualiza, etc. Haciendo publicidad o con sofisticadas técnicas seo puedes conseguir un pico de visitas que se vendrá abajo rápidamente si no ofreces nada "real".

- Trata de que tu código sea aceptado por todos, o al menos por los princiaples, navegadores y dispositivos. Para ello puede usarse la validación w3c, pero si tienes la validación y tu web se ve mal tampoco servirá de mucho. Comprueba la visualización en los principales navegadores. Google te penalizará básicamente por velocidad de carga o distorsiones graves, no porque tengas algunos errores menores de validación.

- Trata de conseguir que tu web sea enlazada desde sitios relevantes.

- Sobre joomla específicamente: se pueden obtener magníficos resultados con joomla simplemente cumpliendo con todo lo anterior. No es necesario siquiera usar la optimización de urls. Al igual que con otras cuestiones, hace unos años los buscadores tenían problemas con las urls dinámicas y de ahí surgió la optimización de urls, pero hoy en día los buscadores han superado esa cuestión. Si se cumple todo lo anterior y se quieren usar herramientas extra de potenciación seo bienvenidas pero no es la cuestión clave que va a lograr un buen posicionamiento por sí sola para tu web.


7
De todo un poco... / redireccionar xmap joomla a sitemap.xml
« : 11 de Agosto 2011, 18:19 »
Hola, estoy tratando de redireccionar la dirección de una web para que muestre el sitemap generado por xmap (componente de joomla) cuando se escribe:

http://www.midominio.com/sitemap.xml

Para ello he añadido estas líneas al .htacces:

RewriteCond %{REQUEST_URI} ^/sitemap.xml
RewriteRule .* /index.php?option=com_xmap&sitemap=1&view=xml

Pero me salta un error. ¿Alguna idea?

Páginas: [1]
Esto es un laboratorio de ideas...
Aprender a programar

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".