Mostrando entradas con la etiqueta programacion. Mostrar todas las entradas
Mostrando entradas con la etiqueta programacion. Mostrar todas las entradas

jueves, 30 de abril de 2009

Una palabra tuya

...bastará para sanarme...pero es que TAAAAAN elegante y TANNN sencillo...extraer paquetes y procedimientos desde sqlplus nunca fue TAN fácil ( y a mi me ha sanado cada palabra, especialmente user_source). Sé que es una chorrada, pero así no cambio de estilo (XD).

select text from user_source where name='PROCEDIMIENTO_ALMACENADO';


¿no es hermoso?


P.D.: Dios maldiga a los Terminal Servers BTW

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.

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"

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.

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...)

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?

jueves, 27 de diciembre de 2007

Lenguaje con letras dentro

Veo C y C++ como una sombra tras mis pasos...¿donde los habré dejado? juraría que los tenía por aquí...en alguna parte.

No, en el armario no están.
En los bolsillos de la chaqueta tampoco...uhm, creo que ya ni me acuerdo de a qué saben.

¿Si fueras C dónde te meterías?

Bueno, supongo que casi que en el mismo sitio que Fortran o Cobol.

¿Qué se debería aprender para poder estar en condiciones de poner una gran C (o una D ya de paso) en tu vida?

Ya, aprende C++ como si estuvieras en primero...pero no, no me vale.

No quiero propiedades, quiero peculiaridades...como cuando distingues tu utilitario gris por el periódico que tienes en el salpicadero.

Por ejemplo, mi main querido y añorado...ahora selecciona (seas quien seas) la respuesta de tu interés:
a) int main()
b)void main()
c)double main()
d) Todas las anteriores

bueno, tu puedes hacer lo que quieras, de hecho, puedes dejar de leer esto ahora mismo.
Pero debería ser int main. De hecho, el compilador hará precisamente eso, asumir que es un entero lo que se retorna.

Cuando declaramos el retorno como void (b) o double (c) el compilador asume que retornaremos un entero y, puesto que no podemos hacer nada con él, será mejor, por nuestro bien, que lo declaremos como entero.

No quiere decir que no compile, que compila, sino que se retornará siempre un valor de retorno ajqueroso (parafraseando a X), es decir bazura. Esto puede repercutir en fallos en la invocación del makefile, que devuelva errores inexistentes, o al ejecutarlo desde la shell con algunos compiladores.

Bueno, también es verdad que para no retornar basura tendría que invocarse exit() o retornar explítitamente un valor para cualquier salida, pero esto que he escrito es solo porque me aburro, no por ningún otro motivo.

Así que niños, usad enteros y completos int's si quereis crecer grandes y fuertes.

lunes, 22 de octubre de 2007

Modulos de python (primer empitonado)

Pues como me esta dando por afeitar bombillas con ofidios (son ofidios, ¿no?), pues sigo con mi rollo en plan monologo.

-YAPGVB, yet another graphviz (python) binding, por lo que debe haber al menos uno más Another aunque sin ser de python. Graphviz

- Si te encuentras con graphviz...no puedes evitar acordarte de gnuplot, ese amigo feo de la infancia, pero que siempre estuvo ahi cuando lo necesitaste, dándole inevitablemente cuatrocientas patadas en el camino y cagandote es sus muertos al final.

- matplotlib , algo asi como un hijo mutante y esmirriado de matlab con documentacion mas completa y sencillita de uso hogareño, como una bata con bolillas, para usar sobre django, dentro de django y alrededor suya mientras se canta la danza de la lluvia.

-glplot.py, que al exigir PyOpenGL creo que se sale de mis esquemas

-GDchart, que parece bastante sencillo y usable, incluido soruce de Solaris (yupiya, yupiyeee)

- Pero creo que me quedaría con reportlab, si es tal y como lo venden, es decir, más simple que el mecanismo de un reloj de arena; si no me canso lo mismo escribo otro post para cansinamiento de las almas sensibles...pobrecillas almas...ains...XD

