martes, 23 de octubre de 2012

#androidIO Insertar datos, en bases de datos para tus apps Android

En este vídeo tutorial podemos ver como crear, e insertar datos en nuestras Bases de Datos SQLite para nuestras aplicaciones Android, excelente entrega de nuestros amigos de desarrollo web, quedamos a esperas dentro de 2 semanas para ver como mostrar esos datos y aprender buenas maneras de programar en Android.


Toda la info en: http://www.desarrolloweb.com/en-directo/androidio-conectar-base-datos-app-7569.html

domingo, 7 de octubre de 2012

#androidIO ejecuta tus apps en un movil Android

La ultima entrega de nuestros amigos de Desarrollo web, nos explican la diferencia entre relativelayout, y linearlayout, ademas de como empezar a correr nuestras aplicaciones en nuestros terminales Android.



Todo esto en:
http://www.youtube.com/watch?v=JIBfKhTq73Y&feature=player_embedded

miércoles, 19 de septiembre de 2012

#androidIO con @neavilag Monetización de apps Android

Nueva entrega de nuestros amigos de desarrollo web, donde nos explican las vivencias y consejos para sacar partido a nuestras aplicaciones android


Mas info en :
http://desarrolloweb.com/en-directo/androidio-monetizacion-aplicaciones-android-7449.html

miércoles, 5 de septiembre de 2012

#androidIO creando app Android con login de usuario

La última entrega de nuestros amigos de desarrollo web, en esta ocasión nos enseñan a realizar un login en nuestras aplicaciones android, ademas de explicarnos lo que son las Activitys, y el funcionamiento de este S.O.


Esperamos ansiosos otra nueva entrega este lunes 17, en donde nos contaran algunos casos de exito en android y las experiencias de otros usuarios
Toda la info en http://www.desarrolloweb.com/en-directo/android-realizar-login-aplicaciones-7380.html

viernes, 24 de agosto de 2012

#androidIO Hola mundo en Android

Aquí os dejo la segunda entrega de nuestros amigos de desarrollo web.
Perfectamente explicado, como generar nuestra primera aplicación en Android, Nuestro primer Hola Mundo!!
Espero ansioso el Lunes 3 de septiembre a la siguiente entrega.



Toda la info en:
http://www.desarrolloweb.com/en-directo/segundo-evento-desarrollo-androidio-7361.html

Primer #androidIO desarrollo Android desde cero!

Publico este AndroidIO de nuestros amigos de desarrollo web, ya que lo estoy siguiendo en directo y me parece un aporte grandísimo por su parte para la comunidad de desarrolladores y la cominidad Android en general, yo que soy un gran seguidor de este S.O. lo agradezco profundamente, ademas si su ayuda, no se si cuando empezaría a programar estos dispositivos.

Toda la teoría necesaria antes de comenzar a programar estos dispositivos, explicado a la perfección.



Toda la info en:
http://www.desarrolloweb.com/en-directo/introduccion-desarrollo-androidio-7344.html

miércoles, 1 de agosto de 2012

STOP 0x000000ED UNMOUNTABLE_BOOT_VOLUME



En ocasiones nuestro Windows nos da un pantallazo azul con el código de error

STOP 0x000000ED UNMOUNTABLE_BOOT_VOLUME

Pero no hay de que preocuparse ya que podremos recuperar el sistema de una forma sencilla y mas o menos rapida, tan solo nos sera necesario arrancar desde nuestro Cd de windows y darle a la R en la primera pantalla de instalación, desde allí nos arrancara la consola de sistema, en donde podremos escribir CHKDSK /R
Comenzara un chequeo del disco duro recuperando los sectores defectuosos, una vez termine escribiremos
exit
y se reiniciara el equipo, debiendo entrar en windows sin problemas

martes, 24 de julio de 2012

Recuperar Recovery

En ocasiones tenemos que formatear un ordenador, y por una circunstancia u otra, no arranca la partición de arranque, ni se hizo nunca la copia de la partición oculta en otro disco, por lo que nos encontramos en el dilema... Compro un nuevo S.O.? Le monto uno pirata??

Pues señores ninguna de las anteriores, tan solo nos es necesario poner como activa la partición del recovery, para ello tenemos multitud de programas en la red, como el partition magic, pero, para que buscar, descargar, e instalar un software que en ocasiones puede ser de pago, pudiendo hacerlo desde la consola del equipo, pues muy bien en unos sencillos pasos vamos a explicar como hacerlo.


  1. Lo primero como es lógico arrancar el ordenador, y desde el propio sistema operativo ir a inicio y en el cuadrito de búsqueda teclear cmd y pulsar enter.
  2. se nos abrirá la ventana de comandos, en la que deberemos teclear Diskpart y se nos abrirá una nueva ventana.
  3. Teclearemos list volume y veremos todos los volumenes de nuestro disco.
  4. Teclearemos select volume "X" Sustituyendo la "X" por el numero de volumen que queramos poner como activo en esta caso seria el recovery quedando algo así como select volume 4
  5. teclearemos active y asi nos quedara activa esa partición.
  6. si volvemos a teclear list volume veremos un * al lado de la partición seleccionada
  7. terminaremos tecleando exit y reiniciando la maquina
Si todo ha ido bien y no esta el recovery dañado al reiniciar nos arrancara la partición oculta y podremos restaurar el equipo a su estado original de fabrica

Probado con un win 7 32X en un HP Pavilion 9000
En teoria debe funcionar En todos los Win vista y 7

martes, 24 de abril de 2012

Combo o Select en formulario Zend Dinamico

Al igual que en el anterior, deberemos copiar este código:

     $parametros= new Application_Model_Parametros();
     $valor = $parametros->TodoMochila();
    $this->addElement(
        'select','TipoObjeto',array(
            'label' => 'Tipo de Objeto',
            'value' => 'parametro',
            'multiOptions' => $valor
               
            )
    ); 
