Monthly Archives: November 2006

La nueva de Microsoft y mas sobre patentes

Despues de crear el post anterior sobre las patentes me encontre con una noticia que me vino como anillo al dedo para seguir hablando del tema.

Como muchos ya saben, la nueva version de Office (2007) incorporara una “nueva” manera de interactuar con el usuario, el ya tan mencionado “ribbon“. El cual, basicamente son botones grandes que reaccionan segun el contexto, agrupados en tabs.

Ribbon
Imagen del ribbon, click para agrandar

Pues resulta que antier, en el blog de Jensen Harris nos salieron con la noticia de que microsoft esta patentando la interfaz y que ademas, en toda su bondad, nos dejara usarlo gratis, pero solo si lo pedimos por favor. Ademas debemos seguir una serie de guias (120 paginas, por cierto) para que Microsoft nos de el visto bueno.

El problema, y como muchos ya comentaron es que mediante ese “contrato” riguroso, implicitamente estas aceptando que la propiedad intelectual del concepto del ribbon es de microsoft, cuando esto no es necesariamente cierto.

En primer lugar muchas otras aplicaciones ya hacen cosas muy parecidas, por lo que se puede aplicar la figurar del “prior art“. La primera que me viene a la mente es dreamweaver, aunque conceptos como las tabs son usados ampliamente en muchisimos productos (si no, vean su navegador :P).

dw.png
Menus de dreamweaver, click para agrandar

En segundo lugar, la patente esta en proceso aun, es patente pendiente. Basicamente te “venderian” algo que no les pertenece aun. A mi me suena a algo llamado fraude.

En tercer lugar, Microsoft “prohibira” el uso del ribbon en aplicaciones que compitan directamente con Office (te lo digo Juan para que me entiendas OpenOffice).

Microsoft alega que invirtio billones (si, con b) de dolares en la creacion del concepto y de hecho ya estan en proceso de patentarlo. El problema es que no se pueden patentar conceptos, sino solamente implementaciones. Entonces aun cuando se les concediera la patente (que sinceramente lo dudo y lo espero), con cambiar el mas minimo detalle, esta dejaria de ser valida.

Es interesante ver como la historia se repite. Hace años Borland intento hacer lo mismo y fallo miserablemente. Apple demando a Microsoft por algo similar y adivinen… fallo tambien. Ahora microsoft es el que lo intenta. No veo porque el resultado deba ser diferente.

Lo repito, el sistema de patentes esta dañado de raiz. No sera la ultima vez que oigamos de este tipo de “detalles”…

Lo ridiculo de las patentes

El sistema de patentes (de estados unidos, y en general) esta hecho un relajo y es cada vez mas ridiculo. Es un sistema que incentiva el abuso y hace posible patentar cualquier idea por mas antigua que sea. Para muestra un par de botones

  1. Patente 6,594,674
    Systema y metodo para unir varios archivos en un archivo sencillo. Si alguien uso msdos recordara el :
    copy a.txt + b.txt c.txt
    Que copia el archivo a y b en el archivo c. ADemas esto cualquier sistema de compresion lo hace, como el zip, rar, etc.
  2. Patente 7,139,815
    Sistema y metodo para transportar datos en una red. Esta patente fue otorgada hace 3 dias, el 21 de noviembre de 2006! Aun cuando por lo menos desde 1940 se sabe de la existencia de la transmision de datos por una red
  3. Patente 6,256,631
    Creacion automatica de hyperlinks. Creo que esta no requiere explicacion. Tambien esta otra patente hace referencia a la insercion de hyperlinks en documentos. Y esta otra de navegacion con estos ultimos.

Ahora, como si hicieran falta mas ejemplos nos acabamos de enterar que se le acaba de otorgar la patente a LSI Logic corporation sobre las listas doblemente ligadas… cuando estas fueron “inventadas” alrededor de los años 50.

Pueden ver el texto de la patente aqui.

Aunque no se si esas patentes se puedan hacer validas en otros paises diferentes a estados unidos (lo voy a investigar, lo prometo) es algo que debemos tener en cuenta los que nos dedicamos a la ciencias de la computacion, por los peligros a los que nos podemos enfrentar al desarrollar alguna tecnologia.

