Mostrando entradas con la etiqueta programación. Mostrar todas las entradas
Mostrando entradas con la etiqueta programación. Mostrar todas las entradas

lunes, 11 de febrero de 2013

Colores en el código de tu blog

Si publicas código de programación en tu blog seguramente habrás buscado la forma de formatearlo de modo que sea más legible (coloreándolo, poniendo números de líneas...). Hoy os presentamos una serie de CSS desarrollados por Alex Gorbachev para facilitarnos el trabajo.

Se basa en una serie de CSS personalizados para cada lenguaje de programación soportado. Existen CSS para una serie de lenguajes de programación más frecuentes (Java, Phyton, XML...).

Para ello tenemos que editar la plantilla de nuestro blog: seleccionamos el apartado "Plantilla" y pulsamos sobre "Editar HTML"


Se abre el código HTML de la plantilla e incluiremos el siguiente código antes de la etiqueta <head>:

<link href="http://alexgorbatchev.com/pub/sh/current/styles/shCore.css" rel="stylesheet" type="text/css"/>
<link href="http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css" rel="stylesheet" type="text/css"/>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js" type="text/javascript"/>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js" type="text/javascript"/>
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js" type="text/javascript"/>
<script language="javascript">SyntaxHighlighter.config.bloggerMode = true;SyntaxHighlighter.all();</script>


Una vez modificada la plantilla pulsamos sobre "Guardar plantilla" y luego sobre "Cerrar". Para utilizar el código de color en una entrada de tu blog debes utilizar las etiquetas <pre class="brush:estilo"> y </pre> delimitando el código que quieras marcar ("estilo" corresponde a uno de los estilos importados en la cabecara, en nuestro caso java, xml, html, etc...). Debemos importar el css adecuado para el lenguaje de programación que queramos utilizar, pero no incluyamos indiscriminadamente todas las librerías: se cargarán en cada página de nuestro blog (se utilice o no). Podemos encontrar el listado de CSS y de estilos (brush) en el siguiente enlace:

http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/

Vamos a presentar un ejemplo con Java. Dentro de un artículo nos posicionamos en la edición "HTML" y escribimos:



El aspecto de ese código en la previsualización será el siguiente:

Probamos con Java:
int i=15;
System.out.println("Numero " + i);

Esperamos que os resulte útil.

domingo, 10 de febrero de 2013

Fichero log: redirigir la salida de Java a un fichero

Hoy vamos a incluir cómo hacer un método que redirija la salida de Java a archivo para hacer un archivo log. El proceso es tan sencillo como utilizar dos métodos de la clase System: setErr y setOut, pasando como parámetro un objeto de tipo PrintStream.

El método propuesto es el siguiente:

public static void standardIO2File(String fileName){

        if(fileName.equals("")){//Si viene vacío usamos este por defecto

            fileName="C:\\javalog.txt";

        }

        try {

            //Creamos un printstream sobre el archivo permitiendo añadir al

            //final para no sobreescribir.

            PrintStream ps = new PrintStream(new BufferedOutputStream(

                    new FileOutputStream(new File(fileName),true)),true);

            //Redirigimos entrada y salida estandar

            System.setOut(ps);

            System.setErr(ps);

        } catch (FileNotFoundException ex) {

            System.err.println("Se ha producido una excepción FileNotFoundException");

        }

    }

Como veis el método es muy sencillo: pasamos como parámetro un String con el nombre (y ruta) del fichero y creamos sobre él un PrintStream que pasaremos como argumento a los métodos setOut y setErr. Estos métodos redirigen al fichero la salida estándar y la de error. Podemos codificar el método con dos argumentos para redirigir la salida estándar a un fichero y la de error a otro, eso queda a gusto del consumidor.

viernes, 8 de febrero de 2013

Argumentos en línea de comandos con NetBeans

