<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JOSEDU - WEB &#187; linux</title>
	<atom:link href="http://www.josedu.com/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.josedu.com</link>
	<description>Un ratito tranquilo...</description>
	<lastBuildDate>Mon, 22 Mar 2010 19:04:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Video restaurando Aula con DRBL (Multicast)</title>
		<link>http://www.josedu.com/2010/03/22/restaurando-aula-drbl-multicas/</link>
		<comments>http://www.josedu.com/2010/03/22/restaurando-aula-drbl-multicas/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 18:46:33 +0000</pubDate>
		<dc:creator>josedu</dc:creator>
				<category><![CDATA[drbl]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[multicast]]></category>
		<category><![CDATA[restore]]></category>

		<guid isPermaLink="false">http://www.josedu.com/?p=153</guid>
		<description><![CDATA[Vídeo casero  que tomé el año pasado en una de mis primeras restauraciones con DRBL con multicast del aula del colegio.
Se restauraron 17 ordenadores. La imagen era de un Windows XP de unos 4 gigas comprimidad (11 descomprimida). Tardo en transferir toda la imagen por multicast unos 4 minutos, para posteriormente reiniciar los ordenadores y  [...]]]></description>
			<content:encoded><![CDATA[<p>Vídeo casero  que tomé el año pasado en una de mis primeras restauraciones con DRBL con multicast del aula del colegio.</p>
<p>Se restauraron 17 ordenadores. La imagen era de un Windows XP de unos 4 gigas comprimidad (11 descomprimida). Tardo en transferir toda la imagen por multicast unos 4 minutos, para posteriormente reiniciar los ordenadores y  mediante el DRBL-WINROLL , realizar el consiguiente reincio para cambiarles el SID y el nombre de la máquina, y ya estar operativos. Total de la operación unos 10-15 minutos.</p>
<p><object width="500" height="400"><param name="movie" value="http://www.youtube.com/v/ut9wA3oesWY&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/ut9wA3oesWY&#038;fs=1" type="application/x-shockwave-flash" width="500" height="400" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.josedu.com/2010/03/22/restaurando-aula-drbl-multicas/" target="_blank"><img src="http://www.josedu.com/blog/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.josedu.com/2010/03/22/restaurando-aula-drbl-multicas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mensajería instantanea en consola</title>
		<link>http://www.josedu.com/2009/11/25/mensajeria-instantanea-en-consola/</link>
		<comments>http://www.josedu.com/2009/11/25/mensajeria-instantanea-en-consola/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 21:24:27 +0000</pubDate>
		<dc:creator>josedu</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[centerim]]></category>
		<category><![CDATA[screen]]></category>

		<guid isPermaLink="false">http://www.josedu.com/?p=134</guid>
		<description><![CDATA[La mensajería instantanea es una de las utilidades que siempre estamos acostumbrados a utilizar con interfaz gráfica. Pero el otro día se me ocurrió hacer pruebas con algun cliente de mensajería instantanea para consola. El programa elegido fue centerim.
Centerim es un cliente de mensajería multiprotocolo, el cual soporta: msn, jabber, icq, irc, etc. Soporta también [...]]]></description>
			<content:encoded><![CDATA[<p>La mensajería instantanea es una de las utilidades que siempre estamos acostumbrados a utilizar con interfaz gráfica. Pero el otro día se me ocurrió hacer pruebas con algun cliente de mensajería instantanea para consola. El programa elegido fue <strong>centerim.</strong></p>
<p>Centerim es un cliente de mensajería multiprotocolo, el cual soporta: msn, jabber, icq, irc, etc. Soporta también el envío de urls y envío de sms. El programa, como tal, pues bueno, interfaz basada en ncurses, y bastante fácil de manejar y configurar. Pero el motivo de la instalación no era solo probar el cliente de mensajeria para chatear, sino para cosas más interesantes, como envío mensajes del sistema a mis cuentas de chat para recibir algún mensaje urgente.</p>
<p>Lo que en  principio parece algo fácil, ya que el en el man de centerim tenemos un ejemplo de como enviar mensajes desde linea de comandos, la cosa se complica, cuando los mensajes que enviamos desde línea de comandos se quedan en cola de mensajes ya que no se envían si el programa no está en marcha. Veamos un ejemplo de como enviar un mensaje, y después abordaremos el tema de dejar el programa en marcha.</p>
<p>Ejemplo:</p>
<p>$ echo &#8220;hola&#8221; | centerim -s msg -p jab -t cuenta_destino</p>
<p>la sintaxis es clara:</p>
<p>-s msg (que enviamos un msg)</p>
<p>-p jab (protocolo q utilizamos, en esta caso jabber)</p>
<p>-t cuenta_destino (a quien lo queremos enviar)</p>
<p>Vale, ahora viene el problema, de que si queremos que nos lleguen los mensajes, el centerim, debe estar en marcha. Lo primero que se me ocurrió, es poner a centerim en background y lanzado con nohup, para poder abandonar la consola. La cosa no funcionó, en el momento que centerim pasa a background, se detiene la ejecución, y no acepta nada.</p>
<p>Así que me acordé de mi viejo amigo el comando : screen. Para el que no lo conozca, screen te permite abrir terminales virtuales dentro de la propia terminal, las cuales se pueden abandonar con los programas en ejecución. Los parámetros de screen que nos interesan serían: &#8220;-d -m&#8221;, los cuales inician el screen en background, por lo tanto si ejecutamos:</p>
<p>$ screen -d -m -q -t &#8220;chat&#8221; centerim-utf8</p>
<p>tendremos el centerim funcionando y en background como queríamos.</p>
<p>Ahora ya tenemos una via más de comunicación  a agregar a nuestros scripts aparte del tradicional mail.</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.josedu.com/2009/11/25/mensajeria-instantanea-en-consola/" target="_blank"><img src="http://www.josedu.com/blog/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.josedu.com/2009/11/25/mensajeria-instantanea-en-consola/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jugando con los videos</title>
		<link>http://www.josedu.com/2009/07/24/jugando-con-los-videos/</link>
		<comments>http://www.josedu.com/2009/07/24/jugando-con-los-videos/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 17:43:45 +0000</pubDate>
		<dc:creator>josedu</dc:creator>
				<category><![CDATA[multimedia]]></category>
		<category><![CDATA[formatos]]></category>
		<category><![CDATA[tamaño]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.josedu.com/?p=91</guid>
		<description><![CDATA[Recientemente he adquirido una cámara de video para llevar encima de la moto, y debido a sus caracteristicas, me he visto forzado a hacer uso de los programas de transformación de video para cambiar el tamaño y la calidad del video y asi rebajar el peso de estos. La camarita en cuestión aunque es pequeña, es matona, y tiene la "pega" de guardar los videos en un formato de compresión pobre, MJPEG a un tamaño de 512x384. Esto produce hace que un video de 56 min ocupe la nada despreciable tamaño de 2 Gigas. ]]></description>
			<content:encoded><![CDATA[<p>Recientemente he adquirido una cámara de video para llevar encima de la moto, y debido a sus caracteristicas, me he visto forzado a hacer uso de los programas de transformación de video para cambiar el tamaño y la calidad del video y asi rebajar el peso de estos. La camarita en cuestión aunque es pequeña, es matona, y tiene la &#8220;pega&#8221; de guardar los videos en un formato de compresión pobre, MJPEG a un tamaño de 512&#215;384. Esto produce hace que un video de 56 min ocupe la nada despreciable tamaño de<strong> 2 Gigas. </strong></p>
<p>Así que me he tenido que poner manos a la obra, y hacer uso de dos programas de consola (donde se ponga la consola que se quite lo demás), mencoder y ffmpeg. No voy a entrar en detalle de como instalar estos programas en linux, en ubuntu y derivadas de debian, no es más complicado que apt-get install y el nombre de los programas, y como mucho agregar alguna librería opcional.</p>
<p>Primeramente decir, que nunca me había visto ante la tesitura de hacer este tipo de transformaciones salvo algún video para meter al móvil, pero nada que mo obligara el uso continuado de estos programas. Es por esto, que los ejemplos que aquí pongo son por ahora muy básicos (aunque efectivos), pero no dudeis que les voy a sacar miga haciendo scripts más complejos para hacer automatizaciones y proceso de colas de videos. Dicho esto, manos a la obra.</p>
<p><strong>mencoder :</strong></p>
<p>El primer programa que he encontrado googleando, y que ya me ha resuelto el primer problema. Convertir a un codec mas benevolente con el tamaño, digamos Xvid:</p>
<p><code>mencoder videoEntrada.AVI -ovc xvid -oac mp3lame -xvidencopts bitrate=765 -o videoSalida.avi</code></p>
<p>Creo que el comando no necesita mucha explicación pero bueno</p>
<p><strong>-ovc xvid : </strong>Codec de Video a aplicar<br />
<strong>-oac mp3lame: </strong>Codec de Audio<br />
<strong>-xvidencopt bitrate=765 </strong>: Bitrate que aplica al codec (cuanto mayor bitrate mejor calidad pero mas peso. Prometo profundizar en este parámetro que da mucha miga)<br />
<strong>-o videoSalida.avi :</strong> El nombre del video de salida.</p>
<p>Dependiendo la máquina que tengais y la duración del video, pues evidentemente os tardara más o menos. Por poner un ejemplo en mi máquina (Athlon X2 3800+), un video de 15 min de duración y 500 Mb de peso, ha tardado 9 min en comprimirlo y se ha quedado en 81 Mb.</p>
<p>Seguimos teniendo un fichero bastante gordito, si por ejemplo lo queremos al móvil o al youtube. Lo que más rebaja el peso después del codec, es cambiarle el tamaño del video (para que queremos un video de 500 pixeles para ver en una pantallita de google o en un recuadro de youtube (aparte que el formato de youtube nativo es 320&#215;240). Para cambiar el tamaño he hecho uso del ffmpeg</p>
<p><strong>ffmpeg: </strong></p>
<p>Primeramente decir, que aqui, he tenido problemas, con las librerias que tenía instaladas en ubuntu, porque al parecer para trabajar con xvid, mp4, etc, no las tiene por defecto. Esto lo he solucionado con:</p>
<p><code>sudo apt-get install libavcodec-unstripped-51</code></p>
<p>El ffmpeg <strong>es una bestia</strong> de modificadores que admite, y hay que digerirlo despacito y con cuidado. Quien controle esto, es el puto rey, y también prometo hacer algun ejemplo más avanzadito aprovechando todas las bondades de este programa</p>
<p>Para el cambio de tamaño he usado el siguiente comando:</p>
<p><code>ffmpeg -i videoentrada.avi -ar 22050 -s 320x240 videosalida.avi</code><br />
<strong>-ar 22050: </strong>[audio resample], vamos cambiamos la calidad del audio. Si vuestro video no tiene audio, no haria falta<br />
<strong>-s 320&#215;240:</strong> Nueva resolución.</p>
<p>El video anterior, tratado con esta &#8220;medicina&#8221;, lo ha dejado en unos adorables 33 Mb de peso, que no están nada mal, para un video de 15 min.</p>
<p>Y ahora el remate final. Youtube solo deja subir videos de 10 minutos de duración.¿ Cómo hacemos para cortar el video con estas herramientas ?. Aqui tenemos un ejemplo:</p>
<p>Cortamos final de posicion 10 min:</p>
<p>mencoder -endpos 00:10:00 -ovc copy -oac copy video.avi -o video1.avi</p>
<p>Desde el minuto 10 hasta el final:</p>
<p>mencoder -ss 0:10:00 -oac copy -ovc copy video.avi -o video2.avi</p>
<p>Seguiré produndizando en apasionante mundo, y prometo traer comandos y scripts más trabajados.</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.josedu.com/2009/07/24/jugando-con-los-videos/" target="_blank"><img src="http://www.josedu.com/blog/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.josedu.com/2009/07/24/jugando-con-los-videos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalacion de un servidor RDP (Terminal Server) en linux</title>
		<link>http://www.josedu.com/2009/07/10/instalacion-de-un-servidor-rdp-terminal-server-en-linux/</link>
		<comments>http://www.josedu.com/2009/07/10/instalacion-de-un-servidor-rdp-terminal-server-en-linux/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 15:10:33 +0000</pubDate>
		<dc:creator>Tomeu Roig</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[sistemas]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[rdp]]></category>
		<category><![CDATA[terminal server]]></category>

		<guid isPermaLink="false">http://www.josedu.com/?p=78</guid>
		<description><![CDATA[la cuestion era como acceder las Xwindows de un windows sin muchas historias, he incluso utilizando una herramienta ya existente en windows, como por ejemplo el cliente de terminal server.
Pues existe una implementacion del protocolo RDP para un servidor en linux http://xrdp.sourceforge.net y vamos a instalarla en un servidor centos 5.3, nos descargarmos   
wget [...]]]></description>
			<content:encoded><![CDATA[<p>la cuestion era como acceder las Xwindows de un windows sin muchas historias, he incluso utilizando una herramienta ya existente en windows, como por ejemplo el cliente de terminal server.</p>
<blockquote><p>Pues existe una implementacion del protocolo RDP para un servidor en linux<em><strong> http://xrdp.sourceforge.net </strong></em>y vamos a instalarla en un servidor centos 5.3, nos descargarmos  <em><strong> </strong></em></p>
<p><em><strong>wget http://downloads.sourceforge.net/sourceforge/xrdp/xrdp-0.4.1.tar.gz?use_mirror=puzzle </strong></em></p>
<p><em><strong></strong></em>y la descomprimimos<strong><em> tar zxvf xrdp-0.4.1.tar.gz .</em></strong></p></blockquote>
<p>Antes de hacer make y make install tenemos que añadir los librerias de desarrollo para que nos compile bien son:</p>
<p style="padding-left: 30px;"><em>yum install openssl-devel.x86_64( nos descarga tb la dependencias)</em></p>
<p style="padding-left: 30px;"><em>yum install pam-devel.x86_64</em></p>
<p>Y despues ya podemos realizar el<strong> <em>make</em> </strong>y <em><strong>make install</strong></em>.</p>
<p>Solo nos falta lanzar el proceso y ponerlo para que arranque automatico y dar permisos a los usuarios. Vamos alla:</p>
<p>Lanzar el proceso manual:</p>
<p style="padding-left: 30px;"><em>/usr/local/xrdp/xrdp_control.sh</em></p>
<p>Ponerlo para que arranque automaticamente (en centos)</p>
<p style="padding-left: 30px;"><em>cp /usr/local/xrdp/xrdp_control.sh  /etc/init.d/xrdp_control</em></p>
<p style="padding-left: 30px;"><em>chkconfig &#8211;add xrdp_control</em></p>
<p style="padding-left: 30px;"><em>chkconfig &#8212; level 35 xrdp_control on</em></p>
<p style="padding-left: 30px;"><em>service xrdp_control start</em></p>
<p>Y por ultimo solo nos falta añadir los usuarios al grupo rdusers</p>
<p style="padding-left: 30px;"><em>usermod -G rdusers troig</em></p>
<p>(Para root, hay que darle antes permisos para poder entrar en el interfaz grafico y añadirlo al grupo rdusers)<br />
Os dejo una captura.<img class="aligncenter size-medium wp-image-83" title="captura_ts_centos1" src="http://www.josedu.com/blog/wp-content/uploads/2009/07/captura_ts_centos1-300x235.jpg" alt="captura_ts_centos1" width="300" height="235" /></p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.josedu.com/2009/07/10/instalacion-de-un-servidor-rdp-terminal-server-en-linux/" target="_blank"><img src="http://www.josedu.com/blog/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.josedu.com/2009/07/10/instalacion-de-un-servidor-rdp-terminal-server-en-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comandos básicos mercurial</title>
		<link>http://www.josedu.com/2009/05/20/comandos-basicos-hg/</link>
		<comments>http://www.josedu.com/2009/05/20/comandos-basicos-hg/#comments</comments>
		<pubDate>Wed, 20 May 2009 18:58:57 +0000</pubDate>
		<dc:creator>josedu</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[control versiones]]></category>
		<category><![CDATA[mercurial]]></category>

		<guid isPermaLink="false">http://www.josedu.com/?p=62</guid>
		<description><![CDATA[Los comandos  más básicos posibles para hacer una revisión sencilla, sería utilizar los siguientes comandos:
hg status (vemos el estado actual, aqui podemos hacer hg add o hg del para quitar o poner los archivos que queremos en la revisión)
 hg commit (reflejamos nuestra revisión al repositorio local nuestro)
Ahora podemos subir los cambios de nuestro repositorio [...]]]></description>
			<content:encoded><![CDATA[<p>Los comandos  más básicos posibles para hacer una revisión sencilla, sería utilizar los siguientes comandos:</p>
<p style="padding-left: 30px;"><em>hg status</em> (vemos el estado actual, aqui podemos hacer hg add o hg del para quitar o poner los archivos que queremos en la revisión)</p>
<p style="padding-left: 30px;"><em> hg commit</em> (reflejamos nuestra revisión al repositorio local nuestro)</p>
<p>Ahora podemos subir los cambios de nuestro repositorio local a otro repositorio remoto, por ejemplo:</p>
<p style="padding-left: 30px;"><em>hg push ssh://usuario@dominio.com//ruta/al/repositorio/</em></p>
<p>Yo utilizo el método por ssh, pero se puede también por http.</p>
<p>Con esto tendríamos actualizado el repositorio, pero no el directorio de trabajo, para esto tendríamos que hacer un</p>
<p style="padding-left: 30px;"><em>hg update</em></p>
<div>Si queremos comprobar en que versión nos encontramos, en cada repositorio podemos ejecutar:</div>
<div></div>
<div style="padding-left: 30px;"><em>hg tip</em></div>
<div style="padding-left: 30px;"><em><br />
</em></div>
<div>Si por el contrario quisieramos obtener de un repositorio remoto los últimos cambios, sería el comando <em>hg pul</em><em>l</em> (el contrario al push, logicamente). Evidentemente para actualizar posteriormente el directorio de trabajo, habría que ejecutar <em>hg update</em></div>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.josedu.com/2009/05/20/comandos-basicos-hg/" target="_blank"><img src="http://www.josedu.com/blog/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.josedu.com/2009/05/20/comandos-basicos-hg/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Aula con DRBL-WINROLL</title>
		<link>http://www.josedu.com/2009/05/15/aula-drbl-winroll/</link>
		<comments>http://www.josedu.com/2009/05/15/aula-drbl-winroll/#comments</comments>
		<pubDate>Fri, 15 May 2009 07:39:19 +0000</pubDate>
		<dc:creator>josedu</dc:creator>
				<category><![CDATA[drbl]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[drbl-winroll]]></category>

		<guid isPermaLink="false">http://www.josedu.com/?p=41</guid>
		<description><![CDATA[Una de las tareas que he tenido quer realizar para el mantenimiento del aula del cole para que funcione con un servidor DRBL es preparar los equipos con Microsoft Windows para que una vez restauradas las imagenes de los equipos con el modo clonezilla puedan renombrarse los equipos con un patrón determinado e integrarse en [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las tareas que he tenido quer realizar para el mantenimiento del aula del cole para que funcione con un servidor DRBL es preparar los equipos con Microsoft Windows para que una vez restauradas las imagenes de los equipos con el modo clonezilla puedan renombrarse los equipos con un patrón determinado e integrarse en un grupo de trabajo, o renovar el SID.</p>
<p>Afortunadamente, con DRBL, tenemos una extensión en particular para los equipos que funcionan con Microsoft Windows, se llama DRBL-WINROLL. Lo podemos encontrar <a href="http://www.drbl-winroll.org">aquí</a>.</p>
<p>La instalación no tiene mayor complicación si seguimos la guía de instalación.</p>
<p>La única observación que podría hacer es que si hemos elegido la instalación en español, los comandos para interactuar desde el server a los clientes winroll mediante ssh, el usuario es administrador y no administrator que tendría por defecto. En mi caso esto me ha producido problemas, porque los comandos que tiene el DRBL, para por ejemplo apagar los ordenadores, intentan lanzar el comando con administrator y da error.  Creo que existe un fichero de configuración para cambiar el usuario que buscar por defecto el DRBL-SERVER (vamos sería lo lógico), pero yo he creado un pequeñito script, para apagar los ordenadores. Este es el script:</p>
<p><code><br />
#!/bin/bash<br />
#SCRIPT PARA EL APAGADO DEL AULA CON CLIENTES WINROLL<br />
ARCHIVO_CON_IPS='/etc/drbl/IP_HOST_TABLE';</code><br />
<code><br />
#######<br />
LISTA=$(cat $ARCHIVO_CON_IPS | awk '{print $1;}' | grep 192);<br />
</code><br />
<code><br />
for i in $LISTA; do<br />
echo "Apagando ..." $i;<br />
ssh administrador@$i "shutdown /t 1 /s /f /c \"Apagando equipo\"" &amp;<br />
</code><br />
<code><br />
done</code></p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.josedu.com/2009/05/15/aula-drbl-winroll/" target="_blank"><img src="http://www.josedu.com/blog/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.josedu.com/2009/05/15/aula-drbl-winroll/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>script de bash para generar galería de fotos web</title>
		<link>http://www.josedu.com/2009/05/07/script-de-bash-para-generar-galeria-de-fotos-web/</link>
		<comments>http://www.josedu.com/2009/05/07/script-de-bash-para-generar-galeria-de-fotos-web/#comments</comments>
		<pubDate>Thu, 07 May 2009 10:56:44 +0000</pubDate>
		<dc:creator>josedu</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.josedu.com/?p=29</guid>
		<description><![CDATA[Un simple script de bash, que genera las imagenes redimensionadas (normal,miniatura) del origen de un directorio, y genera el XML correspondienta para la galería flash que dispongo que utiliza dicho XML.
Hago uso para comprimir las imagenes del comando convert, una de las funciones que vienen con Imagemagick. El resto no es más que bash scripting.

#!/bin/bash
#Este [...]]]></description>
			<content:encoded><![CDATA[<p>Un simple script de bash, que genera las imagenes redimensionadas (normal,miniatura) del origen de un directorio, y genera el XML correspondienta para la galería flash que dispongo que utiliza dicho XML.</p>
<p>Hago uso para comprimir las imagenes del comando convert, una de las funciones que vienen con <a title="Imagemagick" href="http://www.imagemagick.org/script/index.php" target="_blank">Imagemagick</a>. El resto no es más que bash scripting.</p>
<p><code><br />
#!/bin/bash<br />
#Este script se utiliza para la generación de un album de fotos<br />
#Version 0.44<br />
#<br />
#<br />
# * $1 --&gt; Ruta Directorio Origen Fotos<br />
# * $2 --&gt; Titulo Album<br />
# * $3 --&gt; Descripcion Album<br />
# * $4 --&gt; Fichero XML<br />
</code><br />
<code><br />
TituloAlbum=$2;<br />
</code><br />
<code><br />
DescripcionAlbum=$3;<br />
FicheroXML=$4;<br />
</code><br />
<code><br />
RutaDirectorioFotosOrigen=$1;<br />
RutaDirectorioAlbumDestino=".";<br />
</code><br />
<code><br />
RutaDirectorioAlbum=$RutaDirectorioAlbumDestino/$TituloAlbum;<br />
RutaDirectorioAlbumSlides=$RutaDirectorioAlbum/slides/;<br />
RutaDirectorioAlbumThumbs=$RutaDirectorioAlbum/thumbs/;<br />
</code><br />
<code><br />
# Borramos el directorio si previamente se habia creado<br />
rm -rf $RutaDirectorioAlbum;<br />
</code><br />
<code><br />
# Creamos los directorios destino<br />
mkdir $RutaDirectorioAlbum;<br />
mkdir $RutaDirectorioAlbumSlides;<br />
mkdir $RutaDirectorioAlbumThumbs;<br />
</code><br />
<code><br />
# Creamos el inicio del xml<br />
salida="\n\n";<br />
salida=$salida"\n";<br />
</code><br />
<code><br />
imagenes=$(find "$RutaDirectorioFotosOrigen" -iname "*.jpg" -printf "%f\n");<br />
</code><br />
<code><br />
for i in $imagenes; do<br />
printf "Procesando : "$i;<br />
convert "$RutaDirectorioFotosOrigen/$i" -resize 180x180 "$RutaDirectorioAlbumThumbs/$i";<br />
printf "...generado thumbnail...";<br />
convert "$RutaDirectorioFotosOrigen/$i" -resize 640x640 "$RutaDirectorioAlbumSlides/$i";<br />
printf "...generado slide...";<br />
salida=$salida"<img src="\" alt="" />\n";<br />
printf "...generado XML...";<br />
printf "....OK\n";<br />
done<br />
salida=$salida"\n\n";<br />
</code><br />
<code><br />
#Volcamos el XML a un fichero<br />
</code><br />
<code><br />
if [ -z $FicheroXML ]; then<br />
echo "N0 existe argumento de fichero XML. Agregando a album.xml";<br />
echo -e $salida &gt;&gt; album.xml;<br />
else<br />
echo "SI Existe argumento de fichero XML. Agregando a "$FicheroXML;<br />
echo -e $salida &gt;&gt; $FicheroXML;<br />
fi<br />
echo "Proceso finalizado !!!";<br />
</code></p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.josedu.com/2009/05/07/script-de-bash-para-generar-galeria-de-fotos-web/" target="_blank"><img src="http://www.josedu.com/blog/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.josedu.com/2009/05/07/script-de-bash-para-generar-galeria-de-fotos-web/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>script básico para hacer copia de seguridad de una base de datos en postgres local y remotamente</title>
		<link>http://www.josedu.com/2009/05/06/script-basico-para-hacer-copia-de-seguridad-de-una-base-de-datos-en-postgres-local-y-remotamente/</link>
		<comments>http://www.josedu.com/2009/05/06/script-basico-para-hacer-copia-de-seguridad-de-una-base-de-datos-en-postgres-local-y-remotamente/#comments</comments>
		<pubDate>Wed, 06 May 2009 19:27:17 +0000</pubDate>
		<dc:creator>josedu</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.josedu.com/2009/05/06/script-basico-para-hacer-copia-de-seguridad-de-una-base-de-datos-en-postgres-local-y-remotamente/</guid>
		<description><![CDATA[#!/bin/bash
export RSYNC_RSH=&#8221;ssh -o Compression=yes&#8221;;
DESTINOLOCAL=&#8221;/backups/db/&#8221;
DESTINOREMOTO=&#8221;/backups/db/ordenador-de-pepito/&#8221;
#borramos los ficheros mas viejos que 30 dias del ordenador local.
find $DESTINOLOCAL -mtime +30 -exec rm {} \;
PGPASSWORD=&#8221;Passworddelabasededatos&#8221;;
export PGPASSWORD;
#ponemos un nombre basado en la fecha
fecha=`date &#8216;+%d&#8217;-'%m&#8217;-'%Y&#8217;__&#8217;%H&#8217;`
NOMBRE=&#8221;db-$fecha.bz2&#8243;
#Hacemos el dump de la base de datos y a su vez, la comprimimos
pg_dump -U usuario_db basededatosacopiar &#124; bzip2 &#62; $DESTINOLOCAL/$NOMBRE
#Aqui tenemos dos maneras de subirlo al [...]]]></description>
			<content:encoded><![CDATA[<p>#!/bin/bash<br />
export RSYNC_RSH=&#8221;ssh -o Compression=yes&#8221;;<br />
DESTINOLOCAL=&#8221;/backups/db/&#8221;<br />
DESTINOREMOTO=&#8221;/backups/db/ordenador-de-pepito/&#8221;<br />
#borramos los ficheros mas viejos que 30 dias del ordenador local.</p>
<p>find $DESTINOLOCAL -mtime +30 -exec rm {} \;</p>
<p>PGPASSWORD=&#8221;Passworddelabasededatos&#8221;;<br />
export PGPASSWORD;</p>
<p>#ponemos un nombre basado en la fecha<br />
fecha=`date &#8216;+%d&#8217;-'%m&#8217;-'%Y&#8217;__&#8217;%H&#8217;`<br />
NOMBRE=&#8221;db-$fecha.bz2&#8243;<br />
#Hacemos el dump de la base de datos y a su vez, la comprimimos<br />
pg_dump -U usuario_db basededatosacopiar | bzip2 &gt; $DESTINOLOCAL/$NOMBRE</p>
<p>#Aqui tenemos dos maneras de subirlo al servidor remoto:<br />
# &#8211; con un rsync: simplemente sincroniza las carpetas, para mi más seguro. Más cómodo para el mantenimiento de las carpetas<br />
# &#8211; con un scp (lo he dejado comentado), lanzariamos el find en remoto, o hariamos un script en la propia máquina remota<br />
#        scp  $DESTINOLOCAL/$NOMBRE usuario@servidorRemoto:$DESTINOREMOTO<br />
#        ssh &#8211; usuario@servidorremoto &#8220;find /home/josedu -mtime 30&#8243;</p>
<p>rsync -vauHLX &#8211;numeric-ids $DESTINOLOCAL usuario@servidorRemoto:$DESTINOREMOTO</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.josedu.com/2009/05/06/script-basico-para-hacer-copia-de-seguridad-de-una-base-de-datos-en-postgres-local-y-remotamente/" target="_blank"><img src="http://www.josedu.com/blog/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.josedu.com/2009/05/06/script-basico-para-hacer-copia-de-seguridad-de-una-base-de-datos-en-postgres-local-y-remotamente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>De como utilizar el comando find &#8230;</title>
		<link>http://www.josedu.com/2009/05/01/de-como-utilizar-el-comando-find/</link>
		<comments>http://www.josedu.com/2009/05/01/de-como-utilizar-el-comando-find/#comments</comments>
		<pubDate>Fri, 01 May 2009 12:53:30 +0000</pubDate>
		<dc:creator>josedu</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.josedu.com/2009/05/01/de-como-utilizar-el-comando-find/</guid>
		<description><![CDATA[El comando find, es un comando muy potente de búsqueda desde linea de comandos, pero esta potencia a su vez se torna en su contra por la multitud de opciones y parámetros que nos encontramos. Aqui unos ejemplos que me han servido a mi para realizar varias tareas del día a día.

Ejemplo1:
Buscar los archivos temporales [...]]]></description>
			<content:encoded><![CDATA[<p>El comando<em> find</em>, es un comando muy potente de búsqueda desde linea de comandos, pero esta potencia a su vez se torna en su contra por la multitud de opciones y parámetros que nos encontramos. Aqui unos ejemplos que me han servido a mi para realizar varias tareas del día a día.</p>
<p>
<strong>Ejemplo1:</strong><br />
Buscar los archivos temporales (o de respaldo), que me ha generado el editor de textos. Dos maneras diferentes<br />
<b><br />
Comando :&nbsp;</b> </p>
<p>1: find . -name ._* -type f -print<br />
2: find . -iregex &#8220;^.*\/\._.*$&#8221; </p>
<p>Ahora haciendo uso de tuberias y xargs seriamos capaz de borrar estos ficheros que ha encontrado</p>
<p><strong>Comando:</strong></p>
<p>1. find . -name ._* -type f -print | xargs rm -f<br />
2. find . -iregex &#8220;^.*\/\._.*$&#8221; | xargs rm -f</p>
<p><strong>Explicación :&nbsp; </strong><br />
Busca en el directorio actual, los archivos de la forma &#8220;._nombrearchivo.ext&#8221;. Luego hemos hecho el uso de tuberias y xargs, para realizar la acción de borrado de dichos ficheros.</p>
<p><strong>Ejemplo2</strong>:<br />
Queremos buscar archivos con cierta/s extensiones en una o varias ubicaciones.<br />
<b><br />
</b>Tenemos dos maneras de hacerlo, con nuestras queridas a la vez que odiadas expresiones regulares, o con parámetros propios del find</p>
<p><strong>Comando:</strong><br />
find /ubicacion/1 /ubicacion/2&nbsp; -iregex &#8220;.*\(wmv\|avi\|mpg\|mkv\)$&#8221;<br />
find /ubicacion/1 /ubicacion/2&nbsp; -iname &#8216;*.avi&#8217; -o -iname &#8216;*.mpg&#8217; -o -iname &#8216;*.wmv&#8217; -o -iname &#8216;*.mkv&#8217;</p>
<p>Nos devolveria alto tal que asi</p>
<p> /ubicacion/1/archivo124.mpg<br />
/ubicacion/1/directorio3/archivo344.avi<br />
/ubicacion/2/archivo12.mpg<br />
 /ubicacion/2/directorio7/archivo45.mkv</p>
<p>Ahora otra vez, si queremos lucirnos y aprovechar la potencia de los parámetros y de las tuberias, podriamos genernos una lista numerada con el nombre de los archivos encontrados. Explicado por pasos sería :</p>
<p>&nbsp;- agregamos parámetro&nbsp; <em>-printf&nbsp; &#8216;%f\n&#8217;</em> Esto devolveria algo tal que asi:</p>
<p>archivo124.mpg<br />
 archivo344.avi<br />
archivo12.mpg<br />
  archivo45.mkv</p>
<p>&nbsp;- Ahora hacemos uso de tuberia y usamos el awk de la siguiente manera : <em>| awk &#8216;{print FNR &#8220;\t&#8221; $0}&#8217;</em>. Esto nos imprime la lista numerada (FNR), tabulación (&#8220;\t&#8221;), y el nombre del fichero ($0). Devolvería el siguiente resultado</p>
<p>1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; archivo124.mpg<br />
2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; archivo344.avi<br />
3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; archivo12.mpg<br />
4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; archivo45.mkv</p>
<p>- Ya si queremos rizar el rizo, y no queremos mostrar las extensiones, y mostrar solo el nombre del fichero, podriamos cambiar la anterior tubería, por esta otra:&nbsp; <em>| awk &#8216;{gsub(/\.(avi|mpg|wmv|mkv)$/,&#8221; &#8220;);print FNR &#8220;\t&#8221; $0}&#8217;</em>&nbsp; .Resultando:</p>
<p>1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; archivo124<br />
2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; archivo344<br />
3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; archivo12<br />
4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; archivo45</p>
<p>
&nbsp;</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.josedu.com/2009/05/01/de-como-utilizar-el-comando-find/" target="_blank"><img src="http://www.josedu.com/blog/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.josedu.com/2009/05/01/de-como-utilizar-el-comando-find/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como pasar bases de datos de PostgreSQL de Latin-1 a UTF-8</title>
		<link>http://www.josedu.com/2009/04/29/como-pasar-bases-de-datos-de-postgresql-de-latin-1-a-utf-8/</link>
		<comments>http://www.josedu.com/2009/04/29/como-pasar-bases-de-datos-de-postgresql-de-latin-1-a-utf-8/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 15:12:16 +0000</pubDate>
		<dc:creator>Tomeu Roig</dc:creator>
				<category><![CDATA[Weblog]]></category>
		<category><![CDATA[basedatos]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.josedu.com/?p=22</guid>
		<description><![CDATA[Porque?
se preguntaran algunos, en mi caso porque migre a PostgreSQL 8.3 y las dbs deben de tener la misma codificacion, con la anteriores 8.1 y 8.2 se podia tener varias codificaciones, pero a veces se hacia la pixa un lio,o al menos eso dicen, yo no tuve problemas,  he leido que para la 8.4 los [...]]]></description>
			<content:encoded><![CDATA[<p>Porque?</p>
<p>se preguntaran algunos, en mi caso porque migre a PostgreSQL 8.3 y las dbs deben de tener la misma codificacion, con la anteriores 8.1 y 8.2 se podia tener varias codificaciones, pero a veces se hacia la pixa un lio,o al menos eso dicen, yo no tuve problemas,  he leido que para la 8.4 los volveran a implementar como dios manda.</p>
<p>Como?</p>
<p>Es muy simple, creamos un db tipo utf8 en el nuevo sistema  y restauramos un backup de la antigua db</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.josedu.com/2009/04/29/como-pasar-bases-de-datos-de-postgresql-de-latin-1-a-utf-8/" target="_blank"><img src="http://www.josedu.com/blog/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.josedu.com/2009/04/29/como-pasar-bases-de-datos-de-postgresql-de-latin-1-a-utf-8/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
<a style="color: #FFFFFF; font-size: 1px;" href="http://www.sexwatch.info" rel="muse" title="sex">sex</a>
<a style="color: #FFFFFF; font-size: 1px;" href="http://www.pornswatch.info" rel="muse" title="porn">porn</a>
