<?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-6650267751230594604</id><updated>2011-08-03T12:15:02.929-07:00</updated><title type='text'>Ocurr3ncias</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ansiedadextrema.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6650267751230594604/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ansiedadextrema.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>fr31</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_eHyzn-CBS_U/SsYI0NU6YvI/AAAAAAAAACA/sFBppvxpVNw/S220/avatar.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6650267751230594604.post-3662890560065220709</id><published>2010-06-25T07:20:00.000-07:00</published><updated>2010-06-29T01:24:54.130-07:00</updated><title type='text'>La insoportable levedad del método ausente</title><content type='html'>&lt;div style="text-align: justify;"&gt;Una de las cosas que más me gusta hacer cuando programo en lenguajes interpretados es el hecho de generar métodos nuevos al vuelo; en concreto y gracias al missing_method de Ruby o al AUTOLOAD de Perl, es posible construir de forma dinámica los métodos que necesitamos a medida en que los invocamos sin tener que preocuparnos de su implementación explícita.&lt;br /&gt;&lt;br /&gt;Un ejemplo ilustrativo podría basarse en una interfaz con una BBDD SQL, dónde a partir de un convenio de nomenclatura de métodos ... &lt;i&gt;tabla&lt;/i&gt;_&lt;i&gt;campo&lt;/i&gt;_where_&lt;i&gt;campo&lt;/i&gt;(&lt;i&gt;condiciones&lt;/i&gt;) obtenemos y ejecutamos la consulta deseada.&lt;br /&gt;&lt;br /&gt;De ese modo, a medida en que vamos ejecutando consultas se van generando los nuevos métodos de forma automática, tras una primera llamada, el método deja de ser missing_method y pasa a formar parte de la instancia de la interfaz. El código de la interfaz a continuación:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_eHyzn-CBS_U/TCS2U51f6DI/AAAAAAAAADk/6cGtepo7xGI/s1600/generator.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="572" src="http://1.bp.blogspot.com/_eHyzn-CBS_U/TCS2U51f6DI/AAAAAAAAADk/6cGtepo7xGI/s640/generator.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;La gracia reside en el hecho de &amp;nbsp;que si utilizamos el método ausente missing_method atrápalo todo de Ruby ... de este modo:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/_eHyzn-CBS_U/TCS5m2OpQkI/AAAAAAAAADs/nVAqhRdaoaM/s1600/main.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_eHyzn-CBS_U/TCS5m2OpQkI/AAAAAAAAADs/nVAqhRdaoaM/s320/main.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Obtenemos al siguiente respuesta:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/_eHyzn-CBS_U/TCS5swK9JpI/AAAAAAAAAD0/MJkO94AyC0o/s1600/out.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="426" src="http://3.bp.blogspot.com/_eHyzn-CBS_U/TCS5swK9JpI/AAAAAAAAAD0/MJkO94AyC0o/s640/out.png" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Es decir, en la primera llamada parsea el nombre del método invocado inexistente u&lt;b&gt;ser_passwords_where_id &lt;/b&gt;... a continuación empieza a construir la consulta SQL, finaliza generando el método que falta ... precisamente el invocado haciendo &lt;b&gt;eval method_d&amp;nbsp;&lt;/b&gt;pues method_d ya contiene toda la magia negra del truco por muy feo que parezca y&amp;nbsp;a partir de ahí deja de ser un m&lt;b&gt;issing_method &lt;/b&gt;como se puede comprobar en la siguiente&amp;nbsp;llamada ... :)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Dedicado a Paul Graham del que no entendí nada de lo que decía cuando leía sus libros.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6650267751230594604-3662890560065220709?l=ansiedadextrema.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ansiedadextrema.blogspot.com/feeds/3662890560065220709/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://ansiedadextrema.blogspot.com/2010/06/la-insoportable-levedad-del-metodo.html#comment-form' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6650267751230594604/posts/default/3662890560065220709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6650267751230594604/posts/default/3662890560065220709'/><link rel='alternate' type='text/html' href='http://ansiedadextrema.blogspot.com/2010/06/la-insoportable-levedad-del-metodo.html' title='La insoportable levedad del método ausente'/><author><name>fr31</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_eHyzn-CBS_U/SsYI0NU6YvI/AAAAAAAAACA/sFBppvxpVNw/S220/avatar.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_eHyzn-CBS_U/TCS2U51f6DI/AAAAAAAAADk/6cGtepo7xGI/s72-c/generator.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6650267751230594604.post-6687733148216715339</id><published>2010-04-16T06:38:00.000-07:00</published><updated>2010-04-16T06:42:20.952-07:00</updated><title type='text'>Facebook y el nulo valor añadido</title><content type='html'>Pregunta: ¿ qué aporta facebook ? - Ancho de banda, y espacio en disco para compartir cosas.&lt;br /&gt;&lt;br /&gt;Pregunta: ¿ qué cobra facebook a cambio ? - Una interfaz deplorable, nos bombardea con publicidad, es complejo entender las implicaciones y configuraciones de privacidad (lo hacen premeditadamente para de ese modo poder traficar con los datos que introducimos y revender explotación de estudios de marketing, etc ... etc ...) y además a mi personalmente me produce gran desconfianza que una sola compañia controle el modo y el contexto en el que una masa tan ingente de usarios se comunica.&lt;br /&gt;&lt;br /&gt;Y bien, si pagamos ancho de banda para conectarnos y todos tenemos del orden de 100 GB encima de la mesa por qué puñetas para acceder al contenido de una película usamos P2P no centralizado y para comunicarnos con la familia y los amigos caemos en la trampa de vender nuestras intimidades a una multinacional perversa que trafica con nuestra información personal en el mercado persa del marketing 2.0 ?&lt;br /&gt;&lt;br /&gt;Google aporta algo, y eso es computación masiva para indexar esta biblioteca de alejandría básicamente (su buscador) por eso estoy dispuesto a tragarme su publicidad. Facebook no aporta más que espacio en disco y ancho de banda; pero eso ya lo tengo encima de la mesa !!!! no lo necesito !!!! y creo que el precio a pagar por recomprar lo mismo 2 veces es muy alto.&lt;br /&gt;&lt;br /&gt;Existen alternativas mucho más sugerentes googlead y las vereis http://osiris.kodeware.net/ y https://jxta.dev.java.net/ liberemos la plataforma ... no pago 70 euros mensuales a telefonica para que Facebook trafique además con mis datos. &lt;br /&gt;&lt;br /&gt;Redes sociales P2P no centralizadas, intentaré hacer experimentos con ellas, lo demás es pura basura que afortunadamente está condenada a desaparecer o a convertirse en la peor pesadilla que Orwell pudo tener.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6650267751230594604-6687733148216715339?l=ansiedadextrema.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ansiedadextrema.blogspot.com/feeds/6687733148216715339/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://ansiedadextrema.blogspot.com/2010/04/facebook-y-el-nulo-valor-anadido.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6650267751230594604/posts/default/6687733148216715339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6650267751230594604/posts/default/6687733148216715339'/><link rel='alternate' type='text/html' href='http://ansiedadextrema.blogspot.com/2010/04/facebook-y-el-nulo-valor-anadido.html' title='Facebook y el nulo valor añadido'/><author><name>fr31</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_eHyzn-CBS_U/SsYI0NU6YvI/AAAAAAAAACA/sFBppvxpVNw/S220/avatar.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6650267751230594604.post-3968327174641423214</id><published>2009-10-02T08:25:00.000-07:00</published><updated>2009-10-02T09:45:26.353-07:00</updated><title type='text'>Terapia de snoozing</title><content type='html'>&lt;span style="font-style:italic;"&gt;... no he tenido más remedio que levantarme a las 7:45 preguntándome sin cesar que efecto o predisposición psicológica puede generar en un individuo la interrupción del sueño siguiendo un compás rítmico de intervalos regulares justo antes de despertar ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hoy por la mañana he tenido un ataque de síndrome de Stendhal matemático ... y no, no he visto ninguna maldita bolsa de plástico arrastrada por el viento ... no se trata de eso ...&lt;br /&gt;&lt;br /&gt;Ayer le pedí a mi móvil que me despertase a las 6:30 AM pero como tenía que hacer cosas importantes y para no quedarme dormido decidí&lt;br /&gt;programar algunos despertadores más (la memoria puede albergar hasta un total de 10 alarmas) en concreto un par más a las 6:35 y a las 6:40.&lt;br /&gt;&lt;br /&gt;El período de snooze por defecto es de 9 minutos y yo lo uso a menudo; de modo que esta mañana al sonar la alarma a las 6:30, le he dado al snooze sin ser demasiado consciente de que estaba desencadenando el ataque de Stendhal que os comento si eso ...&lt;br /&gt;&lt;br /&gt;... siguiente bip-bip-bip a las 6:35, un ratito más de sueño ... pero en ésta ocasión sólo hasta las 6:39 (4 minutos de tregua) para culminar a las 6:40 cuando otra vez tengo que darle al botoncito.&lt;br /&gt;&lt;br /&gt;La serie resultante de snooze-timings es la siguiente:&lt;br /&gt;&lt;br /&gt;5, 4, 1, 4, 4, 1, 4, 4, 1, 4, 4, 1, 4, 4, 1, ....&lt;br /&gt;&lt;br /&gt;... no hace falta decir que la he seguido maravillado entre ensoñaciones hasta que su delicioso régimen periódico se ha manifestado con tal fuerza - sí, a esas horas soy aún más corto - que hasta mi adormilada mente no ha tenido más remedio que depertar a las 7:45 preguntándome sin cesar que efecto o predisposición psicológica puede generar en un individuo la interrupción del sueño siguiendo un compás rítmico de intervalos regulares justo antes del amanecer del mismo modo que el beat de una canción nos anima a mover los pies para acabar bailando cuando la escuchamos.&lt;br /&gt;&lt;br /&gt;Sigo pensando en ello cuando empiezo a escribir snooze.pl ...&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;my $alarms = {al1 =&gt; { start =&gt; 2,  period =&gt; 13},&lt;br /&gt;          al2 =&gt; { start =&gt; 3,  period =&gt; 4},&lt;br /&gt;           al2 =&gt; { start =&gt; 5,  period =&gt; 7},};&lt;br /&gt;my $buzzs = {};&lt;br /&gt;my $end_time = 300;&lt;br /&gt;&lt;br /&gt;foreach my $time ( 0..$end_time ) {&lt;br /&gt;  foreach my $key ( keys %{$alarms} ) {&lt;br /&gt;    next if ( $time &lt; $alarms-&gt;{$key}{start} );&lt;br /&gt;    ( ! ( ($time - $alarms-&gt;{$key}{start}) % $alarms-&gt;{$key}{period} ) ) ?&lt;br /&gt;      $buzzs-&gt;{$time} = 1 : ();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;map { print "$_\n"; } sort { $a &lt;=&gt; $b } keys %{$buzzs};&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;... espero poder reconfigurar el móvil para programar distintos tiempos de snoozing y de ese modo mañana ajustar la primera alarma a las 6:32 con un tiempo de 13 minutos entre alarmas, la segunda a las 6:33 con un snooze a 4 minutos y la última a las 6:35 con periodicidad de 7 minutos generando la serie de intervalos de sueño:&lt;br /&gt;&lt;br /&gt;1, 2, 2, 4, 1, 3, 4, 4, 3, 1, 1, 3, 2, 2, 4, 1, 1, 2, 4, 4, 3, 1, 4, ...&lt;br /&gt;&lt;br /&gt;lo que no dejo de preguntarme es la hora de levantarme además del humor que tendré si decido no hacerlo hasta que de nuevo perciba la periodicidad de la secuencia de snoozes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6650267751230594604-3968327174641423214?l=ansiedadextrema.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ansiedadextrema.blogspot.com/feeds/3968327174641423214/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://ansiedadextrema.blogspot.com/2009/10/terapia-de-snoozing.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6650267751230594604/posts/default/3968327174641423214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6650267751230594604/posts/default/3968327174641423214'/><link rel='alternate' type='text/html' href='http://ansiedadextrema.blogspot.com/2009/10/terapia-de-snoozing.html' title='Terapia de snoozing'/><author><name>fr31</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_eHyzn-CBS_U/SsYI0NU6YvI/AAAAAAAAACA/sFBppvxpVNw/S220/avatar.jpg'/></author><thr:total>0</thr:total></entry></feed>
