<?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>Push The Button &#187; Scripts y Programacion</title>
	<atom:link href="http://pushthebutton.es/archivos/category/scripts-y-programacion/feed" rel="self" type="application/rss+xml" />
	<link>http://pushthebutton.es</link>
	<description>Worklog de electronica, DIY, e informática de Alwar</description>
	<lastBuildDate>Thu, 10 May 2012 10:27:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Empaquetador de practicas para Linux &#8211; PaKetX v0.1</title>
		<link>http://pushthebutton.es/archivos/empaquetador-de-practicas-para-linux-paketx-v0-1</link>
		<comments>http://pushthebutton.es/archivos/empaquetador-de-practicas-para-linux-paketx-v0-1#comments</comments>
		<pubDate>Wed, 14 Apr 2010 12:01:59 +0000</pubDate>
		<dc:creator>Alwar</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Scripts y Programacion]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://pushthebutton.es/?p=205</guid>
		<description><![CDATA[Este programa está escrito con la intención de proporcionar una solución a los alumnos de la Universidad Rey Juan Carlos I de Madrid, usuarios de Linux que necesitan entregar sus practicas empaquetadas con el programa que proporciona la universidad. Yo no guardo ninguna relación con la universidad, salvo que estudio allí. Su funcionamiento es bien [...]]]></description>
			<content:encoded><![CDATA[<p>Este programa está escrito con la intención de proporcionar una solución a los alumnos de la Universidad Rey Juan Carlos I de Madrid, usuarios  de Linux que necesitan entregar sus practicas empaquetadas con el programa que proporciona la universidad. Yo no guardo ninguna relación con la universidad, salvo que estudio allí.<br />
<img src="http://img683.imageshack.us/img683/6403/paketx.png" alt="PaKetX - Empaquetador de practicas para linux" /><br />
Su funcionamiento es bien sencillo. Lee un archivo XML (que se distribuye en zip con extensión <a href="http://dac.escet.urjc.es/">*.dac</a>) en el cual se especifica que archivos hay que entregar para la realización de la practica, y cuantos miembros puede tener el grupo de trabajo. El programa mira que en el directorio donde se encuentra estén los archivos de la practica, y si están pide los datos de los miembros de grupo (nombre y expediente), lo guarda en un archivo de texto y lo &#8220;zipea&#8221; todo junto. Este zip debería ser totalmente compatible con los que genera la aplicación para windows. Aunque esto todavía no lo he comprobado.</p>
<p>Ademas le he añadido otra funcionalidad (como mola el software libre) y es que si la ejecutas con la opción make (no la de compilar si no &#8220;paketX make&#8221;) pues te crea una carpeta con el nombre de la practica y en ella todos los archivos (en blanco claro) que hay que entregar, así te ahorras el trabajo de crearte la estructura de la practica. Claro que solo funciona con archivos de texto (por ejemplo para los VHDl *.vhd o los sources de Pascal *.pas), si te genera un archivo *.pdf lo puedes borrar porque solo sirve para ver que tienes que entregar.</p>
<p>Es mi primer script serio en bash, y espero que no seáis muy duros con el, ya que hace dos dias, sabía bien poco sobre este lenguaje de scripting. Osea que tendrá sus fallos.<br />
Esta escrito y testado bajo Debian GNU/LINUX squeeze. Que yo sepa solo necesita para funcionar, bash, p7zip y XMLStarlet.</p>
<p>El programa lo podéis bajar desde el <a href="http://alwar.mainfri.com/Downloads/paketX/paketX">archivo de alwar</a></p>
<h2><strong>Actualización v0.2<br />
</strong></h2>
<p>He actualizado el script, ya que antes separaba los nombres con un espacio y el programa para windows lo hace con un tabulador. Ahora el script también mete un tabulador. Estuve comparando una practica empaquetada con ambos programas, y a excepción del tabulador el archivo era idéntico. Solo cambia una cosa, y es que el programa para windows nombra a la practica con los nombres de los expedientes a la inversa de como los escribes, mientras que el script para linux lo pone en el orden que fueron escritos. Esto no creo que sea un problema ya que cuando examinen la practica no creo que sepan en que orden los introdujiste.</p>
]]></content:encoded>
			<wfw:commentRss>http://pushthebutton.es/archivos/empaquetador-de-practicas-para-linux-paketx-v0-1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como cambiar unas teclas por otras (KeyTweak Remapper)</title>
		<link>http://pushthebutton.es/archivos/como-cambiar-unas-teclas-por-otras-keytweak-remapper</link>
		<comments>http://pushthebutton.es/archivos/como-cambiar-unas-teclas-por-otras-keytweak-remapper#comments</comments>
		<pubDate>Sun, 18 Oct 2009 20:52:01 +0000</pubDate>
		<dc:creator>Alwar</dc:creator>
				<category><![CDATA[Electronica y Hardware]]></category>
		<category><![CDATA[Hacks]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Scripts y Programacion]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://pushthebutton.es/?p=165</guid>
		<description><![CDATA[Me he comprado un dell Vostro 1520 como portatil para ir a la universidad. El cacharro va muy bien equipado y visualmente es elegante y sencillo. Al abrirlo (descubres el primer defecto, alguno tenía que tener) ves que el teclado es mas pequeño, pero no, solo es un efecto visual de tener los altavoces a [...]]]></description>
			<content:encoded><![CDATA[<p>Me he comprado un dell Vostro 1520 como portatil para ir a la universidad. El cacharro va muy bien equipado y visualmente es elegante y sencillo. Al abrirlo (descubres el primer defecto, alguno tenía que tener) ves que el teclado es mas pequeño, pero no, solo es un efecto visual de tener los altavoces a los lados del teclado y un biselado muy pronunciado en las teclas.<br />
<span id="more-165"></span><br />
Entonces a la hora de programar, (linea arriba, linea abajo, borrar, escrbiri borrar&#8230;..) te das cuenta de que te has equivocado de portatil y tenias que haber elegido uno con teclado completo. Lo piensas para dentro y no quieres reconocer que te has equivocado, no puedes, has hecho una arriesgada inversion que al menos debe durate para toda la carrera (o mas, preferentemente). Sientes que te has equivocado y piensas: &#8220;ya me acostumbrare a tener que cruzar todo el teclado para darle a inicio (ir al principio de la linea) o fin&#8230; Pero como no quieres esperar a acostumbrarte, pones tus neuronas en marcha y le preguntas a google. Y ahí estaba la solución, (como ese 99% de las veces).</p>
<p><a href="http://webpages.charter.net/krumsick/">KeyTweak</a> es un programa que puedes utilizar para desactivar telcas que no quieres que hagan nada, o simplemente porque quieres que cuando pulses la p escriba q. O como en mi caso, que tu teclado tiene las teclas inicio y fin muy lejos de los cursores y decides que &#8216;Re Pag&#8217; y &#8216;Av Pag&#8217; seran &#8216;Inicio&#8217; y &#8216;Fin&#8217; respectivamente.<br />
<img class="aligncenter" title="RePag AvPag" src="http://pushthebutton.es/wp-content/uploads/2009/10/IMG_0210.JPG" alt="" width="500" /></p>
<p><img class="aligncenter" title="Inicio Fin" src="http://pushthebutton.es/wp-content/uploads/2009/10/IMG_0211.JPG" alt="" width="500" /></p>
<p>Ahora solo falta poder cambiarles las pegatinas y que correspondiesen las teclas con lo que hacen, pero todo no se puede tener en esta vida.</p>
<p><span style="color: #ff9900;"><strong>Como funcioan KeyTweak:</strong></span></p>
<p>Te bajas el programa de su página, lo instalas y lo abres. Tendras una interfaz como esta:</span></span></p>
<p style="text-align: center;"><a href="http://pushthebutton.es/wp-content/uploads/2009/10/KeyTweak_GUI.PNG"><img class="aligncenter" title="GUI KeyTweak" src="http://pushthebutton.es/wp-content/uploads/2009/10/KeyTweak_GUI.PNG" alt="" width="539" height="353" /></a></p>
<p>El programa basicamente cambia unas teclas por otras. Y lo puedes hacer con todas las teclas de telcado. Esto lo puedes hace de 3 formas. Con la interfaz principal (el teclado que sale dibujado y el select de abajo), con el full teach mode y con el half teach mode. Todos hacen exactamente lo mismo, lo que de una forma u otra.  Yo use el full teach mode porque es el mas sencillo a mi parecer. Para abrir la ventana del Full Teach Mode hay un boton abajo de la interfaz principal. Al pincharlo se abre otra ventana con 3 botones, el de arriba es para empezar el scaneo, y los de abajo son para mapear o para cancelar.</p>
<p><a href="http://pushthebutton.es/wp-content/uploads/2009/10/FullTeachMode.PNG"><img class="alignnone" title="Full Teach Mode KeyTweak" src="http://pushthebutton.es/wp-content/uploads/2009/10/FullTeachMode.PNG" alt="" width="539" height="353" /></a></p>
<p>Para cambiar una tecla por otra pulsamos el boton &#8220;Begin Teach Mode&#8221; y acontinuación pulsamos la tecla que queremos cambiar de lugar, nos aparecera el &#8220;scan code&#8221; de la tecla pulsada en un TextBox, a continuación pulsamos la tecla a donde queremos llevar la tecla anterior y le damos al boton de &#8220;Remap key #1 to Key #2&#8243;. Volver a dar a &#8220;Full teach mode&#8221; y repetir el paso con las demas teclas que queramos cambiar, y recordar asignar otras teclas para las teclas que cambieis, es decir, si pongo el &#8220;fin&#8221; en el &#8220;av pag&#8221; no olvidar poner en otro lugar el &#8220;av pag&#8221; (por ejemplo en &#8220;fin&#8221;) ya que si no tendriamos dos teclas &#8220;fin&#8221;.</p>
<p>Una vez terminados todos los cambios, en la interfaz principal pinchas en &#8220;apply&#8221;. El programa os preguntara si quereis reiniciar ya que es necesario reiniciar para que se hagan efectivos los cambios. Una vez aplicados los cambios cuando abramos el programa en la parte de arriba del programa nos saldrá una lista de las teclas cambiadas y un boton para restaurar el teclado y dejarlo todo como antes.</p>
<p><a href="http://webpages.charter.net/krumsick/KeyTweak%20Manual.pdf">Manual del programa</a> [PDF 8 paginas 238 Kb]</p>
<p><a href="http://webpages.charter.net/krumsick/">Web del Programa</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pushthebutton.es/archivos/como-cambiar-unas-teclas-por-otras-keytweak-remapper/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Matrices de Diodos</title>
		<link>http://pushthebutton.es/archivos/matrices-de-diodos</link>
		<comments>http://pushthebutton.es/archivos/matrices-de-diodos#comments</comments>
		<pubDate>Sat, 19 Jul 2008 19:50:12 +0000</pubDate>
		<dc:creator>Alwar</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Electronica y Hardware]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Scripts y Programacion]]></category>
		<category><![CDATA[diodos]]></category>
		<category><![CDATA[led]]></category>
		<category><![CDATA[leds]]></category>
		<category><![CDATA[matrices]]></category>
		<category><![CDATA[matrix]]></category>
		<category><![CDATA[matriz]]></category>

		<guid isPermaLink="false">http://pushthebutton.es/?p=57</guid>
		<description><![CDATA[Ya por fin conseguí hacerme con unas cuantas matrices de LEDs y así me ahorro soldar centenares de leds. Por falta de previsión no me he hecho con un convertidor serie paralelo (shift register) y no he podido probar como mostrar caracteres en una matriz de 8&#215;8 como la de la fotografía, a sí que [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://pushthebutton.es/images/matriz.png" border="0" alt="Matriz Luciendo" /></p>
<p>Ya por fin conseguí hacerme con unas cuantas matrices de LEDs y así me ahorro soldar centenares de leds.</p>
<p>Por falta de previsión no me he hecho con un convertidor serie paralelo (shift register) y no he podido probar como mostrar caracteres en una matriz de 8&#215;8 como la de la fotografía, a sí que me he tenido que conformar con  hacer un pequeño efecto de cortinilla con un modulo para ir probando. Es bastante sencillito.  Tras localizar cada pin (que es bastante laborioso y no he encontrado un datasheet decente) conectamos los negativos al GND de la placa arduino, y los 8 positivos a 8 entradas de la placa arduino. Y después con un bucle encendemos las columnas que queremos&#8230;</p>
<p><span id="more-57"></span>Este es el resultado:</p>
<p><embed src="http://www.metacafe.com/fplayer/1507841/.swf" width="400" height="345" wmode="transparent" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"> </embed><br /><font size = 1><a href="http://www.metacafe.com/watch/1507841//">Ir a MetaCafe</a></font></p>
<p>Y aquí otra forma:<br />
<embed src="http://www.metacafe.com/fplayer/1512694/.swf" width="400" height="345" wmode="transparent" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"> </embed><br /><font size = 1><a href="http://www.metacafe.com/watch/1512694//">Ir a MetaCafe</a></font></p>
<p>El esquema de conexión es el siguiente:<br />
<img src="http://pushthebutton.es/images/matriz-esquema.png" border="0" alt="Esquema de conexion" /></p>
<p>Es una putada que los positivos no estén en un lado y los negativos en otro, sería bastante mas fácil.</p>
<p>Ahora abrimos el IDE de arduino y pegamos el codigo:<br />
<img src="http://pushthebutton.es/images/matriz-codigo.png" border="0" alt="Arduino IDE" /></p>
<p>Ahora dependiendo del efecto que queramos tenemos un bucle o dos dentro del &#8220;void loop&#8221;:<br />
El mas simple es el que esta dando vueltas de un lado a otro (se encienden las columnas por este orden: 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8&#8230;):<br />
<code><br />
void setup() {<br />
  pinMode(2, OUTPUT);<br />
  pinMode(3, OUTPUT);<br />
  pinMode(4, OUTPUT);<br />
  pinMode(5, OUTPUT);<br />
  pinMode(6, OUTPUT);<br />
  pinMode(7, OUTPUT);<br />
  pinMode(8, OUTPUT);<br />
  pinMode(9, OUTPUT);<br />
}</p>
<p>void loop() {<br />
  for (int i=2; i <= 9; i++){<br />
    digitalWrite(i, HIGH); //Encendemos<br />
    delay(100); //Esperamos<br />
    digitalWrite(i, LOW); //Apagamos y vamos a la siguiente<br />
  }<br />
}</code></p>
<p>Pero tambien podemos hacer uno que valla de un lado al otro (las columnas se encienden 1, 2, 3, 4, 5, 6, 7, 8, 7, 6, 5, 4, 3, 2, 1...):<br />
<code>void setup() {<br />
  pinMode(2, OUTPUT);<br />
  pinMode(3, OUTPUT);<br />
  pinMode(4, OUTPUT);<br />
  pinMode(5, OUTPUT);<br />
  pinMode(6, OUTPUT);<br />
  pinMode(7, OUTPUT);<br />
  pinMode(8, OUTPUT);<br />
  pinMode(9, OUTPUT);<br />
}</p>
<p>void loop() {<br />
  for (int i=2; i <= 9; i++){<br />
    digitalWrite(i, HIGH); //<br />
    delay(100);<br />
    digitalWrite(i, LOW); //<br />
  }<br />
  for (int i=9; i >= 2; i--){<br />
    digitalWrite(i, HIGH); //<br />
    delay(100);<br />
    digitalWrite(i, LOW); //<br />
  }<br />
}</code></p>
<p>Pero esto solo son dos ejemplos, deja volar la imaginación, experimenta con el código y observa que obtienes!</p>
<p>Si buscáis en internet, encontrareis por ejemplo muy buenos <a href="http://www.instructables.com">instructables</a> como <a href="http://www.instructables.com/id/SPF2HSWFHAVXW7Z/">este</a> o como <a href="http://www.instructables.com/id/USB-LED-scrolling-marquee-sign/">este otro</a></p>
<p>Bueno y una vez tengamos varios "shift registers" habrá que avanzar algo mas no?</p>
<p>PD: En un <a href="http://pushthebutton.es/archivos/puzzlemation-y-matrices-de-diodos/">articulo</a> anterior tenéis una mas información sobre esto.</p>
]]></content:encoded>
			<wfw:commentRss>http://pushthebutton.es/archivos/matrices-de-diodos/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Motores de Busqueda para Firefox</title>
		<link>http://pushthebutton.es/archivos/motores-de-busqueda-para-firefox</link>
		<comments>http://pushthebutton.es/archivos/motores-de-busqueda-para-firefox#comments</comments>
		<pubDate>Sat, 24 May 2008 13:43:27 +0000</pubDate>
		<dc:creator>Alwar</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Scripts y Programacion]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[search]]></category>

		<guid isPermaLink="false">http://pushthebutton.es/?p=54</guid>
		<description><![CDATA[Como se me da también el ingles que tengo que estar siempre buscando palabritras en el diccionario, y me gusta hacer las cosas rapido, me canse de tener que estar cargando siempre la web del wordreference, escribir la palabreja y esperar a la traducción. Ahora es mas rápido! Gracias a firefox y sus motores de [...]]]></description>
			<content:encoded><![CDATA[<p>Como se me da también el ingles  que tengo que estar siempre buscando palabritras en el diccionario, y me gusta hacer las cosas rapido, me canse de tener que estar cargando siempre la web del wordreference, escribir la palabreja y esperar a la traducción. Ahora es mas rápido! Gracias a firefox y sus motores de busqueda (si os digo la verdad, esta mucho mejor el del IE7, que puedes agregar todos los que tu quieras sin necesidad de estar creando *.xml. Simplemente con poner &#8220;TEST&#8221; en el cuadro de busqueda que quieras agregar, cuando carga la pagina de resultados el IE te saca un mensajito de si quieres agregarlo. Así de sencillo!, pero como sigue siendo igual de lento que el IE6, yo sigo con mi FF3).</p>
<p>Ahora basta con poner la palabra clave y la palabra a buscar en la barra de direcciones y tachan!</p>
<p> ¿Como?<br />
Ves a mi <a href="http://alwar.mainfri.com/searchengines/">archivo</a> y te bajas los que te interesen (hay 7 ingles, español, frances e italiano, ESEN, ENES, ENFR FREN, ITEN, ENIT, ENDef).<br />
Luego de bajartelos los guardas en la carpeta del firefox &#8220;searchplugins\&#8221; que posiblemente este en: &#8220;C:\Archivos de programa\Mozilla Firefox 3 Beta 3\&#8221; y cuando los hayas copiado hay, reinicias el FF y ya estaran funcionando.<br />
<a href="http://alwar.mainfri.com/searchengines/howto0.png"><img src="http://alwar.mainfri.com/searchengines/howto0.png" width="150" border="0"></a><br />
Ahora si quieres utilizarlos desde la barra de navegación tienes que asociarles a cada plugin una plabra clave:<br />
1º Abre el administrador de motores de busqueda:<br />
<a href="http://alwar.mainfri.com/searchengines/howto1.png"><img src="http://alwar.mainfri.com/searchengines/howto1.png" width="150" border="0"></a></p>
<p>2º Pincha el plugin en el que quieres asociar una palabra, y dale a &#8220;editar palabra clave&#8221;. Escribe una palabra sencilla, que te vallas acordar cuando quieras utilizar el motor&#8230; porque si no esto no tiene sentido&#8230;</p>
<p><a href="http://alwar.mainfri.com/searchengines/howto2.png"><img src="http://alwar.mainfri.com/searchengines/howto2.png" width="150" border="0"></a></p>
<p>3º Ahora solo te queda probarlo y aprovechar que en decimas de segundos realizas una busqueda <img src='http://pushthebutton.es/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /><br />
<a href="http://alwar.mainfri.com/searchengines/howto3.png"><img src="http://alwar.mainfri.com/searchengines/howto3.png" width="150" border="0"></a><br />
Y el resultado:<br />
<a href="http://alwar.mainfri.com/searchengines/howto4.png"><img src="http://alwar.mainfri.com/searchengines/howto4.png" width="150" border="0"></a></p>
<p>Y ya ta! Si quereis hacer plugins para otros motores de busqueda podeis consultar el siguiende manual en <a href="http://developer.mozilla.org/es/docs/Crear_plugins_de_buscadores_para_firefox">developer.mozilla.org</a> y crear todos los que querais!<br />
Nota: Está en proceso de traducción, vamos que está en ingles, pero como ya teneis el wordreference creo que no tendreis problemas xDDD</p>
]]></content:encoded>
			<wfw:commentRss>http://pushthebutton.es/archivos/motores-de-busqueda-para-firefox/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sentencias de GPS NMEA</title>
		<link>http://pushthebutton.es/archivos/sentencias-de-gps-nmea</link>
		<comments>http://pushthebutton.es/archivos/sentencias-de-gps-nmea#comments</comments>
		<pubDate>Fri, 21 Dec 2007 22:51:40 +0000</pubDate>
		<dc:creator>Alwar</dc:creator>
				<category><![CDATA[Electronica y Hardware]]></category>
		<category><![CDATA[GPS]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Scripts y Programacion]]></category>
		<category><![CDATA[gpsplex]]></category>
		<category><![CDATA[nmea]]></category>
		<category><![CDATA[pda]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[sirf]]></category>

		<guid isPermaLink="false">http://pushthebutton.es/archivos/sentencias-de-gps-nmea/</guid>
		<description><![CDATA[He encontrado una web que me ha gustado bastante, pero que está en ingles, y que trae mucha informacion sobre la mayoria de sentencias del protocolo NMEA para GPS&#8217;s. El miercoles estuve en el rio Jarama (en Titulcia) haciendo unas practicas de fisica y de quimica y me lleve la PDA para que me digese [...]]]></description>
			<content:encoded><![CDATA[<p>He encontrado una <a href="http://www.gpsinformation.org/dale/nmea.htm">web</a> que me ha gustado bastante, pero que está en ingles, y que trae mucha informacion sobre la mayoria de sentencias del protocolo <a href="http://www.nmea.org/">NMEA</a> para GPS&#8217;s.</p>
<p>El miercoles estuve en el rio Jarama (en Titulcia) haciendo unas practicas de fisica y de quimica y me lleve la PDA para que me digese las coordenadas en las que nos encontrabamos (N40.140203 W3.573868) pero me surgió la necesidad de saber a la altura en la que nos encontrabamos y me di cuenta de que ni el TomTom ni el <a href="http://www.maicas.net/gpsplex/">GPSplex</a> me las decía, y entonces me pregunte si es que no todos los chips pueden calcular la altura, entonces me meti en la web de <a href="http://www.sirf.com/">Sirf</a> y vi en los datasheet que todos los GPS podían dar la altura, a si que hoy me he puesto a buscar sobre el protocolo que utiliza el GPS (<a href="http://es.wikipedia.org/wiki/NMEA">NMEA 0183</a>) y encontre la <a href="http://www.gpsinformation.org/dale/nmea.htm">web</a>.</p>
<p><span id="more-50"></span><br />
La sentencia que mas importante que veo, a mi parecer es $GPGGA ya que provee informacion esencia formateada de las 3 dimensiones, osea latitud, longitud y altura sobre el nivel del mar.</p>
<p>Esta sentencia nos da la siguiente informacion.<br />
Ejemplo:<br />
$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47</p>
<p>-123519 = Datos tomados a las 12:35:19 UTC<br />
-4807.038,N = Latitud: 48º 07.038&#8242; Norte<br />
-01131.000,E = Longitud 11º 31.000&#8242; Este<br />
-1 Calidad de la sentencia = (0 = invalido; 1 = GPS fix (SPS); 2 = DGPS fix; 3 = PPS fix; 4 = Real Time Kinematic; 5 = Float RTK; 6 = estimado; 7 = Modo manual; 8 = Modo Simulacion)<br />
-08 = Numero de satelites rastreados<br />
-0.9 = Horizontal dilution of position<br />
-545.4,M = Altitud sobre el nivel del mar<br />
-46.9,M = Altura &#8220;geoid&#8221; sobre el nivel del mar<br />
-(campo vacío) = Tiempo en segundos desde la ultima actualizacion DGPS<br />
-(campo vacío) = ID de la estacion DGPS<br />
-*47 = Checksum de los datos, lo llevan todas las sentencias y siempre empieza con *</p>
]]></content:encoded>
			<wfw:commentRss>http://pushthebutton.es/archivos/sentencias-de-gps-nmea/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Cuenta atras en PHP</title>
		<link>http://pushthebutton.es/archivos/cuenta-atras-en-php</link>
		<comments>http://pushthebutton.es/archivos/cuenta-atras-en-php#comments</comments>
		<pubDate>Fri, 12 Oct 2007 19:54:35 +0000</pubDate>
		<dc:creator>Alwar</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Scripts y Programacion]]></category>
		<category><![CDATA[countdown]]></category>
		<category><![CDATA[cuenta atras]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://pushthebutton.es/?p=41</guid>
		<description><![CDATA[Hoy me apetecía escribir en el blog xD, y en vez de dejarme cosas para días que no tenga nada que contar, voy a pegar aquí un pequeño script en php para que veáis como podéis hacer una cuenta atrás, o un contador de tiempo hacia delante con las funciones de tiempo que nos ofrece [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy me apetecía escribir en el blog xD, y en vez de dejarme cosas para días que no tenga nada que contar, voy a pegar aquí un pequeño script en <a href="http://php.net">php</a> para que veáis como podéis hacer una cuenta atrás, o un contador de tiempo hacia delante con las funciones de tiempo que nos ofrece php.</p>
<blockquote><p>
function countdown($hor,$min,$seg,$mes,$dia,$ano) {<br />
			   //mktime(hora, min, seg , mes,  dia,  anyo)<br />
	$final_day=	mktime($hor,$min,$seg,$mes,$dia,$ano); //Calculamos la fecha unix del dia final<br />
	$hoy_exed	=	time(); //Calculamos la fecha unix de hoy<br />
	if ($final_day &gt; $hoy_exed) //Si la fecha final es mayor a la de hoy<br />
	{<br />
		$remaining = $final_day &#8211; $hoy_day; //Averiguamos cuantos segundos quedan para el dia d y hora h<br />
		$hora = $remaining/3600; //Dividimos los segundos entre 3600 para obtener las horas que quedan.<br />
		$minx = explode(&#8220;.&#8221;,$hora); //Extraemos parte entera y decimal<br />
		$min = (&#8220;0.&#8221;.$minx[1]) * 60; //Multiplicamos por 60 para saber cuantos minutos quedan<br />
		$segx = explode(&#8220;.&#8221;,$min); //Extraemos parte entera y decimal<br />
		$segd = (&#8220;0.&#8221;.$segx[1]) * 60; //Multiplicamos por 60 para saber cuantos segundos quedan.<br />
		$seg = explode(&#8220;.&#8221;,$segd); //Desechamos parte decimal<br />
		return &#8220;$minx[0]h:$segx[0]m:$seg[0]s&#8221;; //Devolvemos un string formateado con lo que queda.<br />
	}<br />
	 else<br />
	{<br />
		return &#8220;Fin&#8221;;<br />
	}<br />
}</p></blockquote>
<p><i>Lee el resto de la entrada para ver la explicacion</i><br />
<span id="more-41"></span><br />
He creado una funcion para poder reutilizar el codigo. Principalmente hacemos uso de las funciones <a href="http://es2.php.net/manual/es/function.time.php">time()</a> y <a href="http://es2.php.net/manual/es/function.mktime.php">mktime()</a>.<br />
Time es una función que devuelve la fecha actual en Epoch Unix (esto significa que nos devolverá la cantidad de segundos que han pasado desde el 1 de Enero de 1970) y mktime es otra función que nos devuelve la fecha que le pasemos por argumento en Epoch Unix (Osea en segundos desde el 1 de Enero de 1970).</p>
<p>Entonces para hacer la cuenta atras, calculamos la fecha del día y hora en la que termina la cuenta atras con mktime():<br />
Ej para el 24 de Febrero del 2008 a las 16:30:<br />
<code>mktime(16, 30, 0 , 2,  24,  2008)</code><br />
y nos devolvera 1203867000 que es como decir 24/02/2008 a las 16:30:00.<br />
y ahora calculamos el dia de hoy a esta hora simplemente con time()<br />
Ej para hoy 12 de Octubre del 2007 sobre las 21:41 aproximadamente.<br />
<code>time()</code><br />
Y devuelve 1192218126. Entonces teniendo las fechas simplemente tenemos que restar para saber cuantos segundos faltan:<br />
1203867000 &#8211; 1192218126 = 11648874 (Si no me he equivocado xD)<br />
Pues quedan 11648874 segundos para que me pueda sacar el carnet B <img src='http://pushthebutton.es/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  pero dicho así no queda muy bonito.<br />
Para eso simplemente tenemos que dividirlo para obtener minutos, segundos o lo que queramos.<br />
Por Ejemplo:<br />
<code>echo (mktime(16, 30, 0, 2, 24, 2008) - time()) / (3600*24);</code><br />
Eso nos devuelve un numero (con decimales) que nos indica los dias que quedan para que me saque el carnet B <img src='http://pushthebutton.es/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>PD: El codigo de arriba del todo, la función completa, puede que no funcione correctamente, la escribi hace mucho tiempo y ahora no encuentro donde falla, pero antes iba bastante bien.</p>
]]></content:encoded>
			<wfw:commentRss>http://pushthebutton.es/archivos/cuenta-atras-en-php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalar grub, despues de haber instalado windows</title>
		<link>http://pushthebutton.es/archivos/instalar-grub-despues-de-haber-instalado-windows</link>
		<comments>http://pushthebutton.es/archivos/instalar-grub-despues-de-haber-instalado-windows#comments</comments>
		<pubDate>Fri, 24 Aug 2007 14:15:37 +0000</pubDate>
		<dc:creator>Alwar</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Scripts y Programacion]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://pushthebutton.es/?p=11</guid>
		<description><![CDATA[Desde que llevo con linux, ya me ha pasado que he reinstalado windows y el muy capullo se carga el mbr (Master Boot Record, donde se indica a la bios que sistema cargar). Pues el otro dia me volvio a pasar en casa de un amigo y no era plan de volver a instalar linux [...]]]></description>
			<content:encoded><![CDATA[<p>Desde que llevo con linux, ya me ha pasado que he reinstalado<br />
windows y el muy capullo se carga el mbr (Master Boot Record, donde se indica<br />
a la bios que sistema cargar). Pues el otro dia me volvio a pasar en casa de un<br />
amigo y no era plan de volver a instalar linux (hasta la fecha lo hacia asi), entonces<br />
buscando por la web encontre como hacerlo (en ubuntu-es.org), pero la forma que explicaba<br />
no me resulto, pero leyendo los comentarios encontre la forma de hacerlo y me funciono!<br />
<br /><span id="more-11"></span><br />
Aqui os dejo los comandos y la explicacion de lo que hacen:</p>
<p>1. Con un live cd que utilice grub (ubuntu o knoppix por ejemplo, yo lo hice con el primero),<br />
lo meteis en el lector de cd, y cuando esta cargado, habrimos una consola (o terminal)</p>
<p>2. Si estais en ubuntu todos los comandos ejecutarlos antes poniendo &#8220;sudo&#8221; para hacerlo<br />
como root, en otras distros no se como habra que hacerlo, supongo que poniendo &#8220;su&#8221; para<br />
logaros como root. Ejecutamos:<br />
<i>#mkdir /mnt/linux</i><br />
Con esto creamos un directorio en /mnt (directorio de montajes suele ser). El directorio<br />
podeis llamarlo como os de la gana, pero recordarlo.</p>
<p>3. Ahora toca montar el disco donde teniamos nuestro linux antes:<br />
<i># mount -t ext3 /dev/hda1 /mnt/linux</i><br />
El &#8220;-t&#8221; es para indicar el sistema de ficheros (# man mount), /dev/hda1 es el disco donde<br />
tenemos linux, hda1 indica que esta en el primer disco (hda) y 1 el numero de particion, si<br />
lo tienes en un disco secundario por ejemplo puede que tengas que poner hdb1, si no sabeis<br />
que poner ejecutar &#8220;# fdisk -l&#8221; y nos muestra todos los discos y particiones, y el<br />
/mnt/linux es el directorio donde montamos nuestro linux.</p>
<p>4. Una vez hecho esto toca ejcutar otro mount para que los dispositivos que ha detectado<br />
el live-cd los podamos utilizar en el linux antiguo mientras estamos en el live-cd.<br />
Por los errores que tenia yo el otro dia, supongo que esto vale para que cuando hagamos chroot<br />
tengamos disponibles los discos duros, ya que al haber arrancado desde el live-cd nuestro<br />
linux no inicializo los discos&#8230; (no estoy muy seguro de que sea por esto, pero con este comando<br />
a mi me funciono <img src='http://pushthebutton.es/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ). Ejecutamos:<br />
<i># mount &#8211;bind /dev /mnt/linux/dev</i></p>
<p>5. Ahora nos ya tenemos todo lo necesario para entrar en nuestro linux y poder reinstalar grub.<br />
Ejecutamos:<br />
<i># chroot /mnt/linux</i><br />Ya estamos en nuestro linux, ya no hace falta utilizar sudo.<br />
6. Y por ultimo instalamos el grub<br />
<i># grub-install /dev/hda</i><br />
Os recomiendo que no instaleis el grub en otro sitio, no modifiqueis ese comando.<br />
Si todo ha salido bien y no ha tirado errores este ultimo comando habriremos el menu.lst<br />
(vim /mnt/linux/boot/grub/menu.lst) lo revisamos que esten las entradas necesaria para<br />
poder arrancar linux y windows, y reiniciamos. Con esto ya os deberia salir de nuevo el grub.</p>
<p>Recopilado de: <a href="http://www.ubuntu-es.org/node/8344">Ubuntu-es.org</a><br />
Saludos!</p>
]]></content:encoded>
			<wfw:commentRss>http://pushthebutton.es/archivos/instalar-grub-despues-de-haber-instalado-windows/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Como poner autentificacion Open-ID en tu web</title>
		<link>http://pushthebutton.es/archivos/como-poner-autentificacion-open-id-en-tu-web</link>
		<comments>http://pushthebutton.es/archivos/como-poner-autentificacion-open-id-en-tu-web#comments</comments>
		<pubDate>Tue, 07 Aug 2007 15:45:27 +0000</pubDate>
		<dc:creator>Alwar</dc:creator>
				<category><![CDATA[Scripts y Programacion]]></category>

		<guid isPermaLink="false">http://pushthebutton.es/?p=6</guid>
		<description><![CDATA[Llevo un tiempo viendo este sistema en xataka y algun lado mas, y me gusto bastante, pero no me fue facil encontrar como implementarlo en una web. Al final llegue a phpclasses.org y hay encontre una libreria con las funciones necesarias y un script de ejemplo que comentado y adaptado para que sea mas facil [...]]]></description>
			<content:encoded><![CDATA[<p>Llevo un tiempo viendo este sistema en xataka y algun lado mas, y me gusto bastante, pero no me fue facil encontrar como implementarlo en una web. Al final llegue a phpclasses.org y hay encontre una libreria con las funciones necesarias y un script de ejemplo que comentado y adaptado para que sea mas facil entenderlo, aunque ya de por si es bastante simple.</p>
<p>Aqui dejo el enlace para bajarlo: <a href="http://alwar.mainfri.com/Downloads/OpenID/OpenID.tar.gz"></a></p>
<p><a href="http://alwar.mainfri.com/Downloads/OpenID/OpenID.tar.gz">OpenID.tar.gz [5k]</a><br />
<a href="http://alwar.mainfri.com/Downloads/OpenID/">Archivos sueltos</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pushthebutton.es/archivos/como-poner-autentificacion-open-id-en-tu-web/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