El sistema actual de patentes esta dañado en muchas maneras, entre las cuales podemos encontrar

  1. Practicamente todo lo que hacemos hoy esta patentado. No me creen? Denle una mirada a las patentes que posee microsoft. O este ejemplo de una tienda virtual y de las patentes que infringe: http://webshop.ffii.org/
  2. Si la empresa que tiene la patente nos demanda por uso indebido de propiedad intelectual, la mayoria de las pequeñas empresas moriria en el acto, y si no mueren en el momento, simplemente no podrian pagar un juicio contra una empresa como IBM y ademas esperar ganarlo.
  3. Debido a lo anterior practicamente cualquier programa tendria que pagar licenciamiento de tecnologia, lo cual es prohibitivo para muchas de las pequeñas y medianas empresas
  4. Es costoso pelear una patente ademas que es complicado, por ejemplo solamente el que solicita la patente puede pelearla por medio del “prior art”

Entre otras muchas. Para mas informacion visiten http://www.nosoftwarepatents.com

Sobre la vulnerabilidad en firefox (y otros…)

Se ha creado demasiada parafernalia con respecto la ultima vunerabilidad encontrada en firefox (la cual tambien afecta a otros navegadores por cierto)… si no me creen, vean este comentario en bugzilla.mozilla.org sobre el caso.

Sin embargo creo que se ha sobredimensionado el caso.

En primer lugar el hacer bulla sobre un bug en firefox es cuando menos, mala leche, ya que no solo “afecta” a este navegador sino a otros mas como ya dije. Aunque es natural, ya que firefox se ha hecho de una muy buena reputacion de ser un navegador seguro, y una vulnerabilidad asi es gran noticia.

En segunda, entrecomillo “afecta” porque no es exactamente una vulnerabilidad, aunque si es algo que debe ser repensado. Me explico.

Por diseño, cuando llenas una forma de usuario y contraseña, firefox te pide guardar estos datos para que no tengas que escribirlos de nuevo. Si aceptas, este guardara los datos usando como llave el dominio del que provienen. Es decir si entras a hotmail.com y aceptas guardar los datos, firefox los guardara de la forma (burdamente hablando)

hotmail.com:usuario:contraseña

Asi, cuando entras nuevamente a hotmail.com, firefox escribira los datos que proporcionaste. Estos datos podran ser accedidos via script (o forma html), como es de esperarse.

El problema viene cuando no puedes confiar en el contenido del sitio del que proviene la forma. El ejemplo mas usado es myspace. En myspace puedes introducir el codigo html que tu desees. Y si guardaste tu contraseña y un usuario malicioso produce una forma igual a la del login original de myspace, los campos se llenaran automaticamente, dejando expuesto a que se te pueda robar tu contraseña, aunque SOLAMENTE PODRA TOMAR LA CONTRASEí‘A DE ESE SITIO. No podra robar tu contraseña de banco, correo o alguna otra. Y recalco esto ultimo porque creo que hay un poco de confusion al respecto. Bajo este vulnerabilidad un sitio solo podria robar la contraseña perteneciente a si mismo… lo cual no es un problema excepto para sitios en los que no puedes confiar o de contenido generado por otros usuarios.

Resumiendo, solo es una vunerabilidad si :

  1. Guardas las contraseñas
  2. Hay contenido no confiable
  3. Te importa que sitio.com pueda obtener tu contraseña de sitio.com (la cual en la mayoria de los casos, ya tiene porque tu se la diste :P)

Asi que bajenle la espuma a su chocolate. No es para tanto, no es para cambiar de navegador (porque firefox no es el unico en donde se ha encontrado) ni para desgarrarse las vestiduras. Si es algo que debe repensarse y en su caso arreglarse.

Mientras mas usado sea el software libre (y firefox en especifico) mas de estos detalles se encontraran, lo cual es bueno. Mientras mas pronto se encuentren mas rapido se arreglarán. Pero dejemos de lado el sensacionalismo, que a nadie le hace bien.

Memory tips for PHP

Once upon a time a web programmer who was writing a complicated script. He tests it in his machine, and it works like a charm. Then he tries in the production server…

Craaash. And not even a trace of error. He checks that error logging is on, checks the logs, nothing. He is “without a trace”… or a core dump… or anything.

