¡¿Dharma Initiative quiere reclutarme?!

Posted on the Enero 14th, 2010 under Humor by nacho

A semanas de comenzar la 6ta temporada de LOST , me vengo a encontrar mientras cargaba nafta en Alsina y Carbó en Paraná con la Van (camionetita) de Dharma Initiative… ¿Cómo llegó ahí? ¿Habrá venido ayer? mmmm… me limité a sacarle fotos por si mis amigos no me creían… ¡aunque fíjense! le falta el Cisne la palabrita Dharma dentro. El cisne era sólo de una de las estaciones. :-P

Milton, no te mueras de la envidia jajaja :-D

Libros sapienciales

Posted on the Octubre 17th, 2009 under General by nacho

Este tema lo escuché nuevamente hace poco tiempo. Me recordó tanto a mi infancia y adolescencia, cuando mi viejo me lo cantaba a cappella, recordando los tiempos en que escuchaba los long play (y los discos que tenían un tema por cara). Eriza la piel…

Imagen de previsualización de YouTube

Aquí la letra para que lo disfruten.

De sol a sol
labrando tierra tendrás tu pan.
Todos los ríos van al mar
pero éste nunca se llenará.
Todos los ríos
siempre volverán a donde salieron
para comenzar a correr de nuevo.
Lo que siempre fue lo mismo será,
lo que siempre hicieron repetirán.
No olvidar
lo que ves ya se ha visto ya,
tal vez un día lo sabrás
todo tiene un tiempo bajo el sol.
Porque habrá siempre
tiempo de plantar y de cosechar
tiempo de hablar, también de callar.
Hay tiempo para guerra y tiempo de paz
tiempo para el tiempo y un rato más.
Buenas y malas son
cosas que vivo hoy.
No es esta tierra, no
sueño color azul.

¿No es quizás que no se mirar?
¿Cuánto, cuánto hay a mi alrededor?
Más de lo que mis ojos pueden mirar
y llegar a ver.
Estas son razones que dicen que:
sólo sé
que sé querer
y que tengo Dios
y tengo fe
y que doy amor
y puedo ser

Sé que en algún lugar
alguien me espera hoy.
Sé que ahora tengo yo
alguien a quien buscar.

¿No es quizás que no se mirar?
¿Cuánto, cuánto hay a mi alrededor?
Más de lo que mis ojos pueden mirar
y llegar a ver.
Estas son razones que dicen que:
sólo sé
que sé querer
y que tengo Dios
y tengo fe
y que doy amor
y puedo ser.

Funciones anónimas recursivas

Posted on the Septiembre 29th, 2009 under Programación Funcional by nacho

lambda_lcHace un tiempo ya que estoy dando clases como ayudante en Paradigmas de Programación. En dicha cátedra se pretende que el alumno tenga una visión con la cuál contemple los problemas a resolver con el paradigma más adecuado. Hay cosas que modelarlas orientadas a objetos o en objetos con Smalltalk, son mucho más sencillas que pensando en el paradigma imperativo. O problemas netamente lógicos, con soluciones recursivas e incluso de naturaleza declarativa, se resuelven mejor con el paradigma lógico, son swi-prolog por ejemplo.

Cabe destacar que los paradigmas, como la palabra lo indica, es una forma de pensar, un patrón, un modelo. Es independiente del lenguaje que usemos. Sin embargo, intentar programar orientado a objetos en C, puede ser más complicado que en C++, en Java o Smalltalk. Lo mismo con el lógico y con el funcional.

Por ejemplo, una de las características del paradigma funcional, es que se basa en el cálculo lambda. Mediante el cálculo lambda puedo definir abstracciones funcionales, las cuales no necesitan tener nombre si sólo quiero evaluarlas una vez. Puedo hacerlo de la forma

 ( (lambda (x) (* x x) )   10)

obteniendo el cuadrado del número.

Luego de la corta introducción, voy al problema que intenté resolver luego de una charla con un docente de la cátedra. En general cuando uno plantea una función recursiva, necesita de un nombre en la función para referenciarla. Por ejemplo:

sumatoria(L):
      si vacia L luego
           0
      sino
           cabeza(L) + sumatoria( cola (L) )

Si quisiera aprovechar lo que me provee el paradigma funcional, el cálculo lambda para abstraer dicha función recursiva para generar otras, me encontraría con el problema que necesito hacer referencia al nombre. Eso podría solucionarlo definiendo varios nombres de funciones. Ej:

(define reduce ( lambda (f d L)
                  (if (null? L)
                      d
                      (f (car L)  (reduce f d (cdr L) ) )
                      )
                  )
  )
(define productoria ( lambda (L) ( reduce * 1 L) ) )
(productoria '(1 2 3 4 5))

Sin embargo sigo atado al espacio de nombres. ¿Podría definir de alguna manera una recursión sin necesitar de un espacio de nombres?

Para esto, pensé en unas soluciones posibles, quizá alguno tenga otras o se le ocurran otras en base a estas.
Podría definir una función, cuyos argumentos son una lista de números (o lo que necesite) y además una copia de si misma. Por ejemplo, veamos la siguiente abstracción funcional:

(lambda (f L)
  (if (null? L)
      0
      (+ (car L) (f f (cdr L) ) )
      )
  )

Esta abstracción, recibe como argumento una abstracción funcional (AF) y una lista. La AF que recibe, espera que se pueda aplicar a dos argumentos que, por lo que se puede ver en la definición, deberá ser una AF y una lista. De esta manera obtendré la recursión, si puedo asignar de alguna manera, una copia de sí misma como primer argumento.

Para esto, creo una nueva abstracción funcional, que aplica una AF como la que definimos a sí misma junto con una lista.

((lambda (f L) (f f L)) (lambda (f L)
                          (if (null? L)
                              0
                              (+ (car L) (f f (cdr L)) )
                              )
                          ) '(1 2 3 4 5))

Da como resultado 15.

Un concepto similar, pero ya con un espacio de nombres sería el siguiente:

( define t (lambda (f L)
             (if (null? L)
                 0
                 (+ (car L) (f f (cdr L))   )
                 )
             ) )
(t t '(1 2 3 4 5))

Otra forma de hacerlo, pero utilizando sólo un argumento y siguiendo la misma idea sería

(((lambda (f) (f f) ) (lambda (f)
                        (lambda (L)
                          (if (null? L)
                              0
                              (+ (car L) ((f f) (cdr L)) )
                              )
                          )
                        )) '( 1 2 3 4 5))

Personalmente creo que ésta última forma de declararlo es la más clara y entendible. Podríamos abstraer más en este caso la aplicación quitando el valor por defecto 0, y el “+”, obteniendo una función fold o reduce sin nombre :-) . Leyendo un poco en Internet, luego de un tiempo encontré lo que se conoce como Y combinator.
Más info en http://goodmath.blogspot.com/2006/05/why-oh-why-y.html.

Si tienen alternativas u otras curiosidades que les interese discutir, ¡adelante!

Eliminar contenido XSS (cross site scripting)

Posted on the Septiembre 21st, 2009 under GNU/Linux,Software Libre by nacho

Mini post:

Encontré en uno de los sitios web que mantengo, un código de XSS (cross site scripting). Aún no determiné el punto de entrada, pero me enteré gracias a un mail de Google.

Con grep y sed es bastante sencillo eliminarlo, ni que hablar con un script en Python :-P

Con grep busco los archivos, y con xargs convierto la salida el pipe en un parámetro para sed, y con sed reemplazo el código. Como el código insertado está al final del archivo, la expresión regular hubiese podido ser mucho más sencilla.

grep ./ -l  -R -e "http://reycross.com/lib/index.php"  | xargs sed -i  -e "s/<iframe.*reycross.*>.*<\/iframe>/ /g"

El código a eliminar era este (no agrego los tags de apertura a propósito):

iframe
src="http://reycross.com/lib/index.php" width=0 height=0 style="hidden" framebord
er=0 marginheight=0 marginwidth=0 scrolling=no
iframe

¿Alguien que le haya ocurrido esto?

¿Necesitan los sitios web verse igual en cada navegador?

Posted on the Septiembre 18th, 2009 under Aplicaciones Web by nacho

browsers-iconsSegún explican en el enlace que les dejo debajo, la respuesta es clara y concisa para la pregunta: ¿Necesitan los sitios web verse igual en cada navegador?

¿Ustedes? ¿Qué opinan?

http://dowebsitesneedtolookexactlythesameineverybrowser.com/

(más claro echale agua)

çíàêîìñòâà íà êàâìèíâîäàõ
ïîðíî ñàéò çâåçä øîó áèçíåññà
Îíëàéí êóïèòü â åêàòåðèíáóðãå Ëåâèòðà
ìåíþ äëÿ äèåòû ïî 3 ãðóïïå êðîâè
êóïèòü äæåíåðèê ñèàëèñ ñîôò
äèåòà þ.íà÷àëîâîé
çíàêîìñòâà àáõàçèÿ
ñëóæáà çíàêîìñòâ íèæíèé íîâãîðîä
Íèçêàÿ öåíà êóïèòü â ìîñêâå Çèáàí
î÷êîâàÿ äèåòà
ðåçóëüòàòû ïîõóäåíèÿ è îçäîðîâëåíèÿ ñ ïîìîùüþ ãåðáàëàéô
ìàäè 24 çíàêîìñòâà
Íå äîðîãî êóïèòü â ñàìàðå Ñèàëèñ Ñîôò
ñâèíãåð çíàêîìñòâà â êðàñíîÿðñêå
äèåòà 2 ãðóïïå êðîâè
ðåöåïòû áåññîëåâîé äèåòû
äèåòà àëñó êîôå è øîêîëàä
ôîðóì îâîùíàÿ äèåòà
ftp ñêà÷àòü ïîðíî äëÿ ñìàòôîíà
ðîñòîâ ïîðíî
çíàêîìñòâà òîðîíòî
äèåòà î÷èñòêà êèøå÷íèêà
ïåðåäà÷à ïåðâîãî êàíàëà ìàëàõîâ ïëþñ ïåðåäà÷à âîçìîæíîñòÿõ ïîõóäåíèè
àñüêàçíàêîìñòâà
ïîðíî ñ ÷å÷åíêàìè
çíàêîìñòâà äèòåé 10-14 ëåò
êðåìëåâñêàÿ äèåòà ïî äíÿì
ëå÷åíèå èìïîòåíöèè ñèàëèñ ëåâèòðà âèàãðà ñðàâíèòåëüíûå öåíû
åêàòåðèíáóðã ñèàëèñ
ïîðíîãðàôè÷åñêîå âèäåî ëåñáèÿíîê
ÿòðûøíèê ïîòåíöèÿ
ïðîñòàòèëåí äåéñòâèå
çíàêîìñòâî â êðàñíûõ áàêàõ
ñåêñ çíàêîìñòâà â íèæíåâàðòîâñêå
êëèîí ä ñòîèìîñòü
ïîðíî ðîëèê äîñòóïíûå
ðåöåïò íàñòîéêè äëÿ ïîõóäåíèÿ ëèñòâåííûé ãðèá òðóòîâèê
ïðåâüþ ôîðóì ïîðíî ññûëêè
ðàñêàçû äåòñêîãî ïîðíî
ïîðíî xxx çàãðóçèòü
êàâêàçñêèå ñàéòû çíàêîìñòâ
êðåìëåâñêàÿ äèåòà ôîðóì åâãåíèé ÷åðíûõ
ïîçíàêîìëþñü ñî ñòåðâîé
öèí öèí ïîõóäåíèå
ïîðíî ñààêàøâèëè ñêà÷àòü
âûñîêîïàðíûå ôðàçû äëÿ çíàêîìñòâà
ãåé çíàêîìñòâà íåãðû
êaê ïîõóäåòü ía 10 êã ça 8 äíåé
ðàäìèëà àíêåòà çíàêîìñòâà
çäîðîâüå ïî÷êè äèåòà
Ñðî÷íî êóïèòü â Íîâîñèáèðñêå Ñèàëèñ
çíàêîìñòâî c àíãëè÷àíèíîì
Äåøåâî ñòîèìîñòü âèàãðà 50 ìã
ãîä çíàêîìñòâà îòâåòèòü
Àíîíèìíî êóïèòü â ïèòåðå ïîâûøåíèå ïîòåíöèè
ñàìûå ëóäøèå äèåòû
Online ïðèîáðåñòè âèàãðà òàáëåòêè
àðáóçíàÿ äèåòà ôîðóì
Àïòåêà êóïèòü â îìñêå ñðåäñòâî ïîâûøåíèÿ ïîòåíöèè
âîëãîôàðì ñèàëèñ ñîôò
ãåé ïîðíî êëèïû ñêà÷àòü
êàáà÷êîâàÿ äèåòà
êàëîðèè äèåòà ñêà÷àòü êîìïüþòåðíûå ïðîãðàììû
ýôôåêòèâíîñòü áàíàíîâîé äèåòû
òåðæèíàí íà ðàííèõ ñðîêàõ áåðåìåííîñòè
Online êóïèò â ðîññèè ïîâûøåíèå ïîòåíöèè
çíàêîìñòâà 8 903
äåâ÷îíêè ðîñòîâà ïîçíàêîìèòüñÿ
êóðèíûé áóëüîí ïîõóäåíèå
ãäå ïîçíàêîìèòüñÿ â ìîñêâå
àëêîãîëü è ñåàëåêñ
êàê ïîçíàêîìèëèñü àëôåðîâà è àáäóëîâ
 êàêîé àïòåêå êóïèòü â Íîâîñèáèðñêå èíäèéñêàÿ âèàãðà
ïîðíî ÷àñòíîå çíàìåíèòîñòåé
ýêñòðåííûå ìåòîäû ïîõóäåíèÿ
çíàêîìñòâà òðàíñû äîíåöê
Ñðî÷íî ñòîèìîñòü Ñèàëèñ Ñîôò
 êàêîé àïòåêå êóïèòü â ñàíêò ïåòåðáóðãå Âèàãðà
êðàñèâûå ïîðíî äåâóøêè êèåâ
çíàêîìñòâà ðèììèíã
ñêà÷àòü êíèãó äèåòà íà êàïóñòíîì ñóïå
ëåñòàò ôîòî
ïîðíî ñ òîëñòûìè îò 40 äî 50 ëåò
áûñòðî ïîõóäåòü ïîñëå ðîäîâ
Áåç ðåöåïòà êóïèòü äåøåâóþ âèàãðà òàáëåòêè
áûñòðûå íå èçíóðèòåëüíûå äèåòû
çíàêîìñòâà ã.âîëîãäà
âèàãðà àïòåêà êðàñíîÿðñê
Îíëàéí êóïëþ âèàãðó ñèàëèñ ëåâèòðó
êîäèðîâàíèå ïðè ïîõóäåíèè
ïîìî8ãàåò ëè áîäèìèðèí ðåàëüíî ïîõóäåòü
ïîðíî âèäåîêëèïû ñêà÷àòü
àâñòðàëèÿ ðóñêîÿçû÷íûé ñàéò çíàêîìñòâà
äåéñòâîâàòü äæåíåðèê ñèàëèñ ñîôò
äèåòà õîðîøèõ íîâîñòåé
ýôôåêòèâíî ïîõóäåòü çà ìàêñèìàëüíî êîðîòêèé ñðîê
äèåòà 90
ñêà÷àòü ñóïåð äèåòó
çíàêîìñòâà ñ áèñåêñóàëàìè
çíàêîìñòâà â ã.êñòîâî