19 años en Internet

11 septiembre 2014

Distopía



Escena inicial de la película Watchmen (Warner Bros., 2009)

    Vivimos en un mundo globalizado, donde los números y las estadísticas priman sobre las personas y la ética. Grandes corporaciones compran empresas multinacionales con sedes sociales en el primer mundo, las cuales hacen uso de su patriotismo fabricando sus productos en países pobres y almacenando sus fortunas en paraísos fiscales. Su patria no es ni más ni menos que la Globalización y el miedo a otro modo de vida su principal valuarte.

    A día de hoy sabemos purificar el agua y transformar el sol y el viento en electricidad y ya tenemos redes digitales que transmiten información entre grandes ciudades a velocidad de gigabit. A día de hoy sabemos qué alimentos son sanos y cuales tienen una producción sostenible. Pero eso no da dinero.

    Durante el Renacimiento Carolingio, Carlomagno ordenó la creación de escuelas para poder sostener su enorme aparato burocrático (necesitaba gente capaz de leer y escribir), a la vez que así conseguía prevenir la divergencia existente del latín vulgar (precursor de las distintas lenguas romances) entre las distintas regiones de su imperio. Por el otro lado, hoy saber leer y escribir no es impedimento para poder destrozar el lenguaje, ni para crear divergencias de éste en distintas regiones y para más inri ni siquiera te garantiza optar a tener un plato de comida cada noche.

    El sistema social y económico actual está tan viciado, que una vez acabas la educación básica se te forma por especializaciones (letras o ciencias, puras o mixtas) que luego te permitirán optar a una educación superior, con el objetivo de poder comer el día de mañana. Es decir, ya desde pequeños, se nos inculca que elijamos bien qué estudiar por el miedo de nuestra propia subsistencia: Estudia Informática, es el futuro, dicen; No estudies Dibujo, es de bohemios, dicen; No hagas Formación Profesional, eso es de perdedores, dicen; Hazte peón, cobran mucho y la vivienda siempre sube, decían;

    No hace falta ser un lince para entender que el modelo socio cultural actual está viciado, condenado a fracasar. Cuando somos niños se nos invita a soñar, enseñándonos que nosotros nos marcamos nuestros propios límites, pudiendo ser el día de mañana astronautas, futbolistas o presidentes de un (des)gobierno. Cuando alcanzamos la adolescencia se nos despierta el sueño americano, pensando que aunque no seamos unos hachas tenemos la capacidad necesaria para conseguir pegar un braguetazo que nos haga ricos de por vida. Luego crecemos y vivimos para pagar facturas. En pleno siglo XXI resulta que el ser humano no trabaja para vivir, vive para trabajar.

    Y así vivimos felices en el Capitalismo, hasta que el mundo conoció la Globalización. No me malinterpretéis, el Capitalismo no es tan nefasto y la Globalización no tiene por qué ser mala... pero unidas de la mano se crea una sociedad que atrapa las peores virtudes de ambas, vendiéndote el espejismo de sus propiedades buenas:
  • Ese café de Starbugs te lo has pagado gracias a tu puesto de currante sudado con tu frente.
  • Gracias a los visionarios de Manzanas TM disfrutas de una tableta a un precio modélico, puesto que fueron unos visionarios al fabricarlas en China comprando los componentes en África.
  • ¿Que la tienda de barrio vende el juego dos euros más caros que un centro comercial? ¡Coño, que Miguelito asuma pérdidas! Las normas son iguales para todos y yo quiero mis dos euros. Mejor lo compro en internet, que en las islas caíman tienen el sistema PAL y me lo venden sin IVA.
    Y luego resulta que la Globalización unida al Capitalismo nos ha traído una nueva ley, la ley de la jungla, donde el pez grande se come al pez chico, dando como resultado que los pobres son más pobres y los ricos son más ricos. El dinero se vuelve el único Dios y éste a su vez puede fluir a su gusto entre las distintas regiones del Mundo. Y esta ley de la jungla debe persistir para crear un tercer actor en discordia: El libre mercado.

    El libre mercado exige que los estados no intervengan entre productores y consumidores. Es decir, en la actualidad es el término "legal" más parecido al anarquismo, puesto que si un estado decide regular un sector o hacer competencia al modelo privado, este estado será tildado de país bananero o totalitario. No me malinterpretéis, en la actualidad está bien legislar el internet o el derecho de manifestación, que hay mucho loco por ahí que chafa negocios... pero ni se te ocurra legislar la prohibición de verter residuos o de subir el IVA a los artículos de lujo. ¿Nacionalizar la Electricidad? ¡¿A santo de qué!? ¿¡Quieres convertirnos en sudamericanos?! ¡¡Rojo!! ¡¡Vamos a acabar como Corea del Norte!! Gritan alarmados los mismos que saquean los recursos naturales del sur del ecuador terrestre y privatizan hospitales y servicios públicos del hemisferio norte.



Calle 13 - El aguante. Sony Music.

    El libre mercado es tan cool, que unida a la Globalización crea un nuevo actor: la subcontratación. Gracias a ésto la empresa de Pepito Palotes se puede hacer "partner" de la multinacional Mocosoft y subcontratar un servicio de atención al cliente en Filipinas, India o donde quiera que tengan un inglés mejor que el de España (cosa que no es difícil). Una de mis últimas entrevistas de trabajo me lo dejaron claro: Buscamos programadores de francés a precio de dependiente de Mc Donalds, si pagáramos tu valía no moveríamos nuestra empresa de Francia... esto... necesitamos 100 programadores. Hola "Sopa" Group, k ase? :-)

    Sí, en pleno siglo XXI la humanidad está en su apogeo. Hacemos guerras para conseguir petróleo, compramos materiales a países donde es legal la esclavitud y nos suicidamos lentamente consumiendo medicamentos y comida basura. Hace unos siglos Miguel Ángel hizo su David, hoy nos frotamos las manos jugando al último Metal Mear V de Juego Station IV y lo llamamos arte. Sí, me estoy yendo por los cerros de Úbeda.


Linkin Park - No more shorrow. Warner Music Group.
Ladrones e hipócritas... gran estribillo.

    Si estáis relacionados con los principios básicos de la termodinámica, conoceréis la ley de la conversación de la energía, donde en un sistema aislado la energía ni se crea ni se destruye: Se transforma. Algo parecido pasa con el Capitalismo Globalizado: - El dinero no se crea y si se crea pierde su valor; Y cuando el dinero se destruye, alguien acaba pagando los platos rotos (ya sea el responsable o los fondos públicos). ¿Dación en pago al perder tu casa? Eso es de rojos, dicen. ¿Bankia en quiebra? Pues pedimos un préstamo de 100.000 millones de euros y ponemos la deuda pública como aval, total, los productos tóxicos del politiqueo de turno son de interés nacional.

    El capital navega por los mares, en busca de más capital. Si un material se consigue muy barato en otro país y sale más barato transportarlo a una fábrica que comprarlo a una empresa local, no se va a contratar a está última, se contrata a la foránea y lo traemos por cuatro duros. Lo mismo pasa con la mano de obra, con los impuestos, etcétera. Hasta el punto que una empresa minera del sur del hemisferio transporta su mercancía a China para ensamblar productos de diseño de California para luego ser vendidos a Europa. En Europa hay minas y fábricas, pero son unos vagos que saben que un trabajo perjudicial para la salud debe de ser compensado con unos buenos honorarios.



DJ Champion - No heaven. Saboteur Musique.

    Hemos llegado a una situación dantesca, donde los servicios sociales se pagan hipotecando la nación en forma de bonos. Estos bonos a su vez no pueden ser comprados con dinero público de otros países o entidades. No hombre, eso es actuar en contra del libre mercado. No puedes, por ejemplo, pedirle al Banco Centrar Europeo que compre deuda de España, Portugal o Irlanda con un interés del 0,05%. El sistema está tan viciado que debes dejar dinero a entidades privadas al 0,05% para que éstas se lo presten a los países al 3%.

    Para que entiendas la jugada, si el BCE presta 1000€ a diez años a un banco, esta entidad acabará devolviendo 1050€ (5€*10 años + 1000€); Por otro lado, el banco le presta 1000€ a España para que ésta le devuelva 1300 (30€*10 años + 1000€). Ahora imagina la misma cantidad en millones de euros y no en miles. Básicamente en Europa hemos creado una entidad pública que presta dinero a entidades privadas que acaba siendo invertido en otras entidades públicas. Esto es una malversación del dinero público, enriquecemos a terceros: Encontramos una peseta en el suelo y luego resulta que acaba siendo embargada por nuestros deudores.



Def con Dos - España es idiota. Warner.

    Es decir, una nación deberá ser financiada sí o sí por el capital privado. De no ser así se le llama rescate bancario. Tócate los cojones, la deuda la tienes igualmente... pero sólo se reacciona con dinero público si el interés de deuda se dispara. Es decir, en Europa tenemos una forma de hacer las cosas: Sólo ponemos los parches cuando el barco se rompe, la tripulación salta al mar, los tiburones se comen a los supervivientes y las siete trompetas del apocalipsis suenan al unísono.

    En antaño una nación se financiaba con sus impuestos, pero se ve que hoy en día un abuelo tiene una jubilación que dobla la cuantía del salario de un joven, que pertenece a un sector que a su vez resulta que tiene una tasa de paro del 50%. Sí, oyes bien, los empleos se hacen más precarios, hasta el punto que poniendo casi gratis el despido con una nueva reforma laboral tenemos una cifra de paro mayor a la que teníamos cuando empezó la última legislatura. Pero no seas tan acomodado hijo, hay menos trabajo, pero puedes emigrar. Total, el capital emigra y tu tienes que ir a pedir a su puerta.


Tweet escrito por el CEO de Wouzee.


    Muchos empresarios dicen que si se te ofrecen un trabajo en otra ciudad, pues debes aceptarlo. Lo que no entienden es que a la gente le gusta comprar una vivienda, un coche, tener una familia y que con lo que ganan deben de pedir hipotecas a treinta años. Vamos a hacer un croquis a este tipo de empresarios.
1º) Señores, esto es Valencia. Tiene casi 800.000 habitantes:


2º) Su zona metropolitana cuenta con casi 1,8 millones de habitantes:


3º) El núcleo de toda metrópolis está en su ciudad principal. Es decir, un porcentaje importante de la población del área metropolitana va a trabajar a la ciudad o a las afueras de ésta o incluso a otras áreas de la metrópolis. Esto se conoce como movilidad laboral. Puedes pagar una hipoteca en Benetússer e ir a trabajar sin problemas a cualquier otra área que se vea en este mapa.
4º) Irte a trabajar a una ciudad a centenares de kilómetros no es movilidad laboral... 
ES UNA PUTADA.


    Cambiando de cuarto, alguna vez oíste, seguramente, que la población de los países ricos envejece. Eso es una forma maquillada de decir que cada vez nacen menos niños y cada vez hay más viejos. Para que los viejos vivan les hacemos un plan de pensiones público, que debería de pagarse con el dinero que han ido cotizando en el pasado, pero que en realidad acaban pagando los jóvenes que trabajan hoy, los cuales ganan un salario menor. Esto se conoce como modelo insostenible, pero no temáis, que para que sea sostenible, mientras nuestros jóvenes huyen a Alemania para pagar la pensión de un alemán, aquí haremos que las pensiones suban sólo un 0,5% en tiempos de vacas flacas. ¡Y lo vendemos como éxito!

    De paso, como cada vez hay menos jóvenes, seguiremos apostando por motores económicos de ladrillo: Lo veo, lo veo, el ladrillo es el futuro. La historia nos ha demostrado que España sola puede crear más viviendas que Italia, Francia y Alemania juntas, ahora con menos trabajadores y peor pagados conseguiremos claramente más compradores y podremos repetir éste hito y conseguir beneficios. Y si peta, pues culpa de los sociatas y sus seguridades sociales y becas, ¡so rojos! Ostía, ¡un hospital sin privatizar! ¡Rápido, llama a la policía!



Vende, vende, vende... Corto de El Objetivo (La Sexta).

    Repito, a día de hoy sabemos purificar el agua y transformar el sol y el viento en electricidad y ya tenemos redes digitales que transmiten información entre grandes ciudades a velocidad de gigabit. A día de hoy sabemos qué alimentos son sanos y cuales tienen una producción sostenible... pero seguimos apostando por los hidrocarburos, comerciamos con los recursos naturales, especulamos con la comida y el agua, condenamos al apartheid a las renovables, subvencionamos el capital privado... y mi hucha personal no me la toques: Soy un simple humano, así son las cosas.


Attaque 77 - Western. Sony Music.
Homenaje a Favaloro.



---------
Bonus track:



Discurso de Charles Chaplin en El Gran Dictador. 1940

09 septiembre 2014

Tales of Symphonia, gameplay 2

Segunda sesión de gameplay (1 hora y 39 minutos):
  1. Granja de humanos de Iselia.
  2. Cabaña de Galar.
  3. Ataque a Iselia.
  4. Refugio del peregrino.
  5. Triet, el oasis de las arenas.
  6. Segunda mazmorra.
  7. Reencuentro con el grupo de la Elegida.

08 septiembre 2014

Vivo en un país de pandereta

    Vivo un país, el español, donde arma más escándalo el número de seguidores de la cuenta de Twitter de Rajoy que el contrato precario de miles de ciudadanos (mío inclusive). La noticia ha sido portada de los informativos de todas las televisiones, desde Antena 3, La Sexta, pasando por Telecinco y hasta de entradas escritas por miembros de RTVE explicando cómo se pueden comprar seguidores en Twitter. También ha salido en todos los diarios, desde El País, pasando por Público y terminando en La Razón y ABC.

    ¿Es ilegal tener seguidores falsos en Twitter? No, que yo sepa. ¿Cambia algo en el mundo que Pablo Iglesias tenga más o menos seguidores que Rajoy? No, que yo sepa. ¿Cambiarán las medidas del Gobierno el hecho que se demuestre semejante escándalo? No, que yo sepa. Hablar del número de seguidores de un político en una red social es tan útil como hablar del último pantalón que compró la reina Leticia. Se le ha dado tanto bombo a esta noticia, que me encontraba noqueado. El partido que gobierna está imputado ahora mismo por corrupción, por tener una caja B con dudosos ingresos y con más que dudosos gastos... pero aquí la noticia que escandaliza a los medios no es dar bombo a un partido con financiación ilegal que llegó al poder prometiendo lo contrario que están haciendo, si no que Rajoy ahora tiene una oleada de nuevos seguidores en Twitter de forma fraudulenta.

    Tócate los cojones, da igual si te roban en la cara, que si tocas el Twitter, que es más cool que el papel higiénico de doble capa, ¡se te tiran los medios encima! Si Bárcenas quería haber hecho daño a Rajoy tendría que haber pasado de El País o de El Mundo, puesto que la fuente más fiable y dañina a día de hoy es hacer un perfil de Twitter... y si eso a cada imagen adjunta que pusiera Bárcenas en su Instagram, sería apoteósico si lo firmara con un "cc @marianorajoy, LB". Parece una tontería, pero aquí no pasa nada si el presidente manda mensajes de apoyo por sms a un corrupto, lo que te manda al escarmiento público es recibir un @ y acto seguido un unfollow del referenciado, ¡porque si te "unfollowea" debe ser por que dice la verdad el primero! Todo es falso, salvo alguna cosa, dicen.

    Vivo en un país, el valenciano, que desde que está en democracia se ha enriquecido con las ayudas europeas. La paradoja es que a día de hoy, gracias a la política, está en ruinas. En Valencia sabemos mucho de hacer monumentos de cartón-piedra y sabemos que se pueden organizar circuitos de Fórmula 1, competiciones de regatas de fama mundial y edificios mastodónticos sin utilidad alguna gracias a una contabilidad sin igual. Tan sin igual que a día de hoy Europa nos mira con lupa todos los presupuestos desde 1988 por prestunto fraude.

    Mi país valenciano ha sido tan masacrado por los autodenominados demócratas, que la fiscalía ha imputado a altos cargos por desviar dinero destinado a organizaciones no gubernamentales (caso Cooperación), por saquear el agua purificada (caso Emarsa) y por aceptar sobornos (caso Gürtel). Por casos como éste último ha llegado a dimitir Francisco Camps, el primer presidente autonómico en ser imputado en España. Y mientras se robaba y robaba, mi país ha avalado a tres clubes de fútbol: El Valencia CF, el Elche y el Hércules. ¡Pero eh! ¡Que la noticia es que hemos vivido por encima de nuestras posibilidades! Mientras unos saqueaban Bankia (anteriormente Bancaja) y el Banco de Valencia y construían la Ciudad de las Artes y Las ciencias y el circuito de Fórmula 1... ahora resulta que no hay dinero para pagar a los funcionarios y que toca hacer tijera y pedir rescate financiero a España... en más de una ocasión. Y mientras, quitemos las ayudas a la dependencia y las becas, que eso es de comunistas (dicen). Y aquí señores no está el cuento de la "herencia recibida", si no el cuento de la futura madre de todas las herencias...

    En fin, seguid, seguid despotricando sobre los seguidores de Rajoy. A mi me preocupa comer. A cualquier cosa la llaman periodismo a día de hoy.

