Marzo 30, 2003

Stdio vs iostream

Ahora que he retomado el mundo del C++, me he dado cuenta de que en la facultad utilizan la libreria iostream.h para recoger y mostrar datos en las aplicaciones...verdad que apesta??. Por eso me gustaria hacer un llamamiento a todos aquellos amantes de C y que amen de verdad a la libreria stdio.h, a que, tal y como hizo Akhenaton con su Dios Sol, proclameis a stdio como unica y verdadera libreria estandar de entrada y salida, y derribemos a esa farsante que es iostream.
Nos envenenan con su cin y cout, y signos de redireccionamientos(<< o >>) haciendonos creer que son buenos y positivos para nuestra programación, pero yo os digo compañeros que no son comparables al majestuoso printf y scanf.
No digo que iostream no sirva para nada, pues estaria mintiendo, ya que posee otras funcionalidades, pero nunca estas funcionalidades haran que olvide a stdio.
Es más, os insto a que en PHP useis printf y no echo, que en asp creeis una funcion para el Response.write y que incluso en MS-DOS creeis un alias para el dir de manera que sea printf_directories.
Espero que mis ruegos no caigan en saco roto y todos los que leais mi articulo quedeis enamorados como lo quede yo un dia de STDIO, The Library.


Marzo 26, 2003

Algo sobre maquetación sin tablas