My psychic powers tells me that is a memory error.
This kind of errors are typical when you are using a thousands-lines report or sending a heavily attachment loaded mail via php. In fact, the last reason make me write this post. I detected a hard to find problem with a very well known email script. Specifically the error I found was in a bad use of the chunk_split function, which just refuses to work with very very long string and dies miserably with out even send any kind of error (at least in older versions of php which I’m forced to use :S, but that’s another history).

Usually PHP captures this kind of errors and throws the typical error “Allowed memory size of x bytes exhausted”. This is caused because the server’s admin limited the memory that any script can use and was made to protect the servers against bad programmers, and is used commonly in shared environments.

To be able to handle this kind of problems, here is some basic tips to make this experience a lot less painful.

  1. Check your script’s memory usage

    The memory_get_usage function returns the bytes used by your script. But this function is not available in every system, just in those which were compiled with the –enable-memory-limit option. Usually if this function is not available, you can’t either recompile your php installation. If this is the case, you can emulate the function with this code:


    if( !function_exists('memory_get_usage') ){
    function memory_get_usage() {
    exec("ps -orss -p ".getmypid(), $output);
    return $output[1];
    }
    }

    This function is similar to the one included in php, even if is not perfect. But you can get an idea of what’s going on. Requires you have execution privileges because uses the ps command. It just works on Unix or Linux systems.

  2. When you are done, don’t forget to clean-

    If you are not longer use a memory intensive variable, destroy it with unset($variable). This will free up the used memory.

  3. Say no to globals.

    This is an extension from the last one. Be careful when you use global variables. When you use unset a global variable inside a function. you will just destroy the local variable, not the global one. So, you have one more reason to NOT use global variables (as if you need one more :))

  4. Don’t trust the garbage man!

    I’ve noticed than when a function ends, local variables are unset. Although that is not always the case, sometimes even when the variables are unset, the memory doesn’t becomes available until the end of the script. So when you use heavy variables inside a function, unset em before the function ends if you will not longer use em.

  5. Forget as soon as you can.

    If you are using a very long archive, don’t keep it in memory. That would be the easy way but it will give you some problems later. Instead process the file line by line and write the result in a temp file. tmpfile, fopen and fclose (and google :P) are your friends. This will be the most useful advice for this cases, trust me.

  6. Don’t ignore the warnings

    As a general recommendation, when you are debugging scripts, use error_reporting(E_STRICT). That will give you a little more information than E_ALL. As times goes by, you won’t note the difference between those two.

  7. Brute force

    As a last resource, if those last advices doesn’t work (but they will :)) you can make bigger the script memory limit, with the ini_set(“memory_limit”, “16M”) directive which would make the limit 16Mb. This directive is available with any server that allows the ini_set function. But be careful, especially if your are on a shared server, be a good neighbor and don’t blow the server. Don’t ask for free problems 🙂

This are some basic advices for those hard problems. If you people like this article, I could make some more deeper articles on the subject.

Uso de memoria en PHP

Erase una vez un programador web realizando un script relativamente complicado… Lo prueba en su maquina, funciona de maravilla. Lo sube al servidor de producción.

Craaash. Y ni siquiera un rastro de error. Revisa que los errores están habilitados, revisa los logs, y nada. Busca algún rastro y nada….

Mis poderes de psíquico me dicen que es un error de memoria.
Estos errores son típicos cuando se esta realizando un reporte con miles de filas, o mandando un mail con attachments pesados via php. De hecho lo que me motivo a realizar este post es que detecte un problema con cierto script famoso para enviar correos. Específicamente encontré un error en una la función chunk_split en la que al trabajar con una cadena demasiado larga simplemente se niega a seguir trabajando y muere sin mandar ningun error.