400.000 visitas

06 septiembre 2014

Tales of Symphonia, opening + gameplay 1

    Mi señora me ha secuestrado la Wii y la tele, así que le he sacado polvo a mi vieja Nintendo GameCube y la he enchufado a mi portátil con una vieja capturadora de vídeo. Aquí tenemos el resultado :-)

Opening:



Primera sesión de gameplay (56 minutos):
  • Iselia (pueblo natal).
  • Templo de Martel (primera mazmorra).
  • Retorno a Iselia.

29 agosto 2014

¿Sirve de algo la clasificación PEGI en videojuegos?

    Hoy me llegó por correo un juego de segunda mano y al ver su reverso quedé desconcertado acerca de la calificación PEGI que obtuvo. Según la valoración de esta agencia europea, mi juego era apto para chavales de doce años, puesto que habían detectado en él los siguientes puntos conflictivos:
  • Violencia.
  • Lenguaje soez.
  • Sexo.
    Ahora viene la duda, ¿qué clase de sexo contiene un juego apto para chavales de 12 años? Lógicamente no se trata de un juego "carnal", si no de una inocente novela visual disponible para la Wii, probablemente la consola con menos tetas (o sucedáneos de tetas) de su generación. Hombre, el título del juego es "Sakura Wars: So long, my love", pero a pesar del título ("hasta luego, mi amor") no es ni más ni menos que una novela visual con combates de mecas (sí, esos robots japoneses gigantes), donde premian las situaciones absurdas más que el supuesto ligoteo. Ahora imaginaros que quiero comprar esto para un sobrino, al ser apto para chavales de 12 años no veo ningún problema, pero ver el logotipo de "SEXO" en mayúsculas ya me hace dudar.


Lo más "wtf" es que cada logo descriptivo tiene un símbolo de "marca registrada" (TM).

    A lo mejor sale alguna minifalda, quién sabe. Yo no sé qué puede considerarse contenido sexual apto para niños de 12 años y en ninguna parte de la caja del juego te lo aclaran. Así que como buen amante de la demagogia que soy, tal y como espero ha quedado patente en los 8 años que llevo escribiendo en este blog, me puse a investigar a qué puede ser debido esta valoración.

    Lo primero que haría, como cualquier buen usuario que quiere saber qué significa cada logo de PEGI, es entrar en su sitio web oficial: www.pegi.info. Ahí, si pones el foco del ratón sobre uno de los iconos que emplea esta empresa de calificación europea, aparece sobre él un cuadro de texto descriptivo. De ahí sacamos que el icono de sexo significa: "El juego contiene representaciones de desnudez o/y comportamientos sexuales o referencias sexuales".


    Hombre, con eso ya tenemos algo y es que si en el reverso de la caja de un juego te aparece un logo con el texto "SEXO" en mayúsculas significa que el juego no tiene por qué contener sexo. Ya es algo, ahora ya sabemos que si el juego es apto para chavales de 12 años a lo mejor nos encontramos alguna referencia sexual o algún comportamiento picarón. De todas formas, a pesar de haber leído esto seguimos sin saber qué contenido subidito de tono tiene este juego.

    No contentos con ello encontramos que el sitio web de PEGI posee una base de datos para encontrar las valoraciones de todos los juegos que han analizado. Dicho esto paso a buscar las observaciones del juego en cuestión... y nos encontramos que cada juego de la base de datos apenas contiene un ligero párrafo descriptivo en inglés: "The content of this game is suitable for persons aged 12 years and over only. It contains: Non realistic looking violence towards human characters - Violence in a sporting context - Sexual images and/or sexual innuendo - Mild bad language - Violence causing minor injury only".


Vamos, que el juego contiene imágenes sexuales y/o insinuaciones sexuales. 

    Ok, aparentemente ya sabemos algo: o que el juego contiene imágenes sexuales, o insinuaciones o ambas cosas. Es decir, que estamos como al inicio, realmente no tenemos ni idea de qué tiene nuestro juego. Así que el siguiente paso es el que mucha gente habría hecho al principio: Buscar imágenes del juego en los buscadores de internet. Tras una ardua búsqueda, la escena más picante que he podido encontrar es una chica que enseña parte de su hombro... ¡y por que lleva un vestido de gala!



    Así que el siguiente paso es buscar en Youtube, donde caigo en el trailer americano del juego y ahí descubrimos una escena donde una chica cae al suelo y sale mojada (pero con mucha ropa y sin transparentar, mal pensados) y una camarera con escote. Aún así, son dos escenas que llaman tan poco la atención que la agencia americana de calificación de juegos dice que de sexo nada, lo que hay son referencias sexuales (algo que también pasa a juegos megapervertidos como a determinadas versiones de FIFA debido a ciertas canciones que han querido incluir).


Captura de pantalla del trailer americano del juego.



Captura extraída de la ESRB americana.

    El caso es que tras ver la clasificación de la ESRB encontramos una definición que también es ambigua ("Alusiones al sexo o a la sexualidad"), pero por lo menos es mucho más completa que la PEGI, puesto que se descarta el "contenido sexual" o la "violencia sexual". Así que si por ahora entendemos que si regalamos esto a nuestro sobrino no se va a convertir en un violador o en el mismísimo Pitbull. Aún así podemos profundizar más en el tema puesto que, al igual que PEGI, ESRB tiene una base de datos donde consultar todos los juegos que han "certificado" y sorprende porque se esmeran mucho más en dar las valoraciones de los puntos que consideran de interés:

Captura del resumen de la certificación en la web de ESRB.
Fuente original: esrb.org

    Traduciendo, atentos a la jugada:
    En este juego de rol, ambientado en una fantasiosa versión de la ciudad de Nueva York (de 1925), los jugadores luchan para proteger la ciudad del ataque de espiritus malignos invocados desde el Japón medieval. El juego gira al rededor de las aventuras de Shinjiro Taiga, un joven cadete militar de Japón, y de su equipo de cinco femeninas pilotos de "mecas". Durante la estrategia de los combates de mecas, los jugadores luchan contra contrincantes robots y demonios utilizando un armamento de explosivos, lásers con látigos/cadenas y espadas. El daño se indica con los mecas destrozándose, puntos de vida en la pantalla y una gran cantidad de luces brillantes --amplificando la fantasía de violencia. Escenas animadas pueden mostrar un personaje ser atravesado (en una silueta de color rojo y negro) o un meca siendo destruido por un golpe de guadaña. Durante el transcurso del juego, los jugadores pueden escuchar algunas palabrotas (por ejemplo "shit", "bullshit" o "bitch"), uno de los factores por los que se le ha puesto la clasificación Teen (adolescentes)
