Archivo

Archivo para la categoría ‘Interneteando’

Recopilación de soluciones para los retos de #tuentiContest . Challenge #2

Miércoles, 22 de Junio de 2011 Gaspar Fernández 2 comentarios

Últimamente he hablado acerca del I concurso de programación de Tuenti. Un concurso de programación Online que se llevó acabo durante la semana pasada (del 13 al 20 de Junio, muy mala fecha).

Podéis ver los enunciados de todos los problemas, con ejemplos sobre la entrada y salida (aunque a veces no hay que haerles mucho caso) en la web oficial del concurso, pero en Vidas Concurrentes lo encontramos todo en español.

Challenge #2 : TLang

Se trata de implementar un parser que suma, reste y multiplique, con los símbolos ^= ,^# 2 2 y ^@, eso sí, el final de la operación siempre lo marcará un $. Por otra parte, hay símbolos, como ^@ (resta) que pueden ir sólo con un número, en lugar de con varios. Debemos leer de la entrada las operaciones a realizar y devolver el número de salida.

Soluciones:

Si no estás en la lista y quieres plantear tu solución, deja un comentario con tu link !

Actualización: 2011/06/22 13:54 : Error tipográfico
Actualización: 2011/06/22 20:00 : Añadida solución de @Puigcerber
Actualización: 2011/06/28 07:58 : Añadida solución de @theom3ga
Actualización: 2011/07/02 22:30 : Añadida solución de @frisco82
Actualización: 2011/07/03 13:30 : Añadida solución de @Rosapolis
Actualización: 2011/07/08 12:37 : Añadida solución de captain_regex

Finalizó el Tuenti Contest, ¿qué os pareció?

Miércoles, 22 de Junio de 2011 Gaspar Fernández Sin comentarios

img

Empezó siendo un comentario de mi novia, ya que al entrar en Tuenti, unos días antes de que se llevara a cabo aparecía al entrar, y yo, que como veis me encanta este mundo, me apunté. Al principio fue con la intención de coger ejemplos para las clases particulares, que muchas veces me encuentro con alguna duda puntual de un alumno y me quedo sin ejemplos.

Lo que pretendía, ingenuo de mí, era saltarme todos o casi todos los retos, copiar las preguntas y los resultados, para hacerlos tranquilamente en cuanto tuviera algo más de tiempo. Ya investigaría si me viene un algoritmo raro y los desarrollaría tranquilamente para este blog.

Por parte de la organización del concurso se facilitaban una serie de programas para probar los programas realizados y para enviarlos, es normal que poner espacios de más o textos que no son exactos a la solución esperada sean rechazados, es un sistema automático, esto ha sido una de las quejas que he visto por ahí, es verdad que podrían haber hecho un trim() para los espacios del final, pero bueno, nos lo han dejado a nosotros. Además, una vez subías una respuesta o te saltabas un reto, no había vuelta atrás.

Pero cuando el día antes de empezar publican un ejercicio de prueba de “lo que íbamos a encontrarnos”, me puse a hacerlo durante el desayuno, me pareció muy curioso lo que planteaban, me gustó la sensación al ver los OK! al probar mi código.

Al día siguiente, entré para ver cómo era todo, para no hacer muchos retos y bajarme contenidos, pero vi el segundo, y me puse a hacerlo, aunque desde el punto de vista de un profesor de programación, intentando utilizar órdenes básicas y que no asusten mucho a estudiantes y en C, y así el tercero, y el cuarto, y cuando menos me lo esperaba me di cuenta de que llevaba 7 retos hechos y tenía que dejarlo durante un rato.

Pero bueno, más allá del pique que me produjo el desarrollo de los problemas encontré varios inconvenientes:

  • Las pruebas que proponían en la página web del concurso no se parecían en nada a las pruebas de la fase de test y éstas tampoco se parecían a las pruebas que se realizaban a la hora de subir el código, cada vez eran pruebas más duras, y algún programa que hice aunque superó la prueba del test, no superó la prueba al subir.
  • Cada vez explicaban menos qué había que hacer y las pruebas propuestas eran incompletas o erróneas, lo cual dificultaba un poco la realización de los retos, aunque sí, por otra parte, agudizaba nuestro pensamiento ingeniero.
  • La comunicación por parte del usuario de Twitter de Tuenti (@TuentiEng) era más bien poca. Aunque comprendo que tampoco se puede contestar a todo y a todos.
  • Los últimos retos eran frustrantes, en el 17, por ejemplo, sólo decía “Just do it” e imposibles, bueno, no tanto, porque hay personas que los superaron.

