Ingeniería inversa con Java

por:

Ingenieria inversa con Java Extracción del código fuente
La entrada que hoy os traemos, es fruto de una demostración vista en una charla sobre informática a la que asistí el otro día. En la charla se veía lo simple que era realizar ingeniería inversa a cualquier programa Java realizado.

Nuestro programa para la demostración

Para la realización de la demostración, vamos a utilizar un proyecto más o menos complejo, escrito en java que he encontrado en github. El método es válido para cualquier proyecto.
Realizando ingenieria inversa a un proyecto Java

Lo normal cuando nos envían un proyecto java, es que nos manden el .jar para que lo ejecutemos, pero qué pasa si queremos ver cómo esta hecho. Pues que no tenemos el código fuente.

Desempaquetando el .jar

Una de las cosas más curiosas, es que los .jar son un archivo empaquetado, que podemos desempaquetar.
Realizando ingenieria inversa a un proyecto Java

Así que lo que hacemos es cambiar la extensión del archivo de .jar a .zip
Realizando ingenieria inversa a un proyecto Java
Descomprimimos el archivo y tenemos una carpeta con el proyecto. En este caso por ejemplo tenemos acceso a la música del juego, a las librerías que ha usado etc.
Proyecto java descomprimido
Leer más

¿ JavaScript el lenguaje del futuro ?

por:

Siguiendo con los artículos centrados en la informática y en las tecnologías y lenguajes más utilizados en los nuevos desarrollos, hoy queremos centrarnos en JavaScript.

Qué es JavaScript

JavaScript logo

Básicamente JavaScript es un lenguaje, pensado para usarlo en la web y reconocido por los navegadores web, pensando para añadirle funcionalidad a las páginas web, tanto para modificar la interfaz de usuario, como para generar partes dinámicas en la misma.

