PDF de programación - CaFePerl Issue0a

Imágen de pdf CaFePerl Issue0a

CaFePerl Issue0agráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 8 de Marzo del 2018)
330 visualizaciones desde el 8 de Marzo del 2018
224,6 KB
13 paginas
Creado hace 18a (02/02/2006)
Periódico de la Comunidad Perl
de Capital Federal

http://cafe.pm.org/boletines/

Cafe Perl v0.a

CaFe Perl v0.a - Periódico de la Comunidad
Perl de Capital Federal

Editorial

Hola Perl Mongers, bienvenidos a un nuevo número de CaFe Perl !!

Esta vez tenemos grandes novedades. Para empezar a partir de este número hay un nuevo
colaborador de CaFe Perl, alguien que ven a menudo en la lista, y ese alguien es Martín
Ferrari que a partir de ahora va a llevar la sección Peace of Code, pero ya no como un
ejercicio para hacer durante el mes sino como una serie de one-liners muy interesantes.
Martín : bienvenido y que lo disfrutes.

Por otra parte nuestra sección PERLitas nos trae una entrevista con Patrick Rael, quién está
en proceso de creación de un robot. También la sección “Mordiditas...” nos trae una inmersión
en el mundo de la precedencia de operadores.

Espero que lo disfruten.
Hasta la próxima taza de CaFe Perl !!! ... eso sí, café del bueno ;-).

Víctor A. Rodríguez (Bit-Man)

POC (peace of code)

Antes que nada las respuestas a las preguntas del número anterior :

my $home = $ENV{HOME}

|| $ENV{LOGDIR}
|| (getpwuid($<))[7]
|| die “Homeless boy\n”

• qué significado tiene el hash %ENV ?? : permite el acceso de la variables de ambiente

del sistema operativo (como PATH, HOME, etc.)

• qué son $ENV{HOME} y $ENV{LOGDIR} ?? : contienen

los valores de los paths

correspondientes al directorio home y al de logs

• que devuelve la función getpwuid() ?? : permite obtener una serie de datos del usuario

cuyo UID es pasado a la funciín getpwuid() (en particular el octavo es el home dir0

• qué contiene la variable $< ?? : el user id (UID) real del proceso actual
• qué significado tiene el valor alojado en $home ?? : el path del home directory del

usuario actual

Ahora el peace of code de esta semana : inspeccionar la estructura de un HTML.

Útil para cuando estamos haciendo alguna mecanización de una página, y necesitamos ver
sintéticamente el árbol de elementos. Luego solemos usar el mismo TreeBuilder para extraer
datos y eso.

Toma por entrada estándar el html y escupe un árbol de elementos.

perl -MHTML::TreeBuilder -e '$t = HTML::TreeBuilder->new; while(<>)
{$t->parse($_) }; $t->eof; print $t->dump'

Ejemplo, leer la página de google no es apto para cardíacos, pero este script lo hace más
fácil. Aquí uso algunas cosas que bien podría poner dentro del one-liner, pero no tiene
sentido, es preferible esperar un segundo más y escribir menos!

Explicación: obtengo el html de google.com, lo convierto de iso-8859-1 (el encoding por
default para argentina devuelto por google) a nuestro locale en uso, y luego se lo paso a perl.

$ GET http://google.com/ | iconv -f iso-8859-1 | perl
-MHTML::TreeBuilder -e '$t = HTML::TreeBuilder->new; while(<>) {$t-
>parse($_) }; $t->eof; print $t->dump'
<html> @0

<head> @0.0

<meta content="text/html; charset=ISO-8859-1"

http-equiv="content-type"> @0.0.0

<title> @0.0.1

"Google"

<style> @0.0.2

"<!--\x0abody,td,a,p,.h{font-family:arial,sans-serif;}\x0a.h

{font-size:
..."

<script> @0.0.3

"\x0a<!--\x0afunction sf(){document.f.q.focus();}\x0a// --

>\x0a"

<body alink="#ff0000" bgcolor="#ffffff" link="#0000cc"

marginheight=3 onload="sf()" text="#000000" topmargin=3
vlink="#551a8b"> @0.1

PERLitas
Entrevista y traducción realizada por Víctor A. Rodríguez
Robot Maximilian ( http://howtoandroid.com/ ) es una cabeza de robot computerizada, que fue
hecha por Patrick Rael para ... mejor vemos lo que tiene que decir y qué nos puede enseñar.

Por favor Patrick, una introducción para el grupo CaFe.pm
Hola a los miembros de CaFe.pm. Mi nombre es Patrick Rael. Me gusta experimentar con
androides. Cualquiera que me conoce sabe que me gusta desdibujar la línea entre las
computadoras y el mundo real. El mundo es un kernel, y nosotros somos procesos.

Cuál fue su motivación para construir a "Robot Maximilian" ??
Tuve dos motivaciones. (1) Tengo el sueño de que un algún día las computadoras serán
súper fáciles de usar. “Súper fácil” entendido como trivial. Robot Max es un intento parcial de
crear una computadora que es trivial de usar. En ese sentido, R.Max es un trabajo en
progreso. Todavía no hay programación alguna para su mente. (2) Otra motivación es
resolver el reto de crear una mente robótica que podría demostrar ser
inteligente y
consciente. Esto también es un trabajo en progreso.

Hace siete años hice algún diseño de alto nivel para un modelo de mente robótica auto-
consciente. Lo llamo M11. Pero hasta recientemente no la llevé hasta el siguiente nivel. Hace
muy poco, tuve una idea de cómo implementar M1 #9 que es “el foco”. La idea es curiosa
porque es una idea visual. O sea, pueda verla en mi mente. Ahora estoy analizando esa
imagen y descomponiéndola en algo que pueda ser puesto en palabras. A veces pienso
visualmente. La idea es cobre una forma de mantener el foco en una idea sobre un período
de tiempo T. La idea se enlaza con la figura en ese documento M1 que muestra un lazo de
realimentación en la mente de los robots. Creo que ahora veo cómo diseñar “el foco” y la
conciencia, todo basado en esa figura en mi mente.

Y hablando sobre la mente de M1 ... la implementaría en Perl ?? Qué lenguaje cree que
es el más calificado para esta tarea ??
Normalmente hago prototipo en Perl de la mayoría de las cosas que hago porque es un buen
lenguaje para hacer algo rápido. Perl será mi primer elección para M1 a esta altura. Sin
embargo, M1 es deliberadamente vago ya que sólo dice que se necesitan diez piezas.
Cualquiera podría modelar M1 en una tarde pero eso no garantiza que el robot alcance la
auto-conciencia y sentiencia. Todo es acerca de cómo sea modelado M1 para llegar a ser una
mente viviente. Ese es el reto.

Encontré algunos módulos de perl para redes Neuronales en CPAN. Son muy interesante.
Estoy comenzando a jugar con ellos. También encontré el programa C llamado “motion” para
Linux. Es n lindo programa que puede ser usada para detectar movimiento en las imágenes
de las webcams y colocar un cuadrado alrededor del area que va cambiando. Creo que lo voy
a adoptar para que R.Max mueva sus ojos cámara centrados en el movimiento. A este punto
temprano en la exploración de M1, usaré cualquier lenguaje que sea conveniente hasta que
el diseño se solidifique.

Tiene alguna ayuda de otros proyectos Open Source ?? (código, consejos, etc.)
Me gusta usar Open Source y software libre en todo lo que hago y en la medida de lo posible.
Perl, Linux, herramientas GNU, Java y miles de otros freeware. La herramientas Open Source
son indispensable para el trabajo que hago.

1 N. del T. el

resto de la pregunta se

basa en la arquitectura de M1

(http://howtoandroid.com/Architecture.html)

Qué habilidades, relacionadas con Perl o no, obtuvo mientras hacía este proyecto ??
Aprendí Perl/Tk, javax.comm y algunos trucos de stty. Creo que el truco de stty es uno de los
más contra-intuitivos. Lo que quiero decir es que, seguramente cualquiera que usa Unix
puede ejecutar un programa y redireccionar la entrada desde un archivo. El resultado es que
el contenido del archivo es procesado por el programa. Pero en cambio se puede pensar en
ejecutar un programa y redireccionar la entrada desde un archivo, PERO NO SE INGRESA
NI UN SOLO CARACTER DE ESE ARCHIVO NI SE PIENSA HACERLO ? Eso es extraño.

El comando stty que está abajo es sólo un ejemplo :

% stty 9600 cs8 -parenb -cstopb < /dev/ttyS0

Encontré este truco en el libro "Tricks of the Unix Masters"1, sobre el final donde hay varias
páginas de poderosos “one-liners”2 listados. Este programa manipula “datos”, pero no los
datos en el archivo.

Qué consejo le daría a los futuros diseñadores y hobistas que enfrentan un nuevo proyecto
??
1. Ve por él!

2. Nunca dejes que la intratabilidad te desacelere

3. Nunca pospongas hasta mañana lo que tu androide puede hacer durante la noche

4. Los robots hacen el trabajo duro (la llamo la ley de Pat de la Robótica)

5. Una costura3 a tiempo salva nueve dimensiones temporales

En qué partes del código le aconsejaría mirar al codificador novato de Perl, para tener
una experiencia placentera de aprendizaje ??
Para RobotControl, que es perl, diría que lo más divertido no está siquiera en el código perl.
De otro ejemplo en mi site web http://HowToAndroid.com/RobotControl-PerlTk.html, las cuatro
líneas de Unix que están sobre el ejemplo son interesantes. Por ejemplo, si ejecutas
RobotControl y no enviás la salida a través del port serial, o dejás que la salida vaya a tu
terminal, podés arruinar la terminal. Si
lo hacés todo lo que escribas se van a ver como
garabatos, entonces intentá el truco de escribir ^Jreset^j. Estos son los 7 caracteres a
escribir, y no buscar el reset de tu computadora.

De otra forma, dentro de RobotControl, diría que en el manejo de eventos, la callback modelo
de las aplicaciones Perl/Tk es interesante y también los es la sub scale_cb(), la subrutina que
es llamada cuando el usuario arrastra uno de los controles en la gui para ajustar el servo a
una nueva posición. RobotControl
tiene tan pocas líneas porque el circuito Mini-SSC-II
establece una conexión serial y un protocolo de paquetes de 3 bytes para mover los servos.
Dado este protocolo de 3 bytes, incluso podría controlarse los servos desde el shell. El primer
byte identifica el inicio del paquete, el siguiente el ID del servo, y el último es la posición de
0..255 para mover el servo.

Cómo se puede colaborar con "Robot Maxamilian" ??

1 N. del T. : Trucos de los amos de Unix
2 N. del T. : programas o comandos que resuelven un problema en una sola línea
3 N. del T. : stitch

Actualmente, mi propio Robot Max es mi trabajo en curso. Sin embargo, sugiero que si otros
están interesados, pueden construir si propio R.Max. Tengo muchos e-mails de gente
diciendo que van a hacer exactamente eso: hacer su propio R.Max. Les digo que lo hagan,
que tengan mucha suerte y diversión.

Que funcionalidades no están implementadas, y cuáles cree que agregará pronto ??
La prog
  • Links de descarga
http://lwp-l.com/pdf9325

Comentarios de: CaFePerl Issue0a (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad