2011-05-16

Update para el archivo de hosts

Para quienes deseen seguir teniendo una internet mas feliz, les dejo un update de mi archivo de hosts redirigiendo las urls de muchos adservers a 127.0.0.1:

127.0.0.1 ads.e-planning.net
127.0.0.1 ads.us.e-planning.net
127.0.0.1 codenew.impresionesweb.com
127.0.0.1 ads.doubleclick.net
127.0.0.1 ad.doubleclick.net
127.0.0.1 pubads.g.doubleclick.net
127.0.0.1 googleads.g.doubleclick.net
127.0.0.1 pagead2.googlesyndication.com
127.0.0.1 api.ad.ly
127.0.0.1 api.140proof.com
127.0.0.1 api.ads.oneriot.com
127.0.0.1 echofonads.appspot.com
127.0.0.1 ds.clickexperts.net
127.0.0.1 ad.metanetwork.com
127.0.0.1 d2.zedo.com
127.0.0.1 ad.harrenmedianetwork.com
127.0.0.1 ads.intextual.net
127.0.0.1 s0.2mdn.net
127.0.0.1 content.yieldmanager.edgesuite.net
127.0.0.1 adserving.cpxinteractive.com
127.0.0.1 deMR.opt.fimserve.com
127.0.0.1 bs.serving-sys.com

Hasta la próxima!
Zaiden


2011-04-10

Material de la última charla de C# 4 y .NET 4

Les dejo el material de la última charla que dimos con RodolfoF en el MUG sobre C# 4, .NET 4 y unos pequeños avances de la próxima versión de C#!

Lo pueden bajar de aca.

Hasta la próxima!

Zaiden


2011-03-21

Material de la charla del Run WebCamp 2011

Les dejo el material que usamos con RodoF durante la charla del Run WebCamp 2011.

Link: Material WebCamp

Saludos!

Zaiden


2011-01-09

Como usar Netflix desde afuera de USA

Desde hace mas o menos un mes, estoy subscripto a Netflix, el servicio de streaming legal de películas mas popular de Estados Unidos. El único inconveniente es que, pese a ser un excelente servicio y tener un muy buen precio (8 US$ al mes, cantidad de películas ilimitadas por streaming), solo está disponible accediéndolo desde USA o Canada.
Por suerte, la forma para verificar la ubicación de cada cliente no es ta estricta como debería, y los chequeos solo se hacen en ciertos momentos de la navegación por el sitio.

A continuación les cuento como hacer para poder suscribirse a Netflix desde Argentina (o cualquier otro lugar fuera de los Estados Unidos) y poder utilizarlo sin problemas:

Primero que todo debemos poder saltear la verificación de ubicación geográfica. Para esto, registramos una cuenta en OverPlay. OverPlay es un servicio pago que provee VPNs de alta velocidad por todo el mundo y - atentos a esto - una VPN de baja velocidad gratuita a USA.
Con la cuenta de OverPlay, bajamos de la página el cliente correspondiente a nuestro sistema operativo para conectarse a las VPNs de OverPlay, lo abrimos y elegimos la que diga USA-Free. Nos conectamos ingresando el usuario y contraseña recién registrados y listo: toda navegación que hagamos de acá en adelante pasará por la VPN y los servidores a los que nos conectemos creerán que tenemos una conexión de aproximadamente 1Mbps.

Una vez conectados a la VPN, deben crear una nueva cuenta en http://www.netflix.com. Para poder hacerlo deberán pagar con tarjeta de crédito e indicar alguna dirección dentro de USA. Pueden buscar cualquier dirección en las páginas amarillas o similar, ya que solamente es necesaria para el plan de envío de DVDs a casa, que no vamos a usar por razones obvias.

El plan a elegir es, como comenté antes, el de películas únicamente por streaming, a 8 US$ por mes, con el primer mes gratis.

Con la VPN activa y la cuenta de Netflix ya creada, solamente nos resta ver nuestra primer película. Pero acá aparece otro problema: ¿Cómo vamos a ver bien una película por streaming si, como mucho, tenemos 1 Mbps de conexión?

En este momento van a comprender por que dije que la verificación de ubicación geográfica no es tan estricta como debería: en el momento que hacemos click en el botón de Play para ver la película se cargará el player Silverlight de Netflix y empezará a mostrar información de status sobre la carga de la película. La clave de todo este método es, en el momento que aparezca el mensaje Downloading movie information, desconectarnos lo mas rápido posible de la VPN y de esta manera, el proceso de streaming se hará directamente por nuestra conexión, sin pasar por la VPN.

