Cargar una imagen en un Clip con AS3

Publicado Por; jatgjose | Publicado en: Programación | Publicado el dia: 23-06-2010

0

Bueno, ahora que lo he conseguido no me parece tan difícil pero llevaba varios días intentándolo sin éxito, osea que voy a subir el código por si puede ayudar a alguien .

Lo primero es especificar que no voy a crear el MovieClip desde el código , si no que voy a usar uno que he dibujado en un fotograma y que por tanto puedo interpolar ( por ejemplo ) fácilmente .

Pues eso lo primero dibujamos un clip en la pantalla y le damos un nombre de instancia ImagenIntro en mi caso …

Y después añadimos el código en el siguiente fotograma , uno de los problemas que yo encontraba al intentar este proceso es que me daba un error de Objeto fuera de linea de tiempo de compilación o algo así … y no era mas que parece ser que Flash lee primero el código y luego la pantalla , de tal forma si intentas crear el MC en el mismo fotograma que el código AS3 no lo leerá , ya que cuando empiece a leer el código el MovieClip no existiría aún . Así que yo creo el Movieclip en un fotograma y en el fotograma siguiente pongo el código :

Código :

//Primero los imports , si utilizáis Flash CS5 a medida que tecleis el código el los creará automáticamente ...
import flash.net.URLRequest;
import flash.events.Event;
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.Shape;
import fl.transitions.*;
import fl.transitions.easing.*;

// Declaro ImagenIntro como un MovieClip , por lo que tengo entendido Flash con solo el nombre de instancia no
// diferencia si se trata de un MovieClip o de un Sprite
var ImagenIntro:MovieClip ;
// Declaramos ldr como una variable que contendrá un loader
var ldr:Loader = new Loader();

//Asignamos a ImagenIntro la representación de ldr
ImagenIntro.loader=(ImagenIntro.addChild(ldr));
// Declaramos las variables que van a contener la dirección de la fotografía que queremos cargar
var url:String = "Flash/Images/Foto_Intro.jpg"; 
var urlReq:URLRequest = new URLRequest(url);
// Cargamos a ImagenIntro la dirección de la fotografía
ImagenIntro.loader.load(urlReq);

//TransitionManager carga el efecto Wipe en el mc mc_intro. Es un efecto para la imagen .
TransitionManager.start(ImagenIntro , {type:Wipe});

//Creamos una función , que se cargará cuando el contendor ldr comience a cargar la imagen , esto seria
//incluso antes de estar asignado al MovieClip , yo lo utilizo para redimensionar la imagen
ldr.contentLoaderInfo.addEventListener(Event.INIT, iniciocarga);
      function iniciocarga(event:Event)
      {
         ldr.width = 935;
         ldr.height = 300;
      }
//Hasta aquí ya tendriamos la imagen en pantalla , pero ademas a mi me interesa usarla como botón una vez cargada
//Asi que creo una funcion sobre el Movieclip ImagenIntro , para cuando el evento de ratón MouseDown se efectúe .
ImagenIntro.loader.addEventListener(MouseEvent.MOUSE_DOWN, moverintro);
      function moverintro(e:Event):void
      {
         gotoAndPlay(71);
         ImagenIntro.loader.removeEventListener(MouseEvent.MOUSE_DOWN, moverintro);
//Añado esta linea borrando la función por que solo quiero que se pueda clicar una vez en el movieclip .
      }
stop();

A mi este código me sirve como intro de mi pagina , www.cesarsantosgonzalez.com ( esta esta programada en Flash8 ) pero el resultado seria el mismo . La novedad es que con este código en AS3 cuando me canse de la foto de inicio solo tengo que subir una nueva al host con el nombre de la anterior sobreescribiéndola y sin tocar nada más ya saldría la nueva en pantalla .

Reempaquetar el rpm de Portsentry para que loguee en su propio archivo

Publicado Por; jatgjose | Publicado en: Aplicaciones Webs, Consultas, Programación | Publicado el dia: 08-06-2010

0

Desde hace mucho tiempo utilizo como media preventiva de seguridad el paquete Portsentry en los servidores para detectar potenciales accesos maliciosos y bloquearlos directamente en el firewall. El problema es que por defecto Portsentry deja sus logs en el archivo principal del sistema, /var/log/messages, lo que genera tal cantidad de ruido que es imposible encontrar algo útil en el log. El archivo donde loguea Portsentry no es configurable sino que viene predefinido en tiempo de compilación, con lo que deberemos recompilarlo si queremos que sea otro. Podríamos compilar e instalar el fuente directamente, pero no quiero perder las ventajas que ofrece rpm, veamos como hacerlo para Centos5.5 (o RHEL5.5).

Lo primero que debemos hacer es descargar e instalar el rpm con los fuentes desde aquí.

  1. #rpm -ivh portsentry-1.2-1.te.src.rpm

Ahora debemos modificar el archivo donde se configura dónde logueará:

  1. #cd /usr/src/redhat/SOURCES
  2. #tar xvfz portsentry-1.2.tar.gz
  3. #cd portsentry_beta

Editamos el archivo portsentry_config.h cambiando la línea 32 para que quede así:

  1. #define SYSLOG_FACILITY LOG_LOCAL6

Con esto simplemente le decimos que loguee al “facility” local6 en vez de al “daemon” por defecto.

Se guarda el archivo y se empaqueta de nuevo:

  1. #tar cvfz portsentry-1.2.tar.gz portsentry_beta

Ya podemos reconstruir el rpm:

  1. #cd /usr/src/redhat/SPECS
  2. #rpmbuild -ba portsentry.spec

Si todo va bien tendremos el paquete generado:

  1. #cd /usr/src/redhat/RPMS/x86_64

Y ahí estará nuestro portsentry-1.2-1.te.x86_64.rpm preparado para loguear donde queremos que lo haga. Sólo queda instalarlo. Si tu arquitectura es de 32bits lo encontrarás en /usr/src/redhat/RPMS/i386.

Nos queda un detalle, configurar syslog para que guarde donde nos interesa la facility local6. Para eso editamos /etc/syslog.conf. Añadimos al final de todo la línea:

  1. local6.*   /var/log/portsentry.log

y al principio de todo veremos algo parecido a:

  1. *.info;mail.none;authpriv.none;cron.none /var/log/messages

La cambiaremos por:

  1. *.info;mail.none;authpriv.none;cron.none;local6.none    /var/log/messages

Es decir, le decimos que de local6 no loguee nada en /var/log/messages. Solo nos queda reiniciar los demonios:

  1. #/sbin/service syslog restart
  2. #/sbin/service portsentry start

A partir de ahora tendremos nuestro log general bien limpio y la información de se seguridad separada.

Visor de pdf con Flash y MDM Zinc

Publicado Por; jatgjose | Publicado en: Programación | Publicado el dia: 04-06-2010

0

Introducción

Lo que vamos a hacer es un visor de pdf, usando el programa MDM Zinc (Si no lo conoces, es necesario que veas antes este Tip de Freddie) y Flash en cualquiera de sus versiones, que en este caso se usara la versión 8.

Comencemos…!

Abrimos nuestro Flash, creamos un nuevo documento con las siguientes propiedades:

Crearemos dos capas para dividir en cada una de ella los elementos necesarios, clickeamos 2 veces el botón y le colocamos los nombres correspondientes, como lo muestra la siguiente imagen:

En la capa barra sup ubicamos los botones del visor PDF, y la capa AS contendrá todo el código que usaremos.

Nuestro visor PDF constara de 4 botones de navegación (Principio, Anterior, Siguiente y Ultima) y de dos botones con sus respectivos cuadros de dialogo (Abrir e Imprimir). Para este Tip he creado los 4 botones en Imágenes, basta con que des click derecho a cada imagen y elijas “Guardar Como”:

Leer Mas »

Localización con Javascript

Publicado Por; jatgjose | Publicado en: Javascript, Programación | Publicado el dia: 18-05-2010

1

Uno de los problemas con los que nos encontramos al desarrollar una aplicación rica en Javascript es la falta de idiomatización desde el cliente. Generalmente se suele usar un sistema de variables que cargamos desde un lenguaje de servidor y que al llegar al usuario las frases ya están en el idioma seleccionado. Hoy via Ajaxian, descubro l10n.js, una librería javascript que permite realizar esta idiomatización desde el cliente, usando una estructura JSON donde alojas las frases en los diferentes idiomas.


{
	"en": {
		"l10n.js demo": "English - l10n.js demo",
		"You are viewing the original page locale.": "You are viewing an
 English localization of this page."
	},
	"pt": {
		"en": "pt",
		"l10n.js demo": "Português - Demo do l10n.js",
		"You are viewing the original page locale.": "Vocé esta a ver uma
 localização Portuguesa desta página."
	},
	"es": {
		"en": "es",
		"l10n.js demo": "Español - l10n.js demo",
		"You are viewing the original page locale.": "Mira ustéd una versión
 español de esta pagina."
	},
	"fr": {
		"en": "fr",
		"l10n.js demo": "Français - l10n.js démo",
		"You are viewing the original page locale.": "Vous sont voyez une
localisation français de cette page."
	}

}

Como podemos ver, se trata de una estructura sencilla que aprovecha la potencia de JSON (clave-valor) para identificar las cadenas de texto que deseamos mostrar al usuario. El fichero, lo cargaremos como un fichero externo usando el elemento <link /> en nuestro <head />


<link rel="localizations" href="localizations.json" type="application/x-l10n+json" />

Con el diccionario cargado, solo tendremos que cargar la libraría javascript y empezar a editar nuestro código para que las cadenas de texto aparezcan en el idioma deseado.

<script type="text/javascript" src="path/to/l10n.js"></script>

Automáticamente la librería nos extiende nuestros objectos String para que dispongamos del método toLocaleString() que nos permite cargar la cadena en el idioma del usuario.  Tenemos una API más completa donde ver las opciones disponibles.

La Apache Software Foundation

Publicado Por; jatgjose | Publicado en: Noticias, Programación, Software | Publicado el dia: 15-05-2010

7

La Apache Software Foundation, es una corporación sin fines de lucro con el objetivo de apoyar a proyectos de software libre (publicado bajo la Licencia Apache, que es compatible en su versión 2.0 con la GPL v3). Cuenta con una cantidad de proyectos muy importantes de software libre. Probablemente el más importante Apache HTTP Server, servidor web responsable de gran parte del crecimiento de la internet, que sirve actualmente más de la mitad de todos los sitios web que existen (incluyendo este).

Los desarrolladores voluntarios, administradores e incubadores de 143 proyectos e iniciativas Open Source anunciaron la creación de seis nuevos Proyectos de alto nivel (Top-Level Projects o TLPs). Esto marca un record de la mayor cantidad de TLPs lanzados en un mismo mes. Hay muchas novedades, entre las cuales se encuentra la promoción de Subversion, que entró en la incubadora en noviembre del año pasado.

Como comentaba en aquel post, la incubación es el primer paso para volverse un Proyecto de Alto Nivel de la Apache Software Foundation. Esto significa que obtendrá los beneficios directos desde la fundación como los procesos merocráticos, administración, extensión, soporte y eventos comunitarios.

Los seis proyectos nuevos incluyen proyectos graduados de la incubadora así como sub-proyectos de TLPs existentes. Repasemos los proyectos para conocerlos. Como todos los proyectos de la Apache Software Foundation, son muy interesantes y nunca sabemos cuándo podemos necesitar algo así: