<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='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'><id>tag:blogger.com,1999:blog-3068224110259204298</id><updated>2012-02-16T18:05:52.178-08:00</updated><category term='apache'/><category term='linux'/><category term='sql mysql'/><category term='poo'/><category term='wiki'/><category term='postgresql'/><category term='grub'/><category term='mysql'/><category term='php'/><category term='internet explorer'/><category term='servidores'/><category term='foxpro'/><category term='sphinx'/><category term='games'/><category term='redes sociales'/><category term='open source'/><category term='robotica'/><category term='enemy territory'/><category term='searchengine'/><category term='openoffice'/><category term='tecnotips'/><category term='bluetooth'/><category term='cisco'/><category term='frameworks'/><category term='nokia'/><category term='cms'/><category term='zend framework'/><category term='web 2.0'/><category term='smarty'/><category term='noticias'/><category term='nuevo'/><category term='sun'/><category term='drupal'/><category term='cakephp'/><category term='windows'/><category term='pear'/><category term='benchmarking'/><category term='seguridad informática'/><category term='eclipse'/><category term='ubuntu'/><category term='universidad'/><category term='redes'/><category term='base de datos'/><category term='svn'/><title type='text'>Panamá Post</title><subtitle type='html'>La Web especializada para el Desarrollo Web de Panamá</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>58</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-9196726118960082762</id><published>2008-06-05T06:52:00.000-07:00</published><updated>2008-06-05T06:53:47.699-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nuevo'/><title type='text'>Nueva dirección del Blog de PanamaPost</title><content type='html'>Hola amigos que tal. Desde ayer tengo nuevo blog. Para los interesados la nueva dirección es &lt;a href="http://danilo04.accionasolutions.net"&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;http://danilo04.accionasolutions.net&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Saludos ...&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-9196726118960082762?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/9196726118960082762/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=9196726118960082762&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/9196726118960082762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/9196726118960082762'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/06/nueva-direccin-del-blog-de-panamapost.html' title='Nueva dirección del Blog de PanamaPost'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-4996585568520527385</id><published>2008-06-02T08:23:00.000-07:00</published><updated>2008-06-02T20:45:18.253-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cakephp'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Problemas con find('list') y generateList deprecado en CakePHP 1.2</title><content type='html'>La verdad a la hora de crear un arreglo de opciones para una lista (select en HTML) tuve problemas ya que en la versión 1.2 de CakePHP la función &lt;span style="font-weight: bold;"&gt;generateList&lt;/span&gt; está deprecada.&lt;br /&gt;&lt;br /&gt;Bueno la primera opción que ví fue la de utilizar la función &lt;span style="font-weight: bold;"&gt;find('list')&lt;/span&gt;, pero los resultados no fueron los más deseados. Buscando en los grupos de cake tratando de encontrar alguna sintaxis específica para esta función me encontré con otra solución, que aquí les dejo:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;2.    $foo &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;Usuario&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;TipoUsuario&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;find&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'all'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;3.    $tipo_usuarios &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;Set&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;::&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;combine&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$foo&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'{n}.TipoUsuario.id'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'{n}.TipoUsuario.nombre'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;4.    &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;//Si ese objeto tiene una relacion por ejemplo de $belongsTo con el modelo&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;5.    &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;//actual, por ejmplo Usuario con TipoUsuario podemos setear directamente&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;6.    &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;//la lista con la siguiente funcion&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;7.    $this&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;set&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;compact&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'tipo_usuarios'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;));&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;Actualización&lt;br /&gt;&lt;/span&gt;Con el aporte que hizo José Lorenzo Rodrígues en sus comentarios la otra opción con la función find('list') quedaria así:&lt;br /&gt;&lt;span dir="ltr"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;Usuario&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;TipoUsuario&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;displayField =&lt;/span&gt; &lt;span style="color: rgb(204, 0, 0);"&gt;'nombre'&lt;/span&gt;;&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;    $tipo_usuarios &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$this-&gt;Usuario-&gt;TipoUsuario-&gt;find(&lt;span style="color: rgb(204, 0, 0);"&gt;'list'&lt;/span&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;//Si ese objeto tiene una relacion por ejemplo de $belongsTo con el modelo&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;//actual, por ejmplo Usuario con TipoUsuario podemos setear directamente&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;//la lista con la siguiente funcion&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;    $this&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;set&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;compact&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'tipo_usuarios'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;));&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;Saludos ...&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-4996585568520527385?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/4996585568520527385/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=4996585568520527385&amp;isPopup=true' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/4996585568520527385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/4996585568520527385'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/06/problemas-con-findlist-y-generatelist.html' title='Problemas con find(&apos;list&apos;) y generateList deprecado en CakePHP 1.2'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-8035912731619266728</id><published>2008-05-30T11:25:00.000-07:00</published><updated>2008-06-01T19:10:33.045-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cakephp'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Funciones deprecadas o con otras opciones CakePHP 1.2</title><content type='html'>Estuve viendo un poco y leyendo la documentación y me encuentro con algunas funciones deprecadas o que cambiaron de la version 1.2 de CakePHP con respecto a la 1.1.&lt;br /&gt;&lt;br /&gt;Les dejo la lista:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Todas las que manejaban forms con el helper html se pasaron al helper form. Pueden ver los cambios en este blog de &lt;a href="http://tortaphp.blogspot.com/2007/11/el-form-helper.html"&gt;La Torta en PHP&lt;/a&gt; en donde lo explican bien.&lt;/li&gt;&lt;li&gt;También la función que utilizabamos para generar listas para los campos &lt;span style="font-weight: bold;"&gt;select &lt;/span&gt;en html llamada &lt;span style="font-weight: bold;"&gt;generateList()&lt;/span&gt; está deprecada. Ahora se utiliza &lt;span style="font-weight: bold;"&gt;find('list')&lt;/span&gt;.&lt;br /&gt;&lt;pre class="php"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$this&lt;/span&gt;-&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Post&lt;/span&gt;-&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Categoria&lt;/span&gt;-&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;find&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"list"&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Otra es la función &lt;span style="font-weight: bold;"&gt;findCount &lt;/span&gt;que no estoy seguro si está deprecada pero ahora podemos utilizar &lt;span style="font-weight: bold;"&gt;find('count')&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$this-&gt;Post&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;find&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'count'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, array(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'conditions' &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;=&gt; array(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'Post.comments_count' &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;=&gt; &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'&lt;&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;));&lt;span style="font-family:Georgia,serif;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;La función &lt;span style="font-weight: bold;"&gt;findAll &lt;/span&gt;ahora podemos utilizar &lt;span style="font-weight: bold;"&gt;find('all')&lt;/span&gt; para suplantar esta función.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$this-&gt;Post&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;find&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'all'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, array(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'limit' &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;=&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;15&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;Bueno estas son una pequeña lista que encontré en diferentes blogs y también en algunos proyectos que estoy haciendo.&lt;br /&gt;&lt;br /&gt;Saludos ...&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-8035912731619266728?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/8035912731619266728/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=8035912731619266728&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/8035912731619266728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/8035912731619266728'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/05/funciones-deprecadas-cakephp-12.html' title='Funciones deprecadas o con otras opciones CakePHP 1.2'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-6592306260514653405</id><published>2008-05-29T07:16:00.000-07:00</published><updated>2008-05-29T07:24:44.139-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cakephp'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Nuevo Sitio CakePHP-es</title><content type='html'>El domingo 1 de junio se llevará a cabo una discusión en el irc de cakephp-es. Los temas a discutir serán orientados al nuevo sitio de cakephp-es.&lt;br /&gt;&lt;br /&gt;Esperamos que estén presentes la mayoría de los seguidores de este gran framework que nos ayuda cada día en nuestras labores.&lt;br /&gt;&lt;br /&gt;La Reunión se llevará a cabo desde las 20 horas (UTC/GMT -5, hora de Panamá).&lt;br /&gt;&lt;br /&gt;Para ingresar al irc tienes que ir al servidor freenode.net y el canal es #cakephp-es&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Saludos ...&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-6592306260514653405?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/6592306260514653405/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=6592306260514653405&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/6592306260514653405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/6592306260514653405'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/05/nuevo-sitio-cakephp-es.html' title='Nuevo Sitio CakePHP-es'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-3295998847583348459</id><published>2008-05-26T06:31:00.000-07:00</published><updated>2008-05-26T06:42:41.874-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Nueva versión Ajax Webmail DIMP y Horde 3.2</title><content type='html'>Después de 30 meses de desarrollo, la gente de Horde Projects ha lanzado la última versión de sus productos Horde 3.2, DIMP 1.0, Horde Groupware 1.1, y otras aplicaciones.&lt;br /&gt;&lt;br /&gt;Esta versión incluye varios cambios, dentro de lo que se encuentran:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Mejora en el perfomance a travéz  de todas las aplicaciones, espcialmente a nivel de base de datos y sobre IMAP.&lt;/li&gt;&lt;li&gt;Soporte para sincronización estable a travéz de &lt;a href="http://wiki.horde.org/SyncHowTo"&gt;SyncML&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Javascript no obstrusivo, mejorando la interfaz.&lt;/li&gt;&lt;li&gt;Soporte WebDAV.&lt;/li&gt;&lt;li&gt;Notes encyption.&lt;/li&gt;&lt;li&gt;Subtareas y estimación del tiempo en tareas&lt;/li&gt;&lt;/ul&gt;La verdad me complace mucho saber que este proyecto halla actualizado su webmail. Mi universidad en particular usa este webmail, y a pesar de que se comporta bien, la interfaz de usuario se quedaba corta a nivel de los últimos webmail que están en el mercado.&lt;br /&gt;También podrán encontrar algunos &lt;a href="http://www.horde.org/webmail/screenshots/"&gt;screenshots&lt;/a&gt; de la aplicación.&lt;br /&gt;&lt;br /&gt;Fuente en inglés: &lt;a href="http://janschneider.de/news/35/322"&gt;http://janschneider.de/news/35/322&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Saludos ...&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-3295998847583348459?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/3295998847583348459/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=3295998847583348459&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/3295998847583348459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/3295998847583348459'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/05/nueva-versin-ajax-webmail-dimp-y-horde.html' title='Nueva versión Ajax Webmail DIMP y Horde 3.2'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-5724074565941488586</id><published>2008-05-23T09:59:00.001-07:00</published><updated>2008-05-23T10:03:59.040-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cakephp'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Proyecto CakePHP Extensions</title><content type='html'>Estuve pensando en estos días en crear un proyecto en el cual se hiciera una recopilación de las extensiones que la comunidad ha creado para cakephp. Actualmente cree un proyecto (http://www.assembla.com/wiki/show/cake_extensions) en el cual se tiene un repositorio svn para guardar todas las extensiones.&lt;br /&gt;&lt;br /&gt;La persona que desee colaborar en esta iniciativo me puede escribir a mi email &lt;span style="font-weight: bold;"&gt;danilo.dope at gmail dot com&lt;/span&gt; o en el irc freenode canal #cakephp-es.&lt;br /&gt;&lt;br /&gt;Actualmente estaba trabajando en un helper para mootools y estaba empezando un componente para picasa.&lt;br /&gt;&lt;br /&gt;Bueno espero les guste la idea, y ya saben, el que quiera participar solo me avisa.&lt;br /&gt;&lt;br /&gt;Saludos ...&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-5724074565941488586?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/5724074565941488586/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=5724074565941488586&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/5724074565941488586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/5724074565941488586'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/05/proyecto-cakephp-extensions.html' title='Proyecto CakePHP Extensions'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-5975409031421424460</id><published>2008-05-19T11:49:00.000-07:00</published><updated>2008-05-19T11:54:15.671-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='pear'/><title type='text'>Código estándar en PHP</title><content type='html'>El siguiente post que encontré nos muestra algunas reglas para escribir código estándar en php según los estándares que propone PEAR. Pueden ver esta información &lt;a href="http://dotpress.wordpress.com/2007/03/29/pear-estandares-de-desarrollo-para-php/"&gt;http://dotpress.wordpress.com/2007/03/29/pear-estandares-de-desarrollo-para-php/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Saludos ...&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-5975409031421424460?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/5975409031421424460/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=5975409031421424460&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/5975409031421424460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/5975409031421424460'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/05/cdigo-estndar-en-php.html' title='Código estándar en PHP'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-6282954440856067416</id><published>2008-05-09T09:27:00.001-07:00</published><updated>2008-05-09T09:45:29.151-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Función en Drupal 5.x para setear mensaje</title><content type='html'>Para setear un mensaje general la api de drupal nos ofrece una función. Esta función es &lt;span style="font-weight: bold;"&gt;drupal_set_message&lt;/span&gt;. Puede ser utilizada dentro de nuestros módulos para efectuar un mensaje al sistema.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;Sintáxis&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;array&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt; drupal_set_message($message = null, $type = 'status', $repeat = true)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;Parámetros&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;$message: mensaje que vamos a mandar para que la función lo coloque.&lt;/li&gt;&lt;li&gt;$type: es el tipo de mensaje. Tiene las siguientes opciones:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;'status'&lt;/li&gt;&lt;li&gt;'warning'&lt;/li&gt;&lt;li&gt;'error' --&gt; normalmente color rojo&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;$repeat: si es &lt;span style="font-weight: bold;"&gt;false&lt;/span&gt; el mensaje no se repetirá.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;Código&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1.    &lt;span style="color: rgb(255, 0, 0);"&gt;&lt;?php&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;&lt;br /&gt;2.    &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;function &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;drupal_set_message&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$message &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;NULL&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$type &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'status'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$repeat &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;TRUE&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;3.      &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;if (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$message&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;4.        &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;if (!isset(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$_SESSION&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'messages'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;])) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;5.          $_SESSION&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'messages'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;] = array();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;6.        &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;7.   &lt;br /&gt;8.        &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;if (!isset(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$_SESSION&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'messages'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;][&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$type&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;])) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;9.          $_SESSION&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'messages'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;][&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$type&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;] = array();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;10.        &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;11.   &lt;br /&gt;12.        &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;if (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$repeat &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;|| !&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;in_array&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$message&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$_SESSION&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'messages'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;][&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$type&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;])) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;13.          $_SESSION&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'messages'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;][&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$type&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;][] = &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$message&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;14.        &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;15.      &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;16.   &lt;br /&gt;17.      &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// messages not set when DB connection fails&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;18.      &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;return isset(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$_SESSION&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'messages'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;]) ? &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$_SESSION&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'messages'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;] : &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;NULL&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;19.    &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;20.    ?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Fuente: &lt;/span&gt;&lt;a href="http://api.drupal.org/api/function/drupal_set_message"&gt;http://api.drupal.org/api/function/drupal_set_message&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Saludos ...&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-6282954440856067416?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/6282954440856067416/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=6282954440856067416&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/6282954440856067416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/6282954440856067416'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/05/funcin-en-drupal-5x-para-setear-mensaje.html' title='Función en Drupal 5.x para setear mensaje'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-930411632183554576</id><published>2008-05-08T14:29:00.000-07:00</published><updated>2008-05-09T09:42:07.767-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Función hook_access Drupal 5.x</title><content type='html'>El hook &lt;span style="font-weight: bold;"&gt;access &lt;/span&gt;dentro del api drupal 5.x para el desarrollo de módulos nos ayuda a definir los permisos de acceso (por ejemplo para crear un tipo de nodo). La cuenta administrativa (con id #1 en la tabla) no tendrá problema para pasar por los permisos de acceso de cualquier módulo. Si no se define este hook para un módulo que defina un tipo de dato, todos los controles de acceso fallarán y sólo el administrador o los usuarios que tengan el permiso  "administrar nodos" podrán verlos.&lt;br /&gt;&lt;br /&gt;Parámetros:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$op&lt;/span&gt;: es la operación a realizar. Por ejemplo:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;create&lt;/li&gt;&lt;li&gt;delete&lt;/li&gt;&lt;li&gt;update&lt;/li&gt;&lt;li&gt;delete&lt;/li&gt;&lt;li&gt;view&lt;/li&gt;&lt;/ul&gt;Valor de &lt;span style="font-weight: bold;"&gt;return&lt;br /&gt;&lt;/span&gt;Se retorna &lt;span style="font-weight: bold;"&gt;true &lt;/span&gt;si la acción se puede realizar, de lo contrario, se retorna &lt;span style="font-weight: bold;"&gt;false.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Ej.&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1.    &lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;&lt;br /&gt;2.    &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;function &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;hook_access&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$op&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$node&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;3.      &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;global &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$user&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;4.  &lt;br /&gt;5.      &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;if (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$op &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;== &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'create'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;6.        &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;return &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;user_access&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'create stories'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;7.      &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;8.  &lt;br /&gt;9.      &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;if (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$op &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;== &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'update' &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;|| &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$op &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;== &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'delete'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;10.        &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;if (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;user_access&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'edit own stories'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;) &amp;amp;&amp;amp; (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$user&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;uid &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;== &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$node&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;uid&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;)) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;11.          &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;return &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;TRUE&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;12.        &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;13.      &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;14.    &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;15.    ?&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;Fuente: &lt;/span&gt;&lt;a href="http://drupa.org/api/function/hook_access/5"&gt;http://drupa.org/api/function/hook_access/5&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Saludos ...&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-930411632183554576?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/930411632183554576/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=930411632183554576&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/930411632183554576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/930411632183554576'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/05/funcin-hookaccess-drupal-5x.html' title='Función hook_access Drupal 5.x'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-6586776461413897953</id><published>2008-05-08T14:24:00.001-07:00</published><updated>2008-05-09T09:41:33.095-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poo'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Presentación sobre Programación Orientada a Objetos - Conceptos y su uso en php</title><content type='html'>Aquí les dejo una presentación que realizé para mi curso de php. Más adelante agrego los ejemplos.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:425px;text-align:left" id="__ss_379955"&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=programacionorientadaobjetos-1209500901783291-9"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=programacionorientadaobjetos-1209500901783291-9" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;&lt;a href="http://www.slideshare.net/?src=embed"&gt;&lt;img src="http://static.slideshare.net/swf/logo_embd.png" style="border:0px none;margin-bottom:-5px" alt="SlideShare" /&gt;&lt;/a&gt; | &lt;a href="http://www.slideshare.net/danilo_04/programacion-orientada-objetos-379955?src=embed" title="View 'Programacion Orientada Objetos' on SlideShare"&gt;View&lt;/a&gt; | &lt;a href="http://www.slideshare.net/upload?src=embed"&gt;Upload your own&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Saludos ...&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-6586776461413897953?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/6586776461413897953/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=6586776461413897953&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/6586776461413897953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/6586776461413897953'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/05/presentacin-sobre-programacin-orientada.html' title='Presentación sobre Programación Orientada a Objetos - Conceptos y su uso en php'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-7080503328713440090</id><published>2008-05-08T14:14:00.000-07:00</published><updated>2008-05-09T09:42:26.280-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Custom URL's en Drupal 5.x</title><content type='html'>Para cambiar el estilo las url's de nuestro sitio en drupal (por ejemplo www.example.com/node/14 a www.example.com/articulo/14) tenemos una función que nos puede ayudar.&lt;br /&gt;&lt;br /&gt;Esta función es &lt;span style="font-weight: bold;"&gt;custom_url_rewrite&lt;/span&gt;. A continuación les dejo un ejemplo de modificar la url con &lt;span style="font-weight: bold;"&gt;node &lt;/span&gt;por &lt;span style="font-weight: bold;"&gt;articulo&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;1.    &lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;&lt;br /&gt;2.    &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;function &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;custom_url_rewrite&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$op&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$result&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$path&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;3.      &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;if (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$op &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;== &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'alias'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;4.        &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;if (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;preg_match&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'|^node/(.*)|'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$path&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$matches&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;)) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;5.          &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;return &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'articulo/'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;. &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$matches&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;];&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;6.        &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;7. &lt;br /&gt;8.      &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;9.      &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;if (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$op &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;== &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'source'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;10.        &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;if (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;preg_match&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'|^articulo(/.*)|'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$path&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$matches&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;)) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;11.          &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;return &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'node'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;. &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$matches&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;];&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;12.        &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;13. &lt;br /&gt;14.      &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;15.      &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;return &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$result&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;16.    &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;17.    ?&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Donde si el parámetro $op es 'source' quiere decir que hay que traducirla para el código y si es 'alias' se hace la traducción para la url.&lt;br /&gt;&lt;br /&gt;Esta función se guarda en el archivo &lt;span style="font-weight: bold;"&gt;settings.php &lt;/span&gt;de nuestro sitio (por ejemplo &lt;span style="font-weight: bold;"&gt;ejemplo/sites/default/settings.php)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Saludos ...    &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-7080503328713440090?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/7080503328713440090/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=7080503328713440090&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/7080503328713440090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/7080503328713440090'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/05/custom-urls-en-drupal-5x.html' title='Custom URL&apos;s en Drupal 5.x'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-4047268457664423292</id><published>2008-04-25T06:46:00.000-07:00</published><updated>2008-04-25T06:49:00.241-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql mysql'/><title type='text'>Presentación sobre SQL - Conceptos</title><content type='html'>Aquí les dejo con una presentación que hice para un Curso de PHP que estoy impartiendo. El fin es explicar los principales conceptos del lenguajes SQL.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="width: 425px; text-align: left;" id="__ss_364085"&gt;&lt;object style="margin: 0px;" height="355" width="425"&gt;&lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=cursosqlconceptos-1208753367688832-9"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=cursosqlconceptos-1208753367688832-9" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;"&gt;&lt;a href="http://www.slideshare.net/?src=embed"&gt;&lt;img src="http://static.slideshare.net/swf/logo_embd.png" style="border: 0px none ; margin-bottom: -5px;" alt="SlideShare" /&gt;&lt;/a&gt; | &lt;a href="http://www.slideshare.net/danilo_04/curso-sql-conceptos?src=embed" title="View 'Curso Sql -  Conceptos' on SlideShare"&gt;View&lt;/a&gt; | &lt;a href="http://www.slideshare.net/upload?src=embed"&gt;Upload your own&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Saludos...&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-4047268457664423292?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/4047268457664423292/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=4047268457664423292&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/4047268457664423292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/4047268457664423292'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/04/presentacin-sobre-sql-conceptos.html' title='Presentación sobre SQL - Conceptos'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-7354158064674771311</id><published>2008-04-22T08:41:00.000-07:00</published><updated>2008-05-08T14:40:42.503-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='benchmarking'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>mysql_num_rows vs. SQl  - SELECT COUNT(*)</title><content type='html'>Haciendo una paginación para un proyecto me dió la curiosidad de verificar cuál método es más efectivo para contar el total de registros. Bueno a pesar de ser obvio que con sql count(*) sería más rápido, me propuse hacer las pruebas y estos fueron los resultados:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:100%;"&gt;Prueba con SELECT COUNT(*) FROM tabla&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Fecha: 22/04/2008 11:35:17 am&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Test con count(*) - registros = 44069&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Tiempo &lt;span style="color: rgb(0, 0, 153);"&gt;0.00441598892212&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;segundos&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:100%;"&gt;Prueba mysql_num_rows&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Fecha: 22/04/2008 11:35:21 am&lt;br /&gt;Test con mysql_affected_rows - registros = 44069&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tiempo &lt;span style="color: rgb(0, 0, 153);"&gt;59.3658621311&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;segundos&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Código fuente de la prueba:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1.    &lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;&lt;br /&gt;2.    &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;require(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'../benchmark.php'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;3.    $caso &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'mysql'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;4.    $file &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'../var/bench_databasecount.txt'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;5.    &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;try{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;6.        Benchmark&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;::&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;startBenchmark&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$file&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;7.        $conn &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;mysql_connect&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'localhost'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'root'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'pannet1'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;8.        mysql_select_db&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'test'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$conn&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;9.        &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;switch(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$caso&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;){&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;10.            &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;case &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'count'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;:&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;11.                    $sql &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"SELECT COUNT(*) as contador FROM tabla"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;12.                    $rs &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;mysql_query&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$sql&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$conn&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;13.                    $count &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;mysql_fetch_array&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$rs&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;14.                    Benchmark&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;::&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;pushLog&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'Test con count - registros = '&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$count&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'contador'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;].&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"\n"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$file&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;15.            &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;break;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;16.            &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;case &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'mysql'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;:&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;17.                    $sql &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"SELECT * FROM tabla"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;18.                    $rs &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;mysql_query&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$sql&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$conn&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;19.                    $count &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;mysql_num_rows&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$rs&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;20.                    Benchmark&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;::&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;pushLog&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'Test con mysql_affected_rows - registros = '&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$count &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"\n"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$file&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;21.            &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;break;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;22.&lt;br /&gt;23.        &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;24.        Benchmark&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;::&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;endBenchmark&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$file&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;25.        &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;echo &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'Termino'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;26.    &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;}catch(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;Exception $e&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;){&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;27.        &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;echo &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$e&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;getMessage&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;28.    &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;29.    ?&gt;&lt;br /&gt;&lt;/span&gt;30.&lt;br /&gt;31.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conclusión&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;A las personas que todavía realizan las paginaciones con &lt;span style="font-weight: bold;"&gt;mysql_num_rows&lt;/span&gt;,  preferiblemente usen sql (función COUNT(*)).&lt;br /&gt;&lt;br /&gt;Saludos ...&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-7354158064674771311?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/7354158064674771311/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=7354158064674771311&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/7354158064674771311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/7354158064674771311'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/04/mysqlnumrows-vs-sql-select-count.html' title='mysql_num_rows vs. SQl  - SELECT COUNT(*)'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-1041180527752862281</id><published>2008-04-15T13:42:00.000-07:00</published><updated>2008-05-09T09:40:52.750-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poo'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Patrón Singleton en PHP</title><content type='html'>Les dejo un ejemplo del patrón singleton aplicado en php. Es bien útil para manejar las conexiones a la base de datos.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1.  &lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;?php  &lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;&lt;br /&gt;2.    &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;class &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;DB &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;3.      &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;private static &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$_singleton&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;4.      &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;private &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$_connection&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;5.      &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;private function &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;__construct&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;()&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;6.      &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;7.        $this&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;_connection &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;mysql_connect&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;8.      &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;9.      &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;public static function &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;getInstance&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;()&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;10.      &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;11.        &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;if (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;is_null &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;::&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$_singleton&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;)) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;12.          self&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;::&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$_singleton &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= new &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;DB&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;13.        &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;14.        &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;return &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;self&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;::&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$_singleton&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;15.      &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;16.    &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;17.    $db &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;DB&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;::&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;getInstance&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;18.&lt;br /&gt;19.    ?&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Saludos ...&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-1041180527752862281?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/1041180527752862281/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=1041180527752862281&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/1041180527752862281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/1041180527752862281'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/04/patrn-singleton-en-php.html' title='Patrón Singleton en PHP'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-2475281262789133969</id><published>2008-04-10T07:36:00.000-07:00</published><updated>2008-04-10T07:50:45.930-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Sound Juicer para extracción de música</title><content type='html'>Ubuntu trae una herramienta muy buena para la extracción de música en los cd's. Se llama Sound Juicer. Para poder guardar las canciones en formato mp3 se necesita bajar el paquete&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;b&gt;gstreamer0.10-plugins-ugly-multiverse.&lt;br /&gt;#: sudo aptitude install &lt;/b&gt;&lt;b&gt;gstreamer0.10-plugins-ugly-multiverse.&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;Después debes entrar Sound Juicer y buscar las opciones en &lt;b&gt;Editar -&gt; Preferencias -&gt; Editar Perfiles.&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;Debes agregar un nuevo perfil con los siguientes datos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Nombre: Calidad de CD mp3 optimo&lt;/li&gt;&lt;li&gt;Descripción del perfil: Calidad de mp3 a 190 kbs&lt;/li&gt;&lt;li&gt;Pipeline de Gstreamer: audio/x-raw-int,rate=44100,channels=2 ! lame name=enc bitrate=192 mode=Stereo&lt;/li&gt;&lt;li&gt;Extensión: mp3&lt;/li&gt;&lt;li&gt;Seleccionar el checkbox que dice ¿Está activo?&lt;/li&gt;&lt;/ul&gt;Con esto debes tener la opción para guardar tus canciones en formato mp3.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Fuente: &lt;a href="http://www.guia-ubuntu.org/index.php?title=Sound_Juicer"&gt;Guía Ubuntu - Sound Juicer&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Saludos ...&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-2475281262789133969?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/2475281262789133969/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=2475281262789133969&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/2475281262789133969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/2475281262789133969'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/04/sound-juicer-para-extraccin-de-msica.html' title='Sound Juicer para extracción de música'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-1695868354257787706</id><published>2008-04-08T07:22:00.000-07:00</published><updated>2008-04-08T07:28:11.260-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bluetooth'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Problemas con mi celular y el bluetooth de mi laptop en Ubuntu Linux</title><content type='html'>Algunas veces había intentado pegar mi celular (Sony Erickson w300) a mi laptop (Dell XPS 1330), pero me salía un error de que no podía realizar la conexión (&lt;em&gt;obex://[–]...)&lt;/em&gt; . Para resolver este problema se debe instalar un paquete llamado &lt;strong&gt;&lt;a href="http://blogs.gnome.org/jamesh/2007/01/03/gnome-vfs-obexftp-01-released/"&gt;gnome-vfs-obexftp&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;#: sudo aptitude install &lt;/strong&gt;&lt;strong&gt;gnome-vfs-obexftp&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Bueno espero les ayuden en algo...&lt;br /&gt;&lt;br /&gt;Saludos ...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Fuente: &lt;/span&gt;&lt;a href="http://www.davidsuarez.es/?p=472"&gt;http://www.davidsuarez.es/?p=472&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-1695868354257787706?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/1695868354257787706/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=1695868354257787706&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/1695868354257787706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/1695868354257787706'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/04/problemas-con-mi-celular-y-el-bluetooth.html' title='Problemas con mi celular y el bluetooth de mi laptop en Ubuntu Linux'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-2811793460847620033</id><published>2008-04-06T09:45:00.001-07:00</published><updated>2008-04-06T09:47:05.055-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='robotica'/><title type='text'>Peleas de Robots</title><content type='html'>Buscando videos sobre Lego Mindstorms me encuentro con un video bastante cómico de una pelea de dos robots. Éstos robots son bastante ágiles y uno de ellos llega a dar hasta un mortal jajaja. Aquí les dejo con el video:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/wqy1bDf9fVo&amp;amp;hl=en"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/wqy1bDf9fVo&amp;amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-2811793460847620033?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/2811793460847620033/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=2811793460847620033&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/2811793460847620033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/2811793460847620033'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/04/peleas-de-robots.html' title='Peleas de Robots'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-4765008205248060452</id><published>2008-04-04T07:33:00.000-07:00</published><updated>2008-04-04T07:38:24.618-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='searchengine'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='sphinx'/><title type='text'>Problemas con mysql instalando sphinx en Ubuntu Linux</title><content type='html'>Instalando &lt;a href="http://www.sphinxsearch.com"&gt;sphinx&lt;/a&gt; (search engine) en mi máquina del trabajo (Dell Optilex gx520 Ubuntu Gusty 7.10), me topo con un problema relacionado con mysql. Me aperece que no encuentra las librerías de mysql y me aconseja que instale el paquete &lt;span style="font-weight: bold;"&gt;mysql-devel&lt;/span&gt;. Buscando en google me doy cuenta que en ubuntu el paquete no se llama mysql-devel, sino  &lt;span style="font-weight: bold;"&gt;libmysql++-dev.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;Instalando este paquete, no tendrás problemas para compilar el sphinx en tu máquina con ubuntu. Claro ántes debes tener instalado mysql en tu máquina.&lt;br /&gt;&lt;br /&gt;Espero les ayude en algo si llegan a tener este problema.&lt;br /&gt;&lt;br /&gt;Saludos ...&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-4765008205248060452?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/4765008205248060452/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=4765008205248060452&amp;isPopup=true' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/4765008205248060452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/4765008205248060452'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/04/problemas-con-mysql-instalando-sphinx.html' title='Problemas con mysql instalando sphinx en Ubuntu Linux'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-5483114159481610589</id><published>2008-04-03T21:44:00.000-07:00</published><updated>2008-04-04T06:20:06.108-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='robotica'/><category scheme='http://www.blogger.com/atom/ns#' term='universidad'/><title type='text'>Primer Lego MindStorms en la clase de Robótica</title><content type='html'>Este semestre nos toca la materia de Robótica. Una materia bastante interesante y que ha despertado cierto interés por parte mía y de unos amigos. En las primeras clases estamos aprendiendo lo básico, pero viendo algunos videos en youtube, nos ha llamado más aún la atención lo que se puede hacer con estos juguetes.&lt;br /&gt;&lt;br /&gt;Aquí les dejo con un video (de mi celular, no muy buena resolución jeje) del primer robot que armamos en la clase.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-8159f0feeea06b05" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v6.nonxt1.googlevideo.com/videoplayback?id%3D8159f0feeea06b05%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331763810%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D1B3E73B5FFEDF9355F754863A4D0A52A73FF0BBB.495289AFC04B3C707C42EDD35A17B993DC9E616%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D8159f0feeea06b05%26offsetms%3D5000%26itag%3Dw160%26sigh%3DTLNTFEi0x1A0ojOaUyig_Dua320&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v6.nonxt1.googlevideo.com/videoplayback?id%3D8159f0feeea06b05%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331763810%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D1B3E73B5FFEDF9355F754863A4D0A52A73FF0BBB.495289AFC04B3C707C42EDD35A17B993DC9E616%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D8159f0feeea06b05%26offsetms%3D5000%26itag%3Dw160%26sigh%3DTLNTFEi0x1A0ojOaUyig_Dua320&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Saludos ...&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-5483114159481610589?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=8159f0feeea06b05&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/5483114159481610589/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=5483114159481610589&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/5483114159481610589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/5483114159481610589'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/04/primer-lego-mindstorm-en-la-clase-de.html' title='Primer Lego MindStorms en la clase de Robótica'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-697985460896250028</id><published>2008-04-02T08:06:00.000-07:00</published><updated>2008-04-02T08:20:16.707-07:00</updated><title type='text'>Clase en php para filtrar texto</title><content type='html'>Cuando creamos un foro por ejemplo nos vemos en la necesidad de crear filtros para malas palabras. La siguiente clase se encarga de filtrar texto dependiendo de un arreglo de palabras que estén definidas con anterioridad.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Código:&lt;br /&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;span style="color: rgb(0, 0, 187);"&gt;&lt;?php&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;/**&lt;br /&gt; * WordFilter&lt;br /&gt; * Class for censoring words in text&lt;br /&gt; * @access public&lt;br /&gt; * @package SPLIB&lt;br /&gt; */&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;class &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;WordFilter &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;{&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;/**&lt;br /&gt;    * An array of words to censor&lt;br /&gt;    * @access private&lt;br /&gt;    * @var array&lt;br /&gt;    */&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;var &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$badWords&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;/**&lt;br /&gt;    * WordFilter constructor&lt;br /&gt;    * Randomly generates strings to censor words with&lt;br /&gt;    * @param array an array of words to filter&lt;br /&gt;    * @access public&lt;br /&gt;    */&lt;br /&gt;       &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;function &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;WordFilter&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$badWords&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;)&lt;br /&gt;       {&lt;br /&gt;          &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;badWords &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= array();&lt;br /&gt;          &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;srand&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;((float)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;microtime&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;() * &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;1000000&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;          &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$censors &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= array(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'$'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'@'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'#'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'*'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;          foreach (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$badWords &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;as &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$badWord&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;) {&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$badWord &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;preg_quote&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$badWord&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$replaceStr &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;''&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$size &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;strlen&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$badWord&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;            for (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$i &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$i &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;&lt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$size&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$i&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;++) {&lt;br /&gt;              &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;shuffle&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$censors&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;              &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$replaceStr &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;.= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$censors&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;];&lt;br /&gt;            }&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;badWords&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$badWord&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;] = &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$replaceStr&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;          }&lt;br /&gt;       }&lt;br /&gt;       &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;/**&lt;br /&gt;         * Searches for bad words in text and censors them&lt;br /&gt;         * @param string text to filter&lt;br /&gt;         * @return string the filtered text&lt;br /&gt;         * @access public&lt;br /&gt;         */&lt;br /&gt;       &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;function &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;filter&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$text&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;)&lt;br /&gt;       {&lt;br /&gt;          foreach (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$this&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;badWords &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;as &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$badWord &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;=&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$replaceStr&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;) {&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$text &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;preg_replace&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'/' &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;. &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$badWord &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;. &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'/i'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$replaceStr&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;,&lt;br /&gt;                                 &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$text&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;          }&lt;br /&gt;          return &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$text&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;       }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// An array of words to replace&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$badWords &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= array(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'tubby'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'tubbies'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'byebye'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// Include the word file with the list of bad words&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$wordFilter &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= new &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;WordFilter&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$badWords&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// $text simulates some data from the database&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$text &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'byebye!'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// Filter the words&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$text &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$wordFilter&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;filter&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$text&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;echo &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$text&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;?&gt;&lt;/span&gt; &lt;/span&gt; &lt;/code&gt;&lt;br /&gt;&lt;/blockquote&gt;           &lt;br /&gt;Fuente: Libro The PHP Anthology, Volumen II.&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-697985460896250028?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/697985460896250028/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=697985460896250028&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/697985460896250028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/697985460896250028'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/04/clase-en-php-para-filtrar-texto.html' title='Clase en php para filtrar texto'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-8977631965754976473</id><published>2008-03-31T10:49:00.000-07:00</published><updated>2008-04-02T08:06:37.661-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='enemy territory'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Problema de audio con Wolfenstein ET en linux</title><content type='html'>Bueno para los que instalaron Wolfesntein Enemy Territory en linux (en mi caso la distribución Ubuntu) y el audio del juego no se escucha, pueden probar la solución que les dejo. Es la siguiente:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Como usuario root ejecutas la siguiente línea de comando:&lt;br /&gt;#: echo "et.x86 0 0 direct" &gt;&gt; /proc/asound/card0/pcm0p/oss&lt;/li&gt;&lt;li&gt;Si queremos guardar esos cambios, debemos ejecutar lo siguiente:&lt;br /&gt;#: nano /etc/rc.local y agregamos la línea  echo "et.x86 0 0 direct" &gt;&gt; /proc/asound/card0/pcm0p/oss&lt;/li&gt;&lt;/ul&gt;Fuente: &lt;a href="http://blogdrake.net/node/3047"&gt;http://blogdrake.net/node/3047&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Saludos ...&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-8977631965754976473?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/8977631965754976473/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=8977631965754976473&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/8977631965754976473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/8977631965754976473'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/03/problema-de-audio-con-wolfenstein-et-en.html' title='Problema de audio con Wolfenstein ET en linux'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-5411347395906447979</id><published>2008-03-14T13:58:00.000-07:00</published><updated>2008-03-14T14:05:08.639-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Desinstalar Aplicaciones compiladas en Linux</title><content type='html'>Normalmente utilizo apt para instalar mis aplicaciones en linux (en mi caso utilizo Ubuntu). Pero hay aplicaciones que no se encuentran en los repositorios de paquetes  y por esto hay casos en los que debemos compilar código.&lt;br /&gt;&lt;br /&gt;Normalmente la instalación de una aplicación sería:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;./configure&lt;/li&gt;&lt;li&gt;make&lt;/li&gt;&lt;li&gt;make install //Como usuario root&lt;/li&gt;&lt;/ul&gt;Para poder desinstalar debemos tener el código fuente con el que compilamos y seguir los siguientes pasos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;   ./configure&lt;/li&gt;&lt;li&gt;make uninstall&lt;/li&gt;&lt;/ul&gt;Si no funcione verificar en el archivo &lt;span style="font-weight: bold;"&gt;Makefile&lt;/span&gt; si existe alguna directiva de Unistall.&lt;br /&gt;&lt;br /&gt;Saludos ...&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-5411347395906447979?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/5411347395906447979/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=5411347395906447979&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/5411347395906447979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/5411347395906447979'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/03/desinstalar-aplicaciones-compiladas-en.html' title='Desinstalar Aplicaciones compiladas en Linux'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-1581808887837506550</id><published>2008-03-11T07:00:00.000-07:00</published><updated>2008-03-11T11:25:29.217-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='benchmarking'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Benchmark a tu sitios con ApacheBench en Linux</title><content type='html'>Si tu sitio u aplicación está alojada en un servidor que corre sobre apache, entonces podemos hacer un &lt;a href="http://es.wikipedia.org/wiki/Benchmark"&gt;Benchmark&lt;/a&gt; para verificar el tiempo de respuesta de nuestra aplicación, gracias a la aplicación ApacheBench.&lt;br /&gt;&lt;br /&gt;Este aplicación nos ayuda para hacer benchmark de aplicaciones hechas en php por ejemplo u otro tipo de aplicaciones, ya que podemos medir el tiempo de respuesta de nuestra app.&lt;br /&gt;&lt;br /&gt;Ahora les coloco un ejemplo de su uso:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Entramos a la consola y colocamos:&lt;br /&gt;#: ab -c 10 -t 60 http://example.org/productos.php&lt;/li&gt;&lt;li&gt;Para llamar a la aplicación utilizamos el comando &lt;span style="font-weight: bold;"&gt;ab&lt;/span&gt;; explico los parámetros:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;-c: este parámetro indica el número de clientes con el cual se va a llevar a cabo el test.&lt;/li&gt;&lt;li&gt;-t: indica el tiempo durante el cual se va a llevar a cabo el test. Este tiempo es en segundos.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;Además de esos parámetros que pueden ser de utilidad para nuestras benchmark a servidores apache. Compruebe introduciendo &lt;span style="font-weight: bold;"&gt;ab man&lt;/span&gt; para obtener más información.&lt;br /&gt;&lt;br /&gt;Espero puedan mejorar los procesos de sus aplicaciones utilizando esta herramienta para medir su rendimiento.&lt;br /&gt;&lt;br /&gt;Saludos ...&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-1581808887837506550?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/1581808887837506550/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=1581808887837506550&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/1581808887837506550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/1581808887837506550'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/03/benchmark-tu-sitios-con-apachebench-en.html' title='Benchmark a tu sitios con ApacheBench en Linux'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-5030105985656686958</id><published>2008-03-06T06:24:00.000-08:00</published><updated>2008-03-06T06:40:04.513-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cakephp'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Problemas con bindable y paginate en CakePHP</title><content type='html'>Últimamente tuve un poco de problemas con los binds y la función paginate de la nueva versión de el marco de trabajo cakephp, la 1.2.&lt;br /&gt;&lt;br /&gt;Mi problema surgía cuando quería buscar todos los posts que estuvieran asociados a un tag específico, pero sólo quería traer la relación que el post tenía con Usuario y no la relación con Comentarios. Buscando por ahí me encuentra con una respuesta del Sr. &lt;a href="http://www.cricava.com/blogs/index.php?blog=6&amp;amp;title=modelizing_habtm_join_tables_in_cakephp_&amp;amp;more=1&amp;amp;c=1&amp;amp;tb=1&amp;amp;pb=1"&gt;Mariano Iglesias&lt;/a&gt;, que dice que la función paginate rehace las relaciones (por esta razón cualquiera unbindModel no funcionaría). En este &lt;a href="http://bakery.cakephp.org/articles/view/bindable-behavior-control-your-model-bindings"&gt;enlace&lt;/a&gt; se puede encontrar información sobre el behavior &lt;span style="font-weight: bold;"&gt;Bindable&lt;/span&gt;. En mi caso la solución fue la siguiente:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Creo app_model.php y le agrego:&lt;br /&gt; &lt;span style="font-style: italic;"&gt;var $actsAs = array('Bindable');&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;El método en el controlador post quedó así:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;function tag($id = null){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        if (!$id) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            $this-&gt;Session-&gt;setFlash(__('Invalid Tag.', true));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            $this-&gt;redirect(array('action'=&gt;'index'));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        $this-&gt;layout = 'blog';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//        $this-&gt;Post-&gt;unbindModel(array('hasMany' =&gt; array('TrackPost', 'Comentario'), 'hasAndBelongsToMany' =&gt; array('Tag')));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        $this-&gt;Post-&gt;restrict(false, 'Usuario');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        /*$this-&gt;Post-&gt;bindModel(array('hasAndBelongsToMany' =&gt; array('Tag' =&gt; array(&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                        'joinTable' =&gt; 'posts_tags',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                        'foreignKey' =&gt; 'post_id',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                        'associationForeignKey' =&gt; 'tag_id',&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                        'unique' =&gt; false,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                        'conditions' =&gt; 'Tag.id = '.$id)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                                                    )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;         ));*/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        $this-&gt;Post-&gt;Tag-&gt;recursive = 2;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        $this-&gt;set('existSession', $this-&gt;existSession());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        //$this-&gt;set('posts', $this-&gt;Post-&gt;Tag-&gt;find(array('Tag.id' =&gt; $id)));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        $this-&gt;set('posts', $this-&gt;paginate('Tag', array('Tag.id' =&gt; $id)));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        $this-&gt;Post-&gt;resetBindable(true);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    }&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Lo interesante está en las siguientes líneas:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;$this-&gt;Post-&gt;restrict(false, 'Usuario'); &lt;/span&gt;: esta línea restringe a que Post solo tengo relación con &lt;span style="font-weight: bold;"&gt;Usuario &lt;/span&gt;y el parámetro false hace que todos los cambios que haz hecho de relaciones sean permanentes.&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;$this-&gt;Post-&gt;resetBindable(true); &lt;/span&gt;: reseteo las relaciones para que funcionen como estaban.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;Bueno con esto resolví mi problema. Saludos ...&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-5030105985656686958?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/5030105985656686958/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=5030105985656686958&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/5030105985656686958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/5030105985656686958'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/03/problemas-con-bindable-y-paginate-en.html' title='Problemas con bindable y paginate en CakePHP'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-739592636785128782</id><published>2008-03-03T12:07:00.000-08:00</published><updated>2008-03-03T12:18:56.556-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cakephp'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Cakephp relación HBTM personalizada</title><content type='html'>Trabajando con CakePHP me encuentro en el manual el típico ejemplo de una relación de muchos a muchos (ejemplo de la relación de posts y tags).&lt;br /&gt;&lt;br /&gt;Según la documentación se debe crear un campo select multiple para colocar los tags aquí. Este método no me gustó mucho y decidí hacerlo al estilo de el bloguer de Google, o sea, separar los tags por compas en un campo tipo &lt;span style="font-weight: bold;"&gt;text&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Mi solución consiste en buscar en la base de datos si los tags que el usuario introdujo existen, de no existir los inserto y obtengo su id. En el modelo post agregué el método &lt;span style="font-weight: bold;"&gt;beforeSave&lt;/span&gt;. Aquí les dejo el código:&lt;br /&gt;&lt;blockquote&gt;public function beforeSave(){&lt;br /&gt;        if ($this-&gt;data['Tag']['tags'] != ''){ //Campo $form-&gt;input('Tag/tags')&lt;br /&gt;            $tags = explode(',', $this-&gt;data['Tag']['tags']);&lt;br /&gt;            foreach($tags as $tag){&lt;br /&gt;                $tag = trim($tag);&lt;br /&gt;                $tag_find = $this-&gt;Tag-&gt;findByTagname($tag);&lt;br /&gt;                if ($tag_find){&lt;br /&gt;                    $tag_id = $tag_find['Tag']['id'];&lt;br /&gt;                }else{&lt;br /&gt;                    $tag_ins = array('Tag' =&gt; array('tagname' =&gt; $tag));&lt;br /&gt;                    $this-&gt;Tag-&gt;save($tag_ins);&lt;br /&gt;                    $tag_id = $this-&gt;Tag-&gt;getLastInsertID();&lt;br /&gt;                }&lt;br /&gt;                $this-&gt;data['Tag']['Tag'][] = (string) $tag_id;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        unset($this-&gt;data['Tag']['tags']);&lt;br /&gt;        return true;&lt;br /&gt;    }&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Para el caso de la acción de editar, coloqué este código en el método:&lt;br /&gt;&lt;blockquote&gt;if (empty($this-&gt;data)) {&lt;br /&gt;            $this-&gt;data = $this-&gt;Post-&gt;read(null, $id);&lt;br /&gt;            foreach($this-&gt;data['Tag'] as $tag){&lt;br /&gt;                $tags[] = $tag['tagname'];&lt;br /&gt;            }&lt;br /&gt;            $tags = implode(', ', $tags);&lt;br /&gt;            $this-&gt;set('tags', $tags);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Y en la vista&lt;br /&gt;echo $form-&gt;input('Tag/tags', array('label' =&gt; 'Tags separados por coma', 'type' =&gt; 'text', 'value' =&gt; $tags));&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;Listo, de esta manera utilizamos la relación de muchos a muchos en cakephp, pero a nuestra manera.&lt;br /&gt;&lt;br /&gt;Saludos ...&lt;br /&gt;&lt;blockquote style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-739592636785128782?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/739592636785128782/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=739592636785128782&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/739592636785128782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/739592636785128782'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/03/cakephp-relacin-hbtm-personalizada.html' title='Cakephp relación HBTM personalizada'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-2021272813736262859</id><published>2008-02-27T09:39:00.000-08:00</published><updated>2008-12-11T17:37:46.663-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Internet Explorer 6 y 7 en Linux</title><content type='html'>Algo que debe hacer un desarrollador o diseñador web es realizar test a los proyectos en los cuales trabaja. Estos test debe hacerlo en diferentes exploradores como Internet Explorer, Firefox, Safari, etc. Por esta razón es  de gran importancia contar con aunque sea los 3 ántes mencionados para realizar estos test.&lt;br /&gt;En linux la mayoría de las personas usa Firefox ya que tiene una versión nativa para linux, pero para Internet Explorer no la hay. Pero afortunadamente existe el proyecto &lt;a href="http://www.tatanka.com.br/ies4linux/page/Main_Page"&gt;&lt;span style="font-weight: bold;"&gt;IEs 4 Linux&lt;/span&gt;&lt;/a&gt;. Con esta opción podemos tener varias versiones de Internet Explorer en Linux, incluso con la versión beta se puede tener IE 7.&lt;br /&gt;&lt;br /&gt;Este paquete depende de los paquetes &lt;span style="font-weight: bold;"&gt;wine&lt;/span&gt; y &lt;span style="font-weight: bold;"&gt;cabextract &lt;/span&gt;(en debian o ubuntu utilizar &lt;span style="font-style: italic;"&gt;sudo aptitude install wine cabextract&lt;/span&gt;)&lt;br /&gt;Los pasos para su instalación son los siguientes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Abrimos la consola y nos bajamos la última versión del paquete:&lt;br /&gt;&lt;pre style="font-style: italic;"&gt;#: wget http://www.tatanka.com.br/ies4linux/downloads/ies4linux-latest.tar.gz&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;Descomprimimos el paquete y entramos a la carpeta:&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;#: tar zxvf ies4linux-latest.tar.gz&lt;/span&gt; &lt;span style="font-style: italic;"&gt;#: cd ies4linux-*&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Ejecutamos el instalador con la opción para IE 7:&lt;code&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;#: ./ies4linux --hack-ie7-proxy-settings&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;Nos debe salir una pantalla como esta:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_fag-x4cJV04/R8Wjf94MgUI/AAAAAAAAACY/dY4sb392fgI/s1600-h/pantalla1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_fag-x4cJV04/R8Wjf94MgUI/AAAAAAAAACY/dY4sb392fgI/s400/pantalla1.png" alt="" id="BLOGGER_PHOTO_ID_5171719516686418242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Haz clic en Advanced para que escojas la opción para instalar IE7.&lt;/li&gt;&lt;li&gt;Espera a que termine la instalación y listo ya tienes la opción de utilizar IE en linux. Los ejecutables normalmente se guardan en /homa/ususario/bin/.&lt;/li&gt;&lt;/ul&gt;Saludos ...&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-2021272813736262859?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/2021272813736262859/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=2021272813736262859&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/2021272813736262859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/2021272813736262859'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/02/internet-explorer-6-y-7-en-linux.html' title='Internet Explorer 6 y 7 en Linux'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_fag-x4cJV04/R8Wjf94MgUI/AAAAAAAAACY/dY4sb392fgI/s72-c/pantalla1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-9158733784924970584</id><published>2008-02-25T11:55:00.000-08:00</published><updated>2008-02-25T11:56:31.404-08:00</updated><title type='text'>Problema flash-plugin-nonfree para Firefox en Ubuntu</title><content type='html'>Solución:&lt;br /&gt;La solucion fue la siguiente&lt;br /&gt;&lt;br /&gt;1. sudo apt-get install flashplugin-nonfree&lt;br /&gt;2. sudo nano /var/lib/dpkg/info/flashplugin-nonfree.postinst&lt;br /&gt;3. Editar:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin: 5px 20px 20px;"&gt;  &lt;div class="smallfont" style="margin-bottom: 2px;"&gt;Code:&lt;/div&gt;  &lt;pre class="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 194px; text-align: left;"&gt;# verify MD5 checksum of (copied or downloaded) tarball&lt;br /&gt;rm -rf install_flash_player_9_linux/&lt;br /&gt;echo "821cc72359a937caef85bb4cc74ef5cd install_flash_player_9_linux.tar.gz"| md5sum -c &gt; /dev/null 2&gt;&amp;amp;1 \&lt;br /&gt;|| fp_exit_with_error "md5sum mismatch install_flash_player_9_linux.tar.gz"&lt;br /&gt;&lt;br /&gt;# unpacking and checking the plugin&lt;br /&gt;tar xzf install_flash_player_9_linux.tar.gz || fp_exit_with_error "cannot unpack plugin"&lt;br /&gt;echo "be5a2f9032f8fc8bccbbf5d96c5028f9 install_flash_player_9_linux/libflashplayer.so"| md5sum -c &gt; /dev/null 2&gt;&amp;amp;1 \&lt;br /&gt;|| fp_exit_with_error "plugin changed, not trusted"&lt;br /&gt;echo "a81fd3b03b8c6d6e5a14298110718d3f install_flash_player_9_linux/flashplayer.xpt"| md5sum -c &gt; /dev/null 2&gt;&amp;amp;1 \&lt;br /&gt;|| fp_exit_with_error "plugin changed, not trusted"&lt;/pre&gt; &lt;/div&gt;a lo siguiente:&lt;br /&gt;&lt;br /&gt;&lt;div style="margin: 5px 20px 20px;"&gt;  &lt;div class="smallfont" style="margin-bottom: 2px;"&gt;Code:&lt;/div&gt;  &lt;pre class="alt2" dir="ltr" style="border: 1px inset ; margin: 0px; padding: 6px; overflow: auto; width: 640px; height: 178px; text-align: left;"&gt; # verify MD5 checksum of (copied or downloaded) tarball&lt;br /&gt;rm -rf install_flash_player_9_linux/&lt;br /&gt;echo "93b7c48eaa492237b807a3ae1de65cf9  install_flash_player_9_linux.tar.gz"| md5sum -c &gt; /dev/null 2&gt;&amp;amp;1 \&lt;br /&gt;|| fp_exit_with_error "md5sum mismatch install_flash_player_9_linux.tar.gz"&lt;br /&gt;&lt;br /&gt;# unpacking and checking the plugin&lt;br /&gt;tar xzf install_flash_player_9_linux.tar.gz || fp_exit_with_error "cannot unpack plugin"&lt;br /&gt;#echo "a81fd3b03b8c6d6e5a14298110718d3f  install_flash_player_9_linux/flashplayer.xpt"| md5sum -c &gt; /dev/$&lt;br /&gt;#echo "13ce705df5d47422a9192b29827544e8  install_flash_player_9_linux/libflashplayer.so"| md5sum -c &gt; /de$&lt;br /&gt;#|| fp_exit_with_error "plugin changed, not trusted"&lt;/pre&gt; &lt;/div&gt;4. sudo dpkg-reconfigure flashplugin-nonfree&lt;br /&gt;&lt;br /&gt;Referencia: &lt;a href="http://ubuntuforums.org/showthread.php?t=637684"&gt;http://ubuntuforums.org/showthread.php?t=637684&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-9158733784924970584?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/9158733784924970584/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=9158733784924970584&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/9158733784924970584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/9158733784924970584'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/02/problema-flash-plugin-nonfree-para.html' title='Problema flash-plugin-nonfree para Firefox en Ubuntu'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-7941045250311461202</id><published>2008-02-15T21:35:00.000-08:00</published><updated>2008-05-28T06:37:06.117-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='zend framework'/><title type='text'>setFlash de CakePHP con ZendFramework</title><content type='html'>Por estos días estoy en training total de Zend Framework, la verdad un framework muy flexible, con  una gama de clases bastante buenas que permiten agilizar nuestro tiempo de desarrollo (ojo eso si dominamos dicho framework, no demora mucho tiempo dominarlo).&lt;br /&gt;&lt;br /&gt;En fin anteriormente he utilizado CakePHP, otro framework que me gusta bastante, pero que aunque más fácil de usar, diría a mi concepto es menos flexible que el framework de Zend.&lt;br /&gt;&lt;br /&gt;Para ir al asunto, hay varias funciones de cakephp que me gustan mucho, entre ellas la que utilizamos en el controlador para guardar mensajes y mostrarlos aunque se haga un redirect ($this-&gt;Session-&gt;setFlash). Por ejemplo si tenemos un módulo de noticias y guardamos una noticias, pero redirigimos a la página donde se listan las noticias y no al formulario para agregarla, tenemos que hacer un redirect ($this-&gt;_redirect('/')), o sea, que si queremos mostrar un mensaje no podríamos hacerlo (que yo cepa, me imagino que alguna otra forma habrá).&lt;br /&gt;&lt;br /&gt;Para eso cree un controlador base (BaseController.ph) que hereda de Zend_Controller_Action. En el agregúe dos funciones, &lt;span style="font-weight: bold;"&gt;setFlash&lt;/span&gt; para setear el mensaje y &lt;span style="font-weight: bold;"&gt;getFlash&lt;/span&gt; para obtener dicho mensaje (Si quieres que funcione para cualquier controlador entonces debes heredar de esta clase los controladores). Estas funciones utilizan una variable de sesión por lo que en el bootstrap (index.php) debemos abrir la sesión así:&lt;br /&gt;&lt;br /&gt;Zend_Loader::loadClass(&lt;span style="color: rgb(0, 153, 0);"&gt;'Zend_Session'&lt;/span&gt;);&lt;br /&gt;Zend_Loader::loadClass(&lt;span style="color: rgb(0, 153, 0);"&gt;'Zend_Session_Namespace'&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; * Abro la sesión&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; */&lt;/span&gt;&lt;br /&gt;Zend_Session::start();&lt;br /&gt;&lt;br /&gt;---------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;---------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Ahora les dejo con el código del controlador base (BaseController.php)&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; * BaseController&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; * &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; * @author&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; * @version &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;require_once&lt;/span&gt; 'Zend/Controller/Action.php';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;class&lt;/span&gt; BaseController &lt;span style="color: rgb(153, 51, 0);"&gt;extends&lt;/span&gt; Zend_Controller_Action {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    /**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;     * The default action - show the home page&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;     */&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;    &lt;span style="color: rgb(153, 51, 0);"&gt;public&lt;/span&gt; function init() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        $this-&gt;initView();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        $this-&gt;view-&gt;siteInfo = Zend_Registry::get&lt;span style="color: rgb(0, 153, 0);"&gt;('siteInfo'&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        $translate = Zend_Registry::get(&lt;span style="color: rgb(0, 153, 0);"&gt;'translate'&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        $this-&gt;view-&gt;declareVars(array('t' =&gt; $translate));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;public&lt;/span&gt; function postDispatch(){&lt;br /&gt;       $this-&gt;view-&gt;danmessage = $this-&gt;getFlash();&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;    &lt;span style="color: rgb(153, 51, 0);"&gt;public&lt;/span&gt; function baseUrl()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        $fc = Zend_Controller_Front::getInstance();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        $request = $fc-&gt;getRequest();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        return $request-&gt;getBaseUrl();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    &lt;span style="color: rgb(153, 51, 0);"&gt;public&lt;/span&gt; function setFlash($msg = ''){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        $danmsg = new Zend_Session_Namespace(&lt;span style="color: rgb(0, 153, 0);"&gt;'dan.message'&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        $danmsg-&gt;mensaje = $msg;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    &lt;span style="color: rgb(153, 51, 0);"&gt;public&lt;/span&gt; function getFlash(){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        $r =  new Zend_Session_Namespace(&lt;span style="color: rgb(0, 153, 0);"&gt;'dan.message'&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        $return = $r-&gt;mensaje;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        $r-&gt;mensaje = null;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        return $return;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;---------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;---------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Ahora en mi caso estoy usando la clase Zend_Layout, por lo que uso un template. Para colocar este mensaje en tu template solo debes imprimirlo donde desees. Solo debes utilizar esto:&lt;br /&gt;&lt;br /&gt;&amp;lt;?=$this-&gt;danmessage ?&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-7941045250311461202?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/7941045250311461202/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=7941045250311461202&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/7941045250311461202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/7941045250311461202'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/02/setflash-de-cakephp-con-zendframework.html' title='setFlash de CakePHP con ZendFramework'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-701078364274248452</id><published>2008-01-30T18:45:00.000-08:00</published><updated>2008-01-30T18:52:51.214-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Convertir de .mov a .avi en Linux</title><content type='html'>Para convertir de un archivo en formato .mov al formato .avi en Linux debemos descargarnos un app que se llama &lt;span style="font-weight: bold;"&gt;mencoder&lt;/span&gt; (sudo aptitude install mencoder //esto para ubuntu o debian).&lt;br /&gt;&lt;br /&gt;Cuando ya tenemos dicha app entonces nos vamos a una consola y ejecutamos el siguiente comando:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; mencoder -oac mp3lame -srate 22050 -ovc lavc -lavcopts vcodec=mjpeg -vf scale=585:389 archivo.mov -o video_nuevo.avi&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Donde:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;scale nos indica las dimesiones del video (585 de alto por 389 de ancho).&lt;/li&gt;&lt;li&gt;archivo.mov es el nombre del archivo original .mov.&lt;/li&gt;&lt;li&gt;video_nuevo.avi es el nombre del archivo codificado en .avi&lt;/li&gt;&lt;/ul&gt;Con esto ya tenemos el video en formato .avi&lt;br /&gt;&lt;br /&gt;Fuente: &lt;span style="font-style: italic;"&gt;http://www.ubuntu-es.org/index.php?q=node/52398&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-701078364274248452?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/701078364274248452/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=701078364274248452&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/701078364274248452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/701078364274248452'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/01/convertir-de-mov-avi-en-linux.html' title='Convertir de .mov a .avi en Linux'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-1981846664744728163</id><published>2008-01-29T20:26:00.000-08:00</published><updated>2008-12-11T17:37:46.935-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Diferentes themes para diferentes contenidos en Drupal</title><content type='html'>Si tenemos la necesidad de colocar diferentes themes para diferentes categorías de contenidos en drupal tenemos un módulo bastante bueno para solucionar este problema. Se trata de &lt;a href="http://drupal.org/project/taxonomy_theme"&gt;&lt;span style="font-weight: bold;"&gt;Taxonomy Theme&lt;/span&gt;&lt;/a&gt;. Este módulo permite asignar diferentes templates a cada término dentro de una categoría de contenido.&lt;br /&gt;&lt;br /&gt;Cuando vamos a agregar un término dentro de una categoría debe aparecer un campo extra llamado &lt;span style="font-weight: bold;"&gt;theme&lt;/span&gt;. Aquí vamos a escoger cual tema asignaremos a este contenido.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_fag-x4cJV04/R5__iZ0CNkI/AAAAAAAAACQ/O-namMwTTRc/s1600-h/taxonomy_theme.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 483px; height: 188px;" src="http://1.bp.blogspot.com/_fag-x4cJV04/R5__iZ0CNkI/AAAAAAAAACQ/O-namMwTTRc/s400/taxonomy_theme.png" alt="" id="BLOGGER_PHOTO_ID_5161124664499648066" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-1981846664744728163?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/1981846664744728163/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=1981846664744728163&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/1981846664744728163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/1981846664744728163'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/01/diferentes-themes-para-diferentes.html' title='Diferentes themes para diferentes contenidos en Drupal'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_fag-x4cJV04/R5__iZ0CNkI/AAAAAAAAACQ/O-namMwTTRc/s72-c/taxonomy_theme.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-5554571206877415411</id><published>2008-01-25T07:18:00.000-08:00</published><updated>2008-01-25T07:20:03.358-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sun'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><title type='text'>Sun compró MySQL por un Billón</title><content type='html'>&lt;div class="content"&gt;     &lt;p&gt;Sun compra MySQL por un billón de dolares. Ahora cual será el futuro de MySQL. Leyendo unos post de unos amigos, algunos dicen que puede ser un futuro incierto, otros que Sun siempre ha sido una empresa que ha dejado mucho por el OpenSource. La verdad esperamos que mysql siga en el mundo opensource y creciendo. Ojala algún día en empresas grandes podamos decir que MySQL es una buena solución, en vez de utilizar otros gestores como ORACLE, o SQL SERVER.&lt;/p&gt; &lt;p&gt;Solo queda esperar a ver como sigue el proyecto y que cosas nuevas nos va a traer la gente de Sun ahora con esta nueva compra.&lt;/p&gt;   Saludos...&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-5554571206877415411?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/5554571206877415411/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=5554571206877415411&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/5554571206877415411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/5554571206877415411'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/01/sun-compr-mysql-por-un-billn.html' title='Sun compró MySQL por un Billón'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-1871822532550271670</id><published>2008-01-21T16:34:00.000-08:00</published><updated>2008-01-21T16:57:22.429-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grub'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Recuperando grub después de unainstalación de Windows XP o Vista</title><content type='html'>Hace muy poco tuve que reinstalar Windows Vista(noooooooo) y con eso se llevo mi grub. Entonces buscando por la web me encontré con un manual que proporcionan en el foro de ubuntu en español. Los pasos son los siguientes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Debemos tener un disco livecd de Linux (en mi caso Ubuntu 7.10)&lt;/li&gt;&lt;li&gt;Iniciamos con este disco.&lt;/li&gt;&lt;li&gt;Crear una carpeta para montar la partición donde se encuentra linux.&lt;br /&gt;   &lt;span style="font-weight: bold;"&gt;sudo mkdir /media/linux&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ahora nos toca montar la partición donde se encuentra linux instalado. En mi caso es la sda6 ya que tengo una disco sata con una partición reiserfs. El comando sería así:&lt;br /&gt;   &lt;span style="font-weight: bold;"&gt;sudo mount -t reiserfs /dev/sda6 /media/linux&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Tomar en cuenta la nomenclatura que utiliza grub para llamar a las particiones&lt;/li&gt;&lt;ul&gt;&lt;li&gt;hd0: es el primer disco duro completo, igual a hda o sda.&lt;/li&gt;&lt;li&gt;hd0,0: es la primera partición del primero disco dura, igual a hda1 o sda1&lt;/li&gt;&lt;li&gt;hd0,1: corresponde a hda2 o sda2.&lt;/li&gt;&lt;li&gt;hd1,2: corresponde al segundo disco y tercera partición, igual a hdb3 o sdb3&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Ejecutamos el siguiente comando para entra al menu de grub&lt;br /&gt;  &lt;span style="font-weight: bold;"&gt; sudo grub&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Ahora entramos al menu de grub en donde debemos ejecutar los siguientes comandos:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;find /boot/grub/stage1    ---&gt; buscamos en que partición se encuentra instalado grub. Esto nos debe devolber un valor como este hd&lt;span style="font-weight: bold; font-style: italic;"&gt;X&lt;/span&gt;, &lt;span style="font-weight: bold; font-style: italic;"&gt;Y&lt;/span&gt; donde &lt;span style="font-weight: bold; font-style: italic;"&gt;X&lt;/span&gt; es el número de disco duro y &lt;span style="font-weight: bold; font-style: italic;"&gt;Y&lt;/span&gt; es la partición&lt;br /&gt;&lt;/li&gt;&lt;li&gt;root (hdX, Y)&lt;/li&gt;&lt;li&gt;quit&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Usamos hdX independiente si es sata o ata.&lt;/li&gt;&lt;li&gt;En mi caso con estos pasos pude recuperar mi grub, pero según el manual todavía siguen dos pasos.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;sudo chroot /media/linux&lt;/li&gt;&lt;li&gt;sudo grub-install /dev/sda&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;El problema que me daba es que no reconoce la sda como un disco, sin embargo sin este paso cuando reinicie el grub estaba andando y reconoció a Vista y mi instalación de Linux.&lt;/li&gt;&lt;/ul&gt;Espero les  ayude en algo.&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-1871822532550271670?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/1871822532550271670/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=1871822532550271670&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/1871822532550271670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/1871822532550271670'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/01/recuperando-grub-despus-de.html' title='Recuperando grub después de unainstalación de Windows XP o Vista'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-343148782037443541</id><published>2008-01-11T12:48:00.000-08:00</published><updated>2008-01-11T13:02:07.665-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cakephp'/><category scheme='http://www.blogger.com/atom/ns#' term='foxpro'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>CakePHP y Foxpro</title><content type='html'>Hace un tiempo me hice la pregunta si podía conectar Visual Foxpro con CakePHP. Había investigado un poco pero no había dado con la solución. Buscando un poco me di cuenta que cake maneja conexiones con adodb (librerías para manejo de base de datos en php). Con estas librerías encontré la solución. Lo lamentable es que hasta ahora solo lo puedo hacer en windows.&lt;br /&gt;Solución:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Descarga el paquete &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=42718"&gt;adoddb&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Descomprimelo en la carpeta de vendors.&lt;/li&gt;&lt;li&gt;Asegurate de descargar los drivers de odbc para foxpro (&lt;a href="http://msdn2.microsoft.com/en-us/vfoxpro/bb190233.aspx"&gt;enlace&lt;/a&gt;).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Debemos crear un dns para la base de datos foxpro. Es sumamente sencillo. Solo hay que ir a Panel de Control -&gt; Herramientas Administrativas -&gt; Orígenes de datos ODBC.&lt;/li&gt;&lt;li&gt;En la pestaña DNS de usuario daz clic en el botón Agregar y escoges Driver para o Microsoft Visual FoxPro.&lt;/li&gt;&lt;li&gt;Te debe salir una nueva ventana en donde debes llenar unos datos:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Data Source Name: nombre del dns. Ojo este nombre lo vas a usar en la conexión.&lt;/li&gt;&lt;li&gt;Description: la que quieras.&lt;/li&gt;&lt;li&gt;Database type: si en el campo path vas a colocar una carpeta donde se encuentran los dbf, entonces colcoas Free Table directory.&lt;/li&gt;&lt;li&gt;Listo ya haz creado el DNS.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Ahora nos toca modificar el archivo de configuración de la base de datos, &lt;span style="font-weight: bold;"&gt;database.php &lt;/span&gt;así:&lt;br /&gt;var $default = array('driver' =&gt; 'adodb',&lt;br /&gt;                                    'connect' =&gt; 'dnsname', //Esto es el nombre que colocaste en Data Source Name&lt;br /&gt;                                    'login' =&gt; '',&lt;br /&gt;                                    'password' =&gt; '',&lt;br /&gt;                                    'database' =&gt; '',&lt;br /&gt;                                    'prefix' =&gt; ''&lt;br /&gt;);&lt;/li&gt;&lt;li&gt;Con esto ya tenemos una conexión establecida con una base de datos foxpro.&lt;/li&gt;&lt;/ul&gt;Saludos ...&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-343148782037443541?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/343148782037443541/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=343148782037443541&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/343148782037443541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/343148782037443541'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/01/cakephp-y-foxpro.html' title='CakePHP y Foxpro'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-4975340358277658658</id><published>2008-01-08T07:07:00.000-08:00</published><updated>2008-01-08T07:14:33.290-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><category scheme='http://www.blogger.com/atom/ns#' term='redes sociales'/><title type='text'>Kalipedia, nuevo portal educativo</title><content type='html'>El grupo Santillana con una basta experiencia en cuanto a contenido educativo se refiere, ha creado un nuevo portal educativo llamado &lt;a href="http://www.kalipedia.com/"&gt;Kalipedia&lt;/a&gt; con más de 40,000 contenidos y con muchas aplicaciones incluídas. El sitio tiene un diseño muy limpio y bonito, con el contenido muy bien organizado.&lt;br /&gt;&lt;br /&gt;Como otra característica también maneja lo que son las redes sociales (web 2.0) para el intercambio de información mediante &lt;strong&gt;blogs, foros, grupos, concursos o tests de autoevaluación.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;En fin es un excelente portal educativo y una gran iniciativa del grupo Santillana.&lt;br /&gt;&lt;br /&gt;Saludos...&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-4975340358277658658?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/4975340358277658658/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=4975340358277658658&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/4975340358277658658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/4975340358277658658'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2008/01/kalipedia-nuevo-portal-educativo.html' title='Kalipedia, nuevo portal educativo'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-3137699704934216066</id><published>2007-11-15T16:33:00.000-08:00</published><updated>2007-11-15T16:40:43.244-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='servidores'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Modulo dbase para php5 (sin tener que recompilar)</title><content type='html'>El otro día me encontré con un problema con el módulo de php dbase. Cuando lo fui a instalar por el administrador de paquetes (aptitude), este no lo pudo encontrar.&lt;br /&gt;&lt;br /&gt;Solución:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Descargar el paquete de php (en php.net)&lt;/li&gt;&lt;li&gt;Descargar el paquete php5-dev&lt;/li&gt;&lt;li&gt;Desempaquetar php y entrar a la carpeta ext/dbase&lt;/li&gt;&lt;li&gt;Ejecutar el comando phpize&lt;/li&gt;&lt;li&gt;Ejecutar el comando ./configure&lt;/li&gt;&lt;li&gt;Ejecutar el comando make&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Copiar el archivo compilado a la carpeta de librerías de php5 en mi caso (usr/lib/php5/20060613+lfs) #cp ./.libs/dbase.so usr/lib/php5/20060613+lfs/&lt;/li&gt;&lt;li&gt;Cambiarle los permisos #chmod 644 usr/lib/php5/20060613+lfs/dbase.so&lt;/li&gt;&lt;li&gt;Agregar la extensión a php.ini&lt;br /&gt;extension_dir = "usr/lib/php5/20060613+lfs"&lt;br /&gt;extension=dbase.so&lt;/li&gt;&lt;li&gt;Reiniciar el servidor web&lt;/li&gt;&lt;/ul&gt;Con esto tendremos el módulo de dbase para php5&lt;br /&gt;&lt;br /&gt;Saludos ....&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-3137699704934216066?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/3137699704934216066/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=3137699704934216066&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/3137699704934216066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/3137699704934216066'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/11/modulo-dbase-para-php5-sin-tener-que.html' title='Modulo dbase para php5 (sin tener que recompilar)'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-6088579602070002213</id><published>2007-11-15T07:08:00.000-08:00</published><updated>2007-11-15T07:20:50.267-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Rewrite rule y programación modular</title><content type='html'>Cuando tenemos una aplicación modular desarrollada en php y queremos esconder la url completa y sustituirla por una url limpia podemos hacer uso del module rewrite de apache.&lt;br /&gt;&lt;br /&gt;Para eso tenemos que crear un archivo .htaccess dentro del root de nuestra aplicación. Si nuestro front controller está o es llamado desde index.php podemos hacer lo siguiente:&lt;br /&gt;Si la cadena original es:&lt;br /&gt;                &lt;span style="font-weight: bold;"&gt;index.php?modulo=noticias&amp;amp;act=index&lt;br /&gt;&lt;/span&gt;Nuestro archivo htaccess tendría lo siguiente:&lt;br /&gt;            &lt;span style="font-weight: bold;"&gt;&lt;ifmodule&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                RewriteEngine On&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                RewriteRule ^(.+)/(.[^/]+)(/?)$ index.php?modulo=$1&amp;amp;act=$2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;          &lt;/ifmodule&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Con esto si teníamos un sistema al que llamabamos así:&lt;br /&gt;            http://example.com/test/index.php?modulo=noticias&amp;amp;act=index&lt;br /&gt;Ahora lo llamamos así&lt;br /&gt;            http://example.com/test/noticias/index       ó&lt;br /&gt;          http://example.com/test/noticias/index/&lt;br /&gt;&lt;br /&gt;Eso es todo por este minitutorial.&lt;br /&gt;&lt;br /&gt;Saludos ...&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-6088579602070002213?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/6088579602070002213/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=6088579602070002213&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/6088579602070002213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/6088579602070002213'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/11/rewrite-rule-y-programacin-modular.html' title='Rewrite rule y programación modular'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-6195630817425943004</id><published>2007-11-13T20:57:00.000-08:00</published><updated>2007-11-14T18:23:14.789-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='servidores'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Instalación Servidor PostgreSQL 8.0</title><content type='html'>Esta es una breve guía de los pasos a seguir para la instalación de un servidor de base de datos PostgreSQL. Los pasos son los siguientes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lo primero que debemos hacer es decargar el paquete que contiene la versión 8.0.x de postgree. En esta &lt;a href="http://www.postgresql.org/ftp/source/v8.0.14/"&gt;dirección&lt;/a&gt; lo podrán encontrar.&lt;/li&gt;&lt;li&gt;Debemos crear un grupo y un usuario dentro del servidor. Lo podemos llamar postgres tanto el grupo como el usuario. Al usuario le asignamos como directorio inicial /usr/local/pgsql.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ahora desempacamos el paquete. tar -xvf postgresql-8.0.14.tar.bz2&lt;/li&gt;&lt;li&gt;Entramos a la carpeta. cd postgresql-8.0.14/&lt;/li&gt;&lt;li&gt;Procedemos a compilar postgresql:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;./configure --prefix=/usr/local/pgsql (Si te da error que no encuentra la librería readline podemos obviar esta). ./configura --without-readline&lt;/li&gt;&lt;li&gt;make (esto demorará un poco)&lt;/li&gt;&lt;li&gt;su - (nos registramos como root y buscamos la carpeta descomprimida de postgresql, en mi caso /home/usuariox/postgresql-8.0.14/). Nos debe salir un mensaje como este " All of PostgreSQL successfully made. Ready to install.&lt;br /&gt;"&lt;br /&gt;&lt;/li&gt;&lt;li&gt;make install (procedemos a instalar). Si está correcto debe dar esta salida "PostgreSQL installation complete."&lt;/li&gt;&lt;li&gt;Cambiamos los permisos de /usr/local/pgsql para el usuario y grupo postgres           # chown -R postgres:postgres /usr/local/pgsql&lt;/li&gt;&lt;li&gt;Cambiamos al usuario postgres # su - postgres&lt;/li&gt;&lt;li&gt;Accedemos al directorio donde se encuentra postgres $ cd /usr/local/pgsql&lt;/li&gt;&lt;li&gt;Ahora necesitamos inicializar el database cluster                                                &lt;br /&gt;$ bin/initdb -D ./data&lt;/li&gt;&lt;li&gt;Después de haber creado el directorio /usr/local/pgsql/data, éste está listo para su uso.&lt;/li&gt;&lt;li&gt;Procedemos a levantar el servidor&lt;br /&gt;$ bin/pg_ctl -D ./data -l data/logfile start&lt;/li&gt;&lt;li&gt;Listo ya tenemos el servidor de postgresql arriba y listo para usar, sólo hay que crear una base de datos de prueba.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Para agregar usuarios podemos utilizar el siguiente comando&lt;br /&gt;$ /usr/local/pgsql/bin/createuser . Los pasos para crearlo son bien sencillos&lt;/li&gt;&lt;li&gt;Para crear una base de datos hacemos esto:&lt;br /&gt;$ /usr/local/pgsql/bin/createdb --owner=username databasename&lt;br /&gt;Donde username es el usuario a quien se le va a asignar dicha base de datos y databasename es el nombre de la base de datos.&lt;/li&gt;&lt;li&gt;Otra manera de crear base de datos y usuario es mediante el administrador gráfico &lt;a href="www.pgadmin.org/"&gt;phAdmin III&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Bueno eso es todo espero les haya ayudado un poco en la instalación del servidor&lt;br /&gt;&lt;br /&gt;Saludos ...&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-6195630817425943004?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/6195630817425943004/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=6195630817425943004&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/6195630817425943004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/6195630817425943004'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/11/instalacin-servidor-postgresql-80.html' title='Instalación Servidor PostgreSQL 8.0'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-1655410662676503296</id><published>2007-10-24T05:36:00.000-07:00</published><updated>2007-11-01T07:37:25.820-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cakephp'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Modificar htaccess para aplicación externa en CakePHP</title><content type='html'>Si has hecho un sistema en CakePHP y te dicen que tienes que agregar por ejemplo un blog a esa aplicación, pero no tienes que hacerla de cero con cakephp y puede utilizar por ejemplo wordpress, lo único que tienes que hacer crear una carpeta especial para dicha aplicación y agregar una línea al archivo .htaccess del documento raíz. Si tu carpeta se llama blog, la línea que tienes que agregar sería como esta (tomando en cuenta que dentro de blog va estar un index.php de la aplicación):&lt;br /&gt;RewriteRule   blog/(.*)   -   [L]&lt;br /&gt;&lt;br /&gt;Con esto el htaccess quedaría de la siguiente manera&lt;br /&gt;  &lt;ifmodule&gt;&lt;br /&gt;     RewriteEngine on&lt;br /&gt;RewriteRule   blog/(.*)   -   [L]&lt;br /&gt;     RewriteRule    ^$ app/webroot/    [L]&lt;br /&gt;     RewriteRule    (.*) app/webroot/$1 [L]&lt;br /&gt;  &lt;/ifmodule&gt;&lt;br /&gt;&lt;br /&gt;Saludos...&lt;br /&gt;&lt;br /&gt;Nota: esto lo apliqué en cake 1.1.x&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-1655410662676503296?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/1655410662676503296/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=1655410662676503296&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/1655410662676503296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/1655410662676503296'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/10/modificar-htacces-para-aplicacin.html' title='Modificar htaccess para aplicación externa en CakePHP'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-798460053424658366</id><published>2007-10-18T20:26:00.000-07:00</published><updated>2007-10-18T20:34:52.018-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cms'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Drupal - CMS</title><content type='html'>En estos días he empezado a investigar  y a usar el CMS Drupal. Me parece un buen gestor de contenido, muy bien pensado, y con una extensibilidad increíble. Anteriormente he usado Joomla que también me parece un excelente CMS debido a el fácil uso y aprendizaje de la sección de administración. He descubierto que drupal es un poco más dificial de administrar, pero a su vez es mucho más extensible y flexible que joomla.&lt;br /&gt;&lt;br /&gt;La verdad me parece un excelente proyecto en el que me gustaría participar activamente. Por ahora estoy entrenandome para su uso, como leyendo su api para ver si creo algunos módulos.&lt;br /&gt;&lt;br /&gt;En un futuro voy a ver si realizo unos tutoriales sobre el uso de este excelente CMS.&lt;br /&gt;Otra buena característica, es que gracias a &lt;a href="http://cricava.com/blogs/mariano.php"&gt;Mariano Iglesias &lt;/a&gt; y otros colaboradores podemos integrar CakePHP dentro de drupal con un módulo llamado drake. La verdad no se si esto sería una ventaja o desventaja, ya que drupal es cms y a su vez cuenta con un framework que puede ser utilizado para extenderlo.&lt;br /&gt;&lt;br /&gt;En &lt;a href="http://drupal.org/"&gt;drupal.org&lt;/a&gt; podemos encontrar buena documentación del CMS.&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-798460053424658366?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/798460053424658366/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=798460053424658366&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/798460053424658366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/798460053424658366'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/10/drupal-cms.html' title='Drupal - CMS'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-4914907887195726572</id><published>2007-10-17T06:51:00.000-07:00</published><updated>2007-10-17T06:53:07.350-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redes'/><category scheme='http://www.blogger.com/atom/ns#' term='cisco'/><title type='text'>Allanan oficinas de Cisco en Brasil ante denuncias de fraude</title><content type='html'>Las autoridades registraron y cerraron temporalmente dos oficinas brasileñas de Cisco Systems Inc., el mayor fabricante mundial de equipos de computación en red, debido a una investigación sobre un multimillonario esquema de fraude fiscal.&lt;div id="storyBody" class="story"&gt;&lt;div id="storyBody" class="storyText"&gt;     &lt;p&gt;Cisco dijo en un comunicado que sus oficinas de Sao Paulo y Río de Janeiro fueron registradas y cerradas temporalmente, pero no dio más detalles. Cisco cuenta también con una oficina en Brasilia.&lt;/p&gt;     &lt;p&gt;La empresa sólo indicó que "un pequeño número de funcionarios fue detenido. No fue hecha ninguna acusación formal contra esos funcionarios".&lt;/p&gt;     &lt;p&gt;El juez Alexandre Cassetari, a cargo del caso, indicó en un comunicado que un ex alto ejecutivo brasileño de Cisco está entre los investigados, pero no ofreció su identidad.&lt;/p&gt;     &lt;p&gt;La policía y agentes de la oficina nacional tributaria realizaron la operación el martes, cuando detuvieron a 40 personas y también registraron las residencias de personas involucradas en el esquema.&lt;/p&gt;     &lt;p&gt;La investigación abarca al menos 30 empresas, entre ellas Cisco, pero la policía no ha identificado a las compañías alegando que el caso está bajo reserva judicial. La vinculación de Cisco al caso sólo fue confirmada por el juez Cassetari y la propia empresa en su nota.&lt;/p&gt;     &lt;p&gt;"Estamos cooperando totalmente con la investigación", dijo Felipe Lamus, vocero de Cisco, hablando desde las oficinas centrales de la empresa en California.&lt;/p&gt;     &lt;p&gt;El portavoz declinó dar más detalles o confirmar si entre los investigados y detenidos estaba algunos de los actuales ejecutivos de la empresa.&lt;/p&gt;     &lt;p&gt;La policía dijo en un comunicado que después de dos años de investigaciones unos 650 de sus agentes se desplegaron en zonas de Sao Paulo, Río de Janeiro y Bahía, en la costa del noreste del país, para detener a los sospechosos de realizar operaciones fraudulentas en importación y exportaciones al falsificar facturas y los montos anotadas en ellas.&lt;/p&gt;     &lt;p&gt;La policía dijo que el esquema involucraba a "una multinacional americana", pero el juez Cassetari indicó que se trataba de la corporación Cisco y autorizó el registro policial en las oficinas de la compañía.&lt;/p&gt;     &lt;p&gt;La oficina nacional tributaria dijo en una nota que durante la operación decomisó el equivalente a 400.000 dólares, tanto en moneda brasileña como en la divisa estadounidense, 10 millones de dólares en mercancías, un jet ejecutivo, 18 autos, entre otros.&lt;/p&gt;     &lt;p&gt;Aunque no se formularon cargos de inmediato, el juez dijo que aquellos involucrados en el esquema usaron documentos falsos y facturas con precios bajos de importaciones de productos electrónicos y de telecomunicaciones para evitar el pago de impuestos.&lt;/p&gt;     &lt;p&gt;En su nota, la policía indicó que "en la cadena de importación se encontraban dirigentes brasileños de una multinacional americana y de su distribuidora en Sao Paulo, que conseguían abastecer el mercado nacional con sus productos sin industrializarlos y sin participar formalmente de cualquier proceso de importación".&lt;/p&gt;     &lt;p&gt;"En los últimos cinco años, el grupo habría importado, de manera fraudulenta, aproximadamente unos 500 millones de dólares en valores declarados de productos para la multinacional americana y un volumen mensual de 50 toneladas de mercancías, lo que podría generar pagos tributarios de 1.500 millones de reales (unos 824 millones de dólares)" a futuro, agregó la policía en su comunicado.&lt;/p&gt;     &lt;p&gt;"Hemos contactado a las autoridades de Estados Unidos y ellos están tomando las acciones apropiadas. Es inevitable que lleguemos a las oficinas corporativas" de la empresa, dijo Erika Nogueira, la comisaria de la policía a cargo del caso.&lt;/p&gt;     &lt;p&gt;Cisco comenzó operaciones en Brasil en 1994 y tiene oficinas en Sao Paulo, Río de Janeiro y Brasilia.&lt;/p&gt;&lt;p&gt;Leído en: &lt;a href="http://www.azcentral.com/lavoz/spanish/latin-america/articles/latin-america_204096.html"&gt;http://www.azcentral.com&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;    &lt;/div&gt;   &lt;/div&gt;    &lt;script language="Javascript"&gt;if(ScriptsLoaded)  stInit();&lt;/script&gt;     &lt;span type="end" id="default"&gt;&lt;/span&gt; &lt;!--*End Print Friendly--&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-4914907887195726572?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/4914907887195726572/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=4914907887195726572&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/4914907887195726572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/4914907887195726572'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/10/allanan-oficinas-de-cisco-en-brasil.html' title='Allanan oficinas de Cisco en Brasil ante denuncias de fraude'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-5452634811904114689</id><published>2007-10-10T17:57:00.000-07:00</published><updated>2007-10-15T14:08:13.086-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='servidores'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Servidor SVN junto con Apache en Ubuntu</title><content type='html'>&lt;span style="font-family: verdana;font-family:verdana;font-size:85%;"  &gt;Una herramienta importante a la hora de desarrollar un proyecto es el control de las versiones del código de nuestra aplicación. Para instalar un servidor SVN (Subversion) en una máquina con sistema operativo Ubuntu Linux tenemos que llevar a cabo las siguientes operaciones:&lt;br /&gt;&lt;br /&gt;Primero debemos descargar los siguientes paquetes&lt;br /&gt;&lt;code&gt;    &lt;/code&gt;&lt;code  style="color: rgb(153, 0, 0);font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;sudo apt-get install apache2 subversion subversion-tools libapache2-svn&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:100%;"&gt;Descripción de los paquetes:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;ul style="font-family: verdana;font-family:verdana;" &gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;subversion: este paquete contiene todas las aplicaciones de SVN (incluyendo el servidor)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;apache2 y libapache2-svn: con el servidor apache y el módulo libapache2-svn podremos revisar nuestros archivos vía http.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: verdana;font-size:85%;" &gt;Segundo debemos crear el repositorio svn con el siguiente comando:     :~$ sudo svnadmin create /home/svn&lt;br /&gt;&lt;br /&gt;Ahora tenemos que modificar el módulo libapapache2-svn para que trabaje junto con el servidor svn. Para eso tenemos que modificar el archivo &lt;span style="font-size:100%;"&gt;&lt;code&gt;/etc/apache2/mods-available/dav_svn.conf ($sudo nano &lt;/code&gt;&lt;code&gt;/etc/apache2/mods-available/dav_svn.conf) y colocar:  &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana;font-size:85%;" &gt;     &lt;span style="font-weight: bold;font-size:100%;" &gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;DAV svn&lt;/span&gt;&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;  &lt;br /&gt;SVNPath /home/svn&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;  AuthType Basic&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;  AuthName “Repositorio Ubuntu”&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;  AuthUserFile /etc/apache2/dav_svn_passwd&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Require valid-user&lt;/span&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;br /&gt;  AuthzSVNAccessFile /etc/apache2/svn_access_control&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Ahora tenemos que crear los usuarios para el servidor. Si no hay ningún usuario creado podemos usar el siguiente comando:&lt;br /&gt; &lt;span style="font-size:100%;"&gt;&lt;code&gt;sudo htpasswd2 -mc /etc/apache2/dav_svn_passwd usuario   ó&lt;br /&gt;&lt;/code&gt;&lt;code&gt;sudo htpasswd -mc /etc/apache2/dav_svn_passwd usuario&lt;br /&gt;&lt;br /&gt;Si ya hay algún usuario registrado utilizemos este:&lt;br /&gt;&lt;/code&gt;&lt;code&gt;sudo htpasswd2 -m /etc/apache2/dav_svn_passwd usuario&lt;br /&gt;&lt;/code&gt;&lt;code&gt; sudo htpasswd -m /etc/apache2/dav_svn_passwd usuario&lt;br /&gt;&lt;br /&gt;Enseguida tendrás que crear tu clave.&lt;br /&gt;&lt;br /&gt;Como siguiente paso pasamos a configurar el archivo ($ sudo nano &lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: verdana;font-size:100%;" &gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;svn_access_control&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;code&gt; de acceso al servidor SVN:&lt;br /&gt;&lt;/code&gt;&lt;/span&gt;&lt;ul style="font-family: verdana;"&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:100%;"&gt;C&lt;/span&gt;reamos los grupos de usuarios:&lt;br /&gt;[groups]&lt;br /&gt;dev=user1, user2, user3&lt;br /&gt;guest=user4, user5&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Asignamos los permisos a los grupos:&lt;br /&gt;Si queremos que cualquiera pueda ver los archivos del servidor colocamos esto&lt;br /&gt;  [/]&lt;br /&gt;  * = r&lt;br /&gt;Para restringir el acceso de lectura y escritura a los usuarios dentro del grupo &lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;dev&lt;/span&gt; colocamos lo siguiente:&lt;span style="font-size:85%;"&gt;&lt;br /&gt;  [/]&lt;br /&gt;  dev=rw&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style="font-family: verdana;"&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Guardamos el archivo y procedemos a reiniciar el servidor apache (sudo /etc/init.d/apache2 restart).&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: verdana;font-size:85%;" &gt;Espero les sea de gran ayuda, cualquiera consulta mi correo danilo.dope at gmail dot com&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-family: verdana;font-size:85%;" &gt;     &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-5452634811904114689?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/5452634811904114689/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=5452634811904114689&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/5452634811904114689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/5452634811904114689'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/10/servidor-svn-junto-con-apache-en-ubuntu.html' title='Servidor SVN junto con Apache en Ubuntu'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-2059290173959824239</id><published>2007-09-20T19:40:00.000-07:00</published><updated>2007-09-22T09:38:56.267-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cakephp'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='smarty'/><title type='text'>Configuración de CakePHP + Smarty</title><content type='html'>Para utilizar una combinación de CakePHP + Smarty como sistema de templates tenemos que seguir los siguientes pasos:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Se debe descarga la clase &lt;a href="http://cakeforge.org/snippet/detail.php?type=snippet&amp;amp;id=6"&gt;smarty.php&lt;/a&gt; que es la clase que se va a encargar de conectar cake con smarty. Se debe colocar en la carpeta /app/views/&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Debemos decargar los archivos de &lt;a href="http://smarty.php.net/download.php"&gt;smarty&lt;/a&gt; y descomprimirlos en la carpeta de /app/vendors/  (la carpeta lib es la que debes tomar, o sea, que el contenido de libs debe ir dentro de /app/vendors/smarty/).&lt;/li&gt;&lt;li&gt;Se crea un archivo app_controller.php que se va a guardar en la carpeta /app/ con el siguiente código.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Ahora te toca descargar los &lt;a href="http://bakery.cakephp.org/articles/view/how-to-use-smartyhelpers-with-smartyview"&gt;helpers&lt;/a&gt; los cuales debes colocar en la carpeta /app/views/helpers. Para utilizar estos helpers debes colocar en los controladores la línea &lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; var $helpers = array('SmartyHtml','SmartyJavascript'); por ejemplo.&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Ahora solo queda crear los controladores con sus vistas las cuales deben llevar la extensión .tpl&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;También se debe crear un default.tpl siguiendo la sintaxis de smarty dentro de /app/views/layouts/.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;En la carpeta /app/tmp debes crear los siguientes directorios:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;smarty&lt;/li&gt;&lt;li&gt;smarty/compile&lt;/li&gt;&lt;li&gt;smarty/cache&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;pre&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;Artículo sacado de &lt;a href="http://bakery.cakephp.org/articles/view/how-to-use-smarty-with-cake-smartyview"&gt;bakery.cakephp.org&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-2059290173959824239?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/2059290173959824239/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=2059290173959824239&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/2059290173959824239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/2059290173959824239'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/09/configuracin-de-cakephp-smarty.html' title='Configuración de CakePHP + Smarty'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-7003118875805532623</id><published>2007-09-20T06:45:00.000-07:00</published><updated>2007-09-20T06:46:35.208-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nokia'/><category scheme='http://www.blogger.com/atom/ns#' term='noticias'/><title type='text'>Nokia competirá con iTunes</title><content type='html'>Nokia, el principal fabricante de teléfonos móviles -más de un tercio de los terminales mundiales son suyos-, anunció en Londres la creación de un servicio en Internet que venderá canciones, videojuegos y mapas y que competirá directamente con la tienda iTunes de Apple.                    &lt;p&gt;El nuevo servicio, que se llama Ovi (que en finlandés significa puerta) tiene como grandes pilares la Nokia Music Store (venta de canciones) y la Nokia N-Gage (venta de videojuegos).&lt;/p&gt;                   &lt;p&gt;A estos servicios, que estarán listos para muchos países de Europa dentro de unas semanas, hay que agregar el Nokia Maps, que comercializará mapas para GPS, guías urbanas y diversos servicios de localización que estarán disponibles progresivamente en el mercado.&lt;/p&gt;                   &lt;p&gt;La nueva apuesta comercial de Nokia encaja con su última línea de móviles, que cada vez tienen más capacidades multimedia ya que incorporan cámara, reproductor de música y vídeo, juegos y, en algunos casos, sistemas de navegación GPS.&lt;/p&gt;                   &lt;p&gt;La iniciativa de venta de música por Internet, además, creará una competencia directa con el sistema iTunes, de Apple, que en los últimos años ha copado el mercado de venta legal de canciones gracias al éxito del reproductor iPod.&lt;/p&gt;                   &lt;p&gt;"La industria converge hacia las experiencias accionadas por Internet y Ovi es la combinación de esa tecnología con la movilidad", aseguró Olli-Pekka Kallasvuo, máximo responsable de Nokia. &lt;/p&gt;                   &lt;p&gt;La firma finlandesa, según datos facilitados esta semana en la capital británica, espera vender este año 120 millones de terminales de este tipo, 40 más que los que vendió el año pasado.&lt;/p&gt;                   &lt;p&gt; La Nokia Store pondrá, de entrada, en el mercado dos millones de canciones que podrán comprarse desde el móvil y desde el ordenador. Cada tema costará un euro, mientras que los álbumes podrán comprarse por 10 euros y existirá una suscripción streaming (se puede escuchar la música, pero no se descarga en el equipo) por 10 euros mensuales.&lt;/p&gt;                   &lt;p&gt;Según Tommi Mustonen, responsable de los servicios musicales de la firma finlandesa: "El usuario puede elegir entre la adquisición de canciones a la carta, a través de su dispositivo Nokia o del ordenador o escuchar una cantidad ilimitada de temas completos en sus equipos".&lt;/p&gt;                   &lt;table align="left" cellpadding="2" cellspacing="2" width="29%"&gt;                     &lt;tbody&gt;&lt;tr&gt;                       &lt;td&gt;&lt;div align="right"&gt;&lt;span class="pie_bold"&gt;&lt;img src="http://www.prensa.com/actualidad/tecnologia/2007/09/01/imagenes/tecno_2.jpg" border="1" height="250" width="136" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;                     &lt;/tr&gt;                     &lt;tr&gt;                       &lt;td class="pie" height="16"&gt;&lt;div class="pie_bold" align="right"&gt;REUTERS&lt;br /&gt;                     &lt;/div&gt;&lt;/td&gt;                     &lt;/tr&gt;                   &lt;/tbody&gt;&lt;/table&gt;                   &lt;p&gt;El sistema de Nokia imita algunos de los pasos más polémicos del sistema cerrado iPod-iTunes de Apple. Nokia no ha descartado colaborar con otros vendedores de música, pero según se desprende de las informaciones disponibles, las descargas directas sólo serán posibles desde móviles de la compañía compatibles con el sistema. Y las canciones llevarán sistemas DRM de Microsoft que limitarán su intercambio entre aparatos y su copia.&lt;/p&gt;                   &lt;p&gt;La Nokia N-Gage rescata el nombre del fallido híbrido entre móvil y consola que Nokia sacó al mercado el 2003 pero la estrategia actual es distinta, ya que los juegos que ofrecerá están pensados para diversos terminales de la compañía.&lt;/p&gt;                   &lt;p&gt;La oferta empezará a consolidarse en noviembre. Desarrolladores como Electronics Art, Gameloft y Lucas Arts colaboran en una oferta en la que los responsables de Nokia confían mucho.&lt;/p&gt;                   &lt;p&gt;"Esperamos que el dispositivo móvil sea la plataforma más popular para disfrutar del contenido digital, que se convierta en la cuarta pantalla", señaló Anssi Vanjoki, vicepresidente de Nokia para temas multimedia.&lt;/p&gt;&lt;p&gt;Noticia obtenida de &lt;a href="http://www.prensa.com/actualidad/tecnologia/2007/09/01/index.htm"&gt;prensa.com&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-7003118875805532623?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/7003118875805532623/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=7003118875805532623&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/7003118875805532623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/7003118875805532623'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/09/nokia-competir-con-itunes.html' title='Nokia competirá con iTunes'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-9096830202253671275</id><published>2007-09-20T06:29:00.000-07:00</published><updated>2007-09-20T06:41:04.482-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='openoffice'/><title type='text'>El futuro incierto de OpenOffice</title><content type='html'>¿“Cuál es la amenaza más grande al éxito de OpenOffice.org? ¿Es Microsoft Office? ¿Es el hecho simple de que Dell no lo ofrece con las computadoras? No según algunos participantes en el proyecto código "&lt;span style="font-weight: bold;"&gt;abierto&lt;/span&gt;", dicen que el problema más grande con OO.o es el hecho de que Sun codifica, posee y toma todas las decisiones dominantes para el proyecto cuando debe ser más orientado a la  comunidad. Un profesor que participa en el proyecto dice “muchos desarrolladores están frustrados por la infraestructura de organización en OpenOffice.org” y cita esto como “problema verdadero que esté pesando en el proyecto.” Otros miembros de la comunidad están de acuerdo con  &lt;i&gt;Michael Meeks &lt;/i&gt;quién pidió “que a favor de la comunidad Sun reconsiderara su demanda para la propiedad de la totalidad de OpenOffice.org?” Esperanzadamente con la entrada de IBM en la participación de OO.o veremos que el producto más accesible para la comunidad. ¿Tiene cualquier persona experiencia suficiente para  unirse al proyecto OO.o u cualquier otro proyecto de código "abierto"? ¿Es una buena idea criticar a una compañía cuando han puesto tanto esfuerzo en un proyecto que es fuente técnico abierta y lo liberan totalmente? ¿Sun  intenta controlar OO.o como Java? Tienen buenas razones o intenciones subyacentes malvadas?”&lt;br /&gt;&lt;br /&gt;Noticia obtenida de &lt;a href="http://developers.slashdot.org/developers/07/09/19/1455240.shtml"&gt;slashdot.org&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-9096830202253671275?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/9096830202253671275/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=9096830202253671275&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/9096830202253671275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/9096830202253671275'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/09/el-futuro-incierto-de-openoffice.html' title='El futuro incierto de OpenOffice'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-2455422692237650420</id><published>2007-09-06T07:31:00.000-07:00</published><updated>2007-09-06T07:35:47.095-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Plugins de PHP para Eclipse 3.2</title><content type='html'>Hace unos días, instalé Eclipse 3.2 en mi partición Linux, y me doy cuenta que el no puedo editar ningún archivo con el editor PHP de eclipse. Buscando por los foros me encontré que en la última versión de Eclipse (la 3.2) no funcionan los plugins de PHP version 1.1.8.&lt;br /&gt;&lt;br /&gt;Lastimosamente los plugins para la versión 3.2 están en una versión inestable, pero los puedes descargar para probar en que estado se encuentran.&lt;br /&gt;&lt;br /&gt;Aquí les dejo el link donde lo pueden descargar:&lt;br /&gt;&lt;a href="http://sourceforge.net/project/showfiles.php?group_id=57621&amp;package_id=165724&amp;amp;release_id=448836"&gt;PHPEclipse 1.1.9&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-2455422692237650420?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/2455422692237650420/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=2455422692237650420&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/2455422692237650420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/2455422692237650420'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/09/plugins-de-php-para-eclipse-32.html' title='Plugins de PHP para Eclipse 3.2'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-8475085266401545436</id><published>2007-08-28T09:52:00.000-07:00</published><updated>2007-08-28T09:59:40.767-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='frameworks'/><category scheme='http://www.blogger.com/atom/ns#' term='cakephp'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Mambo integrará a CakePHP en su core.</title><content type='html'>Por una noticia leída en &lt;a href="http://vivaphp.com.ar"&gt;vivaphp&lt;/a&gt; me entero de que CakePHP va a ser integrado en el core de la nueva versión de Mambo (la 5.0).&lt;br /&gt;Mambo utilizará la versión 1.2 de Cake y actualmente se encuentra en una versión beta.&lt;br /&gt;&lt;br /&gt;Para más información pueden entrar a la noticia expuesta en el sitio de &lt;a href="http://bakery.cakephp.org/articles/view/mambo-licious"&gt;cake bakery&lt;/a&gt; o al sitio de &lt;a href="http://source.mambo-foundation.org/content/view/126/1/"&gt;mambo&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-8475085266401545436?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/8475085266401545436/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=8475085266401545436&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/8475085266401545436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/8475085266401545436'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/08/mambo-integrar-cakephp-en-su-core.html' title='Mambo integrará a CakePHP en su core.'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-4793923381661135145</id><published>2007-08-20T22:14:00.000-07:00</published><updated>2008-04-15T07:27:54.174-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='frameworks'/><category scheme='http://www.blogger.com/atom/ns#' term='cakephp'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Tutorial CakePHP</title><content type='html'>Bueno aquí les dejo una lista de los tutoriales y manuales que he podido encontrar de CakePHP.&lt;br /&gt;1. Tutorial en español de CakePHP. &lt;a href="http://www.4shared.com/file/22252506/44c9150f/Tutorial_spanish.html" target="_blank"&gt;Enlace&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. &lt;a href="http://www.scribd.com/doc/5503/CakePHP-tutorial-no-1-from-IBM"&gt;IBM tutorial&lt;/a&gt; para CakePHP&lt;br /&gt;&lt;a href="http://www.4shared.com/file/22252526/76ff778d/CakePHP_IMB_5.html" target="_blank"&gt;&lt;/a&gt;&lt;br /&gt;3. API de CakePHP 1.1.x. &lt;a href="http://www.4shared.com/file/22453480/a54d47d/cake-api-1183544.html" target="_blank"&gt;Enlace&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4. API de CakePHP 1.2.x. &lt;a href="http://www.4shared.com/file/22453497/8d2b709f/cake-api-1203268.html" target="_blank"&gt;Enlace&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5. Manual de CakePHP. &lt;a href="http://www.4shared.com/file/22453465/e4bd0d7c/cake-manual.html" target="_blank"&gt;Enlace&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;6. Uso de TinyMce Editor dentro de CakePHP. &lt;a href="http://www.4shared.com/file/22252529/e6406a1c/TinyMCE_CakePHP.html" target="_blank"&gt;Enlace&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Explicación:&lt;br /&gt;El primero es un tutorial totalmente en español para la versión 1.1.x de CakePHP. Los siguientes enlaces todos los archivos están en inglés. Con estos archivos ya podemos comenzar a construir una verdadera aplicación con CakePHP.&lt;br /&gt;&lt;br /&gt;En los siguientes posts, haré unas traducciones de artículos encontrados en &lt;a href="http://bakery.cakephp.org/" target="_blank"&gt;bakery.cakephp.org&lt;/a&gt;&lt;br /&gt;También subiré el código de algunos proyectos que estoy realizando (por ejemplo una galería de imágenes), o como usar los vendors en cakephp (ejemplo phpmailer).&lt;br /&gt;&lt;br /&gt;Saludos... ; )&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-4793923381661135145?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/4793923381661135145/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=4793923381661135145&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/4793923381661135145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/4793923381661135145'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/08/tutorial-cakephp.html' title='Tutorial CakePHP'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-8136854849699731857</id><published>2007-08-12T07:25:00.000-07:00</published><updated>2007-08-12T07:56:44.914-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='frameworks'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Frameworks en PHP</title><content type='html'>Hay diferentes frameworks para PHP en la web. Voy a hablarles un poco de mi pequeña experiencia con ellos (solo he jugado con dos: CakePHP y Zend Framework).&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Zend Frameork&lt;/h4&gt;    Con la nueva versión del &lt;a href="http://framework.zend.com/" target="_blank"&gt;framework de Zend&lt;/a&gt; para PHP que está disponible solamente de las versiones de  PHP5 y posteriores y gracias a la nueva política de migrar a PHP5, el uso de este framework sería de gran ayuda para agilizar proyectos. Este framework trae una gama completa de clases (ejemplo manejo de ACL - Access Control List).&lt;br /&gt;Es un framework que utiliza el patrón del diseño MVC (Modelo Vista Controlador). Trae clases para la validación de usuarios, para validar los campos de los formularios.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;CakePHP&lt;/h4&gt;&lt;a href="http://cakephp.org/" target="_blank"&gt;    CakePHP&lt;/a&gt; es otro framework que utiliza el patrón MVC. Es un framework bien parecido a Rails para Ruby. Utiliza el patrón Active Record para la clase Modelo, lo que agiliza bastante la construcción de una aplicación web. Tiene soporta para PHP4 en adelante. Debido a esta razón he tenido que usarlo para un proyecto por lo que en mis siguientes posts les hablaré un poco de como utilizar dicho framework para crear aplicaciones rapidamente.&lt;br /&gt;&lt;br /&gt;Después de esta breve descripción procederé en mis siguientes post a hablar un poco de esto dos frameworks.&lt;br /&gt;&lt;br /&gt;Saludos : )&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-8136854849699731857?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/8136854849699731857/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=8136854849699731857&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/8136854849699731857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/8136854849699731857'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/08/frameworks-en-php.html' title='Frameworks en PHP'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-2255092482134062927</id><published>2007-06-21T19:50:00.000-07:00</published><updated>2007-06-21T19:54:18.420-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='games'/><title type='text'>Para los birriosos de Wolfenstein Enemy Terrytory</title><content type='html'>Aquí les dejo un video que en lo particular me parece exelente, y a los que han jugado Wolfenstein les va a gustar&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/U84K55KmNJY"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/U84K55KmNJY" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-2255092482134062927?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/2255092482134062927/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=2255092482134062927&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/2255092482134062927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/2255092482134062927'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/06/para-los-birriosos-de-wolfenstein-enemy.html' title='Para los birriosos de Wolfenstein Enemy Terrytory'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-4702281200624944798</id><published>2007-06-20T09:33:00.000-07:00</published><updated>2007-06-20T09:35:57.183-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='seguridad informática'/><title type='text'>Los Virus que te Geolocalizan (Google Maps)</title><content type='html'>&lt;img src="http://www.opensecurity.es/wp-content/uploads/2007/02/googlemaps.JPG" alt="Google Maps" title="Google Maps" align="right" /&gt;Desde &lt;a set="yes" linkindex="1" href="http://www.websense.com/securitylabs/alerts/alert.php?AlertID=741" onclick="javascript:urchinTracker('/outbound/www.websense.com/securitylabs/alerts/alert.php?AlertID=741?ref=http_//www.google.com/search?q=vulnerabilidades+google+maps_ie=utf-8_oe=utf-8_aq=t_rls=org.mozilla_es-ES_official_client=firefox-a');"&gt;Websense&lt;/a&gt; nos alertan acerca de un nuevo Virus nacido en Australia que se transmite vía e-mail y que al “Capturar” el Ordenador Remoto, el Virus instala entre otros, un keylogger, un monitor de navegación y además un backdoor. &lt;p&gt;Todo igual a otros virus hasta aquí, pero ¿que lo hace diferente? Simple, que desde el Panel de Administración del Virus, el atacante puede &lt;em&gt;Geolocalizar el PC en Google Maps mediante la Dirección IP&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;Es cierto que aunque estas Aplicaciones no son de fiar, podemos encontrarnos con atacantes que ya manejan los Conceptos de Web 2.0.&lt;/p&gt; Más Información | &lt;a set="yes" linkindex="2" href="http://www.websense.com/securitylabs/alerts/alert.php?AlertID=741" onclick="javascript:urchinTracker('/outbound/www.websense.com/securitylabs/alerts/alert.php?AlertID=741?ref=http_//www.google.com/search?q=vulnerabilidades+google+maps_ie=utf-8_oe=utf-8_aq=t_rls=org.mozilla_es-ES_official_client=firefox-a');"&gt;Alerta 741 de Websense&lt;/a&gt;&lt;br /&gt;Encontrado en: &lt;a href="http://www.opensecurity.es/"&gt;http://www.opensecurity.es&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-4702281200624944798?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/4702281200624944798/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=4702281200624944798&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/4702281200624944798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/4702281200624944798'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/06/los-virus-ahora-te-geolocalizan-con.html' title='Los Virus que te Geolocalizan (Google Maps)'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-6786934220359289854</id><published>2007-06-14T17:10:00.001-07:00</published><updated>2007-06-27T20:34:02.689-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Tags sobre PHPDocumentor 2</title><content type='html'>Siguiendo con la explicación de algunos tags que pueden utilizar en PHPDocumentor les dejo aquí unos cuantos.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;@param: indica el tipo de variable y una descripción de un parámetro de una función. Puedes asignar varios tipos de datos a un parámetro, por ejemplo integer y booleano.&lt;br /&gt;Ej.  @param integer|boolean @var1&lt;br /&gt;La barra ( | ) se utiliza para separar los tipos de datos asignados a dicha variable.&lt;/li&gt;&lt;li&gt;@return: el tag return es usado para los métodos con valor de retorno. @returns es el alias de @return y cualquiera de los dos puede ser usado. El tipo de dato debe ser uno soportado por PHP, un nombre de clase o la palabra "mixed" (sin las comillas). Al igual que @param también asignar varios tipos de datos usando la barra ( | ). Si asignas un nombre de clase PHPDocumentor va a crar un link automáticamente enlanzando a la documentación de dicha clase.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;@see: es usado para documentar cualquier elemento (variable global, clase, función, etc). Sirve para referenciar ya sea a una clase padre o a una función de una clase hija, etc.&lt;/li&gt;&lt;li&gt;@since: no sirve para referenciar desde que versión del archivo de código se encuentra presente el elemento (cualquier elemento ya se una función de una clase etc.).&lt;/li&gt;&lt;li&gt;@static: es usado para declarar un método estático de una clase. Estos métodos son llamados sin necesidad de crear una instancia de objeto.&lt;/li&gt;&lt;li&gt;@staticvar: lo mismo que static pero este se aplica a las variables estáticas de la clase. Puede llevar dos parámetros que son el tipo de datos y una pequeña descripción.&lt;br /&gt;Ej. @staticvar string nombre del estudiante&lt;/li&gt;&lt;li&gt;@subpackage: trabajo junto con el tag @package. Hace un trabajo similar o parecido al tag @category.&lt;/li&gt;&lt;li&gt;@access: define el tipo de acceso de la variable. Si es pública, privada o protected. Para que las variables privadas sean documentadas por PHPDocumentor hay que activar la opción de &lt;b&gt;Parse @access private and @internal/{@internal}} &lt;/b&gt;en la configuración de la aplicación web, o si estas en consola utiliza -pp como parámetro.&lt;/li&gt;&lt;li&gt;@todo: planea un nuevo cambio en un elemento que todavía no va a ser implementado. PHPDocumentor muestra dicho string (la información) sin alterar alguna palabra. Funciona para cualquier tipo de elemento.&lt;/li&gt;&lt;li&gt;@var: se utiliza para documentar una variable de clase. El tipo de datos debe ser uno tal que se soportado por PHP, un tipo de clase o la palabra "mixed" (sin las comillas).&lt;/li&gt;&lt;li&gt;@version: para indicar en que versión del archivo de código se encuentra actualmente. Usa un string cualquiera como parámetro.&lt;/li&gt;&lt;/ul&gt;Bueno espero que sea de utilidad estas explicaciones, nos vemos ;)&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-6786934220359289854?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/6786934220359289854/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=6786934220359289854&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/6786934220359289854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/6786934220359289854'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/06/tags-sobre-phpdocumentor-2.html' title='Tags sobre PHPDocumentor 2'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-4286767042325983448</id><published>2007-06-13T15:46:00.000-07:00</published><updated>2008-12-11T17:37:47.641-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Tags sobre PHPDocumentor</title><content type='html'>Este post va dirigido a los que por lo menos se han leído algo de la documentación que hay en la página de PHPDocumentor que publiqué en el post anterior.&lt;br /&gt;&lt;br /&gt;Bueno aquí les dejo una seria de tags interesantes que pueden utilizar en sus archivos de código para su documentación.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;@category: es usado para organizar grupos de paquetes juntos. Por ejemplo si dentro de un paquete tenemos varios subpaquetes podemos organizarlos por categoría. Ej.&lt;br /&gt;@package paquete&lt;br /&gt;@category categoria1&lt;br /&gt;class foo{}&lt;br /&gt;@package paquete&lt;br /&gt;@category categoria2&lt;br /&gt;class foo{}&lt;br /&gt;Allí le estamos diciendo que las dos clases pertenecen a un mismo paquete, sólo que a categoría diferentes.  Esto puede ser útil para organizar bien tu código.&lt;/li&gt;&lt;li&gt;@example: hace un enlace con un documento que puede se ejemplo para lo que se está documentando. La extensión del documento debe estar definidad dentro del phpdocumentor.ini. Si el archivo (ejemplo un archivo .php) entonces phpdocumentor genera un highlight (lo genera en html) del código fuente del archivo.&lt;/li&gt;&lt;li&gt;@final: usada para un método, clase, etc. que nunca va a ser modificada, o sea es su versión final.&lt;/li&gt;&lt;li&gt;@filesource: sólo puede ser usada en el primer DocBlock (bloque de documentación).  Toma el código y genera un hightlight de tu código.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_fag-x4cJV04/RnB3NEnudRI/AAAAAAAAAAM/5eaEi450Og0/s1600-h/filesource.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_fag-x4cJV04/RnB3NEnudRI/AAAAAAAAAAM/5eaEi450Og0/s320/filesource.JPG" alt="" id="BLOGGER_PHOTO_ID_5075687846508918034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;@internal: es usado para crear dos tipos de documentación, ya sea una para uso privado y otra para uso público por ejemplo. La documentación que esta con el tag @internal se presenta sólo si activamos la opción de parse @access private y @internal (en modo web) o con los comandos -pp en modo consola.&lt;/li&gt;&lt;li&gt;@license: puede ser usado para documentar cualquier elemento. En el colocas una url donde se encuentra dicha licencia y nombre para el url.&lt;br /&gt;Ej.  /**&lt;br /&gt;        *  Muestra&lt;br /&gt;        *  &lt;a href="http://www.blogger.com/%27%3Cspan"&gt;&lt;span class="src-doc"&gt;http://opensource.org/licenses/gpl-license.php&lt;/span&gt;'&gt;&lt;span&gt;&lt;span class="src-doc"&gt;GNU Public License&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;        *  @license &lt;span&gt;&lt;span class="src-doc"&gt;http://opensource.org/licenses/gpl-license.php&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="src-doc"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="src-doc"&gt;GNU Public License&lt;br /&gt;       */&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="src-doc"&gt;@name: phpDocumentor reconoce el nombre del tag en las variables globales dentro de los DocBlocks (en conjunto con @global) para así asignarle el valor de @name en vez de $GLOBLAS['var'].&lt;br /&gt;Ej.   /**&lt;br /&gt;          * @global variable $GLOBALS['var1']&lt;br /&gt;          * @name var1&lt;br /&gt;          */&lt;br /&gt;         $GLOBALS['var1']&lt;br /&gt;Entonces en la documentación generada no saldría el nombre como &lt;span style="font-weight: bold;"&gt;mixed $GLOBALS['var']&lt;/span&gt; sino como &lt;span style="font-weight: bold;"&gt;mixed var1.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span&gt;&lt;span class="src-doc"&gt;&lt;span&gt;En el siguiente post seguiré con más tags bien interesantes para la documentación en PHPDocumentor.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-4286767042325983448?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/4286767042325983448/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=4286767042325983448&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/4286767042325983448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/4286767042325983448'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/06/tags-sobre-phpdocumentor.html' title='Tags sobre PHPDocumentor'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_fag-x4cJV04/RnB3NEnudRI/AAAAAAAAAAM/5eaEi450Og0/s72-c/filesource.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-6744297104467064612</id><published>2007-06-13T09:12:00.000-07:00</published><updated>2008-05-28T06:31:53.351-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>PHPDocumentor otra buena herramienta para documentar tus proyectos</title><content type='html'>PHPDocumentor es una herramienta basada en Javadoc para la documentación de código fuente. Esta es una herramienta desarrollada en PHP y usa los mismos principios que Javadoc. La sintaxis es casi la misma que la de Javadoc, por lo que si ya has usado Javadoc ántes no te será problema aplicarlo para php.&lt;br /&gt;Ej. /**&lt;br /&gt;   * @var string nombre&lt;br /&gt;  */&lt;br /&gt;  var $nombre;&lt;br /&gt;Si le quieres hechar un vistazo aquí te dejo su página web &lt;a href="http://www.phpdoc.org/"&gt;http://www.phpdoc.org&lt;/a&gt;., en donde hay un Tutorial que puedes seguir si eres un principiante como yo.&lt;br /&gt;PHPDocumentor puede crear la documentación en diferentes formatos como lo son HTML, PDF, CHM, XML. Para el formato HTML tiene una serie de plantillas que puedes utilizar, pero también te da la opción de crear tu propia plantilla.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Actualizado: 28 de mayo de 2008&lt;/span&gt;&lt;br /&gt;&lt;s&gt;Si usas Eclipse como IDE para desarrollar php puedes usar phpdocumentor como una aplicación externa para generar la documentación. En esta página está como instalarlo &lt;a href="http://www.plog4u.org/index.php/Using_PHPEclipse_:_Installation_:_Installing_the_phpDocumentor"&gt;phpdocumentor en Eclipse&lt;/a&gt;&lt;/s&gt;&lt;br /&gt;&lt;br /&gt;Mediante voy aprendiendo un poco sobre este tema publicaré algunos post con ejemplos.&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-6744297104467064612?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/6744297104467064612/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=6744297104467064612&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/6744297104467064612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/6744297104467064612'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/06/phpdocumentor-otra-buena-herramienta.html' title='PHPDocumentor otra buena herramienta para documentar tus proyectos'/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-8658843067334766568</id><published>2007-05-04T14:40:00.000-07:00</published><updated>2007-06-27T20:34:43.263-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tecnotips'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'></title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;&lt;font style="font-weight: bold;" size="4"&gt;Problema con Mysql Administrator en Ubuntu&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: rgb(51, 51, 0);"&gt;El bug  ocurre cuando  queremos entrar  a  la parte de "Administrador de Usuario" o "User Administrator". La aplicación se congela debido a que pierde la conexión con el servidor.&lt;br&gt;Este problema ocurre en Linux Ubuntu.&lt;br&gt;&lt;br&gt;Para resolver este problema tenemos que seguir los siguientes pasos:&lt;br&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="color: rgb(51, 51, 0);"&gt;Ir a la consola y loguearnos como &lt;span style="font-weight: bold;"&gt;root&lt;/span&gt;. &lt;br&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(51, 51, 0);"&gt;Escribir en la consola la línea: &lt;span style="font-weight: bold;"&gt;#&lt;/span&gt; &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;export DEBUG_DONT_SPAWN_FETCHES=1&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Entonces ya podemos correr nuestra aplicación sin que se cuelgue en la parte de administrador de usuarios.&lt;/li&gt;&lt;li&gt;Y la corremos: &lt;span style="font-weight: bold;"&gt;# mysql-admin&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br&gt;Espero le haya ayudado de algo ;) ...&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-8658843067334766568?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/8658843067334766568/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=8658843067334766568&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/8658843067334766568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/8658843067334766568'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/05/problema-con-mysql-administrator-en.html' title=''/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-9172574245957116534</id><published>2007-04-04T22:44:00.000-07:00</published><updated>2007-06-27T20:34:57.413-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'></title><content type='html'>&lt;div style="text-align: center;"&gt;   &lt;h2 style="font-family: Comic Sans MS; color: rgb(255, 102, 0);"&gt;     &lt;span style="color: rgb(0, 153, 0);"&gt; REFERENCIAS EN PHP&lt;/span&gt;   &lt;/h2&gt;   &lt;br&gt;   &lt;blockquote&gt;   &lt;div style="text-align: left;"&gt;     En php todos los nombres de las variables están enlazados con valores en memoria automáticamente. Una &lt;span style="font-weight: bold;"&gt;referencia&lt;/span&gt; se puede usar para enlazar dos nombres de variables al mismo valor guardado en memoria.&lt;br&gt;     &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&amp;lt;?php&lt;br&gt;     &lt;div&gt;     &lt;/div&gt;     &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;//Sin referencia&lt;/span&gt;&lt;br&gt;         &lt;span style="color: rgb(153, 153, 153);"&gt;$color&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;"azul"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br&gt;        &lt;span style="color: rgb(153, 153, 153);"&gt; $color2&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(153, 153, 153);"&gt;$color&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br&gt;         &lt;span style="color: rgb(153, 153, 153);"&gt;$color&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(51, 102, 255);"&gt;"rojo"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br&gt;         &lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt;echo&lt;/span&gt; &lt;span style="color: rgb(153, 153, 153);"&gt;$color2&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;   &lt;/span&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;//Imprime azul&lt;br&gt;     //Con referencia&lt;br&gt;         &lt;/span&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;$color&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;"azul"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br&gt;        &lt;span style="color: rgb(153, 153, 153);"&gt; $color2&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;= &lt;span style="font-weight: bold;"&gt;&amp;amp;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;$color&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br&gt;         &lt;span style="color: rgb(153, 153, 153);"&gt;$color&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(51, 102, 255);"&gt;"rojo"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br&gt;         &lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt;echo&lt;/span&gt; &lt;span style="color: rgb(51, 51, 51);"&gt;$color2;&lt;/span&gt;   &lt;span style="color: rgb(255, 153, 0);"&gt;//Imprime rojo&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;&lt;br&gt;     &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;?&amp;gt;&lt;/span&gt;&lt;br&gt;     &lt;br&gt;     &lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Importancia de las Referencias en PHP&lt;br&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Imagínate que en tu sitio tienes un panel de control que puedes cambiarle el estilo a la páginas. Para eso tenemos dos clases (Estilo, Salida). Veamos una representación simple de como trabajarían estas clases:&lt;br&gt;     &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br&gt;         &lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;class&lt;/span&gt; Estilo {&lt;br&gt;             &lt;span style="color: rgb(102, 0, 0); font-weight: bold;"&gt;var&lt;/span&gt; &lt;span style="color: rgb(153, 153, 153);"&gt;$color&lt;/span&gt;;&lt;br&gt;             &lt;span style="font-weight: bold;"&gt;var&lt;/span&gt; &lt;span style="color: rgb(153, 153, 153);"&gt;$size&lt;/span&gt;;&lt;br&gt;             &lt;span style="font-weight: bold; color: rgb(102, 0, 0);"&gt;function&lt;/span&gt; Estilo()&lt;br&gt;             {&lt;br&gt;                 &lt;span style="color: rgb(153, 153, 153);"&gt;$this-&amp;gt;color&lt;/span&gt; = &lt;span style="color: rgb(51, 51, 255);"&gt;'white'&lt;/span&gt;;&lt;br&gt;                 &lt;span style="color: rgb(153, 153, 153);"&gt;$this-&amp;gt;size&lt;/span&gt; = &lt;span style="color: rgb(51, 51, 255);"&gt;'medium'&lt;/span&gt;;&lt;br&gt;             }&lt;br&gt;             &lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;function&lt;/span&gt; &lt;/span&gt;getColor()&lt;br&gt;             {&lt;br&gt;                 return &lt;span style="color: rgb(153, 153, 153);"&gt;$this-&amp;gt;color&lt;/span&gt;;&lt;br&gt;             }&lt;br&gt;            &lt;span style="font-weight: bold;"&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;function &lt;/span&gt;&lt;/span&gt;getSize()&lt;br&gt;             {&lt;br&gt;                 return &lt;span style="color: rgb(153, 153, 153);"&gt;$this-&amp;gt;size&lt;/span&gt;;&lt;br&gt;             }&lt;br&gt;            &lt;span style="font-weight: bold;"&gt; &lt;span style="color: rgb(153, 0, 0);"&gt;function&lt;/span&gt;&lt;/span&gt; setColor(&lt;span style="color: rgb(153, 153, 153);"&gt;$color&lt;/span&gt;)&lt;br&gt;             {&lt;br&gt;                 &lt;span style="color: rgb(153, 153, 153);"&gt;$this-&amp;gt;color&lt;/span&gt; = &lt;span style="color: rgb(153, 153, 153);"&gt;$color&lt;/span&gt;;&lt;br&gt;             }&lt;br&gt;             &lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;function&lt;/span&gt; setSize(&lt;span style="color: rgb(153, 153, 153);"&gt;$size&lt;/span&gt;)&lt;br&gt;             {&lt;br&gt;                 &lt;span style="color: rgb(153, 153, 153);"&gt;$this-&amp;gt;size&lt;/span&gt; = &lt;span style="color: rgb(153, 153, 153);"&gt;$size&lt;/span&gt;;&lt;br&gt;             }&lt;br&gt;     }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br&gt;      &lt;span style="color: rgb(255, 0, 0);"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;&lt;br&gt;     &lt;br&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Ahora la clase &lt;span style="font-weight: bold;"&gt;Salida:&lt;br&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;&amp;lt;?php&lt;br&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;class&lt;/span&gt; Salida {&lt;br&gt;             &lt;span style="color: rgb(153, 0, 0); font-weight: bold;"&gt;var&lt;/span&gt; &lt;span style="color: rgb(153, 153, 153);"&gt;$estilo&lt;/span&gt;;&lt;br&gt;             &lt;span style="color: rgb(153, 0, 0); font-weight: bold;"&gt;var&lt;/span&gt; &lt;span style="color: rgb(153, 153, 153);"&gt;$salida&lt;/span&gt;;&lt;br&gt;             &lt;span style="color: rgb(255, 153, 0);"&gt;// Constructor toma estilo como argumento&lt;/span&gt;&lt;br&gt;             &lt;span style="color: rgb(153, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; Salida(&lt;span style="color: rgb(153, 153, 153);"&gt;$estilo&lt;/span&gt;)&lt;br&gt;             {&lt;br&gt;                 &lt;span style="color: rgb(153, 153, 153);"&gt;$this-&amp;gt;estilo &lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt; $estilo&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;             }&lt;br&gt;             &lt;span style="color: rgb(153, 0, 0); font-weight: bold;"&gt;function&lt;/span&gt; buildSalida()&lt;br&gt;             {&lt;br&gt;                 &lt;span style="color: rgb(153, 153, 153);"&gt;$this-&amp;gt;salida&lt;/span&gt; = &lt;span style="color: rgb(51, 51, 255);"&gt;'Color is '&lt;/span&gt; . &lt;span style="color: rgb(153, 153, 153);"&gt;$this-&amp;gt;estilo-&amp;gt;getColor() .&lt;/span&gt;&lt;br&gt;                                       &lt;span style="color: rgb(51, 51, 255);"&gt;' and size is '&lt;/span&gt; . &lt;span style="color: rgb(153, 153, 153);"&gt;$this-&amp;gt;estilo-&amp;gt;getSize()&lt;/span&gt;;&lt;br&gt;             }&lt;br&gt;            &lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt; function&lt;/span&gt; display()&lt;br&gt;             {&lt;br&gt;              &lt;span style="color: rgb(153, 153, 153);"&gt;   $this-&amp;gt;buildOutput()&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;                 return &lt;span style="color: rgb(153, 153, 153);"&gt;$this-&amp;gt;salida&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;             }&lt;br&gt;         }&lt;br&gt;     &lt;br&gt;     Como vemos en la clase salida, su constructor tiene un argumento. Este argumento es un objeto de tipo &lt;span style="font-weight: bold;"&gt;Salida.&lt;br&gt;     &lt;/span&gt;Entonces si ponemos en prática estas clases tendríamos algo como esto:&lt;br&gt;     &lt;br&gt;     &lt;div style="background-color: rgb(221, 221, 221); width: 500px;"&gt;       &amp;lt;?php&lt;br&gt;           //Se crea una instancia de la clase Estilo&lt;br&gt;           $estilo = new Estilo();&lt;br&gt;           $salida  = new Salida($estilo);&lt;br&gt;           echo $salida-&amp;gt;display();&lt;br&gt;       ?&amp;gt;   &lt;br&gt;     &lt;/div&gt;     &lt;br&gt;     Esto dará como salida:&lt;br&gt;     &lt;div style="background-color: rgb(221, 221, 221); width: 500px;"&gt;       Color is white and size is medium&lt;br&gt;     &lt;/div&gt;     &lt;br&gt;     Ahora supongamos que queremos cambiar el estilo del panel que estamos creando.&lt;br&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;     &lt;div style="background-color: rgb(221, 221, 221); width: 500px;"&gt;       &lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &amp;lt;?php&lt;br&gt;           //Se crea una instancia de la clase Estilo&lt;br&gt;           $estilo = new Estilo();&lt;br&gt;           $salida  = new Salida($estilo);&lt;br&gt;           //Modifico el estilo completamente&lt;br&gt;           $estilo-&amp;gt;setColor('red');&lt;br&gt;           $estilo-&amp;gt;setSize('large');&lt;br&gt;       &lt;br&gt;           //Ahora imprimimos&lt;br&gt;           echo $salida-&amp;gt;display();&lt;br&gt;       ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;     &lt;/div&gt;     &lt;br&gt;     Salida:     &lt;div style="background-color: rgb(221, 221, 221); width: 500px;"&gt;       Color is white and size medium     &lt;/div&gt;     &lt;br&gt;     Ahora vemos que lo que imprimimos es lo mismo que en el caso anterior, aunque en este ejemplo se haya cambiado el estilo. El problema consiste en que en la clase &lt;strong&gt;Salida &lt;span style="font-weight: normal;"&gt;el mismo resultado que en ejemplo anterior, debido a que a que la clase Salida obtiene una copia del objeto Estilo, y al realizarse los cambios en el objeto Estilo original no son reflejados en el objeto de la clase Salida ya que está trabajando con una copia.&lt;br&gt;     Pero si modificamos la clase Salida para en vez de trabajar con una copia del objeto Estilo, trabajar con el original, o sea, hacemos referencia al objeto real dentro de la clase Salida, veamos:&lt;br&gt;     &lt;br&gt;     &lt;div style="background-color: rgb(221, 221, 221); width: 500px;"&gt;       function Salida(&amp;amp;$estilo){&lt;br&gt;           $this-&amp;gt;estilo = &amp;amp;$estilo;&lt;br&gt;       }&lt;br&gt;     &lt;/div&gt;     &lt;br&gt;     Ahora si volvemos a correr el ejemplo anterior tendríamos otra salida debido a que ahora si estamos trabajando con el objeto original  de tipo Estilo. La salida sería:&lt;br&gt;     &lt;br&gt;     &lt;div style="background-color: rgb(221, 221, 221); width: 500px;"&gt;Color is red and size is large&lt;br&gt;            &lt;/div&gt;     &lt;br&gt;&lt;font size="4"&gt;&lt;span style="font-weight: bold;"&gt;Buenas Prácticas&lt;br&gt;&lt;/span&gt;&lt;font size="2"&gt;Es recomendable color el operador de referencia (&amp;amp;) dentro de la definición de la función, debido a que si lo colocamos en la llamada de la función. A este tipo de referencia se le llama call-time pass-by-reference (obj-&amp;gt;funcion(&amp;amp;$obj2)). Si en el &lt;span style="font-weight: bold;"&gt;php.ini  &lt;/span&gt;tenemos la opción &lt;span style="font-weight: bold;"&gt;allow_call_time_pass_reference = Off &lt;/span&gt;entonces este tipo de referencia nos dará un &lt;span style="font-weight: bold;"&gt;warning&lt;/span&gt;. php.ini trae esta opción en Off por default.&lt;br&gt;&lt;br&gt;&lt;font style="font-weight: bold;" size="4"&gt;Cuando debemos usar Referencia&lt;br&gt;&lt;/font&gt;&lt;font size="4"&gt;&lt;font size="2"&gt;Debemos usar referencia en caso de:&lt;br&gt;    - Con variables complejas estilo arreglos y objetos.&lt;br&gt;No debemos usar referencias cuando: &lt;br&gt;    - Tengamos variables sencillas estilo integers, strings, etc.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;Referencia tomada del libro "The PHP Anthology - Volumen 1"&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/font&gt; &lt;/span&gt;&lt;/strong&gt;   &lt;/div&gt;   &lt;/blockquote&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-9172574245957116534?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/9172574245957116534/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=9172574245957116534&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/9172574245957116534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/9172574245957116534'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/04/referencias-en-php-en-php-todos-los.html' title=''/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-3313966756431797375</id><published>2007-03-24T21:37:00.000-07:00</published><updated>2007-06-27T20:35:15.812-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='base de datos'/><title type='text'></title><content type='html'>&lt;P CLASS=MsoNormal STYLE="FONT-FAMILY:Verdana; COLOR:#009900"&gt;   &lt;FONT SIZE=4&gt;&lt;B STYLE=""&gt;INTRODUCCIÓN A LAS BASE DE DATOS (CONCEPTOS)&lt;/B&gt;&lt;/FONT&gt; &lt;/P&gt; &lt;P ALIGN=center CLASS=MsoNormal STYLE="TEXT-ALIGN:center; FONT-FAMILY:Verdana"&gt;   &lt;B STYLE=""&gt; &lt;/B&gt; &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;   Una &lt;B STYLE=""&gt;Base de Datos&lt;/B&gt; es una colección de datos lógicamente relacionados, junto con una descripción de estos datos. En cambio un &lt;B STYLE=""&gt;Sistema de Gestión de Base de datos (o DBMS por sus siglas en inglés) &lt;/B&gt;es el software que gestiona y controla el acceso a la base de datos. &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;   Un &lt;B STYLE=""&gt;Sistema de Base de Datos&lt;/B&gt; es una colección de software’s que interactúan con la base de datos. &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;     &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;   &lt;B&gt;&lt;FONT SIZE=3&gt;1.2 Sistemas tradicionales basados en archivos&lt;/FONT&gt;&lt;/B&gt; &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;   Anterior a las Bases de Datos en los sistemas se utilizan las &lt;B&gt;Técnicas basadas en archivos&lt;/B&gt;. Esto es una colección de programas que realizan diversos servicios para usuarios finales. Entre las limitaciones que presenta esta técnica tenemos: &lt;/P&gt; &lt;UL STYLE=FONT-FAMILY:Verdana&gt;   &lt;LI&gt;     &lt;SPAN STYLE=""&gt;&lt;SPAN STYLE="FONT-STYLE:normal; FONT-VARIANT:normal; FONT-WEIGHT:normal; FONT-SIZE:7pt; LINE-HEIGHT:normal; font-size-adjust:none; font-stretch:normal"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;Separación y alistamiento de los datos: resulta más difícil acceder a los datos que deben estar disponibles. Por ejemplo si queremos obtener las transacciones bancarias realizadas por tal usuario; a esto tendríamos que hacer procedimientos un poco complicados.   &lt;/LI&gt;   &lt;LI&gt;     &lt;SPAN STYLE=""&gt;&lt;SPAN STYLE="FONT-STYLE:normal; FONT-VARIANT:normal; FONT-WEIGHT:normal; FONT-SIZE:7pt; LINE-HEIGHT:normal; font-size-adjust:none; font-stretch:normal"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Duplicación de datos: debido al enfoque descentralizado que ofrece las técnicas basadas en archivos. La duplicación de datos implica desperdicios de recursos. También consume espacio de almacenamiento innecesario. Otro problema es que se puede perder la integridad de los datos.   &lt;/LI&gt;   &lt;LI&gt;     &lt;SPAN STYLE=""&gt;&lt;SPAN STYLE="FONT-STYLE:normal; FONT-VARIANT:normal; FONT-WEIGHT:normal; FONT-SIZE:7pt; LINE-HEIGHT:normal; font-size-adjust:none; font-stretch:normal"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;Dependencia entre los datos: resulta difícil realizar cambios en una estructura existente ya que hay que realizar los cambios en la aplicación que gestiona los datos.   &lt;/LI&gt;   &lt;LI&gt;     &lt;SPAN STYLE=""&gt;&lt;SPAN STYLE="FONT-STYLE:normal; FONT-VARIANT:normal; FONT-WEIGHT:normal; FONT-SIZE:7pt; LINE-HEIGHT:normal; font-size-adjust:none; font-stretch:normal"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;Formatos de Archivos Incompatibles: si una aplicación para la gestión de archivo está hecha en C y otra aplicación para la gestión de otras estructuras de archivos está hecha en COBOL tendríamos una incompatibilidad directa de dichos archivos, lo que hace difícil que se pueda procesar conjuntamente.   &lt;/LI&gt;   &lt;LI&gt;     &lt;SPAN STYLE=""&gt;&lt;SPAN STYLE="FONT-STYLE:normal; FONT-VARIANT:normal; FONT-WEIGHT:normal; FONT-SIZE:7pt; LINE-HEIGHT:normal; font-size-adjust:none; font-stretch:normal"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;Consultas fijas/proliferación de programas de aplicación: las consultas a los archivos son fijas, ya que no se pueden hacer consultas en el momento (ad hoc). A menudo se tendría que omitir mecanismos de seguridad o integridad, la recuperación de datos en caso de fallos de hardware, el acceso a archivos estaba restringido.   &lt;/LI&gt; &lt;/UL&gt; &lt;BR STYLE=FONT-FAMILY:Verdana&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;   &lt;SPAN LANG=ES-PA STYLE="COLOR:#009900; FONT-WEIGHT:bold"&gt;&lt;FONT SIZE=3&gt;1.3 Sistema de Base de Datos&lt;/FONT&gt;&lt;/SPAN&gt;&lt;B STYLE=""&gt;&lt;SPAN LANG=ES-PA STYLE=COLOR:#2074ba&gt;&lt;/SPAN&gt;&lt;/B&gt; &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;   La base de datos almacena no solo los datos operacionales de la organización, sino también la descripción de dichos datos. La descripción de los datos se conoce como &lt;B STYLE=""&gt;catálogo del sistema &lt;/B&gt;(o &lt;B STYLE=""&gt;diccionario de datos &lt;/B&gt;o &lt;B STYLE=""&gt;metadatos&lt;/B&gt;). De esta manera la base de datos proporciona la &lt;B STYLE=""&gt;independencia entre programas y datos&lt;/B&gt;. Los sistemas de base de datos separan la estructura de los datos de los programas de aplicación y almacena dicha estructura en la propia base de datos. &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;   Al analizar las necesidades de información de una organización, tratamos de identificar entidades, atributos y relaciones. Una &lt;B STYLE=""&gt;entidad&lt;/B&gt; es un objeto distintivo (una persona, un lugar, cosa, concepto o suceso) dentro de la organización y que hay que representar dentro de la base de datos. Un &lt;B STYLE=""&gt;atributo&lt;/B&gt; es una propiedad que describe algún aspecto del objeto (entidad) que queremos almacenar, y una &lt;B STYLE=""&gt;relación&lt;/B&gt; es una asociación entre entidades. &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;     &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana; COLOR:#009900"&gt;   &lt;B STYLE=""&gt;1.3.2 Sistema de Gestión de Base de Datos (SGBD en español DBMS en inglés)&lt;/B&gt; &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;   El SGBD es el software que interactúa con los programas de aplicación de usuario y con la base de datos. Normalmente proporciona la siguiente funcionalidad: &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;   Permite definir la base de datos mediante un &lt;B STYLE=""&gt;lenguaje de definición de datos &lt;/B&gt;(DDL Data Definition Language). El DDL permite definir las estructuras y tipos de datos y las restricciones aplicables a los datos. Permite a los usuarios insertar, actualizar, borrar y extraer datos de la base de datos mediante el &lt;B STYLE=""&gt;lenguaje de manipulación de datos &lt;/B&gt;(DML Data Manipulation Language). Al disponer de un repositorio centralizado de datos el DML&lt;SPAN STYLE=""&gt;  &lt;/SPAN&gt;puede proporcionar un mecanismo general de consulta de datos, denominado &lt;B STYLE=""&gt;lenguaje de consulta&lt;/B&gt;. El lenguaje de consulta más común es el &lt;B STYLE=""&gt;SQL &lt;/B&gt;(&lt;B STYLE=""&gt;Structured Query Language&lt;/B&gt;, lenguaje estructurado de consulta), que es ahora tanto el estándar formal como el estándar de facto para los SGBD relacionales. &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="MARGIN-LEFT:18pt; TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;     &lt;/P&gt; &lt;H1 STYLE="FONT-FAMILY:Verdana; COLOR:#009900"&gt;   &lt;FONT SIZE=3&gt;1.3.3 Programa de Aplicación&lt;/FONT&gt; &lt;/H1&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;   Los usuarios interactúan con la base de datos emitiendo solicitudes apropiadas (mediante una instrucción SQL)&lt;SPAN STYLE=""&gt;  &lt;/SPAN&gt;dirigidas al SGBD. &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;   &lt;U&gt;Vistas&lt;/U&gt;: permite a cada usuario disponga de su propia vista de la base de datos. &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;     &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana; COLOR:#009900"&gt;   &lt;B STYLE=""&gt;1.3.4 Componentes de un entorno SGBD&lt;/B&gt; &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;   Los componentes de un entorno SGBD son: &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;   Hardware: el SGBD requiere de una plataforma hardware para ejecutarse. El hardware puede se desde una computadora personal, hasta un único mainframe o una red de computadoras. El hardware concreto dependerá de las necesidades de la organización y del SGBD utilizado. Software: comprende el propio software SGBD y los programas de aplicación, junto con el sistema operativo. Normalmente los programas de aplicación se escriben en lenguajes de aplicación de tercera generación (3GL) como Java, C/C++, Visual Basic, etc. o lenguajes de cuarta generación como SQL incrustado dentro de SQL. Datos: las bases de datos contienen los datos operacionales como los metadatos (estructura de la base de datos). La estructura de la base de datos se denomina &lt;B STYLE=""&gt;esquema. &lt;/B&gt;Los esquemas comprenden entidades, atributos y relaciones. Procedimientos: son las instrucciones y reglas que gobiernan el diseño y la utilización de la base de datos. Ej.: iniciar una sesión SGBD, iniciar y detener el SGBD, cambiar la estructura de una tabla y otros más. Personas: son las que relacionan con el sistema. &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;   &lt;B STYLE=""&gt;&lt;SPAN LANG=ES-PA STYLE=COLOR:#2074ba&gt; &lt;/SPAN&gt;&lt;/B&gt; &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana; COLOR:#009900"&gt;   &lt;B STYLE=""&gt;1.3.5 Diseño de Base de Datos: un cambio en el paradigma&lt;/B&gt; &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;   La estructura de la base de datos se determina durante el &lt;B STYLE=""&gt;diseño de la base de datos&lt;/B&gt;. Para que el enfoque de la base de datos tenga éxito se debe pensar primero en los datos y luego en las aplicaciones (&lt;I STYLE=""&gt;cambio de paradigma&lt;/I&gt;). Una base de datos mal diseñada generará errores que puede generar decisiones incorrectas. Existen metodologías que podemos utilizar para el diseño de base de datos (ejemplo Modelo Entidad-Relación). &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;     &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana; COLOR:#009900"&gt;   &lt;B STYLE=""&gt;&lt;FONT SIZE=3&gt;1.4 Papeles en un entorno de base de datos&lt;/FONT&gt;&lt;/B&gt; &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;   Aquí vamos a examinar el quinto de los componentes de un SGBD, las personas. Identificar cuantos tipos de personas puede participar en un SGBD. &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;   Administradores de datos y de base de datos: El &lt;B&gt;administrador de datos &lt;/B&gt;(DA, Data Administrator) es el encargado de administrar los recursos de datos (planificación de la base de datos, le desarrollo de estándares, políticas y procedimientos y el diseño procedimental/lógico de la base de datos. El &lt;B&gt;administrador de la base de datos &lt;/B&gt;(DBA, Database Administrator) es el encargado de la materialización física de la base de datos, incluyendo la implementación, el control, la seguridad y la integridad, el mantenimiento de la fiabilidad del sistema y la garantía que las aplicaciones trabajen de una manera adecuada para los usuarios. Diseñadores de la base de datos: se pueden distinguir dos tipos de diseñadores. El &lt;B&gt;diseñador lógico de la base de datos&lt;/B&gt; que se encarga de identificar los datos (entidades y atributos), las relaciones entre los datos y las restricciones que hay que aplicar a los datos que se almacenan dentro de la base de datos. Debe tener una profunda compresión sobre &lt;I&gt;las reglas del negocio&lt;/I&gt; dentro de la organización. El &lt;B&gt;diseñador físico de la base de datos&lt;/B&gt; decide como materializar físicamente el diseño lógico de la base de datos. &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="MARGIN-LEFT:18pt; TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;   Desarrolladores de aplicaciones: una vez implementa la base de datos los &lt;B&gt;desarrolladores de aplicaciones&lt;/B&gt; se encargan de proporcionar la funcionalidad requerida por los usuarios finales. Estas aplicaciones se encargan de extraer datos, insertarlos, actualizarlos o borrarlos. Los programas pueden ser escritos en lenguajes de tercera o cuarta generación. &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="MARGIN-LEFT:18pt; TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;   Usuarios finales: los usuarios finales pueden clasificarse de acuerdo con la forma en que utilizan el sistema. Los &lt;B&gt;usuarios inexpertos&lt;/B&gt;, que normalmente no son conscientes que existe un SGBD, acceden a los datos mediante una aplicación escritos a propósito y que intenta que la operación sea lo más simple posible. Los &lt;B&gt;usuarios avanzados &lt;/B&gt;están familiarizados con la estructura de la base de datos y con las funcionalidades ofrecidas por el SGBD. Pueden acceder a los datos mediante consultas SQL. &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="MARGIN-LEFT:18pt; TEXT-ALIGN:justify; FONT-FAMILY:Verdana; COLOR:#009900"&gt;     &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana; COLOR:#009900"&gt;   &lt;B&gt;&lt;FONT SIZE=3&gt;1.5 Historio de los sistemas de gestión de base de datos&lt;/FONT&gt;&lt;/B&gt; &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:left; FONT-FAMILY:Verdana"&gt;   Para más información pueden acceder a la página Web: &lt;A HREF=http://recursostic.javeriana.edu.co/wiki/index.php/Historia_de_las_bases_de_datos_en_Ciencia_de_la_Informaci%C3%B3n TARGET=_blank TITLE="Historia de la Base de Datos"&gt;Historia de la Base de Datos&lt;/A&gt; . &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;     &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana; COLOR:#009900"&gt;   &lt;B&gt;&lt;FONT SIZE=3&gt;1.6 Ventajas y desventajas de los SGBD (DBMS)&lt;/FONT&gt;&lt;/B&gt; &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE="TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;   Entre las ventajas que tienen los DBMS tenemos: &lt;/P&gt; &lt;UL STYLE=FONT-FAMILY:Verdana&gt;   &lt;LI&gt;     &lt;SPAN STYLE=""&gt;&lt;SPAN STYLE="FONT-STYLE:normal; FONT-VARIANT:normal; FONT-WEIGHT:normal; FONT-SIZE:7pt; LINE-HEIGHT:normal; font-size-adjust:none; font-stretch:normal"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;Control de la redundancia de los datos: economía de espacio en disco.   &lt;/LI&gt;   &lt;LI&gt;     &lt;SPAN STYLE=""&gt;&lt;SPAN STYLE="FONT-STYLE:normal; FONT-VARIANT:normal; FONT-WEIGHT:normal; FONT-SIZE:7pt; LINE-HEIGHT:normal; font-size-adjust:none; font-stretch:normal"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Coherencia de los datos: al eliminar o controlar la redundancia, reducimos el riesgo de que se produzcan incoherencias.   &lt;/LI&gt;   &lt;LI&gt;     &lt;SPAN STYLE=""&gt;&lt;SPAN STYLE="FONT-STYLE:normal; FONT-VARIANT:normal; FONT-WEIGHT:normal; FONT-SIZE:7pt; LINE-HEIGHT:normal; font-size-adjust:none; font-stretch:normal"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Más información a partir de la misma cantidad de datos: al integrar los datos operacionales, la información puede deducir información adicional a partir del   conjunto de datos existentes.   &lt;/LI&gt;   &lt;LI&gt;     &lt;SPAN STYLE=""&gt;&lt;SPAN STYLE="FONT-STYLE:normal; FONT-VARIANT:normal; FONT-WEIGHT:normal; FONT-SIZE:7pt; LINE-HEIGHT:normal; font-size-adjust:none; font-stretch:normal"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Compartición de datos: la base de datos pertenece a toda la organización y debe ser compartida por todos los usuarios autorizados a diferencia de los archivos que son propiedad de las personas o departamentos.   &lt;/LI&gt;   &lt;LI&gt;     &lt;SPAN STYLE=""&gt;&lt;SPAN STYLE="FONT-STYLE:normal; FONT-VARIANT:normal; FONT-WEIGHT:normal; FONT-SIZE:7pt; LINE-HEIGHT:normal; font-size-adjust:none; font-stretch:normal"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Mayor integridad de datos: se suele expresar en términos de &lt;B STYLE=""&gt;restricciones&lt;/B&gt;, que son las reglas de coherencia que no se permite que la base de datos viole. Esto hace referencia a la validez y coherencia de los datos almacenados.   &lt;/LI&gt;   &lt;LI&gt;     &lt;SPAN STYLE=""&gt;&lt;SPAN STYLE="FONT-STYLE:normal; FONT-VARIANT:normal; FONT-WEIGHT:normal; FONT-SIZE:7pt; LINE-HEIGHT:normal; font-size-adjust:none; font-stretch:normal"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;Imposición de estándares: permite definir e imponer los estándares necesarios (de la organización, de algún departamento, etc.).   &lt;/LI&gt;   &lt;LI&gt;     &lt;SPAN STYLE=""&gt;&lt;SPAN STYLE="FONT-STYLE:normal; FONT-VARIANT:normal; FONT-WEIGHT:normal; FONT-SIZE:7pt; LINE-HEIGHT:normal; font-size-adjust:none; font-stretch:normal"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Economía a escala: centralizar los datos puede ayudar a reducir grandemente los costos.   &lt;/LI&gt;   &lt;LI&gt;     &lt;SPAN STYLE=""&gt;&lt;SPAN STYLE="FONT-STYLE:normal; FONT-VARIANT:normal; FONT-WEIGHT:normal; FONT-SIZE:7pt; LINE-HEIGHT:normal; font-size-adjust:none; font-stretch:normal"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Equilibrio entre los requisitos conflictivos: el administrador  de la base de datos  puede tomar desiciones acerca del diseño y la utilización operacional de la base de datos que proporcionen el mejor uso de los recursos.   &lt;/LI&gt;   &lt;LI&gt;     Mejor accesibilidad de los datos y mayor capacidad de respuesta:  debido a que los datos están centralizados en un repositorio de datos, los datos que atraviesan la fronteras departamentales son accesibles de modo directo por los usuarios finales. También el uso de lenguajes de consulta que proporcionan los DBMS que permiten a los usuarios hacer consultas ad hoc y obtener la información requerida en su computador.   &lt;/LI&gt;   &lt;LI&gt;     Mayor productividad: los DBMS incluyen muchas de las funciones estándar que el programador tendría normalmente que incluir dentro de su aplicación basada en archivos.   &lt;/LI&gt;   &lt;LI&gt;     Manteminimiento simplificado gracias a la independencia de los datos: los DBMS guardan tanto los datos como las estructura de dichos datos, lo que le da una independencia de las aplicaciones que van a trabajar sobre estos datos.   &lt;/LI&gt;   &lt;LI&gt;     Mayo nivel de concurrencia: los DBMS se encargan de gestionar el acceso concurrente a la base de datos lo que garantiza el acceso a un mismo archivo silumltaneamente.   &lt;/LI&gt;   &lt;LI&gt;     Servicios mejorado de copia de seguridad y recuperación: los DBMS tienen diferentes mecanismos en caso de fallo o para realizar copias de seguridad lo que ayuda grandemente a la hora de recuperar datos.   &lt;/LI&gt; &lt;/UL&gt; &lt;SPAN STYLE=FONT-FAMILY:Verdana&gt;Desventajas: &lt;/SPAN&gt;&lt;BR STYLE=FONT-FAMILY:Verdana&gt; &lt;UL STYLE=FONT-FAMILY:Verdana&gt;   &lt;LI&gt;     Complejidad: los DBMS son software muy complejos y las personas que vayan a usarlo deben tener conocimiento de las funcionalidades del DBMS para poder aprovercharlo al máximo.   &lt;/LI&gt;   &lt;LI&gt;     Tamaño: la complejidad y la gran cantidad de funciones que tienen los DBMS hacen que sea un software de gran tamaño, que requiere de gran cantidad de memoria para poder correr.   &lt;/LI&gt;   &lt;LI&gt;     Coste del DBMS: los DBMS de hoy en día son muy costosos. Un DBMS multiusuario puede estar entre 100,000 a 1,000,000 dolares. También hay que tomar en cuenta el costo de soporte que puede ser un porcentaje del precio.   &lt;/LI&gt;   &lt;LI&gt;     Coste del hardware adicional: los requisitos de hardware para correr un DBMS por lo general son relativamente altos, por lo que estos equipos pueden llegar a costar gran cantidad de dinero.   &lt;/LI&gt; &lt;/UL&gt; &lt;P CLASS=MsoNormal STYLE="MARGIN-LEFT:27pt; TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;   &lt;B&gt; &lt;/B&gt; &lt;/P&gt; &lt;SPAN STYLE="FONT-WEIGHT:bold; FONT-FAMILY:Verdana"&gt;&lt;SPAN STYLE=COLOR:#ff0000&gt;Resumen Capítulo 1  - Sistemas de Bases de Datos (Un enfoque práctico para diseño, implementación y gestión) &lt;/SPAN&gt;&lt;BR STYLE=COLOR:#ff0000&gt; &lt;SPAN STYLE=COLOR:#ff0000&gt;                                        De: Thomas M. Connolly - Carolyn E. Begg&lt;/SPAN&gt;&lt;BR&gt; &lt;/SPAN&gt; &lt;P CLASS=MsoNormal STYLE="MARGIN-LEFT:27pt; TEXT-ALIGN:justify; FONT-FAMILY:Verdana"&gt;   &lt;B&gt; &lt;/B&gt; &lt;/P&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-3313966756431797375?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/3313966756431797375/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=3313966756431797375&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/3313966756431797375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/3313966756431797375'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/03/introduccin-las-base-de-datos-conceptos.html' title=''/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-1836553136050774272</id><published>2007-03-07T11:15:00.000-08:00</published><updated>2007-06-27T20:35:35.379-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tecnotips'/><title type='text'></title><content type='html'>&lt;div style="text-align: left;"&gt; &lt;font style="color: rgb(0, 153, 0);" size="5"&gt;&lt;span style="font-weight: bold;"&gt;HOW TO: COMO INSTALAR SERVIDOR IIS EN WINDOWS XP HOME&lt;/span&gt;&lt;/font&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;span style="color: rgb(51, 102, 102);"&gt;Bien, de todos es conocido la necesidad de tener bien instalado un servidor. Mi caso era el siguiente. Había desarrolado un sitio en ASP y tenía que mostrarlo al cliente. Pero no quería subirlo a la web, sino que iba a utilizar el portatil para enseñarselo y ver su opinión , lógico, no? :)&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; La cuestión era que tenía instalado en el portatil Windows XP "Home", Apache Web Server y PHP. Intenté instalar soporte ASP para Apache, pero todos los módulos que probé para Apache no me funcionaron bien. No nos engañemos. ASP implica Microsoft, y por añadido ISS.&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; Instalar ISS5 en Win XP Pro es sencillo, pero en la versión Home, símplemente no te va a dejar. Pensé en usar PWS pero en XP Home tampoco va.&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; Navegando en la red, encontré un documento en ingles e italiano escrito por Mariano Conea que procedo a intentar explicar en español.&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; PROCEDIMIENTO DE INSTALACION DE ISS5 EN WINDOWS XP HOME&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; 1.- Neceitarás el CD de instalación de WIN 200 Server o Pro (El CD de WIN XP Pro no te sirve)&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; 2.- Si no tienes 2 lectoras de cd-rom, sugiero que copies el directorio i386 del cd de WIndows XP Home en el disco duro.&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; 3.- En ese directorio encuentra el archivo IMS.CAB, abrelo con WinRar ( o similar) y descomprime el contanido en una carpeta temporal (se necesitará al final)&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; nota del traductor: (a mi no me hizo falta, pero como cada caso es particular, no entraña riesgo el descomprimirlo)&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; 4.- Busca el archivo  c:WINDOWSINFSYSOC.INF&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; 5.- En la seccion [COMPONENTS] busca la línea:&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; iis=iis.dll,OcEntry,iis.inf,hide,7&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; 6.- Cámbiala por esta otra:&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; iis=iis2.dll,OcEntry,iis2.inf,,7&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; (recuerda hacer el cambio a iis2.dll y iis2.inf y eliminar la palabra hide. de esta forma nos saltamos la protección de XP Home)&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; 7.- Desde el Cd de Win 2000 (Pro o Server) coge los archivos: iis.dl_ y iis.in_ qye están el el directorio i386 y copialos al escritorio, abre una ventana des DOS, sitúa el prompt en tu Escritorio y escribe los siguientes comandos:&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; EXPAND IIS.DL_ IIS2.DLL&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; EXPAND IIS.IN_ IIS2.INF&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; esto genera 2 nuevos archivos llamados iis2.dll y iis2.inf&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; copia IS2:DLL en c:WINDOWSSYSTEM32SETUP&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; y IIS.INF en c:WINDOWSINF&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; 8.- Vete a "Panel de Control" -&amp;gt; "Agregar Quitar Programas" -&amp;gt; "Agregar o Quitar Componentes de Windows" e inicia el Asistente para componentes de Windows. Verás el apartado de "Servicios de Internet Information server (IIS)" como casilla de verificación activable.&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; 9.- Activala (Supongo que si estás buscando solo PWSselecciones en detalles solo los componentes que quieras instalar)&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; nota del traductor: (si activas la casilla e ISS por defecto se instalan varios servicio como el SMTP o FTP..)&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; 10.- Necesitarás 10/15 minutos y durante ese tiempo el sistema te pedirá varios archivos: algunosestán en el directorio de XP Home y otros en el CD de Win2000. En un momento dadto te pedirá el archivo EXCH_adsiisex.dll file: este es el archivos que hemos extraido en un directorio temporal en el punto 3 del manual, seleccionalo y proseguirás sin problemas.&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; 11.- Cuando acabe, reinicia el ordenador.&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; 12 Prueva a ver si funciona: abre el Explorador y escribe en la direccion: &lt;/span&gt;&lt;a style="color: rgb(51, 102, 102);" href="http://localhost/" target="_blank"&gt;http://localhost&lt;/a&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; Seguramente no funcionará, así que prueba lo siguiente&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; - abre una venta de DOS y escribe: iisreset /RESTART&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; 13.- Gracias a las capturas de Jamez Picard para poder explicar el punto 13.&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; Abre el panel de control:&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; Click en mantenimiento y personalización&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;img style="color: rgb(51, 102, 102);" src="http://www.geocities.com/pippo_mares/grafica/iis13_01.gif" alt="" border="0"&gt;&lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; Luego: Herramientas administrativas&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;img style="color: rgb(51, 102, 102);" src="http://www.geocities.com/pippo_mares/grafica/iis13_02.gif" alt="" border="0"&gt;&lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; Luego Selecciona Administrador de Servicios de Internet (no Administrador Web Personal)&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;img style="color: rgb(51, 102, 102);" src="http://www.geocities.com/pippo_mares/grafica/iis13_03.gif" alt="" border="0"&gt;&lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; Luego verás la siguiente consola:&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; Botón derecho en tu Sitio web Predeterminado y clic en propiedades&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;img style="color: rgb(51, 102, 102);" src="http://www.geocities.com/pippo_mares/grafica/iis13_04.gif" alt="" border="0"&gt;&lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; Selecciona la pestaña de seguridad de directorios: y clic en el botón de "Modificar"&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; para Control de Autentificación y Acceso Anónimo.&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;img style="color: rgb(51, 102, 102);" src="http://www.geocities.com/pippo_mares/grafica/iis13_05.gif" alt="" border="0"&gt;&lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; Selecciona el botón Modificar para cuenta de acceso anónimo.&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;img style="color: rgb(51, 102, 102);" src="http://www.geocities.com/pippo_mares/grafica/iis13_06.gif" alt="" border="0"&gt;&lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; Verás un cuadroi de diálogo parecido a este:&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;img style="color: rgb(51, 102, 102);" src="http://www.geocities.com/pippo_mares/grafica/iis13_07.gif" alt="" border="0"&gt;&lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; Modifícalo para que quede así:&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; 1.- Introduce el nombre de usuario y contraseña que usas para abris sesión en Windows XP Home. &lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; Cuando entras en windows, si tansolo tienes que hacer clic en tu nombre de usuario y no te pide contraseña, quiere decir que tienes una contraseña en blanco. Por ejemplo si mi nombre de usuario es "YourLoginUser" entronces la configración tendría un aspecto así:&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; 2.- Desactiva la casilla para para Permitir que ISS controle la contraseña.&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; 3.- Desactiva la casilla de contraseña si no tienes contraseña en tu cuenta.&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;img style="color: rgb(51, 102, 102);" src="http://www.geocities.com/pippo_mares/grafica/iis13_08.gif" alt="" border="0"&gt;&lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; Clic en OK y clic en OK otra vez) para todas las ventanas abiertas de Windows.&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; Ahora estará disponible usar IIS en XP Home sin problemas de accesso&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; nota del traductor:(Si no realizas el paso 13, seguramente el servidor te de un error tipo "Error 500 &lt;/span&gt;&lt;a style="color: rgb(51, 102, 102);" href="http:///" target="_blank"&gt;Http://&lt;/a&gt;&lt;span style="color: rgb(51, 102, 102);"&gt;")&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt; &lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; Cierra y Reiniciael Servidor Web y reintenta el punto 12 del manual&lt;/span&gt;&lt;br style="color: rgb(51, 102, 102);"&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;&lt;span style="color: rgb(51, 102, 102);"&gt; Si todo funciona bien verás la pantalla e presentación de ISS5&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;Sitio original del tutorial&lt;br&gt;    - En español: http://www.forosdelweb.com/showthread.php?t=163506&lt;br&gt;    - En inglés: &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt; Web original &lt;/span&gt;&lt;a style="font-weight: bold; color: rgb(204, 0, 0);" href="http://www.geocities.com/pippo_mares/iis.htm" target="_blank"&gt;http://www.geocities.com/pippo_mares/iis.htm&lt;/a&gt;&lt;br&gt; Traduccion a español: &lt;b&gt;LaNTraX&lt;/b&gt; para Foros de Web.&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-1836553136050774272?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/1836553136050774272/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=1836553136050774272&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/1836553136050774272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/1836553136050774272'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/03/how-to-como-instalar-servidor-iis-en.html' title=''/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3068224110259204298.post-6957960625643778348</id><published>2007-03-05T07:39:00.000-08:00</published><updated>2007-06-27T20:35:52.077-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'></title><content type='html'>&lt;P CLASS=MsoNormal STYLE=COLOR:#003300;FONT-FAMILY:Verdana&gt;   &lt;B STYLE=""&gt;HOW TO: COMO INSTALAR LA LIBRERÍA PEAR EN WINDOWS XP FOR DUMMIES&lt;/B&gt; &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE=COLOR:#003300;FONT-FAMILY:Verdana&gt;     &lt;/P&gt; &lt;P CLASS=MsoNormal STYLE=TEXT-ALIGN:justify;COLOR:#003300;FONT-FAMILY:Verdana&gt;   Para la instalación de esta librería en el sistema operativo Windows XP tendremos que seguir los siguientes pasos: &lt;/P&gt; &lt;OL START=1 STYLE=MARGIN-TOP:0cm;COLOR:#003300;FONT-FAMILY:Verdana TYPE=1&gt;   &lt;LI CLASS=MsoNormal STYLE=TEXT-ALIGN:justify&gt;     Primero tenemos que abrir una consola MSDOS. Para se van a Inicio-&amp;gt;Ejecutar, y colocan &lt;I STYLE=""&gt;cmd&lt;/I&gt;.   &lt;/LI&gt;   &lt;LI CLASS=MsoNormal STYLE=TEXT-ALIGN:justify&gt;     Después mediante el comando &lt;I STYLE=""&gt;cd &lt;/I&gt;dentro de la consola debemos ir a la carpeta &lt;B STYLE=""&gt;&lt;I STYLE=""&gt;php&lt;/I&gt;&lt;/B&gt;&lt;I STYLE=""&gt;. &lt;/I&gt;En mi caso se encuentra en C:serverphp. Si tienes instalado algún paquete estilo &lt;B STYLE=""&gt;xampp, appserv o wampp&lt;/B&gt; entonces la ruta sería un estilo como este C:xampphtdocsphp (para xampp), o C:Appservphp para appserv.   &lt;/LI&gt;   &lt;LI CLASS=MsoNormal STYLE=TEXT-ALIGN:justify&gt;     Ya dentro de la carpeta php, ahora escribes &lt;B STYLE=""&gt;&lt;I STYLE=""&gt;go-pear.bat&lt;/I&gt;&lt;/B&gt;. Este archivo es el instalador de PEAR. Si al correr este archivo la consola te muestra un error como “&lt;I STYLE=""&gt;El sistema no puede hallar la ruta especificada.&lt;/I&gt;”, entonces es que la ruta del php.exe dentro del archivo go-pear.bat está incorrecta. Para arreglar este problema tendremos que abrir el archivo &lt;I STYLE=""&gt;go-pear.php&lt;/I&gt; en un editor de texto (puede ser el notepad de Windows). Dentro del editor vamos a la línea que dice “set PHP_BIN=cliphp.exe” y cambiamos esa línea por esta “set PHP_BIN=php.exe”. Ahora la instalación si podrá avanzar correctamente.   &lt;/LI&gt;   &lt;LI CLASS=MsoNormal STYLE=TEXT-ALIGN:justify&gt;     Después nos aparecera un mensaje que si deseamos abortar la instalación o presiones&lt;I STYLE=""&gt; “Enter”&lt;/I&gt; para continuar. Entonces presionar “&lt;I STYLE=""&gt;Enter&lt;/I&gt;”.   &lt;/LI&gt;   &lt;LI CLASS=MsoNormal STYLE=TEXT-ALIGN:justify&gt;     Después te pregunta si vas a usar un http Proxy o presiones “&lt;I STYLE=""&gt;Enter&lt;/I&gt;” para no elegir un http Proxy. Entonces presionar “&lt;I STYLE=""&gt;Enter&lt;/I&gt;”.   &lt;/LI&gt;   &lt;LI CLASS=MsoNormal STYLE=TEXT-ALIGN:justify&gt;     Después te muestran una lista de siete nombres con sus respectivas rutas. Si la ultima ruta te aparece en blanco (“7. php.exe path : ”), entonces debes colocar la ruta donde se encuentra el php.exe. Para eso debes presionar el número “7” y luego “&lt;I STYLE=""&gt;Enter&lt;/I&gt;”. Te aparecerá algo como “&lt;I STYLE=""&gt;php.exe path [ ] : &lt;/I&gt;” . Allí debes colocar el mismo path que colocaste arriba en el primer paso (Ej.: C:xampphtdocsphp) y luego presionar “&lt;I STYLE=""&gt;Enter&lt;/I&gt;”   &lt;/LI&gt;   &lt;LI CLASS=MsoNormal STYLE=TEXT-ALIGN:justify&gt;     Ahora te sale la misma lista anterior de los siete elementos pero el número siete contiene el path que introduciste. Entonces presionas “Enter”.   &lt;/LI&gt;   &lt;LI CLASS=MsoNormal STYLE=TEXT-ALIGN:justify&gt;     De allí en adelante coloca “&lt;I STYLE=""&gt;Y&lt;/I&gt;” (o sea sí) en todas las preguntas que te hagan, y listo ya tendrás las librería incluidas en PEAR a tu disposición.   &lt;/LI&gt; &lt;/OL&gt; &lt;BR STYLE=COLOR:#003300;FONT-FAMILY:Verdana&gt; &lt;SPAN STYLE=FONT-WEIGHT:bold;COLOR:#003300;FONT-FAMILY:Verdana&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;div class="blogger-post-footer"&gt;Panamá Post - Desarrollo Web en Panamá&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3068224110259204298-6957960625643778348?l=panamapost.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://panamapost.blogspot.com/feeds/6957960625643778348/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3068224110259204298&amp;postID=6957960625643778348&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/6957960625643778348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3068224110259204298/posts/default/6957960625643778348'/><link rel='alternate' type='text/html' href='http://panamapost.blogspot.com/2007/03/how-to-como-instalar-la-librera-pear-en.html' title=''/><author><name>Danilo Domínguez P.</name><uri>http://www.blogger.com/profile/14922986321315562316</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