Si programáis en Java es bastante probable que utilicéis un IDE integrado como Eclipse o NetBeans. Yo utilizo este último y hace poco tuve que trastear con él para encontrar algo trivial: cómo pasarle parámetros en línea de comandos a un proyecto.

En realidad se trata de un proceso muy sencillo. En primer lugar creamos una clase sencillita de Java para ilustrar el ejemplo. Se trata de una clase que imprime el primer argumento recibido en línea de comando por pantalla:


Si ejecutamos el proyecto nos aparecerá en blanco y el mensaje "Generación Correcta (...)". Si generamos el .jar podemos ejecutarlo desde la consola del sistema operativo y pasar argumentos con el comando "java -jar nombreArchivo.jar [argumentos]".

Si queremos ejecutarlo desde NetBeans con argumentos sólo tenemos que abrir el menú contextual (botón derecho del ratón) sobre el proyecto > Establecer la Configuración > Personalizar:


Se abre un diálogo modal con el campo "Argumentos", el cual podemos rellenar como si se tratara de la línea de comandos.



Pulsamos aceptar y cuando ejecutamos el proyecto ya podemos ver la salida del mismo:


jueves, 24 de enero de 2013

Java: borrar todas las filas de un JTable

La forma más usual de presentar una lista de resultados es utilizando una tabla en la que cada fila corresponde a cada elemento del resultado. En Java es frecuente utilizar jTable con un modelo DefaultTableModel (llamado miModelo en el ejemplo). Para que el método funcione es necesario declarar el modelo como variable de la clase.

Si queremos realizar filtros tenemos que eliminar los resultados previos de la tabla (en cristiano: vaciarla). Este sencillo método permite hacerlo con facilidad eliminando las filas del modelo de la tabla:

void LimpiarJTable(){
        int a =miModelo.getRowCount()-1;  //Índices van de 0 a n-1
        //System.out.println("Tabla "+a);   //Para mostrar por consola el resultado
        for(int i=a;i>=0;i--){ 

            //System.out.println("i "+i);    //Para mostrar por consola el resultado
            miModelo.removeRow(i);
        }
    }

Podéis descomentar las salidas por consola para comprobar el funcionamiento del método.

jueves, 29 de noviembre de 2012

Java en Android

Si tienes un terminal Android (teléfono, tablet...) seguramente habrás echado de menos que no ejecute java en alguna ocasión. Desde juegos hasta aplicaciones de turismo (si te gusta viajar habrás encontrado esos puntos que dicen: ¡Enciende el Bluetooth y descarga la guía de visita...!), pasando por el desarrollo de nuevas aplicaciones (como es nuestro caso), es interesante poder ejecutar archivos de java en nuestro terminal. La mala noticia es que Android no soporta una máquina virtual Java de forma nativa en estos momentos. La buena es que existen emuladores para todo: consolas de videojuegos, sistemas operativos como el propio Android y, como no, de la máquina virtual de Java.



El problema


Después de quemar unas cuantas neuronas aprendiendo a desarrollar aplicaciones java para dispositivos móviles nos encontramos con un problema a la hora de probarlas en real. Disponemos de un terminal iPad (iOS): no soporta java. Disponemos de otro terminal Android: no soporta java... vamos, que tenemos que recurrir a un móvil casi obsoleto para probar los .jar.

Pero, ¿por qué? Con lo fácil, flexible y potente que es trabajar con Java. La alternativa es programar en otro tipo de lenguajes (ActiveC, Adobe Flash...), pero eso será objeto de otros post. Aquí nos interesa ejecutar java en Android.


phoneME

Como casi siempre en informática, no somos los únicos que tenemos este mismo problema y hay gente mucho más especializada que aporta soluciones (bendita comunidad internauta).

La solución que nos ha solucionado un poquito la existencia ha sido phoneME (podéis visitar su web aquí). Se trata de una implementación de J2ME (Java2 Micro Edition para los profanos) para diferentes sistemas operativos entre los que se encuentra Android (si queréis más información sobre la versión de phoneME para Android podéis encontrarla aquí).