Listo! Espero que esto les sirva a todos los que quieran utilizar un servicio de primer mundo, a 10000Km de distancia.

Hasta la próxima!
Zaiden


2011-01-08

Nuevo chiche y una mejor forma de ver la Internet

Buenas! Este post tiene dos partes:

  1. Tengo chiche nuevo!
    Cambié la MacBook Pro de 13 pulgadas que tenía por la nueva MacBook Air de 11. Por ahora muy contento, así que después de darle un poco mas de uso escribiré alguna mini-reseña para compradores indecisos.
  2. Dejo acá una nueva actualización para el archivo de hosts de sus computadores, para que puedan evitar todo tipo de publicidad dentro de los sitios web que visiten, independientemente de la plataforma o browser que usen.
    Para el que no sepa mucho de que estoy hablando, peguen las lineas que dejo a continuación en el archivo /etc/hosts en OS X o cualquier variante de Unix, Linux, BSD o similar, o en C:\Windows\System32\Drivers\etc\hosts en cualquier versión de Windows.

Archivo de hosts:

127.0.0.1 ads.e-planning.net
127.0.0.1 codenew.impresionesweb.com
127.0.0.1 ads.doubleclick.net
127.0.0.1 pubads.g.doubleclick.net
127.0.0.1 googleads.g.doubleclick.net
127.0.0.1 pagead2.googlesyndication.com
127.0.0.1 api.ad.ly
127.0.0.1 api.140proof.com
127.0.0.1 api.ads.oneriot.com
127.0.0.1 ds.clickexperts.net
127.0.0.1 ad.metanetwork.com
127.0.0.1 d2.zedo.com

Hasta la próxima!
Zaiden


2010-11-15

Material de la charla de Azure Worker Roles

A pesar de la tardanza, les dejo para bajar el material del bootcamp que dimos junto a mi baticompañero Rodolfo Finochietti sobre Azure Worker Roles.

Saludos!
Zaiden

2010-09-08

Ejemplos y slides del Codecamp 2010

Lo prometido es deuda: dejo acá para que bajen los slides y ejemplos de las charlas que di en el CodeCamp 2010 junto a Rodolfo Finochietti y Ariel "Fuera de Pista" Krakovsky.