Un detalle curioso es que la comunicación por parte de Tuenti se hacía a través de Twitter y, aunque puede parecer contradictorio, yo creo que tiene toda la lógica del mundo, hay más personas con Twitter que con Tuenti, y por Twitter la comunicación es más fluida, aunque también había un muro en la red social organizadora pero no tenía ni la décima parte de actividad.

Por último me gustaría felicitar a todos aquellos que habéis completado el concurso (yo me quedé por el 20, aunque el 19 no me terminó de salir bien, lo mio no es la criptografía, aunque poco a poco iré aprendiendo) y destacar aspectos muy positivos de este concurso:

  • He aprendido cosas muy interesantes, nos piden implementar problemas que no se suelen implementar en una carrera universitaria, y si se han llegado a implementar, las pruebas que debían pasar los algoritmos, no son tan duras en muchos casos.
  • Tengo una comunidad en Twitter más amplia con nuevos contactos muy interesantes, sobre todo de participantes.
  • La experiencia ha sido muy positiva. Participé activamente en el concurso y eso que sólo iba a seguirlo por encima para copiar los enunciados.

Actualización: Una cosa más, estoy preparando un post recopilatorio con todas las soluciones que encuentre.

Skype + Webcam en Linux Mint / Ubuntu 64bit

Lunes, 11 de Abril de 2011 Gaspar Fernández 2 comentarios

skype-webcam_recorteLa semana pasada, el 6 de abril salió la nueva versión Beta de Skype 2.2 para Linux. Aunque esta versión esté a años luz de la versión para Windows (aunque por otra parte lo prefiero, no quiero que recarguen tanto el programa), había algunas cosas básicas que deberían haber hecho hace tiempo, sobre todo en el campo de la compatibilidad con la cámara web, por ejemplo.

El programa no es libre, ni piensa serlo, aunque el protocolo de voz de skype es de lo mejor que he visto, ya que permite la comunicación con mucha compresión, más nítida que con otros medios y un ancho de banda similar. Y aunque no se les vea muy comprometidos, hay que darles la enhorabuena por hacer su software para esta plataforma, y  al menos permitir comunicarnos con otros usuarios de skype.

Hasta el momento, para mí había varios problemas:

  • Con ALSA, a veces quería enviar más información de la cuenta o menos de la que se espera, y ALSA se quejaba, dejaba de escucharse un tiempo. Skype decía que era culpa de ALSA, ALSA, que era culpa de skype…
  • Con Pulseaudio a veces se perdía el sonido, era fallo de skype, pero bueno, se reinicia y no pasa nada.
  • Webcams:
    • Con una gráfica Intel, olvídate de que se vea tu webcam (es raro, pero ni ves ni envías)
    • Con otra gráfica, pero un SO de 64bit, olvídate también, no se podrá acceder a la webcam.

En esta nueva versión han hecho cambios en esos aspectos, dicen que han mejorado el audio con Pulseaudio, y al no poder provocar el error no lo he podido probar todavía, y han mejorado el soporte de webcams. Con un equipo con gráfica Intel no he probado, pero sí en 64bit.

Para funcionar con la webcam en 64bit (con ciertas cámaras, por ejemplo la OV511/519, yo tengo una Creative muy vieja, también se repite el problema con algunas Genius y algunas Logitech). Primero tendremos que instalar los módulos de compatibilidad de Video4Linux de 32 bit.

$ sudo apt-get install lib32v4l-0

Y a la hora de ejecutar skype:

$ LD_PRELOAD=/usr/lib32/libv4l/v4l1compat.so skype

Esto ya funcionaba en la Beta 2.1 con algunas cámaras, pero no con todas. Ahora funciona con algunas cámaras más.

Podremos configurar el acceso directo a skype para que ejecute también el LD_PRELOAD.

Ahora mismo, dejo las instrucciones para Linux Mint / Ubuntu, aunque en cualquier distribución podremos instalar las librerías Video4Linux de 32bit y precargarla antes de ejecutar skype.

Gráficos híbridos, Linux, la cabezonería de los fabricantes y el reinado de Microsoft

Miércoles, 16 de Marzo de 2011 Gaspar Fernández 6 comentarios

