Charlas PC++
Sunday, September 12, 2010
Se trataron los siguientes temas: Seguridad WiFi, Introducción a Arduino, jQuery & JSON, Introducción a Rails, y por último, introducción a la programación de microcontroladores.
Se trataron los siguientes temas: Seguridad WiFi, Introducción a Arduino, jQuery & JSON, Introducción a Rails, y por último, introducción a la programación de microcontroladores.

Ayer arrancó JDS2010, un evento de entrada libre y gratuita donde varios disertantes hablarán y se discutirá sobre variados tópicos, desde Botnets, pasando por GPG para dummies, Arduino y Hardware Libre.
Aquí el cronograma.
El evento comenzó ayer 14, y finaliza el 16 de Agosto en Bahia Blanca, Universidad del Sur, Altos de Palihue.
Quien tenga la oportunidad, no se lo pierda, hay tópicos deliciosos.
Transmisión en vivo aquí.
Antes que nada, dbpedia es un dump de casi toda la información organizada en Wikipedia (infoboxes y categorías).
En dbpedia crearon una versión RDF (Triple Stores) de todo eso. Hasta hace poco, los triple stores tenian problemas de escalabilidad, pero en el WWW2007 muchas personas y organizaciones aseguraron que podrían tratar con varios miles de millones de triples.
En este articulo, accederemos a dbpedia desde la interfaz web de SNORQL. Se sugiere seguir los pasos mientras se lee, nótese que la sintaxis puede volverse algo confusa por momentos, pero si les interesa, se acostumbrarán. [...]
* Nota del traductor: En el artículo original se utiliza Uppsala como ejemplo, en ésta traducción, usaremos Buenos Aires.
Un triple es algo así:
Sujeto – Predicado – Objeto
y alguno o todos los componentes pueden ser URIs absolutos, aquí un ejemplo (en notación N3)
SELECT * WHERE {
:Jorge_Luis_Borges ?predicado :Buenos_Aires .
}
Aquí estamos consultando, que relación tiene Borges con Buenos Aires.
(Nótese que la sintáxis no es exactamente SQL, y no debe omitirse el ‘.’ al final).
El resultado de la consulta anterior es, por ejemplo:
dbpedia2:birthPlace
En términos simples, esto dice que en DBpedia, resource/Jorge_Luis_Borges es el sujeto, birthPlace (Lugar de nacimiento) es el predicado y resource/Buenos_Aires es el objeto.
Esos son simbolos para los nodos en el triple store de dbpedia (graph) y hasta ahora no tiene forma lexica ni semantica.
De todas formas, no sorprende que los humanos podamos interpretar ésto como:
El “Lugar de Nacimiento” de “Jorge Luis Borges” es “Buenos Aires”. dbpedia (y Wikipedia) agregan anotaciones legibles por humanos a éstos componentes para que podamos efectivamente afirmar que “Jorge Luis Borges nació en Buenos Aires”.
Ahora, vamos a ver en qué otras situaciones aparece Buenos Aires como Sujeto y Objeto en dbpedia (Es poco probable que sea un predicado), para comodidad y fácil lectura, se usan prefijos (Prefixes)
PREFIX : <http://dbpedia.org/resource/>
PREFIX dbpedia2: <http://dbpedia.org/property/>
PREFIX dbpedia: <http://dbpedia.org/>
Así, <http://dbpedia.org/resource/Buenos_Aires> pasa a ser :Buenos_Aires
y <http://dbpedia.org/propoerty/birthplace> sería dbpedia2:birthplace
dbpedia tiene varios URIs de nomenclaciones bien reconocidos y SNORQL preconfigura varios como prefijos:
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX : <http://dbpedia.org/resource/>
PREFIX dbpedia2: <http://dbpedia.org/property/>
PREFIX dbpedia: <http://dbpedia.org/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
Entonces, practiquemos una consulta sencilla – “listar todos los triples donde :Buenos_Aires sea el sujeto”
SELECT * WHERE {
:Buenos_Aires ?predicado ?objeto .
}
Esto devuelve gran cantidad de triples, de los cuales Buenos Aires es el sujeto, algunos ejemplos:
Predicado Objeto dbpedia2:populationTotal 3050728 rdf:type dbpedia:ontology/Place rdf:type dbpedia:class/yago/CapitalsInSouthAmerica rdfs:label "ブエノスアイレス"@ja rdfs:label "Буэнос-Айрес"@ru rdfs:label "Buenos Aires"@es owl:sameAs <http://data.nytimes.com/53816717781055122081>
Los predicados son tipos de información en Wikipedia, generalmente Categorías.
Esto se está formalizando de forma rapida y creciente y representará una forma común de etiquetar objetos bien descriptos.
Entonces Buenos Aires tiene una Población Total de 3050728 habitantes, es un Lugar, es una Capital de Sudamérica, en Japonés se escribe ブエノスアイレス, en ruso Буэнос-Айрес, el sujeto es el mismo descrito en
El objeto puede ser un URI o una cadena de texto, valor numérico, etc.
Ahora probaremos :Buenos_Aires como objeto – “Algo que tenga como objeto del predicado a Buenos Aires”.
SELECT * WHERE { ?sujeto ?predicado :Buenos_Aires . }
Aquí una pequeña e ilustrativa selección de los resultados:
Sujeto Predicado :Luciana_Salazar dbpedia:ontology/Person/birthPlace :Julio_Argentino_Roca dbpedia:ontology/Person/deathPlace :Manuel_Belgrano dbpedia:ontology/Person/deathPlace :Popego dbpedia:ontology/foundationPlace :Los_Natas dbpedia:ontology/homeTown :Argentinos_Juniors dbpedia:ontology/SoccerClub/ground :Colegio_Nacional_de_Buenos_Aires dbpedia:ontology/EducationalInstitution/city :Avenida_General_Paz dbpedia:ontology/Road/beltwayCity
Podrán ver lo poderoso que resulta ésto hasta ahora: “decime todo sobre de X” y en formato entedible por una máquina.
Pero cuando enlacemos éstos resultados, podemos obtener mucho más: “Encontrar todas las personas que nacieron y murieron en Buenos Aires y decirme todo sobre ellos” (Bueno, todos los que estén cargados en Wikipedia):
SELECT ?sujeto ?predicado ?objeto
WHERE {
?sujeto dbpedia:deathplace :Buenos_Aires .
?sujeto dbpedia:birthplace :Buenos_Aires .
?sujeto ?predicado ?objeto .
}
Y ésto recién empieza!
Quien pruebe y consiga resultados interesantes, cuénteme!
Algunos ejemplos:
http://www.identi.es
http://www.lukers.net
http://www.haydetodo.net
http://www.fulluser.net
http://www.yumpi.com.ar
Cabe aclarar que este script basado en SMF (Simple Machines Forum, el cual es “Free” pero tiene los derechos reservados -no es Open Source-), no tiene ninguna relación con el sistema e infraestructura que tiene Taringa o Uimpi (no se casitaweb) mas allá de la similitud visual (con un poco de CSS se puede modificar radicalmente).
Desconozco la optimización de recursos y la seguridad del mismo pero para arrancar, divertirse, o convertirse en un Emprendedor 2.0 (bleh), alcanza.
Y cuidado con la gorra…