"Como hacer sitios a-la-Facebook con ASP.NET MVC": slides y ejemplos.
"Patos y abogados trabajando en paralelo" (Nuevos features de .NET 4 y C# 4): ejemplos y slides.

"ASP.NET MVC 2 (y 3!)": ejemplos y slides.

Hasta la próxima!
Zaiden


2010-08-16

Ejemplos y presentación de la charla: NextWeb - La web está cambiando, ASP.NET también

Les dejo para bajar los ejemplos de ASP.NET MVC, Comet y Razor que estuvimos mostrando en la charla del 11 de agosto con mis compañeros de Lagash Rodolfo Finochietti y Diego Gonzalez y Miguel Angel Saez por parte de Microsoft

Presentación: acá.
Ejemplos: acá.

Hasta la próxima!
Zaiden


2010-07-07

Nuevo chiche: iPad!

Después de estar todo un día jugando con este chiche nuevo, debo decir tres cosas:

1. Steve tenía razón, es mágico
2. Es increíble el esfruezo y dedicación que le pone la gente que hace toda la hackatoneria (Nota del autor: no se debe usar la palabra pirata en estos casos. Un pirata es un tipo que roba barcos, tiene loros y le falta una pata) para los iDevices. Pocas apps funcionan tan bien como las relacionadas con este mundillo!
3. Escribir en esta porquería es bastante mas cómodo de lo que pensaba!!

Hasta la próxima!
Zaiden

2010-06-23

StringWriter y con distintos Encodings

Recientemente me topé con un pequeño problema al armar una consigna de un trabajo práctico del colegio: La idea era armar un helper para que los chicos puedan bajar facilmente archivos XML.

El problema fue que yo me encargaba de bajar el stream del archivo, lo retocaba un poco y luego lo pasaba desde un XDocument a un string utilizando un StringWriter, entonces al escribir el string, lo hacía agregando el header de XML de encoding="utf-16". Todo esto no sería un problema si no fuese porque, la idea detrás de esto era que asi como les llegaba el string, lo pudiesen guardar a disco con StreamWriter, utilizando los constructores mas simples, sin tener que especificar encodings.

Dado que StringWriter no permite modificar el encoding que utiliza, la solución fue crear una subclase de StringWriter y hacer override de la propiedad Encoding.

La pequeña clase quedó asi:


class UTF8StringWriter : StringWriter
{
public override System.Text.Encoding Encoding
{
get
{
return System.Text.Encoding.UTF8;
}
}
}

Espero que les sea útil!

Zaiden


2010-06-21

Problemas al querer cargar un XML de un string Unicode

Hace poco, por cierta necesidad me encontré con un error bastante extraño. Al intentar leer un XML con un XmlDocument obtenía el siguiente error: "Data at the root level is invalid. Line 1, position 1".

El string obtenido provenía de un stream, el cual se iba leyendo de a partes.

Luego de varias idas y vueltas, encontré finalmente la casua del problema: al escribirse el stream original, se estaba haciendo lo siguiente:

var writer = new StreamWriter(stream, Encoding.Unicode);
writer.Write(text);

El problema que traía esto es que, por la forma en la que se estaba leyendo el stream del otro lado (codigo externo, revisado gracias al amigo Lutz!) se estaba interpretando mal la marca de uso de Unicode, al comienzo del string.

Para poder solucionar esto, bastó con reemplazar las lineas en la que se crea y usa el StreamWriter, por la siguiente:

var writer = new StreamWriter(stream, new UnicodeEncoding(false, false));
writer.Write(text);

Esta forma de crear el encoding, le indica que no se deberá incluir la marca de Unicode al comienzo del string, solucionando el problema antes mencionado

Espero poder ayudar a alguien con esto.
Saludos!

Zaiden


2010-06-07

Uso de certificados emitidos por Windows 2008 R2 desde .NET Framework

Si tienen la suerte de tener que utilizar certificados con un template v3 desde Windows Vista o superior, y los mismos fueron emitidos por un Windows Server 2008 R2, se encontrarán con una feliz excepción (Invalid provider type specified.) al intentar obtener la propiedad PrivateKey de una instancia de X509Certificate.

Esto ocurre, como bien se explica en este post debido a que la forma en que Windows Vista y Seven almacenan este tipo de certificado - utilizando Microsoft Software Key Storage Provider - solamente está soportado por CryptoAPI, pero no por las librerías provistas por .NET Framework 4.0 o anterior.

La forma de solucionar esto es utilizando las librerías provistas por los amigos del equipo de CLR Security:

  • Incluir "using Security.Cryptography.X509Certificates;" en el archivo que utilizará los certificados para traer los extension methods para la clase X509Certificate2
  • Preguntar por HasCngKey() en la instancia de X509Certificate2 para saber si la clave esta almacenada de esta forma. En caso afirmativo, crear una nueva instancia de RSACng utilizando el método GetCngPrivateKey() como parámetro.
Hasta la próxima!

Zaiden


2010-05-28

Indignado

Acabo de leer este articulo en OSNews y quedé completamente indignado.

Como puede ser que haya gente cuyo único motivo para vivir sea molestar a otros porque tal o cual código fue creado bajo una licencia que - supuestamente - le da libertades, pero resulta que el programa o código no puede ser publicado en tal o cual lugar o, por ejemplo, no puede hacer linkeo a código propietario o - peor aún - otro código supuestamente tambien libre, pero con libertad distinta, por lo que por incompatibilidades de licencia no se pueden usar.

Estamos todos locos acaso???

Por este motivo decidí hacer explícito algo que di por sentado todo este tiempo con respecto al código publicado aca, y por el cual comenzaré a hacer campaña a favor:

Diga NO al uso de licencias como la GPL y SI a la WTFPL, también conocida como Do What The Fuck You Want To Public Licence (http://en.wikipedia.org/wiki/WTFPL)

Básicamente, esta licencia dice que cualquiera puede hacer lo que quiera con el código.

ESO es libertad.
Ma' que GPL ni ocho cuartos...

He dicho.

Zaiden


Presentación de Visual Studio 2010

El jueves estuvimos haciendo la presentación de Visual Studio 2010 en el aula magna de la UAI junto con Rodolfo Finochietti, Martín Salías, Miguel Saez, Victor Passador y la gente del MUG

Dejo aca para que bajen la presentación y los ejemplos de código.

Saludos!
Zaiden

2010-04-11

iTip: Velocidad en el iPhone

Paso un pequeño tip para aumentar la velocidad general del iPhone (al menos, en el 3G). Vaciar de forma regular las llamadas y SMSs recientes.
Después de hacerlo pude notar una mejora considerable en la performance del teléfono.

Gracias Johnny por la data!

Zaiden

2010-03-22

Ya no funciona el boton de los auriculares del iPhone? No estés tan seguro...

Después de unos seis meses de estar usando sin problema los auriculares con micrófono y "click-control" del iPhone, de un día para el otro dejaron de funcionar para atender llamadas y pasar los temas la iPod app.

Mucha gente me había comentado que después de un tiempo empezaron a tener este problema y como en nuestro amado país argentino - también conocido como La Porongonia Rebelde - los Apple Resellers no se pueden hacer cargo del service de los iPhones, ya que eso es tarea de la compañía de celulares que lo vendió, pero Claro insiste en que no pueden hacer nada, la gente en general decide que la "vida útil" del botón caducó.

Mentiras!

Resulta que el iPhone tiene su propio ombligo, y el mismo - como buen ombligo - se llena de pelusa.

Si llegan a tener este problema, existe una buena chance de que revolviendo con un clip por el agujero de los auriculares saquen una gran bola de mugre acumulada, la cual parece ser inofensiva para el uso normal de los auriculares y, sin embargo, letal para su boton mágico.

Bueno, espero que les sirva esto antes de ir corriendo a comprar auriculares nuevos.

Saludos!
Zaiden


2010-03-17

Slides de la charla: .NET 4 a Fondo!

El último lunes, junto a Rodo y Max, dimos la charla ".NET 4 a Fondo!" en el aula magna de la UAI, auspiciada por el MUG.

En la misma hicimos una repasada por las principales características de la próxima versión de .NET Framework, mostrando la versión RC de Visual Studio 2010 (la cual, debo decir, mejoró muchísimo desde las betas... sobre todo en la velocidad) y explicando con mas detenimiento las nuevas características relacionadas a programación dinámica dentro de C# 4, programación en paralelo y Code Contracts.

Aca les dejo los slides y ejemplos de la charla para bajarlos.

Saludos!
Zaiden


2009-12-31

Nueva (y por ahora última) versión de TweetMyFace

Ya está la versión Release (1.1) de TweetMyFace.

La pueden bajar de acá: http://tweetmyface.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=37990

Saludos!
Zaiden


2009-12-23

Recibí tus notificaciones de Facebook por Twitter: TweetMyFace

En estos días quise hacer un pequeño experimento con el API de Facebook para C# y el resultado fue TweetMyFace

La idea de esta aplicación crear un nuevo usuario de Twitter que se utilizará para publicar las notificaciones que recibe un usuario de Facebook.

Idealmente, el único seguidor de este usuario de Twitter será el mismo dueño de la cuenta de Facebook que se está monitoreando, por lo que podrá recibir en su cliente de Twitter favorito todas las notificaciones de Facebook al instante.

Si, ya se... no tiene mucha utilidad, pero fue lo que salió.

Saludos!
Zaiden

2009-12-15

Un pequeño paso para el hombre, un gran paso para el Mono!

Como bien dice el título, hoy es un gran día para Mono!
Aca de publicarse la versión 2.6 del Mono Framework (implementación libre y multiplataforma de .NET) junto con la versión 2.2 de MonoDevelop (IDE)

Dentro de la extensa lista de features - la cual pueden ver en www.go-mono.com - dos de ellas llamaron poderosamente mi atención:

  • Soporte e integración del debugger en MonoDevelop en las tres plataformas principales (si, si: esto incluye Mac OS X!)
  • Soporte básico para LINQ-2-SQL gracias al proyecto DBLinq

Esto quiere decir que la factibilidad de realizar proyectos importantes en .NET abstrayéndose de la plataforma acaba de dos pasos gigantescos!

Por lo poco que probé el debugger funcionó bastante bien, llevando al olvido mis incontables horas de PRINTF-Oriented-Debugging sobre .NET en OS X.

Los ejemplos básicos que pude probar de LINQ-2-SQL funcionaron perfectamente e incluso proyectos como NerdDinner se pueden ejecutar sin problemas con un simple click en el botón de Debug de MonoDevelop (siempre y cuando tengamos acceso a una base SQL Server, obviamente).

Intenté llevar un paso mas adelante el funcionamiento de la nueva implementación de esta API al intentar ejecutar el proyecto en el cual estoy trabajando actualmente, solo para encontrarme que aún no está implementado el uso de DataLoadOptions en el DataContext de SQL, por lo que eso tendrá que esperar un tiempo más.

Igualmente, muchas felicitaciones al equipo de Mono por el gran trabajo que hacen día a día!

Tanto Mono Framework como MonoDevelop pueden ser descargados desde el sitio oficial de mono: http://www.go-mono.com

Saludos!
Zaiden