PHP en Mac OS X 10.9 Mavericks – Mac OS X Tips

Mac OS X MavericksYa ha pasado mas de una semana desde la llegada del nuevo Mac OS X Mavericks, y tengo que decir que me esta gustando bastante, a parte de ser gratuito, funciona muy bien.

Una de mis «sorpresas» ha sido comprobar que la configuración que tenia para el desarrollo de PHP ha desaparecido, y he tenido que remontarlo todo, pero vamos no me ha supuesto mucho tiempo.

Cambio en la versión de PHP.

En Mac OS 10.8, creo recordar que la versión que tenia instalada era la 5.3.14, estoy hablando un poco de memoria, pero seguro que era la 5.3, en esta nueva versión tenemos de serie la 5.4.17, si queréis comprobarlo solo tenéis que abrir una terminal y escribir php -v

¿Donde esta mi PEAR?

Así es, como suena, todo mi directorio con las librerías PEAR ha desaparecido, también decir que lo tenia dentro del sistema y no en proyecto así que esto puede llegar a ser comprensible,  pero si abrimos un terminal y vamos al directorio  /usr/lib/php nos encontraremos un ejecutable llamado install-pear-nozlib.phar se nos instalara PEAR, no olvidar instalarlo como root.


sudo install-pear-nozlib-phar

¿Yo tenia el XDebug instalado, no?

Si cambiamos el PHP cambiamos las extensiones, así que si teníamos instalado por ejemplo el XDebug pues ya yo esta, así que toca reinstalarlo. Lo mas sencillo, el metodo PECL, pero antes de ejecutarlo es mejor que instaléis las «command line development tools’ ya que si no lo hacéis, casi seguro que os saldrá el siguiente error.


fatal error: 'php.h' file not found
#include <php.h>
         ^

Instalar command line development tools


sudo xcode-select --install

Una vez instalado ya podemos instalar el Xdebug


sudo pecl install xdebug

Una vez instalado tenemos que agregar la linea «zend_extension=xdebug.so» a nuestro php.ini, esto lo veremos  en el siguiente apartado, pero si agregamos esa linea como nos dicen nos dará error, la linea que tenemos que agregar para que nos funcione es la siguiente


zend_extension = "/usr/lib/php/extensions/no-debug-non-zts-20100525"

¿Donde esta el php.ini?

La respuesta a esta pregunta es sencilla, de serie no esta como tal, esta como php.ini.default, al cual tenemos que cambiarle el nombre a php.ini o crear un enlace simbólico a este, para que la configuración se nos aplique. Este fichero podemos encontrarlo en el directorio /etc, y es un fichero de solo lectura, así que si queremos modificar algo o bien le cambiamos los permisos a escritura mientras lo editamos, o si usamos el vi o vim, los cuales tengo que decir que para estas cosas de configuraciones yo los uso siempre, guardamos los cambios con wq!.

Cosas que agregar al php.ini

En el fichero no están definidos los path de búsqueda, así que buscar donde dice include_path y agregar, los directorios que queremos incluir. Por ejemplo, si tenemos instalado PEAR querremos incluir en el path el directorio de PEAR.


include_path = ".:/usr/lib/php/pear"

Si usais el vi/vim una manera muy sencilla de llegar hasta esta linea es hacer lo siguiente una vez abierto el fichero:

Pulsamos ESC a continuación escribimos /include_path y pulsamos ENTER, y así nos va hasta la linea donde pone include_path.

Si la linea empieza con ; quitarlo ya que sino continuara siendo un comentario.

En el ejemplo anterior de la extensión de Xdebug, una manera muy sencilla de agregar la linea, como esta se puede poner al final del fichero podemos hacer lo siguiente:


sudo echo zend_extension = "/usr/lib/php/extensions/no-debug-non-zts-20100525" >> /etc/php.ini

Comparando cadenas con strcmp – PHP Tips

Una de las maneras mas sencillas de comparar 2 cadenas con PHP es mediante strcmp.  La comparación entre las 2 cadenas se realiza de manera binaria y es sensible a mayúsculas y minúsculas.

Uso:

int strcmp(string1, string2);

Valores devueltos:

< 0 si string1 es menor que string2, >0 si string1 es mayor que string2 y 0 si son iguales.

Mucho cuidado con:

Una de las cosas con las que hay que tener cuidado a la hora de usar el strcmp es que cuando las 2 cadenas son iguales devuelve 0. Veamos el siguiente ejemplo:

$string1 = "Hola";

$string2 = "Hola";

$string3 = "Adios";

if (strcmp($string1, $string2)) {

echo "Las cadenas son iguales";

} else {

echo "Las cadenas no son iguales";

}

// Esto devolvera "Las cadenas no son iguales";

if (strcmp($string1, $string3)) {

echo "Las cadenas son iguales";

} else {

echo "Las cadenas no son iguales";

}

// Esto devolverá "Las cadenas son iguales";

En el ejemplo anterior al comparar dos cadenas iguales nos dice que no son iguales y si comparamos dos distintas nos dicen que son iguales, esto es debido a que strcmp devuelve un numero que es 0 cuando son iguales, el cual se interpreta dentro del if como falso, y cuando son distintas devuelve un numero que no es 0 el cual es interpretado como verdadero.

El uso adecuado dentro de un if del strcmp es:


$string1 = "Hola";

$string2 = "Hola";

$string3 = "Adios";

if (strcmp($string1, $string2) === 0) {

echo "Las cadenas son iguales";

} else {

echo "Las cadenas no son iguales";

}

// Ahora si devolvera que las cadenas son iguales

Mas información: http://us1.php.net/manual/es/function.strcmp.php

Conexion php mysql de forma prolija

Avatar de Juan Cambajcsis

Una de las cosas mas importantes en un proyecto web es la organización del código para permitir la escalabilidad del mismo. Les voy a enseñar una manera rápida y sencilla de «ordenar» el código en lo que a conexiones a bases de datos se refiere. Lo voy a hacer en php orientado a objetos, aunque de forma muy básica. Esta metodología o esquema es valida para cualquier lenguaje de programación.

Ver la entrada original 346 palabras más

IMPORTAR DATOS DE CSV A MYSQL

Avatar de Guillermo Valenzuela - Consultor SAP BPCMedievals Trucos

Lo primero que tenemos que hacer es ver los campos que tiene el CSV, y ver de qué tipo son, para crear estos campos en el SQL.

Ahora creamos la tabla en Mysql

Ahora en el Mysql lo que vamos a hacer es escribir lo siguiente:

Ver la entrada original

Devolver una cadena al revés con PHP strrev – PHP Tips

strrev es una función que nos permite generar una cadena invertida. A primera vista seguro que es una función para la cual muchos no le veríamos utilidad ninguna, pero quizá en alguna ocasión puede que nos venga bien conocerla.

Ejemplo:


$cadena = "Hola Mundo";

$invertida = strrev("Hola Mundo");

echo $invertida; // devuelve odnuM aloH

 

Funciones de Arrays: array_shift y array_unshift – PHP Tips

Hay muchas funciones con arrays que cuando las ves en el listado de funciones crees que no las vas a usar nunca, quizá en el momento no le ves mucha utilidad, pero llega un día en el cual tienes que echar mano de ellas, esto me ha sucedido con las funciones array_shift y array_unshift, que ha llegado un día en el cual, no solo una, sino las 2 me han sido de mucha utilidad.

Array_shift

Definición:

array_shift() Quita el primer valor del array y lo devuelve, acortando el array un elemento y corriendo el array hacia abajo. Todas la claves del array numéricas serán modificadas para que empieze contando desde cero mientras que los arrays con claves literales no serán modificados.

Uso:

mixed array_shift(array &$array);

Array_unshift

Definición:

array_unshift() añade los elementos pasados al inicio de array. Observe que la lista de elementos se añade como un todo, por lo que los elementos añadidos permanecen en el mismo orden. Todas las claves numéricas del array serán modificadas empezando a contar desde cero mientras que las claves literales no se tocan.

Uso:

int array_unshift ( array &$array , mixed $value1 [, mixed $… ] );

Ejemplo

Imaginemos que tenemos que obtener datos desde un fichero CSV procesarlo y escribir los datos en otro fichero CSV. Estos ficheros siempre llevan un encabezado el cual nos define el nombre de las columnas. Esta linea no nos será de mucha utilidad a la hora de procesar los datos contenidos en el fichero, pero es necesaria a la hora de escribir los datos en el otro fichero.