domingo, 21 de octubre de 2007

Documentando en python

Sería algo así como unNice to include en el codigo:

  • 79 caracteres por linea máximo
  • Usar editores que reemplacen los tabuladores por espacios
  • Separar las definiciones de funciones en el nivel superior y las definiciones de clases por dos lineas en blanco.
  • Usa una linea en blanco entre la linea de definicion de clase y la de defeinicion del primer método
  • Los comentarios en una unica linea entre el codigo deberían ser de tipo #comentario
  • La documentacion de fuinciones y clases debe estar en la primera linea tras el inicio de su declaracion, utilizando las triples doble comillas, sin lineas en blanco ni arriba ni abajo.
  • La indentacion de la documentacion debe ser la misma que la incluida en la siguiente linea tras la declaración, si
  • La documentacion de un modulo debera insertarse tras las lineas de importacion de modulos externos y debera listar todos los metodos, clases y excepciones que puedan ser utilizadas a prtir de la importaion del modulo.
  • Es mejor listar los argumentos de las funciones cada uno en una linea diferente.
  • Python es sensible a mayusculas (case sensitive).
  • La funciones que invoquen al metodo de la superclase deben incluir "extend" y cuando el metodo de la subclase reemplace al de la superclase deben incluir "override".
  • Las lineas en blanco dentro de la documentacion maracrán el inicio de nuevos parrafos.
  • Y ya me he cansado de escribir.


"""Documentacion de este modulo.

Detalles o descripcion breve.
"""

def func():
"""Documentacion de la funcion.

Detalles (override, extends, keywords, valores de retorno).
"""
pass

class PyClass:
"""Documentacion de la clase.

Detalles.
"""

def __init__(self):
"""Constructor."""
self._memVar = 0;

def PyMethod(self):
"""Documentacion del metodo."""
pass



Para ello se puede utilizar el siguiente código abierto:

martes, 9 de octubre de 2007

Los Monty Python y la joyas malditas

Malditas joyas, ...¿se acabaron los nombres de tribus indias acaso?

Perlas y rubíes nos intentan vender cuando todos los lenguajes interpretados son en realidad malas pécoras....XD...( y de ahí la justificación con Monty Python)

Señores, por favor, que hacer lo que se dice hacer...pues harán el apaño, pero para un proyecto duradero son los lenguajes compilados los que acaban siendo la base de todos los lenguajes dinámicos.

Eah, ahí queda

martes, 25 de septiembre de 2007

El mejor amigo del programador

>puts "Hello World!"

El mejor amigo del programador no es su mano izquierda (derecha para los zurdos), no es su perro, ni lo son sus amigos (aunque ella/el/ello lo piense, se estará engañando vilmente)...es un rubí.



Toda una joya de la programación, es vendida como el lenguaje que te hará programar más y mejor, a la vez que te diviertes mientras lo haces...sólo oir de eso ya da gustirrinin.

Un lenguaje dinámico, con menos que escribir y menos que validar (grgrgr).
Más abstracto, se aparta del camino y te deja aproximarte por ti mismo al problema (es como una madre hecha lenguaje, que te deja darte tus propios calamonazos antes de seguir por tu camino).

De momento no puedo escribir mucho con sentido como para poder interesar a nadie. Pero si la uni de Oviedo pudo, se volverá a establecer el nivel de "como si estuvieras en primero" para el futuro sustituto de PHP.

De momento, solo decir que buscan un nuevo logo. Si, es un poco tarde para decirlo, el plazo de acaba a finales de este mes. Pero nunca es tarde para mentes creativas como las vuestras (aunque parece dificil teniendo en cuenta que el logo actual ya es un rubí...sólo cruzan mi mente protagonistas de telenovela venezolana).

Aquí teneis la convocatoria por si os animais.