En el que  declaramos una variable llamada parametros, para inicializar un modelo que tenemos creado llamado paramatros, después declaramos otra variable llamada valor y la llenemos con los valores que nos devuelve un Action que tenemos dentro de parametros, llamado TodoMochila, añadimos el select como vimos en el punto anterior, y a los valores (multiOptions) le asignamos la variable Valor, con todos los datos de nuestro action.

Es muy importante que nuestro action solo nos devuelva 2 columnas, ya que el select no puede gestionar mas de 2 columnas y nos devolvería un error, o no se mostraría el formulario directamente.

Combo o Select en formulario Zend

Para poder sacar un Select estático en un formulario Zend deberemos añadir el siguiente codigo:

    $this->addElement(
        'select','TipoObjeto',array(
            'label' => 'Tipo de Objeto',
            'multiOptions' => array(
                '1'=>'Opcion1',
                '2'=>'Opcion2')
            )
    ); 

en donde le decimos que nos añada un nuevo elemento, que es del tipo Select, con el nombre TipoObjejo, le añadimos un label con el mismo nombre, y le damos las opciones en un array.

viernes, 20 de abril de 2012

Zend - Paginar resultados

Según vallamos insertando datos llegara un momento en que tengamos demasiados, como para poderlos mostrar de una vez, y si lo hacemos sobrecargaríamos demasiado la pagina, Zend también ha pensado en ello, y nos pone a nuestra disposición su Paginator
Podemos ver todas las Herramientas que tiene Zend en:
http://framework.zend.com/manual/en/
Concretamente vamos a hablar del paginador, así que iremos a:
http://framework.zend.com/manual/en/zend.paginator.usage.html

lunes, 16 de abril de 2012

Borrar y editar

Ya sabemos ver e insertar los datos, ahora nos queda borrar y editar, para ello seria buena idea en nuestra vista de mostrartodo agregar 2 "botones" uno por cada acción
por lo que deberemos abrir: application/views/scripts/tabla prueba y allí el archivo mostrartodos.phtml
en el que deberemos incluir el siguiente código justo debajo de <td>Comentario</td>:

            <td></td>
            <td></td>
simplemente son 2 celdas mas  para que no se nos desmonte el diseño.
y debajo de :

                echo "<td>";
                echo $datos->Comentario;
                echo "</td>";
esto otro:
echo '<td><a href="http://localhost/ZendPrueba/public/tablaprueba/editar/Id/'. $datos->Id .'">Editar</a></td>';
echo '<td><a href="http://localhost/ZendPrueba/public/tablaprueba/borrar/Id/'. $datos->Id .'" >Borrar</a></td>';
como veis son 2 enlaces a las nuevas vistas que crearemos mas adelante y le pasamos el id con el que queremos trabajar vía post.
Lo siguiente que debemos hacer es crear las acciones de editar y borrar, vamos a empezar con editar, para ello deberemos ir a nuestro controlador, que estaba en: application/controlers; y se llamaba TablaPruebaController.php
y copiaremos el siguiente código:

        public function editarAction()
    {
        if (!$this->_hasParam('Id')){
            return $this->_redirect('http://localhost/ZendPrueba/public/tablaprueba/mostrartodo');
        }

        $form = new Application_Form_TablaPrueba();
        $datos =new Application_Model_PruebaZF();
       
        if ($this->getRequest()->isPost()){
            if ($form->isValid($this->_getAllParams())){
                $model =new Application_Model_PruebaZF();
                $model->Guardar($form->getValues());
                return $this->_redirect('http://localhost/ZendPrueba/public/tablaprueba/mostrartodo');
            }
        }else{
            $Fila = $datos->DameFila($this->_getParam('Id'));
            if ($Fila){
                $form->populate($Fila->toArray());  

            }
           
        }
        $this->view->form = $form;
    }

Es muy similar al de Insertar, de hecho es el mismo con algunas mejoras, marcadas en negrita, que paso a explicar:
Lo primero que nos encontramos es un condicional, en el que preguntamos si nos viene el parámetro Id, en caso de que no nos venga, le mandamos a mostrartodo.
Un poco mas abajo instanciamos nuestro modelo, que recordemos es el que trabaja con los datos.
Para finalizar si el formulario no nos manda datos los obtenemos nosotros, para asi poder rellenar el formulario con los datos del Id que hemos solicitado, guardando los datos en la variable $Fila, que los obtiene por la función DameFila (la cual todavía no existe ahora la creamos); comprobamos que Fila tenga datos, y se los damos al formulario con la función populate

El siguiente paso es crear la función DameFila en nuestro modelo, para ello iremos a: application/models; y abriremos el único que tenemos (PruebaZF.php) y copiaremos el siguiente código:

    public function DameFila ($Id)
    {
        $Id = (int)$Id;
        $Fila = $this->find($Id)->current();
        return $Fila;
    }
En el que creamos la funcion DameFila, y le pasamos como parametro el Id.
En la priemra linea de la funcion obligamos a que el Id sea un numero, asi nos aseguramos de no hacer peticiones extrañas a la base de datos, ya que nuestro Id siempre sera un numero.
En la siguietne guardamos la Fila entera en nuestra variable
Y para finalizar devolvemos la variable, que es lo que le va a llegar al Controlador

Hecho esto nos quedaris hacer la vista, para ello haremos click derecho sobre application/views/scripts/tablaprueba/insertar.phtml y le daremos a copiar, para despues copiar en la carpeta TablaPrueba poniendole el nombre de editar.phtml
Con esto ya podemos ver nuestros datos para despues editarlos, pero aun no lo podemos guardar, para poder guardarlos iremos a nuestro modelo, y editaremos la función de guardar, para dejarla asi:

    public function Guardar($datos , $Id =null)
    {
        if (is_null($Id)){
            $row =$this->createRow();
        }else{
            $row = $this->DameFila($Id);
        }

       
        $row->setFromArray($datos);
        return $row->save();
    }
