<?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-3692315577904584198</id><updated>2011-12-08T21:48:57.795-04:30</updated><category term='php5'/><category term='gateway'/><category term='postgresql'/><category term='autocompletion'/><category term='symfony'/><category term='doctrine'/><category term='ubuntu'/><category term='autocomplete'/><category term='error'/><category term='ubuntu9.04'/><category term='ServerName'/><category term='sfGuardUser'/><category term='apache2'/><title type='text'>JSanGil</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jsangil.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jsangil.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>JoseA</name><uri>http://www.blogger.com/profile/16775865669586065551</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>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3692315577904584198.post-7307712577851125239</id><published>2010-01-15T00:37:00.001-04:30</published><updated>2010-01-20T19:55:07.010-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='symfony'/><category scheme='http://www.blogger.com/atom/ns#' term='php5'/><category scheme='http://www.blogger.com/atom/ns#' term='sfGuardUser'/><title type='text'>Modificar widgets defaults del módulo sfGuardUser (sfDoctrineGuardPlugin)</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Sigo con la onda symfony pues estoy trabajando en un proyecto con el framework. &lt;br /&gt;&lt;br /&gt;En este caso estaba usando el plugin &lt;a href='http://www.symfony-project.org/plugins/sfDoctrineGuardPlugin'&gt;sfDoctrineGuardPlugin&lt;/a&gt; el cúal supongo, si están leyendo estas líneas, conocen para que funciona.&lt;br /&gt;&lt;br /&gt;En este caso tengo un formulario de registro de usuarios y requería que el campo para permisos del usuario, que por default es:&lt;br /&gt;&lt;font color='#333333'&gt;&lt;br /&gt;&lt;/font&gt;&lt;small&gt;&lt;font color='#333333'&gt;//lib/form/doctrine/sfDoctrineGuardPlugin/BasesfGuardUserForm.class.php&lt;/font&gt;&lt;br /&gt;      &lt;font color='#000000'&gt; ...&lt;br /&gt;      'permissions_list' =&amp;gt; new sfWidgetFormDoctrineChoiceMany(array('model' =&amp;gt; 'sfGuardPermission'))&lt;br /&gt;       ...&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;big&gt;y su validator:&lt;/big&gt;&lt;br /&gt;     &lt;font color='#000000'&gt; ...&lt;br /&gt;      'permissions_list' =&amp;gt; new sfValidatorDoctrineChoiceMany(array('model' =&amp;gt; 'sfGuardPermission', 'required' =&amp;gt; false)),&lt;br /&gt;      ...&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;big&gt;cambiase la validación a un campo requerido, es decir &lt;/big&gt;&lt;/small&gt;&lt;small&gt;&lt;b&gt;'required' =&amp;gt; true&lt;/b&gt;.&lt;/small&gt;&lt;small&gt;&lt;br /&gt;&lt;big&gt;&lt;br /&gt;Dado que la idea NO es modificar el plugin, de manera que se mantenga el código mantenible y el plugin actualizable (Principios básicos de calidad del software), intenté sobreescribir el validator desde la clase sfGuardUser.class.php, que es creada automáticamente en el directorio &lt;font color='#333333'&gt;/lib/form/doctrine/sfDoctrineGuardPlugin&lt;/font&gt;. Procedí a añadir dentro de la función &lt;b&gt;configure&lt;/b&gt;, la siguiente línea:&lt;br /&gt;&lt;br /&gt; &lt;small&gt;    &lt;font color='#000000'&gt;$this-&amp;gt;validatorSchema['permissions_list']-&amp;gt;setOption('required', true);&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;big&gt;Sin embargo esto no funciona. Ningún tipo de modificación que hiciera sobre la lista de widgets autogenerados (username, group_list, is_active, permissions_list, etc..) funciona.&lt;/big&gt;&lt;br /&gt;&lt;br /&gt;&lt;big&gt;&lt;b&gt;Solución&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;Googleando y preguntando en los foros, encontré que la solución es hacer las modificaciones sobre el archivo sfGuardAdminUser.class.php en lugar de sfGuardUser.class.php. Este se encuentra en el directorio del plugin. Pueden copiarlo y agregarlo a la ubicación &lt;font color='#333333'&gt;/lib/form/doctrine&lt;/font&gt;. De esta manera cualquier modificación realizada sobre alguno de los widgets SÍ tendrá efecto.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Una segunda opción:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Copiar el &lt;b&gt;generator.yml&lt;/b&gt;  de&lt;br /&gt;/plugins/sfDoctrineGuardPlugin/modules/sfGuardUser/config/generator.yml&lt;br /&gt;a &lt;br /&gt;/apps/tu_app/modules/sfGuardUser/config/generator.yml&lt;br /&gt;&lt;br /&gt;Luego cambiar el form class en el generator.yml:&lt;br /&gt;&lt;br /&gt;   &lt;small&gt;  &lt;font color='#000000'&gt;form:&lt;br /&gt;            class: sfGuardUserAdminForm&lt;/font&gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;Crear una nueva clase form así:&lt;br /&gt;&lt;br /&gt;&lt;small&gt;&lt;font color='#333333'&gt;//lib/form/doctrine&lt;/font&gt;&lt;br /&gt;      &lt;font color='#000000'&gt;class sfGuardMyUserAdminForm extends sfGuardUserAdminForm&lt;br /&gt;     {&lt;br /&gt;        public function configure()&lt;br /&gt;       {&lt;br /&gt;            $this-&amp;gt;validatorSchema['permissions_list']-&amp;gt;setOption('required', True);&lt;br /&gt;       }&lt;br /&gt;     } &lt;br /&gt;&lt;br /&gt;&lt;big&gt;Eso es todo:&lt;/big&gt;&lt;br /&gt;&lt;/font&gt;&lt;/small&gt;&lt;/big&gt;&lt;/small&gt;&lt;/big&gt;&lt;/small&gt;&lt;div align='center'&gt;&lt;small&gt;&lt;big&gt;&lt;small&gt;&lt;big&gt;&lt;small&gt;&lt;font color='#000000'&gt;&lt;img src='http://lh5.ggpht.com/_OuAW1aruWF8/S0_3Ms_X3kI/AAAAAAAAAG8/tflaQ-dDnuU/%5BUNSET%5D.png?imgmax=800' style='max-width: 800px;'/&gt;&lt;/font&gt;&lt;/small&gt;&lt;/big&gt;&lt;/small&gt;&lt;/big&gt;&lt;/small&gt;&lt;br /&gt;&lt;/div&gt;&lt;small&gt;&lt;big&gt;&lt;small&gt;&lt;big&gt;&lt;small&gt;Fuente:&lt;/small&gt;&lt;br /&gt;- &lt;/big&gt;&lt;/small&gt;&lt;/big&gt;&lt;a href='http://groups.google.com/group/symfony-users/t/a5cf9f08f684ccab'&gt;Modify sfGuardUserForm fields&lt;/a&gt;&lt;/small&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=5703cd95-2adf-86fc-b8af-800ab45e18f9' alt='' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3692315577904584198-7307712577851125239?l=jsangil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jsangil.blogspot.com/feeds/7307712577851125239/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3692315577904584198&amp;postID=7307712577851125239' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/7307712577851125239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/7307712577851125239'/><link rel='alternate' type='text/html' href='http://jsangil.blogspot.com/2010/01/modificar-widgets-defaults-del-modulo_15.html' title='Modificar widgets defaults del módulo sfGuardUser (sfDoctrineGuardPlugin)'/><author><name>JoseA</name><uri>http://www.blogger.com/profile/16775865669586065551</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://lh5.ggpht.com/_OuAW1aruWF8/S0_3Ms_X3kI/AAAAAAAAAG8/tflaQ-dDnuU/s72-c/%5BUNSET%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3692315577904584198.post-4338483430389733153</id><published>2010-01-04T23:21:00.001-04:30</published><updated>2010-01-20T19:54:31.088-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='symfony'/><category scheme='http://www.blogger.com/atom/ns#' term='autocompletion'/><category scheme='http://www.blogger.com/atom/ns#' term='php5'/><category scheme='http://www.blogger.com/atom/ns#' term='autocomplete'/><category scheme='http://www.blogger.com/atom/ns#' term='doctrine'/><title type='text'>Symfony 1.2 Forms Autocompletion con Doctrine 1.0 (Parte I)</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div align='justify'&gt;    El siguiente tutorial fue probado sobre una aplicación con Symfony 1.2.10 (mantenido hasta Febrero del 2010). Aunque no he realizado pruebas con Symfony 1.3 y 1.4 debería funcionar correctamente:&lt;br/&gt;&lt;br/&gt;&lt;font color='#333333'&gt;&lt;b&gt;Primer Paso&lt;/b&gt;&lt;/font&gt;: Instalacion del Plugin sfFormExtraPlugin&lt;br/&gt;&lt;br/&gt;&lt;font face='georgia'&gt;&lt;small&gt;     $ php symfony plugin:install sfFormExtraPlugin&lt;/small&gt;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;&lt;font face='georgia'&gt;&lt;small&gt;     $ php symfony cc&lt;/small&gt;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;    Con estos paso habremos instalado este plugin que agrega varios widgets útiles. &lt;br/&gt;&lt;br/&gt;&lt;b&gt;&lt;font color='#333333'&gt;Segundo Paso&lt;/font&gt;&lt;/b&gt;:&lt;b&gt; &lt;/b&gt;Trabajemos en el Backend con el formulario al cual le agregaremos un campo con autocomplete&lt;br/&gt;&lt;br/&gt;&lt;div align='justify'&gt;    En el ejemplo a continuación tengo un formulario que representa el perfil de un Usuario y deseo agregar un campo de Estado (estados de Venezuela), para su dirección, que sea con autocomplete. En la base de datos existe un campo 'estado' dentro la tabla &lt;b&gt;Usuario,&lt;/b&gt; que representa un &lt;i&gt;foreign key&lt;/i&gt; al id de la tabla &lt;b&gt;Estado&lt;/b&gt;.&lt;br/&gt;&lt;/div&gt;&lt;font color='#339999'&gt;&lt;br/&gt;&lt;font color='#000000'&gt;&lt;small&gt;//lib/form/doctrine/UsuarioForm.php&lt;/small&gt;&lt;/font&gt;&lt;/font&gt;&lt;br/&gt;&lt;/div&gt;&lt;small&gt;     &amp;lt;?php&lt;br/&gt;&lt;br/&gt;     /**&lt;br/&gt;      * Usuario form.&lt;br/&gt;      *&lt;br/&gt;      * @package    form&lt;br/&gt;      * @subpackage Usuario&lt;br/&gt;      * @author José A.&lt;br/&gt;      */&lt;br/&gt;     class UsuarioForm extends BaseUsuarioForm&lt;br/&gt;     {&lt;br/&gt;           public function configure()&lt;br/&gt;          {&lt;br/&gt;                ...&lt;br/&gt;&lt;br/&gt;                $context = sfContext::getInstance();&lt;br/&gt;&lt;br/&gt;               // Widget de Estado con Autocomplete&lt;br/&gt;               $this-&amp;gt;widgetSchema['estado']-&amp;gt;setOption('renderer_class', &lt;br/&gt;                    'sfWidgetFormJQueryAutocompleter');&lt;br/&gt;               $this-&amp;gt;widgetSchema['estado']-&amp;gt;setOption('renderer_options', array(&lt;br/&gt;                    'url' =&amp;gt; $context-&amp;gt;getController()-&amp;gt;genUrl('@ajax_getstates')&lt;br/&gt;                ));&lt;br/&gt;&lt;br/&gt;                ...&lt;br/&gt;           }&lt;br/&gt;      }&lt;/small&gt;&lt;br/&gt;&lt;br/&gt;&lt;div align='justify'&gt;    Acá primero se define una variable ($context), para determinar el contexto en donde se encuentra la instancia y que permitirá obtener la URL de la acción que symfony requiere para ejecutar el autocomplete.&lt;br/&gt;&lt;br/&gt;    Posteriormente, se modifica el widget 'estado' tal como se indica en el tutorial de symfony &lt;i&gt;&lt;a href='http://www.symfony-project.org/blog/2008/10/14/new-in-symfony-1-2-make-your-choice'&gt;make your choice&lt;/a&gt;&lt;/i&gt;, con la diferencia de que en este caso usaremos un widget distinto del sfFormExtraPlugin, pues el ORM es Doctrine y no Propel.&lt;br/&gt;&lt;br/&gt;    En la opción 'renderer_class', asignaremos el widget &lt;b&gt;&lt;small&gt;sfWidgetFormJQueryAutocompleter&lt;/small&gt;&lt;/b&gt;. Luego en 'renderer_options' debemos especificar el atributo &lt;b&gt;&lt;small&gt;'url'&lt;/small&gt;&lt;/b&gt;, al cual a través de la variable &lt;i&gt;$context,&lt;/i&gt; le asignaremos la URL '&lt;b&gt;&lt;small&gt;@ajax_getstates&lt;/small&gt;&lt;/b&gt;' de la acción  que crearemos más tarde. &lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;font color='#333333'&gt;&lt;b&gt;Tercer Paso&lt;/b&gt;&lt;/font&gt;: Activación del campo en el Generator&lt;br/&gt;&lt;br/&gt;    Para que el campo 'estado' se muestre en el formulario, debe ser activado en el archivo &lt;b&gt;generator.yml&lt;/b&gt;&lt;br/&gt;&lt;small&gt;&lt;font color='#000000'&gt;&lt;br/&gt;//apps/backend/modules/module/config/generator.yml&lt;/font&gt;&lt;/small&gt;&lt;br/&gt;     ...&lt;br/&gt;&lt;br/&gt;&lt;small&gt;     form:&lt;br/&gt;             class: UsuarioForm&lt;br/&gt;             display:&lt;br/&gt;                 Usuario:   [ username, password, password_again, permissions_list, &lt;b&gt;estado&lt;/b&gt;]&lt;/small&gt;&lt;br/&gt;&lt;br/&gt;     ...&lt;br/&gt;&lt;br/&gt;&lt;font color='#333333'&gt;&lt;b&gt;Cuarto Paso&lt;/b&gt;&lt;/font&gt;: Crear la acción en el action.class&lt;br/&gt;&lt;small&gt;&lt;font color='#000000'&gt;&lt;br/&gt;//apps/backend/modules/module/actions/action.class.php&lt;/font&gt;&lt;/small&gt;&lt;br/&gt;&lt;small&gt;    class moduleActions extends autoModuleActions&lt;br/&gt;    {&lt;br/&gt;      ...&lt;br/&gt;      public function executeGetStates(sfWebRequest $request)&lt;br/&gt;      {&lt;br/&gt;           $this-&amp;gt;getResponse()-&amp;gt;setContentType('application/json');&lt;br/&gt;          // &lt;i&gt;&lt;a href='http://www.symfony-project.org/blog/2008/10/14/new-in-symfony-1-2-make-your-choice'&gt;Parametro 'q'&lt;/a&gt;&lt;/i&gt;, contiene lo que fue introducido en el campo por teclado &lt;br/&gt;          $string = $request-&amp;gt;getParameter('q');&lt;br/&gt;&lt;br/&gt;          // Consulta al modelo Estado&lt;br/&gt;          $rows = Doctrine::getTable('Estado')-&amp;gt;getStatesWith($string);&lt;br/&gt;&lt;br/&gt;          $states = array();&lt;br/&gt;          foreach ($rows as $row)&lt;br/&gt;         {&lt;br/&gt;             $states[$row-&amp;gt;getId()] = $row-&amp;gt;getNombre();&lt;br/&gt;          }&lt;br/&gt;    &lt;br/&gt;          return $this-&amp;gt;renderText(json_encode($states));&lt;br/&gt;   &lt;br/&gt;       }&lt;br/&gt;      ...&lt;br/&gt;    }&lt;/small&gt;&lt;br/&gt;&lt;br/&gt;&lt;div align='justify'&gt;     Se utiliza JSON como formato de codificación para devolver los resultados de la acción. La acción es simple, pues sólo obtiene de la sesión el valor introducido por el usuario en el campo y lo utiliza para la consultar en el modelo. Luego cada uno de esos valores retornados por el modelo, son colocados en un arreglo que será codificado en formato JSON y devuelto como resultado.&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;font color='#333333'&gt;&lt;b&gt;Quinto Paso&lt;/b&gt;&lt;/font&gt;: Consulta en el modelo de la tabla Estado&lt;br/&gt;&lt;br/&gt;&lt;font color='#000000'&gt;&lt;small&gt;//lib/model/doctrine/EstadoTable.php&lt;/small&gt;&lt;/font&gt;&lt;br/&gt;&lt;small&gt;     &amp;lt;?php&lt;br/&gt;     ...&lt;br/&gt;    class EstadoTable extends Doctrine_Table&lt;br/&gt;    {  &lt;br/&gt;         ...&lt;br/&gt;        public function getStatesWith($string)&lt;br/&gt;       {&lt;br/&gt;            $query = Doctrine_Query::create()&lt;br/&gt;               -&amp;gt;from('Estado e')&lt;br/&gt;               -&amp;gt;where('LOWER(e.nombre) LIKE ?', '%'.$string.'%')&lt;br/&gt;               -&amp;gt;orderBy('e.nombre ASC')&lt;br/&gt;               -&amp;gt;execute();&lt;br/&gt;                      &lt;br/&gt;             return $query;&lt;br/&gt;        }&lt;br/&gt;    }&lt;/small&gt;&lt;br/&gt;&lt;br/&gt;&lt;font color='#333333'&gt;&lt;b&gt;Sexto Paso&lt;/b&gt;&lt;/font&gt;: Agregar la acción en el routing.yml&lt;br/&gt;&lt;br/&gt;&lt;small&gt;&lt;font color='#000000'&gt;//apps/backend/routing.yml&lt;br/&gt;      ...&lt;br/&gt;&lt;/font&gt;     ajax_getstates:&lt;br/&gt;       url:   /getStates&lt;br/&gt;       param:  { module: sfGuardUser, action: getStates }&lt;/small&gt;&lt;br/&gt;    ...&lt;br/&gt;&lt;br/&gt;     Como se aprecia, la etiqueta debe coincidir con el nombre de la URL que se colocó al widget 'Estado', es decir @ajax_getstates&lt;br/&gt;&lt;font color='#333333'&gt;&lt;b&gt;&lt;br/&gt;Séptimo Paso&lt;/b&gt;&lt;/font&gt;: Incluir los CSS y JS correspondientes al widget de autocomplete de sfFormExtraPlugin&lt;br/&gt;&lt;br/&gt;Esto se puede hacer de dos formas diferentes:&lt;br/&gt;a) Activando el CSS y Javascript para toda la aplicación backend.&lt;br/&gt;Agregando esto en el archiv view.yml&lt;br/&gt;&lt;small&gt;//apps/backend/config/view.yml&lt;/small&gt;&lt;br/&gt;      ...&lt;br/&gt;     &lt;small&gt;stylesheets:    [main.css, /sfFormExtraPlugin/css/jquery.autocompleter.css]&lt;br/&gt;      javascripts:     [/js/jquery/jquery-1.3.js, /sfFormExtraPlugin/js/jquery.autocompleter.js]&lt;/small&gt;&lt;br/&gt;     ...&lt;br/&gt;&lt;br/&gt;b) Activando sólo para el módulo en donde es requerido &lt;br/&gt;Agregando estás líneas en _form.php&lt;br/&gt;&lt;br/&gt;&lt;small&gt;//apps/backend/modules/module/templates/_form.php&lt;/small&gt;&lt;br/&gt;      ...&lt;br/&gt;&lt;small&gt;     &amp;lt;?php use_javascript('jquery-1.3.2.min.js') ?&amp;gt;&lt;br/&gt;     &amp;lt;?php use_javascript('/sfFormExtraPlugin/js/jquery.autocompleter.js') ?&amp;gt;&lt;br/&gt;     &amp;lt;?php use_stylesheet('/sfFormExtraPlugin/css/jquery.autocompleter.css') ?&amp;gt;&lt;/small&gt;&lt;br/&gt;      ...&lt;br/&gt;&lt;br/&gt;&lt;div align='justify'&gt;     En este caso agregamos estas líneas al principio del partial _form.php. En ambas opciones lo que se hace es incluir el estilo del campo del campo de autocomplete, y los respectivos JavaScript para hacer el request.&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;b&gt;     Con esto debería funcionar el autocomplete para el campo dado. &lt;/b&gt;&lt;br/&gt;&lt;br/&gt;&lt;div align='center'&gt;&lt;img src='http://lh3.ggpht.com/_OuAW1aruWF8/S0K29hwudVI/AAAAAAAAAGg/FqUEPEK38A0/%5BUNSET%5D.png?imgmax=800' style='max-width: 800px;'/&gt;&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;div align='justify'&gt;     Un único problema resta al momento de guardar el formulario. En el campo de Estado se guarda el id de éste en vez del nombre del Estado. Desafortunadamente el sfFormExtraPlugin, no incluye un widget específico de autocomplete para Doctrine como lo hace con Propel. En la segunda parte de este tutorial mostraré una posible solución al problema.&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;small&gt;Referencias:&lt;br/&gt;- &lt;a href='http://symfonyguide.wordpress.com/2009/08/05/lautocompletion-sur-un-input-text-du-backend/'&gt;symfonyguide (Francés)&lt;/a&gt;&lt;br/&gt;- &lt;a href='http://particul.es/blog/index.php?post/symfony-12-autocomplete-avec-doctrine-dans-admin-generator#pnote-24-2'&gt;particul.es (Francés)&lt;/a&gt;&lt;br/&gt;- &lt;a href='http://forum.symfony-project.org/index.php/m/85892/'&gt;symfony forum (Inglés)&lt;/a&gt;&lt;/small&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=055de3a2-5df0-81c2-9ff9-28f5ee30ebd6' alt='' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3692315577904584198-4338483430389733153?l=jsangil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jsangil.blogspot.com/feeds/4338483430389733153/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3692315577904584198&amp;postID=4338483430389733153' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/4338483430389733153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/4338483430389733153'/><link rel='alternate' type='text/html' href='http://jsangil.blogspot.com/2010/01/symfony-12-forms-autocompletion-con_6923.html' title='Symfony 1.2 Forms Autocompletion con Doctrine 1.0 (Parte I)'/><author><name>JoseA</name><uri>http://www.blogger.com/profile/16775865669586065551</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://lh3.ggpht.com/_OuAW1aruWF8/S0K29hwudVI/AAAAAAAAAGg/FqUEPEK38A0/s72-c/%5BUNSET%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3692315577904584198.post-8082797818955622122</id><published>2009-12-28T21:21:00.007-04:30</published><updated>2010-01-07T15:24:06.405-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='gateway'/><title type='text'>Gateway Recovery Management error 205 (English/Spanish)</title><content type='html'>Mi portátil es una Gateway FX 7809u. Esta semana me di cuenta que no había hecho respaldo alguno ni de los Drivers ni de la configuración de fábrica del sistema.&lt;br /&gt;&lt;br /&gt;Me dispuse a hacerlo usando la aplicación que el equipo trae para tal tarea. Gateway Recovery Management (Un software hecho por Acer Inc). Cada vez que insertaba un disco y comenzaba el respaldo, la aplicación devolvía un &lt;span style="font-weight: bold;"&gt;error 205&lt;/span&gt; y pedía que se insertara un CD o DVD en blanco. Luego de googlear un rato y ver que es un problema común con las Gateway, alguien comentaba en un blog que bajando la última versión funcionaría. En efecto, con la nueva versión, el problema queda solucionado.&lt;br /&gt;&lt;br /&gt;Se puede descargar desde &lt;a href="http://support.gateway.com/support/drivers/getFile.asp?id=22834&amp;amp;dscr=Gateway%20eRecovery%20V4.00.3008&amp;amp;uid=23832924"&gt;acá&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;-----------------------------------------------------&lt;br /&gt;I have a Gateway FX 7809u. I was trying to make a backup of the factory default system through the Gateway Recovery Management software. However I was getting the same error in every try (Error 205)&lt;br /&gt;&lt;br /&gt;After some google search, I finally found a solution to this problem. You must download a new version of the Recovery management software. This is a very common problem reported in many forums by Gateway laptops owners. The default version of the recovery software has a bug.&lt;br /&gt;&lt;br /&gt;The new version of the software could be downloaded &lt;a href="http://support.gateway.com/support/drivers/getFile.asp?id=22834&amp;amp;dscr=Gateway%20eRecovery%20V4.00.3008&amp;amp;uid=23832924"&gt;here&lt;/a&gt;. It works like a charm.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Vía: &lt;a href="http://www.geekyramblings.net/2009/08/09/gateway-recovery-manager-error-205/"&gt;geekyramblings&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3692315577904584198-8082797818955622122?l=jsangil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jsangil.blogspot.com/feeds/8082797818955622122/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3692315577904584198&amp;postID=8082797818955622122' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/8082797818955622122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/8082797818955622122'/><link rel='alternate' type='text/html' href='http://jsangil.blogspot.com/2009/12/gateway-recovery-management-error-205.html' title='Gateway Recovery Management error 205 (English/Spanish)'/><author><name>JoseA</name><uri>http://www.blogger.com/profile/16775865669586065551</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-3692315577904584198.post-7274702739137461743</id><published>2009-12-12T15:09:00.004-04:30</published><updated>2010-01-07T15:23:55.453-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Flash Player para Ubuntu 9.10 amd64 y botones que no funcionan</title><content type='html'>&lt;div style="text-align: justify;"&gt;Desempolvando un poco mi blog (que lo he abandonado tal como no quería XD), traigo una solución para un inconveniente con flash y los botones de juegos, reproductores y demás..&lt;br /&gt;&lt;br /&gt;Hace un mes que instalé la última versión de Ubuntu, Karmic Koala y había tenido algunos problemas con los botones de acción del reproductor de youtube, facebook y otros widgets con flash. Por ejemplo, para accionar los reproductores de youtube debía usar la barra espaciadora, pues ningún botón funcionaba con un click del mouse.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Googleando un buen rato, encontré en los foros de ubuntu una solución muy sencilla:&lt;br /&gt;&lt;br /&gt;1) Ejecutar en un terminal:&lt;br /&gt;$ sudo gedit /usr/lib/nspluginwrapper/i386/linux/npviewer&lt;br /&gt;2) Añadir al final del archivo esta línea:&lt;br /&gt;   export GDK_NATIVE_WINDOWS=1&lt;br /&gt;3) Guardar y cerrar&lt;br /&gt;&lt;br /&gt;Como ejemplo, este es el contenido de mi archivo npviewer:&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:lucida grande;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:lucida grande;"&gt;#!/bin/sh&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:lucida grande;"&gt;TARGET_OS=linux&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:lucida grande;"&gt;TARGET_ARCH=i386&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:lucida grande;"&gt;# 8 dec 2009. Added to fix flash mouse problem&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:lucida grande;"&gt;export GDK_NATIVE_WINDOWS=1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:lucida grande;"&gt;. /usr/lib/nspluginwrapper/noarch/npviewer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Con esto debería bastar. Reiniciar el browser y debería funcionar para Firefox y para Chromium..&lt;br /&gt;&lt;br /&gt;Otros intentos:&lt;br /&gt;- Intenté también, antes de encontrar esta solución, instalar la versión de Adobe Flash para 64 bits, bajando el tar.gz de la página y colocando el descomprimido en el directorio /usr/lib/mozilla/plugins y en el directorio /usr/lib/chromium-browser/plugins&lt;br /&gt;Para firefox funcionaba, pero con Chromium (navegador que estoy usando con frecuencia) provocaba errores y hacia &lt;span style="font-style: italic;"&gt;crash&lt;/span&gt; en algunas páginas con flash.&lt;br /&gt;&lt;br /&gt;Decidí al final quedarme con los paquetes de flash que se encuentran en los repositorios y eliminar lo anterior.&lt;br /&gt;Por referencia los paquetes que deberían estar instaldos son:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;flashplugin-installer&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;flashplugin-nonfree&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Es todo, suerte!&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;Fuente:&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;a href="http://ubuntuforums.org/showthread.php?t=1312123"&gt;http://ubuntuforums.org/showthread.php?t=1312123&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3692315577904584198-7274702739137461743?l=jsangil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jsangil.blogspot.com/feeds/7274702739137461743/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3692315577904584198&amp;postID=7274702739137461743' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/7274702739137461743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/7274702739137461743'/><link rel='alternate' type='text/html' href='http://jsangil.blogspot.com/2009/12/flash-player-para-ubuntu-910-amd64-y.html' title='Flash Player para Ubuntu 9.10 amd64 y botones que no funcionan'/><author><name>JoseA</name><uri>http://www.blogger.com/profile/16775865669586065551</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-3692315577904584198.post-2217555143101108856</id><published>2009-10-03T23:12:00.003-04:30</published><updated>2009-10-03T23:16:13.195-04:30</updated><title type='text'>Una cita de Andy Rutledge</title><content type='html'>Estaba chequeando mi reader y me encontré con esta cita:&lt;br /&gt; &lt;br /&gt;&lt;blockquote&gt;Beautiful accidents can happen, but accident is not the basis for design excellence. Purposeful discovery followed by focused, skillful conceptualization and execution is the basis for design excellence.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Acá está su &lt;a href="http://andyrutledge.com/"&gt;página&lt;/a&gt; que por cierto, está muy bien.&lt;br /&gt;&lt;br /&gt;Un post corto lo sé, pero valía la pena colocarlo&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3692315577904584198-2217555143101108856?l=jsangil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jsangil.blogspot.com/feeds/2217555143101108856/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3692315577904584198&amp;postID=2217555143101108856' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/2217555143101108856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/2217555143101108856'/><link rel='alternate' type='text/html' href='http://jsangil.blogspot.com/2009/10/una-cita-de-andy-rutledge.html' title='Una cita de Andy Rutledge'/><author><name>JoseA</name><uri>http://www.blogger.com/profile/16775865669586065551</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-3692315577904584198.post-8617190616206168760</id><published>2009-09-28T23:42:00.005-04:30</published><updated>2010-01-07T15:23:36.696-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='symfony'/><category scheme='http://www.blogger.com/atom/ns#' term='php5'/><category scheme='http://www.blogger.com/atom/ns#' term='doctrine'/><title type='text'>Modificación de filtros en Symfony para un modulo de administración. Ejemplo sobre el módulo sfGuardUser del sfDoctrineGuardPlugin(Doctrine)</title><content type='html'>Dada la poca documentación al respecto, decidí publicar un ejemplo sobre modificación de los filtros para un módulo de administración en una aplicación de symfony. El ejemplo en concreto es sobre el plugin &lt;a href="http://www.symfony-project.org/plugins/sfDoctrineGuardPlugin"&gt;sfDoctrineGuardPlugin&lt;/a&gt; y su módulo sf_guard_user.&lt;br /&gt;&lt;br /&gt;El detalle importante en este caso es que de los filtros que el módulo genera por default, probablemente sólo los de username, permissions y fechas son útiles, pero dado que el resto de campos que completan el perfil de un usuario van en otra tabla (&lt;a href="http://www.symfony-project.org/blog/2008/11/12/call-the-expert-customizing-sfdoctrineguardplugin"&gt;Customize sfDoctrineGuardPlugin&lt;/a&gt;), se hace necesario crear nuevos filtros para los atributos del perfil que sean necesarios.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ejemplo de schema del perfil:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Perfil:&lt;br /&gt;&amp;nbsp;&amp;nbsp;columns:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;codigo:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;type: string(10)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;primary: true&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;notnull: true&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sf_guard_user_id:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;type: integer&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;apellidos:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;type: string(40)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;notnull: true&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nombres:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;type: string(40)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;notnull: true&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sexo:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;type: string(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;notnull: true&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;email:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;type: string(45)&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#La relación sfGuardUser fue creada manualmente para acoplar esta tabla al&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#plugin de manejo de usuarios sfDoctrineGuardPlugin.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&amp;nbsp;&amp;nbsp;relations:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sfGuardUser:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;local: sf_guard_user_id&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;foreign: id&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;foreignType: one&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;onDelete:  CASCADE&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Agreguemos entonces un filtro para los nombres de los usuarios:&lt;br /&gt;&lt;br /&gt;Debemos ubicar la clase sfGuardUserFormFilter.class.php dentro del directorio /lib/filter/doctrine/sfDoctrineGuardPlugin. Ahí agregaremos lo siguiente dentro de la función configure:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;public function configure()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;//... &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;//Widget para el filtro de nombres&lt;br /&gt;&amp;nbsp;&amp;nbsp;$this-&gt;widgetSchema['nombres'] = new sfWidgetFormFilterInput(array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'with_empty' =&gt;  false&lt;br /&gt;&amp;nbsp;&amp;nbsp;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;$this-&gt;validatorSchema['nombres'] = new sfValidatorPass(array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'required' =&gt; false&lt;br /&gt;&amp;nbsp;&amp;nbsp;));&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Con esto hemos creado un widget para el atributo 'nombres' con su respectivo validator. El widget es un simple campo de entrada (&lt;a href="http://www.symfony-project.org/api/1_2/sfWidgetFormFilterInput"&gt;sfWidgetFormFilterInput&lt;/a&gt;), en donde hemos desactivado con "'with_empty' =&gt; false", el checkbox 'is_empty'.&lt;br /&gt;&lt;br /&gt;Posteriormente agregaremos la función para consultar sobre la base de datos los atributos que deben ser cargado desde la tabla perfil.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;public function addNombresColumnQuery(Doctrine_Query $query, $field, $values)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;//Se comprueba que no sea nulo el valor del campo del filtro&lt;br /&gt;&amp;nbsp;&amp;nbsp;if ($values['text'] != '') {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$query-&gt;from('sfGuardUser u')&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&gt;innerJoin('u.Perfil us')&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&gt;andWhere("us.nombres LIKE ?", '%'.$values['text'].'%');&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El nombre de la función debe ser addCampocualquieraColumnQuery.&lt;br /&gt;&lt;br /&gt;En este caso se hace un Join interno entre las tablas sfGuardUser y perfil, agregando un WHERE para filtrar los registros que coincidan con el valor introducido en el campo de input. El valor es $values['text'] y los porcentajes a los lados son sintaxis de doctrine para permitir que la búsqueda no requiera la palabra exacta, y permita devolver resultados con sólo una parte de ella (&lt;a href="http://www.doctrine-project.org/documentation/manual/1_1/en/dql-doctrine-query-language#conditional-expressions:like-expressions"&gt;Documentación doctrine&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Finalmente, se añade el nuevo atributo de filtro a la función getFields, que devuelve todos los campos por los que es posible filtrar:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;public function getFields()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;return parent::getFields() + array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'nombres'    =&gt;  'Text'&lt;br /&gt;&lt;br /&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Se añade al array ya existente desde parent::getFields() en la clase autogenerada BasesfGuardUserFormFilter.class.php, el nuevo campo de tipo text.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Con esto sólo resta activar el nuevo campo de filtro en el archivo generator.yml del módulo sfGuardUser:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;filter:&lt;br /&gt;&amp;nbsp;&amp;nbsp;display: [username, permissions_list, nombres]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Luego:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;$ ./symfony cc&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El filtro debería funcionar&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3692315577904584198-8617190616206168760?l=jsangil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jsangil.blogspot.com/feeds/8617190616206168760/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3692315577904584198&amp;postID=8617190616206168760' title='10 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/8617190616206168760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/8617190616206168760'/><link rel='alternate' type='text/html' href='http://jsangil.blogspot.com/2009/09/modificacion-de-filtros-en-symfony-para.html' title='Modificación de filtros en Symfony para un modulo de administración. Ejemplo sobre el módulo sfGuardUser del sfDoctrineGuardPlugin(Doctrine)'/><author><name>JoseA</name><uri>http://www.blogger.com/profile/16775865669586065551</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>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3692315577904584198.post-3858915260342629838</id><published>2009-09-09T14:24:00.003-04:30</published><updated>2009-09-09T14:31:20.119-04:30</updated><title type='text'>Jail Break para Ipod/Iphone</title><content type='html'>Estuve hace un par de semanas en USA y compré un Ipod Touch 2da Generación.&lt;br /&gt;&lt;br /&gt;Después de usarlo un poco decidí hacer el JailBreak para poder instalar otras aplicaciones fuera del appStore...&lt;br /&gt;Luego de googlear encontré una guía en español que está excelente.&lt;br /&gt;Te explica como actualizar el firmware a la versión 3.0, hacer el jailBreak e instalar otros paquetes necesarios.&lt;br /&gt;Se hace sin mayor dificultad y no se necesita mucho tiempo.&lt;br /&gt;&lt;br /&gt;Acá la dejo:&lt;br /&gt;http://ipodlibre.blogspot.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3692315577904584198-3858915260342629838?l=jsangil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jsangil.blogspot.com/feeds/3858915260342629838/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3692315577904584198&amp;postID=3858915260342629838' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/3858915260342629838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/3858915260342629838'/><link rel='alternate' type='text/html' href='http://jsangil.blogspot.com/2009/09/jail-break-para-ipodiphone.html' title='Jail Break para Ipod/Iphone'/><author><name>JoseA</name><uri>http://www.blogger.com/profile/16775865669586065551</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-3692315577904584198.post-2164618228701938343</id><published>2009-07-22T21:29:00.007-04:30</published><updated>2009-07-22T21:57:24.353-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ServerName'/><category scheme='http://www.blogger.com/atom/ns#' term='error'/><category scheme='http://www.blogger.com/atom/ns#' term='apache2'/><title type='text'>Problema con Apache: Could not determine the server's fully qualified domain name...</title><content type='html'>Luego de instalar Apache en Ubuntu de la forma que describí en el post "&lt;a href="http://jsangil.blogspot.com/2009/07/instalacion-de-apache-php5-y-postgresql.html"&gt;Instalación de Apache, PHP5 y PostgreSQL en Ubuntu 9.04&lt;/a&gt;", me encontré con un problema al momento de detener, iniciar o reiniciar  (stop, start, restart) el servidor, que pasé por alto cuando hice el tutorial. Al intentar alguna de la acciones nombradas anteriormente se mostraba el siguiente warning:&lt;br /&gt;&lt;h4&gt;apache2: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName&lt;/h4&gt;&lt;br /&gt;El problema surge al momento que apache trata de iniciar el servidor desde el archivo httpd.conf (ubicado en el directorio /etc/apache2/). En esta instancia httpd no encuentra un nombre y por lo tanto devuelve este warning.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Para solucionarlo&lt;/span&gt; sólo se debe agregar un nombre al servidor. En este caso lo llamaré "localhost" de la siguiente forma:&lt;br /&gt;&lt;br /&gt;Se abre en un editor (usaré vim) el archivo httpd.conf:&lt;br /&gt;&lt;pre&gt;$ sudo vim /etc/apache2/httpd.conf y se agrega al principio la siguiente línea:&lt;br /&gt;ServerName localhost&lt;/pre&gt;&lt;br /&gt;Aunque tengan uno o varios virtual host que atiendan todas las peticiones al servidor, es recomendable agregar está línea en el cuerpo principal (al principio por ejemplo) del archivo httpd.conf.&lt;br /&gt;&lt;br /&gt;Posteriormente se edita el archivo hosts en el directorio /etc y se busca la línea que dice "127.0.0.1" y se agrega lo siguiente:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;$ sudo vim /etc/hosts&lt;br /&gt;127.0.0.1    localhost&lt;/pre&gt;&lt;br /&gt;Esto indicará a Apache httpd como encontrar un el nombre del servidor con una búsqueda reversa desde la dirección ip.&lt;br /&gt;&lt;br /&gt;Para más información puede consultar el apartado de documentación de Apache que habla al respecto en:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://wiki.apache.org/httpd/Errors/CouldNotDetermineServerName"&gt;http://wiki.apache.org/httpd/Errors/CouldNotDetermineServerName&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3692315577904584198-2164618228701938343?l=jsangil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jsangil.blogspot.com/feeds/2164618228701938343/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3692315577904584198&amp;postID=2164618228701938343' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/2164618228701938343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/2164618228701938343'/><link rel='alternate' type='text/html' href='http://jsangil.blogspot.com/2009/07/problema-con-apache-could-not-determine.html' title='Problema con Apache: Could not determine the server&apos;s fully qualified domain name...'/><author><name>JoseA</name><uri>http://www.blogger.com/profile/16775865669586065551</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-3692315577904584198.post-1459639833291682797</id><published>2009-07-20T22:06:00.016-04:30</published><updated>2009-07-29T12:50:42.429-04:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu9.04'/><category scheme='http://www.blogger.com/atom/ns#' term='apache2'/><category scheme='http://www.blogger.com/atom/ns#' term='php5'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>Instalación de Apache, PHP5 y PostgreSQL en Ubuntu 9.04</title><content type='html'>Estoy trabajando con &lt;a href="http://www.symfony-project.org/"&gt;Symfony&lt;/a&gt; y mientras instalaba las herramientas que necesitaba me di cuenta no hay muchos tutoriales en Español (por supuesto) que ayuden con las instalación de Apache, PHP5 y PostgreSQL, así que decidí escribir este:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Instalación del servidor apache &lt;/span&gt;&lt;br /&gt;Procedemos a la instalación del servidor apache2.  Los repositorios de Ubuntu 9.04 instalarán la versión 2.2 de apache, la última versión (hasta hoy 20 de julio de 2009).&lt;br /&gt;&lt;br /&gt;1- &lt;span style="font-weight: bold; font-style: italic;"&gt;Instalación por aptitude&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;$ sudo aptitude install apache2&lt;br /&gt;nota: el comando es apache2, pero instalará la versión 2.2.&lt;br /&gt;&lt;br /&gt;2- &lt;span style="font-weight: bold; font-style: italic;"&gt;Prueba del servidor&lt;/span&gt;&lt;br /&gt;Una vez instalado, el servidor arranca automáticamente.&lt;br /&gt;En caso de que esto no suceda, estos son los comandos disponibles para arrancarlo, detenerlo, reiniciarlo, etc.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;$ sudo /etc/init.d/apache2 {start|stop|restart|reload|force-reload|start-htcacheclean|stop-htcacheclean|status}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora en el navegador probar la dirección http://localhost y deberían&lt;br /&gt;conseguirse con el clásico "It Works!"&lt;br /&gt;&lt;br /&gt;3- &lt;span style="font-weight: bold; font-style: italic;"&gt;Instalación de PHP5&lt;/span&gt;&lt;br /&gt;$ sudo aptitude install php5 php5-cli&lt;br /&gt;nota: esto instalará la versión 5.2.6 de PHP5 que está en los repositorios de Jaunty.&lt;br /&gt;&lt;br /&gt;Para que la instalación tenga efecto y sea compatible con el servidor Apache, este debe ser reiniciado:&lt;br /&gt;&lt;br /&gt;$ sudo /etc/init.d/apache2 restart&lt;br /&gt;&lt;br /&gt;4- &lt;span style="font-weight: bold; font-style: italic;"&gt;Prueba de la instalación de php5&lt;/span&gt;&lt;br /&gt;Una vez completada la instalación, haremos lo siguiente para probar que funciona correctamente:&lt;br /&gt;&lt;br /&gt;Con un editor de texto agregaremos un archivo de prueba en el directorio /var/www/&lt;br /&gt;&lt;br /&gt;Puede hacerlo con el editor que quieran (gedit, nano, emacs, kate, etc). Yo usaré vim, por supuesto.&lt;br /&gt;&lt;br /&gt;$ sudo vim /var/www/testphp.php&lt;br /&gt;Y en el archivo escribir (sin las comillas):&lt;br /&gt;&lt;"?php phpinfo(); ?"&gt;&lt;br /&gt;Ahora presionamos &lt;escape&gt; y escribimos ':wq' para guardar y cerrar&lt;br /&gt;&lt;/escape&gt;&lt;br /&gt;&lt;esc&gt;nota: estos últimos son comandos de vim... repito se puede usar&lt;br /&gt;cualquier editor.&lt;br /&gt;&lt;/esc&gt;&lt;br /&gt;&lt;esc&gt;Ahora en Firefox abrir la dirección http://localhost/testphp.php&lt;br /&gt;Se les desplegará una página con información de la versión de PHP instalada.&lt;br /&gt;&lt;br /&gt;&lt;/esc&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_OuAW1aruWF8/SmUs6JRCLNI/AAAAAAAAACU/IzHAGSjAcnA/s1600-h/phpinfo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 190px; height: 200px;" src="http://2.bp.blogspot.com/_OuAW1aruWF8/SmUs6JRCLNI/AAAAAAAAACU/IzHAGSjAcnA/s200/phpinfo.png" alt="" id="BLOGGER_PHOTO_ID_5360740308885843154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;esc&gt;&lt;br /&gt;5- &lt;span style="font-weight: bold; font-style: italic;"&gt;Instalación de PosgreSQL 8.X&lt;/span&gt;&lt;br /&gt;Actualmente los repositorios de Ubuntu 9.04 tienen por defecto la versión 8.3.7 de PostgreSQL. Sin embargo, la última versión de PostgreSQL es la 8.4. Acá dejo un &lt;a href="http://www.postgresql.org/docs/8.4/static/release-8-4.html"&gt;link&lt;/a&gt; con lo que trae nuevo la versión 8.4.&lt;br /&gt;&lt;br /&gt;En esta ocasión haré la instalación desde los repositorios de Ubuntu.&lt;br /&gt;En un próximo post esta semana, publicaré la instalación de la versión&lt;br /&gt;8.4 de PostgreSQL, compilando las fuentes.&lt;br /&gt;&lt;br /&gt;Para esto hace falta ejecutar el comando:&lt;br /&gt;$ sudo aptitude install postgresql-8.3 libapache2-mod-auth-pgsql php5-pgsql&lt;br /&gt;&lt;br /&gt;Pueden ver la descripción de cada uno de estos paquetes con:&lt;br /&gt;$ aptitude show nombre_del_paquete&lt;br /&gt;&lt;br /&gt;Para crear una cuenta en PostgreSQL se debe ejecutar en la terminal:&lt;br /&gt;&lt;br /&gt;$ sudo su postgres&lt;br /&gt;nota: una vez ejecutado a la izquierda del símbolo de dolar debe salir&lt;br /&gt;como usuario activo "postgres", tal como se puede ver abajo.&lt;br /&gt;&lt;br /&gt;Luego para crear el usuario ejecutar:&lt;br /&gt;&lt;br /&gt;[postgres] $ createuser -s -d -r -l -P -E -e user&lt;br /&gt;[postgres] $ exit&lt;br /&gt;&lt;br /&gt;Ya es posible crear Bases de Datos con este usuario.&lt;br /&gt;&lt;br /&gt;Adicionalmente para trabajar con los servicios que dispone PostgreSQL&lt;br /&gt;tienes este comando.&lt;br /&gt;&lt;br /&gt;$ sudo /etc/init.d/postgresql-8.3 {start|stop|restart|reload|force-reload|status|autovac-start|autovac-stop|autovac-restart}&lt;br /&gt;&lt;br /&gt;nota: para información más detallada sobre PostgreSQL y su configuración consulta la documentación del manejador. De igual manera en Google se encuentran gran cantidad de tutoriales y guías específicas.&lt;br /&gt;&lt;br /&gt;Adicionalmente recomiendo la instalación de pgadmin, que es una aplicación para el manejo de las base de datos a través de una interfaz bastante sencilla y fácil de usar.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Para instalar pgAdmin III&lt;/span&gt;:&lt;br /&gt;$ sudo aptitude install pgadmin3&lt;br /&gt;&lt;br /&gt;nota: la versión que se encuentra en los repositorios es la versión 1.8 de pgAdmin III. La última versión es la 1.10 y se puede descargar los archivos fuente desde la página (www.pgadmin.org). La versión 1.10 es la compatible con PostgreSQL 8.4. Si están interesados en instalarla (cosa que no es necesaria si instalaron la versión&lt;br /&gt;8.3.7 de PostgreSQL que se encuentra en los repositorios), pueden visitar este &lt;a href="http://blogs.cognosource.com/tecno4all/2009/04/22/compilar-pgadmin-110-beta-en-ubuntu-810/"&gt;blog&lt;/a&gt; donde se explican los pasos de instalación para la versión beta de pgAdmin 1.10, pero son exactamente los mismos pasos que hace falta para instalar la versión final (evidentemente descargando las fuentes de la versión final)&lt;br /&gt;&lt;br /&gt;Es todo por ahora.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Links consultados:&lt;/span&gt;&lt;br /&gt;http://www.howtoforge.com/ubuntu_lamp_for_newbies&lt;br /&gt;http://www.ubuntu-es.org/?q=node/114939&lt;br /&gt;http://www.postgresql.org/docs/8.4/static/release-8-4.html&lt;br /&gt;http://www.postgresql.org/docs/8.4/interactive/install-procedure.html#CONFIGURE&lt;/span&gt;&lt;/esc&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3692315577904584198-1459639833291682797?l=jsangil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jsangil.blogspot.com/feeds/1459639833291682797/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3692315577904584198&amp;postID=1459639833291682797' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/1459639833291682797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/1459639833291682797'/><link rel='alternate' type='text/html' href='http://jsangil.blogspot.com/2009/07/instalacion-de-apache-php5-y-postgresql.html' title='Instalación de Apache, PHP5 y PostgreSQL en Ubuntu 9.04'/><author><name>JoseA</name><uri>http://www.blogger.com/profile/16775865669586065551</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://2.bp.blogspot.com/_OuAW1aruWF8/SmUs6JRCLNI/AAAAAAAAACU/IzHAGSjAcnA/s72-c/phpinfo.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3692315577904584198.post-7556685448297057206</id><published>2009-07-17T13:35:00.003-04:30</published><updated>2009-07-17T14:14:55.334-04:30</updated><title type='text'>Problema con el apagado y reinicio de Ubuntu 9.04 (Shutdown/Restart)</title><content type='html'>Desde que instalé la versión 9.04 de ubuntu (AMD64) tenía problemas al momento de reiniciar y apagar.&lt;br /&gt;&lt;br /&gt;Luego de que salía la pantalla de splash de ubuntu donde sale la barra cargando, salía una pantalla negra y la computadora se quedaba esperando para reiniciarse de manera indefinida.&lt;br /&gt;&lt;br /&gt;La única manera de reiniciar era presionando Ctrl+Alt+Del. Adicionalmente, si presionaba Ctrl+alt+F7 me di cuenta que decía:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;killing all remaining processess (fail)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Estuve googleando y en muchos casos se ha reportando el bug como un problema con la tarjeta de red, puesto que el dispositivo de conexión inalámbrica no logra desactivarse.&lt;br /&gt;&lt;br /&gt;Para solucionarlo, use esta sugerencia de un usuario llamado myself, reportada en este bug:&lt;br /&gt;&lt;a href="https://bugs.launchpad.net/ubuntu/+source/linux/+bug/355054"&gt;https://bugs.launchpad.net/ubuntu/+source/linux/+bug/355054&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;En el archivo /etc/init.d/alsa-utils buscar la línea que dice " stop)" y debajo agregar&lt;br /&gt;&lt;/p&gt; &lt;p&gt;##  start workarround for &lt;a href="https://bugs.launchpad.net/bugs/355054" title="my laptop doesn't shutdown or reboot. i've posted an image."&gt;bug 355054&lt;/a&gt;&lt;br /&gt;        ifconfig eth0 down&lt;br /&gt;        ifconfig wlan0 down&lt;br /&gt;##  end workarround for &lt;a href="https://bugs.launchpad.net/bugs/355054" title="my laptop doesn't shutdown or reboot. i've posted an image."&gt;bug 355054&lt;/a&gt;&lt;/p&gt;Esto apagara manualmente el dispositivo de red cuando se apaga o reinicia la máquina.&lt;br /&gt;&lt;br /&gt;Esto funcionó para mi. En caso de que no sea el problema revisen también este hilo (además del bug 355054) para hallar otras soluciones&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="https://bugs.launchpad.net/ubuntu/+source/linux/+bug/365733"&gt;https://bugs.launchpad.net/ubuntu/+source/linux/+bug/365733&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3692315577904584198-7556685448297057206?l=jsangil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jsangil.blogspot.com/feeds/7556685448297057206/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3692315577904584198&amp;postID=7556685448297057206' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/7556685448297057206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/7556685448297057206'/><link rel='alternate' type='text/html' href='http://jsangil.blogspot.com/2009/07/problema-con-el-apagado-y-reinicio-de.html' title='Problema con el apagado y reinicio de Ubuntu 9.04 (Shutdown/Restart)'/><author><name>JoseA</name><uri>http://www.blogger.com/profile/16775865669586065551</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-3692315577904584198.post-1077839546113393627</id><published>2009-07-16T18:37:00.003-04:30</published><updated>2009-07-16T18:47:10.244-04:30</updated><title type='text'>Adobe Flash Player 10 para Ubuntu 64 bits</title><content type='html'>Vuelvo con una entrada breve para mi abandonado blog.&lt;br /&gt;&lt;br /&gt;Si se animan a instalar la versión de 64 bits (AMD64) de Ubuntu, se encontraran que al intentar instalar alguno de los paquetes (usualmente el deb) que ofrece adobe en &lt;a href="http://get.adobe.com/es/flashplayer/"&gt;http://get.adobe.com/es/flashplayer/&lt;/a&gt; son incompatibles con la arquitectura, pues lógicamente son para i-386.&lt;br /&gt;&lt;br /&gt;La opción anterior es la forma de instalación más sencilla si tienes Ubuntu i-386, nada más que descargar la ultima version de flash, ejecutar, instalar y listo.&lt;br /&gt;&lt;br /&gt;Para Ubuntu AMD64 se debe descargar la última versión de flash correspondiente a la arquitectura desde aquí:&lt;br /&gt;&lt;a href="http://labs.adobe.com/downloads/flashplayer10.html"&gt;http://labs.adobe.com/downloads/flashplayer10.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Una vez descargado el archivo, se descomprime con:&lt;br /&gt;$ tar -xvzf libflashplayer-XX.XX.XX.XX.linux-x86_64.so.tar.gz&lt;br /&gt;&lt;br /&gt;Luego se copia el archivo libflashplayer.so en el directorio:&lt;br /&gt;/home/username/.mozilla/plugins/&lt;br /&gt;&lt;br /&gt;Si el directorio no existe deben crearlo antes.&lt;br /&gt;&lt;br /&gt;Listo ya pueden reiniciar firefox, y adobe flash debería funcionar&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3692315577904584198-1077839546113393627?l=jsangil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jsangil.blogspot.com/feeds/1077839546113393627/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3692315577904584198&amp;postID=1077839546113393627' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/1077839546113393627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/1077839546113393627'/><link rel='alternate' type='text/html' href='http://jsangil.blogspot.com/2009/07/adobe-flash-player-10-para-ubuntu-64.html' title='Adobe Flash Player 10 para Ubuntu 64 bits'/><author><name>JoseA</name><uri>http://www.blogger.com/profile/16775865669586065551</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-3692315577904584198.post-4840761698432120896</id><published>2009-06-11T00:37:00.006-04:30</published><updated>2009-06-11T22:33:58.055-04:30</updated><title type='text'>Grand Theft Auto Caracas</title><content type='html'>Esta vez quisiera que se tratara de la próxima entrega del conocido juego de Rockstar games, pero no, es simplemente la grotesca aproximación con la realidad de la capital del país..&lt;br /&gt;&lt;br /&gt;Ojo, no este un artículo de esos que intenta decir como los videojuegos afectan a la juventud y demás afirmaciones. Es en verdad lo que sentí la tarde de ayer miércoles, cuando me encontraba en un bus desde Los Teques, en dirección a Caracas.&lt;br /&gt;&lt;br /&gt;Resulta que el bus se llena, con todos los pasajeros sentados y un par de personas de pie, una en el pasillo y la otra en la puerta. Era cerca del mediodía hora en la cual la Panamericana (vía que conecta Caracas con los Teques) tiende a estar ligera de tráfico, pues hoy no era así...&lt;br /&gt;A mitad de camino, estaba yo sentado en el último asiento, me encontraba leyendo un libro concentrado. De repente escucho que el chofer le dice a alguien con cierta molestia que se baje rápido. Subo la mirada y le decía a la persona que estaba parada en la puerta desde que salimos, que se bajara. El lugar era inadecuado, plena vía, sin una parada cerca. En ese momento el individuo (un carajo parecido a CJ de San Andreas) saca una pistola, amenaza con darle un tiro al chofer, mientras otro individuo que caminaba por la cuneta de la vía (evidentemente un atraco preparado), se sube al bus y saca un arma casera o como le dicen aquí "chopo". Se sienta en el asiento de copiloto y se inicia una situación violenta en donde comienza a quitarle el dinero del autobus y amenazan con matar al chofer si se detenía... Yo cargado como siempre con mi laptop, lance el bolso debajo de asiento del bus.&lt;br /&gt;Todo esto en plena adrenalina, mientras uno de los hampones le decía al otro que le quitara las cosas a la gente, y que "quebrara" al que se pusiera payaso. &lt;br /&gt;Se notaban los nervios de los dos individuos. Uno de ellos empezo a agarrar unos bolsos en los primeros puestos, y a recoger el dinero y celulares que entregaba la gente, mientras los apuntaba con una pistola. Fue el momento en que temí lo peor. Saqué el dinero que tenía en la cartera, escondí mi celular entre el asiento y otras pertenencias, el tipo se acercaba cada vez más al asiento final, y justo cuando irónicamente era nuestro turno "al atraco" se volteó, en una clara desesperación por bajarse del bus. Los nervios se incrementaban.&lt;br /&gt;En un mometo le piden a un pasajero que estaba sentado en la parte delantera que les de el celular que acaba de esconder, este dice no tener nada y lo apuntan en la cabeza, fue uno de los momentos más crudos. Uno segundos después le dicen al chofer que se detenga y en la entrada a uno de los barrios del kilómetro 3 se bajan los cabrones. Pasaron tres segundos de silencio, mientras el chofer cerraba de nuevo las puertas y la gente exhalaba un suspiro de alivio.&lt;br /&gt;Los que estabamos en la "cocina" del bus nos salvamos.. vaya susto e impotencia.&lt;br /&gt;Creo son el tipo de momentos que te das cuenta de muchas cosas, e incluso de lo que serías capaz de hacer.&lt;br /&gt;No más que decir, sobre el asco de país en que estamos viviendo. No se puede estar tranquilo en ningún lado, porque siempre puede llegar un cabrón a robarte lo que te jodes para poderte comprar o peor aún, no sólo se lo lleva, sino que te da un tiro.&lt;br /&gt;Al final, ironías de la vida como dicen por ahí, aunque la frase este generalmente usada de manera incorrecta, el libro que iba leyendo justo antes de que empezara todo es una novela policiaca (genero extremadamente aditivo a mi gusto) de Patricia Cornwell, y su detective, más bien forense, Kay Scarpetta se encontraba en pleno suspenso antes de entrar a revisar una casa rodante donde había ocurrido un homicidio... afortunadamente, sólo ficción&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3692315577904584198-4840761698432120896?l=jsangil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jsangil.blogspot.com/feeds/4840761698432120896/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3692315577904584198&amp;postID=4840761698432120896' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/4840761698432120896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/4840761698432120896'/><link rel='alternate' type='text/html' href='http://jsangil.blogspot.com/2009/06/grand-theft-auto-caracas.html' title='Grand Theft Auto Caracas'/><author><name>JoseA</name><uri>http://www.blogger.com/profile/16775865669586065551</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-3692315577904584198.post-3940253259843797329</id><published>2009-06-07T14:40:00.002-04:30</published><updated>2009-06-07T16:00:48.476-04:30</updated><title type='text'>JOINCIC II</title><content type='html'>Hasta ayer sábado fueron las Jornadas InterUniversitarias de Ciencias de la Computación. Asistí este año como organizador por pertenecer al centro de estudiantes de computación de la USB.&lt;br /&gt;&lt;br /&gt;Justo ayer, en la reunión final, los coordinadores entre risa (y chinazos) trataban de describir el evento en una palabra... alguno lo resumió en "gracias" y otro en "amistad". Yo lo dejaría en "experiencia".&lt;br /&gt;De verdad que pese al trabajo que amerita un evento relativamente corto, se puede considerar que fue exito y una satisfacción haber participado. &lt;br /&gt;&lt;br /&gt;Puedo decir, que fuimos no más que un grupo de estudiantes con poca experiencia en eventos, pero con más de un kilo de ganas para que todo saliera bien... y así fue. Desde temprano organizando, dándole seriedad al evento, con uniformes, publicidad y aptitud. Poniendo diversión con reggeatone en los radios, buscando abogados, plomeros, sal y diciéndole a lo moderadora cuantas cervezas rifar y sobretodo, haciendo amistad con gente de distintas universidades, que aún siendo de carreras relacionadas, tratan y viven perspectivas muy diferentes del ámbito de computación.&lt;br /&gt;&lt;br /&gt;En cuanto a las ponecias, hubo de todo. Es algo que escapa un poco de las manos del comité organizador saber si un ponente tendrá nivel o no (sobretodo para los nuevos). Algunos ponentes eran nuevos, otros repetían un año más y se esperaba buenas presentaciones. Había nombres conocidos de las jornadas como Rodolfo Campos, Jesus Ravelo, Ascánder (Este año acompañando a Oswaldo Olivo en la presentación de su tesis) y por supuesto Ernesto Novich.&lt;br /&gt;&lt;br /&gt;No tuve la oportunidad de verlas todas. Alguna fue un tanto decepcionante, como la presentación de Rodolfo Campos, poco preparada a mi parecer y que no dejo clara la exposición BPEL(Business Process Execution Language) que llevo a las jornadas. Al menos yo esperaba más de él, pues fue interesante su ponencia de &lt;a href="www.symfony-project.org"&gt;Symfony&lt;/a&gt; el año anterior. Sin embargo, también hubo un montón de presentaciones de calidad como la de Manuel Rivero con licenciamiento de software libre, JML de J. Ravelo, Desarrollo Ágil de Honack Villanueva, Web 2.0 de K. Dominguez y E. Mendez (muy original por usar una web para su presentación y enviar las preguntas por acá), y Programación funcional en el mundo real de Novich.&lt;br /&gt;&lt;br /&gt;Quizá falto algún debate en el evento. El tema de programación web siempre es apto para este tipo de cosas, aunque es cierto ya se ha hecho otras veces.&lt;br /&gt;&lt;br /&gt;Pero, en general un éxito total, no puedo más que agradecer a este grupo por su gran participación y por haber podido ser parte de la organización. Esperamos que año a año las jornadas sigan creciendo y convirtiéndose en una cita obligatoria (por su calidad) para los estudiantes de Informática, computación o cualquier carrera afín.&lt;br /&gt;&lt;br /&gt;gracias a todos!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3692315577904584198-3940253259843797329?l=jsangil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jsangil.blogspot.com/feeds/3940253259843797329/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3692315577904584198&amp;postID=3940253259843797329' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/3940253259843797329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/3940253259843797329'/><link rel='alternate' type='text/html' href='http://jsangil.blogspot.com/2009/06/joincic-ii.html' title='JOINCIC II'/><author><name>JoseA</name><uri>http://www.blogger.com/profile/16775865669586065551</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-3692315577904584198.post-3053073773665301479</id><published>2009-05-23T20:14:00.003-04:30</published><updated>2009-05-23T20:25:31.444-04:30</updated><title type='text'>twittermania</title><content type='html'>Con el boom del Blackberry, y la posibilidad de vivir conectado y revisar tu facebook cada 5 minutos, ha surgido otra moda... twitter&lt;br /&gt;&lt;br /&gt;Al 80% de personas que le explicas que es twitter te dice que suena a una tontería o como dirían los pana... "un contufeo" rídiculo. Luego, cuando crean su cuenta, se vuelven adictos...&lt;br /&gt;&lt;br /&gt;En la universidad en las ultimas tres semana se ha vuelto un furor. Creas tu cuenta, le haces follow a tus panas y posteas hasta cuando vas para el baño..&lt;br /&gt;&lt;br /&gt;Revisando en mi reader encontre un grupo de ... mejor no definirlos, que llevaron la cuestión a otro nivel:&lt;br /&gt;&lt;a href="http://aculei.net/%7Eshardy/hacklabtoilet/"&gt;&lt;span style="text-decoration: underline;"&gt;Artilugio&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;El aparato registra en twitter cada vez que bajas la palanca de tu poceta... dispositivo indispensable para ser un verdadero twitter fan&lt;br /&gt;&lt;br /&gt;Increible a lo que lleva el ocio&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3692315577904584198-3053073773665301479?l=jsangil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jsangil.blogspot.com/feeds/3053073773665301479/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3692315577904584198&amp;postID=3053073773665301479' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/3053073773665301479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/3053073773665301479'/><link rel='alternate' type='text/html' href='http://jsangil.blogspot.com/2009/05/twittermania.html' title='twittermania'/><author><name>JoseA</name><uri>http://www.blogger.com/profile/16775865669586065551</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-3692315577904584198.post-7831830194632801672</id><published>2009-05-15T00:12:00.002-04:30</published><updated>2009-05-15T00:37:49.019-04:30</updated><title type='text'>Una de linuxeros</title><content type='html'>Tenía mi blog abandonado... es la semana 4 de la universidad y... pana!!, me di cuenta que estaba atrasado con la cola de proyectos pendientes... así q pocas ganas y tiempo para publicar algo.&lt;br /&gt;&lt;br /&gt;El caso es que entre Inteligencia Artificial y Herramientas Web, he estado Ubunteando.&lt;br /&gt;Aún no he actualizado a la 9.04 para probar la maravillosa velocidad de la que tanto se habla en internet, gracias al nuevo Kernel y el extra de rapidez al momento de bootear o transferir archivos que trae consigo si instalas con el nuevo file system ext4...( que parece le da batalla a ReiserFS v4)&lt;br /&gt;&lt;br /&gt;Bueno más alla de la promoción de Ubuntu Jaunty Jacklope (el conejo ese con cuernos), y luego de llevar un par de meses sin mucha onda software libre, recorde lo comodo que puede ser, al menos para un computista trabajar en linux..&lt;br /&gt;&lt;br /&gt;Trabajas como te gusta, desde tu consola haces lo que quieras, tu sistema es rápido y estable (y eso que Ubuntu 8.10 se ha caracterizado por ser un poco lento), &lt;span style="font-style: italic; font-weight: bold;"&gt;sudo aptitude install&lt;/span&gt; y tienes lo que necesitas...&lt;br /&gt;No hablaré ahora con un fanático radical de linux (un LDC boy), pero casualmente perdiendo unos minutos de tiempo con la barra stumble.. encontre &lt;a href="http://www.whylinuxisbetter.net/"&gt;esto &lt;/a&gt;&lt;br /&gt;y decidí publicar...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3692315577904584198-7831830194632801672?l=jsangil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jsangil.blogspot.com/feeds/7831830194632801672/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3692315577904584198&amp;postID=7831830194632801672' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/7831830194632801672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/7831830194632801672'/><link rel='alternate' type='text/html' href='http://jsangil.blogspot.com/2009/05/una-de-linuxeros.html' title='Una de linuxeros'/><author><name>JoseA</name><uri>http://www.blogger.com/profile/16775865669586065551</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-3692315577904584198.post-6418163212726649576</id><published>2009-05-02T21:19:00.004-04:30</published><updated>2009-05-02T21:41:08.395-04:30</updated><title type='text'>Y vaya goleada...</title><content type='html'>Real Madrid 2 - FC Barcelona 6&lt;br /&gt;&lt;br /&gt;pues.. como mi blog es de todo, decidí poner hoy una nota sobre el clásico. Vaya baño que dio el Barcelona.&lt;br /&gt;De infarto la primera mitad. La verdad luego de gritar como un loco el gol de Higuaín, dije... que el Barca siga dormido, que de lo contrario... y así fue manita +1 que encajamos.&lt;br /&gt;&lt;br /&gt;Como detalle cómico, leía hace un rato un blog de un redactor de Marca,que decía que el resultado no evidencia lo que se vio en el campo, que el Madrid debió perder como 3-16... y dentro de semejante salvajada de marcador, como dirían en España: "el tio tiene toda la razón", de no ser por Iker, no sé como habría acabado.&lt;br /&gt;&lt;br /&gt;Así cierra el Madrid una mala temporada, con una segunda vuelta que es estadísticamente impresionante (hasta antes de este partido 55 puntos de 57 posibles), pero futbolisticamente, quiénes han seguido los partidos, saben que nada que ver, 55 puntos ganados a equipos inferiores, porque de los duelos de verdad la historia ha sido muy distinta (sí Liverpool, aunq en Champions, se viene a la cabeza).&lt;br /&gt;&lt;br /&gt;Lo mejor para el Madrid es acelerar las elecciones... estoy seguro Florentino aparecerá por fin a la luz pública, ahora que el Madrid no se juega nada. Hay que ver que propone. Madrid galáctico NO, proyecto deportivo sólido, conciente, con valores y cantera SI.&lt;br /&gt;&lt;br /&gt;El equipo necesita restructuración, el medio campo pide un cerebro a gritos. Jode ver como el Barca se gasta un medio campo de lujo con un par de cracks como Iniesta y Xavi.. en frente de Lass y Gago. No es que sean malos, y debo decir que Lass es el mejor fichaje de esta temporada, pese a su error, a mi gusto ha demostrado ser un jugador más completo que Makelele, pero el Madrid necesita más fútbol, más creación, más visión de juego, más botas que no la rompan sino la acaricien como diría algunos...&lt;br /&gt;Arriba habrá que ver, Robben sigue siendo un crack de sólo minutos (para mí su última temporada de blanco), y eso no funciona, de resto Juande ha montado su improvisación de bandas y el Madrid ha funcionado más con corazón y fuerza, que con fútbol y técnica...&lt;br /&gt;Por último decir, que hace unas semanas se rumoraba Juande entraba en el proyecto de Florentino y Valdano... después de está goleada lo dudo, en Junio se acordaran más de Juande por este resultado que por la racha de 55 puntos invicto..&lt;br /&gt;&lt;br /&gt;A ver que sucede en Junio, mientras suerte al Barca en Champions, la euforia a los pana culé,  para después que aún no hay triplete, y en Londres no creo sea tan sencillo como en Madrid (espero..) así que ha ganar antes de ir a Canaletas a celebrar!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3692315577904584198-6418163212726649576?l=jsangil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jsangil.blogspot.com/feeds/6418163212726649576/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3692315577904584198&amp;postID=6418163212726649576' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/6418163212726649576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/6418163212726649576'/><link rel='alternate' type='text/html' href='http://jsangil.blogspot.com/2009/05/y-vaya-goleada.html' title='Y vaya goleada...'/><author><name>JoseA</name><uri>http://www.blogger.com/profile/16775865669586065551</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-3692315577904584198.post-5035102843806269327</id><published>2009-04-27T23:00:00.002-04:30</published><updated>2009-04-27T23:26:59.193-04:30</updated><title type='text'>La Arquitectura basada en Componentes</title><content type='html'>Acá dejo un documento resultado de una investigación que hice el trimestre pasado para un trabajo.&lt;br /&gt;&lt;br /&gt;Recopila definición, estructura y características sobre la Arquitectura basada en Componentes en los Sistemas de Información. Espero pueda ser útil..&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.scribd.com/doc/14704374/Arquitectura-Basada-en-Componentes"&gt;http://www.scribd.com/doc/14704374/Arquitectura-Basada-en-Componentes&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3692315577904584198-5035102843806269327?l=jsangil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jsangil.blogspot.com/feeds/5035102843806269327/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3692315577904584198&amp;postID=5035102843806269327' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/5035102843806269327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/5035102843806269327'/><link rel='alternate' type='text/html' href='http://jsangil.blogspot.com/2009/04/la-arquitectura-basada-en-componentes.html' title='La Arquitectura basada en Componentes'/><author><name>JoseA</name><uri>http://www.blogger.com/profile/16775865669586065551</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-3692315577904584198.post-4052602288961688050</id><published>2009-04-22T12:07:00.003-04:30</published><updated>2009-04-22T12:40:13.506-04:30</updated><title type='text'>Solución para APPCRASH de firefox</title><content type='html'>Desde hace unos días comencé a tener problemas con el firefox. El navegador generaba el típico error de Windows Vista en donde la aplicación debe cerrarse.&lt;br /&gt;&lt;br /&gt;La descripción del error en detalles era:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:78%;" &gt;Problem Event Name: APPCRASH&lt;br /&gt;Application Name: firefox.exe&lt;br /&gt;Application Version: 1.9.0.3188&lt;br /&gt;Application Timestamp: 48dae60e&lt;br /&gt;Fault Module Name: kernel32.dll&lt;br /&gt;Fault Module Version: 6.0.6001.18000&lt;br /&gt;Fault Module Timestamp: 4791a76d&lt;br /&gt;Exception Code: c0000005&lt;br /&gt;Exception Offset: 0004502e&lt;br /&gt;OS Version: 6.0.6001.2.1.0.768.3&lt;br /&gt;Locale ID: 2057&lt;br /&gt;Additional Information 1: 7a25&lt;br /&gt;Additional Information 2: f7315ad92fc68d23004db97b3539f927&lt;br /&gt;Additional Information 3: 9701&lt;br /&gt;Additional Information 4: 38cb9e108cc68ac023a8e44d1b30eb09&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Este es un error característico de algún conflicto con los complementos instalados en el navegador. Sin embargo, puede no ser la única razón.&lt;br /&gt;&lt;br /&gt;En primera instancia, lo recomendable es seguir la guía básica de mozilla para detectar problemas.  Acá los links:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mozillaes.org/documentacion/index.php?title=Diagn%C3%B3stico_b%C3%A1sico:Mozilla_Firefox"&gt;&lt;span style="text-decoration: underline;"&gt;Diagnóstico Básico&lt;/span&gt;&lt;/a&gt; (Español)&lt;br /&gt;&lt;a href="http://support.mozilla.com/es/kb/Basic+troubleshooting"&gt;Basic Troubleshooting&lt;/a&gt; (Inglés)&lt;br /&gt;&lt;br /&gt;Lo ideal es ir desactivando los complementos (addons) y reiniciando el firefox o iniciando el navegador en &lt;span style="font-style: italic;"&gt;modo seguro &lt;/span&gt;(para que los complementos y preferencias estén desactivadas). Una segunda opción es crear un nuevo perfil de usuario.&lt;br /&gt;Finalmente, se sugiere hacer backup de la carpeta plugins y borrarla del directorio de Mozilla.&lt;br /&gt;&lt;br /&gt;Sugiero leer la guía porque sirve para detectar otros problemas.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;En mi caso, ninguno de los pasos anteriores funcionó. La solución fue&lt;/span&gt; respaldar los marcadores y desinstalar por completo el firefox de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Desinstalar el navegador desde el panel de control&lt;/li&gt;&lt;li&gt;Borrar las carpetas en Archivos de Programa (Program Files) de Mozilla&lt;/li&gt;&lt;li&gt;Limpiar el registro. La guía sugiere usar &lt;a href="http://www.hoverdesk.net/freeware.htm"&gt;RegSeeker&lt;/a&gt;. Yo utilicé &lt;a href="http://www.ccleaner.com/"&gt;CCleaner&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Reiniciar, reinstalar y problema solucionado.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3692315577904584198-4052602288961688050?l=jsangil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jsangil.blogspot.com/feeds/4052602288961688050/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3692315577904584198&amp;postID=4052602288961688050' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/4052602288961688050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/4052602288961688050'/><link rel='alternate' type='text/html' href='http://jsangil.blogspot.com/2009/04/solucion-para-appcrash-de-firefox.html' title='Solución para APPCRASH de firefox'/><author><name>JoseA</name><uri>http://www.blogger.com/profile/16775865669586065551</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-3692315577904584198.post-8943713601498226035</id><published>2009-04-21T01:01:00.005-04:30</published><updated>2009-04-22T12:39:04.527-04:30</updated><title type='text'>Sobre un tuto de photoshop que estoy preparando...</title><content type='html'>Bueno desde hace tiempo empecé a trabajar con una tecnica que aprendí a base de varios tutos de photoshop. La técnica es para hacer texto de fuego.&lt;br /&gt;La usé por primera vez en un prototipo de interface para un sistema de música compartida que estuvimos haciendo en la universidad. Al final esa interface por no sé uso por una larga historia, que puedo resumir en una frase que alguien me dijo..."lo siento si no eres capaz de diseñar algo arrecho a 256 colores"... XD muchas burlas arrastra la frase, el caso es q eso quedó en la historia y he hecho otras pruebas.&lt;br /&gt;&lt;br /&gt;Aunque aún me falta pulirla, desde hace un tiempo decidí hacer un tutorial en español sobre esta.&lt;br /&gt;Si bien mucha gente los pide, en Internet no se consiguen muchos realmente buenos en este idioma.. a ver q sale de esto y si logro un buen resultado..&lt;br /&gt;Mientras coloco unas imagenes con el efecto...&lt;br /&gt;&lt;br /&gt;El banner del sistema de música antes mencionado:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img210.imageshack.us/img210/1779/banner5800.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 800px; height: 156px;" src="http://img210.imageshack.us/img210/1779/banner5800.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Una prueba más reciente con nuevos detalles personales al efecto:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img210.imageshack.us/img210/9986/fuego1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 600px; height: 600px;" src="http://img210.imageshack.us/img210/9986/fuego1.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3692315577904584198-8943713601498226035?l=jsangil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jsangil.blogspot.com/feeds/8943713601498226035/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3692315577904584198&amp;postID=8943713601498226035' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/8943713601498226035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/8943713601498226035'/><link rel='alternate' type='text/html' href='http://jsangil.blogspot.com/2009/04/sobre-un-tuto-que-estoy-preparando.html' title='Sobre un tuto de photoshop que estoy preparando...'/><author><name>JoseA</name><uri>http://www.blogger.com/profile/16775865669586065551</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-3692315577904584198.post-1723680268964888057</id><published>2009-04-21T00:46:00.002-04:30</published><updated>2009-04-21T00:59:21.477-04:30</updated><title type='text'>Wheels &amp; Weapons</title><content type='html'>Bueno el trimestre pasado vi una materia de inteligencia artificial orientada a videojuegos...&lt;br /&gt;nada mal la verdad, trabajamos con una gran cantidad de algoritmos y de paso fue una experiencia adecuada para empezar a trabajar con XNA Studio 3.0..&lt;br /&gt;&lt;br /&gt;Seguiré trabajando un poco más en el juego para tener una versión completamente jugable y publicarla.&lt;br /&gt;&lt;br /&gt;Por acá dejo el video de youtube que hicimos del juego para el final del curso&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=oipsZhU81IM"&gt;http://www.youtube.com/watch?v=oipsZhU81IM&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3692315577904584198-1723680268964888057?l=jsangil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jsangil.blogspot.com/feeds/1723680268964888057/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3692315577904584198&amp;postID=1723680268964888057' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/1723680268964888057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/1723680268964888057'/><link rel='alternate' type='text/html' href='http://jsangil.blogspot.com/2009/04/wheels-weapons.html' title='Wheels &amp; Weapons'/><author><name>JoseA</name><uri>http://www.blogger.com/profile/16775865669586065551</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-3692315577904584198.post-2842454406288604883</id><published>2009-04-09T19:03:00.004-04:30</published><updated>2009-04-09T19:30:42.079-04:30</updated><title type='text'>Mi primera entrada</title><content type='html'>&lt;span style="color: rgb(0, 0, 0);"&gt;Con esta entrada inauguro mi blog... es un proyecto que llevo arrastrando desde hace bastante tiempo... bastaaaaaante tiempo...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Decidí hacerlo hace varios meses, tomé una plantilla de blogspot, empece a modificarla, arme mi perfil, y que puedo decir, tenía pensado crear un material interesante para colocarlo en mi primera entrada.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Sin embargo, las últimas semanas han sido fuertes. Una nueva etapa inicio para mi hace un par de semanas, y en parte alguien para el que este blog tenía una dedicatoria , digamos que ya no está.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Pero, como dice por ahí el título del blog de un amigo "lo que no se escribe muere...", así que decidí inaugurar con este texto. Este blog es de lo que sea, de lo que quiera escribir, con lo q me pueda desahogar y con lo q pueda tripear...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Así que go a head me uno a la blogosfera!!!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;por ahora sólo puedo decir que, además de leer esto, lee mi perfil jejeje... Sólo espero q no lo lea cierto profesor!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3692315577904584198-2842454406288604883?l=jsangil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jsangil.blogspot.com/feeds/2842454406288604883/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3692315577904584198&amp;postID=2842454406288604883' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/2842454406288604883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3692315577904584198/posts/default/2842454406288604883'/><link rel='alternate' type='text/html' href='http://jsangil.blogspot.com/2009/04/mi-primera-entrada.html' title='Mi primera entrada'/><author><name>JoseA</name><uri>http://www.blogger.com/profile/16775865669586065551</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>
