Blog dedicado a la Ingeniería de Software, Redes y OpenSource.
martes, 21 de mayo de 2013
Yii Sharebox + DynamicRes
Escribí una actualización del código fuente de la extensión de Yii Sharebox para que funcione con DynamicRes, ya que por defecto usa CClientScript. El fork del repositorio en GitHub lo pueden encontrar aquí: https://github.com/matiasmagni/yii-sharebox
lunes, 20 de mayo de 2013
Montar FTP en un directorio local en Linux
Instalamos curlftpfs:
Montamos la dirección del recurso FTP que queremos acceder en un directorio local:
En usuario y password escribimos nuestro usuario y contraseña del FTP de nuestro sitio midominio.com.
Ahora podemos, por ejemplo, crear un enlace simbólico a /mnt/ftp/midominio y ponerlo en el root directory de nuestro servidor local:
De esta manera podemos trabajar en el root directory de nuestro sitio como si fuera local.
$ sudo apt-get install curlftpfs
Montamos la dirección del recurso FTP que queremos acceder en un directorio local:
$ sudo mkdir /mnt/ftp$ mkdir /mnt/ftp/midominio $ curlftpfs -o user="usuario:password" ftp://ftp.midominio.com/ /mnt/ftp/midominio
En usuario y password escribimos nuestro usuario y contraseña del FTP de nuestro sitio midominio.com.
Ahora podemos, por ejemplo, crear un enlace simbólico a /mnt/ftp/midominio y ponerlo en el root directory de nuestro servidor local:
$ ln -s /mnt/ftp/midominio /var/www/midominio
De esta manera podemos trabajar en el root directory de nuestro sitio como si fuera local.
miércoles, 8 de mayo de 2013
Mejorar la performance de Netbeans
Este post va dedicado a todos aquellos que estamos cansados de la lentitud de Netbeans. Primero que nada les recomiendo instalar la última versión de Netbeans en inglés (ya que la mayoría de los tutoriales, plugins, actualizaciones, etc., están en ese idioma, lo que nos facilitará seguir las instrucciones) y sólo con el lenguaje de programación con el que vayan a trabajar. Cualquier cosa, en el futuro podrán activar los plugins para otros lenguajes.
Ahora sí podemos seguir con esta lista de recomendaciones.
Tips:
-
Desactivar todos aquellos complementos que no usamos:
- Vamos a Tools -> Plugins -> Installed.
- Activamos el checkbox Show details para que nos muestre los plugins bien detallados.
- Seleccionamos el checkbox del plugin que nos interese desactivar.
- Hacemos click en Deactivate.
- Reiniciamos el IDE.
- Desactivar el escaneo automático:
- Vamos a Tools -> Options -> Miscellaneous -> Files.
- Desactivamos el checkbox de Enable auto-scanning of sources.
También podemos instalar un plugin que nos desactiva esa opción, pero nos pasará nuestra versión del IDE de Stable a Develop Version. Yo lo he hecho y funciona bien.
- Vamos a Tools -> Plugins -> Settings.
- Pulsamos el botón Add y agregamos la url http://deadlock.netbeans.org/hudson/job/nbms-and-javadoc/lastStableBuild/artifact/nbbuild/nbms/updates.xml.gz
- Vamos a Available Plugins y buscamos el plugin SCAN ON DEMAND.
- Pulsamos el checkbox e instalamos.
Tras terminar esto, faltará reiniciar el IDE para que se apliquen los cambios.
CUIDADO, seguramente nos dirá que hay actualizaciones de plugins. Tener en cuenta que hemos pasado a una nueva versión.
Solo les puedo decir que instalar ese plugin ha sido la mejor solución a este problema, ya que el consumo de procesador que rondaba entre los 100% - 200% ahora ha bajado estrepitosamente a 5% - 10%.
Solo les puedo decir que instalar ese plugin ha sido la mejor solución a este problema, ya que el consumo de procesador que rondaba entre los 100% - 200% ahora ha bajado estrepitosamente a 5% - 10%.
martes, 7 de mayo de 2013
Documentar en PHP con ApiGen usando Netbeans 7.3 en Linux
ApiGen es una herramienta para PHP que documenta las clases de nuestro proyecto de una forma muy parecida al Javadoc de Java. También existe phpDocumentor, pero probando ambas me quedé finalmente con ApiGen que tiene una interfaz, a mi gusto, mucho mas rápida para acceder a la información de las clases.
Para instalarla, abrimos una consola con el usuario root y tipeamos:
Si no quieren usar el autodiscover de pear, la opción alternativa sería:
Pero yo les recomiendo usar autodiscover, ya que la instalación es más sencilla de esa manera. Ahora hacemos click izquierdo en nuestro proyecto PHP en Netbeans y nos vamos a Generate documentation > ApiGen. Si no nos genera la documentación automáticamente nos va a aparecer una ventana donde tendremos que decirle la ruta del script generador de ApiGen. Hacemos click en search. A mí que uso Lubuntu me sugiere la ruta /usr/bin/apigen. La ruta podría llegar a variar dependiendo de la distro de Linux que estén usando, si search no funciona, ejecuten este comando para encontrar la ruta:
Para instalarla, abrimos una consola con el usuario root y tipeamos:
# pear config-set auto_discover 1# pear install pear.apigen.org/apigenSi no quieren usar el autodiscover de pear, la opción alternativa sería:
# pear channel-discover pear.apigen.org# pear channel-discover pear.nette.org# pear channel-discover pear.texy.info# pear channel-discover pear.kukulich.cz# pear channel-discover pear.andrewsville.cz# pear install apigen/ApiGenPero yo les recomiendo usar autodiscover, ya que la instalación es más sencilla de esa manera. Ahora hacemos click izquierdo en nuestro proyecto PHP en Netbeans y nos vamos a Generate documentation > ApiGen. Si no nos genera la documentación automáticamente nos va a aparecer una ventana donde tendremos que decirle la ruta del script generador de ApiGen. Hacemos click en search. A mí que uso Lubuntu me sugiere la ruta /usr/bin/apigen. La ruta podría llegar a variar dependiendo de la distro de Linux que estén usando, si search no funciona, ejecuten este comando para encontrar la ruta:
# whereis apigenapigen: /usr/bin/apigen /usr/bin/X11/apigenlunes, 6 de mayo de 2013
Imprimir pantalla en Lubuntu
Abrimos una consola como root y tipeamos:
¡Listo! Ya tenemos el botón Impr pant funcionando en Lubuntu.
# apt-get install gnome-screenshot¡Listo! Ya tenemos el botón Impr pant funcionando en Lubuntu.
Instalar PHPUnit en Linux para su uso en Netbeans 7.3
Ejecutar en una consola logueado como root:
Ahora resta configurar el plugin en netbeans. Nos vamos a Tools > Options. Debería verse así:
Esos son mis paths para Ubuntu, para otras distros de Linux podrían ser diferentes. Para tal caso, ejecutar el comando whereis para saber donde se ubican dichos scripts:
# pear config-set auto_discover 1# pear install pear.phpunit.de/PHPUnit# pear install pear.phpunit.de/PHPUnit_SkeletonGenerator# pear install pear.phpunit.de/DbUnit# pear install pear.phpunit.de/PHP_Invoker# pear install pear.phpunit.de/PHPUnit_Story# pear install pear.phpunit.de/PHPUnit_SeleniumAhora resta configurar el plugin en netbeans. Nos vamos a Tools > Options. Debería verse así:
Esos son mis paths para Ubuntu, para otras distros de Linux podrían ser diferentes. Para tal caso, ejecutar el comando whereis para saber donde se ubican dichos scripts:
# whereis phpunit
phpunit: /usr/bin/phpunit /usr/bin/X11/phpunit /usr/share/man/man1/phpunit.1.gz$ whereis phpunit-skelgen
phpunit-skelgen: /usr/bin/phpunit-skelgen /usr/bin/X11/phpunit-skelgen
martes, 20 de noviembre de 2012
Activar xdebug en PHP
Configuración en php.ini para activar xdebug:
zend_extension="/usr/lib/php5/20090626/xdebug.so"
xdebug.show_local_vars=On
xdebug.dump.SERVER=HTTP_HOST, SERVER_NAME
xdebug.dump_globals=On
xdebug.collect_params=4
xdebug.show_exception_trace=On
viernes, 3 de junio de 2011
Configurar un servidor LEMP (Linux, Nginx, MySQL, PHP5)
1. Instalamos el servidor web nginx:
# apt-get install nginx
Iniciamos el servicio:
# /etc/init.d/nginx start
2. Instalamos MySQL:
# apt-get install mysql-server mysql-client
3. Instalamos PHP5:
# apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-json
Editamos el archivo /etc/php5/cgi/php.ini:
# vim /etc/php5/cgi/php.ini
Agregamos la siguiente línea o la descomentamos en el caso de que ya exista:
cgi.fix_pathinfo = 1
4. Instalamos Lighttpd:
Debemos instalar Lighttpd para proporcionar una interfaz Fast CGI del intérprete de PHP, ya que no viene incluida con Nginx.
# apt-get install lighttpd
Lo quitamos del arranque:
# update-rc.d -f lighttpd remove
5. Configuramos la interfaz Fast CGI:
Creamos el script de inicio:
# vim /etc/init.d/php-fastcgi
Escribimos las siguientes lineas de código dentro del mismo:
#! /bin/sh
### BEGIN INIT INFO
# Provides: php-fastcgi
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start and stop php-cgi in external FASTCGI mode
# Description: Start and stop php-cgi in external FASTCGI mode
### END INIT INFO
# Author: Kurt Zankl <[EMAIL PROTECTED]>
# Do NOT "set -e"
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="php-cgi in external FASTCGI mode"
NAME=php-fastcgi
DAEMON=/usr/bin/php-cgi
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
PHP_CONFIG_FILE=/etc/php5/cgi/php.ini
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
# If the daemon is not enabled, give the user a warning and then exit,
# unless we are stopping the daemon
if [ "$START" != "yes" -a "$1" != "stop" ]; then
log_warning_msg "To enable $NAME, edit /etc/default/$NAME and set START=yes"
exit 0
fi
# Process configuration
export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS
DAEMON_ARGS="-q -b $FCGI_HOST:$FCGI_PORT -c $PHP_CONFIG_FILE"
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
|| return 1
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON \
--background --make-pidfile --chuid $EXEC_AS_USER --startas $DAEMON -- \
$DAEMON_ARGS \
|| return 2
}
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE > /dev/null # --name $DAEMON
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
# Wait for children to finish too if this is a daemon that forks
# and if the daemon is only ever run from this initscript.
# If the above conditions are not satisfied then add some other code
# that waits for the process to drop all resources that could be
# needed by services started subsequently. A last resort is to
# sleep for some time.
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
# Many daemons don't delete their pidfiles when they exit.
rm -f $PIDFILE
return "$RETVAL"
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
restart|force-reload)
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 3
;;
esac
Le damos permisos de ejecución:
# chmod +x /etc/init.d/php-fastcgi
Ahora creamos el archivo de configuración:
# vim /etc/default/php-fastcgi
Y agregamos lo siguiente:
START=yes # Which user runs PHP? (default: www-data) EXEC_AS_USER=www-data # Host and TCP port for FASTCGI-Listener (default: localhost:9000) FCGI_HOST=localhost FCGI_PORT=9000 # Environment variables, which are processed by PHP PHP_FCGI_CHILDREN=4 PHP_FCGI_MAX_REQUESTS=1000
Agregamos la interfaz Fast CGI en el arranque del sistema:
# update-rc.d php-fastcgi defaults
6. Configuramos Nginx y el vhost por defecto:
# vim /etc/nginx/sites-available/default
En el virtual host por defecto cambiamos las lineas de código para que se vean así:
server_name localhost;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
include fastcgi_params;
}
Reiniciamos el servidor:
# /etc/init.d/nginx restart
Por último agregamos el servidor web al arranque del sistema:
# update-rc.d nginx defaults
lunes, 16 de mayo de 2011
Cambiar el tamaño a una lista de imágenes en Linux
Bueno este artículo está destinado a aquellos desarrolladores web que como yo se encuentran a menudo con el problema de cambiar el tamaño de una lista de imágenes de una sóla vez, ya sea porque un módulo de una galería trabaja con cierto tamaño en las imágenes o para reducir el tráfico en su sitio.
Primero instalamos imagemagick:
Aquí les dejo el script que cambia el tamaño de las imágenes contenidas en un directorio y las guarda dentro del directorio images-resized:
Ejecución del script:
$ ./resize.sh <extension_archivos> <dimension>
Ejemplo de ejecución del script:
$ ./resize.sh jpg 640x480
Primero instalamos imagemagick:
sudo apt-get install imagemagick
Aquí les dejo el script que cambia el tamaño de las imágenes contenidas en un directorio y las guarda dentro del directorio images-resized:
mkdir images-resized
for file in *.$1
do
convert "$file" -resize $2\! +profile '*' "images-resized/${file%%.$1}.$1"
doneEjecución del script:
$ ./resize.sh <extension_archivos> <dimension>
Ejemplo de ejecución del script:
$ ./resize.sh jpg 640x480
jueves, 14 de enero de 2010
Como eliminar los archivos Thumbs.db en Windows
Esto es totalmente útil cuando se trabaja con SVN y no queremos hacer commit de esos molestos archivos.
- Inicio > Ejecutar...
- cmd
- attrib -a -s -h /s thumbs.db (Tarda un tiempo considerable el comando en terminar)
- Abrir el explorador de Windows.
- Herramientas > Opciones de Carpeta ... ficha Ver.
- En la sección bajo Configuración avanzada, buscar la opción No alojar en caché las vistas en miniatura.
- Presiona Aceptar.
- Ahora realizar una búsqueda de los archivos thumbs.db existentes en tu PC y eliminarlos.
Suscribirse a:
Entradas (Atom)