Usualmente, PHP captura esos errores y nos lanza el ya típico error “Allowed memory size of x bytes exhausted”. Esto es debido a que por precaución contra malos programadores, y especialmente en servidores compartidos, es posible limitar la memoria ocupada por cada script.
Para lidiar con estos problemas, he aquí unos tips básicos que harán tu experiencia un poco menos difícil.

  1. Revisa el uso de memoria de tus scripts

    La función memory_get_usage te regresa el numero de bytes que tu script esta ocupando. Sin embargo esta función no esta disponible en todos los sistemas, ya que hay que compilar php con el parametro –enable-memory-limit. Si en tu servidor no existe esta función puedes emularla de la siguiente manera.

    if( !function_exists('memory_get_usage') ){
    function memory_get_usage() {
    exec("ps -orss -p ".getmypid(), $output);
    return $output[1];
    }
    }
    Es similar a la incluida en php, aunque no es tan exacta, pero te puedes dar una buena idea de lo que esta sucediendo. Requiere privilegios de ejecución, ya que utiliza el comando ps.

  2. Cuando termines, no te olvides de limpiar

    Si ya no utilizas una variable que contenga una fuerte cantidad de memoria, destrúyela con unset($variable). Esto liberara inmediatamente la memoria ocupada.

  3. Dí no a las globales

    Esta es una extensión de la anterior. Ten cuidado al usar variables globales. Cuando usas unset en una variable global adentro de una función solamente se destruye la variable local, no la global. Así que una razón mas para NO usar variables globales. (como si hicieran falta 😉 )

  4. No confies en el barrendero

    En general he notado que al finalizar una función, esta desactiva las variables locales. Sin embargo, no siempre es el caso o bien no se libera la memoria que estas variables usaron, por lo que cuando uses variables pesadas dentro de una función, desactivalas con unset antes de terminar el script si ya no haces uso de ellas.

  5. Olvida tan pronto como puedas

    Si vas a utilizar por ejemplo, un archivo de muchas lineas, evita mantenerlo en memoria. Esto ultimo es lo mas facil pero puede provocar errores a la larga. En su lugar ve procesando el archivo linea por linea y escribe el resultado en un archivo. tmpfile y las funciones fopen, fclose y similares son tus amigos. Este consejo es el que mas te va a salvar la vida en estos casos, créeme.

  6. No ignores los avisos

    Como recomendación general, cuando estés debuggeando scripts utiliza error_reporting con E_STRICT. Esto te dará un poco mas de información que E_ALL, aunque con el tiempo y conforme vayas mejorando tus habilidades no notaras la diferencia.

  7. Fuerza bruta

    Como ultimo recurso, si nada de lo anterior funciona (que no he encontrado caso en que no funcione) es posible aumentar la memoria disponible para tu script, mediante la directiva ini_set(“memory_limit”, “16M”) la cual elevaría a 16 MB la capacidad de tu script. Esta directiva esta disponible en cualquier servidor que permita la ejecución de la funcion ini_set. Aunque se cuidadoso, especialmente si tienes un servidor compartido, se buen vecino y no acabes con el servidor. No te busques problemas gratis 🙂

Estos son solo unos cuantos consejos básicos para para esos casos difíciles. Si este articulo tiene éxito, en algún tiempo pondré algunas técnicas un poquito mas a fondo sobre este tema.

Espero sus comentarios y sugerencias.

El nuevo gigante de las telecomunicaciones mexicano

Lo que he estado diciendo desde hace algunos años, por fin se cumplio. El unico que puede hacerle sombra a Telmex en cuanto a telecomunicaciones por fin nacio. Hasta hoy, nadie podia hacerlo ya que, o bien tenian que introducir nueva infraestructura (cableado, principalmente), lo cual seria un suicidio porque telmex tiene decadas ampliando su red y los nuevos jugadores entrarí­an de cero. Seria una inversión millonaria sin obtener una ventaja. O bien, tendrian que arrendarle la infraestructura a Telmex, lo cual los colocaba en posicion de desventaja y de paso le echarian la mano a la competencia.

¿Quien tiene un cableado lo suficientemente amplio como para darle pelea a Telmex en cuanto a infraestructura? La Comisión Federal de Electricidad (CFE). Y si, ya se que solo tienen cableado eléctrico. Pero ¿alguien recuerda las pruebas que hicieron el año pasado de datos sobre linea eléctrica?

Es una tecnologí­a que ya se aplica en otros paí­ses, llamada PLC. Aqui esta el anuncio de esas pruebas.

