Archivos de Diciembre, 2009

Feliz Navidad para todos!

Este es –supuestamente- un post navideño, así que trataré de que me consuma el espíritu de navidad. Y como no he preparado nada, escribiré lo que salga =P.

Aquí estoy, en mi mueble esperando a mi familia, tengo la laptop en mis piernas (lo cual espero que no me deje estéril u_U) y muchas ganas de celebrar este día. También tengo muchas ganas de hacer otra cosa, pero por ser este un día tan especial me aguantaré.

No soy muy bueno para escribir y menos cuando lo hago en tan poco tiempo; así que lo único que me queda por decir es

 

FELIZ NAVIDAD!!!

Dentro de un rato llamaré a toda la gente de IFX incluyendo al tumbesino de mela que no responde mis sms, JODER!!!

Twitter Hackeado

twitterHackedHace buen rato twitter fue hackeado y en iFXPeru damos la noticia de mala onda para la gentwitta de la twittósfera, lo curioso es dejar su correo electrónico: Iranian.Cyber.Army@gmail.com, quizás sea para contratos, maltratos, fama, en fin… Lo bueno es que tenemos a twitterland de regreso!

Via: TechCrunch

Saludos!

Programando en C Sharp – 01

Y como dijo Jack, vamos por partes. Ahora comienza la programación en C#,
el IDE que utilizaremos es Visual Studio 2008, pueden descargar una versión
Express [de preferencia el instalador OffLine], espero que este curso sea de su agrado :D

using System;
// "System" es la libreria que usaremos(using) para el programa.

namespace IntercambioValores
 // Es una forma de agrupar lógicamente.
 // Podemos llevar un ordenamiento jerárquico, que
 // permite buscar y utilizar de manera sencilla las clases.

{
 class Program
 // Nombre de la clase
 {
 static void Main(string[] args)
 // Método principal del programa
 {
 // Declaración de variables
 int a, b, c;

 // .WriteLine: escribe valores y da un salto de linea.
 Console.WriteLine("Comenzando a programar en C#");
 Console.WriteLine("----------------------------");

 // .Write: comienza a recibir valores en la misma linea
 Console.Write("Ingrese un valor a: ");

 // Convertimos tipo de dato: string -> int
 a = Int32.Parse(Console.ReadLine());
 Console.WriteLine("Ingrese un valor b: ");
 b = Int32.Parse(Console.ReadLine());
 Console.WriteLine("----------------------------");

 // se utiliza una variable c para poder almacenar
 // temporalmente el cambio a->b, de lo contrario
 // las variables se reemplazan y caos total >.<
 c = a;
 a = b;
 b = c;
 Console.WriteLine("Los valores de a y b fueron intercambiados");
 Console.WriteLine("Ahora los nuevos valores son: ");
 Console.WriteLine("a: " +a);
 Console.WriteLine("b: " +b);
 Console.ReadLine();
 }
 }
}

Ahora bien, si lo que deseamos es desarrollar alguna fórmula matemática como la suma de los N primeros números naturales… En el main, estaría el siguiente código:

int CantidadNumeros;
double Resultado;
Console.WriteLine("Programando matemáticamente");
Console.WriteLine("---------------------------");
Console.Write("Ingrese la cantidad de numeros: ");
CantidadNumeros = Int32.Parse(Console.ReadLine());
//Determinamos la fórmula:
Resultado = CantidadNumeros * (CantidadNumeros + 1)/2;
Console.WriteLine("El resultado es: "+Resultado);
Console.ReadLine();

Saludos!

Efecto de Nieve en Action Script 3.0

Crear un efecto de nieve usando ActionScript es bastante sencillo. A grandes rasgos consiste en establecer una zona en la cual va a caer la nieve, añadir copos de nieve en la parte superior y luego manejar el evento Enter Frame para mover los copos de nieve hacia abajo y hacia los costados.
Para hacer este efecto me he basado en un código que encontré en liquidjourney, el cual hace el efecto de la nieve cayendo, el problema es que estaba en ActionScript 2.0 así que le hice unos cambios para pasarlo a ActionScript 3.0 ya que puede haber problemas si se quiere usar este efecto en otras animaciones que usan AS3.
Sólo necesitan un símbolo para delimitar la nieve como se ve en la imagen y agregar el código que pongo más abajo
fondonieve1
Código:
//Posiciones de fondonieve
//Fondo nieve es un símbolo que marca el cuadro donde caerá nieve
var left:Number = this.fondonieve.x;
var right:Number = left+this.fondonieve.width;
var top:Number = this.fondonieve.y;
var bottom:Number = top+this.fondonieve.height;

//Número de copos de nieve
var total:Number;
total=250;
//Variable que almacenará los copos de nieve
var miArray:Array;

//Crear el fondo, en este caso el Sprite donde va la nieve
//y la máscara para que los copos de nieve no salgan de ahí
function createBackground():void {
//Crear el Sprite para la nieve
var ele:Sprite =new Sprite();
ele.name="ele";
//Posicionarlo en el mismo lugar que fondonieve
ele.x=this.fondonieve.x;
ele.y=this.fondonieve.y;
//Agregalo
addChild(ele)

//Crear el Sprite mask2 que usaremos de máscara
var mask2:Sprite =new Sprite();
mask2.name="mask2";
//Posicionarlo en el mismo lugar que fondonieve
mask2.x=this.fondonieve.x;
mask2.y=this.fondonieve.y;
//Agregalo
addChild(mask2)
//Dibujar un rectángulo con las medidas de fondonieve
var g2:Graphics = mask2.graphics;
g2.beginFill(0x000000, 100);
g2.moveTo(0, 0);
g2.lineTo(this.fondonieve.width, 0);
g2.lineTo(this.fondonieve.width, this.fondonieve.height);
g2.lineTo(0, this.fondonieve.height);
g2.lineTo(0, 0);
g2.endFill();
//Establecer a mask2 como la máscara de ele
ele.mask=mask2;
}

//Creación los copos de nieve
function createParticles() {
//Obtener el Sprite ele del escenario
var ele:Sprite;
ele=Sprite(getChildByName("ele"));
//Instanciar el arreglo
miArray=new Array();

//Usar un for para crear los copos de nieve
 for (var i:Number = 0; i<total; i++) {
  //Nieve es una clase-símbolo con la imagen de un copo
  var clip3:Nieve=new Nieve();
  ele.addChild(clip3);
  //Crear un Object con los atributos necesarios: el movieclip del copo de nieve(Sprite), posiciones x - y, velocidad de movimiento x - y, rotación, dos contadores ct y c para realizar los cambios de dirección y hasta donde deben caer fl
  var obj:Object = {mc:clip3, mn:1+Math.random()*2, x:Math.random()*this.fondonieve.width, y:-100, movx:Math.random()*2-1, movy:Math.random()*3+0.5, r:Math.random()*10-5, ct:Math.ceil(Math.random()*60), c:0, fl:this.fondonieve.height-Math.random()*3};
  //Unicar el copo de nieve en las posiciones establecidas
  clip3.x=obj.x;
  clip3.y=obj.y;
  //Agregar el obj al arreglo
  miArray.push(obj);
  //Deformar y girar el copo de nieve para que no sean todos iguales
  clip3.scaleX= 2+Math.random()*3;
  clip3.scaleY= 2+Math.random()*3;
  clip3.rotation=Math.random()*360;
 }
}