Algunas de las características de JavaScript es un lenguaje interpretado, orientado a objetos y débilmente tipado. Básicamente quiere decir que se ejecuta línea a línea, que soporta clases y una metodología de trabajo similar a cualquier otro lenguaje orientado a objetos (como Java, C++, C# …) y que permite definir variables genéricas, para tratar con múltiples tipos de datos realizando conversiones implícitas.

 

Bueno no perdamos el hilo de la temática del tema, muchos diréis bueno esto ya lo sabe todo el mundo así que vamos al porqué hablo de JavaScript.

JavaScript básicamente lleva mucho tiempo “viviendo” en la web, pero en los últimos tiempos han surgido conceptos como las “web apps”, “web socket” etc. Es decir, hacer lo que estamos haciendo con aplicaciones de escritorio, pero programadas con tecnologías webs. Ahí es donde JavaScript ha tomado la delantera y se está convirtiendo en el lenguaje de referencia para todos estos proyectos.

Leer más

Creando presentaciones en HTML

por:

De un tiempo a esta parte, están surgiendo gran cantidad de proyectos que buscan aprovechar las características que ya incorporan los navegadores modernos y los proyectos de HTML y JavaScript para salirse de la zona de confort. Esto es dejar de utilizarlos solo para hacer aplicaciones web o páginas web y explotar otros usos que se le puedan dar.

Reveal el framework de las presentaciones en HTML

Después de buscar algo más moderno y que se pudiera usar en cualquier plataforma dí con Reveal. Reveal es un proyecto que nos va a permitir crear diapositivas, como las de un Power Point de toda la vida, pero en HTML y esto trae gran cantidad de ventajas:

  • Se pueden reproducir sin necesidad de un software auxiliar.
  • Se pueden ver desde todo tipo de dispositivos: ordenadores, tablets, móviles etc.
  • Permite integrar cualquier cosa que sea posible usar en HTML, por lo que añade elementos que Power Point no tiene, como gráficas dinámicas, iframes, imágenes svg etc.

Bueno muchos pensaréis, todo esto es muy bonito, pero ya sabemos como son estos proyectos, muy bonitos, prometen mucho, pero luego cuando los usas se ven que están todavía muy verdes. En este caso, aunque si es cierto que algunas características no están del todo pulidas, si que puedo decir que es perfectamente usable a día de hoy.

Empezando a crear nuestra presentación

Lo primero que debemos hacer para empezar a crear nuestra presentación es decidir si vamos a usar el editor online de presentaciones, que ya tienen o si preferimos tocar el código.
Leer más

Creando tus propios paquetes .deb

por:

En esta pequeña entrada de hoy, os vamos a enseñar a cómo generar vuestros propios paquetes .deb, para usarlos en cualquier distribución de la rama Debian. Para los usuarios menos familiarizados con este paquete, podemos decir que en general es algo parecido a los ficheros de instalación .deb pero con algunas particularidades.

Modos de crear un paquete .deb

El modo usual de crear un paquete .deb es usando la terminal de Linux, con las múltiples opciones que provee el gestor de paquetes de Debian (dpkg). Pero en este manual os vamos a enseñar a realizar todo este proceso de na manera mucho más simple y con una interfaz gráfica.

Así nadie puede decir, que no lo hace porque es difícil o porque requiere usar muchos comandos de Linux. Simplemente es ir siguiendo una serie de pasos.

 

Creando paquetes con Debreate

Iniciando Debreate para crear nuestro paquete .deb
El software Debreate nos va a permitir realizar todo el proceso con una interfaz gráfica y con una guía que va a ir indicándonos todos los pasos que debemos realizar.

Leer más

Gestores de paquetes para Windows

por:

Normalmente los usuarios que solemos trabajar con Linux de una manera más o menos habitual. Siempre que estamos en Windows, vemos la necesidad de tener los repositorios de software que tenemos en Linux y el sistema de instalación de paquetes vía terminal. Muchos estamos acostumbrados al “sudo apt-get install paquete” para instalar ese programa que necesitamos o al clásico “sudo apt-get upgrade” para que se nos actualicen nuestros paquetes a la última versión.

Gestores de paquetes: algo que le faltaba a Windows

Realmente a nadie acostumbrado a trabajar con estos comandos, nos hace gracia visitar la web del fabricante, bajar el software, realizar el clásico siguiente, siguiente, siguiente y siempre intentando que no nos instale 2 barras de publicidad y nos cambie el buscador por defecto.

Bueno pues estamos de enhorabuena, porque unos desarrolladores han creado Chocolatey un software que tiene su propio repositorio de paquetes (totalmente abierto y que agradece cualquier aporte), junto con un pequeño comando, que nos permite desde una consola de comandos de Windows, de las de toda la vida. Instalar nuestros paquetes con solo nómbralos.

Para instalar Chocolatey realizamos lo siguiente:
Instalando chocolatey

Para ver que está funcionando:
Comprobando si Chocolatey funciona

Por ejemplo podemos poner, choco install notepadplusplus y nos instalará la última versión de Notepad++. Él lo baja por nosotros, él lo instala y nosotros solo nos temeos que preocupar de utilizarlo. Fácil y cómodo.
Chocolatey instalando un paquete

Pero eso no es todo, podemos indicar un listado de paquetes a instalar con choco install paquete1 paquete2 de tal manera que nos va a agilizar mucho las instalaciones.
Leer más

Monitorizar tu Raspberry Pi remótamente

por:

Una de las cosas que siempre nos gusta hacer, para qué nos vamos a engañar es monitorizar nuestros componentes, para ver cual es su rendimiento y detectar anomalías.

Hoy os propongo, usar un sistema para la monitorización de vuestras Raspberry Pi de una manera fácil, sencilla y muy modular.

El sistema para monitorizar tu Raspberry Pi

El proyecto del que podéis ver más información en su página de GitHub está construido bajo un pequeño servidor, que utiliza el puerto 5555 para enviar, código HTML de tal manera que es muy sencillo de utilizar y además accesible desde cualquier dispositivo con un navegador web.

¿Qué aporta este sistema para monitorizar una Raspberry Pi?

Como ya hablábamos unas semanas atrás, deberíamos ser nosotros quienes nos adaptemos al hardware para el que programemos. Por ello y bajo la directiva de intentar lograr un sistema tan ligero como sea posible. Ha surgido este proyecto.
Leer más

Aprende a usar Markdown y escribe rápido

por:

markdown Header
Entre las muchas tecnologías que se están haciendo populares en los últimos tiempos y de las que os solemos hablar en esta comunidad, hay una con la que no me había topado pero que está convirtiéndose en algo realmente muy usado. Esta tecnología es Markdown, aunque más que tecnología podíamos hablar de un sistema para aplicar estilos a nuestros textos de manera rápida y sencilla.

Por qué es útil Markdown

Muchos de nosotros, somos usuarios habituales de sistemas de procesamiento de texto, como pueden ser Word, Writer. En los que para poner en negrita un texto, por ejemplo debemos soltar una mano del teclado y con el ratón aplicar este estilo o sabernos un atajo con el que poderlo poner sin soltar el teclado.
En algunos casos este sistema es muy interesante debido a que podemos tener un grado de personalización de los ajustes muy amplio, pero en otros casos donde solo queremos tener las tres o cuatro opciones más comunes, debería existir otro sistema que nos permitiera escribir rápido, sin tener que utilizar el ratón para dar el estilo al texto esto es lo que nos permite hacer Markdown.

¿Qué podemos hacer con Markdown?

Por supuesto este sistema, no tiene todas las facilidades que puede tener Word y no vamos a poder configurar el estilo de página o una gestión compleja de los encabezados. Pero hay muchas otras cosas, más que suficientes en la mayoría de los casos que sí vamos a poder hacer:

  • Podemos aplicar negrita y cursiva de una manera sencilla, encerrando nuestro texto con ‘*’ para cursiva y con ‘**’ para negrita
  • Podemos crear encabezados y subtítulos de manera simple, estableciendo una jerarquía usando ‘# ‘ siendo una almohadilla, el elemento mayor de la jerarquía de encabezados (h1 en HTML) y añadiendo otra almohadilla para tener el segundo elemento (h2 en HTML) etc.
    Leer más

Expresiones regulares para validar datos

por:

En este artículo os proponemos una manera muy sencilla y a la vez fácil, de validar datos complejos. Para ello vamos a usar expresiones regulares.

¿Qué son las expresiones regulares?

Básicamente a la hora de validar datos, muchas personas optan por una validación muy laxa y luego si algo sale mal, la culpa es del usuario. Como todos sabemos el usuario, siempre presta atención y nunca mete datos incorrectos, así que para qué preocuparnos.

Hoy os proponemos usar expresiones regulares, que consisten en indicar, el patrón que deben tener los datos para ser válidos.

El concepto expresión regular, no está ligado a ningún lenguaje de programación en concreto, sino que es un concepto del área de la programación. Por lo que la mayoría de lenguajes lo suelen implementar o hay bibliotecas externas que nos permiten utilizarla.

Construyendo los patrones

Para construir los patrones, se hace uso de una simbología que tiene un significado especial, aquí os dejo una tabla con ella:
Las expresiones regulares tiene una sintaxis especial
Por ejemplo con la siguiente expresión regular, podemos validar una IP:

^(([0-2][0-9][0-9]|[0-9][0-9]|[0-9])\.){3}(([0-2][0-9][0-9]|[0-9][0-9]|[0-9]))

Básicamente buscamos un bloque, formado por números del estilo a 2XX,1XX,XX,X siendo X cualquier número del 0 al 9, seguidos de un punto. Este bloque se repite tres veces y luego volvemos a usar el patrón de los números.

Leer más

Reconocimiento de voz para tus aplicaciones

por:

Wit.ia es nuestros sistema de reconocimiento de voz

Bienvenidos a esta entrada en la que intentaremos mostrar como se incluye en un ejemplo real, reconocimiento de voz en nuestras aplicaciones o cualquier otro software que desarrollemos por nuestra parte.

Para utilizar este tutorial, vamos a utilizar la API de Wit.ia una start-up de éxito, que hasta hace pocos días solo había llamado la atención al sector de los desarrolladores y a Facebook, quién la acaba de comprar.

Como funciona Wit.ia

Este servicio intenta, llevar el reconocimiento de voz de forma sencilla a cualquier plataforma y software que desarrollemos, ahora mismo soportan todos los dispositivos móviles, clientes webs, aplicaciones programas en C, nuestras Raspberry Pi etc.

Pero no sólo buscan reconocer las palabras que decimos y formar un frase, como otros muchos servicios, sino que intentan analizar esa frase y extraer datos de la misma. Por ejemplo, si nosotros le decimos “hay 50º en Madrid” el nos devolverá:

 

{
  "msg_id": "0b9d437c-cb85-4871-a1d6-993e51de6f26",
  "_text": "hay 50 grados en Madrid",
  "outcomes": [
    {
      "_text": "hay 50 grados en Madrid",
      "intent": "wit_location",
      "entities": {
        "temperature": [
          {
            "type": "value",
            "value": 50
          }
        ],
        "location": [
          {
            "value": "Madrid"
          }
        ]
      },
      "confidence": 0.58
    }
  ]
}

Como se puede ver, nos devuelve el texto, que le hemos dicho, como cualquier software de reconocimiento de voz. Pero luego también nos informa en “entities” de que hay dos entidades:

  • temperatura, de la cual sabemos el valor, que es 50.
  • localización de la cual sabemos el valor que es Madrid.
  • Con una confianza en su predicción del 58% (esto es debido, a que casi no he entrenado el software).

Si queréis ver otro ejemplo, podéis ver el propio que ofrecen los autores del servicio.

Leer más

Como crear una web 9: La tipografía

por:

La tipografía es muy importante para dar una sensación coherente con el contenido que se transmite

La tipografía es una parte bastante importante de cualquier documento escrito y en las páginas web es un factor muy a tener en cuenta, ya que el uso de un tipo de letra u otro, le da a nuestra página un aspecto más formal o incluso posibilita la lectura en cualquier dispositivo o la impide.

 

Como yo no soy un experto en este tema, os traigo un pequeño manual para gente que no es experta en diseño, donde se detalla todos los conceptos importantes sobre la tipografía y el efecto que tiene cada uno de los tipos de letras (está en inglés pero tiene más imágenes que texto, así que se puede entender fácilmente).

 

 

Leer más