Como antes marco en negrita los cambios; estamos pidiendo una variable mas "Id" la cual no tiene por que pasarse siempre, y si no se pasa, sera nula; si es nula, creamos la fila, tal y como hacíamos antes, si no es nula, llamamos a nuestra función DameFila, para así obtenerla, y después guardar con los nuevos datos.
Como en el Controlador, no le dábamos el Id al modelo debemos pegar el siguiente código:
$model->Guardar($form->getValues(),$this->_getParam('Id'));
Sustituyendo:
$model->Guardar($form->getValues());
Ya podemos probar a editar los valores que tengamos insertados
Para finalizar este post nos queda comentar como Borrar los registros, para ello iremos a nuestro controlador, y pegaremos este código:

        public function borrarAction()
    {
        if  (!$this->_hasParam('Id')){
            return $this->_redirect('http://localhost/ZendPrueba/public/tablaprueba/mostrartodo');
        }
       
        $Datos =new Application_Model_PruebaZF();
        $Fila = $Datos->DameFila($this->_getParam('Id'));
       
        if($Fila){
            $Fila->delete();
           
        }
        return $this->_redirect('http://localhost/ZendPrueba/public/tablaprueba/mostrartodo');
    }

 En el que miramos si nos viene el parámetro Id, y si no, lo redirigimos a mostrartodo, después instanciamos el modelo, para pedirle los datos mediante la función DameFila; si Fila tiene existe, la borramos, y terminamos redirigiendo a mostrartodo

sábado, 14 de abril de 2012

Formularios e insertar datos

En el anterior post ya vimos como mostrar los datos, aunque desgraciadamente no teníamos nada guardado en nuestra base de datos, ahora vamos a crear un formulario para agregarlos y poderlos ver en la vista que ya hicimos.
Normalmente en la misma pagina que se ven los datos hay un botón de añadir, o editar, y puede que ambos, de momento vamos a poner solo un enlace que nos lleve a nuestra función de insertar, para ello, copiaremos el siguiente código justo al donde termina la tabla, en nuestra pagina de mostrartodo.phtml quedando algo así:

</table>
<a href="http://localhost/ZendPrueba/public/tablaprueba/insertar">insertar</a>

Si le hacemos click nos llevara hasta nuestra vista de insertar, aunque todavia no la hemos creado, por lo que debe dar error, vamos a ello, pero antes, debemos crear el formulario que nos va a permitir ingresar los datos

Modelos y ver datos dinamicos

Por fin vamos a empezar con las paginas dinamicas, para ello usaremos la base de datos que hemos creado hace un momento.

Lo primero que necesitamos es habilitar en la configuración el uso de datos, para ello en application.ini (ya sabemos dnd esta) y escribiremos lo siguiente, en la etiqueta de Production

resources.db.adapter = 'PDO_Mysql'
resources.db.params.host = 'localhost'
resources.db.params.username = 'Rogama'
resources.db.params.password = '1234'
resources.db.params.dbname = 'rogama_pruebazf'

  1. La primera linea nos dice que tipo de base de datos estamos usando, si no es MySql deberemos cambiarlo por la correspondiente

jueves, 12 de abril de 2012

Crear BBDD My Sql

Aunque lo explico por encima en otro post no tengo ninguno dedicado a ello exclusivamente, así que aquí va
pasos atrás ya instalamos MySql y PhpMyadmin, cuando instalamos nuestro Servidor con Xampp .
Ahora abriremos el panel de control de Xampp, y le daremos al botón de admin dentro de MySql


Se nos abrirá la pagina del PhpMyAdmin y deberemos darle al botón de bases de datos que tenemos en la parte superior a la izquierda.


Allí veremos todas las BBDD que tengamos creadas, pero tan solo nos interesa la parte superior para crearlas.


Nosotros añadiremos como nombre Rogama_pruebaZF Con esto estamos haciendo que la nueva BBDD pertenezca al usuario Rogama, que ya tenemos creado en nuestra BBDD con un usuario y una contraseña, podéis crear vuestros usuarios y darle distintos permisos, y contraseñas desde la pestaña de Privilegios si no queréis crear la BBDD para un usuario en concreto pon simplemente pruebaZF  El usuario sera root, el cual tiene permisos totales a todas las bases de datos (como supondrás esto es muy peligroso) 
Cuando ya hallamos decidido con que usuario crear nuestra base de datos, le daremos al Botón Crear, y listo, ya tenemos nuestra BBDD creada, ahora tan solo nos queda crear sus tablas, para el ejemplo vamos a usar solo una.

Para abrir la BBDD deberemos pinchar encima de su nombre, en cualquiera de los listados de bases de datos.
Cuando la hallamos abierto tendremos visiblemente todas nuestras tablas (ahora esta vació) y lo que vemos en la imagen de debajo.


Alli Escribiremos el nombre de la Tabla, y pondremos el numero de campos que tendrá, para el ejemplo con 3 nos vale; así que el nombre sera TablaPrueba y el numero de columnas un 3, y le daremos al botón de continuar.
Se nos abrirá una ventana en la que deberemos rellenar los nombres de los campos, definir la clave principal (Primary Key) y el tipo de campos junto a su longitud.


  • En la primera columna definiremos el Id, su nombre sera "Id", es de tipo Int, en el indice seleccionaremos Prymary, y marcaremos la casilla autoincrement. Con esto logramos que el Id no se repita y que automáticamente valla creciendo con cada insercion a esta tabla.
  • En la segunda columna definiremos el titulo, su nombre sera Titulo, de tipo Varchar con una longitud de 100 caracteres.
  • En la tercera definiremos un comentario, con el nombre de Comentario, tipo Varchar, y longitud de 500 caracteres.


