domingo, 25 de noviembre de 2012

Buscar comandos en el historial del terminal

Uso bastante el terminal o linea de comandos tanto en MAC OS como en Linux. Para navegar entre las carpetas uso la tecla TAB que auto completa rutas y comandos y es como el unico tip que usaba para agilizar el ingreso de instrucciones.

El sistema mantiene un registro de los comandos ingresados el cual se puede ver escribiendo el comando history. 

Hasta que pense que seria bueno poder buscar en el historial y no tipear tanto. Y claro, existe un atajo para realizar eso CTRL+R.


Tipeas CTRL+R y aparece el siguiente prompt (reverse-i-search)`': tras lo cual todo lo que escribas se auto completara de acuerdo a las entradas del historial.


Fuente
http://lifehacker.com

Elemento seleccionado de un select con Jquery Uniform

Estoy haciendo mejoras en el framework por defecto que uso en mi proyecto Helfer. Si ven el video se van a dar cuenta que los select o prompt están como el DOM los trajo al navegador. Por lo mismo y para que se vean atractivos, los agregue a la librería Jquery Uniform. Pero hay un problema,  esta librería agrega una etiqueta span al momento que seleccionamos un elemento. Por lo que para efectos de validación nuestro control select / combo / prompt sigue estando sin seleccionar o conservando su valor por defecto.

 
Como siempre hago, busque la solución googleando. Llegue hasta stackoverflow pero la solución que encontré ahí no me ayudo. De modo que lo  que cae de cajon es actualizar el estado del select vía programación una vez que se produce el evento change del mismo.

$("#id_emp").change(function () {
  var vid_emp = document.getElementById("id_emp").value;
  if (vid_emp!='0'){
   /*
    codigo
    */
   $("#id_emp option[value="+vid_emp+"]").attr("selected","true");
  }
});

sábado, 24 de noviembre de 2012

Menu Desarrollo en Safari

Empecé a revisar una aplicación Web en Safari y tres letras mayúsculas, no veo ninguna  opción para desarrolladores.

No es que no la tenga, es que no la muestra por defecto. Y eso es comprensible dado que no todo el mundo que navega en Internet quiere ver los errores de programación de un sitio.

Para activar el menú Desarrollo en Safari se debe hacer lo siguiente:

  • Safari
  • Preferencias
  • Avanzado
  • Habilitar la opción Mostrar el menú Desarrollo en la barra de menús


Desabilitar envios de correo en Mantis BT

Cuando se crea un usuario en Mantis BT, el sistema envía un correo al nuevo usuario para que el mismo active su cuenta.  Y es justo lo que yo no necesitaba, debido a:

  • No tengo configurado un servidor de correo en la maquina
  • No es necesario enviar notificaciones por correo
Como no encontré la opción de deshabilitar el correo en la interfaz Web, fui al archivo de configuración:

En mi caso (instale Mantis BT desde Synaptic), por lo que la ubicación puede no ser igual a la de todos:

/usr/share/mantis/www/config_defaults_inc.php

y busque la siguientes lineas:

# allow email notification
# note that if this is disabled, sign-up and password reset messages will
# not be sent.
$g_enable_email_notification = ON;


Y cambie a OFF el valor del parámetro $g_enable_email_notification  de esta forma el usuario que se esta creando lo hará con un password en blanco.


Link Mantis
http://www.mantisbt.org

Notas sobre Mantis BT

Mantis BT es una herramienta open source de Bug Trucking (en español, para registrar errores de software) . La acabo de instalar en Linux (Crunchbang) desde Synaptic. Y como no es mi primer acercamiento a esta herramienta voy a registrar las cosas que vaya aprendiendo y las dudas. Por que de los demás acercamientos no me acuerdo de nada.

La primera duda que tuve después de instalar fue, ¿Cual es la clave del usuario administrator? La clave del usuario administrator es root, y es aconsejable cambiar esta clave en el link  My Account, la primera vez que entras.

Después de crear un proyecto (Manage - Manage Projects). E intentar reportar una incidencia a mi mismo (Report Issue), no encuentro como crear el primer elemento que se me pide en el formulario Category.

¿Como crear categorías en Mantis BT?

Algo que no vi, cuando cree el proyecto es que el formulario es mucho mas amplio y la creación de categorias esta mas abajo, ósea en Manage - Manage Projects.

Agregaré mas tips en la medida que use este software...

Link Mantis
http://www.mantisbt.org

lunes, 19 de noviembre de 2012

Clonar repositorio GIT localmente

En otro post mostré como clonar un repositorio vía SSH, ahora es el turno de el mas básico de los protocolos usados por GIT, Local.

Esto se puede hacer de las siguientes dos formas:

git clone /home/usuario/proyecto.git
o
git clone file:////home/usuario/proyecto.git

La diferencia entre estos dos métodos es que al usar el prefijo file://, este es mas lento1 pero obtiene una copia limpia en caso de que este repositorio haya estado bajo otro sistema de control de versiones.


Fuentes
Git on the Server - The Protocols

1 Al usar el prefijo file, GIT utiliza un proceso para transferir datos sobre una red. Lo cual lo hace mas lento.

domingo, 18 de noviembre de 2012

Convertir repositorio GIT "non-bare" a "bare"

La mejor traducción para la palabra "bare" en el contexto de repositorios GIT, creo que es descubierto. Dado que un repositorio "non-bare" es un repositorio no compartido o no descubierto. Siendo "bare" lo opuesto, compartido o descubierto.

La utilidad de un repositorio "non-bare" es cuando el control de fuentes es personal. Y la necesidad de cambiar este tipo de repositorio, surge en el momento que necesitas compartir ese código con mas desarrolladores.

Para crear un repositorio para ti mismo "non-bare", se usa el siguiente comando:

git init project

Para crear un repositorio compartido "bare", es como sigue:

git init --bare project.git

Y convertir un repositorio GIT "non-bare" a "bare"

mv project/.git project.git
git --git-dir=project.git config core.bare true
rm -rf project


Fuentes
What is a bare git repository?
How do I make existing non-bare repository bare?

viernes, 16 de noviembre de 2012

Error ExamDiff is binary, and is different from the file


ExamDiff es una utilidad freeware para Windows que permite comparaciones de archivos. Lo uso cuando estoy en el trabajo que es el
unico lugar donde uso Windows.

Considerando que es una herramienta sencilla, me sorprendió verme contrariado con un mensaje como este:

File :\carpeta\archivoa.txt is binary, and is different from the file
c:\carpeta\archivob.txt




No me voy a desperfilar colocando tres letras mayúsculas, pero eso es lo que se me vino a la cabeza. Ya que ambos archivos eran de texto. De modo que me puse a buscar si algún usuario había pasado por lo mismo, y efectivamente. La solución que daban era editar el archivo con el Notepad y guardarlo en formato Unicode. Pero mi archivo estaba en ese formato, de modo que lo guarde como UFT-8 y el programa lo acepto y pude hacer la comparación.


No es un tema como para profundizar las razones pero esa fue la solución.



Link de la aplicación
http://j.gs/1bC8

martes, 13 de noviembre de 2012

Por si no lo sabes sobre FileZilla

FileZilla es un cliente FTP bastante usado por lo que he visto. Yo lo uso normalmente.

En cierta oportunidad que necesitaba exportar mis cuentas a otro equipo (cosa que hace FileZilla), me di cuenta que el archivo de exportación que es un XML mostraba claramente el usuario y password e Ip de las cuentas FTP. Por lo que si un usuario de este cliente desconoce esa llamemosla vulnerabilidad, puede estar poniendo en riesgo información valiosa al compartir su equipo, a alguien que este al tanto y tenga malas intenciones.



FileZilla es un proyecto Open Source, de modo que cualquiera puede tomar el código fuente, mejorar esa parte (agregando algún método de encriptado) y de esa forma contribuir a este proyecto que es útil para muchas personas. Por mi parte veré si me da el tiempo para hacerlo, pero si no, dejo la botella lanzada.

Link del proyecto
http://j.gs/1aSs

lunes, 12 de noviembre de 2012

Cuando SUBSTR no sirve buenas son las expresiones regulares

[Oracle / SQL] SUBSTR es una función muy útil para recortar cadenas de datos. Pero hay ciertos casos en que se queda corta. Por ejemplo, si necesitas solamente obtener el usuario de un correo electrónico dejando fuera el dominio y la arroba.

El largo de los nombres de usuario varia entonces se debe pensar en algo mas elaborado o ir al grano con las expresiones regulares.

REGEXP_SUBSTR permite extraer una cadena que cumple con una expresión regular.

Ejemplo de uso:
select REGEXP_SUBSTR('m-donoso_2007@dominio.cl','[_a-z0-9-]*') from dual;

Donde
  • m-donoso_2007@dominio.cl es el correo (fake por cierto).
  • [_a-z0-9-]* Es la expresión regular que toma solo los caracteres indicados símbolos -, _, letras minúsculas y números tantas veces como aparezcan en la cadena. Por lo que deja fuera todo lo que esta después de la arroba.
El resultado de arriba da:
m-donoso_2007



Mas información
http://j.gs/1aEh

domingo, 11 de noviembre de 2012

PHP Fatal error: Class 'XSLTProcessor' not found in

Estoy moviendo mis aplicaciones Web PHP a una maquina virtual Linux (Crunchbang) que cree en un MAC. Por lo que al momento de tratar de hacerlas funcionar van apareciendo errores que tienen que ver con herramientas que no están instaladas.

Ejemplo este error del parser XSLT:
PHP Fatal error: Class 'XSLTProcessor' not found in 


La solución (instalar el paquete)
sudo apt-get install php5-xsl

Este paquete (php5-xsl) proporciona un módulo para XSL, el cual uso para hacer transformaciones de archivos XML en PHP. Si quieres mas información pueden consultar este buen articulo:

Using PHP 5's XSL extension to perform XSL Transformations

Creando un repositorio con GIT

Como comente en otro articulo, instale una maquina virtual con Crunchbang. Esta distribución instala GIT  después de consultarlo en el dialogo de configuración (en la instalación). Por esto mismo no voy a hacer un articulo como instalar GIT. Pero si, como necesito crear un repositorio y mantener el control de mi código escribiré acerca de los demás pormenores.

Crear un repositorio desde fuentes que ya existen es super sencillo. Tengo una aplicación Web que se llama radiotaxi y esta en este directorio:
/var/www/radiotaxi 
 
Voy a ese directorio
cd /var/www/radiotaxi

Y comienzo el seguimiento de este proyecto
git init 

Se crea una carpeta oculta con el nombre .git
Initialized empty Git repository in /var/www/radiotaxi/.git/

Los repositorios creados con git init, no son visibles para otros equipos. Para que el repositorio sea visible o este descubierto se debe usar el comando:

git init --bare radiotaxi.git

Agrego los archivos
git add *.php

Agrego las carpetas
git add js/
git add css/
etc...


Subo los fuentes lo cual es parecido a SVN
git commit -m 'Initial Project' 

 
Un comando a tener en cuenta es git status permite saber si te queda algo por subir
git status

Descarga el Libro Pro GIT en varios formatos (PDF, EPUB, mobi) y en varios idiomas:
http://j.gs/1ZXD

sábado, 10 de noviembre de 2012

Maquina virtual visible en la red ( VirtualBox )

Hice una maquina virtual con una distro muy liviana llamada Crunchbang en donde tengo funcionando un servidor Web Apache.
Quiero que las aplicaciones Web publicadas en este servidor puedan ser consultadas desde otros dispositivos mi red (Ipad, iphone, notebooks, etc). Pero eso no es posible ya que no tengo una ip de red dentro de esa maquina.

La configuración por defecto  de parte de VirtualBox es la siguiente en lo que se refiere a la red:
Al revisar la ip con el comando ifconfig en la maquina virtual solo tengo una ip local. (tercera linea en la imagen inet addr:10.0.2.15).


Para disponibilizar la maquina virtual en la red se necesita cambiar de NAT (Network Address Translation) a Adaptador Puente (o Bridged networking).

NAT es un adaptador de red básico útil si solamente se requiere navegar, enviar correos y ese tipo de cosas. Para necesidades mas avanzadas esta el Adaptador Puente.

Ahora al revisar nuevamente la ip de la maquina virtual, esta tiene una que la hace visible en toda mi red (inet addr: 192.168.1.123).


De modo que ahora puedo consultar todas las aplicaciones que publique en esa maquina accediendo por la ip. Para este caso:
http://192.168.1.123/nombreaplicacion


Recursos
Sitio VirtualBox
Info sobre adaptadores de red en VirtualBox

file size exceeded the maximum (PHP / PHPMyAdmin)


Tengo un script sql que pesa 4 MB el cual quiero cargar en phpmyadmin. Pero por defecto el upload de archivos es de 2MB. Por ese motivo la aplicación muestra el siguiente mensaje cuando porfiadamente intento cargar el archivo.



No data was received to import. Either no file name was submitted, or the file size exceeded the maximum size permitted by your PHP configuration. 

¿Como aumentar el tamaño de archivo soportado?

Para eso necesitamos editar el archivo php.ini.

sudo vi /etc/php5/apache2/php.ini
o sudo gedit /etc/php5/apache2/php.ini

Ubicamos la siguiente linea dentro del archivo
upload_max_filesize = 2M

Y la dejamos de la siguiente forma
upload_max_filesize = 5M

Tambien es necesario darle un vistazo a esta linea que en mi caso esta bien.
post_max_size = 8M

Luego de realizar los cambios, reiniciar Apache
sudo /etc/init.d/apache2 restart

El resultado es el siguiente:

Esto fue hecho en una maquina virtual con la distro Crunchbang


Relacionado
Donde esta php.ini en Linux

viernes, 9 de noviembre de 2012

error: key does not contain a section: GIT

Me estoy pasando de hacer control de versiones con Subversion a GIT. Básicamente por moda, y en proyectos personales.

Y como la primera cosa que se hace después de instalar GIT  es indicarle el nombre de usuario y el correo electrónico, esto debido a que cada commit que hagamos necesita esta información. No tarde en generar un error:

error: key does not contain a section:

Estoy leyendo el libro Pro GIT (descarga gratis mas abajo) y las instrucciones son claras:

git config --global user.name "John Doe" 
git config --global user.email "johndoe@example.com"

Pero lo que hice fue entre difícil de explicar e ilógico, véalo con sus propios ojos:


Pero como he dicho anteriormente, si has llegado hasta acá es que también te paso lo mismo o algo similar, y lo que debes hacer es ingresar los datos tal cual la instrucción y lo que cambia lógicamente son los datos entre comillas que son los que necesitas configurar.

Si deseas revisar tu configuración, usa el siguiente comando:
git config --list



Al ver la captura me percato que cree una clave user.marcos la cual supongo no sirve de nada.

Entonces para eliminar la clave indeseada uso el siguiente comando:
git config --global --unset user.marcos 

El resultado al ejecutar nuevamente git config --list




Descarga el Libro Pro GIT en varios formatos (PDF, EPUB, mobi) y en varios idiomas:
http://j.gs/1ZXD

domingo, 4 de noviembre de 2012

Error: TypeError: field.prop is not a function (jQuery-Validation-Engine)

Uso JQuery-Validation-Engine para validar formularios de aplicaciones Web. Cuando empece a implementar esto, seguí no tan al pie de la letra las instrucciones y me encontré con que no funcionaba porque tenia un error.

Error: TypeError: field.prop is not a function

Este error no es tan evidente, ya que se debe acceder a la consola de errores de Firefox para encontrarlo (Mayús+Ctrl+J).

¿Cual es el problema con esto? Al momento de cargar los javascript deje mi antigua versión de Jquery y no la jquery-1.6.min.js que viene en la distribución de JQuery-Validation-Engine.

Al poner la versión jquery-1.6.min.js funciona perfecto.


Los scripts que cargue son los siguientes:



Código de Ejemplo
ValidationEngine Ejemplo