Desde hace años el diseño de hardware informático ha ido consumiendo más y más energía; cuando hace años, un ordenador funcionaba con una fuente de alimentación de 200W, hoy en día, es fácil encontrar hardware para el que se recomiendan 700W. Como es lógico, tal como están las cosas en cuestión energética y con el fin de hacer una informática más verde, los fabricantes se esmeran en buscar soluciones hardware y software que nos permitan hacer que nuestros equipos informáticos consuman menos electricidad.

Antes de nada decir que aunque Hybrid Graphics sea una tecnología de ATI, me referiré como gráficos híbridos a la coexistencia de dos sistemas gráficos en un mismo ordenador, poco a poco iremos matizando.

En el terreno sobremesa

En el terreno gráfico, es muy fácil ver una GPU con cerca de 2000 millones (dos mil millones) de transistores en su interior (este año saldrán modelos con 6000 millones de transistores), y aunque sólo estén en pleno funcionamiento durante la ejecución de juegos, contenido 3D o procesamiento GPGPU, los chips gráficos por sí solos tienen un consumo que va creciendo a medida que se complican los circuitos (sin contar la memoria asociada y la circuitería periférica). Existen tecnologías como el escalado de la frecuencia (la circuitería consume algo menos, los chips se calientan menos y ahorramos más energía en ventilación), o desactivación de algunas partes de la GPU, aunque cuando estamos realizando un trabajo con poca carga gráfica, es inevitable que mucha potencia se consuma por culpa de la GPU y no la estamos aprovechando.

Gracias a la inclusión de chips gráficos en placas base, a la reciente (desde primeros de 2009), inclusión de chips gráficos en procesadores Intel (este enlace es un ejemplo), y la nueva generación de APUs de AMD (AMD Fusion, que aunque llevan desde 2006 desarrollándolas acaban de salir), en el terreno energético, vemos que vamos a tener un chip gráfico asegurado, tal vez no sea lo más potente del mundo, pero nos permite poner imágenes en un monitor; así que, si no compramos una tarjeta gráfica, podremos utilizar esa GPU como gráfica, habrá una circuitería interna para generar una salida para monitor y podemos salir del paso, además, no consumirá demasiado. Ahora bien, si compramos una gráfica aparte, querremos utilizarla (normalmente tendrá una GPU más potente, más memoria y consumirá más), en este caso tendremos dos “tarjetas gráficas” trabajando a la vez y consumiendo energía.

La idea de la tarjeta gráfica integrada viene de lejos, recuerdo que en el año 97, se podía comprar un hardware similar, con un chip gráfico integrado en placa base; la diferencia de precio de modelos con y sin chip gráfico no era demasiada, por lo que no debemos esperar mucho de esa tarjeta. Eso sí, la placa base tenía su salida de monitor, y si pinchábamos una tarjeta, ésta tendría su salida aparte; también era una forma barata de poder conectar dos monitores, aunque como la mayoría de los mortales de la época trabajábamos con un monitor, si queríamos conectar una gráfica externa, era recomendable desactivar el hardware gráfico integrado en placa desde BIOS, por un lado, por problemas de compatibilidad y por otro, para no tener chips trabajando de forma innecesaria. (Aunque no recuerdo si se dejaban de alimentar los chips gráficos con esa configuración, no creo).