[A continuación se presentan más detalles, factores relevantes y razones por las que se ha calificado el juego] 
    El juego también recibe la calificación de Teen (adolescentes) por sus alusiones sexuales. Diálogos raros que incluyen referencias a la anatomía femenina y más allá; Por ejemplo, "Tienes unos melones explosivos", "No te parece que mi hermana está más buena?", "Tienes el trasero más hermoso de la zona", y "Estaba aquí vigilando el museo, ¡cuando la cosa empezó a menearse!". Algunas de estas frases son tan aleatorias como suenan (modismos poco frecuentes e incongruentes); Otros comentarios tienen un contexto más directo: Una mujer pregunta al jugador que parte del cuerpo le parece la más atractiva; El jugador puede mover el cursor sobre el escote de la mujer para activar la respuesta "Tus pechos, por descontado". A pesar de que todas las descripciones visuales son mínimas (por ejemplo, imágenes estilo manga de mujeres completamente vestidas), los jugadores tienen la habilidad de hacer zoom en las partes del cuerpo, hacer fotos, decir cosas como "¿Puedo tocarlas?" e insistir a las mujeres sobre quitarles la camiseta. En este último ejemplo, los jugadores afrontan la consecuencia de su insistencia, perdiendo puntos de confianza con sus pilotos femeninas de mecas, recibiendo una leve reprimienda (por ejemplo, "Me estoy intentando vestir aquí! Lárgate, ¡¿quieres!?" y "¡Lárgate de una maldita vez antes de que llame a la policía!").
    Ahora todo tiene sentido, tras leer el resumen de la ESRB llegamos a la conclusión que el juego no tiene escenas implícitas (recordemos que destacan que todas las mujeres aparecen siempre completamente vestidas y que no hemos visto ninguna escena picante al buscar previamente imágenes del juego en internet), pero sí varios diálogos subidos de todo, seguramente varios de ellos durante los combates de mecas (los supuestamente aleatorios) y otros que se activan en situaciones concretas. Ahora bien, hay que remarcar que la ERSB califica la categoría Teen para chavales de a partir de 13 años (y no 12, como hace PEGI). En resumen, el juego tiene la clasificación de "Adolescentes" porque en un par de eventos se le da la opción al jugador de realizar comentarios guarretes.

    Podríamos decir ahora, que la información suministrada por PEGI en sus juegos resulta a primera vista muy impactante, puesto que utiliza un sistema de logotipos fácil de entender... pero que, sobretodo en comparación con el modelo americano de la ESRB, resulta dar una descripción muy vaga e imprecisa sobre el contenido real de un juego.

    Y el resultado está ahí: Hemos observado las dos valoraciones del juego y los dos resúmenes presentes en ambas bases de datos y como resultado obtenemos que en ambos casos la calificación PEGI pierde por goleada. Como primera referencia PEGI no es una mala medida, pero se echa en falta algo más de transparencia e información. Veamos el ejemplo de la ESRB: Ofrece unas calificaciones escuetas pero con un rango de valores más amplio y además en su web te cuentan con pelos y señales el por qué de cada valoración.

   Por último, para comprobar que el sistema PEGI hace agua, he buscado una serie de juegos en ambas bases de datos, obteniendo las siguientes calificaciones:
- Mass Effect 1, 2 y 3.
  • Según PEGI: Contienen violencia extrema, lenguaje soez y juego online. No es apto para menores de 18 años. No aparece el logo de "SEXO" en ninguna parte.
Captura de la web de pegi.info
  • Según Sebas: Los tres contienen escenas de cama con desnudos parciales que poco dejan a la imaginación. No contentos con estas escenas, puedes tener aventuras con compañeros del mismo sexo y con extraterrestres.
  • Según ESRB: Sangre, lenguaje soez, desnudez parcial, alusiones al sexo y violencia. +17 años.

