miércoles, 24 de septiembre de 2008

ya(sí).com, ya(no).com

Antes de ayer se me rompió algo por dentro...concretamente un DataCenter...y es que, a falta de tres días para terminar por fin la carrera, cuando más falta me hacía, va y aparece Murphy...yuju, yupiiii...

Lo que más me jodió fue pasarme de las 3 a las 5 de la mañana (nadie ha dicho que duerma de día, pero podría ser más que probable) llamando al único número de servicio técnico del ISP de ya.com y que metódicamente me fuera colgado el teléfono...a la mañana siguiente, a eso de las 8 (nadie ha dicho que no necesite dormir, pero parece que el café surte efecto) decían que el servicio técnico se iniciaba a las 9...arggh....y sin internet para saber que pasa todo se vuelve recursivo. Y a las 9 pusieron un mensajito diciendo que "mi zona" (ole ese ciudadano español) estaba afectada por una incidencia (acarajotada perdida)...

Pero gracias a un amigo pude recuperar la calma , que me dejó aposentarme cerca de su santa persona (amén) en su lugar de trabajo. Me dió la vida, sobre todo cuando pensaba pasarme los dos días siguientes mendigando conexión.

Pero ya.com volvió (vaya que marca.com se les querellara) y aquí estoy (oleoleole) escribiendo desde casa.

Danke fergu

sábado, 20 de septiembre de 2008

Emilio Aragón vs . Paolo Vasile

Y con esto sólo va otra más de las fechorías de Telecinco. Youtube, google y la sexta, son sólo algunos ejemplos de lo que le pasa a Telecinco y a su manía persecutoria (alias "el scattergories es mío y me lo llevo").

Pero antes debería explicarme, de acuerdo con El País el juzgado mercantil nº1 de Barcelona acaba de de prohibir a la Sexta emitir imágenes de Telecinco. Se trata de un fallo definitivo al parecer, como también lo será la indemnización que al parecer le seguirá.

Y es que Telecinco alega que el 20% de sé lo que hicisteis, entre otros programas, es de Telecinco...ante eso sólo cabe decir tres cosas:

  • No hay tantas cadenas en España, desgraciadamente el 20% es lo que les toca de casi todo (aunque se merezcan menos).
  • Si hicieran televisión de calidad (MEV salve a Camera Café, que debe de sentirse como un empollón en un colegio del Polígono -en todas partes hay un Polígono-) no pasaría esto.
  • Anoche justamente estaban retransmitiendo en Telecinco su programa fijo de zapping, El coleccionista de imágenes...¿y para eso tienen ellos autorización?¿De todos?

En cuestión de meses podemos ver como al propiedad intelectual llega a televisión, como una SGAE que nos quite nuestros derechos; derecho a reirnos de los demás, por ejemplo, derecho a saber.

Y como telecinco siga tocando los cojones, a saber que hacen los demás con ella,..., porque youtube no tiene los derechos de sus vídeos y realmente para esa compañía es como una picadura en el talón de una mierda de mosquito...pero quién sabe, yo sólo lo dejo ahi (porque yo conozco el plan mundial -jaJAjaJAJAJAJAAA...-).

Esto me recuerda a la lucha por los partidos de liga hace algunos años, donde no dejaban a las cadenas entrar ni siquiera para hacer sus resúmenes (¿en esas ocasiones no era Telecinco quien se quedaba fuera y se está vengando?), ¿no era injusto eso y lo es también esto ahora?

Si esto tuviera repercusión pondría alguna campaña de ataque a programas de Telecinco...pero aún no se me ha ocurrido nada...si se os ocurre, ya sabéis, si no, también sabéis.

viernes, 5 de septiembre de 2008

Canadienses en el frigorífico


Eso es lo que pasa por pedirme que marque los huevos de la docena antigua cuando llega una nueva docena dominante a la nevera...qué matanza.

PD: me acabo de dar cuenta de que, con eso de que Google es el amo y señor de todo lo visible y lo invisible (más de lo invisible), ahora las imágenes se cargan en picassa...así que ahora todo es un pequeño-gran monopolio, con muchos nombre dtos...que nos hacen la vida más fácil (supongo...viva el openID).

miércoles, 3 de septiembre de 2008

El cadaver de Lenin

Mientras que estaba mirando a las musarañas (y tras haber salvado a una pequeña salamanquesa de ser comida por la mantis religiosa que vive con nosotros) me he puesto a pensar en bienes inmuebles y me han surgido las siguientes dudas:

  • ¿Un cadaver es un bien inmueble o mueble?
  • Si heredas de tu tía abuela millonaria todos sus bienes...¿eso incluye el cadáver de la queridísima (una vez traspasada la herencia) difunta?
  • ¿Si eres propietario del cadáver puedes tirarlo a una cuneta?(Y de ahí deduzco que no porque te denunciarían por tirar desechos a la vía pública sin consentimiento, con los máximos respetos por llamar desecho a tu tía)
  • ¿Si eres propietario del cadáver ¿puedes tirarlo a doscientos kilómetros de la costa?(por eso de que son aguas internacionales y ahí no te dirá nadie que esta contaminando las aguas con tu tía abuela)
  • Imaginémosnos el caso de una pobre viuda que pretende disecar a su difunto y ponerlo en su sillón favorito con las pantuflas y la pipa en la boca, aparte de ser una muestra de mal gusto ¿es posible hacerlo?
  • Y si la viuda da la casualidad que en su momento fue esa millonaria tía abuela de unas líneas más arriba, cuando muera heredarás también a tu tío abuelo?
  • Supongamos por reducción al absurdo (más aún) que el cadáver no es realmaente propiedad tuya y que con la herencia sólo asumes las costas de las alternativas actuales dispuestas para los difuntos (quemar o enterrar, vamos), entonces ¿qué pasa con los cadáveres expuestos? (como el de Lenin, los de la exposición de bodies o las miles de momias conservadas en el Louvre por ejemplo)
  • Bueno otra alternativa es donar tu cuerpo a la ciencia (como hicieron los chinos de bodies...o les obligaron a hacer), una vez que los alumnos de medicina y enfermería te han abierto las suficientes veces...¿es el estado el que te da un entierro decente o te incinera o lo que sobra se tira a la basura?
  • Entonces ¿si lo hace el estado también lo puedes hacer tú con tu tía abuela? (total, es carne) o ¿puedes exponerla en el pasillo como a Lenin?
  • ¿Tener cadáveres en casa desgrava?


Muchas dudas me han asaltado y no tengo respuesta para casi ninguna...veré que puedo hacer






