<?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>Punksolid</title>
	<atom:link href="http://www.punksolid.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.punksolid.com</link>
	<description>Tecnologia, Curiosidades, Sistemas de Informacion y un poco de Religion</description>
	<lastBuildDate>Sat, 14 Apr 2012 11:03:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Los Problemas De Movilidad No Los Descubrimos Nosotros.</title>
		<link>http://www.punksolid.com/los-problemas-de-movilidad-no-los-descubrimos-nosotros/2012/</link>
		<comments>http://www.punksolid.com/los-problemas-de-movilidad-no-los-descubrimos-nosotros/2012/#comments</comments>
		<pubDate>Sat, 14 Apr 2012 11:03:19 +0000</pubDate>
		<dc:creator>Punksolid</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[off topic]]></category>
		<category><![CDATA[Automóvil]]></category>
		<category><![CDATA[Ciclismo Urbano]]></category>
		<category><![CDATA[Mr. Wheeler]]></category>
		<category><![CDATA[Transporte]]></category>
		<category><![CDATA[Urbanismo]]></category>
		<category><![CDATA[Vídeos]]></category>

		<guid isPermaLink="false">http://www.punksolid.com/?p=691</guid>
		<description><![CDATA[Debo admitir que soy un neófito y tan solo un aficionado en la movilidad, y en algún momento me pareció que era el tema del momento, en el que la sociedad está despertando hacia formas mas ecológicas y practicas de moverse, pero en realidad la discusión tiene mas tiempo que el que tengo de vida. Leyendo el articulo de [...]]]></description>
			<content:encoded><![CDATA[<p>Debo admitir que soy un neófito y tan solo un aficionado en la movilidad, y en algún momento me pareció que era el tema del momento, en el que la sociedad está despertando hacia formas mas ecológicas y practicas de moverse, pero en realidad la discusión tiene mas tiempo que el que tengo de vida. Leyendo el articulo de "<a href="http://mexico.transeunte.org/2012/04/09/automoviles-la-especie-dominante/" target="_blank">automóviles, la especie dominante</a>" nos cuentan una historia en el que la especie principal que habita el planeta tierra no es el ser humano ni ninguno del resto de sus animales, si no los automóviles, esa historia es un cortometraje de 10 minutos realizado 1967.<br />
<object width="516" height="337" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://media1.nfb.ca/medias/flash/ONFflvplayer-gama.swf" /><param name="allowscriptaccess" value="always" /><param name="allowfullscreen" value="true" /><param name="flashvars" value="mID=IDOBJ14303&amp;image=http://media1.nfb.ca/medias/nfb_tube/thumbs_large/2010/What-on-Earth_BIG.jpg&amp;width=516&amp;height=337&amp;showWarningMessages=false&amp;streamNotFoundDelay=15&amp;lang=en&amp;getPlaylistOnEnd=true&amp;embeddedMode=true" /><embed width="516" height="337" type="application/x-shockwave-flash" src="http://media1.nfb.ca/medias/flash/ONFflvplayer-gama.swf" allowscriptaccess="always" allowfullscreen="true" flashvars="mID=IDOBJ14303&amp;image=http://media1.nfb.ca/medias/nfb_tube/thumbs_large/2010/What-on-Earth_BIG.jpg&amp;width=516&amp;height=337&amp;showWarningMessages=false&amp;streamNotFoundDelay=15&amp;lang=en&amp;getPlaylistOnEnd=true&amp;embeddedMode=true" /></object></p>
<p>Podríamos pensar que los productores del corto son unos visionarios, y sin duda lo son mas que cualquiera de nuestra generación, pero no fueron los unicos en manifestarse y divulgar los problemas sociales y demás, que conlleva el uso desmedido del auto, otra animación que divulgo cada que puedo es la de 'Motor Mania' según producida en 1950, una producción de Disney en la que Goofy se convierte en Mr.Wheeler un automovilista con todos sus defectos, es maravillosa, hace reir por que cualquiera se puede ver reflejado y exagerado.<br />
<iframe src="http://www.youtube.com/embed/mZAZ_xu0DCg" frameborder="0" width="640" height="480"></iframe></p>
<p>&nbsp;</p>
<p>Ademas como bonus, aquí un vídeo instruccional (y bizarro) de ciclismo urbano del año 1963, en el que enseñan el como NO circular en bicicleta, pero un poco extraño que la mayoría de los accidentes de ejemplo terminen en colisión con un automotor.<br />
<iframe src="http://www.youtube.com/embed/56k4KIpeh1Y?rel=0" frameborder="0" width="640" height="480"></iframe></p>
<p>Así que por desgracia, después de conocer estos vídeos y <a href="http://pinterest.com/pin/131448882844099549/" target="_blank">algunas fotos antiguas</a>, podemos decir que este problema no lo descubrimos nosotros, sin embargo hoy parecen mas vigentes que nunca, y también tenemos mas evidencia que antes de que el modelo de transporte actual no funciona como debería.</p>
<p>Si conoces algún otro promocional antiguo compártelo en los comentarios o por <a href="http://www.twitter.com/punksolid" target="_blank">twitter</a>.</p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.punksolid.com/los-problemas-de-movilidad-no-los-descubrimos-nosotros/2012/&via=Punksolid&text=Los Problemas De Movilidad No Los Descubrimos Nosotros.&related=José Palazuelos:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.punksolid.com/los-problemas-de-movilidad-no-los-descubrimos-nosotros/2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>El Autoengaño</title>
		<link>http://www.punksolid.com/el-autoengano/2012/</link>
		<comments>http://www.punksolid.com/el-autoengano/2012/#comments</comments>
		<pubDate>Tue, 10 Apr 2012 04:37:35 +0000</pubDate>
		<dc:creator>Punksolid</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[off topic]]></category>
		<category><![CDATA[Banquetas]]></category>
		<category><![CDATA[Ciclismo Urbano]]></category>
		<category><![CDATA[culiacan]]></category>
		<category><![CDATA[Espacio Publico]]></category>
		<category><![CDATA[Sinaloa]]></category>
		<category><![CDATA[vida diaria]]></category>

		<guid isPermaLink="false">http://www.punksolid.com/?p=684</guid>
		<description><![CDATA[Para los que me conocen sabrán que tengo un poco de tiempo metido en los temas de ciclismo urbano, un tema muy interesante si tomamos en cuenta que diariamente todos nos transportamos de un lugar a otro. Despues de varios meses de usar la bicicleta como medio de transporte para algunos lugares, me he sorprendido [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_685" class="wp-caption alignright" style="width: 310px"><a href="http://www.punksolid.com/blog/wordpress/wp-content/uploads/2012/04/banqueta.jpg"><img class="size-medium wp-image-685" title="Falta estationamiento." src="http://www.punksolid.com/blog/wordpress/wp-content/uploads/2012/04/banqueta-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">Foto tomada de http://banquetascln.blogspot.mx/</p></div>
<p>Para los que me conocen sabrán que tengo un poco de tiempo metido en los temas de ciclismo urbano, un tema muy interesante si tomamos en cuenta que diariamente todos nos transportamos de un lugar a otro.</p>
<p>Despues de varios meses de usar la bicicleta como medio de transporte para algunos lugares, me he sorprendido de la manera en que la bicicleta acorta ciudades, o de como el automóvil te hace estimar un tiempo para llegar a un lugar no basado en la distancia, si no en la cantidad de trafico, y el tiempo que te tomará encontrar estacionamiento. Por lo cual la estimación termina incierta ya que pueden variar de un momento a otro.</p>
<p>Y por lo anterior, hay vicios que hemos adoptado, digo hemos, por que se me hace muy dificil que alguien esté excento a ellos, vicios que justificamos facilmente cuando conducimos automóvil por que de alguna manera se ha implementado en nuestra forma de pensar que podemos saltarnos las reglas que nosotros mismos nos establecemos con el fin de cumplir con el tiempo que tenemos estimado para llegar y que ademas, cada año tendremos que meterle mas tiempo a nuestras estimaciones. A esas acciones lo llamo el auto-engaño.</p>
<p>Un autoengaño es no ceder el paso a un peatón que está en la esquina de la banqueta, es pasarse un rojo por que 'no hay nadie', meterse en sentido contrario por que la próxima calle queda muy lejos, rebasar por acotamiento, estacionarse en lugar prohibido por que no hay estacionamiento cerca, y etcetera.</p>
<p>Los autoengaños no son soluciones, son parches a un problema de movilidad, un parche que cada vez va a ocasionar mas problemas de los que resuelve.</p>
<p>Debo admitir de que ademas de que solo conozco el problema, también me autoengaño(cada vez menos), sin embargo los invito a que no se autoengañen, y si vamos a desobedecer, lo hagamos con descaro. Es preferible un "Si, me pasé el rojo por que quería llegar mas rápido" a un "Es que ese semaforo dura mucho". Y en lo que encontramos solución, seamos totalmente descarados. Solo así sabremos que los problemas existen y tal vez algún día lo solucionemos.</p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.punksolid.com/el-autoengano/2012/&via=Punksolid&text=El Autoengaño&related=José Palazuelos:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.punksolid.com/el-autoengano/2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>De las Manifestaciones Méxicanas</title>
		<link>http://www.punksolid.com/de-las-manifestaciones-mexicanas/2011/</link>
		<comments>http://www.punksolid.com/de-las-manifestaciones-mexicanas/2011/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 13:06:55 +0000</pubDate>
		<dc:creator>Punksolid</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Idealismo]]></category>
		<category><![CDATA[Mexico]]></category>
		<category><![CDATA[Narcotrafico]]></category>
		<category><![CDATA[Reflexion]]></category>
		<category><![CDATA[Sinaloa]]></category>
		<category><![CDATA[World Revolution]]></category>

		<guid isPermaLink="false">http://www.punksolid.com/?p=681</guid>
		<description><![CDATA[En México, nos han vendido que las manifestaciones son para atrasar a los demás, estorbos, un acto inútil, como mexicanos compramos la idea desde hace mucho, pocos se manifiestan. Lo curioso es que los inconformes son o somos muchos, ¿que pasa con eso que solo se quejan? ¿por que no dan el brinco a la [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignright" style="width: 206px"><img title="Anonymous" src="http://www.it-networks.org/wp-content/uploads/2011/01/anonymous.jpg" alt="" width="196" height="147" /><p class="wp-caption-text">Anonymous</p></div>
<p>En México, nos han vendido que las manifestaciones son para atrasar a los demás, estorbos, un acto inútil, como mexicanos compramos la idea desde hace mucho, pocos se manifiestan. Lo curioso es que los inconformes son o somos muchos, ¿que pasa con eso que solo se quejan? ¿por que no dan el brinco a la manifestación? a ¿que le temen?,</p>
<h3>De las posibles causas de la apatía</h3>
<p>Creo que uno de los problemas es que esperamos a sentirnos identificados con <strong>todos</strong> los aspectos de cualquier movimiento, algo sin duda muy difícil ya que no hay dos mentes iguales, debemos encontrar el punto en común y potenciarlo, así como mantener al movimiento lo mas objetivo posible, cosa también difícil por que siempre habrá grupos que querrán adueñarse de los movimientos y hacerlos a su manera con todo y atribuciones, tal como pasó con el movimiento de Javier Sicilia, que empezó al menos recuerdo, como una exigencia a las autoridades a hacer su labor, y actualmente pareciera ser una petición para sacar al ejercito de las calles, o como está pasando en las manifestaciones por la educación chilena, <a href="http://diarioelobservador.cl/255-Intendente_estudiantes_estan_sometidos_a_dictadura_de_minorias_violentistas">que grupos radicales actúan con violencia </a>para perseguir el mismo fin que miles o millones de chilenos pacifistas desean, obviamente el morbo vende y los medios muestran a mas vándalos con bombas molotov, <a href="http://www.lanacion.cl/masivo-cacerolazo-por-educacion-en-todo-chile/noticias/2011-08-09/213024.html">que a estudiantes con cacerolas y batakas.</a></p>
<p>Pero el principal motivo es el <strong>miedo</strong>, esa razón que solo existe en las mentes de las personas, que ha sido cultivada por años por los medios y el boca a boca, y es que no la tenemos tan fácil como las manifestaciones pacificas de los españoles por que sabemos que aquí armas sobran, el problema es que la gente de bien no tiene, ni quiere usarlas. Además de que tampoco conocemos al enemigo, ni siquiera lo hemos definido, mientras unos dicen que el enemigo es el narcotráfico, otros dicen que son los políticos, y así con la pelotita saltando entre ambos, como sociedad estamos confundidos de a quien agradecer y a quien ignorar, aunque por practicidad terminamos agradeciendo  y temiendo a ambos.</p>
<h3>Del dicho al hecho</h3>
<p>Como mencionaba, millones de mexicanos están inconformes, violencia y pobreza es lo que mas se escucha, ¿que hace falta? no creo que la policía mexicana sea mas civica que la española, pero aquí la policía no ha golpeado a decenas de manifestantes, y es claramente por que no necesitan dispersar a nadie, la misma sociedad ha mantenido el lema de que "somos el país en el que no pasa nada", no creo que el problema sea del país, es de nosotros, por clavarnos ese tipo de "ideas" como si fuesen teorías científicas.<br />
Para romper la inercia que nos ha mantenido en nuestro confort durante tantos años necesitamos:</p>
<ul>
<li>Mostrar a la sociedad que manifestarse es nuestro derecho y oportunidad de cambiar lo que no nos gusta.</li>
<li>Hacer a las manifestaciones atractivas.</li>
<li>Infundir miedo.</li>
</ul>
<p>La población ignora que tiene el poder, por que pocas veces hemos hecho valer nuestros derechos a manifestarnos de manera masiva, sumando en lugar de fragmentando, que eso, ojalá podamos ver mas hacia el exterior para aprender de países como Egipto que logró la dimisión de Hosni Mubarak (ver video abajo), ganándose incluso la simpatía del ejercito (al fin y al cabo también son humanos), tengo esperanza de que mi localidad haya aprendido algo de las pasadas elecciones, que  por primera vez en la historia se eligió a un político de otro partido. En cambio, las manifestaciones tradicionales son para pedir, y ya no estamos para esas gentilezas, lo que tenemos que hacer es exigir, y hacerlo de manera creativa, las huelgas de hambre ya son aburridas, necesitamos algo nuevo, y masivo, que se manifiesten artistas y ciudadanos, no sindicatos victimizados, no a todos les interesa ir a un lugar a hacerse las víctimas, pero si a casi todos nos gustan las fiestas, sonidos y colores. Si el miedo es un método de control, usemoslo!, infundamos miedo a la población explicándole que pasaría si no hacen nada, o que está pasando ya por su omisión, aprovechemoslo a nuestro favor con información verídica y enfocada, solo si el miedo que infundamos es mayor que el miedo que los mantiene inertes se logrará, al final  el primero de los miedos desaparece, si no hacemos nada el segundo permanece.<br />
<iframe src="http://www.youtube.com/embed/ThvBJMzmSZI" frameborder="0" width="560" height="345"></iframe></p>
<h3>Esperanza</h3>
<p>Todo es relativo y el futuro es incierto, posiblemente la ciudadanía esté en un estatus de confort, con miedo y hambre, pero agusto, muchos han aprendido a vivir así por años, ese confort al que me refiero es similar al que tienen los estadounidenses, que olvidan las guerras que tienen solo por que no quieren perder los privilegios en los que han nacido y crecido, por acá sucede igual, hemos vivido en un confort otorgado por el narcotráfico, ha desaparecido de nuestra visión la prepotencia y corrupción, no queremos verlas por que no queremos perderlas. Por eso tal vez las cosas no cambien, hasta que nos demos cuenta que lo hemos perdido todo.<br />
<iframe src="http://www.youtube.com/embed/x2xuSHdjZ00" frameborder="0" width="560" height="345"></iframe></p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.punksolid.com/de-las-manifestaciones-mexicanas/2011/&via=Punksolid&text=De las Manifestaciones Méxicanas&related=José Palazuelos:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.punksolid.com/de-las-manifestaciones-mexicanas/2011/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Autocompletar con scriptaculous</title>
		<link>http://www.punksolid.com/autocompletar-con-scriptaculous/2011/</link>
		<comments>http://www.punksolid.com/autocompletar-con-scriptaculous/2011/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 14:08:23 +0000</pubDate>
		<dc:creator>Punksolid</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[Scriptaculous]]></category>

		<guid isPermaLink="false">http://www.punksolid.com/?p=671</guid>
		<description><![CDATA[Lo que vamos a hacer es un cuadro search box como el google suggest, que a diferencia de este, no haremos una petición ajax al servidor ya que tendremos los valores precargados en una variable javascript, útil cuando los registros son pocos y estáticos. Reconozco que a estas alturas medio mundo usa jquery, pero como [...]]]></description>
			<content:encoded><![CDATA[<p>Lo que vamos a hacer es un cuadro search box como el google suggest, que a diferencia de este, no haremos una petición ajax al servidor ya que tendremos los valores precargados en una variable javascript, útil cuando los registros son pocos y estáticos.<br />
Reconozco que a estas alturas medio mundo usa jquery, pero como persona de escaso conocimiento en el área, para el propósito me sirvió prototype y scriptaculous.</p>
<p>Lo primero que tenemos que hacer es <a href="http://script.aculo.us/downloads" target="_blank">descargar scriptaculous</a>, y extraemos todos los js dentro de una carpeta javascripts.</p>
<p>El siguiente paso es crear el archivo css.css para darle un diseño bonito al recuadro de opciones que aparecerán conforme vayamos escribiendo, el código de css.css es</p>
<p>&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">div<span style="color: #6666ff;">.autocomplete</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span><span style="color: #933;">0px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span><span style="color: #933;">0px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span><span style="color: #933;">250px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#fff</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span><span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#888</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span><span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
div<span style="color: #6666ff;">.autocomplete</span> ul <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span><span style="color: #933;">0px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span><span style="color: #933;">0px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">list-style-type</span><span style="color: #00AA00;">:</span><span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
div<span style="color: #6666ff;">.autocomplete</span> ul li<span style="color: #6666ff;">.selected</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">background-color</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#ffb</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
div<span style="color: #6666ff;">.autocomplete</span> ul li <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span><span style="color: #933;">2px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span><span style="color: #933;">32px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span><span style="color: #993333;">block</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">list-style-type</span><span style="color: #00AA00;">:</span><span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">cursor</span><span style="color: #00AA00;">:</span><span style="color: #993333;">pointer</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>El tercer paso es crear el archivo autocompletar.html donde incluiremos los javascripts de prototype y scriptaculous, automáticamente se incluirán todas las dependencias.</p>
<p>&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">&lt;script type=&quot;text/javascript&quot; src=&quot;javascripts/prototype.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;javascripts/scriptaculous.js?load=effects,controls&quot;&gt;
&lt;/script&gt;
<span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #003366; font-weight: bold;">var</span> bandsList <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>
  <span style="color: #3366CC;">'ABBA'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'AC/DC'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Aerosmith'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'America'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Bay City Rollers'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Black Sabbath'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Boston'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'David Bowie'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Can'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'The Carpenters'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Crass'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Deep Purple'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'The Doobie Brothers'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Eagles'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Fleetwood Mac'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Haciendo Punto en Otro Son'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Heart'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Iggy Pop and the Stooges'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Journey'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Judas Priest'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'KC and the Sunshine Band'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Kiss'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Kraftwerk'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Led Zeppelin'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Lindisfarne (band)'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Lipps, Inc'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Lynyrd Skynyrd'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Pink Floyd'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Queen'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Ramones'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'REO Speedwagon'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Rhythm Heritage'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Rush'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Sex Pistols'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Slade'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Steely Dan'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Stillwater'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Styx'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Supertramp'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Sweet'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Three Dog Night'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'The Village People'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Wings (fronted by former Beatle Paul McCartney)'</span><span style="color: #339933;">,</span>
  <span style="color: #3366CC;">'Yes'</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span>
   window.<span style="color: #000066;">onload</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #003366; font-weight: bold;">new</span> Autocompleter.<span style="color: #660066;">Local</span><span style="color: #009900;">&#40;</span>
        <span style="color: #3366CC;">'bands_from_the_70s'</span><span style="color: #339933;">,</span>
        <span style="color: #3366CC;">'band_list'</span><span style="color: #339933;">,</span>
        bandsList<span style="color: #339933;">,</span>
        <span style="color: #009900;">&#123;</span>ignoreCase<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>
&lt;body&gt;
&lt;p&gt;
  &lt;label for=&quot;bands_from&quot;&gt;Your favorite rock  band from the 70's:&lt;/label&gt;
  &lt;br /&gt;
  &lt;input id=&quot;bands_from_the_70s&quot; autocomplete=&quot;off&quot; size=&quot;40&quot; type=&quot;text&quot; value=&quot;&quot; /&gt;
&lt;/p&gt;
&nbsp;
&lt;div class=&quot;autocomplete&quot; id=&quot;band_list&quot; style=&quot;display:none&quot;&gt;&lt;/div&gt;</pre></div></div>

<p>&nbsp;</p>
<p>Y listo ya con eso debemos tener un textbox con sugerencias.</p>
<p><strong>Enlaces</strong></p>
<p><a href="http://madrobby.github.com/scriptaculous/autocompleter-local/" target="_blank">Autocompleter.Local</a> para ver los parámetros aceptados.</p>
<p><a href="http://jonisalonen.com/2011/crazy-fast-ajax-search-suggest-in-cakephp-using-browser-cache/" target="_blank">Ajax search suggest with cakephp</a></p>
<p><a href="http://www.tutorialspoint.com/cgi-bin/practice.cgi?file=scriptaculous_51" target="_blank">Ejemplo simple autocomplete.local</a></p>
<h2></h2>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.punksolid.com/autocompletar-con-scriptaculous/2011/&via=Punksolid&text=Autocompletar con scriptaculous&related=José Palazuelos:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.punksolid.com/autocompletar-con-scriptaculous/2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Busquedas de filtros complejos en CakePHP</title>
		<link>http://www.punksolid.com/busquedas-de-filtros-complejos-en-cakephp/2011/</link>
		<comments>http://www.punksolid.com/busquedas-de-filtros-complejos-en-cakephp/2011/#comments</comments>
		<pubDate>Fri, 12 Aug 2011 11:57:44 +0000</pubDate>
		<dc:creator>Punksolid</dc:creator>
				<category><![CDATA[Aplicaciones]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programas]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.punksolid.com/?p=644</guid>
		<description><![CDATA[Para comprender la situación mejor, necesitamos ver el screenshot de la vista. Hay varias formas de hacer esto, la mas común es usar la función query de CakePHP para armar la consulta SQL en base a condiciones by (@el_keogh) , está la función find, pero no se pueden poner condiciones dentro, así que lo que [...]]]></description>
			<content:encoded><![CDATA[<p>Para comprender la situación mejor, necesitamos ver el screenshot de la vista.</p>
<p><a href="http://www.punksolid.com/blog/wordpress/wp-content/uploads/2011/07/Selecci%C3%B3n_011.png"><img class="aligncenter size-full wp-image-660" title="Busqueda" src="http://www.punksolid.com/blog/wordpress/wp-content/uploads/2011/08/Selecci%C3%B3n_024.png" alt="" width="687" height="225" /></a></p>
<p>Hay varias formas de hacer esto, la mas común es usar la función query de CakePHP para armar la <a href="http://pastebin.com/XS1rMtr1" target="_blank">consulta SQL en base a condiciones</a> by (<a href="http://twitter.com/el_keogh" target="_blank">@el_keogh)</a> , está la función find, pero no se pueden poner condiciones dentro, así que lo que se puede hacer es armar el array conditions desde afuera de la siguiente forma:</p>
<p>&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> 
<span style="color: #666666; font-style: italic;">//Bloque #1 asignacion de variables para comodidad</span>
<span style="color: #000088;">$alumnoid</span><span style="color: #339933;">=</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Examene'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'cuenta'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$user</span><span style="color: #339933;">=</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Examene'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'user'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$fechaInicio</span><span style="color: #339933;">=</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Examene'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Fecha de Inicio'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$fechaFin</span><span style="color: #339933;">=</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Examene'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Fecha de Fin'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$formadepago</span><span style="color: #339933;">=</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Examene'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'forma_de_pago'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$resultado</span><span style="color: #339933;">=</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Examene'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'resultado'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$conditions</span><span style="color: #339933;">=</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Bloque #2 Condiciones tabla Alumnos</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Examene'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'nombre'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$conditions</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Alumno.nombre LIKE'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'%'</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Examene'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'nombre'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'%'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Examene'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'apellido_paterno'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$conditions</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Alumno.apellido_paterno LIKE'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'%'</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Examene'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'apellido_paterno'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'%'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Examene'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'apellido_materno'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$conditions</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Alumno.apellido_materno LIKE'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'%'</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Examene'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'apellido_materno'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'%'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #666666; font-style: italic;">//Bloque #3 Condiciones tabla Examenes</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$alumnoid</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$conditions</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Examene.alumno_id'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #000088;">$alumnoid</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$user</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$conditions</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Examene.user_id'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #000088;">$user</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #666666; font-style: italic;">//Bloque #4 Condiciones de intervalos de fecha</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fechaInicio</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$conditions</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Examene.created &gt;'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$fechaInicio</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fechaFin</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$conditions</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Examene.created &lt;='</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span><span style="color: #000088;">$fechaFin</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' 23:59:59'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$formadepago</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$conditions</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Examene.forma_de_pago'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span><span style="color: #000088;">$formadepago</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$resultado</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$conditions</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Examene.resultado'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span><span style="color: #000088;">$resultado</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #666666; font-style: italic;">//Bloque #5 query</span>
<span style="color: #000088;">$conditions</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Examene.statusid &lt;&gt;'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">4</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$examenes</span><span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">paginate</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$conditions</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<h3>Bloque #1 asignación de variables</h3>
<p>En este caso se manejan dos tablas distintas de la base de datos, están relacionadas entre si, Alumnos y Examenes, utilicé asignación de variables para mas comodidad en su manejo, pero no son necesarias.</p>
<h3>Bloque #2 Condiciones de tabla Alumnos</h3>
<p>Las condiciones determinan cuando hay datos en los campos, si no hay datos, no hay condición que aplicar y nada que meter en el array, las primeras tres condiciones pertenecen a la tabla alumnos, de la cual se va a buscar por nombre NO exacto por eso los LIKE y la concatenación del símbolo de porcentaje. Para que esto funcione, las relaciones en el modelo deben estar previamente establecidas.</p>
<h3>Bloque #3 Condiciones de tabla Examenes</h3>
<p>En el segundo bloque ponemos las condiciones de la otra tabla, nada especial ya que los valores de esos campos deben ser exactos.</p>
<h3>Bloque #4 Condiciones de intervalos de fecha</h3>
<p>Para cuando tenemos intervalos de fechas y tenemos el formato en Datetime, es necesario concatenar la hora en la que termina el dia, si no lo hiciéramos contaría hasta la hora 00:00:00 no devolviéndonos los resultados del ultimo dia especificado.</p>
<h3>Bloque #5 Query</h3>
<p>La función paginate, se utiliza casi de la misma manera que un <a href="http://book.cakephp.org/view/1030/Complex-Find-Conditions" title="Complex Find Conditions" target="_blank">find</a> y listo automagicamente cakephp devolverá solo los exámenes de los campos donde se les haya especificado algun dato, notese que este tipo de búsqueda es de tipo AND, o sea cada campo va filtrando aun mas la búsqueda, en lugar de añadir nuevas coincidencias.</p>
<p>Cualquier duda o comentario es bienvenido.<br />
Referencias<br />
<a href="http://book.cakephp.org/view/1030/Complex-Find-Conditions" title="Documentación oficial cakephp" target="_blank">Complex Find Conditions</a><br />
<a href="http://book.cakephp.org/view/164/pagination" target="_blank">Pagination in cakephp</a></p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.punksolid.com/busquedas-de-filtros-complejos-en-cakephp/2011/&via=Punksolid&text=Busquedas de filtros complejos en CakePHP&related=José Palazuelos:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.punksolid.com/busquedas-de-filtros-complejos-en-cakephp/2011/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Invitar a todos en facebook</title>
		<link>http://www.punksolid.com/invitar-a-todos-en-facebook/2011/</link>
		<comments>http://www.punksolid.com/invitar-a-todos-en-facebook/2011/#comments</comments>
		<pubDate>Sun, 31 Jul 2011 01:10:30 +0000</pubDate>
		<dc:creator>Punksolid</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[community manager]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[userscripts]]></category>

		<guid isPermaLink="false">http://www.punksolid.com/?p=648</guid>
		<description><![CDATA[Facebook constantemente cambia su arquitectura por innovación o para no poder enviar invitaciones masivas que podrían funcionar como spam, por eso aunque ya publiqué anteriormente como mandar invitaciones masivas, ya es obsoleto, y aquí explico una nueva forma de hacerlo para ello necesitamos 3 pasos: Instalar firefox, opcionalmente Google Chrome Instalar greasemonkey despues de reiniciar [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Facebook</strong> constantemente cambia su arquitectura por innovación o para no poder enviar invitaciones masivas que podrían funcionar como spam, por eso aunque ya publiqué anteriormente como <a title="Invitar a todos tus amigos de Facebook a un evento." href="http://www.punksolid.com/invitar-a-todos-tus-amigos-de-facebook-a-un-evento/2011/" target="_blank">mandar invitaciones masivas</a>, ya es obsoleto, y aquí explico una nueva forma de hacerlo para ello necesitamos 3 pasos:</p>
<blockquote>
<ol>
<li>Instalar firefox, opcionalmente Google Chrome</li>
<li>Instalar <a title="Greasemonkey para firefox" href="https://addons.mozilla.org/es-es/firefox/addon/greasemonkey/">greasemonkey</a> despues de reiniciar firefox.</li>
<li>Instalar el script que se instala sobre greasemonkey, eso se hace entrando a la pagina del script <a href="http://userscripts.org/scripts/show/89653">Facebook: InviteThemAll</a> y le damos en el botón install y seguimos las instrucciones.</li>
</ol>
</blockquote>
<p>&nbsp;</p>
<p><img class="alignleft size-full wp-image-653" title="Selección_018" src="http://www.punksolid.com/blog/wordpress/wp-content/uploads/2011/07/Selecci%C3%B3n_018.png" alt="" width="231" height="228" /> Ya para finalizar nos vamos a nuestra pagina de nuestro evento, presionamos seleccionar invitados del lado derecho</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Y para finalizar damos clic en el botón select all, esperamos unos segundos o minutos dependiendo de la computadora y el numero de amigos y hacemos clic en <strong>enviar</strong>.</p>
<p><img class="aligncenter size-full wp-image-652" title="Selección_016" src="http://www.punksolid.com/blog/wordpress/wp-content/uploads/2011/07/Selecci%C3%B3n_016.png" alt="" width="571" height="351" /></p>
<h3>Fuentes</h3>
<p><a href="https://addons.mozilla.org/es-es/firefox/addon/greasemonkey/" target="_blank">Extensión Greasemonkey para Firefox </a></p>
<p>Script para Greasemonkey | <a href="http://userscripts.org/scripts/show/89653" target="_blank">Facebook invite them all</a></p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.punksolid.com/invitar-a-todos-en-facebook/2011/&via=Punksolid&text=Invitar a todos en facebook&related=José Palazuelos:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.punksolid.com/invitar-a-todos-en-facebook/2011/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Barcamp Culiacán 2011</title>
		<link>http://www.punksolid.com/barcamp-culiacan-2011/2011/</link>
		<comments>http://www.punksolid.com/barcamp-culiacan-2011/2011/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 06:52:11 +0000</pubDate>
		<dc:creator>Punksolid</dc:creator>
				<category><![CDATA[Exposiciones]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[BarcampCLN]]></category>
		<category><![CDATA[culiacan]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Mexico]]></category>
		<category><![CDATA[Sinaloa]]></category>
		<category><![CDATA[Tecnologia]]></category>

		<guid isPermaLink="false">http://www.punksolid.com/?p=639</guid>
		<description><![CDATA[&#160; Sinaloa es un estado que en los últimos años ha estado apostando por el desarrollo tecnológico, como en muchos otros lugares, hay el talento suficiente para desarrollar y aplicar tecnología. También hay empresas grandes en la entidad, como Coppel, Homex, Neoris entre otras que cuentan con grandes áreas de ingenieros en sistemas y afines. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="Logo del Barcamp Culiacán" src="http://barcamp.org/f/logoBCC1.png" alt="Bonito logo del Barcamp Culiacán" width="330" height="100" /></p>
<p>&nbsp;</p>
<p>Sinaloa es un estado que en los últimos años ha estado apostando por el desarrollo tecnológico, como en muchos otros lugares, hay el talento suficiente para desarrollar y aplicar tecnología. También hay empresas grandes en la entidad, como Coppel, Homex, Neoris entre otras que cuentan con grandes áreas de ingenieros en sistemas y afines. Así mismo hay muchos estudiantes deseosos de aprender, autodidactas en su estado puro.</p>
<p>Todo eso es genial, y si podemos potenciarlo de alguna manera, puede ser algo que cambié el estado, actualmente creo que cada area está desconectada de otra, por ejemplo los jovenes aprendices no encuentran buenas referencias, las empresas no encuentran talentos, y los talentos no encuentran socios. Es por eso que creo que un evento como un Barcamp puede potenciar el desarrollo de todos.</p>
<p>Por eso varios organizadores hemos planeado #<strong>BarcampCLN</strong> que es el primer Barcamp que se llevará a cabo en la ciudad. Un barcamp tiene varias modalidades, entre ellos la forma de desconferencias que será la que utilizaremos en la primera edición. Una desconferencia es como una conferencia informal dada por los mismos asistentes, en un Barcamp no hay gurúes, solo participantes. Al inicio del ida habrá un pintarrón con los horarios para disponibles para dar las charlas, los asistentes escribirán su nombre para apartar el horario. No es necesario llevar diapositivas, pero contaremos con proyector si alguien desea utilizarlo.</p>
<p>Así que como apasionado de la tecnología, me complace invitarlos para compartir ideas, trucos, tips, o solo para hechar la platicada. Si se puede se me antoja dar una charla de desarrollo de aplicaciones nativas para Ubuntu, ¿'que tal?. =)</p>
<p>&nbsp;</p>
<p><img class="aligncenter" title="Poster #BarcampCLN Culiacán" src="http://s3.amazonaws.com/twitpic/photos/full/321281902.jpg?AWSAccessKeyId=AKIAJF3XCCKACR3QDMOA&amp;Expires=1308725336&amp;Signature=4gKDidd70hejwSh8%2Bi2OGQwHoJM%3D" alt="Poster #BarcampCLN Culiacán" width="518" height="800" /></p>
<p>P.D. Si planeas asistir y tienes twitter, ayudanos haciendo promocion en<a href="http://www.shoutatweet.com/share/agtzaG91dGF0d2VldHINCxIFVHdlZXQYg5cIDA" target="_blank"> shoutatweet</a>, si no tienes twitter, ayudanos pasando la voz, este evento es de todos, y cualquier promoción es necesaria.</p>
<p>P.D.2 El hashtag para conversar en twitter es #BarcampCLN.</p>
<h4>Enlaces</h4>
<p>Pagina principal de Barcamp Culiacan | <a href="http://www.barcampculiacan.com">http://www.barcampculiacan.com</a></p>
<p><a href="http://www.facebook.com/BarCampCln?ref=ts">Pagina oficial en facebook</a></p>
<p>Twitter | <a href="http://www.twitter.com/barcampcln">@BarcampCLN</a></p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.punksolid.com/barcamp-culiacan-2011/2011/&via=Punksolid&text=Barcamp Culiacán 2011&related=José Palazuelos:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.punksolid.com/barcamp-culiacan-2011/2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cakephp-instaweb</title>
		<link>http://www.punksolid.com/cakephp-instaweb/2011/</link>
		<comments>http://www.punksolid.com/cakephp-instaweb/2011/#comments</comments>
		<pubDate>Thu, 12 May 2011 08:12:43 +0000</pubDate>
		<dc:creator>Punksolid</dc:creator>
				<category><![CDATA[Aplicaciones]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Ubuntu 10.10]]></category>
		<category><![CDATA[Ubuntu 11.04]]></category>

		<guid isPermaLink="false">http://www.punksolid.com/?p=636</guid>
		<description><![CDATA[cakephp-instaweb server es un webserver pequeño con todas las configuraciones necesarias para desarrollar en cakephp, no necesitas instalar todo el entorno php. Funciona igual al django-runserver, solo en la terminal te colocas en la carpeta de la aplicación, corres el comando y listo, tendrás tu app funcionando en http://localhost.com:3000 Si usas Ubuntu 10.10 y cakephp [...]]]></description>
			<content:encoded><![CDATA[<p><strong><img class="alignright" title="Cakephp" src="http://cakephp.org/img/new.png" alt="cakephp" width="134" height="132" />cakephp-instaweb</strong> server es un webserver pequeño con todas las configuraciones necesarias para desarrollar en cakephp, no necesitas instalar todo el entorno php. Funciona igual al django-runserver, solo en la terminal te colocas en la carpeta de la aplicación, corres el comando y listo, tendrás tu app funcionando en http://localhost.com:3000</p>
<p>Si usas Ubuntu 10.10 y cakephp 1.3.8 te marcará un error</p>
<blockquote>
<h3>CGI Script Error</h3>
<h3>Premature end of script headers.</h3>
</blockquote>
<p>Si instalaste cakephp-instaweb desde los repositorios de maverick se habrá instalado la versión 0.4.X, el error anterior se soluciona con la versión mas nueva 0.5-1 para instalarlo primero debes desinstalar completamente el cakephp-instaweb y luego <a href="https://launchpad.net/ubuntu/natty/amd64/cakephp-instaweb/0.5-1">descargar el .deb desde launchpad para Ubuntu Natty</a>, no causa conflicto alguno.</p>
<p>Con eso se habrá solucionado el problema.</p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.punksolid.com/cakephp-instaweb/2011/&via=Punksolid&text=cakephp-instaweb&related=José Palazuelos:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.punksolid.com/cakephp-instaweb/2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problema para bootear USB de Ubuntu 11.04 &#8216;Error setting up gfxboot&#8217;</title>
		<link>http://www.punksolid.com/problema-para-bootear-usb-de-ubuntu-11-04-error-setting-up-gfxboot/2011/</link>
		<comments>http://www.punksolid.com/problema-para-bootear-usb-de-ubuntu-11-04-error-setting-up-gfxboot/2011/#comments</comments>
		<pubDate>Sun, 08 May 2011 01:11:16 +0000</pubDate>
		<dc:creator>Punksolid</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Boot]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[Ubuntu 11.04]]></category>

		<guid isPermaLink="false">http://www.punksolid.com/?p=632</guid>
		<description><![CDATA[Al querer inicializar de un USB de Ubuntu 11.04 en algunas computadoras, principalmente netbooks toshiba, en mi caso la NB255 aparece el siguiente error: graphics initialization failed Error setting up gfxboot boot: Para continuar con la instalación basta con solo escribir 'help' y esperar unos segundos y todo continuar normalmente, es un bug bastante bobo [...]]]></description>
			<content:encoded><![CDATA[<p>Al querer inicializar de un USB de Ubuntu 11.04 en algunas computadoras, principalmente netbooks toshiba, en mi caso la NB255 aparece el siguiente error:</p>
<blockquote>
<h3>graphics initialization failed<br />
Error setting up gfxboot<br />
boot:</h3>
</blockquote>
<p>Para continuar con la instalación basta con solo escribir 'help' y esperar unos segundos y todo continuar normalmente, es un bug bastante bobo y sencillo de pasar.</p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.punksolid.com/problema-para-bootear-usb-de-ubuntu-11-04-error-setting-up-gfxboot/2011/&via=Punksolid&text=Problema para bootear USB de Ubuntu 11.04 'Error setting up gfxboot'&related=José Palazuelos:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.punksolid.com/problema-para-bootear-usb-de-ubuntu-11-04-error-setting-up-gfxboot/2011/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Como imprimir en impresora (Miniprinter) desde Python en Linux</title>
		<link>http://www.punksolid.com/como-imprimir-en-impresora-miniprinter-desde-python-en-linux/2011/</link>
		<comments>http://www.punksolid.com/como-imprimir-en-impresora-miniprinter-desde-python-en-linux/2011/#comments</comments>
		<pubDate>Sat, 09 Apr 2011 22:08:43 +0000</pubDate>
		<dc:creator>Punksolid</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[Autotransportes]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.punksolid.com/?p=626</guid>
		<description><![CDATA[Como en muchas otras cosas, apenas soy un novato y hay muchas formas de hacer lo que expongo en el titulo, está podría no ser la mejor, pero es una de ellas y por supuesto gracias a @Jorgekbw3 que encontró la solución: Después de haber instalado la impresora en cuestión y haberla colocado como predeterminada [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignright" style="width: 310px"><img title="Via MrTopf" src="http://farm3.static.flickr.com/2202/2050489689_f986cb33f3.jpg" alt="" width="300" height="272" /><p class="wp-caption-text">Via MrTopf</p></div>
<p>Como en muchas otras cosas, apenas soy un novato y hay muchas formas de hacer lo que expongo en el titulo, está podría no ser la mejor, pero es una de ellas y por supuesto gracias a <a href="http://twitter.com/jorgekbw3" target="_blank">@Jorgekbw3</a> que encontró la solución:</p>
<p>Después de haber instalado la impresora en cuestión y haberla colocado como predeterminada con el administrador de impresoras, ya debe ser accesible a impresión con el comando</p>
<blockquote><p>lp texto.txt</p></blockquote>
<p>Bajo ese principio accesaremos al sistema desde python con</p>
<blockquote><p>import os</p></blockquote>
<blockquote><p>printer=os.popen('lpr','w')</p></blockquote>
<blockquote><p>printer.write('texto')</p></blockquote>
<blockquote><p>printer.close()</p></blockquote>
<p>Y eso es todo.</p>
<p>Probado con Ubuntu 10.10, Python 2.6 y Miniprinter Epson TM-T88V</p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.punksolid.com/como-imprimir-en-impresora-miniprinter-desde-python-en-linux/2011/&via=Punksolid&text=Como imprimir en impresora (Miniprinter) desde Python en Linux&related=José Palazuelos:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.punksolid.com/como-imprimir-en-impresora-miniprinter-desde-python-en-linux/2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

