2010
07.13

Beanstalk es un software que permite poner tareas en cola, esto puede ser muy útil a la hora de realizar procesos que requieren mucho tiempo de ejecución y que pueden deteriorar la experiencia del usuario.

Al poner los procesos en cola, nuestra aplicación puede seguir su curso normal mientras se ejecutan las tareas encoladas en segundo plano, sin que el usuario lo note.

Para poder instalarlo en Debian o Ubuntu, debemos descargar la fuente y descomprimirla:

apt-get install libevent-1.4-2 libevent-dev
wget http://xph.us/dist/beanstalkd/beanstalkd-1.4.6.tar.gz
tar xzfv beanstalkd-1.4.6.tar.gz

Y se ejecuta:

beanstalkd -d -l 0.0.0.0 -p 11300

Esto causa que beanstalkd inicie en modo demonio, escuchando todas las direcciones en el puerto 11300.

La utilización de esta herramienta con CakePHP está muy bien explicada .

Con mi propia experiencia puedo aportar algunas cosas:
Enterrar procesos fallidos:

Cuando encolamos un proceso y este falla, podemos eliminarlo definitivamente o enterrarlo, para que luego pueda volver a ser ejecutado por beanstalk. Este método se llama “buri” y se usa más o menos asi:

En un shell de CakePHP (1.3):

 PHP |  copy code |? 
01
02
<?php
03
class EnviarMailShell extends Shell
04
{
05
	var $uses = array('Queue.Job');
06
	var $tubes = array('enviar_mail');
07
 
08
	function main()
09
	{
10
		App::import('Correo');
11
		while (true) {
12
			$job = $this->Job->reserve(array('tube' => $this->tubes));
13
			$correo = new Correo();
14
			if ($correo->EnviarCorreo($job['Job']['id_usuario'])) {
15
				$this->Job->delete();
16
				$this->out('Se ha enviado el correo exitosamente');
17
			} else {
18
				$this->Job->bury(); //En caso de falla, lo enterramos!
19
			}
20
		}
21
	}
22
}
23
?>
24

Volvemos a encolarlo con Kick:

 PHP |  copy code |? 
1
2
ClassRegistry::init('Queue.Job')->kick(array('tube' => 'enviar_mail'));
3

Espero que les sirva.

  • Digg
  • Facebook
  • Delicious
  • Twitter
  • Share/Bookmark
VN:F [1.9.3_1094]
Rating: 10.0/10 (2 votes cast)
2010
07.13

En la nueva versión de CakePHP 1.3, es posible dejar de usar prototype y cambiarse a jQuery gracias a que cake permite seleccionar que motor de javascript vanos a usar, gracias al JsHelper

 'php' |  copy code |? 
1
var $helpers = array('Js' => array('Jquery'));

Por defecto los scripts están en una caché, por lo que deben ser escrito al final de la página:
 'php' |  copy code |? 
1
echo $js->writeBuffer();

Gracias a esto, ya no debemos depender solamente de prototype y scriptaculous, ahora podemos usar nuestro fiel jQuery nativamente con CakePHP.

  • Digg
  • Facebook
  • Delicious
  • Twitter
  • Share/Bookmark
VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
2010
07.12

Esto lo pongo a modo de recordatorio, porque siempre que necesito hacer esto, olvido algún detalle.
Primero que nada, debemos hacer una copia del archivo de configuración Apache /etc/apache2/sites-available/default y renombrarla como queramos, en este caso miblog:

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/miblog

Se debe editar y cambiar la slíneas

<VirtualHost *:80>
	ServerAdmin webmaster@localhost
	ServerName miblog
DocumentRoot /var/www/miblog
<Directory /var/www/miblog/>

Apuntando al directorio que vanos a usar para poner nuestro sitio.

Debemos darle los permisos al directorio que va a alojar nuastro sitio virtual:

sudo chmod 776 -R /var/www/miblog/

Luego agregamos el sitio virtual a Apache:

sudo a2ensite miblog

Y reiniciamos Apache:

sudo /etc/init.d/apache2 restart

Y listo, ahora podemos agregar una entrada en /etc/hosts

127.0.0.1 miblog

Y ya está.

  • Digg
  • Facebook
  • Delicious
  • Twitter
  • Share/Bookmark
VN:F [1.9.3_1094]
Rating: 8.0/10 (1 vote cast)
2010
05.03

Apenas salió la nueva versión de Ubuntu 10.04 LTS actualicé mi maquinita. La verdad es que todo se ve mucho más limpio y bonito, un tema bien logrado y una buena integración de chat y redes sociales, todo bien hasta que volví a encender la máquina, un nefasto mensaje de “An error occured  while mounting /proc/bus/usb” y es una molestia, para solucionar este problema debemos:

  1. Editar /etc/fstab
  2. comentar la línea que dice “none /proc/bus/usb usbfs devgid=123,devmode=644 0 0″ anteponiendo un #
  3. reiniciar el equipo.

Esta línea fué añadida para dar soporte USB a VirtualBox en Karmic y parece que ya no se utiliza.

La solución la encontré en http://ubuntuforums.org/showthread.php?t=1468486

Espero que sirva, a mí me funcionó.

  • Digg
  • Facebook
  • Delicious
  • Twitter
  • Share/Bookmark
VN:F [1.9.3_1094]
Rating: 9.0/10 (1 vote cast)
2010
04.26

Con la inminente llegada de HTML 5 a los navegadores, el uso de flash como estándard para la reproducción multimedia parece estar llegando a su fin.
Open Standard Media Player es un reproductor que utiliza HTML 5 y jQuery poniendo fin a la dependencia de Adobe para reproducir música y vídeo en la red.