Con esta tecnologia la CFE entraria como Carrier de Carriers, es decir, ofreceria el servicio de infraestructura a los carrieres como Alestra, At&t, etc. Esto sin duda, es una buena noticia. Con el tiempo se esperarí­a que los precios de las telecomunicaciones bajaran. Porque en este momento son privativamente altos. Ademas que en muchos lugares del paí­s no se cuenta con linea telefónica (por una u otra cosa) pero seguro cuentan con energí­a eléctrica, con lo que se espera que pueda reducirse la brecha tecnologica.

Asi pues, el monopolio de telmex ha empezado a dejar de serlo. Bienvenida la competencia.

Carta a un Fenix

A recomendacion de un conocido, acabo de leer un pequeño cuento. Se llama “Carta a un fenix” (Letter to Phoenix, 1949). Es un cuento de ciencia ficcion, escrito por Fredric Brown. Lo encontre en una recopilacion suya llamada “ven y enloquece”.

Cuenta brevemente la historia de un ser que vive por mucho tiempo y que cuenta un poco sus vivencias y su paso a traves de los tiempos.

Es una lectura, aunque muy sencilla, muy interesante de leer.

Lo puedes conseguir aqui en formato txt y aqui en formato pdf.

Si alguien require el libro completo, con gusto se lo puedo proporcionar.

Los 100 Sitios mas visitados por los Mexicanos (en Octubre de 2006)

Nuevamente no hay sorpresas en los primeros lugares, y no espero que las haya proximamente.

Megaupload esta venciendo a rapidshare, lo cual creo que es signo de las restricciones que pone rapidshare que son mas facilmente "saltables" en megaupload. Los sitios tipicos de los virus y gusanos siguen subiendo, esto sin duda es una mala señal. La banca en internet sigue ganando presencia y sin duda los grandes ganadores son los portales, pareciera que seguimos en los años 90.

De los sitios sociales, hi5 sigue siendo el mas popular, aunque por la informacion que se tiene, no se puede saber que tanto porcentaje de msn.com lo ocupa spaces.msn.com.

Msn sigue siendo la pagina mas popular aunque si juntaramos las visitas a google.com y google.com.mx, este ultimo se llevaria el primer sitio.

Televisa le sigue dando duro a tv azteca y la unam sigue siendo la universidad mas popular.

Aun no entra ningun blog personal a esta lista, al parecer los esfuerzos de los blogueros mexicanos estan muy dispersos. Aun asi, blogger es de los sitios mas visitados. Esperemos que pronto esto cambie 🙂

Update: Por cierto, ahora las ligas del ranking ya tienen preview, gracias a websnapr. Solo pon el mouse encima de la liga, y listo. Algunos links todavia no aparecen, pero conforme pase el tiempo se iran agregando los previews.