//Funcion que se va a ejecutar en cada evento EnterFrame
function myForEachFunction (obj:Object, index:int, array:Array):void
{
  //obj es cada Object que se tiene en miArray
  //Recordar que obj.mc contiene el MovieClip del copo de nieve
  var mc:MovieClip = obj.mc;
  obj.c++;
  //Verificar si hay que cambiar la dirección
  //Esto es cuando el contador c pasa a ct
  if (obj.c&gt;obj.ct) {
  //Cambiar la dirección y reestablecer c y ct
  obj.movx = Math.random()*5-2.5;
  obj.c = 0;
  obj.ct = Math.floor(Math.random()*60);
 }
//Hacer los cambios en obj
obj.x += obj.movx;
obj.y += obj.movy+obj.mn
//Aplicar los cambios en el movieclip del copo de nieve
mc.rotation += obj.r;
mc.y = obj.y;
mc.x = obj.x;

//Verificar si el copo de nieve ha salido de los bordes derecho o izquierdo
//De ser así reaparece por el borde contrario
if (mc.xthis.fondonieve.width+5) {
obj.x = left-2;
}

//Verificar si el copo de nieve ya cayo completamente
if (mc.y&gt;obj.fl) {
obj.fl=this.fondonieve.height-Math.random()*3;
//Reubicar el copo de nieve arriba
obj.y -=this.fondonieve.height;
obj.movy = Math.random()*3+0.5;
}
}

//Función a realizar en cada evento Enter Frame
function onLoop(evt:Event):void {
//Ejecutar para cada elemento de miArray la función myForEachFunction
miArray.forEach(myForEachFunction)
}

//Agregar un listener al evento Enter Frame y darle la función onLoop
this.addEventListener(Event.ENTER_FRAME, onLoop, false,0, true);

//Llamadas a los métodos para crear todo
createBackground()
createParticles()

Pueden modificar valores como la cantidad de copos de nieve o mejor aún pueden agregarle sus propias imagenes y ver cómo cae la nieve. El resultado es algo así:

nifx

Para ver la animación real ir a este link:

Pueden descargar el archivo .fla AQUI

Sígueme que yo te sigo!!!

Hace un par de minutos Will me acaba de pasar un video del faraón de la salsa cantando sobre twitter. Y pues, yo que soy un amante de este genero y además de la informática, no dude en postearlo (además porque Will no quiso porque dice que ya acabo su contrato JUM!) =D.

 

Sígueme que yo te sigo ♫

 

Entre la nota y el conocimiento aprendido

Aviso: Aprobé todos mis cursos y no estoy resentido con algún profesor (Ya lo entenderán más abajo).

Bueno, en este día lunes quiero empezar la semana y terminar mi trabajo aquí en el blog por este 2009 (porque la directiva me está dando vacaciones hasta el próximo año) con un post off-topic y que de hace tiempo tenía ganas de escribirlo acerca de una realidad, que al menos a algunos nos afecta por el hecho de ser como somos. Pues verán, dice la leyenda urbana-familiar que nunca hubo padre desaprobado en el colegio en aquellos tiempos en donde primaban los pantalones holgados y las familias numerosas, que todo padre al ser niño fue el mejor de la clase y que siempre obtenía diplomas, que nunca salían a ningún lado y que pasaban con una nota entre 8 y 10 (18 y 20 en nuestro estándar vigesimal), y por consiguiente a nosotros, los de nuestra era (llámese 90 – 2000’s) nos toca ser “niños” que intentemos demostrar un empeño y aprender para así intentar sacar la nota más alta y que al final, eso es lo que enorgullece a los padres, cosa que a nuestros días tan diferentes y trajinados de esto de la modernidad y la globalización, ha sacado a relucir a algunos especímenes colegiales, universitarios y en algunos casos raros, institucionales.

A que es lo que quiero llegar? Pues a analizar esta relación que se ha perdido entre la nota y el conocimiento aprendido, entre el reconocimiento y la capacidad, entre el resultado y el proceso, un concepto tan abstracto que a día de hoy me tiene pensando y pensando y haciéndome laberintos derivados en dolores de cabeza…

La premisa es simple: Que vale más?… La nota o lo que has aprendido?, Que tu jefe te nombre el empleado del mes o que te sientas cómodo trabajando?.

Lee el resto del articulo »

Fallece Mark Ritts, La Rata Lester del Mundo de Beakman

Una de las cosas que recuerdo de mi infancia, entre tantas cosas que me marcaron y que quizás no voy a recordar hasta que alguien o algo lo haga, es un programa educativo que daban en no recuerdo que canal, acerca de un tipo con el pelo esponjado, una rata testaruda y una chica asistente, sí, el programa era “El Mundo de Beakman” (creo que aún pasan repeticiones en el canal cl@se en el cable) y bueno, era muy chvre, muy educativo y muchas de las cosas que no sabía se me despejaron con ellos XD… (Aparte de los chistes que decían al comienzo y al final los pingüinos estos XD)…

Pues bien, hoy me acabo de enterar vía Pixelaris que la rata de este programa, osea la persona que lo protagonizaba, Marks Ritts ha fallecido a causa de un cáncer, hace algunas horas nada más el 7 de diciembre, una pena de verdad! me dio tristeza de verdad, siempre hacía reír con sus ocurrencias en el programa cuando protagonizaba a la Rata Lester! y el programa es uno de los mejores que he visto, lo recomiendo enteramente

Lee el resto del articulo »

Editor de texto para programar en java

duke_compiler Esto es algo que hice por mi cuenta cuando aun estudiaba en la UPAO y que también estuvo en este blog  en su momento, luego se borro (pregúntenle a Will porque). En ese entonces no habían muchos editores y Netbeans aun andaba en sus primeros años, así que para mi me fue muy útil en esas épocas y mas cuando quería probar pequeños códigos en cualquier distribución de Linux. Además me emocione tanto con esto que hasta puse el link con 2 instaladores (Inno Setup y otro instalador en java), los cuales no son necesarios ya que supongo que todos saben ejecutar un jar, además en ese tiempo Windows no te permitía por defecto ejecutar un jar con el doble clic, por lo que tenias que hacerlo duke_running en la consola. Además recuerdo que cree dos versiones, una para el JRE 1.5 y otra para el JRE 6. Mas abajo pondré solo la 1.6, porque creo que java se ha expandido tanto que ya todos deben tener actualizada la versión del JRE, en caso contrario, les saldrá una excepción –la cual no recuerdo su nombre- con respecto a las versiones del JRE. Si pasara eso, solo comenten para enviarles la anterior, o en todo caso pueden compilar el código para una versión anterior, claro haciendo los cambios respectivos.

Ahora, supongo que lo que hice no es nada novedoso, pero creo que si posteo el código a alguien le debe servir =)

Pondré unos links aquí abajo para bajarlos =).

JAR ejecutable

Source Code + Jar Ejecutable

PD: Las GUIs están programadas.

Controlar puerto paralelo y puerto serie desde java

Controlar el puerto paralelo es bastante sencillo con algunas funciones que ya tienen predefinidos algunos compiladores de C++. Por ejemplo, turbo c++ trae outport() e inport() para acceder a diversas direcciones de puerto.

Lo que hice esta vez, fue simplemente linkear dichas funciones a java mediante el JNI (Java Native Interface). A continuación les adjuntaré el jar con la pequeña biblioteca que hice y también algunos ejemplos simples probados con un led, cualquier consulta ponerla aquí abajito =D.

Olvidaba algo importante para cuando el proyecto tenga mas de 1 clase y/o paquetes (sino no es necesario), que para que corran los programas sin ningún inconveniente se debe poner el método: Port.loadLibrary() en la primera línea del main de su programa (incluso pueden agregarlo en “agregar biblioteca” de netbeans) y claro poner los dlls visibles para los .class de su programa puedan encontrarlos. El dll que creé fue el Port.dll que esta en el jar y el otro es clbr18.dll que es propio del compilador que use que fue OpenWatcom. Claro todo esta en la carpeta “Examples” del rar que pondré aquí abajo =D.

NOTA: Otra opcion es poner los dlls Port.dll y clbr18.dll dentro de la carpeta bin de su JDK, que en mi caso es el siguiente: C:\Archivos de programa\Java\jdk1.6.0_16\bin. Aparte tambien hay muchas mas opciones para setear el java.library.path, solo estoy nombrando las -que a mi parecer- son mas comodas.

