martes, 25 de octubre de 2016

Detalle con Google Chrome Free 3 of 9 Extended

El día de hoy me tope con un detalle con Google Chrome y la fuente Free 3 of 9 Extended usualmente la fuente funcionaba correctamente en una aplicación me toco desarrollar alguna vez pero derepente empezó a fallar, buscando en línea me encontre con que había al parecer un detalle con la forma en que renderiza las fuentes, y bueno finalmente con el link que agrego a las referencias una forma de como solucionarlo, lo que me funciono a mí fue en el código html colocar la fuente directamente en el tag usando el atributo style y sin colocar la palabra Extended en la fuente de la siguiente forma:

<font style="font-family:'Free 3 of 9'">*123*</font>

NOTA: Observen las comillas simples ' para la fuente.

De esta forma el problema se soluciono.


Espero te sea de utilidad !


Referencias
https://productforums.google.com/forum/#!topic/chrome/_KLiTgccPLA
https://productforums.google.com/forum/#!topic/chrome/Vd5abMVzKFI

Detalle con Google Chrome Free 3 of 9 Extended

El día de hoy me tope con un detalle con Google Chrome y la fuente Free 3 of 9 Extended usualmente la fuente funcionaba correctamente en una aplicación me toco desarrollar alguna vez pero derepente empezó a fallar, buscando en línea me encontre con que había al parecer un detalle con la forma en que renderiza las fuentes, y bueno finalmente con el link que agrego a las referencias una forma de como solucionarlo, lo que me funciono a mí fue en el código html colocar la fuente directamente en el tag usando el atributo style y sin colocar la palabra Extended en la fuente de la siguiente forma:

<font style="font-family:'Free 3 of 9'">*123*</font>

NOTA: Observen las comillas simples ' para la fuente.

De esta forma el problema se soluciono.


Espero te sea de utilidad !


Referencias
https://productforums.google.com/forum/#!topic/chrome/_KLiTgccPLA
https://productforums.google.com/forum/#!topic/chrome/Vd5abMVzKFI

miércoles, 16 de septiembre de 2015

Colocar un mensaje prelogin en Linux Ubuntu Server

Este es un tema que cada vez que lo tengo que hacer olvido cuál es exactamente el archivo, debido a que puede hacerse de diferentes formas pero la que mejor me ha funcionado es la siguiente:

$ sudo vi /etc/issue

NOTA: Con \n obtienes el nombre de la maquina, y con \l la terminal que se esta utilizando.


Espero te sea de utilidad !


Referencias:


martes, 1 de septiembre de 2015

Conectarse a una base de datos remota de firebird con isql

Realmente es muy simple pero necesito dejar la nota por que de manera recurrente lo he necesitado:

$ isql
SQL> CONNECT "[IP_SERVER]/[PUERTO]:[DATABASE_PATH]" user 'USER' password 'PASS';

Ejemplo:


CONNECT "10.10.1.2/3050:C:\bds\mibase.gdb" user 'SYSDBA' password '1234';


Espero te sea de utilidad !



Referencias:
http://wiki.metawerx.net/wiki/HowToSetUpARemoteFireBirdConnection

viernes, 28 de agosto de 2015

Ubuntu crontab: agregando una tarea para purgar django_session

Como de costumbre necesito agregar un cronjob para limpiar la tabla de sesiones de django y aquí dejaré documentado el proceso, un proceso cron es aquel que puede repetirse dependiendo de la configuración.

Dentro del sistema operativo podemos ejecutar

$ sudo crontab -e

Posteriormente el sistema preguntará por el editor en mi caso muy particular me gusta utilizar vim (opción 3), sin embargo da opciones a varios editores.

Ahora bien nos vamos al final del archivo la forma es estructurar el contenido de acuerdo a como se nos explica en la siguiente imagen:


Cada línea del archivo crontab esta compuesta por estos componentes, aquí un ejemplo:

#crontab
#------------

1 * * * * touch /webapps/hola.txt

#------------

OJO: Si estas editando con vim necesitas dar ESC y luego :wq!  así es con el signo de exclamación para que así instale el crontab.

En el crontab anterior estamos configurando que cada vez que el minutero del reloj marque 1, se va crear un archivo que dice hola.txt.

Ahora bien para el motivo que necesito hice un archivo con extensión .sh y lo coloque en mi directorio de /home/my_user/cron_django_session.sh con el siguiente contenido:

/webapps/mi_proyecto/venv/bin/python /webapps/mi_proyecto/django_app/manage.py clearsessions
strFecha=$(date)
echo $strFecha > /home/administrador/cron_django_session.log