Sitio
Lugar en
Oct06
Lugar en
Sept06
Movimiento
Diferencia
msn.com 1 1 0
google.com.mx 2 2 0
yahoo.com 3 3 0
live.com 4 4 0
youtube.com 5 5 0
google.com 6 6 0
myspace.com 7 8 1
mercadolibre.com.mx 8 7 -1
megaupload.com 9 9 0
wikipedia.org 10 10 0
fotolog.net 11 12 1
passport.net 12 11 -1
sexyono.com 13 13 0
hi5.com 14 18 4
microsoft.com 15 15 0
blogger.com 16 16 0
rapidshare.de 17 14 -3
esmas.com 18 19 1
unam.mx 19 20 1
eluniversal.com.mx 20 17 -3
miarroba.com 21 22 1
geocities.com 22 21 -1
univision.com 23 23 0
mcanime.net 24 27 3
occ.com.mx 25 26 1
google.es 26 25 -1
monografias.com 27 24 -3
itesm.mx 28 28 0
terra.com.mx 29 32 3
imageshack.us 30 29 -1
photobucket.com 31 33 2
go.com 32 30 -2
ebay.com 33 31 -2
adultfriendfinder.com 34 41 7
telmex.com 35 35 0
rincondelvago.com 36 34 -2
minijuegos.com 37 44 7
mywebsearch.com 38 42 4
altavista.com 39 40 1
theplanet.com 40 39 -1
forosdz.com 41 38 -3
amazon.com 42 36 -6
ringo.com 43 37 -6
deviantart.com 44 57 13
musica.com 45 43 -2
bancomer.com.mx 46 46 0
invisionfree.com 47 52 5
tripod.com 48 47 -1
tvazteca.com 49 45 -4
msn.es 50 49 -1
imagevenue.com 51 48 -3
sendspace.com 52 56 4
elnorte.com 53 51 -2
fanfiction.net 54 54 0
imdb.com 55 53 -2
gusanito.com 56 58 2
latinchat.com 57 59 2
lycos.es 58 55 -3
reforma.com 59 50 -9
metroflog.com 60    
neopets.com 61 61 0
computrabajo.com.mx 62 62 0
frozen-layer.net 63    
petardas.com 64 67 3
telcel.com 65 63 -2
planetadeletras.com 66 73 7
mgcluster.net 67 60 -7
softonic.com 68 77 9
apple.com 69 65 -4
mediotiempo.com 70 69 -1
oem.com.mx 71 70 -1
sat.gob.mx 72 71 -1
cartoonnetwork.com.mx 73 68 -5
bbvanet.com.mx 74 90 16
facebox.com 75    
tagged.com 76    
free.fr 77 85 8
segundamano.com.mx 78 78 0
aol.com 79 80 1
elmundo.es 80 82 2
udg.mx 81 76 -5
imss.gob.mx 82 72 -10
flickr.com 83 75 -8
disneylatino.com 84 66 -18
googlesyndication.com 85    
atomix.vg 86 87 1
muiegaozsicur.com 87    
anonym.to 88 84 -4
sexuploader.com 89    
adobe.com 90    
jarochos.net 91    
deremate.com.mx 92    
ign.com 93 93 0
hsbc.com.mx 94 88 -6
meristation.com 95 79 -16
lacuerda.net 96    
smileycentral.com 97 100 3
hp.com 98 91 -7
manhunt.net 99 92 -7
ticketmaster.com.mx 100 95 -5

Las disqueras reculan (un poco)

Parece que las disqueras estan escuchando. Segun este articulo Universal Music estara bajando el precio de la musica. 1500 albumes propiedad de la disquera, seran reducidos de precio.

Estos albumes no son nuevos ni actuales, sin embargo, se listan algunos de R.E.M y The Who.

Estos discos pasaran de costar 10 (136 pesos) a 7 euros (95 pesos) y de 8 (109 pesos) a 5.50 (75 pesos) euros.

Esto sin embargo no afectara los precios de las ventas en linea, como Itunes. Sin embargo me parece importante poner citar lo que un ejecutivo de universal

mientras que Jimmy Iovine de Universal ha dicho que es muy pronto para pensar en subir precios (de la musica en iTunes), hasta que hayan más personas que paguen por las descargas.

Es decir, para ellos, el precio de la musica en iTunes es precio promocion, o viendolo de otra manera, esperan a que sea mas popular para hacer volver a subir los precios de los discos, lo que me hace pensar que este movimiento de bajar los precios no es por conviccion, sino por simple presion de mercado. Es decir, la gente ya no estaba comprando los discos tan caros, por lo que tienen bajar los precios.

Como diria Al Pacino en el Padrino “Nothing personal, strictly business”

Juez en españa sentencia que no es ilegal bajar canciones de internet

Me acabo de enterar por medio de esta noticia que un juez de Salamanca, España, sentencio que las descargas por Internet sin animo de lucro no representan un delito.

Si bien, esta sentencia no aplica (obviamente) en las leyes mexicanas, los argumentos que se utilizan bien pueden usarse para futuros casos en mexico, pues se basan en supuestos que también están considerados en nuestras leyes.

Copio un extracto:

“implicarí­a la criminalización de comportamientos socialmente admitidos y además muy extendidos en los que el fin no es en ningún caso el enriquecimiento ilí­cito, sino el ya reseñado de obtener copias para uso privado”.

Es decir, si no hay si se considerara delito bajar musica de internet, tendrian que considerarse tambien delito otras conductas, como por ejemplo, las bibliotecas que compran los libros pero comparten la información de estos sin premiso explicito del autor. Inclusive el escaneo de un documento tendria que se considerado delito, aun si no pretende obtener un beneficio economico directo.

Estas practicas caen dentro del “fair use” y es precisamente lo que este juez dictamino.

Una batalla mas que se gana en contra de los monopolios de la información. Esta, como ya dije, es una lucha que deberí­an considerar perdida…