Éste pequeño tutorial (WIP), si es que merece llamarse así, muestra cómo tomar fotografías automáticamente cada cierto lapso de tiempo, para luego generar un video con las mismas, logrando el bien conocido efecto “Timelapse“.
El código es bastante sencillo, espero mejorarlo en algún momento y agregar mas inputs para hacerlo autónomo y no depender de una computadora si es que se quiere modificar el valor.
Las cámaras Canon Rebel o EOS nos permiten conectar un control remoto a través de un plug estándar de 2.5 mm (3/32″), para disparar a distancia, lo cual facilita automatizar la tarea, en este caso con un Arduino (Seeeduino) y un Optoacoplador 4N26.
“Un optoacoplador, también llamado optoaislador o aislador acoplado ópticamente, es un dispositivo de emisión y recepción de luz que funciona como un interruptor excitado mediante la luz. La mencionada luz es emitida por un diodo LED que satura un componente optoelectrónico, normalmente en forma de fototransistor. De este modo se combinan en un solo dispositivo semiconductor, un fotoemisor y un fotorreceptor cuya conexión entre ambos es óptica. Estos elementos se encuentran dentro de un encapsulado que por lo general es del tipo DIP. Se suelen utilizar como medio de protección para dispositivos muy sensibles.” – http://es.wikipedia.org/wiki/Optoacoplador

Esquema del circuito.

Prototipo funcionando.


1: Digital Pin 9 del Arduino.
2: GND del Arduino.
3: No se usa.
4: Tip del plug.
5: GND de la camara, si juntáramos el cable verde con el rojo,
cerraríamos el circuito y se dispararía la cámara.
6: No se usa.

Shield: GND de la cámara.
Ring: Foco, equivalente al “Half Press”, no lo usamos en este caso.
Tip: Disparador (“Shutter”)
En GNU/Linux, teniendo instalado FFMPEG, éste comando obtenido en http://www.munz.li/?p=48 me dió excelentes resultados (Hacer cd /path/a/fotos/ ):
$ cd /path/a/fotos/
$ mencoder -nosound mf://*.jpg -mf w=800:h=371:type=jpg:fps=15 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2160000:mbd=2:keyint=132:v4mv:vqmin=3:lumi_mask=0.07:dark_mask=0.2:mpeg_quant:scplx_mask=0.1:tcplx_mask=0.1:naq -o time_lapse-test.avi
http://wordpress.bolanski.com/
http://www.image-in.com/fredmiranda/Detector.doc
http://www.munz.li/?p=48
Había olvidado mostrar esta reciente adquisición:

Una Seeeduino (Arduino diecimila compatible) 1.1 de SeeedStudio adquirida a través de DitenTec.
En algún momento estaré subiendo un proyecto.
Vlad de VladStudio.com tomó el source del Puzzle en jQuery que hice hace un tiempo, y lo mejoró considerablemente y a su vez creó 92 puzzles diferentes de hasta 16×10 piezas, con lista de records de tiempo y hasta Hints.
Hace unos días estaba haciendo ésto con ContextFree

Mas tarde, viendo que tal processing.js (Processing.org portado a JavaScript por el culpable de jQuery) vi el demo del arbolito, y pensé en meterle jQuery, en segundos salió esto: http://lab.deytec.net/processingjs/
Context Free Art, el sitio de Context Free que funciona tambien como galería de CFDGs, crecio mucho ultimamente y es fuente de muy buenas obras visuales.
Esta vez hice un Puzzle con jQuery (Rompecabezas), muy simple, 6 piezas por ahora, porque es para infantes.
Probado Firefox 2 bajo Linux, y en IE 7 en XP.
Pronto estaré subiendo algunas versiones nuevas.