Libreria JAR + DLLs (para agregar a proyectos de Netbeans)

Libreria Jar+ Source Code + Ejemplos

Solo ejemplos

Google Goggles

Google, una empresa que vive de la publicidad y el engine de sus búsquedas, nos lanza una nueva herramienta que (a mi parecer) deberíamos catalogar de futurística llamada Goggles, capaz de procesar casi cualquier tipo de información por medio de búsquedas a partir de una fotografía o incluso capturas de video.

Esto hace que digamos, algún monumento, atracción turística (por ejemplo) pueda ser fácilmente identificada con Goggles y automáticamente te lanzará información de entre características y alguna que otra cosilla extra.

Obviamente, esta herramienta luce mejor en un dispositivo portátil (como la analogía esta de que mejor es Twittearlo cuando sucede) y que mejor que el Google Android para usarlo, pues nada, me pareció realmente interesante, aquí les dejo un video acerca de… :

La aplicación ya está disponible en el Android Market de forma gratuita, y bueno, si tienes un Android considérate afortunado de poder probarla XD…

Vía | Alt1040

Sobre mudanzas, direcciones y redirecciones de dominios [Wordpress]

Hace un rato Clayder anunciaba en un post reducido como es que acabamos de cambiar la dirección del blog y bueno, simplemente quería dejar en este post algunas cosas acerca de este tipo de cambios para tenerlo como apunte, puesto que hay que hacer un serie de redirecciones para que no se pierda tu tráfico desde Google y los agentes externos (llámese buscadores, sistemas de marcadores de blog, agregadores, etc.) que, con un cambio de estos hay gente que al ir a tu antigua dirección no encuentra nada XD... así que, en algunos sencillos pasos redactaré como es que nos cambiamos y aunque colocando la dirección antigua de un post, te redirige al post con su nueva dirección!.

Primero que nada, y para ahorrarnos tiempo, debo decir que estos procedimientos son válidos para aquellos que quieren cambiar la dirección desde un xxx.com a un yyy.com, y no sirve para sitios webs alojados en wordpress.com, blogger.com y por el estilo.

Lee el resto del articulo »

Nueva dirección, la misma gente!!!

Como ya se venia venir, nos mudamos!!!. Bueno no tanto así, ya que seguimos en el mismo hospedaje (hosting), pero el camión de mudanzas (Will) nos ubico en un dominio .com que nos fue facilitado gracias a nuestro corredor de bienes raíces (trujillo hosting). Ahora nuestra url es:

http://ifxperu.com

sin embargo, aun nos pueden encontrar en la anterior:

http://blog.informatrix.uni.cc

En ambos casos serán direccionados a la primera dirección. Aun así, si no nos encuentran en ninguna de las anteriores, pueden usar el operador ampersand (&) para ubicarnos xD.

Xoo Image

french_artist

Xoo Image es un hosting frances que fácilmente se puede considerar “un misterio”, o también una bendición dependiendo de como lo mires. No pide registro, es rápido, es gratis, y te permite subir cualquier tipo de archivo. Descubrí esta página hace un tiempo cuando buscaba algún hosting para archivos swf ya que lo necesitaba para  mi blog, traté con varios pero o no aceptaban este tipo de archivos o no se veía bien al querer usarlos.

Su página principal no nos dice casi nada, tan solo tiene un mensaje “Subir una imagen o fichero” (al menos eso creo porque está en francés) y luego dos botones, uno para elegir el archivo y el otro dice “Envoyer” (enviar segun WordReference). Una vez que has subido el archivo que quieres Xoo te brinda una url (bastante simple la forma en que te devuelve la url) con la que puede acceder al archivo que subiste.

Dónde se almacenan tus datos es un misterio. Además como no te registras los archivos no le pertenecen a nadie en particular. No hay que fiarse y dejar los archivos en el hosting pensando que siempre van a estar ahí porque tranquilamente se les ocurre apagar el servidor y no sabemos ni con quién quejarnos.
Pueden acceder en esta dirección: http://www.xooimage.com/fr/