domingo, 25 de noviembre de 2012

Sublime Text 2 Soporte Django "autocompletado"

Tomando un curso me tome con una muy buena herramienta que se llama Djaneiro

https://github.com/squ1b3r/Djaneiro

Con esta herramienta se puede utilizar algo parecido al autocompletado por ejemplo se escribe la palabra model y seleccionado del listado que aparece [model        Model] de forma automática nos coloca todo lo necesario para el modelo.

Para instalar dicho paquete podemos utilizar el administrador de paquetes del Sublime Text 2 en caso de que aún no tengas el instalador de paquetes activado en el sublime te sugiero esta liga:

http://www.vidaamarilla.com/2012/07/tutorial-para-sublime-text-2.html
(Revisa la sección que dice Instalar el Package Control)

Posteriormente presionamos Shift + Ctrl (o Cmd si es Mac) + P, aparecerá un listado posteriormente seleccionamos la opción que dice Install Package, aparecerá otro listado ahí tecleamos Djaneiro y lo seleccionamos del listado.

Una vez instalado, reiniciamos el Sublime y ahora podemos utilizar los shortcut que vienen listados en su sitio en github.


Nota: Una vez instalado Djaneiro ya no aparecerá en el listado.


Saludos espero te sea de utilidad.




jueves, 18 de octubre de 2012

PHP has encountered an Access Violation at 00000000 openssl

Un amigo después de tener trabajando en un servidor una aplicación con manejo de openssl y php (para facturas electrónicas), el equipo falló entonces tuvo que mudarlo a otro servidor el cuál ya tenía instalado PHP pero al pasarlo al otro servidor nos topamos con el siguiente error:

- PHP has encountered an Access Violation at 00000000 -

Después de que estuvo revisando nos encontramos que el error se producía cuando trataba de ejecutar el comando openssl_sign() a pesar de que al correr un phpinfo parecía que todo estaba configurado correctamente (ya se imaginarán nuestra frustración sin poder generar facturas).

Tuvimos que hacer varias cosas para poder resolver este problema (quizá alla otras mejores pero esta fue la que nos funciono):

1 - Instalación del OpenSSL

La instalación del OpenSSL, no estaba funcionando, por lo que tuvimos que desinstalar por completo la aplicación y reinstalarla, en este sitio http://slproweb.com/products/Win32OpenSSL.html se puede descargar la versión que utilizamos fue la Win32 OpenSSL v0.9.8x.

2 - Hacer utilizando el comando directamente

Intentamos nuevamente utilizando el comando openssl_sign() pero siguió fallando, entonces cambiamos de utilizarlo de esa forma y mejor llamar directamente al comando utilizando shell_exec() pero el problema es que al ejecutar la instruccion openssl dgst ... etc., no pasaba absolutamente nada, no marcaba error ni tampoco existía alguna entrada en el log.

El problema eran dos cosas:
a) El comando que se debe utilizar para los ejecutables para tener un poco de control en el proceso es popen() aquí algo de info del comando:  http://php.net/manual/es/function.popen.php .

La forma en que lo utilizamos fue:
------- error_reporting(E_ALL); $gestor = popen($ComandoOpenSSL.' 2>&1', 'r'); //Estos comandos son para depurar solamente // $leer = fread($gestor, 2096); // echo " --> contenido: $leer "; pclose($gestor); -----


b) Los permisos de usuario el shell_exec y el popen no funcionaban o no hacían nada debido a los permisos de usuario, la aplicación esta montada sobre un IIS por lo que era necesario darle permisos al usuario de invitado de internet, es decir al clásico IUSR_NOMBREEQUIPO para esto encontramos este sitio: http://www.somacon.com/p255.php.

Básicamente se trata que al archivo si al cmd.exe y al directorio c:\OpenSSL se le den permisos de lectura y ejecución al usuario IUSR_NOMBREEQUIPO es posible dependiendo de lo que haga su aplicación si requieren en uno u otro darle permiso de escritura.


Una vez realizado lo anterior por fin logramos reactivar el servicio :)


Espero te sea de utilidad.

Otras Referencias:
http://www.madboa.com/geek/openssl/
http://www.openssl.org/
http://www.php.net/manual/es/openssl.requirements.php
http://actron.wordpress.com/2010/11/16/facturacion-electronica-sello-openssl-php/
http://actron.wordpress.com/2010/11/18/facturacion-electronica-sello-php-y-openssl-mas-rapido/


miércoles, 17 de octubre de 2012

Python :: Obtener de la Fecha Actual el Día, Mes y Año

El manejo de Fechas en Python considero es de lo más sencillo por lo pronto he necesitado saber el día, mes y año.

Es muy simple aquí el código:


dimefecha.py
__________________________

# -*- coding: utf8 -*- 

from datetime import date
d = date.today()
print "Día: ",d.day
print "Mes: ",d.month
print "Año: ",d.year
__________________________

NOTA: La parte que tiene # -*- coding: utf8 -*-  es para que acepte caracteres especiales en UTF-8 como acentos y ñ.


Genial así de simple, dejo algo más de info, ojalá te sea de utilidad.



Referencias:
http://docs.python.org/library/datetime.html
http://effbot.org/librarybook/datetime.htm
http://stackoverflow.com/questions/6289474/working-with-utf-8-encoding-in-python-source

martes, 9 de octubre de 2012

Django + GraphViz + Mountain Lion

GraphViz es una herramienta muy útil para generar automáticamente diagramas UML de las clases que se tienen en un proyecto, tuve algunos detalles para instalarlos en Mountain Lion, y al final los pasos se resumen en lo siguiente:

  • Instalar GraphViz la herramienta que nos permitirá ver los diagramas, el cuál se puede descargar desde aquí: http://www.graphviz.org/Download_macos.php
    • En mi caso descargue la versión: graphviz-2.29.20121009.0445.pkg, que esta en el área de desarrollo.
  • Posteriormente es necesario instalar PyGraphViz que es la herramienta que enlaza a Python con GraphViz aquí fue donde tuve algunos detalles, por lo que tuve que descargarlo utilizando el siguiente comando:
    • $sudo svn co https://networkx.lanl.gov/svn/pygraphviz/trunk pygraphviz
  • Con lo anterior se creará un directorio en el equipo es importante que modifiques los permisos al directorio como lectura y escritura.
  • Posteriormente modificar el archivo setup.py, esto es las líneas:
# OSX, Linux, alternate location
library_path='/usr/local/lib/graphviz'
include_path='/usr/local/include/graphviz' 
NOTA: Se debe quitar el # para descomentar, una vez realizado esto guardar el archivo.
    • Posteriormente ejecutar el siguiente comando:
      • $ python setup.py build
    • Y Finalmente utilizar:
      • $ python setup.py install
    Con lo anterior deberá quedar instalado la herramienta, para generar el diagrama dentro del directorio de proyecto se puede utilizar:

    $ python manage.py graph_models --all-applications -g --output=miproyecto_uml.dot

    Una vez ejecutado el comando se generará el archivo miproyecto_uml.dot que se puede abrir con el programa GraphViz que quedo instalado en el segundo paso.

    Con la siguiente instrucción solo realizará el diagrama de la aplicación miaplicacion:

    $ python manage.py graph_models miaplicacion -g -o miaplicacion_uml.dot

    Utilizando $ python manage.py graph_models --help se puede ver un listado de comandos que se pueden utilizar.


    Saludos y espero te sea de utilidad.


    jueves, 4 de octubre de 2012

    Python y MySQL en OS X Mountain Lion

    Primero debe descargar el MySQL para Mac e instalarlo.

    Posteriormente deberá descargar la utilidad de http://sourceforge.net/projects/mysql-python/, también para los amantes de la terminal pueden utilizar los siguientes comandos:

    $ wget http://superb-dca2.dl.sourceforge.net/project/mysql-python/mysql-python-test/1.2.4b4/MySQL-python-1.2.4b4.tar.gz 

    $ tar -xf MySQL-python-1.2.4b4.tar.gz

    Una vez desempaquetado el archivo se debe editar el archivo de nombre site.cfg ubicando la línea que dice:

    #mysql_config = /usr/local/bin/mysql_config

    por:

    mysql_config = /usr/local/mysql/bin/mysql_config

    Es importante quitar el símbolo # para que deje de ser comentario y por otro lado verificar que el archivo mysql_config se encuentre en ese directorio como en mi caso. Una vez realizado lo anterior ahora se procede a correr el comando:

    $ sudo python setup.py build 

    Si no marco ningún warning o algún error quiere decir que vamos bien, ahora ejecutamos el siguiente comando:

    $ sudo python setup.py install 

    Finalmente corremos el siguiente comando:

    $ sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib 


    Este último comando debe arreglar un problema que se genera al querer utilizar la librería MySQLdb.
    -----------
    Traceback (most recent call last):
    File "", line 1, in
    File "/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/MySQLdb/__init__.py", line 19, in
    import _mysql
    ImportError: dlopen(/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib Referenced
    Referenced from: /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so Reason
    Reason: image not found
    En este sitio fue donde encontre como arreglarlo:
    (http://stackoverflow.com/questions/13440147/mysqldb-for-python-2-7-on-osx-10-8-2-and-both-are-64-bit)

    -----------


    Para ver si quedo bien podemos entrar nuevamente a la consola de python con el comando $ python, y luego teclear:

    >>> import MySQLdb

    Si no aparecen errores entonces quedo listo !

    Espero te sea de utilidad.



    Referencias:
    http://luauf.com/2008/04/24/conectar-python-con-mysql/
    https://groups.google.com/forum/?fromgroups=#!topic/django-es/_NRYFHVSgtA
    http://nisthaonweb.com/blog/2012/02/setting-up-django-with-mysql-with-and-without-mamp/


    NOTA:

    Este post fue modificado el 17/01/2013 debido a que si se utilizaba la línea
    export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

    Se generaba un error en OSX ML con la siguiente leyenda:
    dyld: DYLD_ environment variables being ignored because main executable (/usr/bin/sudo) is setuid or setgid

    martes, 2 de octubre de 2012

    Firebird campos multivalorados o con multivalores (multivalue) combinado con case


    El día de hoy me enfrente al detalle de obtener un reporte con multi-valores, esto es en una fila colocar los datos de una tabla y posteriormente en una sola celda aparezcan datos de otra tabla donde esta vinculada del tipo foreign key, dejo aqui la consulta para que sirva de referencia...


    select
    factura, fecha,

    case motivoservicio
    when 1 then 'Falla en Software'
    when 2 then 'Garantía'
    when 3 then 'Mantenimiento Preventivo'
    end as servicio,

    (select nombre from sucursales where CLAVE=r.clave) as sucursal,

    (select list(case id_tipo
    when 1 then 'Reinstalación'
    when 2 then 'Virus'
    when 3 then 'Configuración'
    when 4 then 'Otro'
    end,' / ')
    from tipos_soporte a
    where r.factura = a.factura group by a.factura) as soporte,

    from registro_servicios r
    where
    cancelado = 0 and
    fecha = '2012-10-02'


    Esto producirá un resultado como el siguiente:
    facturafechaserviciosucursalsoporte
    102912012-10-02Falla en SoftwareVallartaReinstalación / Virus
    102922012-10-02Falla en SoftwareVallartaVirus / Configuración
    103012012-10-02GarantíaCihuatlánOtro
    103062012-10-02GarantíaGuadalajaraVirus



    Es importante hacer mención que esta consulta será compatible con firebird versión 2.1 en delante, por el uso de LIST().

    Espero les sea de utilidad.


    Referencias:
    http://www.janus-software.com/fbmanual/manual.php?book=psql&topic=56
    http://www.developeando.com/2009/02/firebird-21-list-function.html
    http://www.firebirdsql.org/refdocs/langrefupd20-select.html#langrefupd20-aggregates
    http://www.firebirdsql.org/file/documentation/reference_manuals/user_manuals/html/migration-mssql-syntax.html
    http://www.firebirdsql.org/manual/nullguide-aggrfunc.html

    sábado, 15 de septiembre de 2012

    Modelos de Django a UML

    Una vez que inicie a trabajar con Django me gusto mucho la facilidad con la que se puede iniciar a trabajar con los modelos, sin embargo, cambie mucho de mi diagrama de base de datos inicial a lo que quedo implementado por lo que necesitaba una herramienta para poder pasar los modelos a un diagrama inicie trabajando con models.app y también con freemind.app pero me di cuenta que necesitaba algo más ágil.

    Buscando en internet me tope con que hay una librería de extensiones para Django en el siguiente sitio:
    http://code.google.com/p/django-command-extensions/

    Dicha librería se puede instalar siguiendo estas instrucciones:
    http://code.google.com/p/django-command-extensions/wiki/InstallationInstructions

    Una vez realizada la instalación, se puede ejecutar el siguiente comando:
    $ python manage.py graph_models -a > ihospital.dot

    Posteriormente descargue este software que permite ver este tipo de archivos:
    http://www.graphviz.org

    Una vez descargado e instalado, abri el archivo .dot y me construyo el diagrama automáticamente, es genial esta automatización de Django.

    Saludos espero te sirva ...


    Tips TextMate Transparente tm_properties etc.


    Es muy interesante que ahora TextMate se haya convertido en OpenSource: https://github.com/textmate/textmate/downloads , aunque algunos auguran su caída considero que esta estrategia lo hará más fuerte, aquí voy a ir dejando algunos tips para utilizarlo.


    Fondo Transparente
    Lo primero que no encontré, fue, como poder hacer el fondo transparente, lo cuál es una de las características que más me gusta en este editor, para lograrlo realice lo siguiente:


    1. Clic en Bundles -> Edit Bundles
    2. Posteriormente localizar la sección que dice Themes.
    3. Y en la siguiente columna localizar nuevamente Themes.
    4. En mi caso me gusta el tema Cobalt por lo que al hacer clic sobre el aparecerá el archivo de configuración en la parte inferior.
    5. Dentro de las primeras líneas (en mi caso la línea 4) existe un parametro que dice background el cuál esta en formato RGB con números hexadecimales, aparecerá algo como '#001130', al final podemos añadir dos digitos más que nos permitirán controlar el nivel de transparencia, en mi caso  agregue cb y con esto logre una transparencia excelente para mi uso, esto es quedo así: background = '#001130cb';

    tm_propiertes

    En este caso se debe configurar el archivo .tm_properties para lograrlo dentro del File Browser encontramos un icono de forma de engrane, cuando se hace clic aparece un menú que al final tiene la opción: Preferences ...

    Cuando se hace clic abre el archivo .tm_properties (es probable que se encuentre en blanco), dentro este archivo vamos añadir la siguiente línea, de acuerdo a lo que necesitemos:

    # Tamaño de Fuente por Omisión
    fontSize = 15

    # En el título de la ventana colocará la ruta completa del archivo abierto
    windowTitle    = "$TM_DISPLAYNAME${TM_DIRECTORY/\A(?:\/Users\/username\w+\/?(.*)|(.+))\z/${2:? – ${2/\A\/Users\/username/~/}:${1/\A(?=.)/ – /}}/}"

    Nuevas Características Geniales

    Algo que me gusto mucho es que desde TextMate->Preferences ahora ya se puede configurar que al inicio (At startup) no abrá los documentos de la última sesión. 

    Así como también dentro de la sección Projects si se selecciona la opción Placement: Right side se puede poner la barra de File Browser del lado derecho, lo cuál para mi es muy útil ya que prefiero navegar entre archivos utilizando ⌘T.


    Deshabilitar Suavizado de las Fuentes

    En el terminal ejecutar el siguiente comando:

    $ defaults write com.macromates.TextMate.preview disableAntiAlias -bool YES



    Continuará ...




    Fuentes:

    viernes, 31 de agosto de 2012

    Error en Django 1.4 Mac OSX al crear el superuser o super usuario (Solucionado)


    Al querer crear el súper usuario de Django 1.4 en Mac OSX genera una serie de errores:
    File "manage.py", line 10, in
    ValueError: unknown locale: UTF-8

    El error tiene que ver con sistema de codificación que esta configurado en Python, al correr el comando:

    $ locale -a 

    Da por resultado las codificaciones disponibles en el equipo …

    af_ZA
    af_ZA.ISO8859-1
    es_ES.UTF-8

    En mi caso particular de interés lo configure con: 'es_ES.UTF-8', entonces lo que se debe hacer, es editar el archivo: ~/.bash_profile ; yo utilice TextMate desde la línea de comandos de la siguiente forma:

    $mate ~/.bash_profile

    Sin embargo puede utilizarse cualquier otro editor de texto como Sublime Text o Coda por ejemplo.

    Dentro de este archivo se debe colocar lo siguiente:

    export LANG="es_ES.UTF-8"
    export LC_COLLATE="es_ES.UTF-8"
    export LC_CTYPE="es_ES.UTF-8"
    export LC_MESSAGES="es_ES.UTF-8"
    export LC_MONETARY="es_ES.UTF-8"
    export LC_NUMERIC="es_ES.UTF-8"
    export LC_TIME="es_ES.UTF-8"
    export LC_ALL=

    Es probable que en el archivo ya se tengan más cosas por lo que podemos dejarlo al final.

    Posteriormente al reiniciar el Terminal. Para corroborar que Python ya este utilizando la configuración deseada realizamos lo siguiente:

    $Python 
    Python 2.7.1 …
    ....
    >>> import locale
    >>> print(locale.getdefaultlocale());
    ('es_ES','UTF8')

    Con lo anterior quiere decir que la configuración ha sido correcta ahora intentamos nuevamente crear el súper usuario en Django.

    Si la creación de tablas no tuvo ningún problema al correr el syncdb entonces se puede utilizar el comando:
    $ Python manage.py createsuperuser

    Espero les sea de utilidad …


    Referencia:

    lunes, 13 de agosto de 2012

    WAMP Permitir Acceso Remoto de Otros Equipos Apache

    Hace unos días instalé WAMP y no podía navegar desde otros equipos a mi maquina marcaba algo como que no había permiso para ver la página, entonces buscando en internet  me tope con que el WAMP por omisión se instala con el acceso bloqueado y realice lo siguiente cambiar el archivo httpd.conf esto es buscar la siguientes líneas:


        Options Indexes FollowSymLinks
        AllowOverride all

        Order Deny,Allow
        Deny from all
        Allow from 127.0.0.1


    Cambiar por:


        Options Indexes FollowSymLinks
        AllowOverride all

        Order Deny,Allow
        Allow from all
        Allow from 127.0.0.1



    Espero te sea de utilidad...

    Salu2


    Fuentes:
    http://kosiara87.blogspot.mx/2011/03/allow-remote-access-to-apache-on-wamp.html

    viernes, 3 de agosto de 2012

    Papelera Mac OS X: Borrar archivos por separado, o bien eliminar o vaciar papeleras dificiles


    Hace poco me entro la inquietud de eliminar un archivo por separado de la papelera y después de varias búsquedas encontré que es muy sencillo desde el terminal:


    1. Entrar al terminal de Mac OSX
    2. Una vez en el prompt teclear: sudo rm -rf 
    3. Dejar un espacio en blanco, después de rf.
    4. Ahora abrir la Papelera y seleccionar los archivos que queramos borrar, aquí viene la magia, arrastrar esos archivos al terminal, y automáticamente serán capturados en él, junto con su ruta completa. Por ejemplo con un solo archivo podría quedar de la siguiente manera: 
      • $ sudo rm -rf /Users/omendoza/.Trash/Archivo\ 2.0.3.ipa
    5. Presionar Enter y con esto los archivos serán eliminados.

    Espero les sea de utilidad.

    LinkSys Router: mis equipos no se ven entre si, no hacen ping.

    Tuve un problema con un Linksys WRT320N en el cual no podía hacer ping entre equipos si estaban conectados al ruteador de forma inalámbrica, es decir no se veían entre si en la red ...

    Revise Firewalls, los desactive los reactive y nada (tanto del sistema operativo como del ruteador), hasta que al final buscando en internet encontré este sitio: http://forums.cabling-design.com/wireless/problem-pinging-between-PC-es-connected-to-Linksys-WRT54GS-r-13403-.htm donde aparece un post de Jeff Liebermann donde el explica lo siguiente:

    Los ruteadores Linksys tienen una utilería que le llaman "AP Isolation" la intención de esta opción es prevenir ataques entre usuarios que se encuentran conectados a la misma red inalámbrica, esta opción puede ser muy útil en un café de internet, o lugares públicos, pero en una red local quizá ya no lo sea, por que impide la comunicación entre los ordenadores conectados.

    Para arreglar el problema accedí a la opción Wireless y después en la sección que dice Advanced Wireless Settings, y dentro de esta sección apareció dicha opción AP Isolation la cuál la fije como Disabled y listo ahora ya puedo hacer ping entre equipos, por lo que puedo utilizar mis aplicaciones TCP/IP entre equipos.

    Espero te sea de utilidad ... Gracias !

    lunes, 9 de julio de 2012

    Comando tree para el terminal de OSX


    Instalar el comando Tree en Mac OSX:

    http://shaunchapman.me/post/329270449/how-to-install-the-tree-command-on-mac-os-x

    Concatenar Cadenas en Firebird e Interbase

    Hace unos días estuve buscando información de como concatenar en Firebird, la forma de hacerlo es utilizando los caracteres ||,  les dejo aquí un ejemplo:


    select  nombre||'  '||apellidos, domicilio
    from personas

    Con lo anterior el sistema debe concatenar el nombre con un espacio en blanco y luego los apellidos, en otra columna aparecerá el domicilio.

    Espero sea de utilidad !

    lunes, 4 de junio de 2012

    Google Drive: The installer encountered error 1603: Fatal error during installation (Solucionado)

    Me tope con este error 1603 al querer instalar Google Drive en un equipo con windows 2003 server. Lo solucione siguiendo el link que menciono abajo haciendo lo siguiente:
    1. Descargar e Instalar el Microsoft Visual C++ 2008 SP1 Redistributable Package desde el sitio: http://www.microsoft.com/downloads/es-es/details.aspx?familyid=a5c84275-3b97-4ab7-a40d-3802b2af5fc2 ojo nada más el idioma del sistema operativo.
    2. Una vez realizado lo anterior es volver a intentar instalar el Google Drive y con eso funciono correctamente.
    Saludos y espero les sea de utilidad.



    FUENTE:
    https://productforums.google.com/forum/#!searchin/drive/1603/drive/v-XmaYzutP0/ARJlXDWLXdUJ

    martes, 20 de marzo de 2012

    Comandos en Terminal Mac OSX

    Me tope con un excelente sitio dónde se listan los comandos para el terminal del Mac OSX:

    http://ss64.com/osx/

    Espero les sea útil ...

    domingo, 19 de febrero de 2012

    Problemas Tomcat Encoding o Acentos y ñ

    Recientemente tuve un problema con tomcat 6 que por alguna razón no reconocía los acentos que provenían del request, curiosamente con Glass Fish no tenía problemas buscando información en la red me tope con que tenia que agregar el atributo URIEncoding="UTF-8" en el tag Conector del archivo:

     /Tomcat 6.0/conf/server.xml

    < Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" URIEncoding="UTF-8" / >

    Con lo anterior ya no tuve problema con la codificación de acentos y ñ.


    Fuente:
    http://stackoverflow.com/questions/138948/how-to-get-utf-8-working-in-java-webapps

    martes, 17 de enero de 2012

    No abre ContPAQi Nóminas (solucionado)

    Recientemente donde trabajo tuvimos un problema con el contpaqi nominas en un equipo no lo abría simplemente no lo abría, probé con la configuración del antivirus añadiendo excepciones y también con DEP (Prevención de Ejecución de Datos) y no funcionaba.

    Hasta que me tope con una solución entrar al directorio:

    {Program files}\compac\bin\

    Y renombrar el archivo:

    nomconexion.exe por nomconexion_.exe

    Posteriormente intente entrar y funciono les paso el tip por si tienen el mismo problema.