Con la necesidad de utilizar algunas aplicaciones Android desde mi Mac me dia a la tarea de buscar emuladores, y me encontre con que BlueStacks ahora tiene soporte para Mac e incluye ya algunas aplicaciones.
Sin embargo no incluye todas por lo que me di a la tarea de como cargar directamente un .apk (o archivo ejecutable para Android en el sistema).
La forma que encontre es unicamente con la terminal así que debemos correr este comando:
$ cd /Applications/BlueStacks.app/Contents/Runtime
Dentro de ese directorio existe un comando llamado uHD-Adb para ejecutarlo debemos usar un comando como el siguiente:
$ ./uHD-Adb install /mis_apks/mi_aplicacion.apk
Con lo anterior se ejecuta una serie de mensajes y termina indicando -Success- si la instalación concluyo con éxito, con eso me funciono...
Espero también te sea de utilidad !
Referencias:
https://getsatisfaction.com/macbstk/topics/how_to_install_apk_on_bluestacks_for_mac_os_x_alpha_2
http://www.bluestacks.com/
viernes, 8 de marzo de 2013
viernes, 1 de marzo de 2013
Convertir un .py a .app con py2app
Me vi en la necesidad de convertir un script de python de .py a .app y lo hice con py2app, describo como lo hice.
Instale el py2app, utilizando la instrucción con easy_install, lo que implica que debe estar instalado.
$ sudo easy_install -U py2app
Más información:
http://svn.pythonmac.org/py2app/py2app/trunk/doc/index.html#installing-with-easy-install
Instale el py2app, utilizando la instrucción con easy_install, lo que implica que debe estar instalado.
$ sudo easy_install -U py2app
Una vez concluida la instalación, fue necesario crear un archivo setup.py para esto utilice el comando py2applet de la siguiente forma:
$ py2applet --make-setup notifyhour.py --iconfile="/icon.icns"
Posteriormente solo edite el archivo resultante de setup.py la sección de OPTIONS, ya que la sección de iconfile pone la ruta completa al archivo pero puede funcionar indicando solo la ubicación del archivo si esta en raíz o su ruta relativa:
OPTIONS = {'argv_emulation': True,
'iconfile': 'icon.icns'}
Una vez realizado el cambio anterior ejecute la instrucción:
$ python setup.py py2app
Con lo anterior me creo la aplicación si necesitas hacer alguna modificación recomiendan limpiar los directorios build y dist, se puede hacer de la siguiente forma:
$ rm -rf build dist
Ojo hay que estar en el directorio del proyecto.
Espero te sea de utilidad !
http://svn.pythonmac.org/py2app/py2app/trunk/doc/index.html#installing-with-easy-install
martes, 26 de febrero de 2013
Utilizando el Centro de Notificación de Mac desde Python (Mac Notification Center)
Es realmente muy sencillo utilizarlo, si usamos la siguiente herramienta:
Básicamente después de instalarlo solo se deben usar las siguientes instrucciones:
-------
from pync import Notifier
Notifier.notify("Hola Mundo !")
-------
Y con eso es todo realice un script que envía un mensaje cada hora pueden echarle un vistazo en el repositorio de github:
Saludos espero te sea de utilidad !
miércoles, 13 de febrero de 2013
Django Deployment mod wsgi Windows Apache y MySQL
Nota: Por el momento mi proceso lo realice utilizando las versiones de 32 bits, indicare datos adicionales de versiones en cada paso que haya utilizado.
PASO 1: Instalar MySQL (versión 5 de 32 bits)
Descargando el instalador desde el sitio de Oracle, es probable que sea necesario que se registren.
PASO 2: Instalar Python (versión 2.7 de 32 bits)
Es importante configurar las variables de entorno para que desde la consola en cualquier lugar podamos utilizar solo la palabra python para ejecutar.
PASO 3: Instalar Python-MySQLdb (32 bits)
Se puede probar si quedo instalado entrando en python y utilizando:
>>> import MySQLdb
Si no hay errores quiere decir que vamos bien, en caso de que tengan problemas con la instalación de este módulo pueden seguir este post:
http://omaryahir.blogspot.mx/2012/10/python-y-mysql-en-os-x-mountain-lion.HTML
PASO 4: Instalar Django (versión 1.4.3 )
Se puede probar que funciona django entrando a Python y usando:
>>> import Django
Si no hay errores vamos bien :)
PASO 5: Instalar Apache (httpd-2.2.22-win32-x86-openssl-0.9.8t.msi)
Lo descargue de esta dirección:
http://apache.webxcreen.org//httpd/binaries/win32/
Una forma rápida de verificar que funciono es abrir en el navegador el sitio http://localhost, en mi caso lo instale en el puerto 80.
PASO 6: Descargar mod_wsgi (versión 3.3)
Se debe descargar del sitio http://code.google.com/p/modwsgi/
Obtendremos un archivo de extensión .so este archivo debemos copiarlo al directorio modules de nuestra instalación de Apache (En mi caso C:\Program Files (x86)\Apache Software Foundation\Apache2.2\modules).
Para mayor comodidad renombramos el archivo que probablemente se encuentre con este nombre: mod_wsgi-win32-ap22py27-3.3.so, lo cambiamos por mod_wsgi.so nada mas.
Ahora bien es importante elegir un directorio para nuestras aplicaciones mod_wsgi, en mi caso yo hice uno en C:\wsgi_app\
PASO 7: Cargar el modulo mod_wsgi
Para este proceso es necesario localizar el arhivo - httpd.conf - usualmente se encuentra dentro del directorio /conf/ de la instalación de Apache (En mi caso lo encontre en: C:\Program Files (x86)\Apache Group\Apache2\conf).
Una vez abierto con cualquier editor de textos en mi caso uso Sublime, localizar "LoadModule" al encontrar dicho texto nos daremos cuenta que es la instrucción que utiliza Apache para cargar sus módulos; agregaremos una instrucción similar al final de estas sentencias de LoadModule quedando de la siguiente forma:
----
LoadModule wsgi_module modules/mod_wsgi.so
----
NOTA: Es probable que necesites editar el archivo en otro lugar y luego copiarlo al directorio en caso de que tengas restringido la modificación de archivos en el directorio donde se instaló el Apache.
PASO 8: Agregando en el archivo httpd.conf el WSGIScriptAlias
Dentro del archivo que abrimos en el paso anterior - httpd.conf - localizaremos la palabra Directory después del bloque < Directory / >
----
# Config mod_wsgi
WSGIScriptAlias /wsgi "C:/wsgi_app/wsgi_handler.py"
AllowOverride None
Options None
Order deny,allow
Allow from all
----
Lo anterior quiere decir que accederemos a los sitios que coloquemos en el directorio que creamos utilizando por ejemplo: http://localhost/wsgi
Ahora probaremos si quedo instalado correctamente el wsgi, creamos el archivo: wsgi_handler.py con el siguiente contenido:
def application(environ, start_response):
status = "200 OK"
output = "Funciono !!!"
response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
Una vez realizado lo anterior debemos reiniciar nuestro servidor Apache, lo cual podemos realizarlo desde el Apache Monitor, Si al reiniciar no hubo errores estamos del otro lado... :D
Algunos errores que me pasaron a mi:
- Use la versión 2.0 de Apache en un principio y no quizó cargar el archivo: mod_wsgi.so
- Otro error que tuve es que no le cambie el nombre al archivo por lo que no lo encontraba.
Bien, si no hubo errores vamos al navegador y colocamos:
http://localhost/wsgi/
Si ves el mensaje que dice Funciono !!!, entonces que crees... Funciono :)
PASO 9: Ahora si poniendo nuestro proyecto de Django
Hasta el paso anterior tenemos un servidor que tiene activado mod_wsgi y puede ejecutar archivos de python. Entonces ahora para colocar nuestros proyectos de Django regresaremos al archivo httpd.conf y vamos agregar otro directorio:
----
# MiProyecto
WSGIScriptAlias / "c:/wsgi_app/miproyecto/miproyecto/wsgi.py"
WSGIPythonPath "c:/wsgi_app/miproyecto"
< Files wsgi.py >
Order deny,allow
Allow from all
</Files >
Hasta aquí es probable que el proyecto funcione correctamente pero tendremos el detalle con los archivos estáticos por lo que agregamos lo siguiente:
----
Alias /static/ "c:/wsgi_app/miproyecto/static/"
----
#### ACTUALIZACION 15 FEB 2013
Me di cuenta de que si no se tienen los permisos correctos no se cargaran los archivos estáticos, por lo que se deben tener los permisos necesarios y además modificar el archivo httpd.conf quedando de la siguiente forma:
----
Alias /static/ "c:/wsgi_app/miproyecto/static/"
SetHandler None
Order allow,deny
Allow from all
----
Guardamos y reiniciamos.
Con lo anterior todo debe funcionar ya nadamas recuerda cambiar la variable DEBUG = False en el archivo settings.py
Casi lo olvido:El Administrador de Django tiene sus propios archivos estaticos y los busca en "/static/admin/" por lo que de acuerdo a lo que nos recomiendan en el sitio de Django:
"We strongly recommend using django.contrib.staticfiles to handle the admin files"
Una de las sugerencias es copiar los archivos a nuestro directorio por lo que en mi caso lo que hice fue copiar de:
"C:/Python27/Lib/site-packages/django/contrib/admin/static/admin/"
Al directorio donde tengo mis archivos estaticos:
"c:/wsgi_app/miproyecto/static/"
Con lo anterior el sitio de administración debe tomar los archivos estaticos.
Espero te sea de utilidad !
Referencias:
http://stackoverflow.com/questions/3777678/apache-mod-wsgi-django-setup-forbidden-you-dont-have-permission-to-access-my
http://pradyumnajoshi.wordpress.com/2009/06/09/setting-up-mod_wsgi-for-apache-and-django-on-windows/
https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/
https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/
jueves, 7 de febrero de 2013
Django : Problema Fechas Diferentes en Modelos o Base de Datos
Esto es muy sencillo pero me ha llevado mucho tiempo darme cuenta en donde estaba el problema.
Cuando almacenaba Django alguna fecha en alguna tabla por alguna razón la fecha-hora que quedaba almacenado físicamente en la base de datos era diferente a la que podía obtener desde Django.
Ojo, Django me mostraba la fecha-hora tal como la necesitaba pero fisicamente en la base de datos quedaba otra. Quizá esto no sea un problema en algunos proyectos, pero como el proyecto que estoy desarrollando en este momento no solo esta en Django es decir existe más software que se conecta a la misma base de datos y obtiene información por lo que esto es un verdadero problema en mi caso claro.
La forma de solucionarlo es realmente simple en el archivo settings.py se debe poner el valor:
USE_TZ=False # Por omisión se encuentre en True
Una vez cambiado este parametro las fechas que se almacenan en Django y las que se encuentran fisicamente en la base de datos son las mismas.
Espero te sea de utilidad !
Más información:
https://docs.djangoproject.com/en/dev/topics/i18n/timezones/
Cuando almacenaba Django alguna fecha en alguna tabla por alguna razón la fecha-hora que quedaba almacenado físicamente en la base de datos era diferente a la que podía obtener desde Django.
Ojo, Django me mostraba la fecha-hora tal como la necesitaba pero fisicamente en la base de datos quedaba otra. Quizá esto no sea un problema en algunos proyectos, pero como el proyecto que estoy desarrollando en este momento no solo esta en Django es decir existe más software que se conecta a la misma base de datos y obtiene información por lo que esto es un verdadero problema en mi caso claro.
La forma de solucionarlo es realmente simple en el archivo settings.py se debe poner el valor:
USE_TZ=False # Por omisión se encuentre en True
Una vez cambiado este parametro las fechas que se almacenan en Django y las que se encuentran fisicamente en la base de datos son las mismas.
Espero te sea de utilidad !
Más información:
https://docs.djangoproject.com/en/dev/topics/i18n/timezones/
Monitor Consultas, Queries o SQL en MySQL
Ahora le toca el turno a MySQL esta vez, lo que necesitaba era monitorear todas las instrucciones MySQL para detectar un problema que tenía con una consulta, query, sql o como gustes llamarlo, bien para poder monitorear una de las tantas formas de hacerlo es utilizando el GQL (General Query Log).
Por lo general el GQL viene desactivado por lo que para activarlo se debe iniciar MySQL con la consola, y posteriormente para saber si lo tenemos activado o no utiliamos el siguiente comando:
Espero te haya sido de utilidad !
Fuentes:
http://stackoverflow.com/questions/568564/how-can-i-view-live-mysql-queries
http://dev.mysql.com/doc/refman/5.1/en/query-log.html
Por lo general el GQL viene desactivado por lo que para activarlo se debe iniciar MySQL con la consola, y posteriormente para saber si lo tenemos activado o no utiliamos el siguiente comando:
mysql> SHOW VARIABLES LIKE "general_log%";
+------------------+----------------------------+
| Variable_name | Value |
+------------------+----------------------------+
| general_log | OFF |
| general_log_file | /var/run/mysqld/mysqld.log |
+------------------+----------------------------+
Con lo anterior podemos ver de entrada en donde esta configurado que estará el archivo y por otro lado si esta activado o no, como no esta activado entonces debemos activarlo primero:mysql> SET GLOBAL general_log = 'ON';
Cuando ya no necesitemos estar almacenando estos datos ya que este archivo puede crecer indefinidamente utilizamos el comando:mysql> SET GLOBAL general_log = 'OFF';
Para ver el contenido de la consola podemos utilizar el comando ya fuera de mysql:$ sudo cat
/var/run/mysqld/mysqld.log
En mi caso tuve que utilizar sudo por los permisos. Una vez ejecutado podía ver las consultas que se estaban ejecutando.Espero te haya sido de utilidad !
Fuentes:
http://stackoverflow.com/questions/568564/how-can-i-view-live-mysql-queries
http://dev.mysql.com/doc/refman/5.1/en/query-log.html
martes, 5 de febrero de 2013
Git con Dropbox
Basado en el post: http://mario.thefrutos.com/2011/12/06/crear-un-repositorio-git-en-dropbox/
OBJETIVO: Tener un directorio de trabajo donde se capture el código fuente y tener un directorio donde se almacene el control de versiones o repositorio maestro (master).
NOTA: Esta realizado en windows, pero debe ser muy similar para Mac OSX.
1. Una vez instalado Git se debe configurar el nombre de usuario y el correo electrónico:
> git config --global user.name "James Bond"
> git config --global user.email "james007@gmail.com"
2. Inicializar el repositorio maestro donde se guardará el historial de cambios. Para esto nos dirigimos al directorio de Dropbox donde queremos almacenar el historial y estando ahí ejecutamos el siguiente comando:
> cd c:/users/miuser/dropbox/misproyectos/
> git init --bare miproyecto.git
NOTA: la opción bare nos permite llevar un mejor control de un repositorio central para más información http://sitaramc.github.com/concepts/bare.html
3. Ahora nos dirigimos al directorio donde queremos trabajar es decir donde estaremos programando nuestra aplicación, inicializamos el directorio con el siguiente comando:
> git init
4. Posteriormente le indicamos cual será el directorio remoto:
> git remote add miproyecto.git c:/users/miuser/dropbox/misproyectos/miproyecto.git
NOTA: Debemos tener cuidado aqui con la ruta ya que si no queda indicada la correcta
entonces podremos tener un error de permisos o bien de que no se encontró el repositorio.
5. Creamos archivos directorios, etc., es decir trabajamos en el (o programamos en otras palabras), entonces posteriormente estamos listos para enviar cambios, ejecutamos el siguiente comando para incluir todos los archivos (podemos incluir también nada más los que queremos; si no es el caso con el -punto- señalamos todos los archivos y directorios de trabajo):
> git add .
6. Una vez incluidos realizamos el commit para preparar el envío, esto nos permite incluir un mensaje que describa brevemente el conjunto de cambios que hemos realizado:
> git commit -m "Concluido el módulo X"
7. Una vez realizado lo anterior ahora si enviamos los cambios a nuestro repositorio remoto:
> git push miproyecto.git master
8. Al ejecutar el comando anterior aparecerá un proceso indicando que los archivos han quedado sincronizados. Con lo anterior podemos trabajar con Git, ahora que si lo que queremos es descargar lo que ya tenemos en otro equipo utilizamos el comando:
> git clone c:/users/miuser/dropbox/misproyectos/miproyecto.git
Esto nos creará una copia de lo que tenemos actualmente.
Si la url es diferente, es decir la ruta del directorio para llegar al repositorio central (en este ejemplo miproyecto.git) es diferente entonces será necesario usar la ruta completa cada vez que actualicemos en los diversos equipos. Por ejemplo:
> git push c:/users/miuser/dropbox/misproyectos/miproyecto.git master
NOTA: Como en este caso estamos utilizando Dropbox entonces lo más seguro es que tendremos que hacerlo de esa forma.
La proxima vez que en este mismo ordenador necesitemos bajar los archivos ya solo usamos:
> git pull c:/users/miuser/dropbox/misproyectos/miproyecto.git master
Con el comando:
> git status
Obtenemos las diferencias entre lo que tenemos del directorio de trabajo.
Con el comando:
> git log
Obtenemos los commit que hemos enviado al repositorio.
Ahora que si queremos una herramienta gráfica existe la siguiente:
http://code.google.com/p/gitextensions/
Para actualizar la versión de git he seguido esta guía:
http://ayanim97.com/mac/installing-and-upgrading-git-mac-os-lion
NOTA: En Mac OSX tuve problemas tuve que agregar la siguiente línea a mi ~/.bash_profile:
ACTUALIZACION 2013-02-08:
Descartar cambios que no se han enviando en un commit:
> git checkout -f
Más información:
http://stackoverflow.com/questions/8957862/how-to-upgrade-git-to-latest-version-on-mac-osx-lion
http://blog.gautamkedia.com/discarding-local-changes-in-git
Espero te sea de utilidad !
OBJETIVO: Tener un directorio de trabajo donde se capture el código fuente y tener un directorio donde se almacene el control de versiones o repositorio maestro (master).
NOTA: Esta realizado en windows, pero debe ser muy similar para Mac OSX.
1. Una vez instalado Git se debe configurar el nombre de usuario y el correo electrónico:
> git config --global user.name "James Bond"
> git config --global user.email "james007@gmail.com"
2. Inicializar el repositorio maestro donde se guardará el historial de cambios. Para esto nos dirigimos al directorio de Dropbox donde queremos almacenar el historial y estando ahí ejecutamos el siguiente comando:
> cd c:/users/miuser/dropbox/misproyectos/
> git init --bare miproyecto.git
NOTA: la opción bare nos permite llevar un mejor control de un repositorio central para más información http://sitaramc.github.com/concepts/bare.html
3. Ahora nos dirigimos al directorio donde queremos trabajar es decir donde estaremos programando nuestra aplicación, inicializamos el directorio con el siguiente comando:
> git init
4. Posteriormente le indicamos cual será el directorio remoto:
> git remote add miproyecto.git c:/users/miuser/dropbox/misproyectos/miproyecto.git
NOTA: Debemos tener cuidado aqui con la ruta ya que si no queda indicada la correcta
entonces podremos tener un error de permisos o bien de que no se encontró el repositorio.
5. Creamos archivos directorios, etc., es decir trabajamos en el (o programamos en otras palabras), entonces posteriormente estamos listos para enviar cambios, ejecutamos el siguiente comando para incluir todos los archivos (podemos incluir también nada más los que queremos; si no es el caso con el -punto- señalamos todos los archivos y directorios de trabajo):
> git add .
6. Una vez incluidos realizamos el commit para preparar el envío, esto nos permite incluir un mensaje que describa brevemente el conjunto de cambios que hemos realizado:
> git commit -m "Concluido el módulo X"
7. Una vez realizado lo anterior ahora si enviamos los cambios a nuestro repositorio remoto:
> git push miproyecto.git master
8. Al ejecutar el comando anterior aparecerá un proceso indicando que los archivos han quedado sincronizados. Con lo anterior podemos trabajar con Git, ahora que si lo que queremos es descargar lo que ya tenemos en otro equipo utilizamos el comando:
> git clone c:/users/miuser/dropbox/misproyectos/miproyecto.git
Esto nos creará una copia de lo que tenemos actualmente.
Si la url es diferente, es decir la ruta del directorio para llegar al repositorio central (en este ejemplo miproyecto.git) es diferente entonces será necesario usar la ruta completa cada vez que actualicemos en los diversos equipos. Por ejemplo:
> git push c:/users/miuser/dropbox/misproyectos/miproyecto.git master
NOTA: Como en este caso estamos utilizando Dropbox entonces lo más seguro es que tendremos que hacerlo de esa forma.
La proxima vez que en este mismo ordenador necesitemos bajar los archivos ya solo usamos:
> git pull c:/users/miuser/dropbox/misproyectos/miproyecto.git master
Con el comando:
> git status
Obtenemos las diferencias entre lo que tenemos del directorio de trabajo.
Con el comando:
> git log
Obtenemos los commit que hemos enviado al repositorio.
Ahora que si queremos una herramienta gráfica existe la siguiente:
http://code.google.com/p/gitextensions/
Para actualizar la versión de git he seguido esta guía:
http://ayanim97.com/mac/installing-and-upgrading-git-mac-os-lion
NOTA: En Mac OSX tuve problemas tuve que agregar la siguiente línea a mi ~/.bash_profile:
export PATH=/usr/local/git/bin:/usr/local/sbin:$PATH
ACTUALIZACION 2013-02-08:
Descartar cambios que no se han enviando en un commit:
> git checkout -f
Más información:
http://stackoverflow.com/questions/8957862/how-to-upgrade-git-to-latest-version-on-mac-osx-lion
http://blog.gautamkedia.com/discarding-local-changes-in-git
Espero te sea de utilidad !
Suscribirse a:
Entradas (Atom)