La mejor organización no asegura los resultados. Pero una estructura equivocada sería garantía de fracaso.
martes, 2 de noviembre de 2010
Instalar Symfony Linux
Crear un proyecto Symfony 1.4
sudo apt-get install php5
sudo apt-get install php5-cli
sudo apt-get install php5-dev
sudo apt-get install php5-common
sudo apt-get install php5-xsl
sudo apt-get install libapache2-mod-php5
sudo apt-get install php-pear
sudo apt-get install php-apc
- Tener apache instalado:
sudo /etc/init.d/apache2 start
Si esto no existe entonces no tienes apache instalado y lo instalamos con el siguiente comando:
sudo apt-get install apache2
y volvemos a intentar el comando anterior:
sudo /etc/init.d/apache2 start
- Tener php 5.2.4 o mejor
Verificamos si ya tenemos PHP instalado, por la consola colocamos:
php -v
si ese comando nos responde, buenisimo, tenemos PHP instalado solo tenemos que verificar que la versión sea mayor o igual a 5.2.4.
Si no lo tenemos instalado lo instalamos con
sudo apt-get install php5-cli
sudo apt-get install php5-dev
sudo apt-get install php5-common
sudo apt-get install php5-xsl
sudo apt-get install libapache2-mod-php5
sudo apt-get install php-pear
sudo apt-get install php-apc
y luego ejecutamos el comando anterior:
php -v
- Instalamos algún tipo de Base de datos
PostgreSQL
sudo apt-get install postgresSQL-version (la version que desee my postgreSQL is 8.4)
sudo apt-get instal php5-pgsql (para que php pueda manejar esta base de datos)
sudo apt-get instal php5-pgsql (para que php pueda manejar esta base de datos)
MySQL
sudo apt-get install mysql (la version que desee)
sudo apt-get instal php5-mysql (para que php pueda manejar esta base de datos)
sudo apt-get instal php5-mysql (para que php pueda manejar esta base de datos)
etc.
- Descargamos Symfony
NOTA: siempre es recomendable que en un desarrollo no se coloque el workspace dentro del www publico del apache es preferible crear un VIRTUAL HOST, que apunte a nuestra carpeta workspace y sea local, si es de ser necesario un acceso remoto configurarlo en nuestro VIRTUAL HOST y le damos acceso a quien nosotros queramos.
- Crear el Workspace
Crearemos el mismo workspace que el tutorial de Symfony para Jobeet:
mkdir -p /DIRECCIÓN DONDE VAS A TRABAJAR/sfprojects/jobeet
mkdir crea una carpeta pero cuando queremos crear varias carpetas existan o no usamos -p
- Creamos donde vamos a Instalar Symfony
Nos paramos en jobeet y escribimos el siguiente comando:
mkdir -p lib/vendor
ahora tenemos esta estructura:
sfprojects
- jobeet
- lib
- vendor
Nos mudamos a vendor y movemos el TGZ de symfony a la misma carpeta y ejecutamos:
cd lib/vendor (Nos paramos en la carpeta Vendor)
tar zxvf symfony-1.4.0.tgz (esto symfony-1.4.0.tgz Cambia de acuerdo a la versión que descargaste)
mv symfony-1.4.0 symfony (Renombrar la carpeta descomprimida)
rm symfony-1.4.0.tgz (Eliminamos el archivo comprimido ya que no lo necesitaremos mas)
- Nos salimos a la carpeta Jobeet
Si estamos parados en vendor hacemos
cd ..
cd ..
ya estamos en Jobbet
- verificamos que Symfony funciona sacando una leyenda de ayuda
php lib/vendor/symfony/data/bin/symfony -v
- Creando el proyecto en Symfomy (estamos parados en la carpeta Jobeet)
Aquí tenemos que tomar una decisión la cual es en que ORM vamos a trabajar PROPEL o DOCTRINE
DOCTRINE ( viene por defecto por lo tanto el comando es )
php lib/vendor/symfony/data/bin/symfony generate:project jobeet
PROPEL ( viene por defecto por lo tanto el comando es )
php lib/vendor/symfony/data/bin/symfony generate:project jobeet --orm=Propel
Ambos comandos nos crearan las carpetas
apps/
cache/
config/
lib/
log/
plugins/
test/
web/
Ya no necesitamos acceder a symfony con esta dirección lib/vendor/symfony/data/bin/symfony ahora tenemos en la carpeta jobeet un archivo symfony que nos permitirá ejecutar comandos parados desde jobeet.
Ya veremos unos ejemplos a continuación.
- Creamos nuestro Front End y Back End (seguimos parados en la carpeta jobeet)
Front End: es la parte visible a internet para todos los usuarios que puedas llevar a tu pagina.
php symfony generate:app frontend
Back End: es la zona administrativa, o simplemente algo que necesite de un acceso restringido para hacer algo.
php symfony generate:app backend
- Ahora la prueba de fuego CHEQUEAR SI TODO ESTA BIEN INSTALADO ( en la carpeta Jobeet)
Esperamos este resultado
********************************
* *
* symfony requirements check *
* *
********************************
php.ini used by PHP: /etc/php5/cli/php.ini
** WARNING **
* The PHP CLI can use a different php.ini file
* than the one used with your web server.
* If this is the case, please launch this
* utility from your web server.
** WARNING **
** Mandatory requirements **
OK PHP version is at least 5.2.4 (5.3.2-1ubuntu4.5)
** Optional checks **
OK PDO is installed
OK PDO has some drivers installed: pgsql
OK PHP-XML module is installed
OK XSL module is installed
OK The token_get_all() function is available
OK The mb_strlen() function is available
OK The iconv() function is available
OK The utf8_decode() is available
OK The posix_isatty() is available
OK A PHP accelerator is installed
OK php.ini has short_open_tag set to off
OK php.ini has magic_quotes_gpc set to off
OK php.ini has register_globals set to off
OK php.ini has session.auto_start set to off
OK PHP version is not 5.2.9
NOTA: si algo dice WARNING lo mas probable explique que falta instalar.
FELICIDADES HAS INSTALADO SYMFONY
Ahora hacer los tutoriales de Symfony
domingo, 31 de octubre de 2010
Refrán - William G. McGowan
La única práctica gerencial que ahora es constante es la práctica de acomodarse constantemente al cambio
William G. McGowan
William G. McGowan
viernes, 29 de octubre de 2010
Growler Lib - Ejemplo
Please upgrade your Flash Player
This is the content that would be shown if the user does not have Flash Player 6.0.65 or higher installed.
This is the content that would be shown if the user does not have Flash Player 6.0.65 or higher installed.
Aqui les dejo el AIR para que puedan ver como funciona el growler, los codigos del ejemplo estan dentro del air, se le puede hacer clic derecho VIEW SOURCE.
Codigo Main
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="100%" height="100%"
xmlns:www="http://www.flex-tutorial.fr/2009"
left="10" right="10" bottom="10" top="10"
>
<fx:Script>
<![CDATA[
import mx.graphics.GradientEntry;
import net.developyourdream.growler.Growler;
import net.developyourdream.growler.growlers.GrowlerTypeUbuntu;
import net.developyourdream.view.growler.GrowlerTypeCustom;
import net.developyourdream.view.growler.GrowlerTypeCustomTwo;
protected function basicSkinClickHandler(event:MouseEvent):void
{
var growler:Growler = new Growler;
growler.dispach();
}
protected function ubuntuSkinClickHandler(event:MouseEvent):void
{
var growler:GrowlerTypeUbuntu = new GrowlerTypeUbuntu;
growler.width = 200;
growler.theTitle = myTitle.text;
growler.message = myMessage.text;
growler.dispach();
}
protected function customSkinClickHandler(event:MouseEvent):void
{
var growler:GrowlerTypeCustom = new GrowlerTypeCustom;
growler.theTitle = myTitle.text;
growler.story = myStory.text;
growler.message = myMessage.text;
growler.gradientFillColors = [new GradientEntry(Math.random()*0xFFFFFF,NaN,0.8),new GradientEntry(Math.random()*0xFFFFFF,NaN,0.8)];
growler.dispach();
}
protected function custom2SkinClickHandler(event:MouseEvent):void
{
var growler:GrowlerTypeCustomTwo = new GrowlerTypeCustomTwo;
growler.dispach();
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:layout>
<s:VerticalLayout/>
</s:layout>
<mx:Image source="../../../assets/image/LogoLargo.png" width="400"/>
<s:Label text="TITLE" />
<s:TextInput id="myTitle" text="Develop Your Dream Lib" width="100%"/>
<s:Label text="STORY" />
<s:TextInput id="myStory" text="Este campo solo es para el CUSTOM GROWLER" width="100%"/>
<s:Label text="MESSAGE" />
<s:TextArea id="myMessage" width="100%" text="A los growlers del lib no se ajuntan al texto por lo tanto se le debe especificar su WIDTH y HEIGHT. Para lograr que los growler se ajusten dinamicamente se pueden hacer GROWLERS CUSTOM extendiendo de la clase GROWLER, se calcula el tamaño de los hijos y se sobre escribe el metodo updateDisplayList. Ejemplo: CUSTOM SKIN 1."
/>
<s:Group width="100%" height="100%">
<s:layout>
<s:TileLayout/>
</s:layout>
<s:Button label="Lib Basic Skin" click="basicSkinClickHandler(event)"/>
<s:Button label="Lib Ubuntu Skin" click="ubuntuSkinClickHandler(event)"/>
<s:Button label="Custom Skin 1" click="customSkinClickHandler(event)"/>
<s:Button label="Custom Skin 2" click="custom2SkinClickHandler(event)"/>
</s:Group>
</s:Group>
Para crear un Growler Básico, se crea una instancia y se puede mostrar con el metodo dispatch().
El método dispach solo se usa cuando estamos seguros que el growler esta listo para mostrarse, en mejores palabras una ves que se le coloca el Width y el Height y se le setea los parámetros bien sea propio o personalizados.
Flex Growler Lib
Flex Growler Lib
Flex Growler Lib, es una librería para flex para crear popups tipo gtalk, messenger, o cualquier tipo de alerta de sistema o notificación de cualquier tipo. Actualmente solo sirve en AIR, pronto le colocaremos la capacidad que salgan en aplicaciones con flash player, para lograr los mismos resultados dentro de un browser.
La librería es totalmente open source y se puede descargar en el siguiente link http://gitorious.org/develop-your-dream/growler-flex-lib
Tambien les dejo el link a la libreria para que se la descarguen:
Aqui esta una imagen de como se ven los growlers.
Ejemplo:
Flex Growler Lib, es una librería para flex para crear popups tipo gtalk, messenger, o cualquier tipo de alerta de sistema o notificación de cualquier tipo. Actualmente solo sirve en AIR, pronto le colocaremos la capacidad que salgan en aplicaciones con flash player, para lograr los mismos resultados dentro de un browser.
La librería es totalmente open source y se puede descargar en el siguiente link http://gitorious.org/develop-your-dream/growler-flex-lib
Tambien les dejo el link a la libreria para que se la descarguen:
Aqui esta una imagen de como se ven los growlers.
Ejemplo:
lunes, 18 de octubre de 2010
Flex Pivotal Tracker Lib - Documentacion
La documentación de la librería se hará mientras se desarrollan las clases, esto quiere decir que a medida que salgan funciones dentro de las clases se colocara la explicación de la misma, los parámetros a usar, y que retorna cada función.
A todos los métodos de las clases se les pasan tres funciones fijas donde solo 1 de ellas es obligatorio pasarla, las otras 2 no si no se quiere manejar las mismas, estas funciones son:
Retrieive User Token
getUserToken
Esta librería se comunica por SSL, es una autenticación básica, se crea un hash del usuario y su contraseña y se envía.
Activity Feed
Le permite recuperar la actividad reciente de todos sus proyectos.
En esta clase tenemos un parámetro similar en todas las funciones:
allActivity_OccurredSinceDate
allActivity_NewerThanVersion
Esta función recibe como parámetro la versión de la actividad y devuelve todas las versiones que sea mayor a la ingresada de todos los proyectos, siempre tomen en cuenta que el limite máximo llega hasta 100 actividades.
allActivity_OccurredSinceDate_And_NewerThanVersion
Esta función recibe como parámetro la versión de la actividad y la fecha y devuelve todas las versiones que sea mayor a la ingresada y que sea en las fechas superior a la suministrada para todos los proyectos, siempre tomen en cuenta que el limite máximo llega hasta 100 actividades.
projectActivity_OccurredSinceDate
Esta función recibe como parámetro el id del proyecto y la fecha, devuelve todas las actividades de dicho proyecto y sea en las fechas superior a la suministrada, siempre tomen en cuenta que el limite máximo llega hasta 100 actividades.
projectActivity_NewerThanVersion
Esta función recibe como parámetro el id del proyecto y la version, devuelve todas las actividades de dicho proyecto y superior a la version suministrada, siempre tomen en cuenta que el limite máximo llega hasta 100 actividades.
projectActivity_OccurredSinceDate_And_NewerThanVersion
Esta función recibe como parámetro el id del proyecto, la fecha y la version, devuelve todas las actividades de dicho proyecto y superior a la version suministrada y a su ves superior a la fecha suministrada, siempre tomen en cuenta que el limite máximo llega hasta 100 actividades.
A todos los métodos de las clases se les pasan tres funciones fijas donde solo 1 de ellas es obligatorio pasarla, las otras 2 no si no se quiere manejar las mismas, estas funciones son:
- Result Function (Obligatoria): esta función devuelve la petición de la librería, en otras palabras si pedimos un ActivityFeed.(cualquier tipo de método) esto enviara un ActivityFeedEvent.
- Error Function: siempre llamara a una función de tipo ErrorEvent y dentro de ella contendrá un ErrorVO con el detalle del error generado.
- Security Function: siempre llamara a una función de tipo SecurityEvent y dentro de ella contendrá un SecurityVO con el detalle de segur generado.
Retrieive User Token
getUserToken
Esta librería se comunica por SSL, es una autenticación básica, se crea un hash del usuario y su contraseña y se envía.
RetrieveUserToken.getUserToken("NOMBRE DEL USUARIO","CONTRASEÑA",resultFunction,errorFunction,securityFunction);Llamara a la función resultFunction(event:RetrieveUserTokenEvent), dentro de event encontraremos UserTokenVO con toda la información de la consulta.Activity Feed
Le permite recuperar la actividad reciente de todos sus proyectos.
En esta clase tenemos un parámetro similar en todas las funciones:
- Limit: este parámetro por defecto es 10 y tiene un techo de 100 registros.
- Since: se puede pasar de tipo String o de tipo Date, este permite restringir a solo aquellos elementos que se produjeron después de una fecha suministrada, ejemplo del formato 2009/12/18 21:00:00 UTC.
- Version: es de tipo INT, este permite restringir a solo aquellos elementos que tienen una versión mayor a la suministrada.
- Project ID: es de tipo INT, y permite buscar las actividades de un proyecto la combinación de los tres parámetros mencionados anteriormente.
allActivity_OccurredSinceDate
ActivityFeed.allActivity_OccurredSinceDate("TOKEN",resultFunction,new Date("2009","10","16"),LIMIT,faultFunction,securityFuncion);Llamara a la función resultFunction(event:ActivityFeedEvent), dentro de event encontraremos ActivitiesVO con toda la información de la consulta.allActivity_NewerThanVersion
Esta función recibe como parámetro la versión de la actividad y devuelve todas las versiones que sea mayor a la ingresada de todos los proyectos, siempre tomen en cuenta que el limite máximo llega hasta 100 actividades.
ActivityFeed.allActivity_NewerThanVersion("TOKEN",resultFunction,VERSION,LIMIT,faultFunction,securityFuncion); Llamara a la función resultFunction(event:ActivityFeedEvent), dentro de event encontraremos ActivitiesVO con toda la información de la consulta.allActivity_OccurredSinceDate_And_NewerThanVersion
Esta función recibe como parámetro la versión de la actividad y la fecha y devuelve todas las versiones que sea mayor a la ingresada y que sea en las fechas superior a la suministrada para todos los proyectos, siempre tomen en cuenta que el limite máximo llega hasta 100 actividades.
ActivityFeed.allActivity_OccurredSinceDate_And_NewerThanVersion("TOKEN",resultFunction,VERSION,LIMIT,faultFunction,securityFuncion); Llamara a la función resultFunction(event:ActivityFeedEvent), dentro de event encontraremos ActivitiesVO con toda la información de la consulta.projectActivity_OccurredSinceDate
Esta función recibe como parámetro el id del proyecto y la fecha, devuelve todas las actividades de dicho proyecto y sea en las fechas superior a la suministrada, siempre tomen en cuenta que el limite máximo llega hasta 100 actividades.
ActivityFeed.projectActivity_OccurredSinceDate("TOKEN",PROJECT ID,resultFunction,new Date("2009","10","16"),LIMIT,faultFunction,securityFuncion); Llamara a la función resultFunction(event:ActivityFeedEvent), dentro de event encontraremos ActivitiesVO con toda la información de la consulta.projectActivity_NewerThanVersion
Esta función recibe como parámetro el id del proyecto y la version, devuelve todas las actividades de dicho proyecto y superior a la version suministrada, siempre tomen en cuenta que el limite máximo llega hasta 100 actividades.
ActivityFeed.projectActivity_NewerThanVersion("TOKEN",PROJECT ID,resultFunction,VERSION,LIMIT,faultFunction,securityFuncion); Llamara a la función resultFunction(event:ActivityFeedEvent), dentro de event encontraremos ActivitiesVO con toda la información de la consulta.projectActivity_OccurredSinceDate_And_NewerThanVersion
Esta función recibe como parámetro el id del proyecto, la fecha y la version, devuelve todas las actividades de dicho proyecto y superior a la version suministrada y a su ves superior a la fecha suministrada, siempre tomen en cuenta que el limite máximo llega hasta 100 actividades.
ActivityFeed.projectActivity_OccurredSinceDate_And_NewerThanVersion("TOKEN",PROJECT ID,resultFunction,VERSION,new Date("2009","10","16"),LIMIT,faultFunction,securityFuncion); Llamara a la función resultFunction(event:ActivityFeedEvent), dentro de event encontraremos ActivitiesVO con toda la información de la consulta.Get Projects
allMyProjects
Esta función devuelve todos los proyectos a los cuales esta asociado el usuario de este token.
getSingleProject
Esta función devuelve el detalle de un proyecto, este proyecto debe estar asociado al miembro del token que lo esta pidiendo, de lo contrario la respuesta vendría vacía. .
allMyProjects
Esta función devuelve todos los proyectos a los cuales esta asociado el usuario de este token.
GetProjects.allMyProjects("TOKEN",resultFunction,faultFunction,securityFuncion,data); Llamara a la función resultFunction(event:GetProjectsEvent), dentro de event encontraremos ProjectsVO con toda la información de la consulta.getSingleProject
Esta función devuelve el detalle de un proyecto, este proyecto debe estar asociado al miembro del token que lo esta pidiendo, de lo contrario la respuesta vendría vacía. .
GetProjects.getSingleProject("TOKEN",PROJECT ID,resultFunction,faultFunction,securityFuncion,data); Llamara a la función resultFunction(event:GetProjectsEvent), dentro de event encontraremos ProjectVO con toda la información de la consulta.
Suscribirse a:
Entradas (Atom)