3dfx-voodoo-1Volviendo a la actualidad (por un momento) algo ha cambiado, y es que con la conciencia ecológica de los fabricantes, seguro que podemos dejar de alimentar los chips gráficos integrados, al menos gran parte de ellos. Pero si por ejemplo queremos dejar de lado el terreno energético podemos hacer que los chips gráficos trabajen en colaboración para una experiencia de usuario inigualable (no es más que procesamiento paralelo CPU+GPU+GPU). Todo esto, me hace sentir viejo, ya que me recuerda a la tarjeta Voodoo, esta tarjeta pionera en el furor del 3D, necesitaba una tarjeta gráfica adicional para todo lo que fuera 2D (la Voodoo tenía una salida y una entrada de monitor por fuera de la torre; la tarjeta gráfica 2D se conectaba con la Voodoo y ésta al monitor. Además, para algunos modelos posteriores permitía conectar dos tarjetas Voodoo con un interfaz interno para que éstas trabajaran en colaboración y trabajar 3D a más resolución (SLI, una idea de 1998 que, se abandonó y luego se volvió a poner en marcha en 2004/2005, en ATI se llamará la tecnología Crossfire).

En conclusión en este terreno la tecnología ha avanzado mucho; y normalmente con Linux puede que sólo haya una pequeña pega. Hablando de sobremesas, normalmente en la configuración de la BIOS encontramos opciones para desactivar la gráfica integrada (en placa base), desconozco si se podrá desactivar desde aquí cuando viene integrada en el procesador. Desde nuestro sistema operativo, depende de dónde conectemos el monitor, trabajaremos con una u otra gráfica, en Xorg configuramos con qué driver gráfico trabajar y con qué pantalla. El problema viene cuando queramos utilizar la potencia de las dos tarjetas, sólo a veces, es decir, cuando nos interese tirar de GPGPU sin importar el consumo energético, como tengo los dos chips gráficos activados, no hay problema, pero cuando termine de trabajar, sería muy efectivo poder dejar de trabajar con un chip y desactivarlo desde software, y este interruptor sólo está disponible en Windows. Aunque hay proyectos para ello, o si nos ponemos a jugar con ACPI podemos conseguirlo, los fabricantes no nos lo podrán fácil (estamos acostumbrados a ello, aunque [1]AMD lleva [2]liberando [3]especificaciones [4]unos [5]años) y así contribuyen a que Microsoft gane terreno en el campo energético (aunque podamos conseguir que un Linux sea más respetuoso con el sistema y el medio ambiente , no podremos lograr quitarle la corriente a un chip que se dedica a absorber potencia y producir calor, en algunos casos y cuando se logra, es necesaria una investigación previa y echar un día buscando por Internet.

En el terreno portátil

Casi todo lo explicado para la parte sobremesa nos vale aquí; aunque tenemos que pensar que un portátil pretende ser más eficiente energéticamente y de hecho necesitaremos que lo sea; personalmente cuando compré mi portátil (hace casi 5 años), logré extender las 2h y media de uso con batería en Windows a más de 4h y 30 minutos en GNU/Linux.

Y como tenía que ser, la inclusión de 2 GPUs en un mismo equipo portátil está presente desde el 2007 más o menos y siempre tendremos el caso de un chip malo (por así decirlo, es un chip barato, consume poco, pero también tiene pocas capacidades) y un chip bueno (un NVIDIA, un ATI con GPUs potentes). Aunque bueno, si nos compramos un portátil y no podemos desactivar una GPU, pues lo tenemos enchufado, o confiamos en que el fabricante saque algo para poder desactivarlo. En principio no sería un problema mayor.

Lo malo viene ahora, y es que en un portátil normalmente se economiza también el espacio y las conexiones, por lo que tendremos sólo una salida de pantalla y lo peor es que normalmente estará conectada a la gráfica “mala”, la integrada. Para un trabajo normal, no pasa nada, podemos  utilizar el ordenador perfectamente, pero siendo conscientes de que sólo podremos utilizar la gráfica menos potente y, aun teniendo una buena tarjeta gráfica al lado, para juegos, vídeo o tratamiento 3D, no podremos manejar la GPU más potente, vamos para todo lo que sea visualización, ya que al estar presente y conectada podemos aprovechar la potencia para GPGPU, pero sólo para eso, ya que si le decimos a Xorg que sólo utilice el chip gráfico “bueno” nos dirá que no tiene pantallas conectadas.

Ese es el gran problema, tenemos dos sistemas gráficos y una sola salida, y un conmutador software. Dado que los ordenadores portátiles no destacan por sus opciones en BIOS, estoy seguro al 90% que nuestro portátil con tecnología gráfica híbrida no tendrá la capacidad de desactivar por BIOS el sistema gráfico integrado, otra manera es con un interruptor hardware, es como la manera antigua y la manera que queda es con un driver y desde nuestro sistema operativo, vamos la forma modernita.

toshiba-a660-1emCuando tratamos este problema, mi primera toma de contacto con este tema fue al adquirir un portátil Toshiba A660-1EM. Dado que su sistema operativo principal era GNU/Linux me dispuse a su instalación, y pude comprobar rápidamente que después de una hora de uso (más o menos) con GNU/Linux se calentaba más que con Windows, y consumía más.

Este portátil trae una gráfica NVIDIA 33oM y la gráfica Intel que viene con el Core i5, los drivers de NVIDIA los instalé sin problema, por lo que supuse que todo iba bien hasta que comprobé qué controlador se estaba utilizando (bueno, también basta con arrancar nvidia-settings que te dice que no está funcionando). Fue cuando me puse a investigar sobre el tema. Además, este modelo trae una tecnología llamada Optimus que promete ser la panacea para el ahorro energético, es un controlador que cambia dinámicamente el sistema gráfico que se usa: si el ordenador piensa que necesitas potencia gráfica, conecta el chip gráfico bueno y si no, lo desconecta; sólo para Windows 7, y sin planes de dar soporte para Linux de esta tecnología, porque no les da la gana (dicen que en un futuro, pero si leéis los foros veréis que ponen a caldo a NVIDIA). Bueno, funciona en W7, y con software nuevo, hay quien ha reportado algún problema, muchos programas que no saben lo que es Optimus e identifiquen la salida gráfica activa, fallarán [1][2], incluso en el archicompatible Windows 7.

Es decir, la gráfica Intel funciona, la gráfica NVIDIA funciona pero no se ve, todo el sistema funciona perfectamente, y sólo falta la capacidad de un mísero sistema de conmutación entre la salida gráfica de la Intel a la NVIDIA.

Desde NVIDIA no dicen nada más, y no nos facilitan las cosas. Existen varios proyectos (que enlazo al final del post), hechos con ingeniería inversa y colaboración de muchos usuarios afectados para poder hacer que ese interruptor actúe y funciona en varios modelos de portátiles (aunque cada uno es de su fabricante y no es algo general y válido para todos); el método es algo artesano, requiere investigar un poco, además, se necesita el Kernel Mode Setting (KMS, más info), el gran problema es que los drivers oficiales de NVIDIA no soportan esta tecnología, y con una gráfica tan nueva, el driver nouveau, que sí soporta KMS, se queda un poco corto. Además, lo más fácil es desactivar la corriente de la GPU “buena” por lo que vale, no consume energía, pero me he gastado 200€ más en un portátil con una gráfica buena para no poder usarla, ya que muchas veces, si desactivamos el sistema gráfico integrado, el sistema deja de responder.

Por lo que, de momento, el hecho de comprar un portátil (para uso con GNU/Linux) con una tarjeta NVIDIA Optimus queda descartado, porque no vamos a poder usarla, aunque si lo que queremos es programar en CUDA, sí que vamos a poder. Aunque otro inconveniente que he encontrado en otros modelos, es que aunque no soportan Optimus, el conmutador que cambia la salida de la gráfica “buena” a la “mala” y viceversa es software y con un driver que no se encuentra en Linux (eché una mañana hablando con varios técnicos de Toshiba, sé que ellos sólo saben de Windows, pero al menos, saber si la gráfica se conmuta por software, por BIOS o por un interruptor sí que tienen que saberlo).

Con ATI la cosa va mejor, ya que Catalyst soporta KMS, y realiza la conmutación, y aunque no lo he probado hay mucha gente que lo ha conseguido, por ejemplo vemos información aquí, aunque el combo Intel/ATI suele funcionar, no lo hace el 100% de las veces, aunque hay mucho terreno recorrido, pero no del todo y de todas formas el modo colaborativo entre los dos chips gráficos es otra historia.

En conclusión

Lo realmente indignante, es que, aunque sea un sistema operativo minoritario (que no tanto), y aunque la culpa sea difícil de echar (NVIDIA? Intel? El fabricante de la placa base? El de la BIOS? Todos ellos?), no se haya desarrollado un estándar para esta conmutación en portátiles (al menos no lo he encontrado), o en su defecto, por parte de los fabricantes haberse desarrollado un parche para el kernel, que sabiendo cómo está hecho en pocos días de trabajo puede salir algo a la luz, eso les daría publicidad en muchos blogs/foros especializados y ganarían clientela; o al menos liberar las especificaciones de cómo lo han implementado.

Es una lástima perder el tiempo intentando lidiar con un problema parecido, aunque al menos en mi caso Toshiba perdió una venta (devolví el portátil), además, en el servicio técnico, me recomendaron que para mi problema podía comprar un Serie Qosmio (no recuerdo el modelo, pero cuando vi que costaba 1400€ cerré la página inmediatamente) y Asus también (porque estudié comprarme un portátil de esa marca), al final compré un sobremesa.

Para saber más

Linux Hybrid-Graphics . Tienen blog y una lista de correo en Launchpad.

ASUSM51Ta & Linux . Howto para este portátil con un combo ATI/ATI

airlied @ LiveJournal . David Airlie (de Red Hat) creó un módulo para el kernel que conmuta la energía para los chip GPU (vga_switcheroo)

VGA Switcheroo en Gentoo Wiki . A la manera Gentoo, mirando el kernel y paso a paso

OpenShot: Revolucionando el vídeo digital en Linux

Lunes, 31 de Enero de 2011 Gaspar Fernández Sin comentarios

openshot_rotate_before

OpenShot es la revolución del vídeo digital (libre) en Linux. Hace unos meses cuando salió la versón 1.2 veíamos que el programa prometía; pero últimamente (durante este mes y parte del mes pasado) ha habido grandes novedades en el mundo OpenShot.

OpenShot está desarrollado en Python, ayudándose de la librería MLT (Media Lovin’ Toolkit) y GTK+2 y lo mejor es que no tiene demasiadas dependencias.

Si nos pasamos por el blog, podremos comprobar:

  • Grandes novedades y efectos como editor de vídeo, algunos de ellos bastante buenos ayudándose de la interfaz python de Blender 2.5.6 (no es estable aún).
  • Perfeccionamiento en efectos existentes (con la nueva versión de MLT, tenemos nuevos métodos de redimensionado y OpenShot lo aprovecha.
  • Mejoras en estabilidad y usabilidad.
  • ¡ Sistemas de partículas !
  • Canonical utiliza OpenShot para los montajes para la web.

Estamos deseando que se libere OpenShot 1.3 que trae todo esto y mucho más, y la repercusión que está teniendo esto se refleja en que han subido las donaciones en su web, los comentarios y los fans de Facebook.

Soy consciente de que aún queda mucho camino por recorrer para poder batir a programas comerciales (tipo Premiere, MediaStudio Pro, Avid, etc), pero ya es muy superior a otros como Windows Movie Maker. El proyecto está muy vivo y tiene muy buena salud. Desde aquí os animo a probarlo y a seguir muy de cerca las novedades. Estaremos atentos.

Curioso e interesante V: Windows phone VS SD, Cubo en 3D con HTML5+CSS3,Curiosidades de la sangre, número PI y frigoríficos linuxeros y más

Sábado, 27 de Noviembre de 2010 Gaspar Fernández 2 comentarios

Comentarios en el código fuente

Domingo, 19 de Septiembre de 2010 Gaspar Fernández 2 comentarios

Leo en Stack Overflow los mejores comentarios que se han encontrado muchos desarrolladores en el código fuente. Merece la pena leerlos, y echar un ratillo. Advertencia… está en inglés.

Podemos encontrar muchísimas disculpas, y es cierto que muchas veces recurrimos a soluciones rápidas, ininteligibles para los demás humanos, no demasiado optimizadas y mucho menos elegantes, pero que nos hacen el apaño.

También encontramos algunos como:

1
return 1; # returns 1
1
long long ago; /* in a galaxy far far away */
1
double penetration; // ouch
1
return 0; // Happy ending
1
2
// Added because boss changed his mind : 20020111,20020501,20020820, ...
// Commented out because boss changed his mind : 20020201,20020614,20020908, ...
1
// This code worked before, but my cat decided to take a trip across my keyboard...
1
2
// Since today's CPUs are really fast, this is dedicated to those who said:
// " You can't use Moore's Law as an excuse to write bad software. "

Bueno… y mucho más…

La pesadilla de cambiarse a Windows

Lunes, 13 de Septiembre de 2010 Gaspar Fernández Sin comentarios

No suelo hacer un post sólo para enlazar un artículo, pero este me ha parecido interesante.

Y es que muchos vez un cambio a Linux como algo oscuro y siniestro, pero hay personas que consideramos el cambio a Windows como algo tremendamente difícil.

La pesadilla de cambiarse a Windows - Paraíso Linux

Personalmente, ¿ por qué uso Linux ?

  • Me hace más productivo
  • Me da más sensación de seguridad
  • Me permite hacer más cosas
  • Me gusta aprender algo cada día

Todo va mucho más allá de la filosofía del software libre.

Cumplir los plazos en el desarrollo de software

Martes, 3 de Agosto de 2010 Gaspar Fernández Sin comentarios

Leo un artículo en Sitepoint muy interesante de cara a establecer los plazos de entrega de nuestros proyectos de desarrollo.

Sinceramente es un tema peliagudo, sobre todo porque la mayoría de los clientes no tienen claro lo que quieren, sólo saben que quieren el precio lo más ajustado posible, y que lo quieren para ayer; y muchos creen que es decir la menor cantidad de detalles posible, omiten características importantes que tal vez en su idea son esenciales, pero actualmente desconozco su idea. Es muy importante dejar claros todos los puntos del desarrollo y que no haya vacíos ni aspectos sin definir (eso viene con la experiencia).

Recomiendo la lectura del artículo (está en inglés), aunque pongo aquí los algunos puntos clave:

  • Proyectos mal especificados
  • Más desarrolladores NO IMPLICA desarrollo más rápido
  • Plazos demasiado optimistas
  • Cambios repentinos del proyecto: Ésta es la que peor llevo, el cliente muchas veces pide pequeños cambios; algunos, pueden ser pequeños para el cliente, pero implican retocar muchas cosas que ya están hechas, por otra parte, muchos pequeños cambios requieren mucho tiempo; y a veces es difícil hacer ver al cliente que eso cambia los plazos y el presupuesto. Imaginad que necesito un edificio, y cuando está la estructura hecha, pido que el ascensor lo quiero en otro sitio…
  • No se incluye el tiempo de pruebas: Es cierto, que los proyectos requieren una serie de pruebas, por parte del usuario final, a veces como programadores hay cosas que no vemos, y sólo las detectará el que utiliza la aplicación. Aunque también es cierto que como el cliente quiere los proyectos para ayer a veces se elimina el tiempo de pruebas a conciencia, para adelgazar el plazo

Sobre los 100 millones de usuarios de Facebook ¿Robados? ¿Filtrados?

Domingo, 1 de Agosto de 2010 Gaspar Fernández Sin comentarios

Hace unos días, surgió la noticia de un hacker, Ron Bowes de Skull Security, quien con un par de scripts (ahora mismo la web no funciona) ha conseguido recopilar toda la información pública de más de 100 millones de perfiles de Facebook, es decir, lo que es visible para todos, los que no tenemos como amigos, además es un archivo 100% legal, ya que lo único que la información recopilada es la que los usuarios comparten con todos. Por si fuera poco está publicada en un torrent 100% accesible a cualquiera.

Paso a continuación una serie de enlaces donde ver la noticia: Alt1040, Blog de Manuel Pereira González, ABC, Thinq, y muchos más sitios.

Aunque en muchos titulares habla de que el archivo incluye números de teléfono y fechas de nacimiento, querría desmentir todo aquello, copio un fragmento del archivo README con el contenido del archivo:

facebook.rb The script used to generate these files (v1)
facebook.nse The script that will be used for the second pass (v2)
facebook-urls The full URLs to every profile
facebook-names-original All names, including duplicates
facebook-names-unique All names, no duplicates
facebook-names-withcount All names, no duplicates but with a count
facebook-firstnames-withcount All first names (with count)
facebook-lastnames-withcount All last names (with count)
facebook-f.last-withcount All first initial last name (with count)
facebook-first.l-withcount All first name last initial (with count)

Vemos que, como mucho, contiene el nombre y la URL, aunque por otra parte, he de decir que no sería demasiado difícil extraer los datos que figuren como públicos en estos perfiles, aunque todavía hay esperanza para aquellos que no han hecho sus datos privados.

Aunque por otra parte, yo que tengo el perfil abierto, con todos los datos públicos, no aparezco en el listado, por lo que es interesante buscarse. Para ello:

$ bzcat facebook-urls.txt.bz2 | grep [identificativo de tu URL de Facebook]

Donde el [identificativo de tu URL de Facebook] es lo que ponemos en la barra de direcciones para acceder a nuestro perfil: http://www.facebook.com/….

O también podemos buscar por nombre

$ bzcat facebook-names-unique.txt.bz2 | grep nombre

Así saldrán todos los que se llaman como tú.

Eso sí, leo en Alt1040 otra noticia, muchas empresas se están descargando el torrent, a pesar de sus políticas de protección de datos, anti-torrents, etc, y esperemos que en los próximos días no empiece a llegar spam por Facebook.

Visita otras webs de la red