Archive for the 'Programacion' Category

Instalar Sublime Text 3 y poner los menus de Sublime Text 3 en Castellano para Ubuntu 17.10 (Sublime Text 3 Spanish Tomatoe!!!)

Vamos a ello, que hoy me ha dado por ahi!!…

Primeramente lo ideal seria instalar Sublime Text 3 desde el Centro de Software (pero todavia no aparece la opción). No problemo!!! lo podemos instalar directamente desde la consola usando su PPA correspondiente, las instrucciones aparecen en este enlace

En el caso de ubuntu 17.10 ejecutariamos:

wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list
sudo apt-get update
sudo apt-get install sublime-text

SublimeText3_001.png
SublimeText3_002

Una vez instalado, ya desde el menu de Aplicaciones, podemos iniciarlo:

SublimeText3_003

SublimeText3_004

Muy chulo!! pero están los menus en ingles, vamos a localizarlos al castellano. Para ello nos conectamos a la siguiente URL. Pulsamos sobre el botón «Clone or Download» y despues en «Download ZIP«.

SublimeText3_005

Con ello obtenemos una copia del proyecto en local que debemos descomprimir.

Los últimos pasos son ya abrir la carpeta de Sublime Text seleccionando «Preferences -> Browse Packages…» y en esa ruta que aparece ya copiamos las carpetas «Default» y «User/Spanish Localization» que hemos obtenido al descomprimir el ZIP.

SublimeText3_006

Reiniciamos Sublime Text 3 y voila!!! ya tenemos los menus localizados a nuestro idioma:

SublimeText3_007

 

Generar diagramas de secuencia UML de manera automática a partir del código Java mediante IntelliJ

Vaya titulo de post más largo me ha quedado. Pero de eso se trata precisamente, A veces ya sea por seguir el flujo de una aplicación o porque necesitamos documentar nos sería útil generar el diagrama de secuencia de los métodos de nuestras clases. Y si ésto se realiza de manera automática, mejor que mejor. Aunque he visto algún que otro plugin para Eclipse, me parecieron mucho más complicados y ésta vez me he decantado por utilizar un IDE nuevo: IntelliJ

Antes de empezar es recomendable que tengamos instalado JDK 1.8 o posterior. Continuamos… Los pasos son sencillos.

Primero nos descargamos la versión de IntelliJ community Edition desde la página web.

Cuando ya lo tengamos instalado, creamos por ejemplo un nuevo proyecto Java y desde el menu IntelliJ > Preferencias > Plugins buscamos e instalamos un plugin que se llama SequenceDiagram

c1

reiniciamos entonces intelliJ y cuando vuelve a iniciar, cargamos nuestro proyecto y nos movemos al método de la clase Java de la que queremos obtener el diagrama de secuencia, entonces desde el menu superior seleccionamos Tools > Sequence Diagram…

Y de manera automática se genera el diagrama de secuencia, que podremos exportar como imagen.

c2

Referencias | StackOverflow

Ejecutar la Shell de Bash en Windows mediante Cmder

cmder

Hace poco fue noticia el acuerdo entre Canonical y Microsoft para que se pueda utilizar Bash en los sistemas Windows como puede ser Windows 10. La integración será tan completa que incluso se podrán ejecutar paquetes de linux.

Pero de todas formas a fecha actual y aunque no usemos Windows 10, tambien podemos
disponer de una shell Bash en Windows mediante diferentes alternativas como pueden ser Cygwin, Clientes ssh como MobaXterm que ya llevan Cygwin integrado, Msys2, Git para Windows (que proporciona emulación bash y herramientas y comandos unix) y la opción que comentaré hoy aquí mediante Cmder.

Cmder es un potente emulador de consola para Windows. Si queremos disponer de los principales comandos unix desde windows nos descargamos la version con git para windows (aproximadamente unos 76 Mb) desde su pagina principal.
La descomprimimos y se crea un directorio Cmder. Ahí ya podemos ejecutar el binario principal con lo que se abre la consola.
Tiene varias opciones de personalización y permite el uso de tabs.
Pero lo principal que comentabamos es que ya podemos ejecutar los principales comandos unix en windows como pueden ser p.ej: «ls» o «ps» O incluso editar y ejecutar nuestros propios scrips en bash.
Podriamos p.ej usar «vim» como editor de texto, escribir nuestro shell script, darle permisos de ejecución y luego ejecutarlo con: «bash <nombre script>».

