tag:blogger.com,1999:blog-75353980588948861462024-03-13T06:16:36.571+01:00El pingüino que no sabía volarCuidado! Pingüino suelto.Carloshttp://www.blogger.com/profile/06444215485485545694noreply@blogger.comBlogger5125tag:blogger.com,1999:blog-7535398058894886146.post-90829268713883449682010-01-28T17:58:00.001+01:002010-01-28T17:58:35.068+01:00Nevada en SevillaCheck out this SlideShare Presentation: <div style="width:425px;text-align:left" id="__ss_3015609"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/guadalquiviryasuncion/nevada-en-sevilla" title="Nevada en Sevilla">Nevada en Sevilla</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=nieve-100128092636-phpapp02&stripped_title=nevada-en-sevilla" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=nieve-100128092636-phpapp02&stripped_title=nevada-en-sevilla" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object><div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/guadalquiviryasuncion">guadalquiviryasuncion</a>.</div></div>Carloshttp://www.blogger.com/profile/06444215485485545694noreply@blogger.com0tag:blogger.com,1999:blog-7535398058894886146.post-76130382203759693202007-02-16T16:01:00.000+01:002007-02-16T18:59:28.455+01:00Previsualización de galería de fotos<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg5xZsOlPafMeHDYOwgHyC6l2tflC_PllFeoVTCABV6BZoal04hnlEtNjO0_gMuyBDDQ_eGUm_NnUOnrwrxMQn_d53rLCOIdUQh3trbivImv_HsicaDt8VHw32xMSa0VZdomLP-3tDU5E/s1600-h/javascript.png"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg5xZsOlPafMeHDYOwgHyC6l2tflC_PllFeoVTCABV6BZoal04hnlEtNjO0_gMuyBDDQ_eGUm_NnUOnrwrxMQn_d53rLCOIdUQh3trbivImv_HsicaDt8VHw32xMSa0VZdomLP-3tDU5E/s320/javascript.png" alt="" id="BLOGGER_PHOTO_ID_5012943231474374818" border="0" /></a>Bueno, hace poco entro alguien al canal de javascript preguntando como hacer una pagina de previsualización de álbumes de fotos. Es decir, que en una pagina se viese "album1" y una imagen que fuese cambiando con todas las imágenes del album1, "album2" y una imágen que ...<br /><br />Toda la información sobre las imagenes esta en una base de datos que, para lo que nos interesa en este caso, contiene:<br /><br />id: entero, clave principal autoincrementado<br />album: cadena, nombre del álbum al que pertenece<br />imagen: cadena, ruta de la imagen dentro del álbum<br /><br />Así por ejemplo si tenemos 1,album1,foto1.png deberemos acudir a rutadelosalbumes/album1/foto1.png para mostrar la imagen.<br /><br />Lo primero sin duda es hacer la consulta a la bbdd con php para obtener la lista de álbumes y fotos, esto no lo pondre pues cada uno que lo haga como quiera, es bastante sencillo. Esta información debemos pasarla a JavaScript, para lo que deberíamos usar JSON, pero como no me apetecia me hice una función que hace las veces de JSON (y su equivalente en js).<br /><br /><pre class="code"><br /> function albumes2jsarray(){<br /> $array="";<br /> $lastAlbum="";<br /> $albumes=mysql_query("select album,imagen from albumes order by album,imagen");<br /> while($album=mysql_fetch_assoc($albumes)){<br /> if($album['album']!=$lastAlbum){<br /> if($lastAlbum==""){<br /> $array.=$album['album']."{";<br /> }<br /> else{<br /> $array.="}".$album['album']."{";<br /> }<br /> $lastAlbum=$album['album'];<br /> }<br /> $array.=$album['imagen'].";";<br /> }<br /> $array.="}";<br /> return $array;<br /> }<br /></pre><br /><br />Esta función devuelve una cadena del tipo:<br /><br /><pre class="code"><br />album1{foto1.png;foto2.png;foto3.png;}album2{foto1.png;foto2.png}<br /></pre><br /><br />Ahora viene lo interesante, javascript :)<br /><br />Primero comenzamos con la función que nos generará un array asociativo bidimensional en el que tendremos almacenados en un primer nivel (y de forma asociativa) los nombres de los álbumes de fotos y en un segundo nivel (no asociativo) las imágenes.<br /><br /><pre class="code"><br /> function phpArray2jsArray(){<br /> var lastAlbum="";<br /> var paso1=phpArray.split('}');<br /> var pos=0;<br /> for(var i=0;i<paso1.length-1;i++){<br /> var paso2=paso1[i].split('{');<br /> if(lastAlbum!=paso2[0]){<br /> jsArray[paso2[0]]=new Array();<br /> inicio[paso2[0]]=0;<br /> }<br /> jsArray[paso2[0]]=paso2[1].split(';');<br /> pos+=1;<br /> }<br /> for(i in jsArray){<br /> jsArray[i]=jsArray[i].splice(0,jsArray[i].length-1);<br /> }<br /> }<br /></pre><br /><br />Bueno, se podría haber hecho mejor, que recibiese los tres arrays por parametros etc, pero es lo que tiene las prisas ;)<br /><br />Ya estamos acabando, ahora solo queda una función que vaya rotando las imágenes. Pondre el resto del script tal y como quedaría, pero sin la función anterior.<br /><br /><pre class="code"><br /> <?php<br /> include('bbdd');<br /> echo "var phpArray='".$bbdd->albumes2jsarray()."';\n";<br /> ?><br /> var jsArray=new Array();<br /> var inicio=new Array();<br /> var rutaAlbumes="galeria";<br /> var tiempoExposicion="2000";<br /><br /> function rotaImagenes(){<br /> for(album in jsArray){<br /> var imgAct=document.getElementById(album);<br /> imgAct.src=rutaAlbumes+"/"+album+"/"+jsArray[album][inicio[album]];<br /> inicio[album]=inicio[album]+1==jsArray[album].length?0:inicio[album]+1;<br /> }<br /> setTimeout("rotaImagenes()",tiempoExposicion);<br /> }<br /><br /> window.onload=function(){<br /> phpArray2jsArray();<br /> rotaImagenes();<br /> }<br /></pre><br /><br />Otro punto importantes es que debemos tener a la fuerza en nuestra página una imagen para cada álbum cuyo identificador sea el mismo álbum, tipo <img id="album1" .. /> el resto da igual, donde esté, cuanto mida, etc.<br /><br />Y ahi quedó, probablemente se pueda mejorar pero lo basico está hecho.<br /><br />Editado:<br /> Podeis ver la página que hice para crearlo <a href="http://carlosip.no-ip.com/webs/galeria01" alt="aqui">aquí</a><br /> Y dónde lo aplicó el que me preguntó <a href="http://www.fotollongueras.com/reportatges" alt="aqui">aquí</a>. Por cierto, tiene muy buenas fotografías.Carloshttp://www.blogger.com/profile/06444215485485545694noreply@blogger.com0tag:blogger.com,1999:blog-7535398058894886146.post-42659397328728344112006-12-27T12:32:00.000+01:002006-12-27T13:05:28.951+01:00Microsoft quiere la patente de RSS<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz3AkPFMeuvNjuVyoHiCc3D7CH-wXK50xwUzODQf8e1mckUT4wO5spCUa03cscF7NIJYMcAZ0NnJbb9YQ521SnMoMfe4htlYjYPoZxv-ukUy89YT_V4WJ8EanahFBu3HmH8IOQYnKIp-4/s1600-h/rss.png"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz3AkPFMeuvNjuVyoHiCc3D7CH-wXK50xwUzODQf8e1mckUT4wO5spCUa03cscF7NIJYMcAZ0NnJbb9YQ521SnMoMfe4htlYjYPoZxv-ukUy89YT_V4WJ8EanahFBu3HmH8IOQYnKIp-4/s320/rss.png" alt="" id="BLOGGER_PHOTO_ID_5013168811746695346" border="0" /></a>Alguien pensaba que RSS lo creo Dan Libby? Nooo, fue Microsoft. Al menos eso es lo que debemos suponer ya que pretenden conseguir la patente. La verdad es que no entiendo mucho de leyes o patentes, pero he estado leyendo un poco y si no me equivoco, el que alquien pretenda la patente de algo implica que lo ha inventado (segun lei en el diccionario de la Real Academia Española y en la Wikipedia).<br /><a href="http://buscon.rae.es/draeI/"><div class="quote">Documento en que oficialmente se le reconoce a alguien una invención y los derechos que de ella se derivan.</div></a><a href="http://es.wikipedia.org/wiki/Patente"><div class="quote">Una patente es un conjunto de derechos exclusivos garantizados por un gobierno o autoridad al inventor de un nuevo producto (material o inmaterial)</div></a>Según esto si Microsoft pretende la patente debo suponer que es porque es el inventor pero no me cuadran las cosas:<a href="http://en.wikipedia.org/wiki/RSS_(file_format)"><div class="quote">RDF Site Summary, the first version of RSS, was created by Dan Libby of Netscape in March 1999 for use on the My Netscape portal.</div></a>Y por si fuese poco:<a href="http://dondodge.typepad.com/the_next_big_thing/2006/12/patent_lunacy_d.html"><div class="quote">Microsoft is not pretending that they invented RSS</div></a>Con esto supongo que me habré equivocado y que no hay que ser el inventor de algo para reclamar la patente, pero eso no tiene sentido, no? Si alguien es tan amable de aclararmelo se lo agradecería :P<br /><br />En cualquier caso, y si Microsoft consiguiese la patente de RSS tendriamos que estarle agradecido, no piensan aprovecharse de nosotros.<br /><a href="http://dondodge.typepad.com/the_next_big_thing/2006/12/patent_lunacy_d.html"><div class="quote">Relax. I believe Microsoft has no intention of enforcing this patent against anyone, and no intention of collecting royalties on it.</div></a>Pues nada, ya veremos en que acaba la cosa.Carloshttp://www.blogger.com/profile/06444215485485545694noreply@blogger.com0tag:blogger.com,1999:blog-7535398058894886146.post-5628325417850769572006-12-26T21:59:00.000+01:002006-12-26T23:24:25.290+01:00JavaScript: inicializar arrays asociativos<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg5xZsOlPafMeHDYOwgHyC6l2tflC_PllFeoVTCABV6BZoal04hnlEtNjO0_gMuyBDDQ_eGUm_NnUOnrwrxMQn_d53rLCOIdUQh3trbivImv_HsicaDt8VHw32xMSa0VZdomLP-3tDU5E/s1600-h/javascript.png"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg5xZsOlPafMeHDYOwgHyC6l2tflC_PllFeoVTCABV6BZoal04hnlEtNjO0_gMuyBDDQ_eGUm_NnUOnrwrxMQn_d53rLCOIdUQh3trbivImv_HsicaDt8VHw32xMSa0VZdomLP-3tDU5E/s320/javascript.png" alt="" id="BLOGGER_PHOTO_ID_5012943231474374818" border="0" /></a>Pues empezamos con JavaScript, aquí esta la imagen que se me ocurrio para los temas relacionados principalmente con este lenguaje.<br /><br />Supongo que el que se haya peleado con él sabrá que se pueden inicializar arrays con varios valores en una sola línea, igual que en c, etc. Pero cuando se trata de arrays asociativos no encontre nada para hacer esto. La solución que propongo es la siguiente:<br /><pre class="code">Array.prototype.initialize=function(){<br /> for(i=0;i<arguments.length;i++)<br /> this[arguments[i].split(":")[0]]=arguments[i].split(":")[1];<br />}</pre>Después de hacer esto, que lo podeis dejar en una sola línea si os gusta más, solo hay que inicializar el array de la forma:<br /><pre class="code">miArray.initialize("uno:ichi","dos:ni","tres:san");</pre>Hay que tener en cuenta que se basa en que dentro del valor o del indice no puede haber dos puntos ':' ya que es éste el separador.<br /><br />Si fuese necesario usar los dos puntos en el valor bastaría con modificar la función definida o modificarla para que reciba un primer (o último) parametro que indicase el caracter o caracteres separadores.<pre class="code">Array.prototype.initialize=function(){<br /> for(i=1;i<arguments.length;i++)<br /> this[arguments[i].split(arguments[0])[0]]=arguments[i].split(arguments[0])[1];<br />};</pre>Carloshttp://www.blogger.com/profile/06444215485485545694noreply@blogger.com0tag:blogger.com,1999:blog-7535398058894886146.post-52461655343253022272006-12-26T17:56:00.000+01:002006-12-27T08:56:37.925+01:00Se busca pingüina rosa<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOujKfYsPISGpOm5p6q7G08W2OQv3DBtRpFNX0oY7wwJjTMFGy7gr8a2FXDspY4jlhUFOnpND2Fie6Y6JVWum1_AbAlSBURPF2JNSNd0ey8iJDxPSHZNsMBXx61RVfxmu0OkxVZRyqy5Y/s1600-h/pinkPenguin.png"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOujKfYsPISGpOm5p6q7G08W2OQv3DBtRpFNX0oY7wwJjTMFGy7gr8a2FXDspY4jlhUFOnpND2Fie6Y6JVWum1_AbAlSBURPF2JNSNd0ey8iJDxPSHZNsMBXx61RVfxmu0OkxVZRyqy5Y/s320/pinkPenguin.png" alt="" id="BLOGGER_PHOTO_ID_5012880559311591570" border="0" /></a>Supongo que ahora entenderéis porqué no puede volar el pingüino. En esta foto sale dormido pero tiene unos ojos muy bonitos.<br /><br />Si alguien tiene un pingüino hembra que me avise, le estoy buscando pareja, sí, es rosa.<br /><br />En fin, aquí pondre todo lo que se me ocurra, temas relacionados con la programación (javascript principalmente), el idioma japonés y los japoneses en general, enlaces interesantes o divertidos y poco más.<br /><br />Bueno, hasta el siguiente post.Carloshttp://www.blogger.com/profile/06444215485485545694noreply@blogger.com3