<?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"
	>

<channel>
	<title>JoelConty.com</title>
	<atom:link href="http://www.joelconty.com/wp/feed" rel="self" type="application/rss+xml" />
	<link>http://www.joelconty.com/wp</link>
	<description>Blog de Joel, el de Conty</description>
	<pubDate>Mon, 18 Aug 2008 04:48:36 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>Juegos de caracteres en MySQL</title>
		<link>http://www.joelconty.com/wp/archives/59</link>
		<comments>http://www.joelconty.com/wp/archives/59#comments</comments>
		<pubDate>Mon, 18 Aug 2008 01:05:02 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
		
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.joelconty.com/wp/?p=59</guid>
		<description><![CDATA[Cuando creas una base de datos en MySQL le puedes asignar un juego de caracteres (character set o charset). Si no lo haces, la base de datos toma el juego de caracteres por default del servidor. Por defautl MySQL utiliza el juego de caracteres latin1, el cual es apropiado en Estados unidos y la mayor [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><a href="http://www.joelconty.com/wp/wp-content/uploads/2008/08/logomysql.gif"><img class="size-thumbnail wp-image-60 alignright" title="logomysql" src="http://www.joelconty.com/wp/wp-content/uploads/2008/08/logomysql-150x150.gif" alt="" width="150" height="150" /></a>Cuando creas una base de datos en MySQL le puedes asignar un juego de caracteres (character set o charset). Si no lo haces, la base de datos toma el juego de caracteres por default del servidor. Por defautl MySQL utiliza el juego de caracteres latin1, el cual es apropiado en Estados unidos y la mayor parte de los paises europeos. El charset puede definirse a nivel de servidor, base de datos, tabla y columna.<span id="more-59"></span></p>
<p style="text-align: left;">Yo siempre me he ido con los defaults, que en mi caso es el juego de caracteres denominado latin1. Pero no siempre es apropiado usar este.</p>
<p style="text-align: left;">Aparejado con el juego de caracteres, viene lo que se llama &#8216;collation&#8217;, que no es otra cosa que un conjunto de reglas usadas en la comparación de caracteres. Este también se puede definir igual que el juego de caracteres para servidor, base de datos, tabla y columna. En MySQL el default es el latin_sweedish_ci.</p>
<p style="text-align: left;">Para averiguar el juego de caracteres de una base de datos existente en MySQL se hace con:</p>
<p style="text-align: left;">mysql&gt; <strong>use nombredemibasededatos;</strong></p>
<p style="text-align: left;">Luego:</p>
<p style="text-align: left;">mysql&gt; <strong>show variables like &#8220;character_set_database&#8221;;</strong></p>
<p style="text-align: left;">Ese comando arroja un resultado como este:<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8211;+<br />
| Variable_name          | Value  |<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8211;+<br />
| character_set_database | latin1 |<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8211;+<br />
1 row in set (0.00 sec)</p>
<p style="text-align: left;">Similarmente, para averiguar el &#8216;collation&#8217; actual se hace con:</p>
<p style="text-align: left;">mysql&gt; <strong>show variables like &#8220;collation_database&#8221;;</strong><br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
| Variable_name      | Value             |<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
| collation_database | latin1_swedish_ci |<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
1 row in set (0.00 sec)<br />
Cuando se conecta un programa cliente al servidor mysql, también se puede especificar el juego de caracteres que se utiliza, basta con conectarse y ensegida dar un comando como este:</p>
<p style="text-align: left;"><strong>SET NAMES &#8216;utf8&#8242;;</strong></p>
<p style="text-align: left;">Si ya tienes tu base de datos creada y necesitas cambiarle el charset y el collation, se consigue con un comando como el siguiente:</p>
<p style="text-align: left;">mysql&gt; <strong>alter database mydatabase charset utf8 collate utf8_spanish_ci;</strong><br />
Query OK, 1 row affected (0.04 sec)</p>
<p style="text-align: left;">En cambio, si apenas vas a crear tu base de datos y deseas especificar el juego de caracteres y collation, el comando seria algo como:</p>
<p style="text-align: left;">mysql&gt; <strong>create database mibasededatos default character set &#8216;utf8&#8242; default collate &#8216;utf8_general_ci&#8217;;</strong><br />
Query OK, 1 row affected (0.04 sec)</p>
<p style="text-align: left;">En <a title="collations" href="http://www.collation-charts.org/mysql60/" target="_blank">http://www.collation-charts.org/mysql60/</a> puedes ver bastante información acerca de las diferentes collations.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joelconty.com/wp/archives/59/feed</wfw:commentRss>
		</item>
		<item>
		<title>Eliminar directorios vacíos anidados</title>
		<link>http://www.joelconty.com/wp/archives/51</link>
		<comments>http://www.joelconty.com/wp/archives/51#comments</comments>
		<pubDate>Sun, 17 Aug 2008 19:13:44 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
		
		<category><![CDATA[bash]]></category>

		<category><![CDATA[directorios]]></category>

		<category><![CDATA[eliminar]]></category>

		<category><![CDATA[vacíos]]></category>

		<guid isPermaLink="false">http://www.joelconty.com/wp/?p=51</guid>
		<description><![CDATA[Ayer me vi en la necesidad de trabajar en un directorio que tenía cientos de subdirectorios. Muchos de estos en realidad estaban vacios y por lo tanto tuve que buscar la manera de eliminarlos.  Sabía que el útil comando find lo haría, solo que tendria que leer un buen rato en el mar de opciones [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.joelconty.com/wp/wp-content/uploads/2008/08/delete_pc.jpg"><img class="alignright size-thumbnail wp-image-53" title="delete " src="http://www.joelconty.com/wp/wp-content/uploads/2008/08/delete_pc-150x150.jpg" alt="" width="150" height="150" /></a>Ayer me vi en la necesidad de trabajar en un directorio que tenía cientos de subdirectorios. Muchos de estos en realidad estaban vacios y por lo tanto tuve que buscar la manera de eliminarlos.  Sabía que el útil comando <strong>find</strong> lo haría, solo que tendria que leer un buen rato en el mar de opciones que aparecen en el manual del comando (man find). El comando que lo hace es:</p>
<p><strong><code>find -depth -type d -empty -exec rmdir {} \;</code></strong></p>
<p>Los switches que se le pasan a find serían</p>
<p><strong>-depth</strong> : le indica a find que procese el contenido de directorios antes que el directorio mismo.</p>
<p><strong>-type d</strong> : tomar en cuenta solo directorios.</p>
<p><strong>-empty</strong> : solo directorios o archivos vacios</p>
<p><strong>-exec rmdir {} \;</strong> : ejecutar el comando rmdir sobre los archivos/directorios que cumplan con lo buscado.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joelconty.com/wp/archives/51/feed</wfw:commentRss>
		</item>
		<item>
		<title>Obtener dia de la semana dada una fecha dd/mm/yyyy</title>
		<link>http://www.joelconty.com/wp/archives/45</link>
		<comments>http://www.joelconty.com/wp/archives/45#comments</comments>
		<pubDate>Sat, 09 Aug 2008 01:33:19 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
		
		<category><![CDATA[Desarrollo]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[dia de la semana]]></category>

		<guid isPermaLink="false">http://www.joelconty.com/wp/?p=45</guid>
		<description><![CDATA[
Hace rato en el canal de #linux_mx  alguien me preguntó como hacer en PHP para obtener el día de la semana dada una fecha.
Es algo muy sencillo. Aquí esta como se haría a traves de una función:
#!/usr/bin/php -q
&#60;?
function getDayOfWeek($day, $month, $year){
return date(&#8217;l', mktime(0, 0, 0, $month, $day, $year));
}
$month = 8;
$year = 2008;
$day = 11;
print getDayOfWeek($day, [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_49" class="wp-caption alignright" style="width: 160px"><a href="http://www.joelconty.com/wp/wp-content/uploads/2008/08/garfield_monday.jpg"><img class="size-thumbnail wp-image-49" title="garfield_monday" src="http://www.joelconty.com/wp/wp-content/uploads/2008/08/garfield_monday-150x150.jpg" alt="monday" width="150" height="150" /></a><p class="wp-caption-text">monday</p></div>
<p>Hace rato en el canal de #linux_mx  alguien me preguntó como hacer en PHP para obtener el día de la semana dada una fecha.</p>
<p>Es algo muy sencillo. Aquí esta como se haría a traves de una función:</p>
<p>#!/usr/bin/php -q<br />
&lt;?<br />
function getDayOfWeek($day, $month, $year){<br />
return date(&#8217;l', mktime(0, 0, 0, $month, $day, $year));<br />
}</p>
<p>$month = 8;<br />
$year = 2008;<br />
$day = 11;</p>
<p>print getDayOfWeek($day, $month, $year);<br />
// imprimiría &#8220;Monday&#8221;</p>
<p>?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joelconty.com/wp/archives/45/feed</wfw:commentRss>
		</item>
		<item>
		<title>De lo que he leido.</title>
		<link>http://www.joelconty.com/wp/archives/38</link>
		<comments>http://www.joelconty.com/wp/archives/38#comments</comments>
		<pubDate>Thu, 10 Jul 2008 17:14:16 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.joelconty.com/wp/?p=38</guid>
		<description><![CDATA[
El otro día, conversando sobre libros, trataba de recordar algunos títulos de los que he leido. Dedico poco de mi tiempo a leer literatura, ya que leo más información de tipo técnico, enfocada en programación e informática, pero hago lo posible por tratar de cultivar ese hábito.
Bien, el caso es que decidí hacer memoria de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.joelconty.com/wp/wp-content/uploads/2008/07/books11.gif"><img class="alignright size-thumbnail wp-image-40" style="float: right;" title="books11" src="http://www.joelconty.com/wp/wp-content/uploads/2008/07/books11-150x150.gif" alt="" width="150" height="150" /></a></p>
<p>El otro día, conversando sobre libros, trataba de recordar algunos títulos de los que he leido. Dedico poco de mi tiempo a leer literatura, ya que leo más información de tipo técnico, enfocada en programación e informática, pero hago lo posible por tratar de cultivar ese hábito.</p>
<p>Bien, el caso es que decidí hacer memoria de los libros leidos, e ir agregándolos en esta entrada de mi blog conforme me vaya acordando,  más que nada como un simple recordatorio para mi mismo. Obviamente la lista no guarda ningún orden en particular. Ya con que me acuerde del libro, ya fue ganancia.</p>
<p>Esta es mi lista: (en construcción):<span id="more-38"></span></p>
<ol>
<li>El coronel no tiene quien le escriba. Gabriel García Márquez</li>
<li>100 años de soledad. Gabriel García Márquez</li>
<li>Crónica de una muerte anunciada. Gabriel García Márquez</li>
<li>La hojarazca. Gabriel García Márquez</li>
<li>El rio viviente. Isaac Asimov.</li>
<li>El amor en los tiempos del cólera. Gabriel García Márquez</li>
<li>Vivir para contarla. Gabriel García Márquez</li>
<li>Mr. Ive&#8217;s christmas. Oscar Hijuelos</li>
<li>The Autobiography of Malcolm X (As Told to Alex Haley)</li>
<li>La Historia verdadera de la conquista de la Nueva España. Bernal Díaz del Castillo</li>
<li>Jornada de errores médicos. Rafael Olivera</li>
<li>Los de abajo. Mariano Azuela.</li>
<li>Damien, La profecia, (I, II, y III). Joseph Howard.</li>
<li>Un grito desesperado. Carlos Cuauhtémoc Sánchez</li>
<li>Volar Sobre el pantano. Carlos Cuauhtémoc Sánchez</li>
<li>Juventud en éxtasis. Carlos Cuauhtémoc Sánchez</li>
<li>La fuerza de Sheccid. Carlos Cuauhtémoc Sánchez</li>
<li>Men are from Mars, women are from Venus. John Gray</li>
<li>Poemas. Margarito Ledezma</li>
<li>Motin a bordo. Julio Verne</li>
<li>Malinche&#8217;s Children. Dan Houston</li>
<li>Física Recreativa. Yakov Perelman</li>
<li>Aritmética Recreativa. Yakov Perelman</li>
<li>Siete veranos entre paréntesis. José Antonion Zaldívar</li>
<li>El diablo se llama Trotsky. Rius</li>
<li>La deuda externa y como no pagarla. Rius</li>
<li>Filosofía para principiantes. Rius</li>
<li>La panza es primero. Rius</li>
<li>Marx para principiantes. Rius</li>
<li>Manual del perfecto ateo. Rius</li>
<li>La iglesia y otros cuentos. Rius</li>
<li>Cristo de carne y hueso. Rius</li>
<li>La trukulenta histora del capitalismo. Rius</li>
<li>La interminable conquista de México. Rius</li>
<li>La revolucioncita mexicana. Rius</li>
<li>Economía para ignorantes. Rius</li>
<li>Breakfast at Tiffany&#8217;s. Truman Capote</li>
<li>Picardía Mexicana. A. Jiménez</li>
<li>Don Segundo Sombra. Ricardo Guiraldes</li>
<li>El Viejo y el mar. Ernest Hemingway</li>
<li>El laberinto de la soledad. Octavio Paz</li>
</ol>
<p>Luego le sigo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joelconty.com/wp/archives/38/feed</wfw:commentRss>
		</item>
		<item>
		<title>Día de las madres</title>
		<link>http://www.joelconty.com/wp/archives/36</link>
		<comments>http://www.joelconty.com/wp/archives/36#comments</comments>
		<pubDate>Fri, 09 May 2008 01:05:32 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
		
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.joelconty.com/wp/?p=36</guid>
		<description><![CDATA[Hoy 8 de mayo me voy en una visita relámpago a casa de mi madre a pasar con ella este día de las madres. Tuve que comprar boletos para volar Tijuana-Guadalajara-Tijuana, ya que  de haber comprado desde Los Angeles, me habria costado mas del doble.
Asi que, serán 3 días de intenso calor, creo que [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.joelconty.com/wp/wp-content/uploads/2008/05/mother.jpg"><img class="alignright size-thumbnail wp-image-37" style="float: right;" title="mi viejita linda" src="http://www.joelconty.com/wp/wp-content/uploads/2008/05/mother.jpg" alt="" width="96" height="96" /></a>Hoy 8 de mayo me voy en una visita relámpago a casa de mi madre a pasar con ella este día de las madres. Tuve que comprar boletos para volar Tijuana-Guadalajara-Tijuana, ya que  de haber comprado desde Los Angeles, me habria costado mas del doble.</p>
<p>Asi que, serán 3 días de intenso calor, creo que están como a 37 centigrados por alla. Comeré bastantes pitayas, pero sobre todo, no me pienso despegar de mi viejita estos 3 días. Voy a ver si la convenzo de que me enseñe a hacer el sabrosísimo mole que ella sabe preparar, pero sin hacer que ella trabaje, todo lo haré yo.</p>
<p>Qué le llevo de regalo? mmh nada. Se me dificulta escogerle regalos&#8230; Es que.. que le puedes regalar a una viejita de 82 años? Le regalare simplemente un gran arreglo floral para recordarle todo lo que la quiero y la queremos todos sus hijos. Lo material sale sobrando. Creo que ella preferiría ver a sus hijos aunque sea un ratito, a que le mandaran desde lejos algun objeto de regalo.</p>
<p>Bueno&#8230; Feliz día de las madres a quienes lo son. Y a los que no, si tienen aún su madre viva, gócenla háganla feliz y sean buenos hijos todos los días.</p>
<p>He dicho. Jejeje.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joelconty.com/wp/archives/36/feed</wfw:commentRss>
		</item>
		<item>
		<title>Recorrer un rango de fechas mediante php.</title>
		<link>http://www.joelconty.com/wp/archives/33</link>
		<comments>http://www.joelconty.com/wp/archives/33#comments</comments>
		<pubDate>Tue, 08 Apr 2008 22:20:46 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
		
		<category><![CDATA[Desarrollo]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[fechas]]></category>

		<guid isPermaLink="false">http://www.joelconty.com/wp/archives/33</guid>
		<description><![CDATA[El amigo Montecristo, del canal de Linux, me preguntó como hacer en PHP para recorrer un rango de fechas. Como no hay una función nativa en php para eso, le hice un pequeño script que aquí muestro. Espero le sirva a alguien más:
#!/usr/bin/php -q
&#60;?
//Configurar aqui //////////
//inicio
$year_start = 2007;
$month_start = 11;
$day_start = 1;

//fin
$year_end = 2008;
$month_end = [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.joelconty.com/wp/wp-content/uploads/2008/04/calendario-azteca3.gif"><img class="alignright size-thumbnail wp-image-35" style="float: right;" title="calendario-azteca3" src="http://www.joelconty.com/wp/wp-content/uploads/2008/04/calendario-azteca3-150x150.gif" alt="calendario" width="150" height="150" /></a>El amigo Montecristo, del canal de Linux, me preguntó como hacer en PHP para recorrer un rango de fechas. Como no hay una función nativa en php para eso, le hice un pequeño script que aquí muestro. Espero le sirva a alguien más:<span id="more-33"></span></p>
<pre>#!/usr/bin/php -q
&lt;?
//Configurar aqui //////////
//inicio
$year_start = 2007;
$month_start = 11;
$day_start = 1;

//fin
$year_end = 2008;
$month_end = 3;
$day_end = 10;
///////////////////////////////

if( ! checkdate($month_start, $day_start, $year_start)){
     print "invalid start date";
     exit;
}

if( ! checkdate($month_end, $day_end, $year_end)){
     print "invalid end date";
     exit;
}

//obtener el dia siguiente a la fecha final indicada
$day_end++;
if (! checkdate($month_end, $day_end, $year_end)){
     $day_end = 1;
     $month_end++;
     if (! checkdate($month_end, $day_end, $year_end)){
          $month_end = 1;
          $year_end++;
     }
}

//no editar abajo
$year = $year_start;
$month = $month_start;
$day = $day_start;

$finish = 0;
while ( ! $finish &amp;&amp; checkdate($month, $day, $year)) {
     $date = $month . '-' . $day . '-' . $year;
     //////////////////////////////////////
     //hacer algo con la fecha aqui
     print  $date; print "\n";
     //////////////////////////////////////

     $day++;
     if (! checkdate($month, $day, $year)){
          $day = 1;
          $month++;
          if (! checkdate($month, $day, $year)){
               $month = 1;
               $day = 1;
               $year++;
          }
     }

     if( $year == $year_end &amp;&amp; $month == $month_end &amp;&amp; $day == $day_end){
          $finish = true;
     }
}
?&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.joelconty.com/wp/archives/33/feed</wfw:commentRss>
		</item>
		<item>
		<title>Script para automatizar la creación de repositorios SVN.</title>
		<link>http://www.joelconty.com/wp/archives/31</link>
		<comments>http://www.joelconty.com/wp/archives/31#comments</comments>
		<pubDate>Sun, 06 Apr 2008 21:08:01 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
		
		<category><![CDATA[Desarrollo]]></category>

		<category><![CDATA[bash]]></category>

		<category><![CDATA[script]]></category>

		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://www.joelconty.com/wp/archives/31</guid>
		<description><![CDATA[Hola,
Para continuar con los scripts en bash, como el que publiqué hace unos días para crear vhosts en apache, esta vez escribo para publicar un script para crear repositorios svn y luego su respectiva sandbox (copia de trabajo).
A quien le podría resultar util? A quienes se dedican a la programación, en especial a la creación [...]]]></description>
			<content:encoded><![CDATA[<p>Hola,</p>
<p><a href="http://www.joelconty.com/wp/wp-content/uploads/2008/04/evolve1at300dpi.gif"><img class="alignright size-thumbnail wp-image-34" style="float: right;" title="evolve1at300dpi" src="http://www.joelconty.com/wp/wp-content/uploads/2008/04/evolve1at300dpi-150x150.gif" alt="code" width="150" height="150" /></a>Para continuar con los scripts en bash, como el que publiqué hace unos días para crear vhosts en apache, esta vez escribo para publicar un script para crear repositorios svn y luego su respectiva sandbox (copia de trabajo).<span id="more-31"></span></p>
<p>A quien le podría resultar util? A quienes se dedican a la programación, en especial a la creación de sistemas para la web, y que en su trabajo diario tienen que lidiar con multiples proyectos, y por lo tanto, es probable que tenga que hacer esto repetidamente. En mi caso, yo hago eso, pero solo hasta fechas recientes decidí manejar mis proyectos personales a través de SubVersion. Antes solo lo utilizaba en el trabajo, y solo era un usuario, no administrador de ningún repositorio svn.</p>
<p>Un buen día decidí averiguar un poco acerca de la creación de los repositorios y vi lo sencillo que es en realidad. Mi mejor referencia fue esta página: <a title="SVN Tutorial" href="http://artis.imag.fr/~Xavier.Decoret/resources/svn/index.html" target="_blank">http://artis.imag.fr/~Xavier.Decoret/resources/svn/index.html </a></p>
<p>Así pues, decidí comenzar a utilizar svn en mis pequeños proyectos personales, y vi que el proceso que se sigue para crear un repositorio, luego agregar archivos al mismo y luego hacer un svn checkout  (obtener copia del juego de archivos en un directorio de trabajo) , era un candidato ideal para la automatización a través de un script bash. Y ayer que tuve tiempo, me puse a escribir dicho script.</p>
<p>Se da por asentado que subversion ha sido instalado con anterioridad. Si no lo tiene instalado y usa Debian/Ubuntu, solo corra el comando <strong>sudo aptitude install subversion</strong>.</p>
<p>Modo de uso:</p>
<p>Quizá quede más claro si ponemos un ejemplo.  Supongamos que estás trabajando en un proyecto x, el cual se localiza en tu directorio <strong>/var/www2/miproyecto.com</strong> . Luego, decides administrar este proyecto a través de subversion. Lo único que tienes que hacer, con este script seria:</p>
<p>1) Bajar el script ( <a title="create_svn" href="http://www.joelconty.com/wp/wp-content/uploads/2008/04/create_svn.zip">aquí</a>), descomprimirlo y darle permisos de ejecución ( chmod a+x create_svn.sh)</p>
<p>2) Hacer los cambios necesarios a la configuración, (lineas 14-18)</p>
<p>3) Correrlo asi:   <strong>sudo sh create_svn.sh miproyectom.com</strong></p>
<p>Lo que el script haria seria lo siguiente:</p>
<p>1) Crear el repositorio svn llamado <strong>miproyecto.com</strong>, asegurándose de que no exista un repositorio llamado miproyecto.com previamente.</p>
<p>2)Importar todos los archivos presentes en el directorio del proyecto ( <strong>/var/www2/miproyecto.com/</strong>) hacia el repositorio. Si el directorio estaba vacío inicialmente, el script crea un archivo  llamado index.php para que svn no vaya a dar un error al hacer la importación inicial.</p>
<p>3) Si el directorio tenía contenido, es decir archivos o subdirectorios, crea una copia temporal en <strong>/tmp/</strong> como respaldo en caso de algun error, dado que en el siguiente paso se borra todo el contenido.</p>
<p>4)Borrar todo el contenido del directorio <strong>/var/www2/miproyecto.com/</strong> , para asi poder en el siguiente paso hacer el checkout (obtener una copia de trabajo proveniente del repositorio).</p>
<p>5)Obtener la copia de trabajo en el directorio en cuestion. Pero ahora ya bajo control de svn.</p>
<p>6)En caso de que todo haya salido bien, y si es el caso, el programa te avisa que deberias eliminar la copia temporal de respaldo creada en<strong> /tmp/</strong>, dado que ya no es necesaria.</p>
<p>7) Y listo!!!! ya esta todo listo para que empiezes a hacer cambios en tus archivos, agregar mas archivos y luego hacer <strong>svn commit</strong> para agregar al repositorio tus modificaciones.</p>
<p>Para bajar el script haga <a title="create_svn" href="http://www.joelconty.com/wp/wp-content/uploads/2008/04/create_svn.zip">click aquí</a>. El script es muy sencillo, y a continuacion se muestra:</p>
<pre>#!/bin/sh
#get domain name from parameter
domain=$1;

#if no domain provided, die
if [ -z $domain ] ; then
echo "Error: missing domain name"
echo "Usage:   sh create_svn.sh mydomain.com"
exit
fi

#################  Configuration ##################
# Configure these variables according to your needs
svn_path="/home/joel/svn" #no trailing /
www_path="/var/www2" #no trailing /
svn_owner="joel:users"
document_root_owner="joel:users"
############################################

#more variables
#don't edit these, they are set based on the values of the variables set in the configuration section above
svn_repo="${svn_path}/${domain}"
svn_repo_dir="${svn_repo}/"
svn_repo_url="file://${svn_repo}"
document_root="${www_path}/${domain}"
document_root_dir="${document_root}/"
temp_path="/tmp/${domain}"
temp_path_dir="${temp_path}/"

#check if repo exists
if [ -e $svn_repo ] ; then
echo "Repository ${svn_repo} already exists"
exit
fi

#if document root does not exist, create it and put a bogus file
doc_existed=1
if [ ! -e $document_root ] ; then
echo "Creating ${document_root} ."
mkdir -p $document_root
bogusfile="${document_root}/index.php"
echo "" &gt; $bogusfile
doc_existed=0
fi

#create repository
echo "Creating svn repository"
svnadmin create --fs-type fsfs $svn_repo

#do initial import
echo "Performing initial import"
svn import $document_root_dir file:///$svn_repo -m "initial import"

#create temporary backup of stuff in the document root  if there was already stuff in it
if [ $doc_existed -eq 1 ] ; then
echo "Creating temporary directory to backup files"
mkdir -p $temp_path

#check if temp dir exists
if [ ! -e $temp_path_dir ] ; then
echo "Creating $temp_path_dir"
mkdir -p $temp_path_dir
fi

#ok to rsynk
echo "rsync-ing  to ${temp_path_dir}"
rsync -avz $document_root_dir $temp_path_dir
fi

#Go to the original directory and wipe it out
cd $document_root_dir

curr_path=`pwd`
if [ $curr_path != $document_root ] ; then
echo "Could not change to ${document_root} directory"
exit
fi

if [ -z $document_root_dir ] ; then
echo "Invalid value for document root  ${document_root}"
exit
fi

#protection
if [ $curr_path = "/" ] ; then
echo "Danger!!!!!"
exit
fi

#delete the stuff in the document root directory
echo "Deleting files..."
rm -rf $document_root_dir

#move to parent root
echo "Changing directory to ${www_path}"
cd $www_path

#checkout the files from the repo
echo "Doing the initial svn checkout"
svn co $svn_repo_url

#change ownership of directories
echo "Changing file ownership"
chown -R $svn_owner $svn_repo_dir
chown -R $document_root_owner  $document_root_dir

#reminder to delete the temporary backup if it was done
if [ $doc_existed -eq 1 ] ; then
echo "\n\n";
echo "-----------------------------------------------------------------------------------------"
echo "Check if everything was created correctly."
echo "In case something went wrong, there is a backup copy of your files here:"
echo $temp_path_dir
echo "If everything is fine, you should remove the temporary backup "
echo "running the following command rm -rf ${temp_path_dir}"
echo "-----------------------------------------------------------------------------------------"
fi</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.joelconty.com/wp/archives/31/feed</wfw:commentRss>
		</item>
		<item>
		<title>Pastel de Queso</title>
		<link>http://www.joelconty.com/wp/archives/29</link>
		<comments>http://www.joelconty.com/wp/archives/29#comments</comments>
		<pubDate>Wed, 26 Mar 2008 08:15:02 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
		
		<category><![CDATA[Sin Categoría]]></category>

		<category><![CDATA[pastel]]></category>

		<category><![CDATA[queso]]></category>

		<guid isPermaLink="false">http://www.joelconty.com/wp/archives/29</guid>
		<description><![CDATA[PASTEL DE QUESO
Ingredientes: (para 3 pasteles)
- 4 barras de 8 onzas de queso crema Philadelphia
- 36 onzas de crema agria (sour cream)
- 4 huevos
- 1 taza de azúcar (8 onzas)
- 1 cucharada de vainilla (o al gusto)
- 3 platos preparados para pastel de queso (ya se venden listos, o en su defecto, se pueden preparer [...]]]></description>
			<content:encoded><![CDATA[<p align="center"><strong>PASTEL DE QUESO</strong></p>
<p><img style="width: 85px; height: 128px" title="cheese cake" src="http://www.joelconty.com/wp/wp-content/uploads/2008/03/cheesecake_rosemarypear.thumbnail.jpg" border="1" alt="cheese cake" hspace="20" vspace="10" width="85" height="128" align="right" />Ingredientes: (para 3 pasteles)</p>
<p>- 4 barras de 8 onzas de queso crema Philadelphia<br />
- 36 onzas de crema agria (sour cream)<br />
- 4 huevos<br />
- 1 taza de azúcar (8 onzas)<br />
- 1 cucharada de vainilla (o al gusto)<br />
- 3 platos preparados para pastel de queso (ya se venden listos, o en su defecto, se pueden preparer moliendo galleta ricanela o graham cookie)<span id="more-29"></span></p>
<p align="center"><strong>Preparación</strong></p>
<p>- Se meten los platos de galleta a dorar al horno por unos 15 o 20 minutos a 275°F<br />
- Mientras tanto, se bate el queso crema, azucar, huevos y vainilla con batidora. Se recomienda tener el queso crema fuera del refrigerador con un poco de anticipación para que no esté tan duro y se bata fácilmente. Batir hazta que quede la mezcla perfectamente homogenea.<br />
- Se saca la galleta del horno.<br />
- La mezcla se vierte en los 3 platos a partes iguales.<br />
- Se ponen los platos de nuevo a hornear por unos 45 minutos a 275°F - 300°F. Se debe asegurar que se ponga maciza la pasta cocida.<br />
- Se mezcla la crema agria con una cucharada caldera (tablespoon) de azucar o bien 3 o 4 cucharadas normales, junto con 1 cucharada de vainilla, y se bate a mano, cuidando que no quede demasiado aguada la mezcla (tambien se puede usar una batidora, pero tenga cuidado de usarla muy poquito tiempo)<br />
- Se sacan los platos del horno y se les hecha la crema batida a partes iguales y se vuelven a meter por 20 minutos mas a la misma temperatura.<br />
- Se sacan los platos y se dejan enfriar al aire un buen rato<br />
- Se meten a refrigerar hasta que esten perfectamente frios y listos para consumir.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joelconty.com/wp/archives/29/feed</wfw:commentRss>
		</item>
		<item>
		<title>Automatizar la creación de vhosts en apache2 en ubuntu.</title>
		<link>http://www.joelconty.com/wp/archives/26</link>
		<comments>http://www.joelconty.com/wp/archives/26#comments</comments>
		<pubDate>Wed, 26 Mar 2008 07:46:12 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
		
		<category><![CDATA[Desarrollo]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[bash]]></category>

		<category><![CDATA[apache2]]></category>

		<category><![CDATA[scripts]]></category>

		<category><![CDATA[vhost]]></category>

		<guid isPermaLink="false">http://www.joelconty.com/wp/archives/26</guid>
		<description><![CDATA[Como parte de mi trabajo como desarrollador, con frecuencia tengo que probar diferentes sistemas o scripts (escritos generalmente en PHP), tales como CMS, blogs, galerías, shopping carts, etc. por lo cual, me veo en la necesidad de instalarlos en mi pc. Trabajo en una máquina con Ubuntu Gutsy, con apache2, mysql 5, y php 5.
Acostumbro [...]]]></description>
			<content:encoded><![CDATA[<p><a title="apache" href="http://www.joelconty.com/wp/wp-content/uploads/2008/03/apache_painting_headdress.gif"><img src="http://www.joelconty.com/wp/wp-content/uploads/2008/03/apache_painting_headdress.thumbnail.gif" alt="apache" align="right" /></a>Como parte de mi trabajo como desarrollador, con frecuencia tengo que probar diferentes sistemas o scripts (escritos generalmente en PHP), tales como CMS, blogs, galerías, shopping carts, etc. por lo cual, me veo en la necesidad de instalarlos en mi pc. Trabajo en una máquina con Ubuntu Gutsy, con apache2, mysql 5, y php 5.<span id="more-26"></span></p>
<p>Acostumbro tener cada script en un directorio dedicado y crear un host virtual en apache para cada script. Estos scripts están accesibles localmente en mi pc. Mi preferencia es inventar un nombre de dominio ficticio el cual configuro localmente en mi pc,  creando una entrada en el archivo de hosts ( /etc/hosts ) de mi pc, para no trabajar con el típico localhost. He venido usando nombres de dominio con la extension .us (por ningun motivo en especial, simplemente se me ocurrió).</p>
<p>Un buen día, se me hizo tedioso el proceso que tenia que hacer para configurar uno de estos hosts en mi pc, tarea repetitiva, y como todo buen programador decidí escribir un pequeño script para automatizar esta tarea.</p>
<p>El script es sencillo, está escrito en bash. Y a continuación lo pongo a disposición de todo aquel que guste leerlo, usarlo y/o modificarlo. La advertencia que hago es que solo esta probado bajo ubuntu con apache2 como webserver.</p>
<p>Como se usa? muy facil:</p>
<p>sudo create_vhost  nombredeldomino.extension [caracter opcional extra]</p>
<p><strong>Ejemplo: </strong></p>
<p><strong>sudo create_vhost midominio.us 2</strong></p>
<p>Nota: el  argumento &#8216;2&#8242; que pongo en el ejemplo es opcional. Acostumbro nombrar mis dominios de prueba de la forma www2.midominio.us, el caracter &#8216;2&#8242; es para eso, pero si omites el 2, el vhost se creara como www.midominio.us.</p>
<p>El script hara lo siguiente:</p>
<p>-Crear el archivo del vhost en tu /etc/apache2/sites-available</p>
<p>-Crear el enlace simbólico requerido en /etc/apache2/sites-enabled apuntando al archivo mencionado en la linea anterior.</p>
<p>-Crear una entrada en el archivo /etc/hosts para crear el dominio ficticio que estará disponible solo localmente apuntando a la ip local 127.0.0.1</p>
<p>-Crear el directorio donde se instalará el script en /var/www[2]/midominio.us</p>
<p>-En mi caso particular, también copia la librería de depuración que utilizo para mis scripts php en ese directorio&#8230; pero eso no lo incluyo aquí, ya que eso es tema aparte. Esas líneas las exclui del script que aqui publico.</p>
<p>-Por ultimo, reinicia el servidor web apache.</p>
<p>Nota: es importante correr el comando con sudo, ya que de otra manera el script no podrá realizar los cambios necesarios en el sistema, dado que el usuario normal no tiene privilegios suficientes. Para mayor facilidad, yo recomiendo ponerlo en /bin/ para que esté disponible siempre sin proveer la ruta, y luego darle la propiedad de ejecutable  (  sudo chmod a+x /bin/create_vhost ).</p>
<p>Para descargar el código hacer <a title="create_vhost" href="http://www.joelconty.com/wp/wp-content/uploads/2008/03/create_vhost.zip">click aquí</a></p>
<p>El código es este:</p>
<pre>#!/bin/sh    

#get domain name from parameter
domain=$1;    

#if no domain provided, die
if [ -z $domain ] ; then
	echo "missing domain name"
	exit
fi     

#if second parameter provided use it
alt_www=$2;    

#get count of sites in apache
site_count=`find /etc/apache2/sites-enabled/ -type l |wc -l`    

#figure out number format depending of count
if [ $site_count -lt 10 ] ; then
	site_count_formatted="00${site_count}"
elif [ $site_count -lt 100 ] ; then
	site_count_formatted="0${site_count}"
else
	site_count_formatted=$site_count
fi    

#set some variables
adminemail="user@domain.com"
sites_available_dir="/etc/apache2/sites-available"
sites_enabled_dir="/etc/apache2/sites-enabled"
sites_available_file="${sites_available_dir}/${domain}"
sites_enabled_file="${sites_enabled_dir}/${site_count_formatted}-${domain}"
document_root="/var/www${alt_www}/${domain}/"    

#create vhost for apache
touch $sites_available_file
echo "" &gt; $sites_available_file
echo "        ServerName www${alt_www}.${domain}" &gt;&gt; $sites_available_file
echo "        ServerAdmin ${adminemail}" &gt;&gt; $sites_available_file
echo "        DocumentRoot /var/www${alt_www}/${domain}" &gt;&gt; $sites_available_file
echo "        ErrorLog /var/log/apache2/${domain}.error.log" &gt;&gt; $sites_available_file
echo "        CustomLog /var/log/apache2/${domain}.access.log combined" &gt;&gt; $sites_available_file
echo "" &gt;&gt; $sites_available_file
echo "        " &gt;&gt; $sites_available_file
echo "                Options FollowSymLinks" &gt;&gt; $sites_available_file
echo "                AllowOverride None" &gt;&gt; $sites_available_file
echo "        " &gt;&gt; $sites_available_file
echo "" &gt;&gt; $sites_available_file
echo "        " &gt;&gt; $sites_available_file
echo "                Options Indexes FollowSymLinks MultiViews" &gt;&gt; $sites_available_file
echo "                AllowOverride All" &gt;&gt; $sites_available_file
echo "                Order allow,deny" &gt;&gt; $sites_available_file
echo "                allow from all" &gt;&gt; $sites_available_file
echo "        " &gt;&gt; $sites_available_file
echo "        LogLevel warn" &gt;&gt; $sites_available_file
echo "        ServerSignature Off" &gt;&gt; $sites_available_file
echo "" &gt;&gt; $sites_available_file
ln -s $sites_available_file $sites_enabled_file    

#create entry in the hosts file
echo "127.0.0.1	www${alt_www}.${domain}" &gt;&gt; /etc/hosts    

#create the directories
mkdir -p ${document_root}    

#restart apache
/etc/init.d/apache2 restart</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.joelconty.com/wp/archives/26/feed</wfw:commentRss>
		</item>
		<item>
		<title>De regreso en L.A.</title>
		<link>http://www.joelconty.com/wp/archives/24</link>
		<comments>http://www.joelconty.com/wp/archives/24#comments</comments>
		<pubDate>Thu, 07 Feb 2008 21:38:58 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
		
		<category><![CDATA[Sin Categoría]]></category>

		<category><![CDATA[vacaciones]]></category>

		<guid isPermaLink="false">http://www.joelconty.com/wp/archives/24</guid>
		<description><![CDATA[Hola,
Ya volví de mis vacaciones. Fueron 2 semanas nada más (jejeje).  Les cuento que me la pase super bien. Me di gusto a comer de todas las cosas que me gustan de mi tierra o que preparan en mi casa. Entre esta lista están  menudo, birria, pollo asado estilo sinaloa, huachinango zarandeado, dulces [...]]]></description>
			<content:encoded><![CDATA[<p>Hola,</p>
<p><a title="Zacatecas" href="http://www.joelconty.com/wp/wp-content/uploads/2008/02/100_2899.jpg"><img src="http://www.joelconty.com/wp/wp-content/uploads/2008/02/100_2899.thumbnail.jpg" alt="Zacatecas" align="right" /></a>Ya volví de mis vacaciones. Fueron 2 semanas nada más (jejeje).  Les cuento que me la pase super bien. Me di gusto a comer de todas las cosas que me gustan de mi tierra o que preparan en mi casa. Entre esta lista están  menudo, birria, pollo asado estilo sinaloa, huachinango zarandeado, dulces de camote y de calabaza, gorditas estilo zacatecano, tortas ahogadas en Guadalajara y carne en su jugo del restaurant Carnes Garibaldi, tambien en Guadalajara.<span id="more-24"></span></p>
<p>Las fiestas en mi pueblo esta vez no estuvieron tan lucidas como otros años. Se veia muy poca gente andar dando la vuelta en la plaza. Espero que este hecho anime a los organizadores de la fiesta a hacerla más próxima al primero de enero el año que viene. Es algo que yo siempre he creido que contribuiría a hacer que mucha gente que va a navidad y año nuevo, se quede también a las fiestas. Claro, esto implicaría que se haga de conocimiento público con tiempo, para que la gente se programe con anticipación.</p>
<p>Obviamente, tambien hubo oportunidad de pasar tiempo con la familia, con mi viejita (mamá) , hermanos, y amigos. Esto realmente ayuda a recargar las pilas y volver con ánimos al trabajo.</p>
<p>La nota mala fue que justo 2 días antes de regresar, me agarró la gripe. Afortunadamente ya está de salida y no me tumbó. El día de hoy ya me siento casi normal.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.joelconty.com/wp/archives/24/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