- Dargon Age 1 y 2:
  • Según PEGI: Idem que Mass Effect, pero sin juego online. No aparece el logo de "SEXO" en ninguna parte, pero si una advertencia de "violencia sexual" que no aclaran en ninguna parte.

    Captura de la web de pegi.info

    • Según ESRB: Sangre, lenguaje soez, desnudez parcial, violencia y contenido sexual. +17 años.
    - Onechanbara : Bikini Samurai Squad y Onechanbara : Bikini Zombie Slayers.
    • Según PEGI: Contienen violencia extrema y permite la interacción online con otros usuarios. No es apto para menores de 18 años. No aparece el logo de "SEXO" en ninguna parte.
    Captura de la web de pegi.info
    • Según Sebas: Manejas a una japonesa en bikini que va matando zombies. La prensa lo cataloga como "fan service" que sólo sirve para degustar a degenerados. En la portada y en el reverso sale la protagonista con un bikini muy fino. En el reverso sale el texto "SEXY SAMURAI SISTERS". La intro del juego muestra a la protagonista duchándose, sin imágenes explícitas pero muy sugerentes.
    • Según ESRB: Sangre, lenguaje soez, desnudez parcial, alusiones al sexo y violencia intensa. +17 años.

       En los dos primeros casos tenemos 5 juegos con escenas de sexo y desnudos parciales y en el tercero tenemos un juego donde manejamos a una chica de buen ver vestida en biquini y que no contentos con burlar el filtro de PEGI aparece en esa indumentaria tanto en la portada física del juego, como en su reverso e incluso impreso en el DVD del juego. Vale que todos estos casos tengan una calificación de juego para mayores de edad, pero la explicación del motivo en todos, según PEGI, tienen como denominador común la violencia, no el sexo. Es más si no entramos en la web de PEGI para leer "el párrafo", ni nos enteramos de la supuesta "violencia sexual" de Dragon Age 2, puesto que en la caja del juego físico sólo salen los logos de "Violencia" y "lenguaje soez"

        ¿Realmente sirve de algo la calificación PEGI? ¿Está bien poner que un juego tiene contenido sexual pero ser apto para chavales de 12 años y en cambio no mencionarlo en otros por ser destinados a mayores de edad? Con lo que vale una certificación PEGI, ¿no podrían ofrecer la misma transparencia al consumidor como sus homónimos americanos de la ESRB?

    11 agosto 2014

    La extinción del manual de instrucciones

        A día de hoy los videojuegos más famosos contienen un presupuesto similar a las grandes películas de Hollywood. De hecho, juegos como Gears of War 3, Dragon's Dogma o Saints Row IV cuentan con unas pantallas de crédito kilométricas, dando a conocer hasta el último detalle de cada uno de sus equipos: Animadores, guionistas, testers... centenares de personas que unidas han conseguido elaborar un producto mastodóntico.

        Como es de esperar, para poder organizar semejante volumen de gente, debe de elaborarse una documentación completa que no deje ningún cabo suelto: Captura de requisitos, mapas de navegación, casos de uso, esquemas UML... Es probable que los grandes proyectos se gasten miles de euros sólo en documentar hasta el último milímetro de las entrañas de un producto. Y no me lo invento, puesto que las grandes empresas pierden y ganan personal a diario y a día de hoy no existe un framework capaz de crear juegos comerciales con un par de clics de ratón. Si los proyectos no estuvieran bien documentados, a día de hoy no debería ser posible presentar cada año un FIFA, un Bioshock o un Assassin's Creed y encima sacarlo a la venta para varias plataformas distintas.

        La cosa es que a pesar de meter y meter dinero en un proyecto, la industria olvida una cosa: a día de hoy el formato que más vende sigue siendo el físico y lo que el usuario final "toca" cada vez está más anoréxico. No entraré en el tema de que ahora cada vez más juegos vienen capados con DLC dentro del disco físico (como por ejemplo pasa en Street Fighter vs Tekken), o con el famoso "pase on-line"... si no en algo más tangible, algo que se ve a simple vista y es bastante más fácil de palpar.

        Yo he tenido la suerte de vivir el auge del comercio del videojuego desde la época del Spectrum y he podido observar cómo cada vez a los usuarios se les trataba con más cariño. Desde las cajas tradicionales de cassette con instrucciones en la contraportada hasta la época del ordenador y las consolas caseras con cajas de cartón duro y con manuales de instrucciones impresas en alta calidad y con ilustraciones a color. Vale que entonces un juego de ordenador valía la friolera de 7000 pesetas y un juego de Super Nintendo alcanzaba los 12.900... pero demonios, las distribuidoras sabían que el usuario se gastaba los ahorros de todo un año en un juego y sabían que no podían presentarle cualquier cosa...

        Volviendo al presente, hace un par de meses me compré una Wii U de segunda mano. La verdad es gracias a que la consola es un fiasco estos juegos me han salido muy baratos... pero me ha llamado la atención la práctica inexistencia de los manuales de instrucciones. No nos engañemos, no es algo que pase de forma exclusiva con la Wii U, si no algo que ya venía pasando con los juegos que últimanente sacan en cualquier consola... pero también ha sido mala suerte tener un 100% de acierto con esta consola. Cuatro juegos que me he comprado, cuatro juegos que tienen un manual de instrucciones (por llamarlo de alguna forma) anoréxico a más no poder:
    • Mario Kart 8: Una hoja en A5 (mitad de un A4) impresa por ambos lados, donde sólo te explican los controles "in game".
    • Tekken  Tag Tournament 2: Una hoja A4 impresa por ambos lados y doblada en 4 partes.
    • 007 Legend: Una hoja A6 (mitad de un A5, es decir 1/4 de una A4) impresa por ambos lados.
    • Mass Effect 3: El caso más sangrante, una hoja en A5, impresa por ambos lados que lo único que te explica es la garantía, la información de copyrights y un aviso que dice que accedas al manual electrónico desde el menú de Wii U para leer el manual de instrucciones del juego.
        Yo puedo entender que el sacar panfletos en vez de manual de instrucciones ayuda al medio ambiente y no me parece tan mala idea... al fin y al cabo ahora hasta el juego comercial más basura te coloca fácilmente 100.000 unidades en el mercado. Pero imaginad a la persona que se haya gastado sus 50 o 60 euros en uno de estos juegos, abra la caja del DVD y se encuentre únicamente con un disco compacto y una hoja en formato A5. Ahora imaginaros a su amigo "el pirata" que no paga ni un duro y se ríe en su cara con la famosa frase de: "mira que eres tonto, tengo lo mismo y gratis". Sí, todos hemos tenido un amigo que nos ha soltado eso alguna vez, no lo neguéis.

        Es que esto es tomar al consumidor del formato físico por gilipollas. No sé, si lo que quieres es no talar árboles y sacar los juegos igualmente a 60 euros, por lo menos tened la decencia de meter el manual de instrucciones en una tarjeta SD o de imprimir en papel reciclado. Veo un avance de que a día de hoy las cajas ya no sean de cartón, pero entiendo que no lo hacen por el medio ambiente, si no porque son más baratos de producir... y vete a saber si el plástico de los estuches de videojuego son biodegradables, puesto que las distribuidoras los compran en masa a empresas localizadas en países con dudosas normativas biológicas.

        El caso es que esos manuales de instrucciones "no anoréxicos" existen. Puede que no se hayan gastado en ellos tanta "plata" como la documentación con la que he empezado hablando al principio de la entrada, "pero haberlos, haylos"... pero en formato digital. No obstante tenemos que ser realistas: El manual digital no cuaja con los juegos físicos. Estoy a favor del medio ambiente, no me mal interpretéis, pero ya que nos sacan a día de hoy los juegos mutilados por fascículos con DLC y pases online (y ahora incluso sin manual de instrucciones...), por lo menos tened la decencia de bajar el precio del producto.

    30 julio 2014

    Aprendiendo Python, día 2

    1.- Objetos (II):

    1.1 - Herencia:

        En Python los objetos pueden heredar sus atributos de otra clase padre.

        Ejemplo:
    class item():
            # Variables de instancia
            s_name          = None
            s_description   = None
            f_value         = float(0)
            # Constructor de clase
            def __init__(self, s_name, s_description, f_value):
                    self.s_name             = s_name
                    self.s_description      = s_description
                    self.f_value            = float(f_value) 
    class potion(item):
            # Variables de instancia
            i_health_point_restores = int(0)
            # Constructor de clase
            def __init__(self, s_name, s_description, f_value, i_health_point_restores):
                    self.i_health_point_restores    = int(i_health_point_restores)
                    # Llamamos al constructor del padre
                    item.__init__(self, s_name, s_description, f_value) 
    potion_1 = potion("Pocion", "Bebida", 100, 100)
    print "El item es "+ potion_1.s_name + " y recupera", potion_1.i_health_point_restores, "puntos de vida"
         Si nos fijamos, al definir una clase hija definimos quién es el padre y más tarde volvemos a referenciar el padre (otra vez) cuando hacemos llamada a su constructor. Esto se debe a que Python permite herencia múltiple.

        Ejemplo:
    class age_old():
            i_age   = int(18)
            def __init__(self, i_age):
                    self.i_age      = int(i_age) 
    class genre():
            s_genre = "male"
            def __init__(self, s_genre):
                    self.s_genre    = s_genre 
    class character(age_old, genre):
            s_name  = None
            def __init__(self, s_name, i_age, s_genre):
                    self.s_name     = s_name
                    age_old.__init__(self, i_age)
                    genre.__init__(self, s_genre)
     

    character_1 = character("Messi", 24, "male")
    print character_1.s_name + " has", character_1.i_age, "years old and is " + character_1.s_genre
        Otra característica de la herencia en Python, es que podemos reescribir métodos de una clase padre sin necesidad de utilizar palabras reservadas para tal efecto.

        Ejemplo:
    class a():
            def to_String(self):
                    return "Hola"
            pass 
    class b(a):
            def to_String(self):
                    return "Adios"
            pass 
    v_variable = b()
    print v_variable.to_String()
        Habrás notado en el ejemplo anterior que he empleado la palabra "pass". Esta palabra reservada puede emplearse en la definición de clases para ahorrarse la definición de constructores. No es recomendado su uso, pero resulta últil a la hora de codificar rápido.

    2.- Bases de datos:

        Existe para Python una serie de conectores para bases de datos bastante útiles, las cuales podemos clasificar de tres tipos:

    1. Tradicionales (modelo servidor de base de datos + autenticación + cliente).
    2. Embebidas (base de datos almacenada en un fichero local).
    3. Volátiles (base de datos almacenada únicamente en la memoria RAM).

    2.1 - Bases de datos tradicionales.

        Cuando hablamos de un entorno tradicional de bases de datos, nos referimos a que nuestra aplicación ataca contra un servidor o servicio de base de datos. Es decir, necesitamos conocer un usuario con el que autenticarnos, su contraseña y la ip (y/o puerto) del servicio.

        Ejemplo (requiere paquete python-mysqldb):

    import MySQLdb 
    # Conexion SQL
    sql_connection  = MySQLdb.connect('ip_server', 'user_name', 'password', 'bda_name')
    sql_cursor      = sql_connection.cursor() 
    # Sentencia
    sql_cursor.execute("select name from photos where 1 order by date limit 0,10") 
    # Listamos los resultados
    for v_tupla in sql_cursor.fetchall() :
        print v_tupla[0]

    2.2.- Base de datos empotradas y volátiles

        No obstante, es bastante común en las aplicaciones de escritorio emplear bases de datos persistentes en ficheros o hacer uso de bases de datos temporales que existen en su memoria RAM. El primer modelo suele emplearse en aplicaciones que hacen uso de colecciones elevadas de datos (como por ejemplo un reproductor de audio como Amarok que gestiona y clasifica todos los ficheros por autor, género, además de almacenar el número de veces que has escuchado un tema, etcétera) mientras que el segundo suele verse más en juegos (donde se hace uso de distintas tablas y vistas que no requieren ser almacenadas para salvar la partida).

        Es cierto que una aplicación de escritorio puede emplear otro tipo de gestión de datos. Por ejemplo, hay aplicaciones que almacenan sus colecciones en ficheros de texto plano o en ficheros XML, por citar unos ejemplos comunes. No obstante, emplear una base de datos embebida o empotrada nos presenta dos mejoras importantes:
    1. Búsqueda de información más rápida, puesto que se realizan consultas SQL y no una lectura secuencial de datos.
    2. Los gestores de BDA empotradas más comunes generan ficheros cifrados.
        Tanto si queremos hacer una base de datos embebida o una volátil, en Python podemos hacer uso del plugin de SQLite3.

        Ejemplo de base de datos empotrada:

    import sqlite3 
    # Si el fichero de la base de datos no existe, se crea
    sqlite3_connection = sqlite3.connect("mi_fichero_de_BS.db")
    sqlite3_cursor = sqlite3_connection.cursor() 
    # Si no existe nuestra tabla "photos", la creamos
    sqlite3_cursor.execute("create table if not exists photos (id int, content blob)") 
    # Leemos una imagen en formato binario
    f_picture = open("test.jpg", "rb")
    with f_picture:
        picture_data = f_picture.read() 
    # Insertamos fotos a la BDA
    sqlite3_cursor.execute("INSERT INTO photos (name, content) VALUES (0, ?)", [sqlite3.Binary(picture_data)]) 
    # Confirmamos el cambio
    sqlite3_connection.commit()
    sqlite3_connection.close()
        Ejemplo de base de datos volátil (atención al nombre del archivo, el resto es igual que una base de datos empotrada):
    import sqlite3 
    # Si el fichero de la base de datos no existe, se crea
    sqlite3_connection = sqlite3.connect(':memory:')
    sqlite3_cursor = sqlite3_connection.cursor() 
    # Si no existe nuestra tabla "empleados", la creamos
    sqlite3_cursor.execute("create table if not exists employee (name varchar(200), age int)") 
    # Insertamos valores
    d_employees = dict()
    d_employees["Sebastian Moncho"] = 30
    d_employees["Garijo"] = 25
    d_employees["Querido lector"] = 21
    for v_index, v_value in d_employees.items():
            sqlite3_cursor.execute("INSERT INTO employee (name, age) VALUES ('"+ str(v_index) +"', " + str(v_value) +")") 
    # Confirmamos el cambio
    sqlite3_connection.commit() 
    # Hacemos un select e imprimimos por salida estandar
    sqlite3_cursor.execute("select name, age from employee where 1")
    for v_tupla in sqlite3_cursor.fetchall() :
        print v_tupla[0] + " tiene", v_tupla[1] 
    sqlite3_connection.close()

     

    3.- Convertir a C y compilar

        Existen varios compiladores de código para Python (para aquellas ocasiones que no queramos que los demás lean nuestro código). La opción más extendida es la de hacer uso de la aplicación Cython para convertir nuestro código de Python a lenguaje C. Su uso es bien sencillo. Este código puede además compilarse y emplearse en otros sistemas (de la misma arquitectura) siempre que "linkemos" con la librería estática de Python o bien exportemos la dinámica. No voy a entrar en cómo "enlazar" las librerías, sólo me remitiré a deciros que esto existe y os voy a mostrar un ejemplo rápido.

        Convertir un código fuente .py a código fuente de c:
    cython --embed sqlite3_volatil.py -o sqlite3_volatil.c
        Crear un objeto de c a partir del código fuente:
    gcc -c sqlite3_volatil.c `pkg-config --cflags python` -o sqlite3_volatil.o
        Crear el ejecutable binario:
    gcc sqlite3_volatil.o `pkg-config --libs python` -o sqlite3_volatil
        Si hacemos un ldd sobre nuestro nuevo binario, veremos las librerías dinámicas que emplea nuestro binario para posteriormente decidir cuales exportar:
    ldd sqlite3_volatil 
    linux-vdso.so.1 =>  (0x00007fff642a0000)
    libpython2.7.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 (0x00007f0301ae6000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f0301720000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f0301501000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f03012e8000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f03010e4000)
    libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f0300ee0000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f0300bda000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f030206c000)
        Si ejecutamos nuestro binario, veremos que tendremos el mismo comportamiento que con el intérprete:
    ./sqlite3_volatil
    Garijo tiene 25
    Querido lector tiene 21
    Sebastian Moncho tiene 30
        Podemos crear un script de bash para hacer uso de las librerías dinámicas que exportemos y así poder ejecutar nuestro binario en máquinas Linux de la misma arquitectura:
    #!/bin/bash
    declare -r ARCH=`uname -m` 
    [ "$ARCH" == "x86_64" ] &&\
            export LD_LIBRARY_PATH="./libs/x86_64" &&\
            ./sqlite3_volatil

    24 julio 2014

    Llega a Gog la primera hornada de juegos compatibles con Linux... ¡y lo celebra con descuento!



        Desde hoy está disponible en GOG.com su primera hornada de juegos compatibles con Linux y para celebrarlo dichos títulos se estrenan como oferta del fin de semana, con un 75% de descuento. No destacan mucho por su calidad (salvo honrosas excepciones), pero sí por su cantidad (gran parte porque bastantes de ellos funcionan con un emulador DosBox modificado para la ocasión).



       A diferencia de los intalables de Windows o Mac, las versiones de Linux cuentan con dos posibles descargas: Un paquete .deb optimizado para Ubuntu 14.04 (requiere permisos de administrador) o un sencillo tarball (comprimido tar.gz que deployea la aplicación, puedes ejecutarla a través de un script start.sh) que permite su ejecución en otros sistemas (no garantizado) y sin requerrir permisos de super usuario.

    Lista completa de los juegos compatibles con Linux presentados hoy:

    • Anomaly Warzone Earth
    • Ascendant
    • Bionic Dues
    • Blake Stone: Aliens of Gold
    • Blake Stone: Planet Strike
    • Bloodnet
    • Braveland
    • CLARC
    • Darklands
    • Darwinia
    • Defcon
    • Don't Starve + DLC
    • Dragonsphere
    • Duke Nukem 3D: Atomic Edition
    • FlatOut
    • Flatout 2
    • Fragile Allegiance
    • Gemini Rue
    • Gods Will Be Watching
    • Hammerwatch
    • Hocus Pocus
    • Kentucky Route Zero
    • The Last Federation
    • Legend of Grimrock
    • Litil Divil
    • Long Live the Queen
    • MouseCraft
    • Multiwinia
    • Normality
    • Pinball Gold Pack
    • Pinball World
    • Pirates! Gold Plus
    • Realms of the Haunting
    • Rex Nebular and the Cosmic Gender Bender
    • Rise of the Triad: Dark War
    • Shattered Haven
    • The Shivah HD
    • Sid Meier's Colonization
    • Sid Meier's Covert Action
    • Sir, You Are Being Hunted
    • Slipstream 5000
    • Space Pirates and Zombies
    • Spacechem
    • Stargunner
    • SteamWorld Dig
    • Super Hexagon
    • Surgeon Simulator 2013
    • Sword of the Samurai
    • Teslagrad
    • Unrest:Special Edition
    • Uplink
    • VVVVVV

    Aprendiendo Python, día 1

    1.- ¿Qué es Python?

        Python es un lenguaje de scripting (lenguaje de programación interpretado) con dos objetivos clave: Ser inteligible y ser multiplataforma. Al ser un lenguaje interpretado, significa que cuando se ejecuta un programa escrito en Python no se ejecuta un código binario, si no el código fuente en si, permitiendo que cualquier usuario final pueda editarlo (ahora bien, existen herramientas de terceros que te permiten generar binarios .exe, por ejemplo).

        Por otro lado, al ser multiplataforma significa que todo lo que se tenga que ejecutar tendrá que funcionar de forma parecida (dentro de lo que se pueda) en distintos sistemas operativos. Esto es un punto a favor respecto a otros lenguajes de scripting como Batch (sistemas Windows), Bash o AWK (Unix)... además de contar con otra mejora importante respecto a estos: Python es un lenguaje de scripting con orientación a objetos.

    2.- ¿Cómo se instala?

        En entornos Linux suele estar presente en la mayoría de repositorios, pudiendo instalarse fácilmente con programas como yum o apt-get (ejemplo, en Ubuntu bastaría con abrir una shell y teclear: sudo apt-get install python-all).  En entornos Windows basta con instalarse el instalable suministrado en la web oficial de Python.

    3.- "Hello World" y  "What's your name?"

        El primer programa que hacemos siempre en cada lenguaje de programación que queremos aprender es el famoso "Hola Mundo"... Una sencilla aplicación de consola que lo único que hace es imprimir por salida estándar (pantalla) el texto de "Hola Mundo". Haciendo uso de nuestro editor de texto preferido vamos a crear un fichero de texto plano llamado helloworld.py y le vamos a poner el siguiente contenido:
    print "Hello world!"
    Guardamos el archivo, abrimos una terminal y ejecutamos:
    python helloworld.py
        Verás que nos sale una nueva línea con el texto Hello world!. Como ves éste ha sido uno de los Hello World más sencillos que has hecho en tu vida: haciendo uso una mera línea de código. Si en Windows no te encuentra el programa "python", dale un vistazo a cómo definir las variables del sistema de Python, serguramente el ejecutable no se encuentra en ninguna ruta de tu Path.

        Ahora vamos con un paso más complicado, vamos a imprimir por salida estándar "Cómo te llamas?", vamos a hacer que se nos pregunte por entrada estándar nuestro nombre y acto seguido imprimiremos "Encantado de conocerte, XXXXX". Para ello crearemos el fichero de texto plano whatsyourname.py y añadiremos las siguientes líneas:
    # -*- coding: utf-8 -*-
    print "¿Cómo te llamas?"
    s_name = raw_input()
    print "Encantado de conocerte,", s_name
        La primera línea es necesaria porque estamos utilizando carácteres que no están presentes en la codificación ASCII estándar, como es el símbolo de apertura de interrogación o el acento en la o. Sin esa línea nuestro script no podría ejecutarse "por errores de código". Ahora bien, esta línea sería innecesaria si nuestros literales estuvieran escritos únicamente en inglés o en castellano pero sin carácteres no presentes en la codificación ASCII.

        En la tercera línea pedimos una entrada manual de datos y hacemos que el dato o datos suministrados se guarden en la variable s_name. Si nos fijamos, a diferencia de otros lenguajes de programación no hace falta definir ni inicializar previamente dicha variable. Por último, por defecto Python entiende que todas las variables son strings, pero podemos forzar su uso como float o integers (por ejemplo) haciendo uso de castings. Para demostrar esto (que todas las variables por defecto son cadenas de texto), os presentaré un pequeño cambio en el código:
    # -*- coding: utf-8 -*-
    print "¿Cómo te llamas?"
    s_name = raw_input()
    print "Encantado de conocerte, " + s_name
        Si ejecutamos ahora el código veremos que el comportamiento es exáctamente el mismo que antes, pero hemos añadido un espacio en blanco dentro de las comillas y hemos concatenado la cadena s_name haciendo uso del símbolo "+".

        Podemos presentar una tercera variación del código, dado que raw_input permite mostrar una cadena de texto a la vez que pide la entrada de datos:
    # -*- coding: utf-8 -*-
    s_name = raw_input("¿Cómo te llamas?\n")
    print "Encantado de conocerte, " + s_name
        Por último, si eres usuario de Linux, existe una forma con la que puedes ejecutar tus programas de Python sin necesidad de escribir siempre "python " delante:
    1. Desde una terminal ejecuta which python para conocer la ruta donde se encuentra tu intérprete de Python. En mi caso se encuentra en /usr/bin/python.
    2. En la primera línea de tu script escribe lo siguiente: #!/usr/bin/python
    3. Dale permisos de ejecución a tu script: (desde consola) chmod +x script.py
    4. Ejecutalo escribiendo su ruta absoluta o relativa: ./script.py

    4.- Conceptos básicos de Python

    4.1- If, else if, else, enteros y cadenas.
        Python no usa llaves para separar bloques de código (como son clases, funciones o condiciones). Para delimitar esos bloques se hace uso de sangrías (tabulaciones) o 5 espacios en blanco. Suena raro, pero es práctico y genera código inteligible. Para entender esto os dejo un ejemplo de condiciones:

    # -*- coding: utf-8 -*-
    v_number = raw_input("Dame un número\n")
    v_number = int(v_number) 
    if v_number > 10:
            print v_number , "es > 10" 
    elif v_number == 10:
            print v_number , "es 10" 
    else:
            print v_number , "es < 10"
        Si nos fijamos, en el caso anterior hemos hecho un casting a int para poder realizar una comparación con un valor entero. De no haberlo hecho, Python habría entendido que v_number era una cadena de texto y por consiguiente de no ponerlo no obtendríamos el resultado esperado. Ejemplo de comparación correcta con cadenas de texto:
    # -*- coding: utf-8 -*-
    v_name = raw_input("Dame un nombre\n") 
    if v_name == 'Sebas':
            print v_name + " es Sebas" 
    else:
            print v_name + " no es Sebas"

    4.2- Bucles
        Python permite dos formas de embuclado de flujos: los famosos while y for. Su funcionamiento es similar al del resto de lenguajes de programación, permitiendo que se ejecute un bloque de código de forma concurrente hasta que deje de cumplirse una condición.

    Ejemplo de uso de while:
    v_i = int(5) 
    while v_i >= 0:
            print v_i
            v_i-=1
    Ejemplo con un "while true":
    # -*- coding: utf-8 -*-
    while True:
            v_number = int(raw_input("Dame un número\n")) 
            if v_number == 0:
                    break
        Donde con While True exigimos que el bucle sea infinito, pero con el break indicamos que el bucle morirá cuando insertemos el número 0.

        Por otro lado el bucle for realmente actúa como un bucle "foreach".

    Ejemplo 1, contar del 0 al 4:
    for v_i in range(5):
            print v_i
    Ejemplo 2, contar del 5 al 9:
    for v_i in range(5, 10):
            print v_i

    Ejemplo 3, leer todas las líneas de un fichero de texto plano:
    s_file_name = "mi_fichero.txt"
    v_file = open(s_file_name) 
    for s_line in v_file:
            print s_line
    Ejemplo 4, deletrear una cadena de texto:
    for c_char in 'QWERTY':
            print c_char
    Ejemplo 5, tratar un array elemento a elemento:
    l_nombres = ["sebas", "paula", "joan"] 
    for s_nombre in l_nombres:
            print s_nombre

    4.3- Colecciones
        Al igual que muchos de los lenguajes modernos, Python permite hacer uso de colecciones, siendo las más famosas de su catálogo las listas y los diccionarios. Una lista puede entenderse como un conjunto de elementos ordenados como una pila FIFO (first in, first out).
    l_names = list()
    l_names.append("sebas")
    l_names.append("paula")
    l_names.append("joan") 
    for s_name in l_names:
            print s_name
        Por su parte, un diccionario es lo que se conoce como un array referenciado, donde el índice no tiene por qué ser un número entero (algo bastante típico en lenguajes como AWK o Perl). A diferencia de las listas, su orden es LIFO (last in, first out)... pero el orden puede cambiar si jugamos con el método sort.
    # -*- coding: utf-8 -*-
    l_age = dict() 
    l_age["sebas"] = 30
    l_age["paula"] = 20
    l_age["joan"] = 25 
    for v_index, v_value in l_age.items():
            print v_index + " tiene", v_value, "años"

    4.4- Funciones
        Para crear una función bastará con escribir delante de su nombre la palabra referenciada "def", pondremos entre paréntesis los parámetros que requiere (si es que requiere alguno) y definiremos todo su contenido haciendo uso de un nivel de sangría.

    Ejemplo 1:
    # Funcion
    def insult_user(s_name):
            if s_name == "Sebas":
                    print "Guapo!"
            else:
                    print "Feo!" 
    # Hilo principal
    s_name = raw_input("Dame un nombre\n")
    insult_user(s_name)
    Ejemplo 2:
    # -*- coding: utf-8 -*-
    def div_5(v_number):
            return float(v_number)/5 
    v_number = raw_input("Dame un número\n")
    print "Su división entre 5 da", div_5(v_number)

    4.4- Objetos
        A diferencia de otros lenguajes de scripting, Python es un lenguaje orientado a objetos.

    Ejemplo:
    class footballer():
            #Variables de instancia
            s_name = None
            s_average = 50
            #Constructor de la clase
            def __init__(self, s_name, s_average):
                    self.s_name = s_name
                    self.s_average = s_average
            def lesionar(self):
                    self.s_average = int(self.s_average)/2  
    v_footballer_1 = footballer("Cristiano Ronaldo", 89)
    v_footballer_2 = footballer("Sofiane Feghouli", 95)
    v_footballer_3 = footballer("Lionel Messi", 90) 
    v_footballer_2.lesionar() 
    l_team = list()
    l_team.append(v_footballer_1)
    l_team.append(v_footballer_2)
    l_team.append(v_footballer_3) 
    for v_footballer in l_team:
            print v_footballer.s_name + " tiene una media de", v_footballer.s_average

    15 julio 2014

    Jazztel manda estafadores a mi casa

        Hace un par de años recibía muchas llamadas de Jazztel para intentar convencerme de que cambiara de operadora de internet. No es que vea mal que me llamen, pero cansa que lo hagan de forma sistemática y con operadores que desconocen qué es lo que venden. De hecho, puedo asegurar que Jazztel es una de las razones por las que todos mis teléfonos están en la lista Robinson.

        ¿Cómo sabía que sus operadores estaban mal preparados y que no sabían lo que me vendían? Por lo que aseguraban que me vendían:
    - Señor, le ofrecemos un router de tecnología alemana con soporte para udpstreaming que le permite una aceleran...
    - Tengo un router Cisco.
    - Pero nosotros le ofrecemos un router de tecnología alemana, que como sabe es la industria más potente...
    - Mi router es Cisco.
    - Pero el nuestro tiene teconología upd hiper streaming que entre otras cosas mejora la velocidad de los vídeos en internet y el de los gráficos de los juegos.
    - Espera, ¿me estás diciendo que los gráficos de los juegos de ordenador mejoran con su router?
    - Sí señor, gracias a nuestra tecnología hiper...
    - Hablas en serio, ¿vuestro router mejora los gráficos de los juegos de ordenador?
    - Sí, puesto que...
    - Oye, que no sigas, te lo agradezco pero me quedo con mi operadora.


    #TrueStory

        Como comenté antes, este tipo de problemas los solucioné cuando me di de alta en la lista Robinson. Ahora bien, ahora el acoso llega a otro nivel: Me mandan comerciales a casa. La mecánica es siempre la misma: Cada dos meses se ha acabado la instalación de fibra óptica en tu finca y ellos, amablemente, se pasan para informarte que ya hay fibra óptica en tu casa. Da igual si desde hace años tienes contratada la fibra óptica de Ono, Vodafone o incluso PTV Telecom, ellos te venden que acaban de acabarse las obras de fibra óptica y que por lo tanto vienen a ofrecerte. No son los únicos, también recibo visitas continuas de Vodafone, pero estos últimos se les ve mejor preparados y son mucho más amables.

        Siempre que ha venido a mi casa uno de sus comerciales, mi señora y yo los hemos despachado de buenas formas, haciéndoles comprender que no nos interesa su oferta. Ahora viene lo bueno: Siempre que se despiden te tachan de una lista suya dando a entender que así no volverán a molestarte. Pero la realidad es otra, a los dos meses han vuelto a acabarse las obras de fibra óptica del edificio y se pasan a informarte para ofrecerte una magnifica nueva: te van a instalar la fibra óptica gratis y sólo esta vez... tras otra, tras otra, tras otra...


    - ¿Me instalan fibra óptica gratis? ¿Y sólo hoy?

        Siendo esta una rutina del día a día, pues realmente no vale la pena escribir una entrada sobre ello. El problema viene con el último comercial que me mandaron a casa. Eso no era un comercial. Era un puto estafador de mierda (perdón por las palabras). El típico lumbreras que vendería agua haciéndola pasar como cura para el VIH. Siento ser tan duro, pero el espécimen que me mandaron a casa (por llamarlo de alguna forma) no tenía ética ninguna.

        Recapitulemos, un señor de unos 40 años vino a mi casa a informarme que acaba de instalarse la fibra óptica en mi edificio. Cómo no, este informador trabajaba para Jazztel, como todos los anteriores que vienen informándome últimamente. Primero empiezan por lo simple: ¿Qué compañía tienes y cuanto te cobra por internet, televisión y teléfono? Yo le comenté que estaba con la empresa más barata y que era imposible mejorar la oferta: 30 euros al mes. El me respondió que me la mejoraba por 40 euros al mes. Lógicamente, yo no veía una mejor oferta pagar 10 euros más, pero él se excusaba diciendo que la velocidad de internet era mejor.

        Ahora bien, atentos a la jugada maestra: A diferencia de mi operador, el hombre me ofrece un router capaz de ofrecer velocidad simétrica (subida y bajada) para todos los dispositivos de casa de forma simultánea. Es decir que, palabras textuales suyas, si contratas 200 MB de velocidad, todos los dispositivos de casa, ya sea uno o 20, pueden bajar a 200MB al mismo tiempo.

        Yo le comenté que eso no era posible, puesto que con la tecnología actual se ofrece un cuello de botella: El router tiene salida de fibra óptica de 200MB, pero tiene que gestionar las conexiones de todos los dispositivos de casa. Es decir, que si la velocidad de internet es de 200MB, es imposible tener 100 dispositivos bajando al mismo tiempo a 200MB. Hagamos mucho más simple el ejemplo. Imagina que cada minuto tienes 6 manzanas y que tienes 1 hijo. Cada minuto tu hijo tendrá 6 manzanas. Ahora imagina que tienes 3 hijos. Cada minuto cada hijo tendrá 2 manzanas. Así de simple. Podemos empezar a filosofear sobre el sexo de los ángeles y comentar que a lo mejor un hijo recibe 4 manzanas, otro dos y el último se queda mirando a Cuenca... pero el mensaje es claro: Si tienes 6 manzanas por minuto, no puedes repartir 18. Los 200MB no se asignan a cada dispositivo de la casa, se asignan al router, al cachivache ese que "habla" con la operadora.

        Pero el hijoputa (hdp en adelante) me decía que no. Que él sabía que era algo difícil de entender, puesto que la fibra óptica era una tecnología nueva y que "eso funcionaba como los teléfonos", que hoy en día desde una sola línea podía realizar llamadas y recibirlas al mismo tiempo desde diferentes puntos de la casa. Yo le paré el carro diciendo que estaba mezclando peras con manzanas... pero pobre de mi, que me contestó con un "hombre, yo entiendo que es difícil de ver, pero lo que pasa es que para entenderlo pues tienes que hacer cursos sobre el tema, como yo".



    CEAC presenta sus cursos de certificación CCNA de Cisco.

        Entonces entré en furia con el hdp, remarcándole que si quiería una red tan perfecta como la que él me describía para eso compraba un router cisco de seis mil euros y lo enracaba con un switch para tener tropecientos servidores a la velocidad de la luz. Pero él, lejos de entender que me quejaba del cuello de botella de un router casero, volvió a la técnica de que yo era un burro que no hacía cursos como él y que él mismo instalaba esos servidores. "Que era lógico, que los servidores se ponían a internet con fibra óptica". Me dieron ganas de cerrarle la boca diciendo que para instalar un servidor no necesitas cursos, necesitas certificaciones.

        Pero no contentos con ser más mentiroso que un cojo, se superó con la segunda jugada: Según el hdp (alias comercial de Jazztel), en 2015 las líneas ADSL van a desaparecer, al igual que el teléfono y la televisión por TDT. Según él, es algo que se lleva planeando y que será una migración similar a cuando en 2005 dejamos de tener televisión analógica y pasamos a tener la famosa Televisión Digital Terrestre. #TrueStory, hablo en serio, no me lo invento.


    ¿Tienes fibra óptica? ¡No pasa nada! ¡Te vendo fibra óptica!

        Ajam, ahora lo cascas, puesto que en la última declaración de intereses del hdp era imposible soltar tantas mentiras por segundo. Pero no temáis, puesto que el hdp se encargó de destacar una y otra vez que con Jazztel y sólo ahora, podíamos tener una instalación de TV, internet y teléfono que nos ahorre esta migración. También nos remarcó una y otra vez que la oferta sólo podía pedirse ahora, puesto que en el futuro la instalación pasaría a valer unos 300 euros.

        Ahora bien, como yo le respondía que lo que decía no podía ser, volvió a lo mismo de que "sabía que era difícil de entender, pero que era cierto, que iba a pasar como con la TDT". Yo de vez en cuando le cortaba diciéndole que cuando eso pase (cuando se corte el TDT si es que llega a cortarse) ya lo hablaría con mi operadora en el futuro, pero eso sólo daba lugar a que el hdp reaccionara con el mismo monólogo: Que entonces mi operadora me cobraría un ojo de la cara por la migración y que si lo contrataba ahora tendría una instalación de fibra óptica gratis.

        Tras un buen rato con el hdp despotricando mierda y ver que no caíamos en su estafa, el hdp se despidió preguntando de qué trabajaba. Le contesté la verdad: Programador informático. Su reacción, lejos de reconocer su cagada fue decir "claro, yo soy de redes, departamentos distintos". Y él que sabrá a qué me he dedicado yo toda mi vida, si no siempre he sido programador, y puede que yo no sea certificado CCNA, pero el departamento de redes de mi empresa es certificada Cisco y para colmo los soporto (con cariño) todos los días.

    En fin.
    Resumamos:
    1. Que sepas que las obras para fibra óptica de tu edificio se estropean mucho, cada dos meses las vuelven a instalar.
    2. Que sepas que según el hdp que me mandó Jazztel el TDT se va a acabar, al igual que el teléfono tradicional o el internet por ADSL.
    3. Quiero saber si es posible obtener una orden de alejamiento para que no se me acerquen comerciales de Jazztel nunca más.


    ----- Bonus track: What does the chameleon say?

    14 julio 2014

    Anunciada Raspberry Pi B+

        La Raspberry Pi Fundation ha anunciado hoy el lanzamiento de su nuevo modelo de micro ordenador: La Raspberry Pi B+, el cual se trata de una versión mejorada del modelo B, donde se han añadido los siguientes cambios:
    • Se reduce el consumo en un 30%.
    • Se incrementa a 4 el número de puertos USB 2.0.
    • Se sustituye la ranura SD por otra de MicroSD.
    • Se incrementa a 40 el número de pines de la ranura GPIO.
    • Mejoras en el circuito de audio


    Foto del modelo B+ sacada de RS Online.


    El modelo B+ se puede comprar desde hoy y al mismo precio que su predecesor.

    08 julio 2014

    Un regalito

        Esta semana fue mi cumpleaños, así que para celebrarlo a lo grande y compartir con vosotros mi alegría, he decido crear un NPC de Oblivion con mi nombre. Lo podréis encontrar paseando por el distrito del mercado de la Ciudad Imperial y además, nuestro valiente Sebastián, podrá combatir a vuestro lado puesto que hace uso del mod CM Partners Mod Basic de Blackie (requerido para poder funcionar).




    Descarga: Google Drive

    ---- ---- ---- ----
    BONUS TRACK!



    "My little Skyrim - SpectraDash"