Instalación

En la sección de descargas de la página de phoneME podemos encontrar las versiones para los distintos sistemas operativos. A nosotros nos interesa el siguiente perfil:

phoneME Advanced - Foundation Profile + MIDP High Resolution b168 rev20547 (apk)

Se trata del perfil MIDP para ejecutar MIDlets en alta resolución (más de 240x320 pixels). Descargaremos un archivo APK que instalaremos en nuestro dispositivo Android.



Funcionamiento

Para ejecutar un archivo .jar tenemos dos opciones: 


  1. Si sólo tenemos el .jar debemos ejecutarlo desde phoneME (interfaz un poco engorrosa)
  2. Si disponemos del .jad y el .jar podemos utilizar un explorador de ficheros como el Astro y asignar la extensión .jad al phoneME (mucho más agradable de utilizar).
Vamos a centrarnos en la primera forma, por si acaso no tenéis el Astro todavía (mal, os recomiendo que lo probéis ;). El primer paso (y obvio) es pasar el .jar al terminal (por bluetooh, wifi, cable USB o como prefiráis). Una vez allí tomad nota de la ruta absoluta donde se ubica (en nuestro caso la carpeta de entradas de bluetooth: /mnt/sdcard/bluetooth) y el nombre del archivo. Esto es necesario porque phoneME no dispone de un módulo de exploración de ficheros: tendremos que darle la URL de nuestro archivo y pulsamos ejecutar:



Como podéis ver es un MIDlet sencillo desarrollado por nosotros, pero el programa es capaz de ejecutar MIDlets más complejos o incluso aplicaciones con la configuración CDC (instalando el apk correspondiente).

Espero que os resulte útil, si tenéis alguna pregunta no dudéis en escribir el comentario!

jueves, 6 de septiembre de 2012

Centrar un div en nuestra web con css

Si programáis en entorno web es bastante probable que hayáis encontrado este problema. Entre los atributos de estilo de un div podemos especificar la alineación central del contenido del div (con text-align), pero no del propio contenedor.

Algunos hemos hecho "ñapas" del tipo de declarar un div contenedor con text-align=center que contenga al div que queremos centrar, pero la solución es mucho más sencilla: poner tanto el margen derecho como el izquierdo a auto:


En css



#centrar{ 
  width:500px; /* Por ejemplo, si ocupa el 100% de la página no hay centrado ;) */
  margin-right: auto;
  margin-left: auto; 
  /* Estas dos siguientes son sólo para ilustrar mejor el ejemplo */
  padding:20px;
  color:red;
 }

(Y en nuestra página)
<div id="centrar">div centrado con contenido a la izquierda</div>

En HTML 


<div style="width:500px;margin-left:auto;margin-right:auto;background-color:red;padding:20px;">div centrado con contenido a la izquierda </div>

El resultado



Está probado en Firefox 15 y Explorer 9. Espero que os sea tan útil como a mí

martes, 4 de septiembre de 2012

Convertir juegos de caracteres latin1 a UTF-8

Un problema frecuente que nos encontramos al diseñar o migrar bases de datos es la elección del juego de caracteres. Para el castellano nos encontramos con varias alternativas, destacando dos principalmente:


  • Latin1 o ISO 8859-1 es una norma de la ISO (Organización Internacional para la estandarización) que comprende todos los alfabetos latinos para Europa Occidental (con tildes, caracteres especiales como "ñ" o "ç",etc...).
  • UTF-8 (8-bit Unicode Transformation Format) es un formato de codificación de caracteres Unicode e ISO 10646.
 Las normas ISO utilizan distintos juegos de caracteres que superponen conjuntos de símbolos (por ejemplo, el decimal 243 que corresponde a "ó" en latin1 puede corresponder a otro símbolo en cualquier otra norma ISO).

