martes, 12 de noviembre de 2013

Comprimir y descomprimir archivos mediante consola Ubuntu

Consola o terminal, como lo deseen llamar, el caso está que en ocasiones nos es necesario comprimir o descomprimir archivos usando esta potente herramienta, ya sea por que resulta mas rápido o por ser el único entorno disponible (como en los servidores), y pues bien aquí va la forma de hacerlo:

Comprimir:

$ tar -czvf nombre_archivo_salida.tar.gz directorio_o_archivo

Ese sencillo comando nos mostrará lo que se esta añadiendo (gracias a -v) y comprimirá el directorio o archivo que especifiquemos.

Ahora bien el proceso de descompresión es similar (obvio verdad?):

$ tar -xzvf nombre_archivo_a_descomprimir.tar.gz

Y listo nuestro archivo se descomprimirá, sencillo y muy util.

Saludos.

domingo, 21 de julio de 2013

Crear lanzador (acceso directo) de Android Studio en Ubuntu

Como todos sabemos, Android Studio no es necesario instalarlo en Ubuntu, simplemente se descomprime el paquete descargado desde el sitio oficial y se lo hace correr desde consola llamando al archivo studio.sh ubicado en la carpeta bin, pero suele ser molestoso  tener que abrir la consola para ejecutar el IDE, así que la manera mas rápida y fácil es hacerlo desde el lanzador de Unity, y es muy fácil agregarlo.

Primero abrimos la consola y digitamos lo siguiente:

$ sudo gedit /usr/share/applications/eclipse.desktop

Esto obviamente abrirá el gedit y en el ingresamos:

[Desktop Entry]
Name=Android Studio
Comment=Android Studio IDE
Exec=/home/tu_usuario/android-studio/bin/studio.sh
Icon=/home/tu_usuario/android-studio/bin/idea.png
Terminal=false
Type=Application


Cabe aclarar que donde dice "tu_usuario" me refiero a que debes reemplazar aquello por tu nombre de usuario, y pues yo decidí descomprimir el paquete de Android Studio en mi carpeta de usuario por lo que le di esa ruta en el archivo desktop, si descomprimiste en otro lado, debes dar la ruta adecuada.

Luego grabamos, reiniciamos Nautilus y en el buscador ya encontraremos a nuestro Android Studio, por lo que podemos añadirlo al lanzador de Unity o donde queramos.

Saludos.

viernes, 5 de julio de 2013

Instalación de Apache, PHP y Mysql en OSX (X Lion)

Usualmente por desconocimiento decidimos bajarnos el paquete XAMPP para poder desarrollar en OSX, sin embargo nuestro sistema operativo ya viene por defecto con el Apache y PHP instalado (fabulosamente), por lo que solo queda iniciarlo y hacer una que otra configuración desde la terminal para empezar a trabajar:

Apache:

Iniciamos: sudo apachectl start
Paramos: sudo apachectl stop
Reiniciamos: sudo apachectl restart

( Por si no lo sabias para estar evitando digitar sudo en cada comando, puedes correr en consola con privilegios root con esta linea: sudo su)

PHP (Activar soporte):

Editamos el archivo httpd.conf (/etc/apache2/httpd.conf) con nano o vi, según prefieras, buscamos la siguiente linea y la descomentamos (quitamos el #):

#LoadModule php5_module libexec/apache2/libphp5.so

Grabamos los cambios y procedemos a reiniciar el Apache.

Ruta http root por defecto:

En Linux estamos acostumbrados a la ruta /var/www/, pues bien en OSX es diferente, la ruta por defecto es:

/Library/WebServer/Documents/

Pero es muy fácil cambiarla y así ajustarla a nuestras preferencias, para ello en el archivo httpd.conf (/etc/apache2/httpd.conf) reemplazamos la linea:

<Directory “/Library/WebServer/Documents”>

por: <Directory “/Users/tu_usuario/carpeta_que_desees”>

Obviamente reemplazamos "tu_usuario" por el nombre de usuario de tu equipo y "carpeta_que_desees" por la carpeta que previamente hayas creado para usarla como root http.

En realidad puedes darle la ruta que se te ocurra, eso si, no olvides cambiar los permisos de la carpeta para que no hayan problemas.

MySQL:

Lastimosamente MySQL no viene incluido en el sistema por lo que será lo único que deberemos instalar, y para ello nos descargamos el DMG de MySQL desde:

http://dev.mysql.com/downloads/mysql/

Cuando le des click al paquete se abrirá una ventana con tres instaladores:
  • Mysql5.5.(version).pkg
  • MySQLstartupitem.pkg 
  • MySQLPrefPane
Y pues instalamos las cosas en ese orden, el primero es el server, lo segundo lo que permitirá que se inicie MySQL al arrancar el sistema, y por ultimo el panel de control que se agregará a Preferencias del Sistema para arrancar o parar el server.

Una vez listo, podemos iniciar el servidor desde el Panel de Preferencias, luego ejecutar unos cuantos comando en la consola para que todo marche en orden:

Agregamos la ruta al Path file:
export PATH="/usr/local/mysql/bin:$PATH"

Reiniciamos:
source ~/.bash_profile

Y creamos un enlace simbolico para los programas que necesiten del socket de MySQL (por ejemplo MySQLBrowser):

sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

Y pues voala, ya tenemos nuestros servicios para desarrollo.

Hasta la próxima.

miércoles, 21 de marzo de 2012

Solución del uso de Query Browser en Mac (GUI Tools Mysql)

Para los que somos usuarios MAC y hacemos correr nuestra DB con el XAMPP esta es la solución para poder usar el MySQL Query Broswser y otras herramientas del GUI Tools Mysql:

Primero que nada, la linea de comandos:
Nos es necesario usar la terminal a muchos para hacer tareas de respaldo o restaurar backups de nuestras bases de datos, pero cuando digitamos "mysql" o "mysqldump" en la terminal (o consola) nos da un mensaje de error, esto pese a que tenemos activo el MySQL mediante el XAMPP, pues bien, se puede solucionar de 2  maneras:

1) Haciendo un alias:
En la terminal digitamos: alias mysql=/Applications/XAMPP/xamppfiles/bin/mysql
Y listo ya podremos usar el mysql desde la terminal.

