Estas en: Home > tutorial

Entradas etiquetadas con tutorial

Logo Cassandra

Cassandra 1.x y PHP para desarrolladores SQL: La consola

0

Cassandra dispone de una herramienta a través de la consola o shell para poder trabajar con ella. Parecida a la de MySQL.

Para acceder a la consola solo tendremos que escribir lo siguiente:

> cassandra-cli

Si todo va bien nos aparecerá algo parecido al siguiente texto:

Welcome to Cassandra CLI version 1.0.7
Type 'help;' or '?' for help.
Type 'quit;' or 'exit;' to quit.
[default@unknown]

Ahora tenemos que conectar con la base de datos de la siguiente manera:

connect localhost/9160;

Fíjate que al final del comando hay un punto y coma. Hay que añadirlo, como si fuera una sentencia SQL, sino te aparecerán unos puntos suspensivos para que finalices el comando. Si te ocurre esto último, pon el punto y coma y pulsa enter. Te debería aparecer algo como lo siguiente:

Connected to: "Test Cluster" on localhost/9160

Hay una forma de resumir los pasos anteriores en una sola linea:

> cassandra-cli -h localhost -p 9160

Ahora vamos a mostrar los keyspaces que tiene la base de datos actualmente:

show keyspaces;

[ci-box type=»warning»]Recuerda poner el punto y coma.[/ci-box]

Este comando te mostrará un listado de los keyspaces y sus column families que se encuentran en la BD, además de información relevante sobre las propiedades, tanto de los keyspaces como de sus column families correspondientes.

El objetivo de este post no es explicar con detalle cada propiedad de los keyspaces y las column families (he de admitir que muchas de ellas las desconozco), sino mostrar y enseñar la forma de trabajar por consola con Cassandra.

Vamos al lío.

 

CREAR UN KEYSPACE

Tan sencillo como la siguiente sentencia:

create keyspace my_keyspace;

Después de dos o tres segundos te mostrará algo como esto:

b511da50-88c0-11e1-0000-242d50cf1fff
 Waiting for schema agreement...
 ... schemas agree across the cluster

 

ACCEDER A UN KEYSPACE

Igual de sencillo:

use my_keyspace;

Ahora que ya estamos dentro de nuestro keyspace, toca añadir column families.

 

CREAR COLUMN FAMILIES

Muy sencillo:

create column family my_column_family;

Añadamos datos.

 

AÑADIR DATOS A UNA COLUMN FAMILY

En MySQL utilizaríamos una sentencia INSERT para añadir información a una tabla concreta, en la que anteriormente habremos creado sus columnas. En Cassandra no hay que crearlas con antelación. (En realidad se puede utlizar un archivo para configurar el esquema del keyspace dando las propiedades adecuadas a cada column family y sus respectivas columnas, pero para iniciarnos en Cassandra y aprender su funcionamiento no es necesario).

Para no complicarnos mucho primero vamos a configurar la column family.

Las column families disponen de diferentes tipos de codificación de datos para guardar los datos, es decir, si guardamos información en UTF-8 y nuestra column family está configurada como ASCII o Bytes nuestros datos se guardarán, sí, pero al recuperarla solo veremos un batiburrillo de número y letras.

Para evitar esto configuramos la column family para que guarde los datos en UTF-8:

assume my_column_family keys as utf8;
assume my_column_family comparator as utf8;
assume my_column_family validator as utf8;

Ahora ya podemos crear nuestro primer registro:

set my_column_family['1']['nombre'] = 'pepito';
 set my_column_family['1']['edad'] = '120';

Si ejecutamos el siguiente comando:

get my_column_family['1'];

Nos devolverá las columnas que tuviese la fila con id = 1, junto con los correspondientes valores de esas columnas.

Esto es el funcionamiento básico de la consola de Cassandra. Hay muchos más comandos para obtener información de Cassandra y realizar algunas tareas más, para obtener la ayuda y ver estos comandos solo tienes que escribir lo siguiente:

help;

¿Fácil verdad? Por último, para salir de la consola:

quit;
Logo Cassandra

Cassandra 1.x y PHP para desarrolladores SQL: El modelo de datos

5

Si has trabajado con una base de datos relacional tal vez te resulte algo confuso al principio comprender el modelo de datos que usa Cassandra, intentaré ser lo más claro posible, pero si te surgen preguntas no dudes en dejarlas en los comentarios.

 

Columnas

El elemento más básico de la base de datos Cassandra es la columna, se compone de tres elementos: nombre de la columna, valor y timestamp. Os muestro un ejemplo como un array:

array(
  "nombre" => "email",
  "valor" => "webmaster@localhost.com",
  "timestamp" => time(),
);

 

Super columnas

Es el conjunto de columnas con sus correspondientes valores:

array(
  "nombre_superColumna" => array(
    "usuario1" => array(
      "nombre" => "email",
      "valor" => "webmaster@localhost.com",
      "timestamp" => time()
    ),
    "usuario2" => array(
      "nombre" => "email",
      "valor" => "email@email.com",
      "timestamp" => time()
    ),
    "usuario3" => array(
      "nombre" => "email",
      "valor" => "otroemail@otroemail.com",
      "timestamp" => time()
    ),
  ),
)

 

Familia de columnas

Es el conjunto de columnas o super columnas. Me explico:

Las column Family o  familia de columnas se puede configurar de dos maneras: como Super o como Standard. Si se elige la opción Standard, en la column family solo se podrán guardar columnas no super columnas. En cambio si la column family está configurada como Super podrá guardar, además de las columnas, las super columnas. Esta flexibilidad permite jugar con la base de datos y adaptarla a nuestras necesidades.

Ejemplo:

array(
  "name" => "ColumnFamily",
  array( "name" => "SuperColumn",
    array( "colums" )
  ),
)

Keyspace

El keyspace es nuestra base de datos, donde alojaremos todas las columFamilies que necesitemos.

Ejemplo:

array(
  "name" => "keyspace",
  array("name" => "columnFamily",
    array(
      [...]
    ),
  ),
)
Logo Cassandra

Cassandra 1.x y PHP para desarrolladores SQL: Instalación

4

La base de datos No-SQL Cassandra fue creada por Facebook a causa de la necesidad de disponer de una base de datos distribuida de alto rendimiento, flexible, tolerante a fallos, escalable y que fuese capaz de procesar grandes cantidades de datos, más tarde fue liberada bajo licencia Apache y actualmente es utilizada principalmente por empresas de internet con proyectos con un alto uso de base de datos como Twitter.

En esta serie de artículos iré desgranando la instalación, funcionamiento y desarrollo de aplicaciones en PHP con Cassandra, comparando las sentencias utilizadas para insertar, actualizar, etc de SQL con los métodos a utilizar en Cassandra. Por desgracia al ser algo completamente distinto a cualquier base de datos SQL tendré que añadir algo de teoría, pero intentaré que os resulte lo más ameno posible.

Al toro.

REQUISITOS

Para la realización de esta guía se utilizará Debian Squeeze como sistema operativo.

Doy por hecho que ya se dispone de un servidor web Apache con PHP instalado en la máquina de testeo que se esté usando. Las aplicaciones que se van a instalar han sido probadas en una máquina virtual Debian utilizando como aplicación de virtualización, VirtualBox instalado en un host Windows XP SP3.

En un servidor de producción recomiendo que tenga bastante RAM (por encima de 1GB, ya veremos más adelante el porqué. En la máquina virtual que uso de testeo dispone de 700 MB y funciona bien, pero en producción no es lo recomendable).

Instalaremos la base de datos Cassandra, el protocolo para conectar con ella y que nos generará el módulo para poder trabajar desde PHP, y PHPCassa que será la abstracción de la base de datos donde tenemos los métodos básicos para trabajar con Cassandra: insertar, actualizar, borrar, crear, etc.

PREPARANDO EL SISTEMA

Antes de empezar a instalar debemos actualizar el sistema operativos de la forma habitual:

apt-get update
apt-get upgrade

Una vez actualizado el sistema empezamos a instalar.

INSTALANDO CASSANDRA

Lo primero que necesitamos hacer para instalar Cassandra es editar los repositorios de Debian:

nano /etc/apt/sources.list

Una vez que se abra el editor añadimos las siguientes lineas:

deb http://www.apache.org/dist/cassandra/debian/ 11x main
deb-src http://www.apache.org/dist/cassandra/debian/ 11x main

Como podrás observar después de la ruta del repositorio se ha añadido «11x» esto indica el número de versión a obtener, en este caso es la versión actual de cassandra al crear este post. No se indica el número de parche, es decir, actualmente se puede descargar Cassandra 1.1.

Si dentro de unos meses sale la versión «1.2» solo tendrás que cambiar el uno por el dos.
Volvemos a consola y actualizamos los repositorios.

apt-get update

Nos dará un error en las claves gpg. Procedemos a actualizarlas con las siguientes instrucciones:

gpg --keyserver pgp.mit.edu --recv-keys F758CE318D77295D
gpg --export --armor F758CE318D77295D | sudo apt-key add -

Ojo con el guión del final, hay que añadirlo sino dará error.

Con el paquete 0.7.5 nos da otro error de clave gpg así que también instalamos esta de la misma manera:

gpg --keyserver pgp.mit.edu --recv-keys 2B5C1B00
gpg --export --armor 2B5C1B00 | sudo apt-key add -

Verificamos que tenemos el sistema actualizado.

apt-get update
apt-get upgrade

Actualizamos todos los paquetes que aparezcan.

Procedemos a instalar el paquete de la base de datos NoSQL Cassandra:

apt-get install cassandra

Cassandra necesita a Java para funcionar para ello, una vez instalado Cassandra instalaremos el paquete sun-java6-jdk de la siguiente manera:

apt-get install sun-java6-jdk

En el caso de que no encuentre el paquete verificar que los repositorios de Debian son correctos. Verifica la versión de Java con:

java -version

Debería aparecer algo así:

java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)

Se recomienda usar la versión de Java de Sun (Sun JDK) en vez de Open JDK debido a un bug encontrado en el mismo.

Si os muestra algo distinto a esto, escribid el siguiente comando:

update-alternatives --config javac

Os mostrará un listado con los diferentes paquetes instalados en el sistema que pueden ser utilizados para trabajar con Java. Nosotros usaremos el paquete de Sun, así que pulsa el número del paquete para que Debian lo utilice.

Por último, ejecutamos el siguiente comando para construir las dependencias:

dpkg-buildpackage -uc -us

INSTALANDO THRIFT Y LA EXTENSIÓN PARA PHP

[ci-box type=»info»]PHPCassa ya incluye Thrift en el archivo descargable, con lo que puedes saltarte esta parte si quieres. En la sección de PHPCassa se trata la creación del archivo .so con los archivos contenidos en el paquete de PHPCassa[/ci-box]

Thrift es tan solo el protocolo de conexión para poder utilizar Cassandra. Aunque en la extensión para PHP existen métodos para poder trabajar con cassandra, requieren bastante código por eso utilizaremos PHPCassa como abstracción de la base de datos.

Primero descargamos Thrift desde su web: http://thrift.apache.org/download/ y descomprimimos

tar -xzvf thrift-0.8.0.tar.gz

Nos colocamos dentro de la carpeta de Thrift.

Antes de hacer nada ahí instalamos algunos paquetes que nos serán necesarios:

apt-get install libboost-dev automake libtool flex bison pkg-config g++

Una vez instalados esos paquetes configuramos y construimos Thrift:

./configure
make

Construimos la interfaz de PHP Thrift para Cassandra:

./compiler/cpp/thrift -gen php ../ruta-a-cassandra/interface/cassandra.thrift

Copiamos archivos necesario para que PHPCassa funcione:

mkdir -p /usr/share/php/Thrift
cp -R gen-php/ /usr/share/php/Thrift/packages/
cp -R lib/php/src/* /usr/share/php/Thrift/

Cambiamos al directorio del protocolo de Thrif: ruta-a-thrift/lib/php/src/ext/thrift_protocol.

Instalamos el paquete para construir las extensiones de PHP:

apt-get install php5-dev

Construimos la extensión:

phpize
./configure --enable-thrift_protocol
make

Copiamos la extensión a la siguiente carpeta (cuidado: dependiendo del sistema el nombre de la carpeta de destino puede variar):

cp modules/thrift_protocol.so /usr/lib/php5/20060613/

Habilitamos el módulo creando el archivo /etc/php5/conf.d/thrift_protocol.ini con el siguiente texto:

extension=thrift_protocol.so

Comprobamos la instalación:

php -i | grep -v "PWD" | grep "thrift_protocol"

Si todo ha ido bien, reiniciamos Apache:

/etc/init.d/apache2 restart

Iniciamos Cassandra:

/opt/cassandra/bin/cassandra

Y probamos la consola para comprobar que todo ha ido correctamente:

/opt/cassandra/bin/cassandra-cli -host localhost -port 9160

Debería indicarte algo así:

Connected to: "Test Cluster" on localhost/9160
Welcome to cassandra CLI.

INSTALANDO PHPCassa

Bajamos PHPCassa desde github: https://github.com/thobbs/phpcassa

Descomprimimos a una carpeta dentro del proyecto en el que vayamos a utilizar PHPCassa, para el tutorial usaré /var/www/prueba_cassandra/phpcassa.

Si aun no has creado el archivo .so para que PHP pueda trabajar con Cassandra, escribe los siguientes comandos en tu consola:

cd lib/thrift/ext/thrift_protocol 
phpize 
./configure 
make 
sudo make install

Una vez finalizados estos pasos edita el archivo php.ini y añade la siguiente línea:

extension=thrift_protocol.so

Con esto finalizamos la instalación de Cassandra para que pueda ser utilizada por PHP.

 

Logo Cassandra

Cassandra y PHP para desarrolladores SQL: La consola

0

Cassandra dispone de una herramienta a través de la consola o shell para poder trabajar con ella. Parecida a la de MySQL.

Para acceder a la consola solo tendremos que escribir lo siguiente:

> cassandra-cli

Si todo va bien nos aparecerá algo parecido al siguiente texto:

Welcome to Cassandra CLI version 1.0.7

Type ‘help;’ or ‘?’ for help.
Type ‘quit;’ or ‘exit;’ to quit.

[default@unknown]

Ahora tenemos que conectar con la base de datos de la siguiente manera:

connect localhost/9160;

Fíjate que al final del comando hay un punto y coma. Hay que añadirlo, como si fuera una sentencia SQL, sino te aparecerán unos puntos suspensivos para que finalices el comando. Si te ocurre esto último, pon el punto y coma y pulsa enter. Te debería aparecer algo como lo siguiente:

Connected to: «Test Cluster» on localhost/9160

Hay una forma de resumir los pasos anteriores en una sola linea:

> cassandra-cli -h localhost -p 9160

Ahora vamos a mostrar los keyspaces que tiene la base de datos actualmente:

show keyspaces;

Recuerda poner el punto y coma.

Este comando te mostrará un listado de los keyspaces y sus column families que se encuentran en la BD, además de información relevante sobre las propiedades, tanto de los keyspaces como de sus column families correspondientes.

El objetivo de este post no es explicar con detalle cada propiedad de los keyspaces y las column families (he de admitir que muchas de ellas las desconozco), sino mostrar y enseñar la forma de trabajar por consola con Cassandra.

Vamos al lío.

 

CREAR UN KEYSPACE

Tan sencillo como la siguiente sentencia:

create keyspace my_keyspace;

Después de dos o tres segundos te mostrará algo como esto:

b511da50-88c0-11e1-0000-242d50cf1fff
Waiting for schema agreement…
… schemas agree across the cluster

 

ACCEDER A UN KEYSPACE

Igual de sencillo:

use my_keyspace;

Ahora que ya estamos dentro de nuestro keyspace, toca añadir column families.

 

CREAR COLUMN FAMILIES

Muy sencillo:

create column family my_column_family;

Añadamos datos.

 

AÑADIR DATOS A UNA COLUMN FAMILY

En MySQL utilizaríamos una sentencia INSERT para añadir información a una tabla concreta, en la que anteriormente habremos creado sus columnas. En Cassandra no hay que crearlas con antelación. (En realidad se puede utlizar un archivo para configurar el esquema del keyspace dando las propiedades adecuadas a cada column family y sus respectivas columnas, pero para iniciarnos en Cassandra y aprender su funcionamiento no es necesario).

Para no complicarnos mucho primero vamos a configurar la column family.

Las column families disponen de diferentes codificación de datos para guardar los datos, es decir, si guardamos información en UTF-8 y nuestra column family está configurada como ASCII o Bytes nuestros datos se guardarán, sí, pero al recuperarla solo veremos un batiburrillo de número y letras.

Para evitar esto configuramos la column family para que guarde los datos en UTF-8:

assume my_column_family keys as utf8;
assume my_column_family comparator as utf8;
assume my_column_family validator as utf8;

Ahora ya podemos crear nuestro primer registro:

set my_column_family[‘1’][‘nombre’] = ‘pepito’;
set my_column_family[‘1’][‘edad’] = ‘120’;

Si ejecutamos el siguiente comando:

get my_column_family[‘1’];

Nos devolverá las columnas que tuviese la fila con id = 1, junto con los correspondientes valores de esas columnas.

Esto es el funcionamiento básico de la consola de Cassandra. Hay muchos más comandos para obtener información de Cassandra y realizar algunas tareas más, para obtener la ayuda y ver estos comandos solo tienes que escribir lo siguiente:

help;

¿Fácil verdad? Por último, para salir de la consola:

quit;

#symfony, I18N, UTF-8 y Dreamweaver

0

Supongo que ya sabrás de lo que voy a hablar, sí, codificación de caracteres y el jodío de Dreamweaver. Te cuento:

Estoy haciendo algunas pruebas con Symfony y su sistema de internacionalización ( I18N ), y para ello he hecho que el charset que muestre la plantilla sea utf-8 (además de las tablas de la BD y las conexiones desde y hacía la BD), lo curioso es que cuando he ido a verlo en el navegador el resultado me aparecía con chinos (unos cuadrados (aunque pueden ser otros símbolos) que sustituyen a las letras con tilde), total que me he tirado todo el día dándole vueltas al tema, y el problema lo tenía en Dreamweaver que, por defecto, guarda los archivos en «Europeo occidental» y no en utf-8.

Te explico todo lo que he modificado en el proyecto de Symfony, por si te pasa algo parecido puedas comparar. Con esta configuración que te voy a mostrar el sistema de internacionalización de Symfony funciona al 100%:

Antes de nada te informo que esto está pensado para Symfony 1.4, versiones superiores o inferiores pueden necesitar una configuración distinta. Cuando hablo de Dreamweaver me refiero a la versión CS3, aunque muy probablemente algo parecido haya en versiones superiores.

settings.yml

Doy por hecho que ya has creado el proyecto, al menos una aplicación y un módulo con el que hacer pruebas. Nos vamos al archivo settings.yml de la app y añadimos:

 

  1. all:
  2. .settings:
  3.  
  4. # Indicamos la cultura por defecto
  5. # Aquí poned la que os interese
  6. default_culture: es_ES
  7.  
  8. # Indicamos la codificación de caracteres
  9. charset: utf-8
  10.  
  11. # Esto lo dejo a tu elección
  12. # Puedes escribir esta línea para que el helper I18N esté
  13. # en todas las plantillas de forma global
  14. # Lo bueno de usar esta opción es que puedes añadir
  15. # más helpers:
  16. # standard_helpers: [I18N,text, etc]
  17. standard_helpers: [I18N]
  18.  
  19. # O puedes escribir esta otra línea, pero
  20. # en cada una de las plantillas tendrás que incluir
  21. # al prinicipio <?php use_helper('I18N') ?>
  22. # la decisión es tuya
  23. i18n: true

 

routing.yml

Modificamos este archivo para indicar el módulo que se mostrará como página de inicio (homepage):

 

  1. # Esto es lo que está por defecto
  2. homepage:
  3. url: /
  4. param: { module: default, action: index }
  5.  
  6. # Lo único que cambio es el nombre del módulo, que en mi caso es 'login'
  7. homepage:
  8. url: /
  9. param: { module: login, action: index }

 

 

view.yml

Este archivo creo que no hacia falta modificarlo para la internacionalización, pero por si acaso:

  1. metas:
  2. language: es

 

indexSuccess.php del módulo

Añadimos el texto que vamos a probar:

  1. // No voy a poner todo el código que tengo en mi plantilla
  2. // así que pongo solo un ejemplo
  3.  
  4. <?php echo __('Hola Mundo!') ?>
  5.  
  6. // Esto te mostrará el texto en español

Bien, como le hemos dado el valor «es_ES» a «default_culture«, Symfony no mostrará ninguna traducción sino el valor que le hemos indicado en la plantilla. Para hacer una prueba en condiciones vamos a modificar la cultura de un usuario a «en_EN«, esto mantendrá la cultura de todo el proyecto como «es_ES«.

 

actions.class.php del módulo

En la acción Index escribimos lo siguiente:

  1. class loginActions extends sfActions
  2. {
  3. /**
  4. * Executes index action
  5. *
  6. * @param sfRequest $request A request object
  7. */
  8. public function executeIndex(sfWebRequest $request)
  9. {
  10.  
  11. // Esta línea cambiará la cultura SÓLO para el usuario
  12. $this -> getUser() -> setCulture('en_EN');
  13.  
  14. return sfView::SUCCESS;
  15. }
  16. }

Obviamente nos falta crear el archivo que le indicará a Symfony el texto que debe utilizar para su sustitución. A ello voy:

 

english.en.xml

Este archivo se guarda en la carpeta «i18n» de la app, aunque también puedes crear la carpeta dentro del módulo y guardar el archivo allí. Este archivo tiene un formato especial que se debe mantener:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <xliff version="1.0">
  3. <file orginal="global" source-language="en_EN" datatype="plaintext">
  4. <body>
  5. <trans-unit id="1">
  6. <source>Hola Mundo!</source>
  7. <target>Hello World!</target>
  8. </trans-unit>
  9. <trans-unit id="2">
  10. <source>soy un texto</source>
  11. <target>I'm a text</target>
  12. </trans-unit>
  13. <trans-unit id="3">
  14. <source>Adiós</source>
  15. <target>Bye</target>
  16. </trans-unit>
  17. </body>
  18. </file>
  19. </xliff>

Cosas importantes respecto de este archivo:

  • Le puedes poner cualquier nombre pero debe acabar en *.culture.xml, por ejemplo: login.en.xml, registro.en.xml, administracion.fr.xml, comentario.it.xml.
  • También se puede poner la cultura completa, es decir, en vez de solo *.en.xml puedes nombrarlo como *.en_EN.xml.
  • El parámetro «source-language» siempre debe indicar la cultura que se va a traducir, en este caso es el ingles (en_EN).
  • Cada texto a traducir está dentro de la etiqueta <trans-unit>, que tiene el atributo id, pues bien, cada frase a traducir debe aumentar el id ( 1,2,3,4,5….500 etc)
  • No es necesario que todas las frases estén en un solo archivo, puede haber varios archivos con textos diferentes, por ejemplo, para el menú, la cabecera, el pie de página, etc.,. Importante: aunque sean archivos para idiomas diferentes el nombre del archivo siempre debe ser el mismo, variando, eso sí, la cultura.

Una vez guardado el archivo volvemos al indexSuccess.php y lo modificamos para que quede tal que así;

  1. // No voy a poner todo el código que tengo en mi plantilla
  2. // así que pongo solo un ejemplo
  3.  
  4. <?php echo __('Hola Mundo!', null, 'login') ?>
  5.  
  6. // Ahora mostrará el texto que corresponda con la cultura del usuario
  7. // Además lo buscará en un archivo concreto en este caso login.en.xml

Y así se internacionaliza un proyecto Symfony. Ahora el problemita de Dreamweaver:

El bicho, (por llamarlo de alguna manera) tiene una opción para abrir archivos que no indiquen su codificación. Normalmente está en «Europeo occidental» y debería estar en «Unicode (utf-8)«. Para cambiarlo accedemos al menú «Edición -> Preferencias…» y en «Nuevo documento» busca un desplegable que ponga «Codificación pred.«; ahí elige «Unicode (utf-8)«, activa la casilla que dice «Utilizar al abarir archivos existentes que no indiquen su codificación» y en el desplegable de abajo (Formulario de normas Unicode) selecciona «C (descomposición de compatibilidad seguida de composición canónica)«. Pulsa aceptar y prueba el en navegador.

Tal vez tengas que limpiar la cache de Symfony para ello solo tienes que escribir en la consola (que debe apuntar a la carpeta donde tienes el proyecto) symfony cc o php symfony cc.

Si sigue fallando, abre el archivo indexSuccess.php del módulo con el bloc de notas, y sin modificar nada, vete a Archivo -> Guardar como… , ahí podrás elegir la codificación, en nuestro caso, utf-8, y para evitar que se guarde como un archivo .txt elige «Todos los archivos» y así se guardará en php. Vuelve a limpiar la caché y vuelve a probar, ahora sí te debería funcionar bien.

SSH en Windows con PuTTy

0

Para poder conectar con un servidor en remoto, habitualmente se usa SSH. Uno de los mejores programas para Windows (ya que la consola de este sistema operativo no permite este tipo de conexion) es Putty.

Os dejo el link de descarga y un tutorial que os indicará como cofigurarlo para poder conectar remotamente a un servidor:

Descargar PuTTy

Tutorial de PuTTy

Instalar PEAR desde WAMP + Bonus track: instalar Symfony desde PEAR

0

Hace tiempo que quería crear un post explicando con instalar PEAR en wamp, y además, desde hace unos meses, crear otro explicación como instalar Symfony desde PEAR. y hoy navegando un poco por la red, he encontrado dos fabulosos tutoriales que explica a la perfección estos dos temas. Así que, sin más preambulos, os dejo los links a estos dos geniales post:

Instalando PEAR en windows

Instalando symfony en windows

Instalar Symfony + WAMP

26

Una de las cosas más entretenidas de un programador (al menos para mí), es la de reciclarse cada poco tiempo para no quedarse estancado. Yo estoy en este proceso y después de varios días intentando instalar Symfony junto con WAMP al fin lo he conseguido (Sí, me ha costado un huevo, ¡que pasa! xD); para que otros desarrolladores no tengan que dedicarse a buscar información sobre como instalar Symfony junto a WAMP voy a explicar como realizarlo, los fallos que me ha dado, como solucionarlos, etc. Vamos allá.

Continue reading “Instalar Symfony + WAMP” »

Ir arriba