Una de las principales ventajas de UTF es que no superponen conjuntos de símbolos: el símbolo "ó" será el mismo valor independientemente del UTF que utilicemos (8, 16...).


¿Entonces UTF-8 es mejor que Latin1?


No queremos que los adeptos a uno de los dos sistemas se líen a pedradas con nosotros, así que no entraremos en polémicas ;-). Cada sistema tiene sus ventajas e inconvenientes (UTF-8 es más universal pero, ¿vamos a trabajar con alfabetos diferentes a latin1 como para justificar el mayor tamaño de almacenamiento de los datos?).


El problema


Es posible que hayáis encontrado una base de datos en un juego de caracteres que queráis migrar al otro. Si lo hacéis directamente os quedan caracteres que no tienen correspondencia exacta con el otro (no se representan bien los caracteres especiales del castellano como las "Ñ" y las tildes).


Una solución


Hablo de "una" solución porque afortunadamente existen muchas soluciones para este problema. Esta es la que yo utilizo por su sencillez. Os voy a describir el proceso para el paso de tablas en latin1 a UTF-8, el proceso inverso es similar.

El único software que vamos utilizar (además del propio de nuestra base de datos) es un editor de texto plano capaz de guardar cambiando el juego de caracteres. Yo trabajo con una versión de evaluación de Textpad, aunque el propio Notepad de Windows o el Notepad++ también pueden hacerlo, como casi cualquier editor de texto plano.

Entrando en faena, lo que debemos hacer es:


1) Exportamos

Hacemos una exportación (o dump) de la(s) tabla(s) de la base de datos de origen en texto plano (a un archivo sql). En el ejemplo que os muestro se trata de una tabla de municipios de España exportada en latin1.


2) Editaremos ese archivo exportado:


 Como podéis ver, en la sentencia SQL de creación de la tabla se especifica el juego de caracteres en dos puntos.  Vamos a eliminar el juego de caracteres de la columna y cambiaremos el general por defecto de la tabla a UTF-8 manualmente:




 Por último pulsamos sobre guardar cómo para poder cambiar el juego de caracteres:




3) Importamos el archivo editado


Al importar a nuestra base de datos de destino tenemos que especificar que se trata de un archivo en UTF-8.

En nuestro caso utilizamos una base de datos MySQL con phpMyAdmin:



Si sois de los que preferís utilizar la línea de comandos:


mysql -u mi_usuario -p  db_destino   --default-character-set=utf8 < archivo_editado_utf8.sql


Et voilá, tendremos nuestra tabla importada con sus caracteres correctos sin artefactos en las tildes, "ñ", "ç"...


Activar / Desactivar javascript en Firefox con un clic

Si sois desarrolladores es posible que necesitéis activar y desactivar Javascript para comprobar como se comportan vuestros scripts. Si trabajáis con Firefox habréis comprobado que es un poco farragoso activarlo y desactivarlo (ir al menú herramientas, la pestaña concreta, entrar en las opciones...). Afortunadamente somos muchos los que nos encontramos con este "problema" y hay numerosas soluciones para no perder tiempo en ello. 

También puede ser útil a la hora de copiar contenidos (texto, imágenes...) de esas páginas web que nos deshabilitan el botón derecho del ratón ;-)


QuickJava

Doug G  ha desarrollado la extensión QuickJava para Firefox. Se trata de una barra de botones que nos permite desactivar y activar Javascript con un solo clic:


El botón estará azul o rojo en función del estado de activación de javascript (rojo desactivado). Como podéis observar incluye también la posibilidad de activar y desactivar (en su versión actual):
  • Java
  • Flash
  • Silverlight
  • Cookies
  • Imágenes animadas
  • Hojas de estilos
 Realmente merece la pena, probadla. Podéis descargarla desde:

https://addons.mozilla.org/en-US/firefox/addon/quickjava/




Recomendaciones de Alcasoft