Más información en http://www.mediafront.org/project/osmplayer

  • Digg
  • Facebook
  • Delicious
  • Twitter
  • Share/Bookmark
VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
2010
04.14

Explicación sencilla de lo que significa el Software Libre creada por Radialistas Apasionadas y Apasionados

 

  • Digg
  • Facebook
  • Delicious
  • Twitter
  • Share/Bookmark
VN:F [1.9.3_1094]
Rating: 9.0/10 (1 vote cast)
2010
03.30

Hemos vivido uno de los más violentos terremotos del mundo y si hay algo que podemos aprender de esta catástrofe, es que la tecnología no siempre es nuestra aliada.

La madrugada del 27 de febrero a las 3:34 se registró un violento terremoto de 8.8 grados Richter que dejó a nuestro país incomunicado y sumido en la más profunda oscuridad. Nuestra dependencia tecnológica nos hace sumamente vulnerables a un prolongado y generalizado apagón, sumado al deterioro de las líneas telefónicas y antenas de celulares, nuestras comunicaciones quedan completamente interrumpidas.

Nuestra dependencia de la tecnología nos hace tremendamente vulnerables a este tipo de eventos principalmente porque hemos desechado muchas tecnologías antiguas por pensar que son obsoletas.

Las comunicaciones radiales análogas son las primeras tecnologías que resurgen luego de un desastre de magnitud, sólo se necesita un transmisor y la ionosfera para poder propagar la señal a todos los receptores, a diferencia de las transmisiones digitales que utilizan una gran cantidad de estaciones repetidoras que se encargan de distribuir las comunicaciones hacia los receptores. Éste sistema análogo lo utilizan las ya olvidadas radios AM, que se pueden recibir a cientos de kilómetros de distancia sin necesidad de ser re-transmitidas, logrando que podamos escuchar un noticiero transmitido incluso desde otro país.

La masificación de los teléfonos celulares nos ha hecho olvidar que existen los teléfonos fijos, muchas personas no conocían el número de la casa de algún amigo o familiar ya que sólo utilizaban el celular.

Las fuerzas armadas incluso utilizan para sus comunicaciones modernos equipos digitales que requieren una red de repetidores (trunking) dejando de lado las comunicaciones tradicionales hechas en HF.

Creo que no es necesario hablar de Internet, la super carretera de la información simplemente inaccesible sin electricidad.

Creo que no debemos desechar las tecnologías antiguas sólo por ser antiguas, su aplicación en muchos casos, requiere muchísimo menos recursos lo que las hace ideales para enfrentar una catástrofe de magnitud.

  • Digg
  • Facebook
  • Delicious
  • Twitter
  • Share/Bookmark
VN:F [1.9.3_1094]
Rating: 8.0/10 (1 vote cast)
2010
02.13

Hace un mes atrás…

Ya hace un mes que no he podido publicar algo en este blog, la verdad es que no he tenido mucho tiempo, porque temas interesantes no han faltado, el fiasco del iPad, el traspaso de MySQL a Oracle, etc. Lamentablemente, creo que no tendré tiempo suficiente hasta que termine un proyecto personal que estoy desarrollando y que está en etapa pre-alpha, así que me disculpo con aquellos que se han interesado en este blog y espero poder retomarlo lo antes posible.

  • Digg
  • Facebook
  • Delicious
  • Twitter
  • Share/Bookmark
VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)
2010
01.15

Ejercitando un poco, me ha nacido la inquietud de crear un pequeño framework PHP de arquitectura MVC, es una pequeña aproximación a un framework pero debido a su extrema simplicidad, me parece adecuado para aprender un poco sobre esta arquitectura de software.

El MVC (Modelo Vista Controlador) es un estilo de arquitectura de software que se basa en separar la parte lógica (controlador) de la parte visual (vista) y de los datos (modelo). Se utiliza muy a menudo en sistemas web donde la vista es la página, el controlador es el código y el modelo la base de datos (en términos muy superficiales).

La intención de este pequeño proyecto es crear las bases para un framework que nos permita construir nuestro software en base a ésta arquitectura.

Por ahora estoy trabajando en el renderizado de las vistas, me gustaría poder incluir código php dentro de la vista, pero lo que hago hasta ahora es leer un archivo “algo.tpl”, buscar las etiquetas de inserción “{elemento}” y reemplazarlo por el contenido del array $dato(‘elemento’=>’valor’).

Bueno, les dejo mi código para que lo despedacen y me hagan sus comentarios.

TyniMVC
Sitio del proyecto

  • Digg
  • Facebook
  • Delicious
  • Twitter
  • Share/Bookmark
VN:F [1.9.3_1094]
Rating: 8.0/10 (1 vote cast)
2010
01.06

La computación ya llegó a los colegios y su enseñanza es cada vez más difundida. Pero lamentablemente la educación informática que se les entrega a nuestros niños se limita a enseñarles el uso de los productos de una compañía, Microsoft.
No podemos dejar que la educación de nuestros pequeños esté restringida al uso de algunos productos que incluso restringen las libertades de nuestros futuros ciudadanos transformándolos en futuros “clientes”.
El uso de software libre en el aula es una solución práctica y económica a un problema que debe ser resuelto con prontitud, fomenta la independencia tecnológica tanto de educandos como de educadores y constituye una herramienta real para eliminar la brecha digital que existe entre los distintos estratos sociales.

  • Digg
  • Facebook
  • Delicious
  • Twitter
  • Share/Bookmark
VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)