^M Ruby on Rails / Padrino Developer | Andrés Villagrán Placencia

Adobe CS5 Trial Download

Hace pocos minutos está disponible para el público las descargas de la Creative Suite 5 desde Adobe

Esta versión tiene muchas features increíbles por lo que se ha visto en muchos videos que circulan por la red o en la misma presentación a principios de mes.

Me faltan 2 horas para poder probar todo 😀

Tags: , , , , ,

Thursday, April 29th, 2010 Adobe 13 Comments

Git + GitHub

Buscando información de como trabajar con GitHub, encontré este excelente tutorial para iniciar un proyecto en él, también hay otras guias más extensas que pueden servir.

Links:
How to get started hosting your git repository using GitHub and OSX
Learn.GitHub

Tags: ,

Friday, February 12th, 2010 Programación 1 Comment

Comunicación entre componentes/modulos utilizando Singleton

En un post anterior (y muy antiguo) comentaba que se podía utilizar Application.application para comunicarse con la aplicación principal desde un módulo, si bien es cierto esta misma operación se puede realizar a través de eventos, lo cual sería la forma más limpia de hacerlo, hay otra, la cual sería "sucia" pero rápida que es utilizando Singleton.

Lo primero es crear esta clase, como ejemplo:

Util.as

  1. package {
  2. public class Util {
  3. public var variableTemporal:Object;
  4. private static var instance:Util;
  5.  
  6. public static function getInstance():Util {
  7. if(instance == null) {
  8. instance = new Util();
  9. }
  10. return instance;
  11. }
  12. }
  13. }

Esta clase permitirá almacenar en la variable "variableTemporal" los objetos que queramos almacenar y acceder desde cualquier componente/modulo, obviamente en vez de utilizar una variable publica, podemos crear funciones setter/getter.

Luego, debemos instanciar la clase en la aplicación principal:

Prueba.mxml

  1.  
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
  4. xmlns:s="library://ns.adobe.com/flex/spark"
  5. creationComplete="creationCompleteHandler(event)">
  6. <fx:Script>
  7. <![CDATA[
  8. import mx.events.FlexEvent;
  9.  
  10. protected function creationCompleteHandler(event:FlexEvent):void {
  11. Util.getInstance();
  12.  
  13. // Guardo en la variableTemporal
  14. // un valor para hacer la prueba
  15. Util.getInstance().variableTemporal = {prueba: 'Hola'};
  16.  
  17. }
  18. ]]>
  19. </fx:Script>
  20. </s:Application>
  21.  

Luego de esto, ya podemos utilizar nuestra clase desde cualquier componente o modulo, por ejemplo:

Prueba.mxml

  1.  
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
  4. xmlns:s="library://ns.adobe.com/flex/spark"
  5. xmlns:mx="library://ns.adobe.com/flex/halo"
  6. creationComplete="init()">
  7.  
  8. <fx:Script>
  9. <![CDATA[
  10. private function init():void {
  11. trace("Valor variableTemporal:" + Util.getInstance().variableTemporal.prueba);
  12. }
  13. ]]>
  14. </fx:Script>
  15. </s:Group>
  16.  

Ojalá les sirva de ayuda 😉

Tags: , , ,

Thursday, January 28th, 2010 Flex, Uncategorized 7 Comments

Flash Builder 4: “Content Assist Error”

Probablemente a más de alguno le ha pasado que al intentar utilizar el autocompletado en Flash Builder 4 Beta 2, aparece un popup con un "Content Assist Error", la forma de solucionarlo es:

  1. Cierra Flash Builder 4
  2. Elimina  .metadata/.plugins/com.adobe.flexbuilder.codemodel de tu workspace
  3. Inicia nuevamente Flash Builder

Con esto debería funcionar sin problemas el autocompletado 😀

Tags: , ,

Sunday, November 22nd, 2009 Flex No Comments

E4x en Actionscript3

Investigando, encontré un muy buen post de lo que se puede realizar con E4X en AS3, altamente recomendado.

http://dispatchevent.org/roger/as3-e4x-rundown/

Tags: , , ,

Sunday, November 1st, 2009 Flash, Flex No Comments

Plugins para Flash Builder

Encontré esta lista de plugins que normalmente utilizo para desarrollar en Flex, donde se explica como instalar cada uno, entre ellos están:

  • Eclipse PDT
  • Subeclipse
  • Entre otros

FlashBuilder/Eclipse : installation guide - subclipse, PDT, WTP and Maven

Thursday, August 13th, 2009 Flex 1 Comment

Acceder a componente padre desde itemRenderer

Una forma útil de acceder a algún componente padre desde un itemRenderer personalizado es a través de la propiedad owner, como ejemplo práctico tendremos un List y un componente del tipo VBox con un botón que llamará a una función de la lista:

Lista.mxml

  1.  
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <mx:List xmlns:mx="http://www.adobe.com/2006/mxml"
  4. itemRenderer="itemRender">
  5. <mx:Script>
  6. <![CDATA[
  7. public function getClick(datos:String):void {
  8. trace("Datos: " + datos);
  9. }
  10. ]]>
  11. </mx:Script>
  12. </mx:List>
  13.  

itemRender.mxml

  1.  
  2. <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml">
  3. <mx:Script>
  4. <![CDATA[
  5. public function enviarDatos():void {
  6. var padre:Lista = owner as Lista;
  7. padre.getClick("Enviando datos");
  8. }
  9. ]]>
  10. </mx:Script>
  11. <mx:Button label="Boton" click="enviarDatos()" />
  12. </mx:VBox>
  13.  

Espero que les sirva de ayuda!

Tags: , ,

Saturday, May 23rd, 2009 Flex 2 Comments

Recomendaciones para Twitter

En estos últimos días Twitter ha aparecido en diversos medios de comunicación chilenos, por lo que está creciendo de manera exponencial, más aún ahora que Aston Kutcher (@aplusk) está haciendo una campaña para tener más de un millon de seguidores en el servicios, batiendo el record de Twitter e intentando superar a CNN (@cnnbrk).

Vamos con las recomendaciones:

  1. No usar la web de twitter! ¿Por qué? Simple, el servicio no es tan comodo de utilizar desde ahí, por lo que te limita bastante con lo que podrías hacer.
  2. Utilizar un cliente Twitter desde tu escritorio, como TweetDeck o Twhirl (Para Adobe AIR, funcionará en Mac, Linux o Windows), pronto tendré noticias de un desarrollo propio 🙂
  3. Si tienes un móvil con conexión a internet utiliza algún cliente para esto, yo tengo una BlackBerry Bold donde utilizo TwitterBerry.
  4. Procura responder cada reply (@tuNick) que te envíen
  5. No utilices Twitter como un chat ya que probablemente a tus seguidores les moleste, si quieres conversar, existen otros medios de comunicación para esa función (Como Google Talk)
  6. Aprender a escribir en 140 carácteres
Espero que sea de ayuda para los nuevos usuarios en Chile y Latinoamérica

Tags: ,

Thursday, April 16th, 2009 Twitter 2 Comments

jQuery + Eclipse

Estos últimos días me ha tocado trabajar con jQuery, que es realmente una excelente librería JavaScript, hace el trabajo muchisimo más fácil, pero como siempre, no es fácil trabajar con ella ya que no hay un IDE apropiado, por suerte encontre un plugin para Eclipse (Donde programo en PHP, Flex, entre otros) que permite la autocompletación, que es el siguiente:

http://www.langtags.com/jquerywtp/

Ojalá les sirva como me ha servido a mi 🙂

Tags: , ,

Sunday, April 5th, 2009 jQuery 5 Comments

Conector a AMFPHP Simple

Tengo prácticamente tirado el blog, así que pondré a disposición una pequeña clase que desarrollé el otro día 😛

Si no nos gusta utilizar RemoteObjects para cada módulo, ni tampoco queremos usar un Framework más denso, hay  una opción, que es utilizar la clase Servicios y definir los Handlers en las funciones que estimemos convenientes, el código es el siguiente:

  1.  
  2. /** Andrés Villagrán Placencia
  3.   andres@villagranquiroz.cl
  4.   http://www.villagranquiroz.cl
  5. **/
  6. package com.villagranquiroz.utils {
  7. import flash.net.NetConnection;
  8. import flash.net.Responder;
  9.  
  10. import mx.utils.ObjectUtil;
  11.  
  12. public class Servicios
  13. {
  14. private var gateway:String;
  15.  
  16. private var conexion:NetConnection;
  17.  
  18. public function Servicios(amfGateway:String)
  19. {
  20. gateway = amfGateway;
  21. conexion = new NetConnection();
  22. conexion.connect(gateway);
  23.  
  24. }
  25. public function send(nombre:String, result:Function, ... args):void {
  26. var responder:Responder = new Responder(result, onFault);
  27. //No necontré una forma más facil de hacer esto, si alguien sabe como pasar params* me avisa 🙂
  28. switch(args.length) {
  29. case 0: conexion.call(nombre, responder); break;
  30. case 1: conexion.call(nombre, responder, args[0]); break;
  31. case 2: conexion.call(nombre, responder, args[0], args[1]); break;
  32. case 3: conexion.call(nombre, responder, args[0], args[1], args[2]); break;
  33. case 4: conexion.call(nombre, responder, args[0], args[1], args[2], args[3]); break;
  34. case 5: conexion.call(nombre, responder, args[0], args[1], args[2], args[3], args[4]); break;
  35. case 6: conexion.call(nombre, responder, args[0], args[1], args[2], args[3], args[4], args[5]); break;
  36. }
  37.  
  38. }
  39.  
  40. private function onFault(fault:Object):void {
  41. trace("Error: " + ObjectUtil.toString(fault));
  42. }
  43.  
  44. }
  45. }
  46.  

Como se utiliza?

  1.  
  2. private var servicios:Servicios;
  3.  
  4. // Esta sería la funcion que instancia a los servicios
  5. private function init():void {
  6. servicios = new Servicios("http://www.villagranquiroz.cl/url/amfphp/gateway.php");
  7. }
  8.  
  9. private function llamada():void {
  10. // Con esto realizamos una llamada y asignamos la función que recibirá la respuesta
  11. servicios.send("Prueba.NombreFuncionAMFPHP", NombreFuncionAMFPHPHandler);
  12. // Si la función remota necesita parametros, se ponen despues de el nombre de la función
  13. }
  14. private function NombreFuncionAMFPHPHandler(event:ResultEvent):void {
  15. Alert.show("Respuesta: " + ObjectUtil.toString(event.result));
  16. }
  17.  

Espero que les sirva, también pueden crear una clase que contenga todos los Handlers, así no repiten funciones en los módulos. Recuerden que el ejemplo anterior no está completo, faltan los imports y una que otro código.

Tags: , ,

Monday, February 23rd, 2009 AMFPHP, Flex 2 Comments