Las tablas de Html fueron creadas para presentar contenido tabulado, nunca fue su destino maquetar. Por razones diversas, que no cabe explicar ahora aqui, las tablas se han usado tradicionalmente en diseño web para maquetar y colocar cada elemento en su sitio dentro de la pantalla, algunos pensarán que esto es normal e incluso aceptable... Tras una profundización en este tema se darán cuenta de la cantidad de problemas que trae el uso de las tablas para aquello para lo que no fueron creadas, entre otros la gran cantidad de codigo innecesario que generan (lo cual influye en el mayor peso y tiempo de carga de la página), el mayor tiempo de renderizado de la página por los navegadores (debido a la necesidad de anidar muchas tablas dentro de otras), el problema de accesibilidad que suponen (imaginaos a un lector de pantalla, o navegador para invidentes, intentando leer el contenido de decenas de tablas anidadas llenas de imágenes con extraños nombres generadas, cortadas y luego introducidas en tablas y tablas por programas de maquetación por todos conocidos...) y otros serios problemas que plantea el uso de tablas para maquetar. Por otra parte, las capas, en unión con las hojas de estilos (CSS2) son una mejor alternativa para la maquetación, si bien en principio hay que salvar los escollos planteados por las malas interpretaciones de los estándares del W3 de los navegadores y puede ser un poco difícil acostumbrarse a maquetar con capas, en poco tiempo podreis manejaros como peces en el agua. Bueno, no me enrollo más y ahí van unos cuantos enlaces:

  • Uno delos artículos más completos de "css positioning" que he visto

  • Un artículo muy interesante de macromedia (en castellano)

  • http://dbaron.org/css/test/

  • http://www.glish.com/css/

  • http://www.bluerobot.com/web/layouts/

  • http://www.realworldstyle.com/

  • http://www.tierradenomadas.com/ (en castellano)

  • http://www.xs4all.nl/~apple77/columns/


  • Saludos


    Sinuhé, el Egipcio

    El último libro que le lei era "Sinuhé, el Egipcio" de Mika Waltari, fantastico libro ambientado en la epoca del antiguo egipto durante el reinado de Akhenaton.Sinuhe, El Solitario
    El libro muestra esta época por los ojos de Sinuhé, medico personal de faraon, que se ve envuelto en una trama politica que desencadena la progresiva caida del Imperio Egipcio y que lo coloca en primera linea de fuego.
    El caracter de sinuhé esta marcado por sus reflexiones y su soledad ante el decadente mundo que lo rodea y nos muestra el rostro mas ruin del ser humano.
    Para terminar un excelente libro que te hara reflexionar sobre nuestra naturaleza y sobre nuestra alma.


    Marzo 24, 2003

    LA GRAN MENTIRA DE LA VIDA UNIVERSITARIA

    Aquel que lo haya vivido comprenderá de lo que hablo, aquel que haya vivido el cambio de ciudad para continuar los estudios se sentirá identificado. Nos pasamos los dos o tres últimos años de instituto deseando abandonar nuestra ciudad, la tiranía paterna incomprensible de horarios, normas, reglas impuestas y discursos morales que no entendemos... Deseamos cambiar de ambiente, de gente, de vida y embarcamos en lo que creemos que será una aventura llena de independencia, diversión y gente nueva.
    Hacemos planes con nuestros amigos de siempre de todo lo que haremos cuando vivamos solos, de lo bien que lo pasaremos etc... Envidiamos a los universitarios que pueden tener esa vida que soñamos... Y por fin llega el gran día, aprobamos selectividad y llega el 1 de octubre de nuestro año de novatos, que os voy a contar de las 2 primeras semanas...increíbles! el piso esta de lujo, fiestas por doquier, muchas niñas guapas y conoces a toda la facultad

    Pero desengañémonos la tercera semana empiezas a ver las cosas de otro color cuando te das cuenta de que te has fundido tu paga mensual en 9 días, la carrera es más difícil de lo que parecía, no hay tantas fiestas, la convivencia en tu piso no es tan fácil, muchas niñas guapas...si...pero ninguna contigo, no se liga, ni se sale ni se bebe tanto y empiezas a echar de menos a tus padres cuando te das cuenta que el cubo de la ropa sucia de tu piso no es mágico como el de tu casa donde la dejabas allí y aparecía a los dos días planchada y doblada en tu armario. Buscas desesperadamente donde se dan los cursos para aprender a manejar la lavadora y la plancha, tu fregadero siempre está lleno y las pelusas que crías en el pasillo miden 1,80 y ya empiezan a hablar, tu estomago empieza a resentir esa dieta exclusiva de pasta y salchichas, no entiendes por que tu nevera no se llena sola como antes y escuchas rumores de que tu cocina antes era blanca y no de ese color amarillento, no puedes explicarte por que un letrero de sanidad precinta tu cuarto de baño por emisiones tóxicas... En fin creo que os lo imagináis. Piensas que te han timado, que no es tan bonito como te lo pintaban e incluso a veces te deprimes y quieres volver a casa. Pero maduras y piensas que es lo que hay y no se puede cambiar, a algún compañero se le ocurre hacer 1 horario de limpieza y... funciona!!por fin tu piso parece una casa, sanidad retira la cuarentena en tu W.C., vais a hacer la compra semanal y no os falta de nada, aparece la novia de 1 compañero que os enseña a cocinar, la lavadora y tu os lleváis bien , te tomas enserio los estudios, ya has ligao!!!! y conoces a gente guay, amigos de verdad, sales menos pero te diviertes más. Lo bueno que tiene la vida universitaria no es divertirse como antes, sino que maduras para aprender a divertirte de otra manera. Me gusta esta vida por que la elijo yo, aprovechad estos momentos por que la recordareis como los mejores años de vuestra vida.


    Marzo 22, 2003

    Un, Dos, Tres, Splash

    Esta semana en domingueando recomiendo que os senteis delante del ordenador y que os pongais a navegar un rato por la red a intentar encontrar algo que os llame la atencion, www.minijuegos.compero si veis esta labor algo tediosa podeis visitar www.minijuegos.com, una estupenda pagina de juegos en flash donde podreis encontrar cualquier genero, desde aventuras graficas hasta jueguecitos de esos que son un poco guarros.
    Yo recomiendo en aventuras el SteppenWolf, un Aventura Grafica de gran calidad.
    En Fin korsarios esta es mi propuesta para Domingueando de esta semana, si la veis entretenida disfrutad de ella, hasta pronto!!


    Adivina.cpp

    El otro dia estaba por aqui a eso de las 23:30 me puse con la practica 1 de laboratorio y me dije a mi mismo, porque no acabarla y postearla en internet para que mis queridos compañeros de teleco puedan disfrutar de ella.
    Y puse todo mi ingenio para acabarla esa misma noche, y hasta las 5 estuve con ella. Consegui acabar la practica y aqui esta, Adivina numero.
    Espero que sabreis valorar el esfuerzo de perfeccionamiento por mi parte.

    Autor: Alvaro -
    Komentarios (2)

    Marzo 17, 2003

    Follow wallpaper

    Os traigo esta vez un wallpaper (180 kb , paciencia) que realicé hace unos días, a ver qué tal os parece. Saludos


    Selector de colores

    Ultimamente no ando bien de tiempo, por eso es que apenas posteo, pero tranquilos que volvere a estar plenamente activo en breve. Hoy he tenido un ratito libre y al leer al genial articulo de Álvaro se me ocurrió este Selector de colores. Como no tengo tiempo de realizar un tutorial he comentado el código fuente y espero que con eso os baste para entender como funciona. Como vereis no es nada del otro mundo. Para Álvaro dejo el trabajo de integrarlo con su Paint que supongo que será sencillo. Bueno esto es todo por hoy, me voy a la facultad, que el IRPF me reclama ;)

    Autor: Jose -
    Komentarios (1)

    Marzo 16, 2003

    Flash Paint

    En este tutorial explicaremos paso a paso como realizar una aplicacion de al estilo MSPaint con las api de dibujo de flash.

    MSPaint - codigo fuente.

    ELEMENTOS EN PANTALLA
    Para empezar crearemos un movieClip que sera el area de dibujo con instancia "pantalla" y otro que hara de cursor para la aplicacion, yo he elegido el del MSPAINT y que instaciaremos como "brocha".
    Y para acabar crearemos sendos botones para seleccionar el color y el grosor de la brocha, asi como uno para la herramienta goma y otro borrar todo. Esto tambien se puede hacer con los componentes predefinidos ComboBox.

    ACCIONES
    Antes de comenzar con las acciones explicare el funcionamiento del "lineTo(x,y)":
    El Api de dibujo establece la posicion de un cursor que ira realizando el trazado desde esa posicion hasta un X y un Y, siendo ese X y ese Y el nuevo valor del cursor del Api.

    - Inicializacion:
    Dos variables que tendremos que tener muy encuenta seran las que detecten cuando se hace click para comenzar el trazado con la variable "ClickOk" y detectar cuando el puntero del raton esta encima del area de dibujo.

    ClickOk = false;
    EnPantalla = false;


    Los trazos no los realizaremos en el clip Pantalla, sino que los realizaremos en un nuevo MovieClip "dibujo" que crearemos con "createEmptyMovieClip(instancia,profundidad)".

    createEmptyMovieClip("dibujo",200);

    Para realizar los trazos utilizaremos el Api "lineTo(x,y)", al cual hay que definirle los paremetros de Grosor, Color y Transparencia:

    ActualGrosor = 6;
    ActualColor = 0x000000;
    ActualAlfa = 100;
    dibujo.lineStyle(ActualGrosor,ActualColor,ActualAlfa);
    brocha.swapDepths(300);

    - Eventos:
    Utilizaremos los eventos "onRollOver" y "onRollOut" para detectar cuando del raton esta sobre "pantalla" en cuyo caso ocultaremos el puntero normal del raton y lo sustituiremos por el Clip "brocha" y la variable "EnPantalla" la pondremos a true. En el caso contrario, mostraremos de nuevo el puntero del raton, la brocha la sacaremos fuera de la pantalla visible ("brocha._x=-100") y la variable "EnPantalla" la pondremos a false.

    pantalla.onRollOver = function() {
    Mouse.hide();
    EnPantalla = true;
    brocha._x=_xmouse;
    brocha._y=_ymouse;
    }

    pantalla.onRollOut = function() {
    Mouse.show();
    brocha._x = -100;
    EnPantalla = false;
    }

    El evento "onMouseDown" detecta si el puntero se encuentra en la "pantalla"Si es asi pone "ClickOk" a true, establece el estilo de la linea mueve el cursor del Api a la posicion X e Y del raton, en otro caso ClickOk lo pone a false

    pantalla.onMouseDown = function() {
    if (pantalla.hitTest(_level0._xmouse,_level0._ymouse)) {
    ClickOk = true;
    dibujo.lineStyle(ActualGrosor,ActualColor,ActualAlfa);
    cX = Math.round(_level0._xmouse);
    cY = Math.round(_level0._ymouse);
    dibujo.moveTo(cX,cY);
    } else {
    ClickOk = false;
    }
    }

    El evento "onMouseUp" pone "ClickOk" a false y establece la posicion del cursor como la ultima tomada por el raton.

    pantalla.onMouseUp = function() {
    ClickOk = false;
    cX = Math.round(_level0._xmouse);
    cY = Math.round(_level0._ymouse);
    dibujo.moveTo(cX,cY);
    if (!pantalla.hitTest(_level0._xmouse,_level0._ymouse)) {
    brocha._x=-100;
    EnPantalla=false;
    mouse.show();
    }
    }

    El Evento "onMouseMove" realiza dos acciones:
    Establece el arrastre del Clip "brocha" si el raton se encuentra "EnPantalla".
    Comprueba que se haya pulsado el boton del raton (ClickOk=true) en cuyo caso va trazando una linea desde la posicion anterior del cursor del Api hasta la posicion actual del raton. De esta forma se van dibujando las formas. Una vez hecho todas las acciones se actualiza el clip mediante updateAfterEvent();.
    pantalla.onMouseMove = function() {
    if (EnPantalla) {
    brocha._x = _level0._xmouse;
    brocha._y = _level0._ymouse;
    }
    if (ClickOk) {
    if (pantalla.hitTest(_level0._xmouse,_level0._ymouse)) {
    cX = Math.round(_level0._xmouse);
    cY = Math.round(_level0._ymouse);
    dibujo.lineTo(cX,cY);
    }
    }
    updateAfterEvent();
    }

    - Funciones:
    Las Funciones que establecemos acontinuacion serviran para establecer estilos y para desarrollar las herramientas del programa de dibujo y que seran llamadas desde los botones que definimos al principio.

    Para Borrar todo el dibujo y empezar uno nuevo utilizamos la funcion clear();.

    function NuevoDibujo() {
    dibujo.clear();
    }

    Para cambiar el grosor del trazo:

    function CambiarGrosor(grosor) {
    ActualGrosor = grosor;
    }

    Para seleccionar el color del trazo utilizamo un switch en la que sustituimos el color escrito por el formato 0x000000 en la que sustituiremos las 6 ultimas cifras por el color que deseemos en hexadecimal:

    function SeleccionarColor(ColorElegido) {
    switch(ColorElegido) {
    case "Negro":
    ActualColor = 0x000000;
    break;
    case "Blanco":
    ActualColor = 0xffffff;
    break;
    case "Rojo":
    ActualColor = 0xCC0000;
    break;
    case "Amarillo":
    ActualColor = 0xFFCC00;
    break;
    case "Verde":
    ActualColor = 0x66CC66;
    break;
    case "Azul":
    ActualColor = 0x33CCFF;
    break;
    }
    }


    Marzo 15, 2003

    Luces, Cámaras, Karaoke!!

    ¿Alguna vez habeis pensado en presentaros para operacion triunfo? Pues este domingo puedes empezar a ensayar creando en tu PC un autentico Karaoke. MicrofonoHe estado empoyandome la fabulosa tecnologia de los .kar, archivos integrados de midis y texto para las canciones del Karaoke. Este estandar se ha extendido tanto que existen miles de paginas para bajarse canciones .kar gratis y programitas Freeware con los que puedes disfrutar de un dia tan espeso como el domingo con los coleguitas, desafinando a muerte. La calidad de la música no es demasiada, pero la calidad de tu voz tampoco asi que compensa. Pero no abuses mucho del karaoke porque podrias tener talento y quien sabe, podrias convertirte en el proximo Bisbal, uhhh.


    Marzo 12, 2003

    Space Lancer

    ¿Creias que despues de Avido Flash Web, todo habia acabado? Pues que sepas que estabas muy equivocado, porque ahora llega SPACE LANCER, un autentico juego de naves en el que pilotaras un pequeño vehiculo al estilo sputnik estraviado por la tierra y q acaba colandonse en una casa.¿Conseguira salir de alla con vida? Intenta que asi sea, pero que sepas que tendras que enfrentarte con peligrosas lamparas, inodoros asesinos, niños sadicos e incluso con Electrodomesticos de la mas baja calaña.
    Cada pantalla tiene codigos de para que no tengas que empezar desde el principio, ademas cuentas con 3 vidas y alguna extra que hay por la pantalla.

    Disfruta ya de este juegazo mientras quizá prepare el siguiente, quien sabe.¿quiza un tipo "Street Fighter"?


    Hay alguien???

    He oído que para un bloguero lo importante no son las visitas en sí, sino lo que postea. Rompiendo esta doctrina se me ocurre una iniciativa. Yo pondré una web de mis favoritos que tenga que ver con una o varias de las secciones que trata korsarios. Vosotros por vuestra parte en el trhead de este post pondréis una de vuestros favoritos indicando con que sección esta vinculada. Espero que no me dejéis solo :P

    w3aeiou la verdad es que trata una gran parte de los temas que nosotros tratamos aquí. Una gran web. Echadle un vistazo y no olvidéis seguir el "hilo".

    Leed y propagad Korsarios¡¡¡

    Autor: David -
    Komentarios (2)

    Usalo

    Contagiado por el mas profundo espíritu usable, saque de la biblioteca de periodismo el idolatrado a la par que odiado libro de Jakob Nielsen "Usabilidad: Diseño de sitios web".
    Cuando empecé a leerlo entendí porque para José era tan importante el desarrollo de sitios web usables. Este post es para lazar el guante a mi compañero y amigo, el gran experto en usabilidad de korsarios para que inicie una especie de tutorial sobre usabilidad.

    José aquí tienes tu sección, te escuchamos.

    Leed y propagad Korsarios¡¡¡

    Autor: David -
    Komentarios (2)

    Marzo 11, 2003

    ActionScript Motions

    Una de las problematicas que encontramos a la hora de observar las animaciones y aplicaciones en flash, el elevado peso de los archivos, que hacen muy tediosa la espera para la carga.
    Para esto existen tecnicas y metodos que reducen el tamaño del swf.
    En esta primera parte veremos como transformar las animaciones creadas con las herramientas del editor, por animaciones creadas en Action Script, con lo que conseguiremos reducir el peso del archivo,aunque ganará en complejidad.

    Articulo 1- Movimientos de Clips

    Si queremos hacer una interpolacion de movimiento en linea recta desde X=0-Y=0 hasta X=200-Y=100. Podemos tomar dos caminos.

    Con Interpolacion:
    En el primer fotograma seleccionamos el MovieClip y lo situamos en las coordenadas X=0-Y=0, selecionamos el fotograma final y creamos alli un fotograma clave, ahora asignamos al MovieClip la posicion X=200-Y=150. Finalmente selecionamos el fotograma inicial y creamos la interpolacion de Movimiento. Si quisieramos aceleracion deberiamos modificar el control extrañamente traducido “borrado” en el panel de propiedades de la interpolacion.

    Con Action Script:
    Seleccionamos el movieclip y en el panel de acciones le asignamos El siguiente codigo:

    onClipEvent(Load){
    _x=Xinicial=0;
    _y=Yinicial=0;
    Xfinal=200;
    Yfinal=150;
    pasos=50;
    }
    onClipEvent(enterFrame){
    if(_x<Xfinal || _y<Yfinal){
    _x+=(Xfinal-Xinicial)/pasos;
    _y+=(Yfinal-Yinicial)/pasos;
    }
    }

    Siendo Xinicial e Yinicial la posicion inicial de MovieClip, Xfinal e Yfinal las posiciones finales y pasos el numero de Movimientos hasta llegar al final del recorrido.
    Si quisieramos aceleración el codigo seria este:

    onClipEvent(Load){
    _x=Xinicial=0;
    _y=Yinicial=0;
    Xfinal=200;
    Yfinal=150;
    Deceleracion=8;
    }
    onClipEvent(enterFrame){
    _x+=(_x-Xfinal)/deceleracion;
    _y+=(_y-Yfinal)/deceleracion;
    }

    Siendo deceleracion el factor de frenado del MovieClip.
    Este metodo es extensible, no solo para un recorrido rectilineo, sino q es extensible para cualquier recorrido representable por una funcion.
    Por ejemplo un recorrido senoidal podriamos representarlo como:

    _y=(Math.sin(inc)*amp)+Yinicial;
    inc+=0.01;

    Siendo inc una variable que se incrementa y amp la amplitud del seno.
    En el caso de querer realizar un recorrido complejo no representable con una funcion simple es preferible el uso de Interpolaciones con guias, pero si el recorrido no resulta ser demasiado complejo se puede realizar mediante la representacion de una funcion por partes combinando distintas funciones, por ejempo:

    onClipEvent(Load){
    _x=Xinicial=0;
    _y=Yinicial=0;
    Xfinal=300;
    Xfinal2=400;
    Yfinal=450;
    inc=0;
    }
    onClipEvent(enterFrame){
    if(_x<Xfinal){
    _x+=5;
    _y=(Math.sin(inc)*70)+Yinicial;
    inc+=0.2;
    }else{
    _x+=5;
    _y+=_x/2;
    }

    }

    Esta Funcion esta compuesta por 2 funciones pues esta definida por partes. Asi pues para X<Xfinal es una funcion senoidal _y=70*Math.sin(inc), y para X>=Xfinal es una recta _y=_x/2.


    Marzo 10, 2003

    Animed Bones

    Navegando por la red, como el que no quiere la cosa examinando la pagina de vectorlounge y me topé con una espectacular creacion de los Wireframe Boneschicos de wireframe. Un Esqueleto con motricidad creada mediante un intrincado sistema de huesos.
    La animacion te permite Draguear cada nodo y se observa como la movilidad del resto de huesos es perfecta y trae una animacion por defecto en el que el personaje camina pudiendose configurar la zancada en movimiento de brazos o incluso la oscilacion de la cabeza.
    Realmente muy conseguida esta aplicacion de wireframe studios, especialista en este tipo de trabajo.

    Animed Bones

    Bueno espero q disfruteis con esta web, yo seguire viento en popa recorriendo la web en busca de nuevos tesoros como este.


    Marzo 08, 2003

    Un chófer muy listo

    Cuentan que, antes de ser mundialmente conocido Albert Einstein, iba por los EEUU dando conferencias con un chófer que lo llevaba a donde quiera que diese sus conferencias.
    En uno de sus viajes Einstein comentó que estaba cansado de repetir su conferencia por doquier, su chófer comentó que había oido tantas veces su teoría de la relatividad que él mismo podría dar la conferencia.
    A nuestro ilustre científico le pareció tan buena idea que le ofreció un intercambio de papeles, el conductor salió airoso de la conferencia, pero al llegar el turno de ruegos y preguntas, uno de los asistentes hizo una pregunta excesivamente complicada la cual nuestro amigo no supo como responder, pero reaccionó contestando lo siguiente: "Es una pregunta tan simple, que mi chófer se la responderá"
    Esto es un chófer a medida del pasajero.


    Marzo 01, 2003

    El libro del pie

    Acaba de ser publicado un genial libro titulado "La Experiencia del Usuario", escrito por varios profesionales de la web (de diversas disciplinas como la AI, la usabilidad,...) algunos de ellos blogueros de los cuales soy asíduo, como: Luis Sotillos, Joaquín Márquez, Javier Cañadas... Lo recibí hace tres días y ya le he pegao un buen empujón de momento me está gustando mucho, creo que es una obra muy completa, si bien adolece de falta de contenidos más prácticos. Pues lo dicho, un libro que os recomiendo a todos, y sólo me falta hacer el ya clásico comentario sobre la horrible portada, de la cual se deriva el título de este post.