<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-7954297098627846588</atom:id><lastBuildDate>Sun, 25 Mar 2012 01:49:28 +0000</lastBuildDate><category>Fail</category><category>Python</category><category>Memorias</category><category>Webmasters</category><category>Microsoft</category><category>Bases de datos</category><category>Navegadores</category><category>Desktop</category><category>Para pensar</category><category>Gimp</category><category>Drupal tips</category><category>Imagemagick</category><category>Mysql</category><category>Críticas</category><category>Opera</category><category>Utilidades</category><category>Tips</category><category>Wine</category><category>Zend</category><category>Blogger</category><category>Google</category><category>Gnome</category><category>Programas</category><category>Nichos</category><category>Kumbia</category><category>PHP</category><category>Drupal</category><category>Alternativas</category><category>Frameworks</category><category>Firefox</category><category>GIT</category><category>Editores</category><category>Tutoriales</category><category>Mascotas</category><category>Linux</category><category>Planeta</category><category>CMS</category><category>WTF</category><category>Ubuntu</category><category>Off-topic</category><category>Diseño</category><category>Politica</category><category>Facebook</category><title>Tecnovita.com Desarrollo en PHP Drupal YII</title><description>Diseñollador 2.0 ¬¬</description><link>http://www.tecnovita.com/</link><managingEditor>noreply@blogger.com (Giovanny)</managingEditor><generator>Blogger</generator><openSearch:totalResults>72</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-1647123077221381894</guid><pubDate>Sun, 20 Nov 2011 09:51:00 +0000</pubDate><atom:updated>2011-11-20T03:41:21.903-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Tutoriales</category><category domain='http://www.blogger.com/atom/ns#'>Tips</category><category domain='http://www.blogger.com/atom/ns#'>GIT</category><title>GIT Guia básica de Git en Windows - Git y Bitbucket</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-V4ctSa0WBZg/TsjMll_V0FI/AAAAAAAAHJA/I2cs47lbu_Q/s1600/git-logo.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-V4ctSa0WBZg/TsjMll_V0FI/AAAAAAAAHJA/I2cs47lbu_Q/s1600/git-logo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-PZ739MqeNJs/TsjMnVsAnxI/AAAAAAAAHJI/8BmdPOkc6jM/s1600/Bitbucket.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-PZ739MqeNJs/TsjMnVsAnxI/AAAAAAAAHJI/8BmdPOkc6jM/s1600/Bitbucket.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Hoy me tome un tiempo libre para hacerles esta miniguia de como empezar a usar GIT en windows y configurar una cuenta en Bitbucket. &lt;br /&gt;&lt;br /&gt;¿Por que GIT y Bitbucket? &lt;br /&gt;&lt;br /&gt;Personalmente pienso GIT es el mejor sistema de control de versiones que existe, es distribuido, no necesita de un servidor (El repositorio central es una simple carpeta que puede estar ubicado en cualquier lugar), la facilidad de instalar y usar. &lt;br /&gt;&lt;br /&gt;Bitbucket por que es gratuito, tiene dos métodos de conectar con el cliente por SSH y por HTPPS con lo cual no necesitamos crear ninguna clave SSH publica obligatoriamente como así sucede con Github que nos obliga a hacerlo. &lt;br /&gt;&lt;br /&gt;Vamos a lo nuestro, acá voy a tratar de explicar algunos puntos mas importantes de como empezar, no voy a explicar como instalar un programa(Asumimos de que ya lo sabes hacer)&lt;br /&gt;&lt;br /&gt;Descargamos&lt;a href="http://code.google.com/p/gitextensions/" target="_blank"&gt; GIT Extensions&amp;nbsp;&lt;/a&gt;&lt;br /&gt;Instalamos, instalen todo por default, nos instala la consola, Git y Kdiff (En algun momento lo van a necesitar)&lt;br /&gt;&lt;br /&gt;Una vez instalado nos deja un terminal en el escitorio(GIT Bash), desde este terminal vamos a ejecutar GIT, la ventaja que tenemos es que instala algunas extensiones de Cygwin, bastante útil ya que disponemos de algunos comandos básicos de UNIX en nuestro terminal.&lt;br /&gt;Podemos usar ls, mkdir, vi, ln (No voy a explicar sobre los comandos, eso lo pueden buscar fácilmente en google, y les pido que lo hagan si nunca han usado Linux por que les va a ser muy útil y en el caso de GIT necesario)&lt;br /&gt;&lt;br /&gt;Haciendo un ls&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Uck2Germ-so/TsjUcp9SUvI/AAAAAAAAHJQ/UQFT5PA9QK0/s1600/bash1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-Uck2Germ-so/TsjUcp9SUvI/AAAAAAAAHJQ/UQFT5PA9QK0/s1600/bash1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Cambiando de directorio(cd), mostrando la ubicación actual(pwd) y listando los archivos(ls) Noten que para hacer un cambio de directorio lo hacemos de la manera en que lo hacemos en UNIX. GENIAL!!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-McumfTXkf3Y/TsjVPQYmijI/AAAAAAAAHJY/wqn_SvLYAmU/s1600/bash2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-McumfTXkf3Y/TsjVPQYmijI/AAAAAAAAHJY/wqn_SvLYAmU/s1600/bash2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Usando vi $vi ejemplo.txt&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-x-ERYu5BV7w/TsjV7XkMQNI/AAAAAAAAHJg/BMnx0SRHuLU/s1600/vi.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-x-ERYu5BV7w/TsjV7XkMQNI/AAAAAAAAHJg/BMnx0SRHuLU/s1600/vi.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Maravilloso!! Ahora vamos a lo nuestro. Pasamos a crear ua cuenta en &lt;a href="https://bitbucket.org/" target="_blank"&gt;Bitbucket&lt;/a&gt;, sí en ese orden, primero la cuenta luego vamos a usar GIT.&lt;br /&gt;¿Por que uso Bitbucket y no GitHub? es GRATIS! para proyectos privados, ilimitado y fácil. ¿Suficiente para elegirlo o no?&lt;br /&gt;&lt;br /&gt;Se registran, no creo que quieran una captura de como hacerlo.. ¬¬&lt;br /&gt;Una vez registrados y validado el email, vamos a &lt;a href="https://bitbucket.org/repo/create" target="_blank"&gt;crear un nuevo repositorio&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ERhpDWkK6Zs/TsjZIXQuMiI/AAAAAAAAHJo/Rc459iaPoLQ/s1600/bitbucket1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="523" src="http://4.bp.blogspot.com/-ERhpDWkK6Zs/TsjZIXQuMiI/AAAAAAAAHJo/Rc459iaPoLQ/s640/bitbucket1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Una vez creado nuestro repositorio nos da unas instrucciones básicas de como empezar&lt;br /&gt;&lt;br /&gt;&lt;pre class="php" name="code"&gt;Quick start&lt;br /&gt;$ git clone git@bitbucket.org:nucklearproject/tecnovita.git&lt;br /&gt;...&lt;br /&gt;$ git pull                  # to fetch changes&lt;br /&gt;$ git push -u origin master # to push changes for the first time&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Con eso tenemos suficiente para empezar, vamos a nuestro terminal y hacemos lo que nos indica: Pero ah! no vamos a usar ninguna clave SSH por que de momento no nos interesa(Aunque es recomendable hacerlo) Esto en otro post les indico como hacerlo. Asi que vamos a clonar y usar nuestro repositorio por htpps.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-IO6oLzdhI2k/TsjbnbXK_0I/AAAAAAAAHJw/IkYA4q66U8A/s1600/bash3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-IO6oLzdhI2k/TsjbnbXK_0I/AAAAAAAAHJw/IkYA4q66U8A/s1600/bash3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Estos nos crea una carpeta con el nombre del repositorio, podemos renombrarlo sin problema, lo que nos importa es lo que esta adentro. Note que nos crea una carpeta oculta .git acá se va a guardar los cambios y registros que hagamos a nuestro repositorio local.&lt;br /&gt;&lt;br /&gt;Antes de empezar a usar un &amp;nbsp;repositorio para hacer commit y push debemos identificarnos, para esto debemos configurar por primera vez a GIT:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-eGq6XLQKIeU/Tsjdb6mMWdI/AAAAAAAAHJ4/vbxLIncFuJw/s1600/bash4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-eGq6XLQKIeU/Tsjdb6mMWdI/AAAAAAAAHJ4/vbxLIncFuJw/s1600/bash4.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Los datos son solo para identificar al usuario que hace los cambios al repositorio.&lt;br /&gt;&lt;br /&gt;Ahora si vamos a hacer un add y commit, agregamos unos cuantos archivos a nuestra carpeta. &lt;br /&gt;Hacemos un &amp;nbsp;&lt;b&gt;$git add .&amp;nbsp;&lt;/b&gt;&lt;br /&gt;Con esto agregamos todos los archivos pero estan en "Stage" quiere decir que estan agregados a la cola o cache (lo prepara para hacer un commit, lee los cambios y solo los prepara) Si quisieramos solo agregar un archivo le indicamos&lt;b&gt; $git add archivo.txt&lt;/b&gt;&lt;br /&gt;Para ver el estado de nuestras acciones hacemos un &lt;b&gt;$git status&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-qN5niLPS8M8/TsjfQBmdXdI/AAAAAAAAHKA/Of5X4bXHlJg/s1600/bash5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-qN5niLPS8M8/TsjfQBmdXdI/AAAAAAAAHKA/Of5X4bXHlJg/s1600/bash5.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Como vemos al hacer un status nos indica el estado en que se encuentra, en nuestro caso que se agregaron archivos nuevos.&lt;br /&gt;Ahora hacemos un commit, lo dejamos listo para enviarlo a nuestro repositorio remoto. Note que hacemos un status y nos dice que ya no hay nada para hacer commit, por que ya lo hicimos y el cache stage esta vacío.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-1HyWTAT5--g/Tsjg6xAZj_I/AAAAAAAAHKI/cMw_P9ioCxI/s1600/bash6-png.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-1HyWTAT5--g/Tsjg6xAZj_I/AAAAAAAAHKI/cMw_P9ioCxI/s1600/bash6-png.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Lo enviamos a nuestro repositorio remoto&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-6Vj6b9Eg7-0/TsjhUY36caI/AAAAAAAAHKQ/oPljJVffIL8/s1600/bash7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-6Vj6b9Eg7-0/TsjhUY36caI/AAAAAAAAHKQ/oPljJVffIL8/s1600/bash7.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Vemos los cambios en bitbucket.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-AW8uz8Yy9Lo/Tsjh7yMaukI/AAAAAAAAHKY/IsJuPvLahBU/s1600/bitbucket2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="525" src="http://1.bp.blogspot.com/-AW8uz8Yy9Lo/Tsjh7yMaukI/AAAAAAAAHKY/IsJuPvLahBU/s640/bitbucket2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Editamos un archivo (reset.css) hacemos un add y status (Fijense que al hacer $git add . solo agrega el archivo que tiene cambios y si agregamos nuevos archivos o carpetas)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-JKRa-Vi7Cjw/TsjijazkmJI/AAAAAAAAHKg/dHNt6M21j4I/s1600/bash8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-JKRa-Vi7Cjw/TsjijazkmJI/AAAAAAAAHKg/dHNt6M21j4I/s1600/bash8.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;El commit y push.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-_AVX_zWEDow/TsjkbhbHVyI/AAAAAAAAHKo/2rCRRaGV7Og/s1600/bash9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-_AVX_zWEDow/TsjkbhbHVyI/AAAAAAAAHKo/2rCRRaGV7Og/s1600/bash9.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Vamos a nuestro repositorio y vamos a ver los cambios. Con eso es mas que suficiente para empezar :D&lt;br /&gt;&lt;br /&gt;Al instalar Git extensions nos instala una herramienta visual para administrar nuestros repositorios, si le tenés miedo a la consola usa esta herramienta.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-2geeXI_l9GU/TsjlBEAv2JI/AAAAAAAAHKw/HI6kb6EXUrw/s1600/gitextensions.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="410" src="http://3.bp.blogspot.com/-2geeXI_l9GU/TsjlBEAv2JI/AAAAAAAAHKw/HI6kb6EXUrw/s640/gitextensions.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Recomiendo mucho para adentrar mas en el tema estos tres videos del maestro Jesus Conde de Illasaron.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;GIT Fundamental&lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;iframe allowfullscreen="" frameborder="0" height="550" src="http://blip.tv/play/h4Abgr_gbwA.html" width="678"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://blip.tv/file/get/0utKast-01CursoDeGitFundamentalesEInstalacin870.mp4" target="_blank"&gt;Descargar en formato mp4&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://blip.tv/file/get/0utKast-01CursoDeGitFundamentalesEInstalacin524.m4v" target="_blank"&gt;Descargar en formato m4v HD 720&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Comandos GIT&lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;iframe allowfullscreen="" frameborder="0" height="550" src="http://blip.tv/play/h4AbgsGsAgA.html" width="678"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://blip.tv/file/get/0utKast-02CursoDeGitComandosGitI201.mp4" target="_blank"&gt;Descargar en formato mp4&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://blip.tv/file/get/0utKast-02CursoDeGitComandosGitI420.m4v" target="_blank"&gt;Descargar en formato m4v HD 720&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Comandos GIT II&lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;iframe allowfullscreen="" frameborder="0" height="550" src="http://blip.tv/play/h4AbgsewDQA.html" width="678"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://blip.tv/file/get/0utKast-02CursoDeGitComandosGitII727.mp4" target="_blank"&gt;Descargar en formato mp4&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://blip.tv/file/get/0utKast-02CursoDeGitComandosGitII633.m4v" target="_blank"&gt;Descargar en formato m4v HD 720&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Recursos:&lt;br /&gt;&lt;br /&gt;1. &lt;a href="http://gitref.org/basic/" target="_blank"&gt;Referencia básica de comandos GIT&lt;/a&gt;  (Ingles)&lt;br /&gt;2. &lt;a href="http://progit.org/book/es/" target="_blank"&gt;El mejor libro que he leido sobre GIT&lt;/a&gt; (Español traducido&lt;br /&gt;a medias)&lt;br /&gt;3. &lt;a href="http://www.cheat-sheets.org/saved-copy/git-cheat-sheet.svg" target="_blank"&gt;Cheat-sheet resumido&amp;nbsp;&lt;/a&gt;&lt;br /&gt;4. &lt;a href="http://library.dzone.com/sites/all/files/refcardz/rc094-010d-git_2.pdf" target="_blank"&gt;Cheat-sheet en PDF bastante completo&lt;/a&gt; (ingles)&lt;br /&gt;&lt;br /&gt;Aclaración: Soy usuario de GNU/Linux pero por cuestiones laborales me vi casi obligado a usar Windows como sistema operativo. No es un mal sistema, &lt;i&gt;hay que saber entenderlo&lt;/i&gt;. ñ.ñ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-1647123077221381894?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2011/11/git-guia-basica-de-git-en-windows-git-y.html</link><author>noreply@blogger.com (Giovanny)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-V4ctSa0WBZg/TsjMll_V0FI/AAAAAAAAHJA/I2cs47lbu_Q/s72-c/git-logo.png' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-5948919224240419289</guid><pubDate>Fri, 11 Mar 2011 12:19:00 +0000</pubDate><atom:updated>2011-03-11T04:33:20.970-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Tips</category><category domain='http://www.blogger.com/atom/ns#'>Ubuntu</category><title>update-apt-xapian excesivo consumo de recursos, como detenerlo o aplazarlo.</title><description>Los usuarios de alguna distribución de derivada de Ubuntu nos vemos todos los días "en el momento menos oportuno" con este proceso: &lt;b&gt;update-apt-xapian&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;¿Que rayos es?&amp;nbsp; Es un sistema de indexación de paquetes de APT. La explicación técnica de esto sale de mis conocimientos, pero una simple búsqueda en Google ayudara.&lt;br /&gt;&lt;br /&gt;Intentando aplazarlo para que no corra todos los días, encontré la solución definitiva y lo expongo por si a alguien le puede ser útil, ya que hay muy poca o nula información exacta y precisa.&lt;br /&gt;&lt;br /&gt;En todos lados recomiendan mover el archivo&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #073763;"&gt;sudo mv /etc/cron.weekly/apt-xapian-index /etc/cron.monthly/apt-xapian-index&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En otros casos hacer un purge del apt-xapian-index&lt;span style="color: #990000;"&gt; (Grave error ya que dejara de funcionarnos synaptic)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lamento decirles que no es la solución, ya que a pesar de hacer esto el proceso sigue ejecutándose todos los días. Si!,&amp;nbsp; a pesar de que tendría que correr cada semana.... ¬¬&lt;br /&gt;&lt;br /&gt;investigando llegue a la conclusión de que el proceso lo arrancaba&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #073763;"&gt;/etc/cron.daily/apt&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Buscando y urgando logre dar con la solución:&lt;br /&gt;&lt;br /&gt;Primero cambian la ejecución de Cron :&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #073763;"&gt;sudo mv /etc/cron.weekly/apt-xapian-index /etc/cron.monthly/apt-xapian-index&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Segundo editan el archivo &amp;nbsp;/etc/cron.daily/apt&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt;      ##### reempazar esto por lo otro&lt;br /&gt;  &lt;br /&gt;      #if [ -x /usr/sbin/update-apt-xapian-index ]; then&lt;br /&gt;  &lt;br /&gt;      #  nice ionice -c3 update-apt-xapian-index -q&lt;br /&gt;  &lt;br /&gt;      #fi&lt;br /&gt;  &lt;br /&gt;      if [ -x /usr/sbin/update-apt-xapian-index ]; then&lt;br /&gt;  &lt;br /&gt;       nice -n 19 ionice -c3 update-apt-xapian-index --update -q&lt;br /&gt;  &lt;br /&gt;     fi  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Listo, Asunto resuelto. La ejecución se hará cada mes(supongo, por que aun no pasa un mes del cambio que hice, ya les cuento de acá a 25 días que paso ;) )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-5948919224240419289?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2011/03/update-apt-xapian-excesivo-consumo-de.html</link><author>noreply@blogger.com (Giovanny)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-1944772261745834517</guid><pubDate>Sun, 16 Jan 2011 10:56:00 +0000</pubDate><atom:updated>2011-01-16T02:56:56.958-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Wine</category><category domain='http://www.blogger.com/atom/ns#'>Gnome</category><title>Como eliminar los accesos al menu de Wine</title><description>Si hemos desinstalado programas y aun permanece los molestos accesos al programa en el&amp;nbsp; menú de nuestro gnome. Simplemente vamos a esta dirección y eliminamos las carpetas.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;~/.local/share/applications/wine/Programas&amp;nbsp;&lt;/blockquote&gt;&lt;br /&gt;Listo fácil.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-1944772261745834517?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2011/01/como-eliminar-los-accesos-al-menu-de.html</link><author>noreply@blogger.com (Giovanny)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-1440570856417766574</guid><pubDate>Mon, 06 Sep 2010 00:58:00 +0000</pubDate><atom:updated>2011-11-19T16:17:53.748-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Drupal tips</category><title>Invocar al formulario de contacto en cualquier lugar de tu web Drupal</title><description>Puede ser en cualquier template.tpl dentro de un nodo o bloque.&lt;br /&gt;&lt;pre name="code" class="php"&gt;&amp;lt;?php&lt;br /&gt;  &lt;br /&gt; require_once drupal_get_path('module', 'contact') .'/contact.pages.inc';&lt;br /&gt;  &lt;br /&gt; print drupal_get_form('contact_mail_page');&lt;br /&gt;  &lt;br /&gt;  ?&amp;gt;  &lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-1440570856417766574?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2010/09/invocar-al-formulario-de-contacto-en.html</link><author>noreply@blogger.com (Giovanny)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-2424953457105096220</guid><pubDate>Fri, 03 Sep 2010 22:44:00 +0000</pubDate><atom:updated>2011-11-19T16:10:58.820-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Drupal tips</category><title>Usar plantillas de otro theme dependiendo de la ruta en drupal (user)</title><description>Caso: Tenemos un bonito theme creado en drupal, el cual consiste en varios templates distintos(page.tpl) bloques al por mayor, cada tpl tiene un conjunto de bloques distintos. &lt;br /&gt;Problema: necesitamos un theme de administración simple y eficaz http://drupal.org/project/seven Un menú apara el administrador http://drupal.org/project/admin_menu y un menu para el editor(que se pueda personalizar y sea muy pero muy simple) http://drupal.org/project/simplemenu&lt;br /&gt;&lt;br /&gt;Bien queremos que todo lo relacionado con los usuarios y el administrador del site lo gestione el theme de administracion. Este es un pequeño ejemplo de como podemos "desviar" el uso del theme admin por varias condiciones, por ejemplo yo quiero que me muestre el theme si alguien quiere hacer login(de lo contrario se mostrara el theme principal). Esto lo agregamos en el settings.php de nuestro site. Simple práctico. &lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="php"&gt;  $args = explode('/', $_GET['q']);&lt;br /&gt;  if($args[0]=='user'){&lt;br /&gt;  $conf = array(&lt;br /&gt;  'site_name' =&amp;gt; 'Admin Panel',&lt;br /&gt;  'theme_default' =&amp;gt; 'seven',&lt;br /&gt;  'anonymous' =&amp;gt; 'Visitor',&lt;br /&gt;   );&lt;br /&gt;    }  &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;En un próximo Drupal tip como administrar los bloques del sitio principal desde el theme admin, hasta ahora lo he logrado hackeando el core, aun estoy buscando la manera de hacerlo limpiamente pero hasta ahora no he dado con el clavo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-2424953457105096220?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2010/09/usar-plantillas-de-otro-theme.html</link><author>noreply@blogger.com (Giovanny)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-5150274828041790760</guid><pubDate>Wed, 26 May 2010 17:19:00 +0000</pubDate><atom:updated>2011-11-19T16:19:18.063-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Tips</category><category domain='http://www.blogger.com/atom/ns#'>Python</category><title>Subir varias imagenes en tu album de picasa con python Gdata</title><description>Un pequeño script para subir todas lás imágenes alojadas en una carpeta a un album específico de picasa con Python y Python gdata.&lt;br /&gt;&lt;br /&gt;1. Descargar python Gdata(Yo uso python 2.6 y Python Gdata 2.0.9) No esta probado en versiones superiores.&lt;br /&gt;2. Una cuenta activa de Picasa obviamente.&lt;br /&gt;3. Agregar el src del modulo gdata a las librerias dinámicas de python: EJM:&lt;br /&gt;&lt;br /&gt;Editar el .bashrc de tu home y agregar la ruta a los modulos de Gdata como por ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;export PYTHONPATH=$PYTHONPATH:/home/nucklear/python/gdata-2.0.10/src&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Recargar tu .bashrc con   ~source .bashrc&lt;br /&gt;&lt;br /&gt;Y listo ya tienes todo listo. Vamos por el script.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="python"&gt; #!/usr/bin/python&lt;br /&gt;&lt;br /&gt;# -*- coding: utf-8 -*-&lt;br /&gt;&lt;br /&gt;###&lt;br /&gt;&lt;br /&gt;# Este Script sube fotos a tu album de Picasa web.&lt;br /&gt;&lt;br /&gt;# Uso : python uploader.py -l &amp;lt;directorio&amp;gt; &lt;br /&gt;&lt;br /&gt;###&lt;br /&gt;&lt;br /&gt;import gdata.photos.service&lt;br /&gt;&lt;br /&gt;import gdata.media&lt;br /&gt;&lt;br /&gt;import gdata.geo&lt;br /&gt;&lt;br /&gt;import os&lt;br /&gt;&lt;br /&gt;import dircache&lt;br /&gt;&lt;br /&gt;import sys&lt;br /&gt;&lt;br /&gt;import getopt&lt;br /&gt;&lt;br /&gt;###&lt;br /&gt;&lt;br /&gt;# Inicializamos&lt;br /&gt;&lt;br /&gt;###&lt;br /&gt;&lt;br /&gt;def init(path):&lt;br /&gt;&lt;br /&gt;print 'Subiendo fotos a ', (path)&lt;br /&gt;&lt;br /&gt;DIR_UPLOAD=path&lt;br /&gt;&lt;br /&gt;gd_client = gdata.photos.service.PhotosService()&lt;br /&gt;&lt;br /&gt;gd_client.email = 'username' #tu nombre de usuario sin @gmail...&lt;br /&gt;&lt;br /&gt;gd_client.password = 'password' #tu password&lt;br /&gt;&lt;br /&gt;gd_client.source = 'python uploader'&lt;br /&gt;&lt;br /&gt;gd_client.ProgrammaticLogin()&lt;br /&gt;&lt;br /&gt;username=gd_client.email&lt;br /&gt;&lt;br /&gt;index = 0&lt;br /&gt;&lt;br /&gt;albums = gd_client.GetUserFeed(user=username)&lt;br /&gt;&lt;br /&gt;albumidlist = []&lt;br /&gt;&lt;br /&gt;# Listando y seleccionando unos de los album's&lt;br /&gt;&lt;br /&gt;for album in albums.entry:&lt;br /&gt;&lt;br /&gt;index = index + 1&lt;br /&gt;&lt;br /&gt;albumidlist.append(album.gphoto_id)&lt;br /&gt;&lt;br /&gt;print '%d %s' %(index,album.title.text) &lt;br /&gt;&lt;br /&gt;#Seleccionamos un album del listado (ingresar el numero de album)&lt;br /&gt;&lt;br /&gt;choice = int(raw_input('Ingrese el número de album: '))&lt;br /&gt;&lt;br /&gt;album_url = '/data/feed/api/user/%s/albumid/%s' %(username, albumidlist[choice-1].text)&lt;br /&gt;&lt;br /&gt;try:&lt;br /&gt;&lt;br /&gt;pics_list = dircache.listdir(DIR_UPLOAD)&lt;br /&gt;&lt;br /&gt;except:&lt;br /&gt;&lt;br /&gt;print 'El directorio no es válido :( '          &lt;br /&gt;&lt;br /&gt;usage()&lt;br /&gt;&lt;br /&gt;count = 0&lt;br /&gt;&lt;br /&gt;#Subiendo las imágenes y a su vez elimnando del directorio&lt;br /&gt;&lt;br /&gt;for pic in pics_list:&lt;br /&gt;&lt;br /&gt;filename = DIR_UPLOAD+'/'+pic&lt;br /&gt;&lt;br /&gt;try:&lt;br /&gt;&lt;br /&gt;photo = gd_client.InsertPhotoSimple(album_url, pic, str(count)+'JPG', filename,content_type='image/jpeg')&lt;br /&gt;&lt;br /&gt;count = count + 1&lt;br /&gt;&lt;br /&gt;os.remove(filename)&lt;br /&gt;&lt;br /&gt;print count&lt;br /&gt;&lt;br /&gt;except:&lt;br /&gt;&lt;br /&gt;print 'No se pudo completar la operación, espere un momento...'&lt;br /&gt;&lt;br /&gt;photos = gd_client.GetUserFeed(kind='photo', limit=count+1)&lt;br /&gt;&lt;br /&gt;nombreGaleria = raw_input('Ingrese el nombre de la galeria :')&lt;br /&gt;&lt;br /&gt;for photo in photos.entry:&lt;br /&gt;&lt;br /&gt;print '&amp;lt;img src="'+photo.content.src+'" title="'+nombreGaleria+'" alt="'+nombreGaleria+'" /&amp;gt;&amp;lt;br /&amp;gt;'&lt;br /&gt;&lt;br /&gt;def usage():&lt;br /&gt;&lt;br /&gt;print 'python uploader.py -l &amp;lt;directorio&amp;gt; '&lt;br /&gt;&lt;br /&gt;exit(0)&lt;br /&gt;&lt;br /&gt;if __name__=='__main__':&lt;br /&gt;&lt;br /&gt;path = ''&lt;br /&gt;&lt;br /&gt;try:&lt;br /&gt;&lt;br /&gt;opts, args = getopt.getopt(sys.argv[1:], "l:v",["directory"])&lt;br /&gt;&lt;br /&gt;for option in opts:&lt;br /&gt;&lt;br /&gt;if option[0] == '-l':&lt;br /&gt;&lt;br /&gt;path = option[1]                    &lt;br /&gt;&lt;br /&gt;except:&lt;br /&gt;&lt;br /&gt;usage()&lt;br /&gt;&lt;br /&gt;init(path)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;El modo de uso es:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;~python uploader.py -l larutadetucarpeta&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;como respuesta devuelve la ruta original de la imagen subida con formato img.&lt;br /&gt;Eso es to, eso es to, eso es todo amigos :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-5150274828041790760?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2010/05/subir-varias-imagenes-en-tu-album-de.html</link><author>noreply@blogger.com (Giovanny)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-5658633510963310217</guid><pubDate>Sat, 08 May 2010 22:49:00 +0000</pubDate><atom:updated>2010-05-08T15:57:33.316-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Gimp</category><title>Nuevo layout de lo que será ITMedia Argentina</title><description>&lt;p&gt;Antes que nada advierto como advierto siempre: No soy diseñador, y pienso que estoy muy lejos de serlo, respetando a los que verdaderamente lo son, me puse a diseñar el nuevo layout de lo que será la Web de IT Media Argentina. En un principio tenia cierto tufillo a MAC así que fui cambiando algunas cosas y salio de momento esto que sería el front de la web. Internamente va a ser mas complejo, paginas, blog, un sistema de tickets(pero eso ya es otra cosa.). &lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ewrMiuZT-v8/S-XsRpNeIqI/AAAAAAAADa4/IvXzVbzV_6w/s1600/layout-it-media.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 346px; height: 400px;" src="http://4.bp.blogspot.com/_ewrMiuZT-v8/S-XsRpNeIqI/AAAAAAAADa4/IvXzVbzV_6w/s400/layout-it-media.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5469037110375621282" /&gt;&lt;/a&gt;&lt;br /&gt;PD: Esta integramente hecho en Gimp :D&lt;p&gt;¿El tiempo en que estará listo? No lo sé...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-5658633510963310217?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2010/05/nuevo-layout-de-lo-que-sera-itmedia.html</link><author>noreply@blogger.com (Giovanny)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ewrMiuZT-v8/S-XsRpNeIqI/AAAAAAAADa4/IvXzVbzV_6w/s72-c/layout-it-media.png' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-7702497862575107405</guid><pubDate>Fri, 07 May 2010 17:33:00 +0000</pubDate><atom:updated>2010-05-07T10:37:48.930-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Off-topic</category><title>Mi escritorio Linuxero del mes de mayo.</title><description>&lt;p&gt;El theme es Shiky mint.  &lt;/p&gt;&lt;p&gt;La barra de tareas dockbarx&lt;/p&gt;&lt;p&gt;Los Iconos Elementary.&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ewrMiuZT-v8/S-RPyZJYStI/AAAAAAAADao/a21VYww4TxQ/s1600/escritorio2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 250px;" src="http://4.bp.blogspot.com/_ewrMiuZT-v8/S-RPyZJYStI/AAAAAAAADao/a21VYww4TxQ/s400/escritorio2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5468583574696905426" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-7702497862575107405?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2010/05/mi-escritorio-linuxero-del-mes-de-mayo.html</link><author>noreply@blogger.com (Giovanny)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ewrMiuZT-v8/S-RPyZJYStI/AAAAAAAADao/a21VYww4TxQ/s72-c/escritorio2.jpg' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-8422478705425311505</guid><pubDate>Mon, 19 Apr 2010 01:53:00 +0000</pubDate><atom:updated>2010-04-18T19:01:16.110-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Tips</category><title>Correr un servidor smtp para hacer pruebas en python y la funcion mail de PHP</title><description>&lt;p&gt;Recientemente estoy trabajando en una aplicación donde constantemente necesitaba hacer pruebas con la recepción de Emails, no tenia ganas de ponerme a configurar un servidor SMTP y por suerte econtre esta &lt;a href="http://www.juanjoconti.com.ar/2010/04/03/servidor-smtp-para-hacer-pruebas/"&gt;entrada publicada&lt;/a&gt; &lt;/p&gt;&lt;p&gt; Simplemente ejecutan desde la consula&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;blockquote&gt;python -m smtpd -n -c DebuggingServer localhost:25&lt;/blockquote&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ewrMiuZT-v8/S8u5Sv4MtmI/AAAAAAAADac/0wz83ivIVT4/s1600/captura1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 201px;" src="http://4.bp.blogspot.com/_ewrMiuZT-v8/S8u5Sv4MtmI/AAAAAAAADac/0wz83ivIVT4/s400/captura1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5461662704857822818" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;¿Funciona?, a las mil maravillas. Por cierto como se habran dado cuenta estoy en Windows ;( por desgracia, trabajo es trabajo... &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-8422478705425311505?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2010/04/correr-un-servidor-smtp-para-hacer.html</link><author>noreply@blogger.com (Giovanny)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ewrMiuZT-v8/S8u5Sv4MtmI/AAAAAAAADac/0wz83ivIVT4/s72-c/captura1.png' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-3295657240123660470</guid><pubDate>Sun, 11 Apr 2010 14:37:00 +0000</pubDate><atom:updated>2010-04-11T07:44:34.184-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Gnome</category><category domain='http://www.blogger.com/atom/ns#'>Tips</category><title>solución al problema de los iconos gigantes del menu de thunar en Gnome</title><description>Este es un problema muy recurrente que seguro les ocurre a muchos. Detesto a Nautilus por sobre todas las cosas. Me parece pesado, con cosas innecesarias, un arbol de navegación que no uso y mas etc. Asi que uso Thunar como navegador por defecto incluso Pcman file explorer(ojo al eliminar archivos, no los recuperas mas O.o ).&lt;br /&gt;&lt;p&gt;Bien el problema es que al usar un theme preparado para Grnome los iconos de thunar se ven extremadamente extralarge:&lt;br /&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ewrMiuZT-v8/S8HfW-hjG6I/AAAAAAAADaE/EHtP1CJSEM8/s1600/iconosthunar1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 46px;" src="http://2.bp.blogspot.com/_ewrMiuZT-v8/S8HfW-hjG6I/AAAAAAAADaE/EHtP1CJSEM8/s400/iconosthunar1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5458889809183579042" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;La solución es mas simple de que lo piensan:&lt;br /&gt;1. Buscan dentro de la carpeta de su theme el archivo gtkrc obviamante lo abren y agregan esto al inicio.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;gtk-icon-sizes = "gtk-large-toolbar=28,23:panel-menu=24,24:panel=22,22:gtk-dialog=28,23:gtk-button=16,16"&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Reinician el theme (no la PC!) y listo los iconos a su tamaño correcto :D&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ewrMiuZT-v8/S8Hf962E3fI/AAAAAAAADaM/-FAAWLFf8Og/s1600/iconosthunar2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 33px;" src="http://3.bp.blogspot.com/_ewrMiuZT-v8/S8Hf962E3fI/AAAAAAAADaM/-FAAWLFf8Og/s400/iconosthunar2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5458890478210833906" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-3295657240123660470?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2010/04/solucion-al-problema-de-los-iconos.html</link><author>noreply@blogger.com (Giovanny)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ewrMiuZT-v8/S8HfW-hjG6I/AAAAAAAADaE/EHtP1CJSEM8/s72-c/iconosthunar1.png' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-7125607509147019220</guid><pubDate>Tue, 30 Mar 2010 15:54:00 +0000</pubDate><atom:updated>2010-03-30T09:03:14.365-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Imagemagick</category><category domain='http://www.blogger.com/atom/ns#'>Tips</category><title>Creando un  favicon.ico con imagemagick.</title><description>Usualmente cuando usamos imagemagick y el comando convert para convertir entre formatos usaríamos.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$ convert favicon.png favicon.ico&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;La teoría nos dice que con eso es suficiente, pero tenemos problemas con los canales y transparencias(técnicamente no lo se, por que no manejo el tema de edición de imágenes).&lt;br /&gt;&lt;br /&gt;Pero buscando alguna solución llegue a este comando.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$convert favicon.png -channel Alpha -negate favicon.ico&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Listo, cabe recordar de que en el mismo comando puedes modificar el tamaño a 16x16 por defecto para un favicon:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$convert favicon.png -channel Alpha -negate -resize 16x16 favicon.ico&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-7125607509147019220?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2010/03/creando-un-favicoico-con-imagemagick.html</link><author>noreply@blogger.com (Giovanny)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-9152320784742645034</guid><pubDate>Fri, 26 Mar 2010 11:10:00 +0000</pubDate><atom:updated>2010-03-26T04:31:01.910-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Planeta</category><title>Unete a la campaña "La hora del planeta"</title><description>Argentina no es ajena a participar de esta pequeña contribución que hacemos a nuestro planeta dandole una hora de respiro. Como puedes colaborar.&lt;p&gt;Facil: &lt;br /&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="color:#33cc00;"&gt;Este sábado 27 de marzo de 2010 entre las 20.30 y 21.30 Argentina apaga la luz.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;a href="http://wwfar.panda.org/lhp/registrate/" target="_blank"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 166px; height: 290px;" src="http://3.bp.blogspot.com/_ewrMiuZT-v8/S6yXrjvKo2I/AAAAAAAADYs/Xi2lHicyH58/s400/corporeo_final_sin_fecha_23_02_2583.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5452900023422067554" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-9152320784742645034?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2010/03/unete-la-campna-la-hora-del-planeta.html</link><author>noreply@blogger.com (Giovanny)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ewrMiuZT-v8/S6yXrjvKo2I/AAAAAAAADYs/Xi2lHicyH58/s72-c/corporeo_final_sin_fecha_23_02_2583.jpg' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-3303939758207402600</guid><pubDate>Sun, 24 Jan 2010 01:07:00 +0000</pubDate><atom:updated>2010-01-24T07:16:09.079-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Tutoriales</category><category domain='http://www.blogger.com/atom/ns#'>Facebook</category><category domain='http://www.blogger.com/atom/ns#'>Kumbia</category><title>HowTo: Facebook connect en KumbiaPHP</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_ewrMiuZT-v8/S1xgz33oeWI/AAAAAAAADOA/jiOFNGsDbhs/s1600-h/fb-connect0.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="166" src="http://2.bp.blogspot.com/_ewrMiuZT-v8/S1xgz33oeWI/AAAAAAAADOA/jiOFNGsDbhs/s200/fb-connect0.png" width="200" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Buenas compañeros, después de varios días de mucho trabajo al fin me hago un tiempo para publicar este post, hace ya varios días lo quería hacer pero &amp;nbsp;el tiempo es tirano :D&lt;br /&gt;&lt;br /&gt;Si más vueltas vamos al grano. Les voy a mostrar como hacer una &lt;b&gt;conexión desde &lt;a href="http://developers.facebook.com/connect.php"&gt;Facebook Connect&lt;/a&gt;&lt;/b&gt; tomando algunos datos del usuario y agregarlo como usuario a nuestra web de manera automática, para hacer esto primero verificamos si el usuario existe, si no existe en nuestra BD lo agregamos y logeamos, de lo contrario si ya existe lo logeamos directamente. También esta el login normal de un usuario de nuestra web, no les voy a enseñar como hacer un registro de usuario ya que esto sale del alcance de este tutorial.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Así &amp;nbsp;de simple y fácil.&lt;br /&gt;&lt;br /&gt;¿Y que logramos con esto? &amp;nbsp;Creo que las ventajas saltan a la vista, nuestro nuevo usuario no necesita llenar el formulario de registro, solo con presionar el botón de &lt;b&gt;FacebookConnect &lt;/b&gt;y aceptar,&amp;nbsp; automáticamente le creamos una cuenta y lo logueamos. ¿Supremo no? Bueno empecemos entonces.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size: large;"&gt;Primero lo primero, los ingredientes:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Una porción de &lt;b&gt;&lt;a href="http://www.kumbiaphp.com/blog/manuales-y-descargas/"&gt;KumbiaPHP&lt;/a&gt;&lt;/b&gt;(Spirit)&lt;/li&gt;&lt;li&gt;Una cuenta de &lt;b&gt;Facebook&lt;/b&gt; activa(nosotros mismos seremos el conejillo de indias) y para crear nuestra APP por supuesto.&lt;/li&gt;&lt;li&gt;Conocimiento de Javascript(lo básico y necesario)&lt;/li&gt;&lt;li&gt;Descargar la &lt;b&gt;API de Facebook &lt;/b&gt;desde &lt;a href="http://wiki.developers.facebook.com/index.php/PHP"&gt;acá.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Una lectura rápida a la &lt;a href="http://wiki.developers.facebook.com/index.php/Facebook_Connect"&gt;Wiki oficial &lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Una buena taza de café y si hace calor una cerveza bien fría. Les aseguro que se van a divertir!&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size: large;"&gt;Preparación&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Una vez que descarguen la &lt;b&gt;api de Facebook&lt;/b&gt; lo descomprimen y lo guardan como librería en su carpeta libs de su app.&lt;br /&gt;Yo la he renombrado a &lt;b&gt;fb&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_ewrMiuZT-v8/S1uZacy-ygI/AAAAAAAADMg/zj4xvRqjtUI/s1600-h/fb-connect1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="270" src="http://1.bp.blogspot.com/_ewrMiuZT-v8/S1uZacy-ygI/AAAAAAAADMg/zj4xvRqjtUI/s400/fb-connect1.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;Ahora vamos a &lt;b&gt;Facebook &lt;/b&gt;y &lt;b&gt;creamos una nueva app&lt;/b&gt;, en un &lt;a href="http://www.tecnovita.com/2009/11/desarrolla-tu-primera-aplicacion-para.html"&gt;tutorial &lt;/a&gt;anterior les mostré como hacerlo, para poder hacer nuestra conexión hay algunas variaciones. Quedaría de esta manera:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_ewrMiuZT-v8/S1ubKzj6n_I/AAAAAAAADMo/p1ZJf1K7c-Y/s1600-h/fb-connect2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="365" src="http://3.bp.blogspot.com/_ewrMiuZT-v8/S1ubKzj6n_I/AAAAAAAADMo/p1ZJf1K7c-Y/s400/fb-connect2.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Obviamente reemplazan la ruta a donde va a estar alojada su aplicación en mi caso al hacer las pruebas en mi servidor local esta en http://anuncios.stc/kumbia mi app esta en la carpeta kumbia.&lt;br /&gt;&lt;br /&gt;A partir de acá les voy a resumir un poco lo principal y las funciones de la api que podemos usar y como lo estoy usando para lograr los objetivos planteados que comente al principio del post. Al final del post les dejo la app completa para que puedan probarlo en su servidor local o vean la estructura de los archivos necesarios.&lt;br /&gt;&lt;br /&gt;Esta es la estructura de nuestra base de datos. Como ven hay dos tablas, en la tabla users agregamos ademas un usuario de pruebas:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;User: admin&lt;br /&gt;&amp;nbsp;Password : admin (en md5)&lt;br /&gt;&lt;br /&gt;SQL table users&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; CREATE TABLE IF NOT EXISTS `users` (&lt;br /&gt;  &lt;br /&gt;  `id` int(11) NOT NULL auto_increment,&lt;br /&gt;  &lt;br /&gt;  `fb_uid` int(11) default '0',&lt;br /&gt;  &lt;br /&gt;  `email_hash` varchar(64) default NULL,&lt;br /&gt;  &lt;br /&gt;  `login` varchar(50) NOT NULL,&lt;br /&gt;  &lt;br /&gt;  `email` varchar(20) default NULL,&lt;br /&gt;  &lt;br /&gt;  `password` varchar(35) default NULL,&lt;br /&gt;  &lt;br /&gt;  `rol` tinyint(1) NOT NULL default '1',&lt;br /&gt;  &lt;br /&gt;  PRIMARY KEY (`id`),&lt;br /&gt;  &lt;br /&gt;  KEY `fb_id` (`fb_uid`)&lt;br /&gt;  &lt;br /&gt; ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;&lt;br /&gt;  &lt;br /&gt; --&lt;br /&gt;  &lt;br /&gt; -- Volcar la base de datos para la tabla `users`&lt;br /&gt;  &lt;br /&gt; --&lt;br /&gt;  &lt;br /&gt; INSERT INTO `users` (`id`, `fb_uid`, `email_hash`, `login`, `email`, `password`, `rol`) VALUES&lt;br /&gt;  &lt;br /&gt; (1, 0, NULL, 'admin', 'admin@gmail.com', '21232f297a57a5a743894a0e4a801fc3', 0);  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;SQL tabla comentarios&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; CREATE TABLE IF NOT EXISTS `comentarios` (&lt;br /&gt;  &lt;br /&gt;  `id` int(11) NOT NULL auto_increment,&lt;br /&gt;  &lt;br /&gt;  `fb_uid` int(11) default '0',&lt;br /&gt;  &lt;br /&gt;  `nombre` varchar(100) NOT NULL,&lt;br /&gt;  &lt;br /&gt;  `fecha_at` varchar(15) NOT NULL,&lt;br /&gt;  &lt;br /&gt;  `comentario` text NOT NULL,&lt;br /&gt;  &lt;br /&gt;  PRIMARY KEY (`id`)&lt;br /&gt;  &lt;br /&gt; ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;La segunda tabla es para insertar comentarios con los datos del usuario logueado para hacer pruebas.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Facebook Connect&lt;/b&gt; necesita un archivo necesario para hacer CrossBrowsing e intercambiar datos así que necesitamos crearlo, creamos un controller y una vista exclusivamente para mostrarle a Facebook connect donde esta nuestro archivo.&lt;br /&gt;&lt;br /&gt;PHP connect_controller.php&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;?php &lt;br /&gt;  &lt;br /&gt; class ConnectController extends ApplicationController{&lt;br /&gt;  &lt;br /&gt;      function index(){&lt;br /&gt;  &lt;br /&gt;           $this-&amp;gt;render('xd_receiver', null);&lt;br /&gt;  &lt;br /&gt;           }&lt;br /&gt;  &lt;br /&gt;      }  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Creamos nuestra vista&lt;br /&gt;&lt;br /&gt;PHTML connect/xd_receiver.phtml&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"&lt;br /&gt;  &lt;br /&gt;   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;html xmlns="http://www.w3.org/1999/xhtml" &amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;body&amp;gt;&lt;br /&gt;  &lt;br /&gt;   &amp;lt;script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/XdCommReceiver.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;/body&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;/html&amp;gt;  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Necesitamos llamar a la &lt;b&gt;api&lt;/b&gt; de &lt;b&gt;Facebook connect&lt;/b&gt; para poder trabajar con el &lt;b&gt;framework Kumbiaphp&lt;/b&gt; mediante unos archivos Javascript que nos provee FBconnect,&amp;nbsp; asi que en nuestro template principal lo llamamos para que este disponible a lo largo de todo nuestro sitio&lt;br /&gt;&lt;br /&gt;PHTML templates/default.phtml&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"&lt;br /&gt;  &lt;br /&gt;   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml"&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;head&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;?php echo stylesheet_link_tag('style') ?&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;?php echo stylesheet_link_tag('exception') ?&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;?php echo stylesheet_link_tags(); ?&amp;gt;&lt;br /&gt;  &lt;br /&gt;   &amp;lt;head&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;meta http-equiv='Content-type' content='text/html; charset=&amp;lt;?php echo APP_CHARSET ?&amp;gt;' /&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;title&amp;gt;Ejemplo de ZendGdata y facebook connect en kumbiaPHP&amp;lt;/title&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/es_LA" type="text/javascript"&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;/script&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;/head&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;body&amp;gt;&lt;br /&gt;  &lt;br /&gt;   &amp;lt;div id='content'&amp;gt;&lt;br /&gt;  &lt;br /&gt;       &amp;lt;?php View::partial('menu') ?&amp;gt;&lt;br /&gt;  &lt;br /&gt;    &amp;lt;?php View::content(); ?&amp;gt;&lt;br /&gt;  &lt;br /&gt;   &amp;lt;/div&amp;gt;&lt;br /&gt;  &lt;br /&gt;             &amp;lt;script type="text/javascript" src="HTTP://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;  &lt;br /&gt;   &amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;  &lt;br /&gt;   FB.init("&amp;gt;&amp;gt;&amp;gt;aca-su-apiKey&amp;lt;&amp;lt;&amp;lt;&amp;lt;","/kumbia/connect/");&lt;br /&gt;  &lt;br /&gt;   &amp;lt;/script&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;/body&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;/html&amp;gt;&lt;br /&gt;  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Tenemos ya lo básico para empezar.&lt;br /&gt;&lt;br /&gt;Pasamos a nuestros controller, creamos un modelo para cada tabla asi que no hay más explicación para esto.&lt;br /&gt;&lt;br /&gt;Nuestro controller principal, acá hacemos la magia :D&lt;br /&gt;&lt;br /&gt;PHP login_controller.php&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;?php&lt;br /&gt;  &lt;br /&gt; class LoginController extends ApplicationController {&lt;br /&gt;  &lt;br /&gt;  public function before_filter(){&lt;br /&gt;  &lt;br /&gt; if(Auth::is_valid()){&lt;br /&gt;  &lt;br /&gt; $this-&amp;gt;redirect("inicio");&lt;br /&gt;  &lt;br /&gt; return false;&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;  &lt;br /&gt;   public function index() {&lt;br /&gt;  &lt;br /&gt;           /* esta acción nos sirve para loguear a un usuario de nuestra web*/&lt;br /&gt;  &lt;br /&gt;      if ($this-&amp;gt;has_post('login','password')){&lt;br /&gt;  &lt;br /&gt;      $login = $this-&amp;gt;post("login");&lt;br /&gt;  &lt;br /&gt;      $password = md5($this-&amp;gt;post("password"));&lt;br /&gt;  &lt;br /&gt;      $auth = new Auth("model", "class: users", "login: $login", "password: $password");&lt;br /&gt;  &lt;br /&gt;      if ($auth-&amp;gt;authenticate()) {&lt;br /&gt;  &lt;br /&gt;      $user = $this-&amp;gt;Users-&amp;gt;find_by_login($login);&lt;br /&gt;  &lt;br /&gt;                     Session::set("userName",$user-&amp;gt;login);&lt;br /&gt;  &lt;br /&gt;                     $this-&amp;gt;redirect("inicio");&lt;br /&gt;  &lt;br /&gt;      } else {&lt;br /&gt;  &lt;br /&gt;      Flash::error("Falló el inicio de sesion");&lt;br /&gt;  &lt;br /&gt;      }&lt;br /&gt;  &lt;br /&gt;      }&lt;br /&gt;  &lt;br /&gt;      }&lt;br /&gt;  &lt;br /&gt; public function loginfb(){&lt;br /&gt;  &lt;br /&gt; /* esta acción nos sirve para loguear a un usuario desde FBconnect*/&lt;br /&gt;  &lt;br /&gt; //cargamos nuestra libreria FBConnect&lt;br /&gt;  &lt;br /&gt; Load::lib('fb/facebook');&lt;br /&gt;  &lt;br /&gt; //leemos los datos de nuestro fb.ini&lt;br /&gt;  &lt;br /&gt; $keys = Config::read('fb'); &lt;br /&gt;  &lt;br /&gt; $Facebook = new Facebook($keys['key']['application'], $keys['key']['keysecret']); &lt;br /&gt;  &lt;br /&gt; /*logueamos al usuario de manera automatica si ya lo tenemos&lt;br /&gt;  &lt;br /&gt; registrado de lo contrario lo cargamos a nuestra bd y lo logueamos*/&lt;br /&gt;  &lt;br /&gt; if($Facebook-&amp;gt;get_loggedin_user()) &lt;br /&gt;  &lt;br /&gt; { &lt;br /&gt;  &lt;br /&gt;      $fid = $Facebook-&amp;gt;require_login();              &lt;br /&gt;  &lt;br /&gt;   $user_details = $Facebook-&amp;gt;api_client-&amp;gt;users_getStandardInfo($fid, array('first_name')); &lt;br /&gt;  &lt;br /&gt;      $nombre = $user_details[0]['first_name'];&lt;br /&gt;  &lt;br /&gt;      /*encriptamos el fb_uid con md5 lo vamos a usar como password, este método no es del todo seguro, pero&lt;br /&gt;  &lt;br /&gt;      nos servira para el ejemplo*/&lt;br /&gt;  &lt;br /&gt;   $fb_uid = md5($fid);&lt;br /&gt;  &lt;br /&gt;      $auth = new Auth("model", "class: users", "login: $nombre", "password: $fb_uid");&lt;br /&gt;  &lt;br /&gt;                //en caso de lo encontremos en nuestra bd&lt;br /&gt;  &lt;br /&gt;                if ($auth-&amp;gt;authenticate()) {&lt;br /&gt;  &lt;br /&gt;      $user = $this-&amp;gt;Users-&amp;gt;find_by_login($login);&lt;br /&gt;  &lt;br /&gt;                     Session::set("userName",$user-&amp;gt;login);&lt;br /&gt;  &lt;br /&gt;           $this-&amp;gt;redirect("inicio");          &lt;br /&gt;  &lt;br /&gt;      } else {&lt;br /&gt;  &lt;br /&gt;      // Si no esta en nuestra BD guardamos al nuevo usuario y lo logueamos.&lt;br /&gt;  &lt;br /&gt;      $Users = new Users();&lt;br /&gt;  &lt;br /&gt;      $Users-&amp;gt;login = $nombre;&lt;br /&gt;  &lt;br /&gt;      $Users-&amp;gt;password = $fb_uid; &lt;br /&gt;  &lt;br /&gt;      $Users-&amp;gt;fb_uid = $fid;&lt;br /&gt;  &lt;br /&gt;      if($Users-&amp;gt;save()){&lt;br /&gt;  &lt;br /&gt;           /*Guardamos al nuevo usuario, lo redirigimos a esta misma acción, como&lt;br /&gt;  &lt;br /&gt;            el usuario ya existe en nuestra bd lo logueara de manera automatica*/&lt;br /&gt;  &lt;br /&gt;           $this-&amp;gt;redirect('login/loginfb');&lt;br /&gt;  &lt;br /&gt;           } else {&lt;br /&gt;  &lt;br /&gt;                //mensaje en caso de error&lt;br /&gt;  &lt;br /&gt;                Flash::error('No se pudo cumplir la petición, intentelo de nuevo');&lt;br /&gt;  &lt;br /&gt;                }&lt;br /&gt;  &lt;br /&gt;                }&lt;br /&gt;  &lt;br /&gt;      }&lt;br /&gt;  &lt;br /&gt;      }&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Nuestra vista respectiva a login_controller aca mostramos el formulario de inicio de sesión.&lt;br /&gt;&lt;br /&gt;PHP login/index.phtml&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;?php View::content(); ?&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;  &lt;br /&gt; Inicio de Session O &lt;br /&gt;  &lt;br /&gt;      &amp;lt;fb:login-button onlogin="location.href='/kumbia/login/loginfb'" length="long" v="2"&amp;gt;&amp;lt;fb:intl&amp;gt;Conectate a kumbiaPHP con Facebook&amp;lt;/fb:intl&amp;gt;&amp;lt;/fb:login-button&amp;gt;&lt;br /&gt;  &lt;br /&gt;      &amp;lt;?php echo form_tag("login/index"); ?&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;label for="login"&amp;gt;Login:&amp;lt;/label&amp;gt;&lt;br /&gt;  &lt;br /&gt;      &amp;lt;?php echo text_field_tag("login"); ?&amp;gt;&lt;br /&gt;  &lt;br /&gt;      &amp;lt;br/&amp;gt;&lt;br /&gt;  &lt;br /&gt;      &amp;lt;label for="password"&amp;gt;Clave:&amp;lt;/label&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;?php echo password_field_tag("password"); ?&amp;gt;&lt;br /&gt;  &lt;br /&gt;      &amp;lt;br/&amp;gt;&lt;br /&gt;  &lt;br /&gt;      &amp;lt;?php echo submit_tag("Ingresar"); ?&amp;gt;&lt;br /&gt;  &lt;br /&gt;      &amp;lt;?php echo end_form_tag(); ?&amp;gt;&amp;lt;/p&amp;gt;  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;En cada controller que necesitemos que solo tenga acceso un usuario logueado le mostramos el formulario de login si no esta logueado. Por ejemplo el inicio_controller.php&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Lo podemos hacer en nuestro Super Controller:&amp;nbsp; application_controller.php, para el caso práctico lo muestro en cada contoller ya que solo quiero que solo algunas secciones de la web necesiten un usuario registrado.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;PHP inicio_controller.php&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;?php &lt;br /&gt;  &lt;br /&gt; class InicioController extends ApplicationController{&lt;br /&gt;  &lt;br /&gt; public function before_filter(){&lt;br /&gt;  &lt;br /&gt; if(!Auth::is_valid()){&lt;br /&gt;  &lt;br /&gt; $this-&amp;gt;route_to("controller: login");&lt;br /&gt;  &lt;br /&gt; return false;&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;  &lt;br /&gt; function index(){&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;  &lt;br /&gt; }  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Una vez superado el proceso de login mostramos en cada vista los datos del usuario logueado, para esto hacemos uso de partials (pequeñas vistas que pueden ser incluidas en cualquier vista)&lt;br /&gt;&lt;br /&gt;PHP views/partials/login.phtml&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;?php if(Auth::is_valid()){ ?&amp;gt;&lt;br /&gt;  &lt;br /&gt; Usted es el usuario numero&lt;br /&gt;  &lt;br /&gt;      &amp;lt;?php print Auth::get('id'); ?&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;  &lt;br /&gt;      Su nombre es &amp;lt;?php print Auth::get('login'); ?&amp;gt;&lt;br /&gt;  &lt;br /&gt;       &amp;lt;?php if(Auth::get('fb_uid') != 0){&lt;br /&gt;  &lt;br /&gt;           print "Está logueado con su cuenta de Facebook!&amp;lt;br /&amp;gt;";&lt;br /&gt;  &lt;br /&gt;           print "&amp;lt;fb:profile-pic uid='".Auth::get('fb_uid')."' facebook-logo='true' size='small' &amp;gt;&amp;lt;/fb:profile-pic&amp;gt;&amp;lt;br /&amp;gt;";&lt;br /&gt;  &lt;br /&gt;           print "&amp;lt;fb:name linked='false' useyou='false' uid='".Auth::get('fb_uid')."'&amp;gt;&amp;lt;/fb:name&amp;gt;&amp;lt;br /&amp;gt;"; &lt;br /&gt;  &lt;br /&gt;           print "&amp;lt;a href='#' onclick='salir();'&amp;gt;Salir&amp;lt;/a&amp;gt;";&lt;br /&gt;  &lt;br /&gt;           } &lt;br /&gt;  &lt;br /&gt;            else {print "Esta logueado con un usuario de la web. &amp;lt;br /&amp;gt; &amp;lt;a href='/kumbia/logout'&amp;gt;Salir&amp;lt;/a&amp;gt;" ;} ?&amp;gt;&lt;br /&gt;  &lt;br /&gt;                 &amp;lt;script&amp;gt;&lt;br /&gt;  &lt;br /&gt;            function salir(){&lt;br /&gt;  &lt;br /&gt;           //Dependiendo del estado del usuario(conectado o no desde Fb) elegimos la forma de deslogueo      &lt;br /&gt;  &lt;br /&gt;           FB.Connect.get_status().waitUntilReady( function( status ) {&lt;br /&gt;  &lt;br /&gt;    switch ( status ) {&lt;br /&gt;  &lt;br /&gt;    case FB.ConnectState.connected:&lt;br /&gt;  &lt;br /&gt;     FB.Connect.logoutAndRedirect("/kumbia/logout");&lt;br /&gt;  &lt;br /&gt;        return false;&lt;br /&gt;  &lt;br /&gt;    case FB.ConnectState.userNotLoggedIn:&lt;br /&gt;  &lt;br /&gt;        location.href = '/kumbia/logout';&lt;br /&gt;  &lt;br /&gt;    }      });&lt;br /&gt;  &lt;br /&gt;                 }&lt;br /&gt;  &lt;br /&gt;            &amp;lt;/script&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;?php } else { ?&amp;gt;&lt;br /&gt;  &lt;br /&gt; Bienvenido a Los Kumbiatuts &amp;lt;a href="/kumbia/login"&amp;gt;Login&amp;lt;/a&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;?php } ?&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;hr /&amp;gt;&lt;br /&gt;  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Por ejemplo en cualquier vista llamaremos al partial de esta manera&lt;br /&gt;&lt;br /&gt;PHP&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt;  &amp;lt;?php View::partial('login') ?&amp;gt;   &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Hasta acá la idea creo que está clara, para hacer el logout en este caso creé un nuevo controller:&lt;br /&gt;&lt;br /&gt;PHP logout_controller.php&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;?php &lt;br /&gt;  &lt;br /&gt; class LogoutController extends ApplicationController{&lt;br /&gt;  &lt;br /&gt;      public function index(){&lt;br /&gt;  &lt;br /&gt;      Auth::destroy_identity();&lt;br /&gt;  &lt;br /&gt;      $this-&amp;gt;route_to("controller: login");&lt;br /&gt;  &lt;br /&gt;      }&lt;br /&gt;  &lt;br /&gt;      }  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Y bueno es lo principal y quizás lo más difícil de todo esto sea la lógica del sistema, así es como me lo planteo, cada uno puede tener otro razonamiento y hacerlo de distinta manera, solo es cuestión de probar.&lt;br /&gt;&lt;br /&gt;Es un poco difícil explicar en palabras el funcionamiento, mejor seria que lo &lt;a href="http://miborrachera.com.ar/kumbia/"&gt;prueben online&lt;/a&gt; y se descarguen el Tuto completo de&amp;nbsp;&lt;a href="http://www.ziddu.com/download/8306543/fbconnect-gdata-kumbia.tar.gz.html"&gt;acá&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Nota: el usuario es user1 y el password admin&lt;br /&gt;&lt;br /&gt;Está también el ejemplo de &lt;b&gt;ZendGdata &lt;/b&gt;y las librerías en sus respectivas ubicaciones también un archivo de texto de ayuda. Y ya saben cualquier duda, corrección o sugerencia es más que bienvenida.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_ewrMiuZT-v8/S1xkJTQbwWI/AAAAAAAADOI/ubJLhMpZQtQ/s1600-h/fb-connect3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="318" src="http://3.bp.blogspot.com/_ewrMiuZT-v8/S1xkJTQbwWI/AAAAAAAADOI/ubJLhMpZQtQ/s400/fb-connect3.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-3303939758207402600?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2010/01/facebook-connect-en-kumbiaphp-howto.html</link><author>noreply@blogger.com (Giovanny)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ewrMiuZT-v8/S1xgz33oeWI/AAAAAAAADOA/jiOFNGsDbhs/s72-c/fb-connect0.png' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-1795188823897115000</guid><pubDate>Thu, 21 Jan 2010 01:36:00 +0000</pubDate><atom:updated>2010-01-20T17:36:53.096-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Tips</category><category domain='http://www.blogger.com/atom/ns#'>Opera</category><title>Opera unite revoluciona la red.</title><description>Hace mucho que lo utilizo pero solo para compartir archivos o poder ver mis archivos desde otro pc en otro lugar con solo poner mi dirección personal y mi clave.&lt;br /&gt;Recientemente he tenido oportunidad de poder ver mas en profundidad lo que esta aplicacion puede hacer. Y me ha dejado gratamente sorprendido.&lt;br /&gt;&lt;br /&gt;Voy a analizar algunas app que son muy útiles.&lt;br /&gt;&lt;br /&gt;Como sabrán los desarrolladores web cuando trabajamos en un mockup de lo que sera finalmente el diseño de la web y mostrárselo al cliente, tenemos que hacer varios pasos, subirlo al ftp, esperar que suba, verificar las rutas, etc. Con Opera unite y la app Web server se acabaron(aunque aun no corre lenguajes de script es muy rápido poder trabajar de esta manera, haciendo modificaciones en el aire y que nuestro visitante lo pueda ver.)&lt;br /&gt;Simplemente lo instalan lo inician eligen la carpeta donde se encuentra el index.html y listo.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_ewrMiuZT-v8/S1epYizAnUI/AAAAAAAADKo/ZjC3gxvMckQ/s1600-h/unte1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="271" src="http://4.bp.blogspot.com/_ewrMiuZT-v8/S1epYizAnUI/AAAAAAAADKo/ZjC3gxvMckQ/s400/unte1.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;Como ven al fondo nos da una ruta, en mi caso la ruta es:&lt;br /&gt;&lt;br /&gt;http://nucklear.nucklear1977.operaunite.com/webserver/content/&lt;br /&gt;&lt;br /&gt;Y un password(opcional) para ver el ejemplo usen el pass 1Pqz Obviamente tengo que tener el servidor Web de Unite iniciado.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size: large;"&gt;Este es nuestro panel de administrador:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_ewrMiuZT-v8/S1ep4r0438I/AAAAAAAADKw/oPWZ5QyjVjQ/s1600-h/unte2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="232" src="http://4.bp.blogspot.com/_ewrMiuZT-v8/S1ep4r0438I/AAAAAAAADKw/oPWZ5QyjVjQ/s400/unte2.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;Esto es lo que ve nuestra visita:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_ewrMiuZT-v8/S1eqMpUM_LI/AAAAAAAADK4/eJ_jpG-Ujy4/s1600-h/unte3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="243" src="http://4.bp.blogspot.com/_ewrMiuZT-v8/S1eqMpUM_LI/AAAAAAAADK4/eJ_jpG-Ujy4/s400/unte3.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Otra app muy interesante es Dns Updater http://unite.opera.com/application/572/&lt;br /&gt;&lt;br /&gt;Con &lt;a href="http://unite.opera.com/application/331/"&gt;Document courier&lt;/a&gt;&amp;nbsp;guarda archivos a tu pc o la de cualquiera desde otra, realmente excelente y muy util!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_ewrMiuZT-v8/S1esBE4j07I/AAAAAAAADLA/6H75xYUShZU/s1600-h/unte4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="173" src="http://1.bp.blogspot.com/_ewrMiuZT-v8/S1esBE4j07I/AAAAAAAADLA/6H75xYUShZU/s320/unte4.png" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Y una de mis favoritas, &lt;a href="http://unite.opera.com/application/272/"&gt;Web proxy server&lt;/a&gt; Corre tu servidor y hazlo público. Obviamente es para hacer pruebas, el funcionamiento es muy simple arrancas tu servidor por ejemplo apache con PHP, tienes tu localhost configuras web proxy server para que "rutee" la dirección remota a tu web server y listo, olvidate de abrir puertos en el router!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_ewrMiuZT-v8/S1euGSPYS4I/AAAAAAAADLI/Wfdb5Un6i1E/s1600-h/unte5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="285" src="http://3.bp.blogspot.com/_ewrMiuZT-v8/S1euGSPYS4I/AAAAAAAADLI/Wfdb5Un6i1E/s400/unte5.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Y por supuesto no podía faltar la diversión, comparte y edita tus fotos, escucha la música, mira los videos que esta en tu pc desde otra con &lt;a href="http://unite.opera.com/application/322/"&gt;Stream media&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_ewrMiuZT-v8/S1evURe1mAI/AAAAAAAADLQ/qWnSc0GXo04/s1600-h/unte6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="256" src="http://4.bp.blogspot.com/_ewrMiuZT-v8/S1evURe1mAI/AAAAAAAADLQ/qWnSc0GXo04/s400/unte6.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Les aseguro que no podrán creer que todo esto lo haga un solo navegador y lo mejor es que la performance no se ve a afectada de ninguna manera, algunos navegadores deberían aprender.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-1795188823897115000?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2010/01/opera-unite-revoluciona-la-red.html</link><author>noreply@blogger.com (Giovanny)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ewrMiuZT-v8/S1epYizAnUI/AAAAAAAADKo/ZjC3gxvMckQ/s72-c/unte1.png' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-4610940170454293458</guid><pubDate>Mon, 18 Jan 2010 02:44:00 +0000</pubDate><atom:updated>2010-01-17T18:45:26.864-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Off-topic</category><title>Estamos remodelando la casa.</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_ewrMiuZT-v8/S1PK93xNjII/AAAAAAAADKA/_C01m_zFjmM/s1600-h/649848pintor.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_ewrMiuZT-v8/S1PK93xNjII/AAAAAAAADKA/_C01m_zFjmM/s320/649848pintor.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Si piensan que se equivocaron de blog, déjenme decirles que no &amp;nbsp; ^_^&lt;br /&gt;Me canso el theme anterior así que este lo estoy modificando a mi gusto, asi que a mis generosos lectores sigan visitándolo.&lt;br /&gt;Por cierto estoy preparando un post sobre como integrar &lt;strong&gt;Facebook Connect&lt;/strong&gt; en &lt;strong&gt;KumbiaPHP&lt;/strong&gt;. No se lo pierdan.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-4610940170454293458?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2010/01/estamos-remodelando-la-casa.html</link><author>noreply@blogger.com (Giovanny)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ewrMiuZT-v8/S1PK93xNjII/AAAAAAAADKA/_C01m_zFjmM/s72-c/649848pintor.jpg' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-7435559228058381906</guid><pubDate>Sat, 16 Jan 2010 16:54:00 +0000</pubDate><atom:updated>2010-01-16T08:58:11.148-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Drupal</category><title>Drupal 7.x Alpha 1 liberado.</title><description>&lt;div align="left" class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;div align="left"&gt;&lt;a href="http://3.bp.blogspot.com/_ewrMiuZT-v8/S1Hu63Pw9WI/AAAAAAAADJ0/g04AouQSZ3o/s1600-h/druplicon.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_ewrMiuZT-v8/S1Hu63Pw9WI/AAAAAAAADJ0/g04AouQSZ3o/s320/druplicon.png" /&gt;&lt;/a&gt;Despues de casi de dos años de desarrollo el equipo de &lt;a href="http://drupal.org/drupal-7.0-alpha1"&gt;&lt;b&gt;Drupal&lt;/b&gt; &lt;/a&gt;libera su versión &lt;b&gt;7&lt;/b&gt; del multipremiado &lt;b&gt;CMS&lt;/b&gt;.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;Ya habiamos tenido la suerte de probar el pre-alpha y ver como poco a poco este excelente &lt;b&gt;CMS/ Framework&lt;/b&gt; iba mutando hasta lo que hoy en día es.&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;Cientos de mejoras con respecto a su antecesor, algunas y las más esperadas quizas sean:&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul align="left"&gt;&lt;li&gt;Integración de CCK(una versión especial para drupal)&lt;/li&gt;&lt;li&gt;Integración del modulo Imagefield, complemento ideal para CCK.&lt;/li&gt;&lt;li&gt;Una completa y mejorada capa de abstracción de base de datos, totalmente orientada a objetos. Ya no va ser problema desarrollar un site completo en Sqlite y luego migrar a Mysqli&lt;/li&gt;&lt;li&gt;Nuevo diseño mejor integrado del panel administrador y mas intuitivo, noobs llego la hora!&lt;/li&gt;&lt;/ul&gt;&lt;div align="left"&gt;Todo esto es producto de mas de 800 contribuidores tanto en desarrollo como en el reporte de bugs, cabe aclarar de que aún no es la versión definitiva y no es recomendable aún usarlo en producción, Esta versión se libera al público general para poder reportar errores e ir corrigiéndolos. Así que yo ya lo estoy probando y esta mas que excelente.&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-7435559228058381906?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2010/01/drupal-7x-alpha-1-liberado.html</link><author>noreply@blogger.com (Giovanny)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ewrMiuZT-v8/S1Hu63Pw9WI/AAAAAAAADJ0/g04AouQSZ3o/s72-c/druplicon.png' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-8848213064328556350</guid><pubDate>Sat, 16 Jan 2010 01:59:00 +0000</pubDate><atom:updated>2010-01-15T17:59:58.576-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Desktop</category><title>Mi escritorio linuxero I</title><description>Como no quiero estar pasado de moda y recordar mis epoca de "tuning themes" les muestro mi escritorio linuxero con algunos programas que uso actualmente.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Xfce en &lt;a href="http://www.linuxmint.com/"&gt;Linux Mint&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Una sesion de &lt;a href="http://www.geany.org/"&gt;Geany&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Escuchando a &lt;a href="http://www.geany.org/"&gt;Amy Winehouse&lt;/a&gt; desde &lt;a href="http://www.exaile.org/"&gt;Exaile&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;2 paneles.&lt;/li&gt;&lt;li&gt;El theme se llama Shiki mint (tuneado por mis hábiles manos) Viene por defecto en Mint.&lt;/li&gt;&lt;li&gt;Pack de iconos &lt;a href="http://nuovext.pwsp.net/"&gt;NuvoeXT&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Administrador de archivos Thunar.&lt;/li&gt;&lt;li&gt;Wallpaper, no se pero me recuerda a algo ;)&lt;/li&gt;&lt;li&gt;En la bandeja de iconos Opera, Sylpheed y Exaile. &amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_ewrMiuZT-v8/S1EcpU4qaEI/AAAAAAAADJs/8B6bCcHWC98/s1600-h/miescritorio.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_ewrMiuZT-v8/S1EcpU4qaEI/AAAAAAAADJs/8B6bCcHWC98/s400/miescritorio.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-8848213064328556350?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2010/01/mi-escritorio-linuxero-i.html</link><author>noreply@blogger.com (Giovanny)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ewrMiuZT-v8/S1EcpU4qaEI/AAAAAAAADJs/8B6bCcHWC98/s72-c/miescritorio.jpg' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-6468244863010502781</guid><pubDate>Fri, 15 Jan 2010 02:48:00 +0000</pubDate><atom:updated>2010-01-14T18:49:26.857-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Off-topic</category><title>Speak English or die, Habla ingles o muere.</title><description>No hace falta muchas explicaciones para el título de este post.&lt;br /&gt;Paso a narrar:&lt;br /&gt;Buscando una alternativa y probar nuevos hostings estuve toda una tarde buscando por aquí, por allá preguntando a mis contactos(de los cuales solo uno me recomendó algo serio) el resto no se de donde salían tratando de ofrecer sus servicios, analicé varias propuestas algunas interesantes, otras no tanto.&lt;br /&gt;Como doy preferencia al mercado local me interesaba alguien que tuviera sus bases en Argentina, al finalizar la tarde me doy una vuelta buscando alguna otra alternativa extranjera, cual fue mi sorpresa! que los precios por el mismo y mejor servicio se ven abaratados en la mayoría de casos en hasta un 60-70% increíble! (Para ser sincero no estaba al tanto de los precios en el exterior).&lt;br /&gt;&amp;nbsp;Y lo mejor, para saber la calidad del producto solo hay que hacer una búsqueda en google por el nombre de la empresa. Simple.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Obviamente la gran "desventaja" es el idioma para muchos, así que "&lt;b&gt;Habla ingles o muere&lt;/b&gt;".&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-6468244863010502781?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2010/01/speak-english-or-die-habla-ingles-o.html</link><author>noreply@blogger.com (Giovanny)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-2169262274016402604</guid><pubDate>Wed, 13 Jan 2010 01:06:00 +0000</pubDate><atom:updated>2010-10-01T08:22:07.219-07:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Tutoriales</category><category domain='http://www.blogger.com/atom/ns#'>Kumbia</category><category domain='http://www.blogger.com/atom/ns#'>Zend</category><title>Usando componentes de Zend en kumbiaphp</title><description>En este tutorial voy a mostrarles como puedes usar el componente &lt;b&gt;ZendGdata&lt;/b&gt; de &lt;a href="http://framework.zend.com/"&gt;Zend Framework&lt;/a&gt;, este &lt;b&gt;componente&lt;/b&gt; hace uso de las &lt;a href="http://code.google.com/intl/es-AR/more/"&gt;apis de google&lt;/a&gt; como Youtube, &lt;a href="http://code.google.com/intl/es-AR/apis/picasaweb/docs/1.0/developers_guide_php.html"&gt;Picasa&lt;/a&gt;, Blogger, AppEngine, etc.&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;Para este tutorial vamos a usar &amp;nbsp;el componente Photos de ZendGdata para subir nuestras imagenes a nuestro album de Picasaweb desde &lt;b&gt;kumbiaPHP framework php&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size: large;"&gt;Ingredientes:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;1. El componente &lt;b&gt;ZendGdata&lt;/b&gt; lo descargan desde &lt;a href="http://framework.zend.com/download/gdata"&gt;acá&lt;/a&gt; Estoy usando la versión 1.9.6, la documentación&amp;nbsp;&lt;a href="http://framework.zend.com/manual/en/zend.gdata.html"&gt;acá.&lt;/a&gt;&lt;br /&gt;2. Por supuesto &lt;a href="http://www.kumbiaphp.com/blog/manuales-y-descargas/"&gt;KumbiaPHP&lt;/a&gt; &lt;b&gt;Framework PHP&lt;/b&gt; , estoy usando la versión 1.0 Spirit.&lt;br /&gt;3. Conocimientos previos del &lt;b&gt;Framework&lt;/b&gt;.&lt;br /&gt;4. Una cuenta activa de &lt;a href="http://picasaweb.google.com/home"&gt;Picasaweb&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Listo, paso a explicar lo que vamos a hacer.&lt;br /&gt;&lt;br /&gt;Vamos a tener un formulario donde nos pedira tres datos. Titulo, etiquetas(separados por comas) y por supuesto la imagen. Cuando tengamos estos tres datos los procesamos y si hay éxito nos devolvera tres datos(para el ejemplo claro) la foto original, y dos thumbnail.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size: large;"&gt;Organización de los archivos.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Copiamos nuestra carpeta de componentes en la carpeta del proyecto.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_ewrMiuZT-v8/S0otYj9HA9I/AAAAAAAAC9I/qL_Q7_Gyw7Q/s1600-h/gdata1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_ewrMiuZT-v8/S0otYj9HA9I/AAAAAAAAC9I/qL_Q7_Gyw7Q/s400/gdata1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Creamos un archivo libreria donde cargaremos el Loader de nuestro componente.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;PHP app/libs/gdata.php&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;?php &lt;br /&gt;  &lt;br /&gt; $clientLibraryPath = APP_PATH.'libs/ZendGdata/library/';&lt;br /&gt;  &lt;br /&gt; set_include_path(get_include_path() . PATH_SEPARATOR . $clientLibraryPath);&lt;br /&gt;  &lt;br /&gt; require_once 'Zend/Loader.php';&lt;br /&gt;  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Y ya tenemos todo listo para empezar.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size: large;"&gt;Creamos nuestro controller&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;PHP controllers/gdata1_controller.php&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;?php&lt;br /&gt;  &lt;br /&gt;  class Gdata1Controller extends ApplicationController {&lt;br /&gt;  &lt;br /&gt;      public function index(){&lt;br /&gt;  &lt;br /&gt;      /* mostramos el formulario */&lt;br /&gt;  &lt;br /&gt;           }&lt;br /&gt;  &lt;br /&gt;      public function subir(){&lt;br /&gt;  &lt;br /&gt;           if($this-&amp;gt;has_post('submit')){&lt;br /&gt;  &lt;br /&gt;           //La gestión y el proceso la realiza el modelo, en caso de exito nos devuelve el resultado&lt;br /&gt;  &lt;br /&gt;           Load::model('Gdatamodel');&lt;br /&gt;  &lt;br /&gt;           $data = $this-&amp;gt;Gdatamodel-&amp;gt;save($this-&amp;gt;post('foto'), $this-&amp;gt;post('titulo'), $this-&amp;gt;post('etiquetas'));&lt;br /&gt;  &lt;br /&gt;            if($data != FALSE){&lt;br /&gt;  &lt;br /&gt;             $this-&amp;gt;set_persistent('data', $data);&lt;br /&gt;  &lt;br /&gt;             $this-&amp;gt;redirect('gdata1/verfoto/');&lt;br /&gt;  &lt;br /&gt;         }&lt;br /&gt;  &lt;br /&gt; } &lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;  &lt;br /&gt;           public function verfoto(){&lt;br /&gt;  &lt;br /&gt;                $this-&amp;gt;data = $this-&amp;gt;get_persistent('data');&lt;br /&gt;  &lt;br /&gt;                }&lt;br /&gt;  &lt;br /&gt;      }  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size: large;"&gt;Nuestro modelo&lt;/span&gt;&lt;/div&gt;Acá realizamos todo el proceso y la lógica del programa.&lt;br /&gt;&lt;br /&gt;PHP models/gdatamodel.php&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;?php &lt;br /&gt;  &lt;br /&gt; class Gdatamodel {&lt;br /&gt;  &lt;br /&gt;      public function save($foto, $titulo, $etiquetas){&lt;br /&gt;  &lt;br /&gt;      Load::lib('gdata');&lt;br /&gt;  &lt;br /&gt;      /*cargamos las clases necesarias*/&lt;br /&gt;  &lt;br /&gt;       Zend_Loader::loadClass('Zend_Gdata');&lt;br /&gt;  &lt;br /&gt;    Zend_Loader::loadClass('Zend_Gdata_ClientLogin');&lt;br /&gt;  &lt;br /&gt;    Zend_Loader::loadClass('Zend_Gdata_Photos');&lt;br /&gt;  &lt;br /&gt;    Zend_Loader::loadClass('Zend_Http_Client');&lt;br /&gt;  &lt;br /&gt;       /*validando el usuario*/&lt;br /&gt;  &lt;br /&gt;       $svc = Zend_Gdata_Photos::AUTH_SERVICE_NAME;&lt;br /&gt;  &lt;br /&gt;    $user = "user@gmail.com";&lt;br /&gt;  &lt;br /&gt;    $pass = "password";&lt;br /&gt;  &lt;br /&gt;    $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $svc);&lt;br /&gt;  &lt;br /&gt;    $gphoto = new Zend_Gdata_Photos($client);&lt;br /&gt;  &lt;br /&gt;           /*datos para la subida */&lt;br /&gt;  &lt;br /&gt;           $albumName = "gdata"; /* tenemos que tener creado un album con este nombre*/&lt;br /&gt;  &lt;br /&gt;         try {    &lt;br /&gt;  &lt;br /&gt;     $photo = $gphoto-&amp;gt;newPhotoEntry();&lt;br /&gt;  &lt;br /&gt;     // iniciamos el archivo&lt;br /&gt;  &lt;br /&gt;     $file = $gphoto-&amp;gt;newMediaFileSource($_FILES['foto']['tmp_name']);&lt;br /&gt;  &lt;br /&gt;     $file-&amp;gt;setContentType("image/jpeg");&lt;br /&gt;  &lt;br /&gt;     $photo-&amp;gt;setMediaSource($file);&lt;br /&gt;  &lt;br /&gt;     // El titulo&lt;br /&gt;  &lt;br /&gt;     /*$photo-&amp;gt;setSummary($gphoto-&amp;gt;newSummary($titulo)); desfazado */  &lt;br /&gt;       $photo-&gt;setTitle($gphoto-&gt;newTitle($titulo));&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;     // Las etiquetas&lt;br /&gt;  &lt;br /&gt;     $photo-&amp;gt;mediaGroup = new Zend_Gdata_Media_Extension_MediaGroup();&lt;br /&gt;  &lt;br /&gt;     $keywords = new Zend_Gdata_Media_Extension_MediaKeywords();&lt;br /&gt;  &lt;br /&gt;     $keywords-&amp;gt;setText($etiquetas);&lt;br /&gt;  &lt;br /&gt;     $photo-&amp;gt;mediaGroup-&amp;gt;keywords = $keywords;&lt;br /&gt;  &lt;br /&gt;     // Nos ubicamos en el album&lt;br /&gt;  &lt;br /&gt;     $album = $gphoto-&amp;gt;newAlbumQuery();    &lt;br /&gt;  &lt;br /&gt;     $album-&amp;gt;setUser($user);&lt;br /&gt;  &lt;br /&gt;     $album-&amp;gt;setAlbumName($albumName);&lt;br /&gt;  &lt;br /&gt;     // Guardamos la foto&lt;br /&gt;  &lt;br /&gt;     $inserted = $gphoto-&amp;gt;insertPhotoEntry($photo, $album-&amp;gt;getQueryUrl()); &lt;br /&gt;  &lt;br /&gt;           $thumbnail = $inserted-&amp;gt;getMediaGroup()-&amp;gt;getThumbnail();&lt;br /&gt;  &lt;br /&gt;           $foto = $inserted-&amp;gt;getMediaGroup()-&amp;gt;getContent();&lt;br /&gt;  &lt;br /&gt;    } catch (Zend_Gdata_App_Exception $e) {&lt;br /&gt;  &lt;br /&gt;            /*ir con cuidado, solo para version de desarrollo, no usar en produccion*/&lt;br /&gt;  &lt;br /&gt;     echo "Error: No se pudo procesar la orden "; //.$e-&amp;gt;getResponse(); &lt;br /&gt;  &lt;br /&gt;    }&lt;br /&gt;  &lt;br /&gt;       /* devolviendo los datos en caso de exito*/&lt;br /&gt;  &lt;br /&gt;           if(@$foto[0]-&amp;gt;url){&lt;br /&gt;  &lt;br /&gt;                $fotos = array($foto[0]-&amp;gt;url, $thumbnail[1]-&amp;gt;url, $thumbnail[0]-&amp;gt;url );&lt;br /&gt;  &lt;br /&gt;                return $fotos;&lt;br /&gt;  &lt;br /&gt;                          }&lt;br /&gt;  &lt;br /&gt;           else{&lt;br /&gt;  &lt;br /&gt;                return "Error no se pudo enviar la foto!";&lt;br /&gt;  &lt;br /&gt;                }&lt;br /&gt;  &lt;br /&gt;           }&lt;br /&gt;  &lt;br /&gt;      }&lt;br /&gt;  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Creamos nuestra vista donde mostraremos el formulario:&lt;br /&gt;&lt;br /&gt;PHTML: views/gdata1/subir.phtml&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;!-- por cuestion de comodidad no estoy usando los helper tags --&amp;gt;  &lt;br /&gt;  &lt;br /&gt;  &amp;lt;form method="post" action="/gdata1/subir" enctype="multipart/form-data"&amp;gt;&lt;br /&gt;  &lt;br /&gt;    Titulo: &amp;lt;br/&amp;gt;&lt;br /&gt;  &lt;br /&gt;    &amp;lt;input name="titulo" type="text" size="25" /&amp;gt;&lt;br /&gt;  &lt;br /&gt;    Archivo a subir: &amp;lt;br/&amp;gt;&lt;br /&gt;  &lt;br /&gt;    &amp;lt;input name="foto" type="file" /&amp;gt;&lt;br /&gt;  &lt;br /&gt;    Etiquetas: &amp;lt;br/&amp;gt;&lt;br /&gt;  &lt;br /&gt;    &amp;lt;input name="etiquetas" type="text" size="25" /&amp;gt;&lt;br /&gt;  &lt;br /&gt;    &amp;lt;input name="submit" type="submit" value="Enviar" /&amp;gt;&lt;br /&gt;  &lt;br /&gt;   &amp;lt;/form&amp;gt;  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Mostramos el resultado &lt;br /&gt;&lt;br /&gt;PHTML: views/gdata1/verfoto.phtml&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;?php &lt;br /&gt;  &lt;br /&gt; View::content();&lt;br /&gt;  &lt;br /&gt; echo "&amp;lt;img src='".$data[0]."' /&amp;gt;";&lt;br /&gt;  &lt;br /&gt; echo "&amp;lt;img src='".$data[1]."' /&amp;gt;";&lt;br /&gt;  &lt;br /&gt; echo "&amp;lt;img src='".$data[2]."' /&amp;gt;";&lt;br /&gt;  &lt;br /&gt; echo "&amp;lt;br /&amp;gt;";&lt;br /&gt;  &lt;br /&gt; echo "&amp;lt;pre&amp;gt;";&lt;br /&gt;  &lt;br /&gt; print_r($data);&lt;br /&gt;  &lt;br /&gt; echo "&amp;lt;/pre&amp;gt;";&lt;br /&gt;  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Es todo, una receta fácil y sabrosa &amp;nbsp;^.^&lt;br /&gt;&amp;nbsp;Está demás decir que de esta manera pueden trabajar con cualquier API de google disponible, Blogger, Youtube(SI! pueden subir videos a youtube desde tu web), etc etc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PD1: Gracias a &lt;a href="http://cachi.temiga.org/"&gt;@cachi&lt;/a&gt;&amp;nbsp;que me ayudó en la correción de algunos errores cometidos.&lt;br /&gt;PD2: Existe una practica en nuestro controller innecesaria, estoy trabajando para poder quitar la persistencia de datos de un controller a otro ya que es una carga innecesaria.&lt;br /&gt;PD3: Quize poner un ejemplo pero al tener un VPS &amp;nbsp;limpio tengo que recompilar mi PHP con &lt;a href="http://php.net/manual/en/book.openssl.php"&gt;Openssl &lt;/a&gt;y antes de hacerlo tengo que hacer varios pasos previos y ahora no tengo el tiempo necesario. Se los debo(la mayoria de servidores lo tienen), en local les va a funcionar bien. Probado con Xampp en linux.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Editado: Gracias al amigo @joanhey del IRC de kumbia que me ayudó en un pequeño problema que tuve en la configuración del servidor para poder subir el ejemplo.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Vean el funcionamiento &lt;a href="http://miborrachera.com.ar/kumbia/gdata1"&gt;ACA&lt;/a&gt; - Tiene user y pass asi que usen: user1 admin&lt;br /&gt;No se abusen con las imágenes!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;En definitiva es una idea de como pueden empezar a trabajar con Zend Gdata, si tienen alguna duda dense una vuelta por el IRC de kumbia &lt;b&gt;irc.freenode.org&lt;/b&gt; canal &lt;b&gt;#kumbiaphp&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-2169262274016402604?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2010/01/usando-componentes-de-zend-en-kumbiaphp.html</link><author>noreply@blogger.com (Giovanny)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ewrMiuZT-v8/S0otYj9HA9I/AAAAAAAAC9I/qL_Q7_Gyw7Q/s72-c/gdata1.png' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-8395895815910921720</guid><pubDate>Sun, 10 Jan 2010 12:25:00 +0000</pubDate><atom:updated>2010-01-10T04:45:09.311-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Tips</category><category domain='http://www.blogger.com/atom/ns#'>Opera</category><title>Bloquear flash en opera 10/linux</title><description>Muchas veces visitamos paginas las cuales nos bombardean de publicidad con alegres banners en flash, esta bién(de algo hay que vivir), pero es injusto que a causa de esto nuestro navegador quede inutilizado por el excesivo consumo de recursos, para otros navegadores existen sus respectivos addons, pero para Opera tenemos un artilugio.&lt;br /&gt;Empezamos.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Probado en Opera&lt;/b&gt;&lt;br /&gt;Versión 10.10&lt;br /&gt;Compilación 4742&lt;br /&gt;Plataforma Linux&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Vamos y descargamos desde &lt;a href="http://my.opera.com/Lex1/blog/flashblock-for-opera-9"&gt;aca &lt;/a&gt;el &lt;a href="http://ruzanow.ru/opera/flashblocker.zip"&gt;zip&lt;/a&gt;&amp;nbsp;lo descomprimen donde quieran.&lt;br /&gt;&lt;br /&gt;Copiamos el archivo FlashBlocker.css en nuestra carpeta personal de estilos normalmente esta en&lt;br /&gt;&lt;b&gt;~/.opera/styles/user&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Luego copiamos Flashblock.js y FlashBlocker-white-list.js en nuestra carpeta personal de js, si no existe la creamos:&lt;br /&gt;&lt;b&gt;~/.opera/userjs&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Ahora vamos y buscamos la ruta de nuestra carpeta de javascrips &amp;nbsp;en:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;Herramientas-&amp;gt;opciones-&amp;gt;avanzado-&amp;gt;contenido&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_ewrMiuZT-v8/S0nFm8IpBHI/AAAAAAAAC8I/Fs1wjO_UW8g/s1600-h/blockopera1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_ewrMiuZT-v8/S0nFm8IpBHI/AAAAAAAAC8I/Fs1wjO_UW8g/s400/blockopera1.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&amp;nbsp;Ubicamos nuestra carpeta de javascript:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_ewrMiuZT-v8/S0nFweR7gBI/AAAAAAAAC8Q/d0rv7ugFCWE/s1600-h/blockopera2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_ewrMiuZT-v8/S0nFweR7gBI/AAAAAAAAC8Q/d0rv7ugFCWE/s400/blockopera2.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&amp;nbsp;Reiniciamos Opera, vamos al menu VER-&amp;gt;ESTILO-&amp;gt;"aca elegimos Flash blocker" y listo. No mas molestos banners en flash.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_ewrMiuZT-v8/S0nGxzyuXUI/AAAAAAAAC8Y/ukEkaPC6m4A/s1600-h/blockopera3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_ewrMiuZT-v8/S0nGxzyuXUI/AAAAAAAAC8Y/ukEkaPC6m4A/s400/blockopera3.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp;Lo siento mucho por los anunciantes(yo tambien necesito anunciantes), pero esta manera tan "depravada" de anunciarse no es lo ideal.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size: x-small;"&gt;OBS: Quizás muchos se pregunten de por que uso Opera si apoyo tanto al software libre, es verdad tengo mis contradicciones, pero hasta que no haya algo decente para navegar voy a seguir con esta alegre contradicción.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-8395895815910921720?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2010/01/bloquear-flash-en-opera-10linux.html</link><author>noreply@blogger.com (Giovanny)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ewrMiuZT-v8/S0nFm8IpBHI/AAAAAAAAC8I/Fs1wjO_UW8g/s72-c/blockopera1.png' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-7410953629595693663</guid><pubDate>Sat, 02 Jan 2010 20:55:00 +0000</pubDate><atom:updated>2010-01-02T13:12:31.080-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Tutoriales</category><category domain='http://www.blogger.com/atom/ns#'>Google</category><title>Muestra datos de Google analitycs a tu publico en tiempo real.</title><description>&lt;div class="separator" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_ewrMiuZT-v8/Sz-wVRpgrjI/AAAAAAAAC6c/QXC6yeX-uaQ/s200/gapi2.jpg" /&gt;&lt;br /&gt;&lt;/div&gt;Muchas veces nos es necesario(no es mi caso) mostrar estadisticas confiables de nuestra web, las más relevantes por motivos generales.&lt;br /&gt;Para esto Google nos ofrece su api publica, con ello publicamos los datos mas relevantes de nuestras webs, visitas, paginas vistas por mes, etc.&lt;br /&gt;&lt;br /&gt;Su uso es extredamadente simple, descargan la api desde &lt;a href="http://code.google.com/p/gapi-google-analytics-php-interface/downloads/list"&gt;acá &amp;nbsp;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Necesitamos tres parametros importantes:&lt;br /&gt;&lt;br /&gt;1. Tu nombre de usuario (normalmente tu cuenta de email google)&lt;br /&gt;2. Tu password de acceso a analitycs&lt;br /&gt;3. Tu número de identificación del perfil&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size: large;"&gt;El tercero lo puedes encontrar acá&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_ewrMiuZT-v8/Sz-lBgT5-aI/AAAAAAAAC6U/FiCP9g2jvgU/s1600-h/gapi.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_ewrMiuZT-v8/Sz-lBgT5-aI/AAAAAAAAC6U/FiCP9g2jvgU/s400/gapi.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Creamos un archivo para mostrar en este caso &amp;nbsp;el mes, el año, las paginas vistas por mes, tiempo promedio(segundos), las visitas recurrentes, visitas unicas. (para más info &amp;nbsp;&lt;a href="http://code.google.com/intl/es-AR/apis/analytics/docs/gdata/gdataReferenceDimensionsMetrics.html"&gt;acá&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;PHP&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;?php&lt;br /&gt;  &lt;br /&gt; define('Ga_email','tuemail@gmail.com');&lt;br /&gt;  &lt;br /&gt; define('Ga_password','tuàssword');&lt;br /&gt;  &lt;br /&gt; define('Ga_profile_id','tuid');&lt;br /&gt;  &lt;br /&gt; require 'gapi.class.php';&lt;br /&gt;  &lt;br /&gt; $Ga = new gapi(Ga_email,Ga_password);&lt;br /&gt;  &lt;br /&gt; $today = date('Y-m-d');&lt;br /&gt;  &lt;br /&gt; $search = array("2009","2010","01","02","03","04","05","06","07","08","09","10","11","12");&lt;br /&gt;  &lt;br /&gt; $replace = array("","","Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");&lt;br /&gt;  &lt;br /&gt; $search2 = array ("&amp;lt;");&lt;br /&gt;  &lt;br /&gt; $replace2 = array ("");&lt;br /&gt;  &lt;br /&gt; //la magia empieza aca&lt;br /&gt;  &lt;br /&gt; $Ga-&amp;gt;requestReportData(Ga_profile_id,array('month','year'),array('pageviews', 'timeOnSite', 'visits','bounces','entrances', 'visitors'),array('-year','-month') ,$filter=null,$start_date='2009-01-01',$end_date=$today,$start_index=1,$max_results=1000);&lt;br /&gt;  &lt;br /&gt; ?&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;center&amp;gt;&amp;lt;h2&amp;gt;Tecnovita.com Analitycs&amp;lt;/h2&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;hr /&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;table width="100%" align="center" border="1px" &amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;tr&amp;gt; &amp;lt;th&amp;gt;Mes&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Ano&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Paginas vistas&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Tiempo en el site&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Visitas recurrentes&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Visitas unicas&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;?php foreach($Ga-&amp;gt;getResults() as $result): ?&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;tr valign="center" align="center"&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;td width="25%"&amp;gt;&amp;lt;?php echo str_replace($search,$replace,$result) ?&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;td width="20%"&amp;gt;&amp;lt;?php echo $result-&amp;gt;getYear(str_replace($search2,$replace2,$result)) ?&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;td width="15%"&amp;gt;&amp;lt;?php echo $result-&amp;gt;getPageviews() ?&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;td width="15%"&amp;gt;&amp;lt;?php echo $result-&amp;gt;gettimeOnSite() ?&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;td width="15%"&amp;gt;&amp;lt;?php echo $result-&amp;gt;getVisits() ?&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;td width="15%"&amp;gt;&amp;lt;?php echo $result-&amp;gt;getVisitors() ?&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;/table&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;hr /&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;table&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;tr&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;th&amp;gt;Total Meses:&amp;lt;/th&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;td&amp;gt;&amp;lt;?php echo $Ga-&amp;gt;getTotalResults() ?&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;tr&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;th&amp;gt;Total Paginas vistas&amp;lt;/th&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;td&amp;gt;&amp;lt;?php echo $Ga-&amp;gt;getPageviews() ?&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;tr&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;th&amp;gt;Total Visitas&amp;lt;/th&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;td&amp;gt;&amp;lt;?php echo $Ga-&amp;gt;getVisits() ?&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;tr&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;th&amp;gt;Resultados actualizados al &amp;lt;/th&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;td&amp;gt;&amp;lt;?php echo $Ga-&amp;gt;getUpdated() ?&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;/table&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;hr /&amp;gt;&lt;br /&gt;  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size: large;"&gt;El resultado&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_ewrMiuZT-v8/Sz-wVRpgrjI/AAAAAAAAC6c/QXC6yeX-uaQ/s1600-h/gapi2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_ewrMiuZT-v8/Sz-wVRpgrjI/AAAAAAAAC6c/QXC6yeX-uaQ/s400/gapi2.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size: large;"&gt;Pueden ver los resultados actualizados de Tecnovita&amp;nbsp;&lt;a href="http://it-media.com.ar/test/tutorial-gapi/estadisticas.php"&gt;acá&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size: large;"&gt;Actualizados mostrado en un IFRAME&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;iframe frameborder="0" scrolling="no" src="http://it-media.com.ar/test/tutorial-gapi/estadisticas.php" style="border: none; height: 600px; width: 500px;"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-7410953629595693663?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2010/01/muestra-datos-de-google-analitycs-tu.html</link><author>noreply@blogger.com (Giovanny)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ewrMiuZT-v8/Sz-wVRpgrjI/AAAAAAAAC6c/QXC6yeX-uaQ/s72-c/gapi2.jpg' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-7124773587566840470</guid><pubDate>Fri, 01 Jan 2010 15:02:00 +0000</pubDate><atom:updated>2010-01-01T08:33:59.808-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Opera</category><title>Opera 10.5 Pre alpha disponible para linux</title><description>Año nuevo, versión de prueba nueva de este excelente navegador, la gran noticia segun nos cuenta en su blog es la independencia de una libreria gráfica en concreto. Es decir si tienes o usas GTK se va a aejecutar con esta libreria, lo mismo sucede con KDE.&lt;br /&gt;&lt;br /&gt;Ademas de la novedad(no tan relevante para algunos) de un boton que agrupa el menú arriba a izquierda viene por defecto activado -en otras versiones lo pueden activar también-, siempre un paso adelante(el futuro firefox tambien lo traerá) Esto hace que tengamos más espacio para navegar.&lt;br /&gt;&lt;br /&gt;Que más decir de Opera turbo y Sinchronize que lo hacen la mejor opción para usuarios exigentes.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_ewrMiuZT-v8/Sz4OPy9cQ0I/AAAAAAAAC6M/OKS3PAfifUk/s1600-h/opera10-5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_ewrMiuZT-v8/Sz4OPy9cQ0I/AAAAAAAAC6M/OKS3PAfifUk/s400/opera10-5.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Instalación:&lt;br /&gt;Si tienen CURL instalado&lt;br /&gt;&lt;br /&gt;BASH&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; curl http://snapshot.opera.com/unix/labs-6177/opera-10.50-6177.linux.i386.tar.bz2 | tar xjf - cd opera-10.50-6177.linux.i386&lt;br /&gt;  &lt;br /&gt; ./opera  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Y si no, lo pueden descargar de &lt;a href="http://snapshot.opera.com/unix/labs-6177/"&gt;acá&lt;/a&gt;&lt;br /&gt;Lo extraen y ejecutan con&lt;br /&gt;&lt;br /&gt;BASH&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt;./opera  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Happy new year para todos ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-7124773587566840470?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2010/01/opera-105-pre-alpha-disponible-para.html</link><author>noreply@blogger.com (Giovanny)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ewrMiuZT-v8/Sz4OPy9cQ0I/AAAAAAAAC6M/OKS3PAfifUk/s72-c/opera10-5.jpg' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-5134661925142711828</guid><pubDate>Fri, 01 Jan 2010 01:11:00 +0000</pubDate><atom:updated>2009-12-31T17:23:49.584-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Tutoriales</category><category domain='http://www.blogger.com/atom/ns#'>Kumbia</category><title>Validando datos de un formulario en kumbiaPHP.</title><description>En este &lt;b&gt;kumbiatuts&lt;/b&gt; &amp;nbsp;les voy a enseñar como validar datos enviados desde un formulario haciendo persistente los datos para no perderlos, validando email y filtrando datos usando el helper "filter".&lt;br /&gt;&lt;br /&gt;Vamos &amp;nbsp;a usar 5 campos para el ejemplo(Crean una tabla con los campos siguientes, a la tabla la llamaremos "posts").&lt;br /&gt;&lt;br /&gt;1. id&lt;br /&gt;2. nombre&lt;br /&gt;3. historia&lt;br /&gt;4. fecha&lt;br /&gt;5. email&lt;br /&gt;&lt;br /&gt;SQL&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; CREATE TABLE IF NOT EXISTS `posts` (&lt;br /&gt;  &lt;br /&gt;  `id` int(11) NOT NULL auto_increment,&lt;br /&gt;  &lt;br /&gt;  `nombre` varchar(100) NOT NULL,&lt;br /&gt;  &lt;br /&gt;  `historia` tinytext NOT NULL,&lt;br /&gt;  &lt;br /&gt;  `fecha` varchar(15) NOT NULL,&lt;br /&gt;  &lt;br /&gt;   `email` varchar(100) NOT NULL,&lt;br /&gt;  &lt;br /&gt;  PRIMARY KEY (`id`)&lt;br /&gt;  &lt;br /&gt; ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=25 ;  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Vamos a nuestra carpeta de la aplicación y creamos el modelo relacionado a la tabla. Usamos el metodo initialize para validar los datos (mas info &lt;a href="http://wiki.kumbiaphp.com/KumbiaPHP_Framework_Versión_1.0_Spirit#validates_email_in.28.24field.2C_.24params.3Darray.28.29.29"&gt;acá&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;PHP models/posts.php&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;?php &lt;br /&gt;  &lt;br /&gt; class Posts extends ActiveRecord{&lt;br /&gt;  &lt;br /&gt;      public function initialize(){&lt;br /&gt;  &lt;br /&gt;           $this-&amp;gt;validates_email_in('email');&lt;br /&gt;  &lt;br /&gt;                }&lt;br /&gt;  &lt;br /&gt;      }  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Creamos nuestro controller.&lt;br /&gt;&lt;br /&gt;PHP controllers/acciones_controller.php&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;?php &lt;br /&gt;  &lt;br /&gt; class AccionesController extends ApplicationController{&lt;br /&gt;  &lt;br /&gt;  public $models = array('posts');  &lt;br /&gt;  &lt;br /&gt; public function publicar(){&lt;br /&gt;  &lt;br /&gt;      $this-&amp;gt;data['title'] = "Publica tu historia";&lt;br /&gt;  &lt;br /&gt;      if($this-&amp;gt;has_post('posts')){&lt;br /&gt;  &lt;br /&gt;           $post = new Posts($this-&amp;gt;post('posts'));&lt;br /&gt;  &lt;br /&gt;           //insertamos la fecha en formato unix&lt;br /&gt;  &lt;br /&gt;           $post-&amp;gt;fecha = time();&lt;br /&gt;  &lt;br /&gt;           /*recibimos     el campo historia y le aplicamos el filter "striptags" usamos&lt;br /&gt;  &lt;br /&gt;            * autocarga del helper en boot ini [modules] libs = filter&lt;br /&gt;  &lt;br /&gt;           */&lt;br /&gt;  &lt;br /&gt;           $post-&amp;gt;historia = $this-&amp;gt;post('posts.historia', 'striptags');&lt;br /&gt;  &lt;br /&gt;           /*&lt;br /&gt;  &lt;br /&gt;            * Ayuda general&lt;br /&gt;  &lt;br /&gt;           print "&amp;lt;pre&amp;gt;";&lt;br /&gt;  &lt;br /&gt;           print_r($post);&lt;br /&gt;  &lt;br /&gt;           print "&amp;lt;/pre&amp;gt;";&lt;br /&gt;  &lt;br /&gt;           */&lt;br /&gt;  &lt;br /&gt;           //Insertamos los datos recibidos(devuelve true en caso de éxito)&lt;br /&gt;  &lt;br /&gt;           if(!$post-&amp;gt;save()){&lt;br /&gt;  &lt;br /&gt;                //Enviar mensaje de error falla la operacion&lt;br /&gt;  &lt;br /&gt;                Flash::error('No se guardo los datos :( ');&lt;br /&gt;  &lt;br /&gt;                $this-&amp;gt;posts = $this-&amp;gt;post('posts'); //reenviamos los datos al form  &lt;br /&gt;                }&lt;br /&gt;  &lt;br /&gt;                else{&lt;br /&gt;  &lt;br /&gt;                     Flash::success('Se guardo con exito');&lt;br /&gt;  &lt;br /&gt;                     }&lt;br /&gt;  &lt;br /&gt;           }&lt;br /&gt;  &lt;br /&gt;      }&lt;br /&gt;  &lt;br /&gt; }  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Nuestra vista:&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;PHP views/acciones/publicar.phtml &lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;?php echo View::content(); ?&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;?php echo form_tag("acciones/publicar"); ?&amp;gt;&lt;br /&gt;  &lt;br /&gt;  Tu Nombre: &amp;lt;?php echo text_field_tag(array('posts.nombre')); ?&amp;gt;&lt;br /&gt;  &lt;br /&gt;  Tu historia: &amp;lt;?php echo text_field_tag(array('posts.historia')); ?&amp;gt;&lt;br /&gt;  &lt;br /&gt;  Tu Email: &amp;lt;?php echo text_field_tag(array('posts.email')); ?&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;?php echo submit_tag("Enviar") ?&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;?php echo end_form_tag() ?&amp;gt;  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Probamos nuestro formulario:&lt;br /&gt;&lt;br /&gt;http://kumbia/acciones/publicar&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_ewrMiuZT-v8/Sz1KUs8pZRI/AAAAAAAAC5o/x281ve9uhrg/s1600-h/kumbia-validar.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_ewrMiuZT-v8/Sz1KUs8pZRI/AAAAAAAAC5o/x281ve9uhrg/s400/kumbia-validar.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Los datos se hacen pesistentes si hay algun campo que no es validado, al usar el filtro "filter" el campo historia lo guardara eliminando los tags html.&lt;br /&gt;&lt;br /&gt;Por cierto estoy usando el template global.&lt;br /&gt;&lt;br /&gt;PHTML views/templates/default.phtml&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; &amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;head&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;meta http-equiv='Content-type' content='text/html; charset=&amp;lt;?php echo APP_CHARSET ?&amp;gt;' /&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;title&amp;gt;&amp;lt;?php echo $data['title']; ?&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;  &lt;br /&gt;   &amp;lt;?php echo stylesheet_link_tag('style') ?&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;?php  echo stylesheet_link_tag('exception') ?&amp;gt;&lt;br /&gt;  &lt;br /&gt;   &amp;lt;?php  echo stylesheet_link_tags() ?&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;/head&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;body&amp;gt;&lt;br /&gt;  &lt;br /&gt;   &amp;lt;div id='content'&amp;gt;&lt;br /&gt;  &lt;br /&gt;     &amp;lt;?php View::content(); ?&amp;gt;&lt;br /&gt;  &lt;br /&gt;   &amp;lt;/div&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;/body&amp;gt;&lt;br /&gt;  &lt;br /&gt; &amp;lt;/html&amp;gt;&lt;br /&gt;  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Y eso es todo, espero que vean lo realmente fácil que es trabajar con formularios seguros en Kumbiaphp.&lt;br /&gt;El original esta sacádo de la propia wiki de Kumbiaphp(&lt;a href="http://wiki.kumbiaphp.com/Como_hacer_un_CRUD_en_KumbiaPHP_Framework"&gt;Como hacer un crud paso a paso&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-5134661925142711828?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2009/12/validando-datos-de-un-formulario-en.html</link><author>noreply@blogger.com (Giovanny)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ewrMiuZT-v8/Sz1KUs8pZRI/AAAAAAAAC5o/x281ve9uhrg/s72-c/kumbia-validar.png' height='72' width='72'/><thr:total>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-3041899985672387662</guid><pubDate>Fri, 25 Dec 2009 20:30:00 +0000</pubDate><atom:updated>2009-12-25T12:37:13.054-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Firefox</category><title>Nuevo mockup de lo que será el nuevo Firefox 4</title><description>Uno de los desarrolladores de &lt;b&gt;Mozilla Inc&lt;/b&gt;. expuso algunas imágenes de lo que será la nueva versión del popular navegador &lt;b&gt;Firefox 4&lt;/b&gt;. Que con cada aparición(nueva versión) va &lt;a href="http://www.google.com/search?hl=es&amp;amp;client=opera&amp;amp;rls=en&amp;amp;hs=2lb&amp;amp;q=firefox+muy+lento&amp;amp;btnG=Buscar&amp;amp;lr=&amp;amp;aq=f&amp;amp;oq="&gt;perdiendo simpatia&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;De lo que se puede rescatar es obviamente el nuevo diseño(las imágenes las tenemos supuestamente en Windows Vista o Seven) se nota mucho mas cuidada, aunque a la mayoria eso pase a segundo plano, dado que lo que buscamos(al menos yo) es funcionalidad y velocidad.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_ewrMiuZT-v8/SzUgm4D5uZI/AAAAAAAAC4s/9U956b1ReGw/s1600-h/firefox4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_ewrMiuZT-v8/SzUgm4D5uZI/AAAAAAAAC4s/9U956b1ReGw/s400/firefox4.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Se puede observar un acceso directo &amp;nbsp;para ocultar la barra de menú.&lt;br /&gt;Una nueva barra de favoritos(¿mejor organizada?)&lt;br /&gt;Por supuesto el cuadro de búsqueda obligatorio.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Es lo que nos cuenta&lt;b&gt;&amp;nbsp;Stephen Horlander&lt;/b&gt; actual colaborador de &lt;b&gt;Mozilla inc.&lt;/b&gt;&lt;br /&gt;Aunque el actual diseño no está aun terminado reveló Stephen, dado que es dificil poner de acuerdo a cientos de participantes que aportan ideas, este no distaría mucho de lo que se muestra en la imagen.&lt;br /&gt;&lt;br /&gt;Se espera que con este nuevo diseño capte mas usuarios del defenestrado y obsoleto Internet explorer(se sabe que los usuarios de este navegador son atraidos más por el aspecto visual que por el funcional de la aplicación--&lt;span style="color: #134f5c;"&gt;Comentario personal&lt;/span&gt;--)&lt;br /&gt;&lt;br /&gt;Pero ciertamente pese a cada supuesta mejora solo notamos una carga incremental de uso de recursos de nuestros sistemas, esperemos que con esta nueva versión tengan en cuenta tambien eso, y nos den algo que realmente podamos disfrutar. Velocidad, funcionalidad y estilo &amp;nbsp;no tienen por que ir en contramano.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-3041899985672387662?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2009/12/nuevo-mockup-de-lo-que-sera-el-nuevo.html</link><author>noreply@blogger.com (Giovanny)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ewrMiuZT-v8/SzUgm4D5uZI/AAAAAAAAC4s/9U956b1ReGw/s72-c/firefox4.jpg' height='72' width='72'/><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-7954297098627846588.post-913678818121122586</guid><pubDate>Fri, 25 Dec 2009 17:04:00 +0000</pubDate><atom:updated>2009-12-30T09:01:17.033-08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Off-topic</category><title>Kaspersky y el mejor antivirus creado.</title><description>Un video (viral) de una publicidad de &lt;b&gt;Kaspersky&lt;/b&gt; y el por que &lt;b&gt;el mejor antivirus&lt;/b&gt; lo tienen ellos. Muy creativo ^^&lt;br /&gt;&lt;br /&gt;&lt;object height="421" width="500"&gt;&lt;param name="movie" value="http://www.youtube.com/v/5InW89_vnHQ&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/5InW89_vnHQ&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="500" height="421"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7954297098627846588-913678818121122586?l=www.tecnovita.com' alt='' /&gt;&lt;/div&gt;</description><link>http://www.tecnovita.com/2009/12/kapersky-y-el-mejor-antivirus-creado.html</link><author>noreply@blogger.com (Giovanny)</author><thr:total>0</thr:total></item></channel></rss>