2) Realizando un link simbolico (esta la recomiendo):
En la terminal digitamos: sudo ln -s /Applications/XAMPP/xamppfiles/bin/mysql /usr/bin/mysql
Y bien! así ya podremos usar nuestra terminal con mysql.

Ok, ahora si, vamos con la solución del problema de conexión del MySQL Query Browser:

El problema que siempre nos presenta al querernos conectar es el de socket, y solucionar esto es muy sencillo, simplemente digitamos en la terminal los siguiente:

sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock /tmp/mysql.sock

Y todo solucionado!!

sábado, 26 de noviembre de 2011

Configuración de Apache para uso de WebSocketen sitios HTML5

Antes que nada esto fue implementado en un servidor local Apache2 sobre Ubuntu 11.04.


Primero debemos elegir un directorio para descargar mediante svn el pywebsocket que es el que utilizaremos:


Eh elegido /var/ luego descargamos las fuentes:
sudo svn checkout http://pywebsocket.googlecode.com/svn/trunk/ pywebsocket-read-only


Una ves descargado, procedemos a ingresar al directorio contenedor:
cd pywebsocket-read-only/src/


Y ejecutamos:
sudo python setup.py build


Luego:
sudo python setup.py install


Y voala, ya tenemos nuestro pywebsocket instalado, ahora procedemos a configurar nuestro apache, para ello editamos el archivo /etc/apache2/httpd.conf agregando lo siguiente:


PythonPath "sys.path+['/usr/local/lib/python2.7/dist-packages/mod_pywebsocket']" PythonOption mod_pywebsocket.handler_root /var/websockets/ PythonHeaderParserHandler mod_pywebsocket.headerparserhandler


Bueno en la segunda linea eh dado como ruta para los archivos manejadores /var/websockets/ por razones de seguridad no usamos el directorio root http (var/www/) pero puedes eligir la ruta que mejor te plazca, otra cuestión es que debes chequear la versión de python instalada, en mi caso fue la 2.7 y el directorio lleva por nombre python2.7, pero es posible que instales una versión superior en cuyo caso este cambiaría, solo es cuestión de revisar las rutas desde la consola con nuestro famoso cd + tab.


Ahora bien, es obvio que usaremos python para gestionar nuestro websocket, por lo que Apache requerirá de el modulo de python para gestionarlo, por lo que lo instalamos:


sudo apt-get install libapache2-mod-python


Y luego lo agregamos a la configuración por defecto de sitios, editamos el archivo /etc/apache2/sites-available/default e incluimos estas 3 ultimas lineas en negrita:


Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all AddHandler mod_python .py PythonHandler mod_python.publisher PythonDebug On


A estas alturas te habrás fijado que van incluidas en el bloque /var/www/


Y para verificar que nuestro Apache procesa el python, reiniciamos el servidor y creamos un archivo en nuestro root apache (/var/www/) con el nombre de test.py incluyendo el siguiente contenido:


def index(req): return "Test completado"


Luego vamos al browser y lo probamos (localhost/test.py) y lo que debemos obterner es un print con la frase "test completado".


Con esto ya tenemos nuestro websocket listo para usar, ahora si toca un ejemplo:


En la ruta que definiste para el websocket (en mi caso /var/websockets) crea el siguiente archivo:


date_wsh.py con el siguiente contenido:


from mod_pywebsocket import msgutil from datetime import datetime import time _GOODBYE_MESSAGE = 'Goodbye' def web_socket_do_extra_handshake(request): print 'Conectado.' pass # Always accept. def web_socket_transfer_data(request): while True: time.sleep(1) date = datetime.now() hoy= date.strftime("%Y-%m-%d %H:%M:%S") msgutil.send_message(request, 'dataformat!%s' % hoy)




Y en el var/www/ el siguiente html:


prueba_websocket.html


<html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script> $(document).ready(function(){ var ws; if ("WebSocket" in window) { //debug("Horray you have web sockets. Trying to connect..."); ws = new WebSocket("ws://localhost/data"); ws.onopen = function() { // Web Socket is connected. You can send data by send() method. debug("connected..."); ws.send("hello from the browser"); ws.send("more from browser"); }; run = function() { var val=$("#i1").val(); // read the entry $("#i1").val(""); // and clear it ws.send(val); // tell erlang return true; // must do this }; ws.onmessage = function (evt){ //alert(evt.data); var data = evt.data; var i = data.indexOf("!"); var tag = data.slice(0,i); var val = data.slice(i+1); $("#" + tag).html(val); }; ws.onclose = function(){ debug(" socket closed"); }; }else{ alert("You have no web sockets"); }; function debug(str){ $("#debug").append("<p>" + str); }; }); </script> </head> <body> <h1>Interaction experiment</h1> <h2>Debug</h2> <div id="debug"></div> <fieldset> <legend>Clock</legend>
<div id="dataformat"></div>
</fieldset> </body> </html>




Carga el archivo html en tu browser y listo! veras como tienes un reloj informandote cada segundo su estado, directamente de tu servidor usando un websocket!!


Como nota adicional, esto solo funciona con Google Chrome, el resto de navegadores no fue testeado.


Saludos y mis disculpas por la poca redacción, es tarde y estoy muy cansado, pero queria compartirles esto.