sshpass: Enviar el password desde la linea de comandos en conexiones ssh

Hemos visto muchas formas de automatizar las conexiones ssh, desde compartir las claves publicas y privadas, o usar scripts de utilidades como sshput, expect-lite o expect. Hoy otra opción utilizando el comando sshpass. Para quien no se quiera complicar mucho, Este comando nos permite enviar la password cuando establecemos una conexion ssh.

Para instalarlo en ubuntu (o sistemas derivados) ejecutamos: sudo apt-get install sshpass

Despues cuando queramos conectar automaticamente a un servidor remoto mediante ssh, podemos usar la siguiente sintaxis:

sshpass -p <password del host remoto> ssh <usuario remoto>@<host remoto>

Mas información | Desde Linux

 

Substring de cadenas en Bash

Substring

Tantos años programando shell scripts y esto era algo que no conocía y que implementaba de otra manera. Si que es verdad el dicho «nunca te acostarás sin aprender algo nuevo». Ya no se me olvidará, pues es muy sencillo. Si tienes una variable puedes obtener un substring de la misma con la forma: ${nombre_variable:posicion de inicio:posicion de fin}
De todas formas, una muy buena guia para aprender y siempre recomendable es: advanced bash scripting guide.

Implementando un Sistema de templates con Bash y Sqlite

sqlite001

Puede que en algún proyecto tengamos que utilizar algún fichero de plantilla (que en definitiva no dejan de ser ficheros de texto plano con variables) donde tengamos que sustituir las variables del fichero de la plantilla por los valores recuperados desde algún origen de datos.
P.ej

imaginad que tenemos una plantilla «consultaLibros.xml» de la forma:


<?xml version="1.0">
<CONSULTA>
<TITULO> ${TITULO} </TITULO>
<AUTOR> ${AUTOR} </AUTOR>
</CONSULTA>

Y por otro lado tenemos un origen de datos tal que los valores de las variables a sustituir son p.ej:


TITULO="El amor en los tiempos del colera"
AUTOR="Gabriel garcia Marquez"

De manera que a la hora de reemplazar las variables en la plantilla queremos obtener un fichero de la forma:


<?xml version='1.0'>
<CONSULTA>
<TITULO> El amor en los tiempos del colera </TITULO>
<AUTOR> Gabriel garcia Marquez </AUTOR>
</CONSULTA>

Nota: Esto es un «simple» ejemplo en tu caso tendrás que extrapolarlo a tu caso particular. Pero la base es la misma, tener ficheros de plantilla con un determinado formato y quiero sustituir sus valores por las variables que corresponda en cada caso.

Para implementar este sistema de plantillas vamos a utilizar como base de datos sqlite y como sistema de generación para las plantillas, un script en bash.

SQLITE es una base de datos que guarda toda la información en un único fichero. No es un sistema ideal para manejar millones de registros, pero si que nos puede servir perfectamente para este proyecto de plantillas o como base de datos de configuración.

Para instalar sqlite3, en un sistema basado en debian, prueba con:

$ sudo apt-get install sqlite3

Después ya podriamos empezar a utilizarla desde la shell.

Usar sqlite desde linea de comandos de la shell es muy sencillo. En este enlace puedes encontrar un breve tutorial. Y en este otro enlace una chuleta de uso.

P.ej podemos crear una base de datos residente en un fichero llamado «test.db» si invocamos al interprete de sqlite3 con:

$ sqlite3 test.db

Ahora ya podriamos meter las sentencias DDL de creacion de nuestras tablas. P.ej yo voy a crear una tabla PARAMETROS con 3 campos: ID, NAME, VALUE y otra tabla TEMPLATES con campos NAME, VALUE.