NOTA: Revisar rutas de archivos

Posteriormente le damos permisos usando el comando:
$ chmod +x cron_django_session.sh

Posteriormente vamos al crontab para añadir la ejecución de este archivo:

0 1 * * * /home/my_user/cron_django_session.sh >/dev/null 2>&1

De esta forma el script se va ejecutar todos los días a la 1 a.m. al final se agrega >/dev/null 2>&1 para que no todo el tiempo el sistema operativo intente enviar un correo al usuario root, en caso de que se necesite se debe quitar esa parte.


Espero te sea de utilidad !

Referencias:
http://www.debian-tutorials.com/crontab-tutorial-cron-howto
http://www.guatewireless.org/os/linux/como-agregar-tareas-al-cron-de-linux.html
https://docs.djangoproject.com/en/1.8/topics/http/sessions/#clearing-the-session-store
http://www.opencsw.org/community/questions/289/how-to-clear-the-django-session-cache
https://vinta.ws/code/clear-session-in-django.html
http://stackoverflow.com/questions/10289970/add-10-minute-cron-job-to-ubuntu-package


ACTUALIZACIÓN 2015-10-20

Si quieres verificar como se ejecuta el cronjob puedes ver varios archivos a mi me funciono:
$ sudo vi /var/log/syslog

Referencias:
http://unix.stackexchange.com/questions/207/where-are-cron-errors-logged




miércoles, 29 de julio de 2015

git: mostrar la lista de archivos de un commit

Para mostrar la lista de archivos de un commit necesitamos primero utilizar el comando:

$ git log

Se abrirá pantalla con less y de ahí copiaremos el commit id y una vez que se copie, ejecutamos el siguiente comando pegandolo al final:

$ git diff-tree --name-only -r dfaja8asas5dasasas440asasas93213af4053da07b7f8


Espero te sea de utilidad !



Referencias:
http://stackoverflow.com/questions/424071/list-all-the-files-for-a-commit-in-git

lunes, 13 de julio de 2015

Include como php en Python + Django

En uno de los proyectos que estoy trabajando me tope con este detalle después de buscar en varios foros y demás encontre la siguiente forma, nada más cuidado por que baja el rendimiento, y hay que revisar las cuestiones de seguridad (http://lucumr.pocoo.org/2011/2/1/exec-in-python/); pero eso si funciona perfectamente y puede servir dependiendo de la aplicación; esto se lográ utilizando la instrucción exec.

El proyecto completo lo pueden descargar de: https://github.com/omaryahir/django_doing_includes

Aquí comento la parte importante dentro del archivo models.py estoy agregando un fragmento de código que manda llamar el archivo prueba.py :


db/models.py:

from django.db import models

class Person(models.Model):
    first_name = models.CharField(verbose_name=u'Nombre', max_length=50)
    last_name = models.CharField(verbose_name=u'Apellido', max_length=50)
    initials = models.CharField(verbose_name=u'Iniciales', max_length=10)

    def save(self, *args, **kwargs):
        prueba_py = open('db/prueba.py','r')
        super(Person, self).save(*args, **kwargs)
        exec(prueba_py)
        print self.initials

    def __unicode__(self):
        return "%s %s" % (self.first_name, self.last_name)


class Otro(models.Model):
    otrocampo = models.CharField("otro campo", max_length=50)
    person = models.ForeignKey(Person)

    class Meta:
        verbose_name = "Otro"
        verbose_name_plural = "Otros"

db/prueba.py:

self.initials = "Esta es la prueba"
x = Otro()
x.otrocampo = "Prueba otro campo"
x.person = self
x.save()
print "Saliendo"

Como pueden observar en el código la línea - prueba_py = open('db/prueba.py','r')- de la clase Person se abre el archivo prueba.py y posteriormente en la línea - exec(prueba_py) - ejecutamos su contenido; lo interesante aquí de python es que carga todo el contexto, algo similar a lo que se hacia con php haciendo un include.

Podemos observar en el archivo prueba.py que dentro del archivo usamos las variables como si estas se encontrarán ahí, bien sin embargo en python una de las cualidades que tenemos el rendimiento, por lo que este tipo de usos puede afectarlo, se debe analizar en donde se requerirá su uso.

Si encuentras otra forma no dudes en compartirla ...

Saludos espero te sea de utilidad !


Referencias:
https://docs.python.org/3/library/functions.html?highlight=exec#exec
http://lucumr.pocoo.org/2011/2/1/exec-in-python/
https://github.com/omaryahir/django_doing_includes