Recopilación de frases-respuesta:

  1. Solo el hombre es protagonista y destinatario del derecho, por ello no se puede pretender conceder la personalidad a los animales y los muertos.
  2. (Del tratado de derecho civil, apdo.782 en referencia al artículo 146 del Código Civil) Toda persona tiene derecho a disponer de su cadáver o partes de él con objeto de que sea investigado para docencia universitaria, investigaciones científicas, para la elaboración de productos terapéuticos o para la realización de injertos. [Entonces es posible ceder mi grasa -mucha- para hacer jabón medicinal]
  3. (Del mismo tratado)Derecho de los herederos sobre el cadáver sobre el cadáver de su causante se distinguen dos situaciones:
    1. El causante contrajo en vida relaciones patrimoniales sobre el cadáver: los herederos perciben el beneficio (es decir, si vende el cadáver se le paga a los herederos) [...] se podrá destinar el cadáver a cualquier fin que no altere la moral ni el orden público (¿eso no es demasiado subjetivo?).
    2. Si el difunto no había contraido en vidad ninguna relación patrimonial con respecto a su cadaver los herederos no serán los propietarios del mismo, es decir no tendrán ningún derecho patrimonial sobre el mismo, quedando el cadáver sometido a las reglas generales de orden público sobre la política de cementerios (ohhhhh).
  4. Del Código Sanitario, libro octavo: "Sólo en cementerios legalmente autorizados podrá efectuarse la inhumación de cadáveres o restos humanos." (¿y si no lo inhumas?) [...] "Sin embargo, el Director General de Salud podrá autorizar la inhumación temporal o perpetua de cadáveres en lugares que no sean cementerios, en las condiciones que establezca en cada caso..." (así que puedes enterrar a tu tía en el jardín si eres amigo del Director General)[...] "Ningún cadáver podrá permanecer insepulto por más de cuarenta y ocho horas, a menos que el Servicio Nacional de Salud lo autorice, o cuando haya sido embalsamado o se requiera practicar alguna investigación de carácter científico o judicial..." (así que se puede quedar el tío abuelo un rato en el sillón si está embalsamado...La obligación de dar sepultura a un cadáver recaerá sobre el cónyuge sobreviviente o sobre el pariente más próximo que estuviere en condición de sufragar los gastos..." (qué asquito).

viernes, 15 de agosto de 2008

Androides en cadena

A partir de octubre saldrá a la venta en Estados Unidos exclusivamente (mierda,tendremos que esperar) el primer móvil (no homebrew, que son bastantes los que llevan meses sacrificando circuitos) que incorporará Android como sistema operativo embebido.

Esta critura viene de la mano de la compañía T-mobile y HTC (el fabricante HW) lo cual es lógico teniendo en cuenta que eran empresas que junto con Google apoyaron a Android dentro de la Open Handset Alliance.

Como todos en este mundo somos unos picados, dicen que tendrá además de una pantalla multitáctil, un teclado de cuatro filas (!!!) que se deslizará bajo ella, con una certificación de que verifica todos los estándares de red que incluye (por la Federal Communications Commission...bueeeeno)

A la espera queda un segundo móvil de Android, de la empresa Sprint , sin fecha confirmada aún.

Ver móvil
Ver noticia del NYT

PD Como comentario dejo ésto:

"...Some makers of mobile software programs have complained that creating applications for Android has been difficult, as Google has continued to make changes to the operating system and has at times been too busy to provide support to developers. Some of those software makers have chosen to focus their development efforts, at least for now, on phones that are already on the market like the iPhone or the BlackBerry, made by Research in Motion..."

cuánta razón tienen


PD.PD. Que ilusiónnnnnn


miércoles, 30 de julio de 2008

Sobre cadenas de ADN


Rosalind Franklin fue la primera persona en fotografiar el ADN, lo que a todo sentido común podría significar que fue la persona que descubrió la existencia del ADN y de su estructura.

Es por eso de extrañar que no recibiera jamás el Nobel de Fisiología (Medicina). Pero se deduce de manera mucho más rápida si se dice que fue "traicionada" por su compañero de laboratorio, Maurice Wilkins, quien le mostró la fotografía a Watson y Crick sin el permiso de ésta y que fueron los que finalmente compartieron el Nobel de Medicina con éste por la determinación de la estructura de la molécula de ADN (fácil si tienes una foto, ¿no?).

Rosalind Franklin murió a los 38 años de cancer debido a la exposición a la radiación que soportó para poder llegar a realizar fotos como la que Wilkins mostró a sus compañeros de Nóbel (conocida como fotografía 51 al parecer).

¿Injusticia o sana competitividad?
Para mí es evidente


martes, 29 de julio de 2008

A rey muerto rey puesto

Netscape ha muerto, viva Pogo.

Es decir, nuevo explorador...acabo de recibir (creo que llevo esperando ansiosa así como una mes, sólo que no me acordaba) la invitación para probar pogo...la nueva apuesta de la AT&T y ahora no sé si descargármelo de la emoción...¿qué hago?¿qué no hago?...pufff, es taaaaanta la presión (¿¿??) de ser un beta tester no remunerada por amor al arte que no sé si esperar a que empiecen a establecer un sindicato para empezar yo...

Bueno, ahora medio en serio, la relación entre ambos exploradores sólo está en que ambos están firmados como productos americanos, lo cuál hace que tengan un nidito común donde recibieron calor y amor (en inglés, ofcors).

Por un lado está AOL (América online, sí, con tilde), que parió en su momento a Netscape, que, en su momento también, fue el principal explorador usado en la red...(antes de que IE estuviera en todos los corazones y en todas las ventanas del mundo) y ahora no sólo AOL lo deja morir, sino que cuando te lo descargas te dice algo así como "Pero qué estas haciendo pobre infeliz, que ya no le damos soporte...anda, anda descárgate firefox y déjate de originalidades" (ver).

Por otro lado están los teléfonos y telégrafos americanos (American Telephone and Telegraph), que han creado un explorador extraño, Pogo, sólo soportado por Windows XP y Vista de 32 bits (nada de versiones de servidor)...que puede que yo sólo escriba gilipolleces pero a ver, que si empiezas con un producto nuevo no haces tu página en flash y eliminas a linux de tu vida...hombre que estáis empezando...

Pero bueno, aparte de eso aparentemente (a la espera de verificar su funcionamiento) permite navegar entre las pestañas con efectos tridimensionales al estilo compiz fusion (o como dirían otros estilo vista...aunque bueno...mejor no entrar en eso) y manejar visualmente tus marcadores (favoritos)...a ver que tal...

Eso es to, eso es to, eso es todo amigos

miércoles, 9 de julio de 2008

jueves, 19 de junio de 2008

Tila

Little boxes on the hillside,
Little boxes made of ticky-tacky,
Little boxes, little boxes,
Little boxes, all the same.
There's a green one and a pink one
And a blue one and a yellow one
And they're all made out of ticky-tacky
And they all look just the same.

And the people in the houses
All go to the university,
And they all get put in boxes,
Little boxes, all the same.
And there's doctors and there's lawyers
And business executives,
And they're all made out of ticky-tacky
And they all look just the same.

And they all play on the golf-course,
And drink their Martini dry,
And they all have pretty children,
And the children go to school.
And the children go to summer camp
And then to the university,
And they all get put in boxes
And they all come out the same.

And the boys go into business,
And marry, and raise a family,
And they all get put in boxes,
Little boxes, all the same.
There's a green one and a pink one
And a blue one and a yellow one
And they're all made out of ticky-tacky
And they all look just the same.

viernes, 13 de junio de 2008

El día de la descarga

El 17 de junio, descárgate Firefox 3.
Únete para intentar batir un record Guinness mundial
Seamos parte de algo, no nos cuesta nada

Download day 2008

domingo, 8 de junio de 2008

Mientras haya música

Estaba escuchando a MillenColin y he recordado una frasecilla que dije hace tiempo, que es que mientras existan canciones con tu edad sigues siendo joven, así que ésta es la lista que he hecho:

  1. Thirteen - Big star



  2. El duo dinámico - Quince años tiene mi amor

  3. Kiss - Christine sixteen
    Sixteen - No Doubt
    Destiny's child - sweet sixteen
    Chenoa -Dieciseis.
  4. Janis Ian - At seventeen
    Abba - Dancing queen
    Winger - Seventeen
  5. Creed -eighteen (and I don't know what to do)
    Alice Cooper - I'm eighteen
    Skid Row - 18 And Life
  6. Tegan and Sara - nineteen.
  7. Serrat - Ahora que tengo 20 años
    Travis -Twenty
  8. Cranberries - twenty one (aunque no lo parezca se refiere a lo que sentía Dolores O'Riordan cuando cumplió los 21).
    Guano Apes - Kiss The Dawn
  9. Millencolin- Twenty two (so far away for all my dreams,..., feeling blue...cause I'm not gonna live forever)
  10. Yellow Card twenty three

  11. MillenColin- Right about now (I'm 25 but I'm still all right)
    Veruca Salt - Twenty five
  12. Phoenix Mourning - Across Twenty-Six Winters

  13. Oreja de Van Gogh - 28
  14. Aaron Tippin - twenty nine and holding
  15. Miliki - A mis niños de 30 años (es un peligro que te lo dedique Miliki)


  16. Julio Iglesias - 33 años

  17. Beatles - When I'm 64

Podría pensarse que los 24, 27 y 28 no existen...pues es cierto, son sólo una espera de los 25 y 30.

Si os acordais de alguna más decídmelo y la escribiré.

martes, 27 de mayo de 2008

Sólo se le podía ocurrir a un symio



Impresiona como de desafortunadas pueden ser algunas campañas publicitarias, no he contrastado si esto es cierto(es decir, puede que esto sea una leyenda urbana), pero al parecer existe una nueva campaña de symio orientada a la comunidad gay...lo que no sé es si sólo pensaban descartar esta comunidad como clientes en potencia, si es que el concepto de captar clientes no es el mismo que el mío o si la agencia de publicidad al completo bebía demasiado (o demasiado poco)...porque manda cojones la campaña

sábado, 24 de mayo de 2008

Un rincón de la nostalgia: the matrix


MORPHEUS: I imagine, right now, you must be feeling a bit like Alice, tumbling down the rabbit hole?
NEO: You could say that.
MORPHEUS: I can see it in your eyes. You have the look of a man who accepts what he sees because he is expecting to wake up.
[...]
MORPHEUS: The Matrix is everywhere, it's all around us, here even in this room.You can see it out your window or on your television. You feel it when you go to work, or go to church or pay your taxes. It is the world that has been pulled over your eyes to blind you from the truth.
NEO: What truth?
MORPHEUS: That you are a slave, Neo. Like everyone else, you were born into bondage, kept inside a prison that you cannot smell, taste, or touch. A prison for your mind.
MORPHEUS: Unfortunately, no one can be told what the Matrix is. You have to see it for yourself.
[Morpheus opens his hands. In the right is a red pill.In the left, a blue pill.]
MORPHEUS : This is your last chance. After this, there is no going back. You take the blue pill and the story ends. You wake in your bed and you believe whatever you want to believe.
You take the red pill and you stay in Wonderland and I show you how deep the rabbit-hole goes.

miércoles, 14 de mayo de 2008

Qué hace la gente cuando no es famosa

Pues no lo sé, ya escribiré si conozco a alguien que haya sufrido el cambio en uno u otro sentido.

De momento sólo puedo contar qué hacía George Clooney antes de alcanzar la fama, cuando nosotros aún no habíamos nacido y él aún no tenía canas....


Return to Horror High!





Esto no tiene la más mínima importancia, salvo por las maravillosas escenas que esta película ha dejado para la posteridad, como por ejemplo la de cómo te puede matar un ventilador industrial o cómo diseccionar a tu profesor como si fuera una rana...impresionante



Y también estuvo en este maravilloso clásico, el retorno de los tomates asesinos...jummy




En el siguiente se le puede ver actuando a partir de los 3:40 como compañero de piso del amante de la chica que hace de transportista de los tomates asesinos...apasionante, ¿verdad?


martes, 13 de mayo de 2008

Celebración

Hoy es día de celebración, éste es el post 104 (aleluya, aleluya, aleeeluya), que no me he dado cuenta antes... y ha tocado el 104.

Y para celebrar tan grande evento, ofrezco organizar para el que quiera uno o varios de los evento escritos a continuación:

  • Camino de Santiago.
  • Interrail por donde sea.
  • Tomatina en Buñol.

Completamente organizado, sólo poner fechas en común y listo, no lo dudéis, unios.

lunes, 12 de mayo de 2008

El lado correcto del espejo

Comenta Neil Gailman en boca de uno de sus personajes que "conducir en América es como conducir por el otro lado del espejo".
Supongo que esa referencia intenta decir cómo está de arraigado el personaje como hijo de la Gran Bretaña que es, tal vez para mostrar un poco de su personalidad.

En fin, a lo que iba, que independientemente de lo que quiera decir realmente esa referencia (lo mío nunca han sido las cosas de leer ;P ), es el mundo colonial el que está al otro lado del espejo...y me he puesto a pensar...

Bien, Henry Ford nació, creció y creó su emporio en los EEUU, donde conducen como personas civilizadas (;-P), aunque no fue él quién creó el primer automóvil, sino Karl Benz 24 años antes. Aunque Karl Benz no se posicionó en qué lado era el correcto (lo puso en el centro) sí lo hizo Ford, personaje involucrado en la evolución del mundo civilizado.

Ahora bien, teniendo en cuenta todo eso...¿cómo fue que en el Reino Unido y sus colonias se le dió a todo la vuelta?

De ahí que me imagine en 1885, a Sir. Carbide, en su lujosa mansión de Bloomsbury, recibiendo uno de los primerísimos modelos híbridos entre coche y carro de tiro, ordenándole a su encargado de cuadras que se las ingeniara de alguna manera para situar el mando del vehículo más hacia la izquierda, que un hombre de su posición no iba a permitir que le azotaran simples lacayos simulando hacérselo a sus caballos.
El pobre hombre, después de varios intentos, en los que casi pierde el empleo y su mano derecha, y haciendo gala de todo su ingenio y de sus conocimientos como aprendiz de relojero consigue aproximar el mal llamado volante hacia donde su amo dijo.

Unos cuantos años después, cuando sus vecinos comienzan a recibir los primeros modelos de Benz le piden al encargado de las cuadras de su vecino que haga lo mismo, Sir Carbide lo hace encantado, relamiéndose por el gran número de fiestas a las que va a ser invitado (aunque se le reconoce como un apuesto caballero él se teme que haya pasado su momento de resultar un buen partido para las damas).

Cuando los primeros modelos del Ford-T llegan al Reino Unido, el mercado potencial con el que se encuentra se niega a aceptar un volante en esa posición...¡imposible! con todo el esfuerzo que les ha costado conseguir manejar ese extraño carromato, como para que pretendan ahora volverles a enseñar. El encargado de Sir Cadbury hace años que dejó la mansión (ahora hogar de una enorme familia) para establecerse y fijar su primera cuadra para coches...la denomina "taller" (habráse visto...)

...el mozo se llamaba
Lionel Martin, y gracias a él comenzó la fabricación de la gama de lujo de estos vehículos (Aston Martin), ideados sólo (en principio) para los más grandes hijos de la Gran Bretaña...


viernes, 9 de mayo de 2008

Se acabó

Ya se ha acabado, hace...no sé si hemos ganado o no (dejé el trabajo una vez estuvo terminado el proyecto y nadie me ha dicho nada hoy)...pero si no he recibido ninguna notificación por parte de ninguno de los compañeros es que a nadie le ha llegado nada...

Eso sí, como nota de consolación, si alguna de las aplicaciones que habéis enviado (cliente-servidor, como es nuestro caso) ha tenido visitas después del 28 de abril es que estábais en el top 100,..., a mi me sirve de consuelo al menos...o eso creo, que tal vez es peor quedar segundo que tercero...

No obstante, aunque a nadie le interese, voy a continuar con android, tal vez (no, más bien seguro) mucho menos, pero voy a continuar,..., porque se ha metido mucho en mi vida y ahora me toca meterme en la suya...

Sólo me gustaría que viérais (leyérais) la ansiedad de la gente en los foros [1,2 y 3 de muchos], que es más o menos la que sentía yo por dentro

Hay un segundo ADC

Aparte de la segunda ronda del ADC actual existirá otra, bajo unas condiciones semejantes, a finales de este año, dada la acogida que por lo visto ha tenido el concurso... de acuerdo con uno de los desarrolladores:

"...There are two Challenges, which we call Challenge 1 and Challenge 2. Each

of these is allocated half of the $10,000,000 fund. Challenge 1 is the one
going on right now; Challenge 2 will begin later this year, after Challenge
1 has concluded.

Challenge 1, meanwhile, is broken into two parts and has two deadlines. The
first deadline is for anyone to submit an application (according to the
eligibility rules); this is the April 14th deadline, and we call it Round
1. Judges will then evaluate and choose the best submissions, and those
developers will receive $25,000. They'll also be given a period of time --
which we call Round 2 -- to further polish their applications, and submit
the new versions by a second deadline. The winners of the final, larger
prizes will be chosen out of the Round 2 submissions. Only developers who
are awarded a prize in Round 1 will be eligible to submit for Round 2.

To summarize: Challenge 1 has two phases, Round 1 and Round 2. Only
winners of Round 1 may participate in Round 2. Challenge 2 will begin later
this year, and will be a totally separate event. "


Así que preparaos para lo peor , XDDD

jueves, 8 de mayo de 2008

Android 101: los recursos, ese gran desconocido (I)

Bien, hoy vamos a hablar de recursos, sobre cómo incluirlos en nuestro código de manera que queden correctamente agrupados en la aplicación.

Tenemos tres alternativas para hacerlo:

  1. Meter lo que queramos en la carpeta assets(1)
  2. Meter los fichero de manera lógica en la carpeta res.
  3. Si los archivos son creados partiendo de la ejecución de la aplicación crearlos en un directorio asignado para la aplicación específica bajo la ruta /data/app/<paquete>/files (en el caso del post anterior la ruta sería /data/app/mi.paquete.test1/files).
Pero para ambas, lo que nos puede interesar, más que la manera de guardarlas es cómo acceder a ellas y, para eso (acabo de caer en ello y esta es la razón por la que ahora mismo pongo un (I) en el post, para no hacerlo eterno) hace falta que entendais qué es el contexto de la aplicación, es decir Context.

Parece una tontería que lo explique pero el Contexto encapsula todo el entorno de la aplicación para que, en teoría, sólo sea accesible desde dentro de ella.

A primera vista parece muy simple, pero esta clase abstracta (realmente de las instancias de su clase hija, ApplicationContext) es la que nos va a permitir acceder a la información de la aplicación y a sus recursos.

Considerando que existen realmente 5 bloques en toda aplicación android (Application, Activity, IntentReceiver, Service y Provider(2)) sería lógico que fuera accesible desde cualquiera de ellos, pero esto no es así en la realidad. Sólo es accesible directamente desde Application, Activity y Service, teniendo que recurrir a sucios trucos para poder utilizarla desde IntentReceiver por ejemplo.

Como curiosidad diré que si por ejemplo gestionais el evento de por ejemplo un botón dentro de una Actividad, dicho contexto no será accesible. hay dos alternativas:
  • Crear una variable accesible desde cualquier punto en la construcción de la instancia de la actividad.
  • Utilizar la variable de clase que incluyen los bloques constructores: <NombreActividad>.this. Suena como que a cualquier purista se le revolverían las tripas con esto, pero yo personalmente me quedo con ésta última.
Bueno, volvamos al código de la actividad, que así se verá todo mejor, en este apartado (el primero de dos) vamos a hablar de los facilones, de assets y de los archivos creado dinámicamente:
  • Si hablamos de assets podemos decir realmente que su función es poder meter lo que nos dé la real gana en la aplicación.
    • Accedemos a su gestor mediante context.getAssets(), que devuelve la instancia de la clase AssetManager que se corresponde con la aplicación.
    • Para listar el contenido de la carpeta context.getAssets(). list( "/" );(3)
    • Para extraer su contenido context.getAssets. open("archivoPrueba.txt"); [devuelve un InputStream]

  • Si estamos hablando de escritura y lectura sobre archivos, la única manera de hacerlo es mediante el espacio incluido como contexto de la aplicación mediante:
    • Context.openFileInput("archivoPrueba2.txt");
    • Context.openfileOutput("archivoPrueba3.txt",modo);(4)
Brevemente vamos a hacer una prueba con ambos.
Sobre la aplicación especificada en el post anterior ( es decir, sobre una aplicación vacía) vamos a acceder a los archivos siguiendo los pasos a continuación:
  1. Utilizaremos droiddraw para crear un layout con un campo de texto y tres botones (por ahora da igual como se disponga)
  2. Modificamos sus propiedades (pestaña properties):(5)
    1. id = @+id/btn1, text= abrir asset (extraera el contenido del asset y lo cargara en el campo de texto)
    2. id= @+id/btn2, text= guardar (guardara el campo de texto en un archivo en el contexto de la aplicacion).
    3. id=@+id/btn3, text = abrir (abrira el archivo del contexto si existe y los cargara).
    4. id=@+id/texto, text = vacio.
  3. Aplicamos los cambios, extraemos el código (generate) y lo reemplazamos por el anterior de res/layout/main.xml (que es el layout que se carga en la actividad)

    <?xml version="1.0" encoding="utf-8"?>
    <AbsoluteLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    >
    <Button
    android:id="@+id/btn1"
    android:layout_width="83px"
    android:layout_height="wrap_content"
    android:text="Abrir asset"
    android:layout_x="10px"
    android:layout_y="352px"
    >
    </Button>
    <Button
    android:id="@+id/btn2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="guardar "
    android:layout_x="100px"
    android:layout_y="352px"
    >
    </Button>
    <Button
    android:id="@+id/btn3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Abrir"
    android:layout_x="180px"
    android:layout_y="352px"
    >
    </Button>
    <EditText
    android:id="@+id/texto"
    android:layout_width="197px"
    android:layout_height="217px"
    android:text=""
    android:layout_x="20px"
    android:layout_y="22px"
    >
    </EditText>
    </AbsoluteLayout>

  4. Introducimos el siguiente código en la actividad (Actividad.java):
    package mi.paquete.test1;

    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import android.util.Log;
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;

    public class Actividad extends Activity {
    private static final String TAG = "Actividad";
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.main);
    //Accedemos al los objetos creados a través de su identificador
    final EditText texto = (EditText) this.findViewById(R.id.texto);
    Button btn1 = (Button) this.findViewById(R.id.btn1);
    Button btn2 = (Button) this.findViewById(R.id.btn2);
    Button btn3 = (Button) this.findViewById(R.id.btn3);
    btn1.setOnClickListener(new OnClickListener(){
    //Accion a realizar en el click del boton 1
    public void onClick(View vista) {
    InputStream is;
    try {
    is = Actividad.this.getAssets().open("archivoprueba.txt");
    int tam = is.available();
    byte [] buffer = new byte[tam];
    is.read(buffer);
    texto.setText(new String(buffer));
    } catch (IOException e) {
    Log.d(TAG,"Error en la lectura",e);
    }
    }
    });
    btn2.setOnClickListener(new OnClickListener(){
    //Accion a realizar en el click del boton 2
    public void onClick(View vista) {
    try {
    FileOutputStream fos =Actividad.this.openFileOutput("archivoprueba2.txt", MODE_WORLD_READABLEMODE_WORLD_WRITEABLE);
    fos.write(texto.getText().toString().getBytes());
    fos.close();
    } catch (IOException e) {
    Log.d(TAG,"Error en la escritura",e);
    }
    }
    });
    btn3.setOnClickListener(new OnClickListener(){
    //Accion a realizar en el click del boton 3
    public void onClick(View vista) {
    try {
    FileInputStream fis = Actividad.this.openFileInput("archivoprueba2.txt");
    int tam = fis.available();
    byte [] buffer = new byte[tam];
    fis.read(buffer);
    texto.setText(new String(buffer));
    fis.close();
    } catch (IOException e) {
    Log.d(TAG,"Error en la lectura",e);
    }

    }
    });
    }
    }

  5. Introducimos el archivo archivoprueba.txt en la carpeta assets con el contenido que queramos:
  6. Ejecutamos et voilá


PD: no sé si alguien me leerá, pero si me estoy yendo por las ramas, o si hay algo que no se entiende, por favor, postead, sólo intento escribir lo que sé sobre esto y que todos aprendamos (iaiaoooo...).



Notas:
(1) : de acuerdo con lo definido por la documentacion de la sdk, se considera un asset como un conjunto de datos asociados con una aplicacion (como blob), que serán organizados en la jerarquia de directorios tal y como están en el apk final, agrupados como un único fichero zip.
(2): aunque parece que me he saltado un paso al no explicar los bloques aún, es porque cada uno tiene una funcionalidad muy específica que requiere haberse adentrado un poquito más en la información y, de momento, con tener una actividad (es decir, una clase que visualice la información en la pantalla que es la que inluye el proyecto por defecto) vamos que chutamos. Pero será lo próximo que caiga como post, palabra.
(3): existe un bug en este punto (a fecha de hoy en revisión) por el que si se realiza list("") sería accesible el asset del framework y se solaparían las referencias si correspondiera al mismo nombre dos archivos, uno en la aplicación y otro en el del framework. (ver issue 373 y comentarios)
(4): los modos son MODE_APPEND para concatenar, MODE_WORLD_WRITEABLE para otorgar permisos de escritura, MODE_WORLD_READABLE para otorgar permisos de lectura y MODE_PRIVATE, el más restrictivo y el inlcuido por defecto.
(5): @+id indica que R.java (la clase que asocia a los recursos con identificadores) contendrá dentro del layout de main un índice para ese objeto (para evitar indexarlos todos). Si no lo ponemos no aparecerá aquí:

public final class R {
//...
public static final class id {
public static final int btn1=0x7f050000;
public static final int btn2=0x7f050001;
public static final int btn3=0x7f050002;
public static final int texto=0x7f050003;
}
public static final class layout {
public static final int main=0x7f030000;
}
//...
}

De aquí se deriva la conclusión que no puede duplicarse el id para NINGÚN elemento dentro de la misma aplicación, aunque estén en distintos layouts

miércoles, 7 de mayo de 2008

Android 101: o sobre cómo complicar las estructuras de un proyecto

Bien, si todo fue cómo esperábamos en el post anterior ( y confío en vosotros) ya tenemos un entorno adecuado de trabajo (lo siento chicos Solaris, muy probablemente vosotros no estáis en la lista...guaguaguaguaaaaa -sonido de trompetas-).


Aunque es muy posible que después explique cómo hacer todo esto desde la shell (atención expertos en python, os sentiréis como en casa), de momento vamos a hacerlo a lo perro (no me seáis malpensado, a partir de ahora en vuestras sucias mentes a lo perro==fácil, sencillo o simple), vamos a utilizar el plugin.

Veamos, ejecutamos desde "Fichero>Nuevo >Proyecto android" el asistente para nuestro nuevo proyecto:

  • Nombre del proyecto: nombre del proyecto en eclipse, sin repercusion en la aplicacion pero de alguna forma se tendrá que llamar (por cierto, no duplicar el nombre de los proyectos en eclipse en el mismo workspace). Así se llamará el apk a instalar (el símil de android a los jar de java).
  • Nombre de la aplicación: nombre con el que se visualizará la aplicacion en el manager de gphone y que la distinguirá de las demás aplicaciones. Este campo es puramente visual, si que se puede repetir, aunque después no podras distinguir cuál es cuál (el que avisa no es traidor).
  • Nombre de la actividad: nombre de la clase inicial a crear por el asistente.
  • Nombre del paquete: este es el punto más curioso; debido a que la máquina virtual dalvik cataloga las aplicaciones instaladas en el móvil a través del paquete dentro del cual han sido creadas (lo cual no implica que todas las clases que compongan una aplicacion estén en el mismo paquete, aunque sería recomendable para garantizar la unicidad de las clases, es decir, que no se machaquen por ejemplo arias versiones de una misma clase). Concluyendo, que el paquete es el identificador único de la aplicación, tened cuidado con eso (1).
Veamos, por ejemplo le pondremos al proyecto:
  • Nombre del proyecto: ProyectoTest
  • Nombre de la actividad: Actividad.
  • Nombre de la aplicacion: AplicacionTest
  • Nombre paquete: mi.paquete.test1
Obtendremos la siguiente estructura en el proyecto eclipse 'ProyectoTest':


Y al ejecutarlo como una aplicación android, (Run as>Android Application) el emulador nos devolverá (tras pasar algunos segundos cargando el ojo de cylon(2)) obtendremos esto:



Bueno, realmente aquí lo que nos interesa es una primera perspectiva de la estructura creada (requerida a menos que generemos nuestro propio constructor):
  • src (sources - fuentes): este punto no merecería la pena ser comentado si no fuera porque el asistente se ha sacado de la manga una clase llamada R.java. Esta clase es regenerada en cada actualización en eclipse por la herramienta de sdk aapt(3). De momento contiene:


    /* AUTO-GENERATED FILE. DO NOT MODIFY.
    *
    * This class was automatically generated by the
    * aapt tool from the resource data it found. It
    * should not be modified by hand.
    */

    package mi.paquete.test1;

    public final class R {
    public static final class attr {
    }
    public static final class drawable {
    public static final int icon=0x7f020000;
    }
    public static final class layout {
    public static final int main=0x7f030000;
    }
    public static final class string {
    public static final int app_name=0x7f040000;
    }
    }

    Es decir, una clase por cada carpeta dentro de res que reconozca la herramienta y un identificador numérico único para cada recurso.
  • res (resources - recursos): clasifica los distintos recursos de la aplicación que vienen catalogados de acuerdo a lo incluido en R.java. Aunque puede tener más, que veremos en el próximo post, por defecto tiene las carpetas:
    • drawable: imagenes (para incluirlas en R NO tiene en cuenta su extensión, así que dos imágenes con la misma extensión serán mal referenciadas por R).
    • layout: conjunto de archivos xml para determinar los widgets que estarán incluidos en cada Actividad, es decir, estores de la visualización de los elementos en lugar de hacerlo a través del código.
    • values: conjunto de elementos xml utilizados para agrupar valores (lo veremos en el próximo post); de momento sólo contiene el string con el nombre que le pusimos a la aplicacion (AplicacionTest).
  • AndroidManifest.xml: este archivo es vital, encapsula toda las información válida de las clases android que compondrán la aplicación. De hecho, si una actividad no está escrita aquí no podrá ser invocada (startActivity o startSubActivity). Este pto lo vemos dentro de dos post (se cumula el trabajo...lalala).
  • assets (asset- recurso) serán los recursos no catalogados dentro de R, la única diferencia con res (de momento) es que están desestructurados y no poseen referencia algunas; dependerá del programador cómo guardarlos).
Para que este post no se haga eterno, acabo aquí, gracias por aguantar apañaos.





(1) - Este puede ser un error muy frecuente y muy tonto: una de las cosas buenas de emulador de la sdk de android es que las aplicaciones instaladas no son eliminadas de la memoria, lo cual permite simular el ciclo de vida completo de una aplicación. Pero, si por un casual se nos ocurre cambiar el nombre del proyecto y ejecutarlo sobre el emulador con el antiguo proyecto cargado, nos surgirá la siguiente advertencia:
WARNING: Package mi.paquete.test1 is already registered by /data/app/ProyectoTest.apk
(ya que al no llamarse igual el plugin de eclipse no lo desinstala en instala como haría en caso normal) y dejando sin cargar la ultima versión en el emulador, aunque éste es lanzado (con la versión anterior todavía instalada).
(2) - Ojo de cylon, expresión tomada prestada de la serie BattleStar Galactica, que viene a ser la bolita roja con estela a modo ojo de Kitt del coche fantástico, que han puesto los desarrolladores del emulador para emular que carga (y sé que se toma su tiempo, tened calma).
(3) Las herramientas que incluye la sdk las veremos un poco más adelante cuando veamos como construir a mano una aplicación; de momento diremos que es magia.

martes, 6 de mayo de 2008

Php hebreo

Curioso:
"Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in..."

  • T = item o token a parsear
  • PAAMAYIM = dos veces ( en hebreo)
  • NEKUDOTAYIM = dos puntos (en hebreo, pasa lo mismo que en español sería tanto .. como :)
"Que la aldea global inunde vuestras vidas"

Aún no hemos perdido

Estamos a martes, día de 6 de Mayo, el resultado de la primera fase del concurso de google (o de la handset alliance) de ADC (android development challenge) en teoría se resolvía el 5 de mayo a las 00:00 (hora de pacífico) lo que nos deja realmente a las 9:00 am del martes a nosotros pobres europeos...es decir, ya ha salido...en teoría.

La cuestión es que el resultado del concurso NO se emite realmente hoy de acuerdo con el grupo oficial del concurso el resultado está postpuesto hasta el 7 de Mayo, o mejor dicho, queda relegado a ser enviado por correo a lo largo de esta semana....ainssss...se que no os importa mucho, pero aquí lo dejo.

Lo quiera o no, el androide me ha hecho soñar con ovejas eléctricas...


Aquí dejo para desconsuelo de las almas inquietas el siguiente post del grupo de ADC "Dear Android developer losers":

May 12, 2008. Monday.
Your android application is not in the top 50 ADC winners list.

Dear Android Developer Challenge losers,

I know you are drunk. I know you are hung over. I know you are feeling terrible. I know you are at your lows. I know life sucks. I know you can't get out of your bed. But wake up, will ya?

Your android application is not in the top 50 winners list. Cool. Take a deep breath. Look outside. Anything changed? Nah.. nothing changed. Your wife loves you as much as she did before. Your kids love you as much as they did before. Your friends love you just like before. You must do the same.
You must do the same to your Android application. Give it the same love, will ya?

First thing first, Send out your congratulations to the top 50 winners. Yes, you heard me right. Do it now, and do it fast. Better? It felt good right?
Yeah I know, It feels great. Wonderful.

Now that you are feeling better, let me tell you this:

lunes, 5 de mayo de 2008

Too far, too soon

Más o menos es eso, las cosas importantes están muy lejos y se van muy pronto, aunque eso no quiere decir que dejen de serlo. Son más importantes que nunca.

Esas cosas hacen que todo sea importante, todo sea precioso tal y como es; que todo sea digno de ser recordado, aunque no estén al alcance de la mano, aunque tengas que esperar, no desaparece una pizca de su grandeza, y merece la pena la espera, la merece con creces.

Y es que me gusta cosificar a la gente, si de hecho me cosifico a mi, una cosa ajquerosa con dudosas habilidades sociales y una empatía atrofiada ... para hacerlo bien, diré que soy el pegamento que aparece detrás de los embalajes cuando los deshaces, ese gordo, amarillento y que deja pegotes difíciles de eliminar, pero que a veces es útil para pegar posters.


domingo, 4 de mayo de 2008

Android 101: receta e ingredientes

Lo prometido es deuda (aunque sólo sea para mi misma), he intentado empezar a escribir esto unas 10 veces, tengo ya varios borradores para post posteriores, pero es que me da siempre la impresión de que si se parte desde cero hace falta tenerlo todo a punto y saber cómo hacerlo.

Para eso os dejo la siguiente receta de cómo poner android a punto, junto con los siguientes ingredientes:
  1. Eclipse 3.2 o superior (inferiores abstenerse)
  2. Java 5 (no basta sólo con la JDK, ya que el emulador corre sobre java)
  3. SDK de android
  4. Plugin de android para eclipse (ojo, lo que hay en esta referencia es el repositorio a colocar en eclipse que se explicará más abajo, si lo intentáis bajar no ubicará la página).
  5. Buen humor (porqué no)
  6. Si teneis Solaris, será necesario que lo hagáis vosotros mismos con la SDK, así que a bajar el código y a compilar con paciencia
Pasos:
  1. Instalar java [1,2,3]
  2. Instalar eclipse [1], en caso de que ya exista en el pequeño universo de tu ordenador, por favor, asegúrate que los plugins de JDT y WST.
  3. Descomprimir la SDK de android.
  4. Abrir eclipse e instalar el plugin:
    1. Help > Software updates> Find and install >Search for new features to install> New remote site: y aquí ponemos el repositorio, el resto estoy segura de que es piece of cake para vosotros.
  5. Configurar el plugin: no merece la pena asustarse, sólo hay que ponerle la ruta donde se extrajo la sdk (en Windows>Preferences)
  6. Et voilá. Para testearlo cread una aplicación, cuya estructura veremos en el próximo post, que es completamente operativa sobre el emulador desde el principio.
Sé que para lo que escribí en otros posts que iba a hacer no es demasiado, pero al menos es algo.

Os veo pronto.

El tiempo

Tenemos todo el conocimiento del mundo a nuestros pies, de todo el mundo.

Como una inmensa playa.
El conocimiento esta esparcido en los millones de granos de arena de la costa, sin considerar la procedencia de cada partícula, simplemente depositando herráticamente cada grano que ha sido arrastrado hasta allí.

Olas lamen nuestros pies mientras caminamos, dejando minúsculas notas de conocimiento que no llegamos a apreciar.

Pero vemos, más al fondo, lejos de la costa, castillos de arena que jamás llegaremos a poder construir y nos regodeamos en nuestras ignorancia, sin darnos cuenta del conocimiento que, sin quererlo, ya nos acompaña.


Así es esto, así es todo.

sábado, 26 de abril de 2008

iphone abre su SDK

El pasado 4 de Marzo iphone puso a disposición de desarrolladores su SDK nativa. Frente a la SDK de gphone (no hay nada mejor que picarse) que ofrece traducción directa del código a instrucciones RISC específicas (procesador ARM) basándose en Objective-C en contraposición a la virtualización que gphone ofrece por su proximidad a Java.

Ambas alternativas son lógicas, puesto que gphone se propone como una plataforma común para diferentes tipos de procesadores con distintos fabricantes mientras que iphone es iphone.

Como pequeña putada para los iphone, el entorno de desarrollo propuesto sólo puede realizarse sobre Mac, haciendo uso del IDE Xcode, lo cual es lógico viniendo de quien viene...

Nada, que miraré más antes de seguir escribiendo polladas

lunes, 21 de abril de 2008

Construyendo aplicaciones: android 101

Muy buenas, comencemos a jugar con "mi primera aplicación android". Para saber si estás preparado para la batalla deberás preguntarte a ti mismo las siguientes cuestiones:
  1. ¿Conoces Java?
  2. ¿Has desarrollado (digo bien, sí, desarrollado, no programado) aplicaciones con Java?
  3. ¿Lo has hecho sin utilizar un framework que te permitiera abstraerte de los Listeners?

Si la respuesta a las tres preguntas es sí, estarás en disposición de meter mano a android sin muchos problemas (siempre habrá algunos ... porque si no, ¿dónde estaría la diversión?)

Si no es así tendremos que encontrar soluciones:
  1. Si conoces cualquier programa orientado a objetos me sirves ... si no siempres puedes mirarte esto.
  2. Si no has desarrollado aplicaciones en Java ... bueno, también me sirves, pero mírate también por encima lo de antes, que nunca viene mal recordar.
  3. Si no has desarrollado aplicaciones con las tediosas referencias en los constructores entre los objetos ni las asociaciones a los Event Listener y pensabas que te ibas a librar,..., bueno, tienes dos opciones, bien dejas de leer, bien asumes tu error y aprietas el culo.
Con todas estas preguntas no estoy diciendo que android sea java [android.equals(Java)==false, más como dice plusminus], android incorpora un numero considerable de librerías que permiten que el desarrollo sea muy similar a Java (eso sí, las han implementado ellos, por lo que encontraremos curiosidades como métodos de java.lang.Class que no están implementados, como getCanonicalName) y la compilación la realiza un compilador Java abierto y modificado para que en lugar de bytecode .class los cree .dex.
Eso só, no hace uso de la JVM para la ejecución, sino de la Dalvik Virtual Machine [dalvik.equals(JVM) == false].

Dicha máquina virtual es la alternativa de google para desvincularse de Sun en la medida de lo posible, y
así complicarnos la vida al resto de los mortales acostumbrados a las ventajas (e inconvenientes) de Java.
DVM depende del kernal 2.6 de linux, utilizándolo como capa de abstración sobre el hardware y haciendo uso de sus servicios de sistema para la admistración de memoria, procesos, pila de protocolos de red entre otros.

Así cada aplicación android es equivalente a un proceso Linux. Eso sí, en este caso es la propia máquina virtual la que elige cuándo se inicia el proceso y cundo debe ser finalizado y liberada su memoria.

No quiero empezar a desmenuzar ahora los componentes de una aplicación, pero en el próximo post leed con atención los IntentReceiver (una especie de receptores de eventos), que lanzan hebras en paralelo al proceso en cada recepción de Intent. Cuando una aplicación incluya uno o más de estas clases su proceso será creado nada más arrancar el dispositivo móvil, ya que debe permanecer a la escucha de eventos (Intents en android).


Bueno, y como lo pone en la página, aquí dejo una clasificación de los procesos que pueden existir en función de la importancia que le asigna la máquina virtual, pero que vamos, os lo podeis saltar perfectamente, porque ahora os vais a quedar igual.
  • Proceso de primer plano: es un proceso que incluye una clase que hereda de Activity (un componente de las aplicaciones que veremos en el próximo post) en la pantalla y con la que el usuario está interactúando (su método "onResume()" ha sido llamado) o una clase que hereda de IntentReceiver está ejecutándose (su método "onReceiveIntent()" se está ejecutando). Estos procesos sólo serán eliminados cómo último recurso, si es que la memoria está tan baja que ni siquiera estos procesos pueden continuar corriendo. Si esta fuera la situación, el dispositivo probablemente alcanzó un "memory paging state" y esta acción es necesaria para mantener la interface del usuario con capacidad para responder al usuario.
  • Proceso visible: es un proceso que incluye una Actividad (Activity) visible en la pantalla, pero no en primer plano (su método "onPause()" ha sido llamado). Este tipo de proceso es considerado extremadamente importante y no será eliminado a menos sea extrictamente necesario para mantener a todos los procesos de primer plano corriendo.
  • Proceso de servicio: es un proceso que incluye iuna clase que hereda de Service, que ha sido iniciado (que no inicializado, qeu esa palabra no existe en castellano por mucho que insistamos) con el método "startService()". Estos procesos no son directamente visibles al usuario, pero el sistema siempre tratará de mantener esos procesos corriendo a menos que los niveles de memoria comiencen a comprometer el funcionamiento de los procesos de primer plano, sean visibles o no.
  • Proceso de fondo: es un proceso que incluye al menos una Actividad que no es visible al usuario (su método "onStop()" ha sido llamado). El sistema puede eliminar estos procesos en cualquier momento para reclamar la memoria que estén usando para entregársela a cualquiera de los tres tipos de procesos anteriormente descritos. Generalmente, hay muchos de estos procesos corriendo, por lo tanto el sistema mantiene una lista LRU para asegurar que el último proceso visto por el usuario sea el último en ser eliminado en caso que se requiera memoria.
  • Proceso vacío: es un proceso que no hospeda a ningún componente de aplicación activo. La única razón para mantener ese proceso es tener un "cache" que permita mejorar el tiempo de activación en la próxima oportunidad que un componente de su aplicación requiera correr. Como consecuencia de esto, el sistema con frecuencia va a eliminar estos procesos para mantener el balance entre los recursos de cache utilizados por estos procesos con los utilizados por los "cache" del kernel del sistema.

Fuentes:
Application life cycle
Traducción de la documentación en línea de android
Android Developer Book

viernes, 18 de abril de 2008

Venga, android university

Según el blog de android developers, el 28 y 29 de Mayo tienen el Google I/O (lo siento, el plazo de inscripción se agotó el 4 de Abril, para todos aquellos que vivan cerca de Frisco) se supone que el mayor evento que realiza Google, donde van a hablar de android, incluyendo los siguientes temas en su seminario:
  • Android 101: Building an Application
  • Anatomy & Physiology of an Android
  • Dalvik Internals
  • Inside the Android Application Framework
  • Building Great UIs with Android
  • Internationalizing Android Applications
  • Location, Location, Location
  • Mobile Mashups
(sic.)

Tengo mucha curiosidad por el punto de la internacionalización de aplicaciones con android (dado que ése era un punto a favor en el desarrollo para el concurso), pero los tres primeros puntos nos pueden servir para comenzar a escribir sobre android, así que mañana empezamos con cómo construir medio en serio una aplicación en android ( Para mí que lo de 101 es por el albúm de Depeche Mode...)

jueves, 17 de abril de 2008

Antes de comenzar a explicar

Aquí os dejo dos de las aplicaciones que se han presentado al concurso:

  • Unify Message: que unifica la gestión de los mensajes recibidos por el usuario de dispositivo móvil; una aplicación aparentemente básica pero de la que carecía el emulador y que incluye nuevas e interesantes utilidades.
  • Rich Client Platform [&apk]: plataforma de instalación y desinstalación de aplicaciones, e unas pocas palabras, de administración de aplicaciones. Eso sí, no sabe que:
    1. Gryphone ya incluye eso (aplicación presentada por Fundación I+D software libre)
    2. El emulador no llega a implementar correctamente la instalación de aplicaciones.

miércoles, 16 de abril de 2008

Qué hace Buffy cuando no mata vampiros

Sarah-Michelle Gellar (pronunciése Michelle, Mishel), conocida en todas las casas como la cazavampiros o la amiga de la primera bruja-bollera televisiva (que quieres, Alyson Hannigan, o Willow, ha acabado siendo N veces más famosa gracias a la relevancia política que tuvo al normalizar la interpretación femenina de un papel gay con una novia-bruja con cuajo considerable) renace...deciciendo morir.

Verónica decide morir, el famosisisisisisimo libro de Paulo Coelho, está siendo interpretado por esta "picioza" "niña" yyy... (aqui viene lo interesante) por el mayor de los hermanos Donelly, de los Black Donelly's, que desgraciadamente acabo tras la primera temporada (ohhhhhhhhhhh) y de donde también viene la alumna de House de los ojos primorosos, que según parece dura al menos trece episodios en la temporada según imdb; así que, -spoiler pequeñito e inventado- parece que supera el casting de House.

Sólo queda una cosa que decir: esperemos que no la caguen.

martes, 15 de abril de 2008

ADC step 2?

Hoy (realmente ayer, pero debido a diferencias horarias eso se queda en esta mañana) ha finalizado la primera fase del android development challenge.

Para miles de equipos sólo queda permanecer a la espera de los 25000$ (al cambio a fecha de hoy exactamente 157778,1 euros) hasta el 5 de mayo (para nosotros el 6 de mayo a las 9 de la mañana).

Con esta fase empiezo a escribir (de vez en cuando, para que meterme presión) cómo empezar a meterse en el mundo de la sdk de google, para no ir perdiendo el recuerdo de lo aprendido.

Como ejemplo de participantes en el concurso aquí dejo a los de OmniGsoft, que han pasado todos sus juegos a android (aunque los he instalado y no parece tener mucha reacción el emulador, será por los problemas androides con opengl, excepto en las demos de la API)...OmniGSoft


lunes, 14 de abril de 2008

SingelRingen

¿quereis tener posibilidades con Jennifer Love-Hewitt


o siempre habéis tenido fantasías con la niña del laberinto del fauno Ivana Baquero (pero qué pervertidos que sois)(*)



o queréis preguntarle personalmente al hijo de Mitch Buchannon (aka David Hasselhoff,XDD, fue absorbido por su personaje) qué le pasó después de los vigilantes de la playa (teniendo en cuenta que su último papel fue como voz de soldado soviético nº1 en el Metal Gear Solid en el 2006)?


Pues entonces no lo dudéis más, comprad SingelRingen, ¡el anillo de los solteros orgullosos de serlo!


Pensabamos que eso que hacíamos cuando enanos poniéndonos las gomas del pelo en el brazo había pasado de moda...¡pues no!

Junto con el anillo tienes tu propia marca de identidad, que te permite acceder a su comunidad, a los encuentros que realizan y encontrar a gente por la calle que lo lleve y pedirle tema (porqué no, pero siempre desde la independencia, vaya que te pongas en serio y tengas que perder el anillo)

No lo dudes más, sepárate, divórciate, deja a tu perro y cómprate el anillo.


(*)= Lo sentimos, pero si tenías ilusiones sobre ligar con esta niña y vivir de su gloria, está condenada a la perdición, acaba de hacer una película con Kevin Costner, está marcada al olvido... un minuto de silencio por su fama...

lunes, 17 de marzo de 2008

Los androides se meten el dedo en el culo y hacen pompitas

Muy buenas,

estoy escribiendo un proyecto sobre la sdk de android para el penco concurso de android developer challenge, y voy y me encuentro esto en una sdk que se supone puntera, y de google nada más y nada menos:

public final String getDataFilePath(Uri url)

DO NOT USE THIS FUNCTION!! Someone added this, and they shouldn't have. You do not have direct access to files inside of a content provider. Don't touch this. Go away.

Return the path to the content associated with a content URL. If there is no data associated with the URL, null is returned.

Parameters

url The desired content URL.

Returns

  • Path


Esto es sólo para mostrar mi indignación , porque éste no es un mensaje casual, y de hecho he tenido suerte, en la documentación se incluía este comentario,..., es lo que tiene migrar de versión de la sdk en mitad del concurso...y encima tiene los webos de recomendar su uso en los tutoriales (ya decía yo que usar el método no podía ser idea mía, odio ContentResolver...con lo bonito que es AssetsManager...)

Que sí, que sólo lo entiendo yo, que sí, que soy una friki...pues eah, a cascarla

miércoles, 5 de marzo de 2008

Ratas voladoras

La vida está basada en las pequeñas rutinas. Cada día es igual al siguiente y similar al anterior.

Nueve de cada diez dentistas no pueden estar equivocados.

Son esas pequeñas inercias que nos llevan a ir descalzos al lavabo o a fumar después de, bueno, por ejemplo después de las comidas en su más amplio espectro, las que hacen que el contacto con el mundo tenga siempre a lo largo de cada día el tacto de algo confortable y mullido, que inconscientemente nos reconforta y que hacen que por muy duro/difícil/diverso que sea el día siempre tenga pequeños puntos de contacto con su alrededor, pequeños agujeros de gusano temporales con las dimensiones diarias de nuestras vidas.

Imagina una esfera blanca, de bordes difusos, cuanto más tiempo pase más pequeña, opaca (oh, paca, tu sí que sabes lo que te haces) y definida se hará, hasta que todo sea tan parecido al día anterior que no tengas las necesidad de acordarte (de ahí que aparezcan cosas como el alemán que me roba las palabras).

Pero el problema (dicen) llega cuando la rutina supera tu contenido 100% original (ouh, yeah). Hay gente que para salir de la rutina viaja, hay gente que tiene hijos, amantes, novios, parejas, animales de compañía y demás organismos pluricelulares que aumenten la entropía a la par que dan gustirrinín.

Todos ellos no saben que lo mejor es meterse una rata voladora por el culo , eso sí que aumenta la entropía celular.

(Añadido por cortesía del Estado de Tijuana y powered by Gryphone, para coordinar con el título y demostrar que soy una absurda friki de miellda -y olé-)

jueves, 28 de febrero de 2008

lunes, 18 de febrero de 2008

OpenSocial

Sé que a poca gente le puede interesar, pero blogger ha incluido en sus API's a opensocial, para más datos ver el nuevo checkbox de comentarios

domingo, 17 de febrero de 2008

SCUMMVM y M3DSREAL(III)

Siguiente paso, compilar los jueguecitos:

Descargar scummvmds:

  1. Vamos al otro lado (¿por qué no?) y leemos que se hace en cuatro pasos con un bat....(arrgggffff)
  2. Miramos el bat y vemos su "elevada" complejidad:

@copy /b scummvm-a.ds.gba+scummdata-a.zip

scummvm-a-withdata.ds.gba
@echo Done!


  1. Lo intentamos como dice en sus cuatro mágicos pasos (si es así me quito el sombrero...o me lo quitaría su lo tuviera,..., putos estraperlistas).
    1. Venga, paso 1, tomamos un juego beneath a steel sky (desde ahora bass), de tipo b.
    2. Comprimimos sin compresión (y respiramos sin respiración)

    zip scummdata-b.zip -rn .dsk:.dnr *
    adding: sky.dnr (stored 0%)
    adding: sky.dsk (stored 0%)


    1. Hacemos las funciones de bat y concatenamos el contenido de nuestro maravilloso bat con el gba de scummvm.

    cat scummvmds-b.ds.gba scummdata-b.zip >scummwithdata-d.zip


    1. En ausencia de game manager, hacemos de game manager y lo cargamos nosotros en la microSD.
    2. ¿A jugar se ha dicho?

martes, 12 de febrero de 2008

Cargo de conciencia en la devolución de emepetreses

  1. La empresa productora del artículo (Mp3 por ejemplo,...) sabe que un x% del producto va a fallar, por lo que cuando la tienda compra 100 unidades le dan (100 + x)
  2. Cuando una persona devuelve el artículo, no preguntan demasiado (en las grandes superficies SÓLO) y le dan otro, sabiendo que existe un porcentaje de artículos devueltos que funcionan perfectamente aunque el cliente los haya devuelto.
  3. Los artículos devueltos se llevan a una empresa que hace una "puesta a nuevo" de los equipos, haciendo un test y poniendo los precintos y hasta el "olor a nuevo" con unos sprays especiales (el "olor a nuevo" es una técnica de marketing para que los humanos nos creamos que algo es nuevo simplemente porque huele de una forma determinada)
  4. Los equipos VUELVEN a ponerse en la tienda
  5. Si un mismo equipo se ha devuelto un numero determinado de veces (normalmente 3) se desecha (se sabe porque la empresa que los recicla los marca, normalmente con un palote de rotulador en algún lado)
  6. Si el equipo no vuelve, alguién lo consiguió poner en marcha, misión cumplida.
  7. Conclusión: si ves las últimas unidades de algo en una gran superficie, hazte un favor, no lo compres.

sábado, 9 de febrero de 2008

Ccas naturales

Para aquel que lo quiera saber, y que se de por aludido, las hormigas tiene articulaciones, aunque no tendones...pero lo de ciencias naturales no iba por ahí.

Es es cine el que me llama, aunque parece que viendo la lista me he decantado sólo por la naturaleza muerta:

  • Esplendor en la hierba, de Elia Kazan, altamente recomendable y enormemente deprimente, con una actuación magnífica de Warren Beatty. Esta película estuvo durante muchos años en mi corazoncito.
  • Muerte entre las flores,de uno de los hermanos Cohen, creo que con decir eso ya no hace falta comentar más.
  • Las uvas de la ira de John Ford, los clásicos siempre son clásicos.
  • Tomates verdes fritos, pastelada lo sé, pero me gustó,..., puede que sea por haberlo leido antes de verla, pero también puede que no.
  • El bosque, sé que para algunos esta película parece ser el inicio del fin de Shyamalan, que acabaría con la joven del agua (en esa película sí que le doy la razón a la mayoría) esta película es magnífica, aunque los publicistas se encargaran de hacer que la gente viera el trailer, la asociará a cine de terror y se llevara una profunda decepción.
Esto es lo que es, sólo una lista de películas, sólo un poco de curiosidad; si la teneis os recomiendo que no os perdais ocasión de ver ninguna, amigos.

jueves, 7 de febrero de 2008

Feliz año

Feliz año de la rata a todos; para los nacidos como yo en el año del cerdo, esta felicitación no lo es tanto, ya que acabamos de perder un año de bienes (año de nieves), tendremos que esperar otros doce años para que se vuelvan a alinear los animales del bosque del horóscopo chino.

Este año acabará el 25 de enero del 2009 (sí, es lo que tiene guiarse por la luna y no por el sol y encima se pierden los 29 de febreo), así que este año no dejéis nunca de mirar al suelo, porque nunca se sabe cuando uno de estos maravillosos seres sagrados os bendecirá mordiéndoos las piernas.

domingo, 20 de enero de 2008

SCUMMVM y M3DSREAL (II)

Primer paso (o cómo leer micro SD desde linux)

Hace poco, llamémosle por convicción (que no) o por estupidez (seamos sinceros, que sí) maté al único windows que he amado en mi vida (bueno, no, quería al 98 con toda mi alma, solo que esta distribución me fue fiel) en mi dulce, dulce portátil.

Eso lleva a que plantearse cosas tan triviales como calentar la jarra de batidito (no colacao, batidito) con el usb sean vitales para la vida diaria (¿montando y desmontándolo deja de llegarle la alimentación al usb o se tiene que seguir enchufando y desenchufando?).

Según dice dmesg :

[...]
[17179587.560000] sdhci: Secure Digital Host Controller Interface driver, 0.12
[17179587.560000] sdhci: Copyright(c) Pierre Ossman
[...]
[17179588.432000] sdhci: SDHCI controller found at 0000:06:04.2 [1524:0550] (rev 1)
[17179588.432000] PCI: Enabling device 0000:06:04.2 (0000 -> 0002)
[17179588.432000] ACPI: PCI Interrupt 0000:06:04.2[B] -> GSI 17 (level, low) -> IRQ 169
[17179588.432000] PCI: Setting latency timer of device 0000:06:04.2 to 64
[17179588.432000] mmc0: SDHCI at 0xd0003400 irq 169 DMA

vale, demonio malo (sdhci), quiero saber quién eres...aunque, bueno, la mayor parte de las cosas que quiero saber sobre ti las dices tú solito, eres Secure Digital Host Controller Interface driver...oleoleole.

Wey, pero no se monta...veamos si está el módulo en el kernel...(lsmod | grep sdhci):

sdhci 20108 0
mmc_core 32136 1 sdhci

Viendo sus pci's (lspci):

06:04.1 FLASH memory: ENE Technology Inc ENE PCI Memory Stick Card Reader Controller (rev 01)
06:04.2 Class 0805: ENE Technology Inc ENE PCI Secure Digital Card Reader Controller (rev 01)
06:04.3 FLASH memory: ENE Technology Inc FLASH memory: ENE Technology Inc: (rev 01)
06:04.4 FLASH memory: ENE Technology Inc Unknown device 0551 (rev 01)

Y leyendo por ahí, son los módulos sdhci, mmc_core y mmc_block los que tienen que estar...los bajas, los cargas...una hora a fuego lento, compilar el kernel ¡et voilá! ya tenemos un SD-souffle, ñamñam, ricorico...

miércoles, 16 de enero de 2008

SCUMMVM y M3DSREAL (I)

Como dijo Jack el destripador, vayamos por partes.

¿Qué es M3DSReal?
La M3DSReal es una flashcard utilizada sobre el slot 1 de la videoconsola Nintendo DS (de ahí que tenga número el hecho de tener dos slots...)

¿Qué es SCUMMVM?
SCUMM virtual machine o Script Creation Utility for Maniac Mansion virtual machine. Y con ese nombre algo se vislumbra...maniac mansion...si, os suena, sé que sí, me suena hasta a mi...motor gráfico de LucasArts, que fue antecesor de GrimE (de Grim Fandango, un magnífico sicario de la muerte en el día de todos los santos al que no he tenido hasta ahora el placer de conocer) y sucesor de nadie, de ahí que digan que fue el primer motor para aventuras gráficas.
Esta información de antes la pongo para quedar bien, aunuqe realmente este caballero con ese nombre era desconocido para mi, a pesar de hablerlo usado (¿quién no ha jugado a Loom? pues si no lo has hecho ya puedes empezar a ....¿comprarlo? ¿aún se puede?)

¿De qué va todo esto?
Jugar a Monkey Island en la DS con el único objetivo de ver si se usa o no el palito.

¿Por dónde empezar?
Por leer los tutoriales de mi amado gooooooogle.

[continuará (espero)...]


PD Duda existencial...para juegos antiguos descatalogados ¿bajarlos sigue siendo delito?¿no es más bien conservación histórica? ¿algo así como paleoinfología?