CREATE TABLE PARAMETROS (ID text, NAME text, VALUE text);

CREATE TABLE TEMPLATES (NAME text, VALUE text);

Y con eso ya tendria las tablas creadas.

Ahora ya incluso podria empezar a añadir datos en ellas:

INSERT INTO PARAMETROS VALUES ('100','TITULO','el amor en los tiempos del colera');

INSERT INTO PARAMETROS VALUES ('100','AUTOR','Gabriel Garcia Marquez');

INSERT INTO PARAMETROS VALUES ('200','TITULO','el pendulo de Foucault');

INSERT INTO PARAMETROS VALUES ('200','AUTOR','Umberto eco');

Y realizar consultas sobre las tablas:

SELECT * FROM PARAMETROS;

sqlite02

Si no te sientes comodo usando la shell puedes incluso utilizar un cliente grafico para trabajar con las bases de datos creadas con sqlite como puede ser SQLite data browser (instalable desde el software center).

sqlite03

sqlite4

sqlite05

Una vez que queramos terminar la sesión con sqlite ejecutamos:

.quit

Y observamos que se habra creado un archivo «test.db» que contiene nuestras tablas y datos.

Cada vez que queramos volver a trabajar desde consola con ese archivo, ya sea para hacer selects, o nuevos inserts. Ejecutaremos: sqlite3 test.db o el nombre que le
hubieramos dado al archivo o base de datos.

Bien, procedamos tambien a crear datos para nuestra template de la forma:

sqlite3 test.db