// $csv contiene los siguientes datos:
  $csv = array(
           array('nombre','apellido','email','usuario'),
           array('Yo','Mismo','mi@email.es',''),
           array('Tu','Tambien','tu@email.com','')
         );
$cabecera = array_shift($csv); // $cabecera almacenara la primera fila
foreach ($csv as &$var) { // proceso el foreach por referencia para modificar los datos del array
    $var['usuario'] = $var['nombre'].".".$var['apellido']; //concateno el nombre y apellidos
}
$array_unshift($csv, $cabecera); // pongo el array con los nombres de columna al principo

+ Info:
array_shift

array_unshift

Cambiar de OpenJDK a SunJDK en Ubuntu – Ubuntu Tips

Por defecto en Ubuntu como JDK de Java tenemos la OpenJDK la cual suele funcionar bastante bien,  pero si queremos habilitar la ‘Oficial’ o SunJDK tenemos que realizar los siguientes pasos:

  • Abrimos el Centro de Software Ubuntu
  • Seleccionamos en el menú Editar > Orígenes de Software
  • Seleccionamos la pestaña Otro software
  • Activamos las opciones de Socios de Canonical (las dos)

Después de hacer esto lo mas rapido es abrir una terminal y ejecutar los siguientes comandos

  • sudo apt-get update
  • sudo apt-get install sun-java6-jdk sun-java6-jre sun-java6-plugin
  • sudo update-alternatives -–config java

En el listado que nos saldrá al ejecutar el update-alternatives seleccionamos el SunJDK

 

Enhanced by Zemanta

Conocer la longitud y latitud en Google Maps

Si habéis trabajado o trabajáis, os pensáis trabajar con el API de Google Maps, esta web os va a ser de mucha utilidad http://universimmedia.pagesperso-orange.fr/geo/loc.htm ya que poniéndole la dirección del lugar que buscáis o moviendo el marcador os va a devolver la latitud y longitud, y nos va a venir muy bien para poder diseñar nuestros propios mapas con el API de Google Maps.

Web de la API v3 de Google Maps https://developers.google.com/maps/documentation/javascript/?hl=es

Como cambiar de MyISAM a INNODB – MySQL Tips

Antes en MySQL el mecanismo de almacenamiento predeterminado esta MyISAM,  hasta que cambio a INNODB. ¿Cual es mejor? ¿Debería migrar mis bases de datos a INNODB? a la primera pregunta diría que es bastante mejor INNODB y si deberíamos o no migrar las bases de datos, pues en casos será conveniente y en otros no, pero si creamos bases de datos desde cero es conveniente establecer el mecanismo como INNODB.

Como cambiar de MyISAM a INNODB


ALTER TABLE nombre_tabla ENGINE=INNODB;

No existe un comando que nos permita cambiar todas las tablas de una base de datos de MyISAM a INNODB, y para hacerlo tenemos que cambiar una a una.

Para facilitar las cosas siempre podemos crearnos un script que acceda a nuestra base de datos, tenga permisos ALTER y hacerlo todo de una vez.

He desarrollado un script en PHP que lo hace


<?php
/**
* Created by Ruben Lacasa Mas
* User: Ruben Lacasa Mas <ruben@rubenlacasa.es>
* Date: 18/10/13
* Time: 12:18
*/
$dbhost = 'hostname';
$dbname = 'dbname';
$dbuser = 'dbuser';
$dbpass = 'dbpassword';
$dsn = 'mysql:dbname='.$dbname.';host='.$dbhost;
try {
$dbh = new PDO($dsn, $dbuser, $dbpass);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
$sql = "SHOW TABLES";
$query = $dbh->prepare($sql);
$query->execute();
$tables = $query->fetchAll(PDO::FETCH_CLASS);
foreach ($tables as $table) {
$sqlAlter = "ALTER TABLE ".$table->Tables_in_dbname." ENGINE=INNODB;";
$dbh->exec($sqlAlter);
}

view raw

alterEngine.php

hosted with ❤ by GitHub

Mas información: http://dev.mysql.com/doc/refman/5.0/es/converting-tables-to-innodb.html http://es.wikipedia.org/wiki/InnoDB

The world’s most popular free OS | Ubuntu 13.10 “Saucy Salamander”

Ya esfa disponible la nueva versión de Ubuntu 13.10, toca actualizarse.
http://www.ubuntu.com