Una vez definido esto iremos a la parte inferior de la pagina y le daremos a Guardar si le damos a continuar, nos creara otra columna, o el numero de columnas que definamos en el campo de al lado.


Con esto ya tenemos nuestra TablaPrueba creada, en el siguiente post, veremos como meter datos con el framework de zend para php

Paso de Variables

Vamos a seguir con el contenido estático.
Esta vez conoceremos como dar distintos valores a cada una de nuestras paginas, con el modelo de trabajo del MVC o de tres capas.

Lo primero que deberemos hacer es habilitar las vistas, para ello iremos a nuestro proyecto y allí abriremos application.ini, que recordamos estaba en: application/configs

Allí introduciremos el siguiente código:

resources.view[]=

dentro de la etiqueta de Production, que recordemos es heredada por todas las demás.
Una vez habilitadas las vistas, iremos al controlador que hemos creado (MiprimerzendController.php) que recordamos esta en: application/Controller

Allí sustituiremos las Acciones que habíamos creado, o mejor dicho su contenido por:

    public function miprimerzendAction()
    {
        $this->view->Titulo = "Esta es mi Primera Pagina con Zend";
        $this->view->Comentario = "Estoy comentando mi Primera Pagina con Zend";
    }
   
    public function miprimeractionAction()
    {
        $this->view->Titulo = "Este es mi Primer Action con Zend";
        $this->view->Comentario = "Estoy comentando Primer Action con Zend";
    }
como podemos ver nos llamamos a nosotros mismos con $this, después a la vista con view, y le damos el nombre de la variable Titulo y Comentario, a lo que le damos un valor (String) mediante el símbolo de "=" igual, terminando en ";"

Ahora iremos a Nuestra plantilla (layouts), y sustituiremos su titulo por este:

        <title>
            <?php
                echo $this->Titulo;
            ?>
        </title>
Lo que hacemos es abrir una etiqueta de php, para poder usar la programación <?php, con su cierre al final ?>; después con el echo imprimimos el Titulo, al llamarlo con el $this->Titulo, al estar en la pagina no es necesario llamar a la vista, así que nos recupera el titulo de la pagina en la que estemos.




Ahora es el momento de ir a nuestras vistas, recordemos que tenemos una para cada pagina, y cada vista esta dentro de una carpeta con el nombre del controlador, así que iremos a: application/views/scripts/miprimerzend

en cada una de las vistas teclearemos el siguiente código

echo $this->Comentario;
Esto no debe tener ningún misterio para nosotros, ya que es el mismo del titulo que acabamos de hacer, pero en lugar de llamar a titulo llamamos a Comentario (recordar que php es sensible a mayúsculas y minúsculas, por lo que no es lo mismo Comentario que comentario)
Si abrimos nuestra web, veremos algo parecido a esto:


Con lo que ya sabemos pasar variables desde el controlador a la vista, sea mediante la plantilla (si queremos que salga siempre esa variable en todas las paginas), o mediante las vistas (para cada pagina en concreto).

sábado, 7 de abril de 2012

Primera aplicacion Zend

Si hemos llegado hasta aqui, ya tenemos creado nuestro primer proyecto con Zend.
En este caso vamos a crear una nueva pagina en nuestro proyecto, para ello deberemos hacer click derecho sobre Public, darle a New, y alli a Php File. Como vemos en la imagen de abajo.


Se nos abrira un formulario que nos pedira el nombre de la pagina que queremos crear, yo le he puesto MiPrimerZend, puedes ponerle lo que quieras


Despues de esto le daremos a Finish y listo, ya tenemos creada la pagina, en la que voy a pegar este contenido:

<?php
    echo "Mi primer proyecto con Zend";
?>

Como veis es un codigo simple en php, no tiene secreto alguno, ahora si vamos a nuestro navegador, y ponemos esta URL: http://localhost/ZendPrueba/public/miprimerzend.php podremos ver lo siguiente: 

Recuerda pinchar para aumentar
Esto lo podemos hacer tambien pero agregando una pagina html normal, aunque este modo de agregar paginas hay que hacerlo nada mas que para el contenido estatico.
Ahora que ya hemos visto esto, podemos borrar el archivo creado, ya que no lo vamos a volver a usar, y solo ocupa espacio.

Vamos a empezar a usar y explicar que son y para que sirven los controladores de modo practico (la teoría ya la vimos en el anterior post)

Empecemos explicando y trabajando sobre IndexController.php; tiene este código:

<?php

class IndexController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
        // action body
    }


}

Si ya hemos trabajado con Php nos llamara la atencion de que tenemos la llave de apertura <?php, pero no la de cierre ?>, al trabajar con este Framework es así, para evitar olvidos junto al código html.
En la siguiente linea, podemos comprobar que este archivo (IndexController.php) no es mas que una clase que extiende a  Zend_Controller_Action.

Justo debajo tenemos una función llamada init, esta función se ejecutara siempre que llamemos a este controlador
Finalizando tenemos otra función indexAction como podemos ver con este mismo ejemplo los métodos o funciones empezaran siempre con letra y en minúscula, seguidos de Action con la inicial en mayúscula, podemos tener tantos métodos como queramos, los Action son con los que podemos interactuar, para verlo vamos a crear un par de métodos, copiar esto a continuación del indexAction

    public function miprimerzendAction()
    {
        echo "Esta es mi Primera Pagina con Zend";
        exit;
    }
    
    public function miprimeractionAction()
    {
        echo "Este es mi Primer Action con Zend";
        exit;
    }

si después de hacer esto guardamos y ejecutamos, podremos poner estas Url en nuestro navegador:
aquí tenemos el ejemplo claro de lo que hemos explicado en el post anterior, para acceder a lo que hemos programado en un controlador debemos escribir el nombre del servidor, en este caso seria nuestra ruta local: http://localhost/ZendPrueba/public/ seguido del nombre del controlador /index/ finalizando en el nombre del metodo /miprimerzend