insert into TEMPLATES VALUES ("ConsultaLibro","
${TITULO}
${AUTOR}
");

t1

Perfecto.

Tenemos nuestra base de datos creada con 2 tablas.

– una de las tablas llamada PARAMETROS nos proporcionara los parametros que queremos usar según una clave id. P.ej dame los parametros con id=100 o dame los parametros con id=200

– otra de las tablas llamada TEMPLATES nos proporciona la template o templates que queremos recuperar, para luego pasar los parametros que queramos reemplazar y obtener ya la template parseada con las variables ya sustituidas.

Para recuperar estos valores de variables y templates, y realizar las funciones del preprocesado vamos a utilizar un script de bash. Luego podriamos montar una libreria en bash u organizar el codigo como queramos.

Implementemos la primera funcion para recuperar los parametros, podria ser algo como:

#!/bin/bash
DB_SQLITE="test.db"
function recuperar_parametros()
{
id="$1"
LIST=`sqlite3 "$DB_SQLITE" "SELECT * FROM parametros WHERE id='$id';"`
for ROW in $LIST; do
#echo $ROW | awk -F"|" '{print $2}'
name=`echo $ROW | awk '{split($0,a,"|"); print a[2]}'`
value=`echo $ROW | awk '{split($0,a,"|"); print a[3]}'`
echo "$name -> $value"
eval "export $name=\"$value\""
done
}

esta función hace una select a la tabla parametros por el valor del id que le pasamos como parametro y luego recorre la lista de valores recuperados para extraer el nombre y el valor del parametro. Despues ya hace un export de esa variable.

La otra función para recuperar el template queda como:

function recuperar_template()
{
name="$1"
sqlite3 "$DB_SQLITE" "SELECT value FROM templates WHERE name='${name}';"
}

Y el código para recuperar los parametros, recuperar el template y sustituir los parametros en el template seria:

IFS=$'\n'
echo "-- Parametros --"
recuperar_parametros "100"
TEMPLATE=`recuperar_template "ConsultaLibro"`
eval "echo -e \"$TEMPLATE\"" > .xml
echo "-- Template --"
cat .xml

Todo junto:

t2

Que si lo ejecutamos:

c1

si en vez de recuperar para la plantillas los parametros de id=100 quisieramos los de id=200 todo el codigo seria igual pero cambiando la linea de recuperación de parametros, por la siguiente:

recuperar_parametros "200"

c2

Y con todo ésto ya hemos visto como crear una base de datos Sqlite, como acceder al contenido de sus tablas desde Bash e implementado un sistema sencillo de creación de plantillas.

Referencia | Usar ficheros de plantillas con Bash

Libro: Desarrollo de Videojuegos, Un Enfoque Práctico

Via Barrapunto encuentro la referencia de éste libro. Copio y pego:

Como viene siendo habitual en estas fechas, se ha publicado el material docente de la Tercera Edición del Curso de Experto en Desarrollo de Videojuegos. Este «tochete» en PDF (1160 páginas) recoge los aspectos más relevantes en programación de videojuegos: Arquitectura del Motor, Programación Gráfica, Desarrollo de Componentes y Técnicas Avanzadas. Los apuntes del Curso de Experto en Desarrollo de Videojuegos se han convertido en un referente a nivel internacional. Con más de 120.000 descargas en 2 años, este material distribuido bajo licencia CC-BY-SA-NC se viene utilizando como complemente formativo en diversos cursos de programación de videojuegos en universidades españolas e iberoamericanas.

Enlace | Curso de experto en desarrollo de videojuegos

Instalar el editor de texto «Atom» en Ubuntu

ATOM00

Aunque todavia en Beta, Se ha liberado el codigo de fuente del editor de texto atom por parte de GitHub, éste editor de texto tiene un look muy similar al conocido «Sublime Text» y proporciona muchas de sus caracteristicas. De momento sólo hay binarios para Mac, y si quisieramos instalarlo en Ubuntu tendriamos que bajar el código fuente y compilarlo. Pero gracias a WebUpd8 tenemos disponible un precompilado para Ubuntu 64 bit en el siguiente PPA. Nota: Atom actualmente no funciona para Ubuntu 32 bit habrá que esperar. Los pasos:

sudo add-apt-repository ppa:webupd8team/atom
sudo apt-get update
sudo apt-get install atom

Enlace | atom | primeros pasos con atom

Advanced Bash-Scripting Guide

Me encanta Bash, y la mejor forma de aprender es programando. Empiezas poco a poco con algo básico y cuando ya tienes algo más de soltura, puedes leer guias más avanzadas como la siguiente:

Enlace | Advanced Bash-Scripting Guide | version HTML

netstat -putona: Un comando que no olvidarás para monitorizar las conexiones en Linux

putona

Es un comando cuya curiosa combinación de parámetros descubrí hace unas cuantas semanas y tenía pendiente escribir un pequeño post sobre el mismo, pero en Martin Juarez me lo he encontrado perfectamente explicado.

El comando netstat nos permite visualizar las conexiones entrantes y salientes en Linux, con este comando por ejemplo
podemos saber que puertos utiliza un determinado proceso.

Una combinación de parametros muy fácil de recordar (porque será ^^) y que nos da mucha información es la siguiente:

$ netstat -putona

Donde los parametros vienen a significar lo siguiente:

p Muestra las conexiones para el protocolo especificado que puede ser TCP o UDP
u Lista todos los puertos UDP
t Lista todos los puertos TCP
o Muestra los timers
n Muestra el numero de puerto
a Visualiza todas las conexiones activas del sistema

Por ejemplo: para saber que proceso ocupa el puerto 1521 podriamos usar:

netstat -putona | grep :1521

Si tambien queremos eliminar las conexiones a un determinado puerto o host, podriamos usar el comando tcpkill.

Por cierto la versión para chicas podria ser: netstat -capullo





¿Es compatible tu equipo con Ubuntu?


( Muchos fondos de pantalla, aqui )

DESCARGATE SCIFI LIFE

365 Dias de Soledad
Me debes los sueños, las promesas y las noches rotas. Me debes la paz, la sonrisa y la esperanza robadas. Me debes la sangre, las lágrimas y el sudor vertido. Me debes las noches vacías, los abrazos anhelados. Me debes un beso de ajenjo de tu amarga boca.

The Ubuntu Counter Project - user number # 11961
Geo Visitors Map

Archivos

May 2024
L M X J V S D
 12345
6789101112
13141516171819
20212223242526
2728293031  

Blog Stats

  • 31.401.000 hits