Archivo de la categoría 'Programación'.

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.

Jornadas del Sur 2010

Sunday, August 15, 2010

Jornadas del Sur 2010
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í.

DBPedia y Sparql.

Wednesday, April 7, 2010
Dbpedia, SPARQL, SNORQL triple store – breve introducción.
*traducción del artículo original por Peter Murray:
http://wwmm.ch.cam.ac.uk/blogs/murrayrust/?p=332

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 y un largo etcétera.

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!

A los que se quejan de T! (y a los que no)

Sunday, November 29, 2009

Háganse uno! con Small Pirate.

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…
Mods Watching

Timelapse con Canon Rebel (EOS), Arduino, y FFMPEG

Monday, July 20, 2009

Introducción

É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.

Materiales utilizados

  • Canon Rebel XT (ó 300 / 350D)
  • Cable USB / Mini USB
  • Seeeduino (Arduino Diecimila Compatible). Se puede adquirir en Ditentec
  • Optoacoplador 4N26 (ó 4N28, 4N35) = u$s0,63 en Ditentec
  • Plug 2.5 mm Stereo(3/32″)

Softwares utilizados

Proceso

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

Imágenes

Arduino Canon Rebel Timelapse Schematic

Esquema del circuito.

Prototipo funcionando.

Optoacoplador 4N26

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”)

Código

descarguen el .pde desde acá

Generando el video a partir de los .JPG’s

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

Bibliografía

http://wordpress.bolanski.com/
http://www.image-in.com/fredmiranda/Detector.doc
http://www.munz.li/?p=48

Seeeduino

Saturday, July 4, 2009

Había olvidado mostrar esta reciente adquisición:

Seeeduino

Una Seeeduino (Arduino diecimila compatible) 1.1 de SeeedStudio adquirida a través de DitenTec.

En algún momento estaré subiendo un proyecto.

jQuery Puzzle mejorado.

Friday, June 12, 2009

Vladstudio Puzzles.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.

Jugar Puzzles!

Processing.js y jQuery

Monday, May 4, 2009

Hace unos días estaba haciendo ésto con ContextFree
treeGKN.png - 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

Wednesday, June 18, 2008

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.

Context Free Art / Jaggedbits by multiphonic

Context Free Art / Crest of Titan by cstarbird

Context Free Art / Rotating Snakes by ricou

jQuery Puzzle / Rompecabezas

Thursday, May 15, 2008

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.jQuery Puzzle Screenshot

Pronto estaré subiendo algunas versiones nuevas.