Veremos que se nos imprime el mensaje que hemos escrito en el método, en cambio en el index, se nos muestra la ventana de zend, aunque el método no tiene nada programado, esto es debido a la programación que tiene en la vista, mas adelante explicamos las vistas, ahora, que ocurre si intentamos llamar a un método que no tenemos programado?
Por ejemplo

Nos dará según como lo tengamos configurado un error descriptivo explicándonos que no encuentra la pagina por que el action no existe, o simplemente el típico Page not Found




Podríamos crear nuevos controladores para ello simplemente deberíamos agregar como ya hemos visto un nuevo archivo php y su código no tiene mas que ser una clase que extienda a Zend_Controller_Action
ejemplos serian:
class SaludosController extends Zend_Controller_Action
class MiprimerzendController extends Zend_Controller_Action
class HolaMundoController extends Zend_Controller_Action

Como dijimos en el anterior post cada controlador esta asociado a una vista, si creamos alguno de los anteriores deberemos crear también una vista, o trampearlo para que nos muestre una pagina en blanco con la programación que le hallamos dado, esta "trampa" es lo que hemos hecho antes, en por ejemplo:

    public function miprimerzendAction()
    {
        echo "Esta es mi Primera Pagina con Zend";
        exit;
    }


Como podéis ver hay un exit; al final esto se utiliza para que no busque la vista, en este caso simplemente estoy imprimiendo el mensaje anterior, si quitamos el exit y no tenemos la vista creada nos dará un error diciendo claramente que no encuentra la vista.

Para crear una vista debemos ir al directorio views y allí a scripts allí dentro debemos crear una carpeta con el mismo nombre del controlador, en minúsculas, para los ejemplo de  los controladores que he puesto antes las carpetas serian
saludos
miprimerzend
holamundo
dentro deberemos crear un archivo por cada acción, el archivo es un documento Php (como los creados hasta ahora) pero con la extension phtml; si tuviéramos el controlador  MiprimerzendController  y fuera algo así:


<?php

class  MiprimerzendController   extends Zend_Controller_Action
{

    public function miprimerzendAction()
    {
        echo "Esta es mi Primera Pagina con Zend";
    }
    
    public function miprimeractionAction()
    {
        echo "Este es mi Primer Action con Zend";
    }
}


deberíamos crear una carpeta llamada miprimerzend y allí 2 archivos llamados miprimerzend.phtml y miprimeraction.phtml

Esto es algo sencillo, pero como podemos ver es fácil equivocarse, o que se nos olvide algo, por eso tenemos las facilidades del NetBeans, si hemos configurado las teclas rápidas como ya explicamos en otro post deberemos presionar ctrl+Shift+Z, se nos abrirá una ventana como esta:


Deberemos poner el nombre del controlador que vamos a crear, y por supuesto de la lista de todo lo que nos puede hacer automático el NetBeans con Zend (Gracias al archivo bat que seleccionamos en los primeros post) seleccionaremos crear controlador, y le daremos al botón de Run, así nos creara el controlador, junto a su carpeta correspondiente y la vista

una vez creada nos vendrá bien crear los phtml para los métodos, ademas de pegar los métodos en nuestro controlador

una vez creados los phtml copiaremos este código en su interior:

<?php
echo "Hola aqui tambien"
?>
ahora nos vendría genial hacer el esqueleto de nuestra web, el esqueleto, viene siendo aquello que tiene toda web, que no cambia nunca, es decir, el encabezado, el menú, el pie.... Para ello tenemos los layouts o diseños en castellano, para ello primero deberemos habilitar los diseños, esto es muy sencillo, tan solo deberemos hacer ctrl+Shif+Z o la combinación que tengamos configurada nosotros, para que se nos abra el menú de acciones posibles con Zend allí veremos Enable layouts, simplemente clicamos sobre ella, y le damos a run
El solo trabajara, nos lo habilitara, y ademas nos creara una serie nueva de archivos:


Como vemos tenemos la carpeta Layouts, en su interior otra con el nombre de scripts, y finalizamos con un archivo llamado layouts.phtml
este archivo contiene :
<?php echo $this->layout()->content; ?>
en el lugar en donde coloquemos esto se mostrara la vista a la que intentemos acceder, voy a darle un poco de diseño a esta web.

<!doctype html>

<html lang="es">
    <head>
        <title>Mi Primera web con Zend</title>
        <meta charset="utf-8">
    </head>
 
    <body>
        <header>
            <hgroup>
                <h1>Mi Primera web con Zend</h1>
            </hgroup>
        </header>
     
        <div id="Menu">
            <ul>
                <li><a href="http://localhost/ZendPrueba/public/">Inicio</a></li>
                <li><a href="http://localhost/ZendPrueba/public/Miprimerzend/miprimerzend">Mi Primer Zend</a></li>
                <li><a href="http://localhost/ZendPrueba/public/Miprimerzend/miprimeraction">Mi Primer Action</a></li>
            </ul>
        </div>
        <section>
            <?php echo $this->layout()->content; ?>
        </section>
        <footer>
            <h3>by Rog@ma</h3>
        </footer>
    </body>
 
 
</html>

Así le daríamos la estructura de Html necesaria, un menú sencillo, y un encabezado y pie sencillos
La ruta en el menú debería ser al estilo de /miprimerzend/miprimeraction, pero para que funcione deberíamos hacer unos cambios en nuestro servidor local, que mas adelante explicaremos

viernes, 6 de abril de 2012

Aprovechar al máximo NetBeans

Antes de empezar nuestra primera aplicacion en ZF nos conviene Hacer una configuracion supersencilla en el NetBeans que nos va a facilitar muchisimo el trabajo.


  1. Como es logico abrir el NetBeans
  2. Iremos al menu Tools
  3. Abriremos Options (Imagen 1.1)
  4. Iremos hasta keymap
  5. En el campo de búsqueda, le escribiremos Zend
  6. Le daremos al botón de los 3 puntitos en el apartado de acceso directo (Imagen 1.2)
  7. Presionaremos las teclas que querramos usar para abrir las opciones de Zend, en el ejemplo he usado Ctrl+Shift+Z (Imagen 1.3) y presionaremos Enter para que quede guardado.
  8. Le daremos al botón de Ok en la parte inferior para cerrar y listo

