Ofuscar código Java

(17 comentarios)

Asumámoslo: es imposible proteger al 100% nuestro código de miradas indiscretas. Pero eso no implica que no podamos dificultar un poco el proceso de decompilar nuestro código. Y este es el objetivo de los ofuscadores de código.

Un ejemplo de este tipo de herramientas es la aplicación GPL ProGuard que permite, además de ofuscar nuestras clases Java, optimizarlas, comprimirlas y añadirles información de preverificación, de forma que la carga de las clases en Java SE 6 y Java ME 6 sea más rápida y más eficiente.

La herramienta funciona buscando primeramente clases, campos, métodos y atributos no utilizados, los cuáles elimina; pasa entonces a optimizar el bytecode y eliminar instrucciones innecesarias; y, por último, elimina la información de depuración y renombra las clases, campos y métodos restantes utilizando nombres cortos y poco legibles.

Mejora tu código Java con PMD

(6 comentarios)

PMD es una herramienta que comprueba que nuestra aplicación cumpla una serie de reglas que nos ayudan a obtener un código más elegante, sencillo y mantenible. Estas reglas se agrupan por conjuntos y pueden ser reglas de complejidad, como que la complejidad ciclomática no sea demasiado alta; de diseño, como no usar interfaces como meros contenedores de constantes; de optimización, como procurar usar ArrayList en lugar de Vector; etc.

PMD se puede utilizar desde linea de comandos, o puede integrarse con multitud de IDEs y herramientas, como Eclipse, NetBeans, Maven o JEdit. Y aunque algunos de los casos que comprueba PMD ya se tengan en cuenta en Eclipse, sigue siendo una utilidad muy interesante para añadir a nuestra caja de herramientas.

[Pulsa para continuar]

Eclipse y estándares de código

(10 comentarios)

Si sueles trabajar en equipo a la hora de programar, e incluso si no es el caso, puede ser interesante establecer unos estándares a seguir a la hora de escribir el código. Para asegurarnos de que estas reglas se siguen se puede utilizar, por ejemplo, Checkstyle, que se integra en Eclipse a través del plugin del mismo nombre.

La forma más sencilla de instalar este plugin es utilizar el sistema de actualizaciones de software de Eclipse. En el diálogo Help -> Software updates -> Available Software -> Add Site introducimos la URL desde la que instalar el plugin, “http://eclipse-cs.sourceforge.net/update”, marcamos nuestra nueva fuente y seleccionamos Install.

[Pulsa para continuar]

El código y las pruebas

(4 comentarios)

Escribir código sin pruebas automátizadas es como intentar usar ladrillos sin cemento.

– Anónimo

El lenguaje de programación más popular en 2012

(39 comentarios)

Según los lectores de la bitácora los lenguajes de programación más populares en 2.012 serán:

  1. Java (173 votos)
  2. PHP (107 votos)
  3. C (86 votos)
  4. C++ (47 votos)
  5. Python (37 votos)

Otros meritorios participantes han sido Visual Basic (35), C# (30), Ruby (10), COBOL (7), PL/SQL (7), Perl (6) o JavaScript (6).

Lenguaje de programación más popular

Gracias a todos los que respondisteis a la encuesta :-)

Líneas de código

(9 comentarios)

Medir el progreso en el desarrollo de un programa mediante líneas de código es como medir el progreso en la construcción de un avión basándose en su peso.
— Bill Gates

Medir SLOC

(4 comentarios)

SLOCCount es un programa que sirve para medir el tamaño de un programa en SLOC (Source Lines Of Code) físicas, es decir, líneas de código fuente físicas, así como el esfuerzo de desarrollo estimado (en personas-año y personas-mes) según el modelo básico de COCOMO, tiempo estimado de desarrollo, número medio de desarrolladores estimado y el coste total estimado.

Se encuentra en los repositorios, así que instalarlo es tan sencillo como escribir en la consola:

sudo aptitude install sloccount

Se ejecuta pasándole como parámetro el directorio que contiene el código fuente, aunque hay otros parámetros útiles, como –personcost para indicar el sueldo anual de un programador, cuyo valor por defecto es de $56,286 (más de 3.000€ / 500.000 pesetas al mes).

sloccount gromlist

Y este, por último, es un informe de ejemplo a partir del código de Gromlist, mi pequeño clon de Offlinelist para Linux:

SLOC    Directory       SLOC-by-Language (Sorted)
791     usr             python=790,sh=1
46      top_dir         makefile=46
0       debian          (none)
0       locales         (none)

Totals grouped by language (dominant language first):
python:         790 (94.38%)
makefile:        46 (5.50%)
sh:               1 (0.12%)

Total Physical Source Lines of Code (SLOC)                = 837
Development Effort Estimate, Person-Years (Person-Months) = 0.17 (1.99)
 (Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05))
Schedule Estimate, Years (Months)                         = 0.27 (3.25)
 (Basic COCOMO model, Months = 2.5 * (person-months**0.38))
Estimated Average Number of Developers (Effort/Schedule)  = 0.61
Total Estimated Cost to Develop                           = $ 22,413
 (average salary = $56,286/year, overhead = 2.40).

Coloreado de sintaxis usando la consola

(1 comentario)

enscript es un programa que permite generar archivos HTML, RTF o PS con el código del archivo que le indiquemos, con coloreado de sintaxis. Para instalarlo:

sudo aptitude install enscript

Su uso es muy sencillo:

enscript –color –highlight=python –line-numbers –language=html –output=codigo.html *.py

  • --color: para que utilice coloreado de sintaxis.
  • --highlight=python: el coloreado de sintaxis se realizaría asumiendo que el código es Python (para ver los lenguajes soportados podemos escribir en la consola enscript --help-highlight). Si no se indica ningún lenguaje el programa intentará adivinar de qué clase de código se trata automágicamente.
  • --line-numbers: muestra los números de línea
  • --language=html: genera la salida en el formato especificado. Puede ser html, PostScript (por defecto) o rtf.
  • --output=codigo.html: el nombre del archivo de salida. Si especificamos el carácter - en lugar de un nombre de archivo, la salida se escribe en pantalla en lugar de a un archivo.

Otra opción (entre varias) que podemos utilizar es Pygments. Se trata de una aplicación escrita en Python de uso muy sencillo que permite añadir soporte para nuevos lenguajes fácilmente. Los formatos de archivo de salida disponibles son HTML, BBCode, RTF y Latex entre otros. Si elegimos HTML los colores se aplican usando hojas de estilo (opción -S), por lo que si el aspecto por defecto no nos convence, es sencillo de modificar.

Dado que reconoce el tipo de archivo de entrada y salida por su extensión colorear una serie de archivos es tan rápido y sencillo como escribir:

pygmentize -o codigo.html *.py

Guía de estilo Python

(6 comentarios)

He traducido la Guía de estilo del código Python de Guido van Rossum, creador de Python, y Barry Warsaw, para cualquier que le interese ceñirse a las convenciones utilizadas en los módulos principales.

Podéis encontrar el enlace en la sección de Traducciones o bien acceder directamente a través del siguiente enlace: Guía de estilo Python.