Imagen 1.1

Imagen 1.2

Imagen 1.3


En el siguiente Post veremos una gran utilidad

Directorios de un proyecto Zend y su funcionamiento

Como funciona Zend??
ZF se basa en MVC (Modelo, Vista, Controlador) Esto es una forma de trabajar que separa el código, de la base de datos, de la vista al usuario, también conocido como modelo en 3 capas.

Como lo hace??
El usuario entra en nuestra web, por lo que solicita al servidor una vista.
la vista, hace una petición al controlador.
El controlador, pide los datos de la BBDD al Modelo
El modelo, le devuelve los datos al Controlador
El controlador, le pasa los datos a la vista

Con esto lograremos tener unas aplicaciones web, bien organizadas y escalables, lo que quiere decir que si tenemos que ampliar alguna parte no tendremos problema con las demás, ya que esta todo separado, además de que si queremos trabajar con distintas bases de datos (para hacer pruebas por ejemplo) no necesitaremos andar cambiando en todas las paginas el acceso a la base de datos, con un solo cambio lo tendremos en toda la web, lo mismo ocurre con cualquier función, etc; e incluso si queremos cambiar la interfaz del usuario, podremos hacerlo sin problemas ya que el código y los datos van por otro lado.

Después de crear el proyecto como ya hemos visto con NetsBeans nos creara una serie de directorios, necesarios para su funcionamiento.


Como podemos ver el primero se llama application este es uno de los mas importantes, si lo abrimos podemos ver que a su vez alberga una serie de carpetas y archivos.


La primera carpeta que nos encontramos es configs que es la encargada de guardar application.ini en donde deberemos editar la configuración de nuestra aplicaicon.Por defecto viene algo así:

1-[production]
2-phpSettings.display_startup_errors = 0
3-phpSettings.display_errors = 0
4-includePaths.library = APPLICATION_PATH "/../library"
5-bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
6-bootstrap.class = "Bootstrap"
7-appnamespace = "Application"
8-resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
9-resources.frontController.params.displayExceptions = 0
10-
11-[staging : production]
12-
13-[testing : production]
14-phpSettings.display_startup_errors = 1
15-phpSettings.display_errors = 1
16-
17-[development : production]
18-phpSettings.display_startup_errors = 1
19-phpSettings.display_errors = 1
20-resources.frontController.params.displayExceptions = 1
21-


Esta es la configuración que le daremos a cada uno de los 4 estados de trabajo que se usan en Zend

  • production
  • staging : production
  • testing : production
  • development : production
Las 3 ultimas heredan la configuración de production, excepto lo que reescribamos, en la configuración de arriba podemos ver como en la linea 2 y 3 tenemos:

1-[production]
2-phpSettings.display_startup_errors = 0
3-phpSettings.display_errors = 0
mientras en  las 14 y 15

13-[testing : production]
14-phpSettings.display_startup_errors = 1
15-phpSettings.display_errors = 1
Como vemos en las lineas 1 y 13 pertenecen a distintos estados, el estado testing hereda toda la configuración de production, pero reescribe la configuración para mostrar los errores
Esto es muy útil ya que cambiando una única linea de código en el index.php podemos pasar de un estado a otro, y no solo para mostrar u ocultar los errores, si no también podemos configurar distintas bases de datos y otras configuraciones aquí dejo algunos ejemplos:

Para inicializar la conexión a nuestra BBDD .

[production]
resources.db.adapter = PDO_MYSQL
resources.db.params.host = localhost
resources.db.params.username = root
resources.db.params.password = clave1234
resources.db.params.dbname = tabla1

Para inicializar Zend_Layout .

[production]
resources.layout.layout = "NameOfDefaultLayout"
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"

Otro archivo importante que tenemos en el directorio application y que no esta ubicado en ninguna subcarpeta es: Bootstrap.php que si nos hemos fijado lo inicializamos en las lineas 5 y 6 del application.ini que acabamos de explicar

Este archivo por defecto tiene este contenido:


1-<?php
2-
3-class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
4-{
5-
6-
7-}

Como vemos viene vacío, pero este archivo nos sirve para inicializar las clases del modelo MVC y llamar a algunas funciones que queremos que se llamen para todas ellas, para definir un recurso los nombres de los métodos deberán ser protegidos (protected) y comenzar con _init  así cuando se inicialice la aplicación todos los métodos que cumplan con este prefijo serán ejecutados. Como por ejemplo en:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap

{

protected function _initEjemplo()

{
La siguiente carpeta que nos encontramos es: controllers
que como su nombre indica albergara los controladores de la  aplicación.
Zend usa el patrón Front Controller para determinar que controlador tiene que ser procesado. Nosotros nos tenemos que encargar de crear los distintos controladores.
Crear un controlador es crear una clase con un nombre determinado que extienda de Zend_Controller_Action y crear uno o varios métodos que serán ejecutados.
Por ejemplo podemos tener la siguiente estructura un sitio:
  • /datos/insertar/
  • /datos/modificar/
  • /datos/imprimir/
  • /datos/
Esto seria algo así:
<?php

class DatosController extends Zend_Controller_Action
{

    public function insertarAction()
    {
    }


    public function modificarAction()
    {
    }

    public function imprimirAction()
    {
    }

    public function indexAction()
    {
        // cuando no hay ninguna accion definida esta es la que se ejecuta.
    }
}

Deberemos tener una vista por cada controlador; para acceder a un método de nuestro controlador deberemos poner en la URL del navegador dominio/controlador/metodo; por ejemplo localhost/datos/insertar
La forma de nombrar un controlador, siempre es NombredelcontroladorController.php; es decir el nombre que queramos darle, comenzando por Letra y Mayuscula, seguido de Controller, también en mayúscula, y con la extensión php
como no hay forma mejor de entender el funcionamiento que trabajando lo veremos con un ejemplo practico en el siguiente post

La siguiente carpeta es la de models esta es la carpeta que contendrá los archivos que trabajan con la BBDD, es pronto todavía para ver como se hace esto, en siguientes post entraremos a detallarlo.

La carpeta que le sigue es views  aquí tendremos las vistas (lo que finalmente vera el usuario)
Dentro de esta carpeta tenemos otras 2

  • helpers: que como su nombre indica es para guardar los archivos de ayuda
  • scripts: este nombre quizás sea menos identificativo, dentro de esta carpeta tendremos una carpeta mas por cada controlador que hallamos creado, ahora mismo por defecto tenemos 2 carpetas error, con su correspondiente vista error.phtml; y también tenemos index, con la vista index.phtml, correspondientes a los controladores ErrorController.php e IndexController.php respectivamente

La siguiente carpeta que nos encontramos es docs y contiene un readme.txt; el cual traducido al castellano nos dice:
README
======

Este directorio debe ser usado para colocar la documentación del proyectoincluyendo specfic
pero no se limita a las notas del proyecto, generado API / phpdocdocumentación, o
archivos manuales generados o escrito a mano. Lo ideal sería que este directorio se mantendría
en su entorno de desarrollo y no debe ser desplegado con su
aplicación para la localización de la producción final.


Configuración de la VHOST
=====================

La siguiente es una muestra de VHOST es posible que desee considerar para su proyecto.

<VirtualHost *:80>
    DocumentRoot "C :/ xampp / htdocs / ZendPrueba / público"
    ServerName. Locales

    # Esto debe ser omitida en el entorno de producción
    SetEnv APPLICATION_ENV el desarrollo

    <Directory "C:/xampp/htdocs/ZendPrueba/public">
        Opciones Indices MultiViews FollowSymLinks
        AllowOverride All
        Order allow, deny
        Dejar de todas las
    </ Directory>

</ VirtualHost>

Esta carpeta es cosa del NetBeans no de ZF, creo que queda claro para lo que sirve, pero no vamos a entrar, al menos de momento en como se crea la documentación.

La siguiente carpeta que nos encontramos es library en esta carpeta deben ir todas las carpetas, archivos y como el nombre dice librerías ya hechas, entre ellas la del ZendFramework, si el editor no nos ha creado dentro la carpeta Zend (tal y como esta escrita) deberemos crearla y copiar dentro todo el contenido de las librerías de Zend, si hemos seguido este tutorial, lo tenemos todo en: C:\ZendFramework-1.11.11\library\Zend; también podremos colocar en esta carpeta todas las librerías que vallamos creando, o que vallamos a usar en nuestro proyecto, sean propias o ajenas.

Ahora nos encontramos con nbproject es otra carpeta del NeatBeans guarda información acerca del proyecto que es usada por el NeatBeans.

Llegando al final nos encontramos con la carpeta public hay tenemos que colocar todas las paginas que va a ver el usuario, como podemos ver tenemos el index.php, que si entramos a nuestro proyecto por la Url, o le damos en el NetBeans a ejecutar sera la pagina que veamos, aquí también deberemos colocar las hojas de estilos, las imágenes, etc.



jueves, 5 de abril de 2012

Crear un proyecto en Netbeans con Zend

En este post crearemos nuestro primer proyecto con Zend desde Netbeans; para ello deberemos de haber dejado listo el Netbeans según lo explicado en el anterior post.
Lo primero, como es lógico sera abrir el IDE.
Después deberemos darle al botón de crear nuevo Proyecto,


nos preguntara que tipo de proyecto deseamos crear, le daremos a Php, y alli a aplicacion en Php,


 le daremos a siguiente, y nos pedirá el nombre del proyecto , yo he elegido PruebasZend, puedes poner el nombre que prefieras.


Le daremos a siguiente y nos pedirá la URL desde la que deseamos lanzar el proyecto;



le daremos a siguiente, y marcaremos la casilla de Zend Framework



Deberemos a Finish, y listo ya tenemos nuestro primer proyecto Zend creado con toda la estructura necesaria para su buen funcionamiento, en el próximo post la explicaré.

Instalacion de Zend Framework en Windows

Bueno hoy os explicare como instalar el Framework para Php en windows, y a que es algo sencillo, pero si no lo hemos hecho nunca, seguramente nos salten trabas por todos lados, como me ocurrió a mi XD.

Lo primero que necesitamos es tener en nuestra maquina instalado una versión actualizada de Php y Apache, esto ya lo hicimos en uno de nuestros pasos anteriores.

Quien no conozca Zend solo comentare que es un Framework el cual nos va a hacer la vida mas fácil a la hora de programar, para entre otras cosas, como se suele decir no perdamos tiempo en reinventar la rueda; para mas información, os dejo la pagina oficial http://www.zend.com/en/ .

1- Lo primero que debemos hacer es descargarnos la ultima versión http://www.zend.com/en/community/downloads

es recomendado descargar la versión mínima, ya que de momento no vamos a usar todas su funcionalidades, y es mas ligero.

2- Después deberemos descomprimirlo, en una carpeta a poder ser no muy larga, yo lo he dejado en: C:\ZendFramework-1.11.11

domingo, 25 de marzo de 2012

Resultados

Hoy seré breve después de mas de 2 horas conectado a mi servidor local desde 3 Ip´s distintas siguio sin cortarse.
Por lo que el problema de los cortes en los servidores web, esta claro que es algo relacionado con la seguridad que tengan instalada... ahora queda descubrir el que, he estado investigando un poco sobre la seguridad en apache, y aunque no estoy seguro, creo que la configuración que busco no esta hay, quizás en algún firewall ...

Me estoy registrando en un tercer servidor gratuito, a ver si hay mas suerte en este, aun asi sigo investigando.

Un saludo.
http://www.poque.es

jueves, 22 de marzo de 2012

Proxy y otras utilidades

Para ocultar tu Ip y así poder probarlo desde tu propia red de ordenadores puedes usar varias opciones, aquí te dejo las que mas uso yo:
TOR
https://www.torproject.org/
es un programita que se ejecuta en tu ordenador, y te abre un navegador portátil, en la versión que tengo yo te abre un firefox, todo lo que visites desde ese firefox portable, estara visto como si fuera desde otra Ip, en la web oficial explican a la perfección su funcionamiento.
Proxy
http://proxy.org/
por poner un ejemplo, en esta web a la derecha tienes un listado de proxy´s elije uno, y busca donde tiene para que pongas la dirección web a la que quieres ir, tipeala, y listo ya estas en la web que quieres visitar, como si accedieras desde otra IP.

Acceder a tu servidor desde fuera

Para que tu web pueda ser vista desde internet, es necesario un par de configuraciones, lo mas importante que necesitamos es conocer la Ip real, para ello tenemos miles de paginas en internet, como por ejemplo:
http://www.cualesmiip.com/

Allí, en mi caso me ha dado: 82.158.17.99 (no os molestéis en intentar nada, tengo Ip dinámica en cuanto lance el post reiniciare el router)
También deberemos configurar nuestro router, para que redireccione las peticiones entrantes por el puerto 80, a la Ip privada de nuestro server, para ello como es obvio nuestro server debe tener una Ip fija, o cada vez que lo reiniciemos podrá tener una Ip distinta y abra que configurar de nuevo el router.(no voy a explicar como hacerlo ya que cambia según el sistema operativo que se use, y es algo muy básico, si tenéis alguna duda, poner un comentario, estaré encantado de ayudar)
Pues bien deberemos entrar en nuestro router, por lo general poniendo en el navegador 192.168.1.1 y logeandote puedes entrar, si no as cambiado los datos de acceso de fabrica suele ser admin/admin ; 1234/1234 , o alguna combinación de ambos, para otros casos mirar el manual del aparato, consultar con tu ISP o a googlear XD

Una vez estemos en el router, deberemos ir a las opciones de NAT, o como en mi caso (NetGear
Reenvío de Puertos) una vez estemos allí deberemos decir que todo el trafico que entre por el puerto 80, que nos lo dirija, al puerto 80 de la ip del server
En mi caso:

Externo
Interno 
 NombrePuerto inicialPuerto finalPuerto inicialPuerto finalProtocolaDirección IP Local
192.168.1.

Una vez realizado esto ya lo tendremos listo, tan solo deberemos abrir un navegador (desde otro ordenador, móvil, etc) y poner
http://"DireccionIpExterna"/"NombreDeTuWeb"/ 
en mi caso:
http://82.158.17.99/poque/ 

Comprueba que no tengas ningún cortafuegos, o antivirus activado, ya que podría cortarte el acceso; con esto ya tenemos nuestro servidor instalado, y visible desde fuera; es posible que si intentas entrar desde la misma red te de algún tipo de error, para evitarlo desde otros ordenadores usa un servicio de proxy.

Con esto ya hecho, solo queda abrir la web, y esperar a ver si también me lo corta como me pasa con el servidor web.

Un Abrazo y Hasta el Próximo post

Funcionamiento en Local

Después de tenerlo unas 3 horas encendido visualizando la pagina principal de la web, la que contiene el chat, la cual refrescándose cada segundo, exactamente igual que la que esta OnLine en mi servidor local no ha fallado.

Esto es debido a que estoy haciendo la petición desde el la misma Ip que aloja la web??
O a que la configuración por defecto no "capa" cuando hay "excesos" de peticiones??

mañana intentare descubrirlo, haré peticiones al server desde Ip´s de fuera y a ver como se comporta, tambien intentare conseguir la configuración del Apache del server OnLine para compararla con la que yo tengo montada, os iré comentando.

Un saludo
http://www.poque.es

miércoles, 21 de marzo de 2012

Configurar conexion BBDD

Cosa sencilla, tan solo deberemos crear una nueva pagina con este código


<?php
mysql_connect("TuServer"," TuUsuario "," TuContraseña") ;
mysql_select_db(" TuBaseDeDatos ");
?>

Otra forma de hacerlo, un poco mas completa seria:


$conexion=mysql_connect("TuServer","TuUsuario","TuContraseña")
  or  die("Problemas en la conexion");
mysql_select_db("TuBaseDeDatos",$conexion)
  or  die("Problemas en la selección de la base de datos");

De esta ultima forma si ocurriera un error en la conexión o a la hora de seleccionar la BBDD nos saldría un error avisandolo.

Esta pagina puede llamarse: ConexionABBDD.php (por ejemplo)
después tendremos que llamarla desde cada una de las paginas que accedan a los datos, o por lo menos a esa misma tabla (esto podría mejorarse metiendo una función que pida un nombre de una tabla en concreto y que mediante un switch te conecte con una o con otra tabla por ejemplo)

Para llamar a esta pagina desde las demás deberemos copiar este código antes de cualquier llamada a los datos:
require_once('RutaDeTuPagina/TuPagina.php');
Un ejemplo seria:
require_once('./Funciones/ConexionABBDD.php'); 

PD: aunque aquí no venga a cuento, tan solo recordar que si pasas estos datos por alguna variable que nunca contenga "ñ" como por ejemplo en contraseña ya que da problemas, en su día yo me volví loco, para hacer un simple login que me comparaba el nombre de usuario con la contraseña almacenada en la BBDD, y me dejaba entrar o no, es lo que tiene ser novato XD.