Actualmente estas viendo el weblog personal de Carlos Montalvo, un profesional en el desarrollo web con sede en la ciudad de Lima, Perú.

Suscribete a posts o comentarios

Sigueme en Twitter

Zend Server Community Edition (webserver)

02 Sep

Escrito por hace 17 horas y 28 mins | Sin Comentarios

Zend Server Community Edition (CE) es una versión del servidor de aplicaciones PHP Zend Server rápido y confiable que funciona en distribuciones de Linux, Windows y Mac OS X.

A diferencia de su versión de pago, Zend Server Community Edition (CE)es completamente gratuito, y usted puede usarlo en las fases de desarrollo, prueba y producción.

¿Que lo diferencia?

Al ser de Zend, este incluye:

  • Acelerador de código byte (Zend Optimizer+, incrementa el desempeño con cambios sin aplicación.)
  • Cacheo de Datos Zend ( Un set de funciones que permite a los desarrolladores cachear datos en una memoria compartida, o bien en un disco.)
  • Una distribución PHP 5.2/5.3 certificada .
  • Zend Framework.
  • Apache (o integración IIS).
  • MySQL (en Windows y Mac OS X).
  • Conectividad completa a todas las bases de datos comunes.
  • Conectividad de código Java.
  • Consola de administrador PHP basada en Web.

Instalación en Ubuntu 10.04

$ sudo -s

#Agregar el Repositorio de Zend
echo "deb http://repos.zend.com/zend-server/deb server non-free" > /etc/apt/sources.list.d/zend.list

#Agregar la clave del Repositorio
wget http://repos.zend.com/deb/zend.key -O- | sudo apt-key add -

#Actualizar la lista de Paquetes
apt-get update

#PHP 5.3
apt-get install zend-server-ce-php-5.3

#O PHP 5.2
apt-get install zend-server-ce-php-5.2

Manual Oficial de instalación completo

Categorizado :Desarrollo Web

Etiquetado :Zend,Ubuntu,php,MySQL

Paginación de datos

25 Aug

Escrito por hace 1 semana y 1 día | Sin Comentarios

¿Qué es el paginado?

El paginado de datos consiste en trocear una salida de datos muy larga en paquetes más pequeños y digeribles para el usuario. Hay ejemplos de paginados en la inmensa mayoría de aplicaciones, especialmente en las de Internet. Por ejemplo:

Paginado de Google:

Paginado de Flickr:

Paginado de Digg:

¿Por qué debo paginar?

  • Para el usuario es más sencillo ver 10 paquetes de 10 resultados que 100 de golpe.
  • Probablemente al usuario sólo le interesen los resultados más relevantes que son los que aparecen en la primera o segunda página.
  • Para la base de datos es más sencillo y rápido traer 10 resultados que 100.
  • Para el servidor HTTP es más sencillo y rápido servir 10 resultados que pesan 20Kb en lugar de 100 resultados que pesan 200Kb.

¿Cómo paginar datos?

Para paginar los datos necesitamos de antemano dos cosas: el tamaño de la pagina y el total de filas que tenemos de datos.

Contamos el total de filas:

SELECT COUNT(*) AS total FROM employees;

total
---------------
63

Mediante la instrucción SQL LIMIT n,m podemos Dividir en trozos los datos de salida y mostrar la pagina que nos interese. LIMIT acepta dos parámetros: el primero es el offset de la pagina y el segundo la cantidad de filas que devuelve.

Devolvemos 10 resultados de la página 3:

SELECT id,name FROM employees LIMIT 3,10;

id name
------------------------
13 José
22 Billy
34 Carlos
...

Necesitamos el total de filas para calcular cuántos paquetes de datos (paginas) necesitamos. En este caso tenemos un total de 63 filas paginadas de 10 en 10. Veamos un script PHP muy simple que nos devuelve las páginas:


$pagging = 10;

isset($_GET['page']) ? $current = (int)$_GET['page'] : $current = 1;

$q = mysql_query("SELECT COUNT(*) FROM employees;");

$row = mysql_fetch_assoc($q);

$total_pages = (int)ceil($row['total']/$pagging);

//header pagging

echo "Pagina $current de $total_pages ({$row['total']} resultados)nn";

//body pagging

$q = msql_query("SELECT id,name FROM employees LIMIT {$current-1},$pagging;");

while($row = mysql_fetch_assoc($q))

{

echo vsprintf("%dt%sn", array($row['id'], $row['name']));

}

//footer pagging
echo "«t";

for($i=0;$i < $total_pages;$i++)

{

if($i === ($current-1))

echo " [$i] ";

else

echo " $i ";

}

echo "t»";

Página 1 de 7 (63 resultados)

13 Pepe
22 Manolo
34 Jose
...

« [1] 2 3 4 5 6 7 »

Consideraciones para MySQL

Para calcular el paginado debemos utilizar obligatoriamente dos consultas como mínimo, si las consultas son complejas podemos tener un problema de rendimiento importante pero existen maneras de atajar el camino. Si la base de datos que utilizamos es MySQL existe un hack para devolver el resultado paginado y el total de filas en un solo paso.

Seleccionamos la página que nos interesa:

SELECT SQL_CALC_FOUND_ROWS id,name FROM employees LIMIT 0,10;

Miramos cuantas filas tiene en total:

SELECT FOUND_ROWS();

Siguen siendo dos consultas pero a efectos prácticos rinde como "una y media", en cualquier caso nunca será tan lento como hacerlo con las dos consultas anteriores.

SQL_CALC_FOUND_ROWS funciona a partir de la versión 4 de MySQL si no recuerdo mal.

Las instrucciones SQL_CALC_FOUND_ROWS y FOUND_ROWS() deben ir una detrás de otra, si hacemos consultas por en medio es muy probable que nos encontremos con resultados imprecisos.

Me consta que Oracle tiene una instrucción equivalente pero no sabría explicaros, no tengo suficiente experiencia con esa base de datos. PostgreSQL y SQLite sí que sé seguro que no pueden hacer uso de este hack, al menos en sus versiones actuales.

Nota: Para utilizar SQL_CALC_FOUND_ROWS y FOUND_ROWS() el valor de mysql.trace_mode debe ser off.

Si dudas de que este off al inicio de tu pagina php coloca.

ini_set("mysql.trace_mode", "0");

o en tu archivo .htaccess

[BASH]
php_value mysql.trace_mode "0"
[/BASH]

Categorizado :Desarrollo Web

Etiquetado :php,MySQL

Instalar Lamp + SVN + Trac en Ubuntu II

16 Apr

Escrito por hace 1 año y 4 meses | 3 Comentarios

En la entrada anterior pudimos instalar un Servidor Web ahora veremos la instalación y configuración de SVN (Subversion).

ulamp

Instalación de SVN

Abrimos la consola (Terminal) y escribimos lo siguiente.

sudo apt-get install subversion
sudo a2enmod dav
sudo /etc/init.d/apache2 restart
sudo apt-get install libapache2-svn
sudo /etc/init.d/apache2 restart

subversion: Con esto instalamos subversion.
a2enmod dav: Activamos el modulo de Apache usado para hacer que los repositorios estén disponible a otros a través de una red.
/etc/init.d/apache2 restart: Reiniciamos el servidor web, esto es necesario para poder ver los cambios realizados.
libapache2-svn: Contiene los módulos que capacitan a Apache funcionar como un servidor de Subversion además del módulo de identificación.

Creación de Repositorio

Primero creamos el directorio:

sudo mkdir /var/svn

A continuación indicarle al Subversion que es un repositorio:

sudo svnadmin create /var/svn/repos

A continuación, abrir el archivo /etc/apache2/httpd.conf y añada las siguientes líneas:

<location>
DAV svn
SVNPath /var/svn/repos
AuthType Basic
AuthName "Repositorio Subversion"
AuthUserFile /etc/subversion/passwd
Require valid-user
</location>

Asignamos permisos para que el servidor web pueda modificar el repositorio:

sudo chown -R www-data /var/svn

Añadimos un usuario le asignamos la contraseña y reiniciamos el servidor web.

sudo htpasswd -c /etc/subversion/passwd calinsoft
sudo /etc/init.d/apache2 restart

Añadimos nuestro proyecto al repositorio, en mi caso mi proyecto lo tengo en esta dirección /home/calinsoft/bobi-system

svn import -m "Mi Primer Proyecto" /home/calinsoft/bobi-system file:///var/svn/repos/bobi-system/trunk

Ahora nos dirigimos a http://localhost/repos y nos pedira el usuario y password que hayamos asignado.

Si necesita un Cliente SVN similar a TortoiseSVN les recomiendo NautilusSVN

Continuara...

Categorizado :Informatica

Etiquetado :php,Linux,Ubuntu,MySQL,SVN,Track

Instalar Lamp + SVN + Trac en Ubuntu I

13 Apr

Escrito por hace 1 año y 4 meses | 3 Comentarios

Bueno esto es un asunto que siempre quise hacer en guindos y nunca pude, cuando lo intente en Linux me salio a la primera.

ulamp

Instalando Lamp (Linux Apache2 MySQL5 Php5 )

Abrimos la consola (Terminal) y escribimos lo siguiente.

sudo apt-get install apache2
sudo apt-get install php5 libapache2-mod-php5 php5-gd php5-cli
sudo /etc/init.d/apache2 restart

apache2: Con esto instalamos apache en nuestro Linux. para ver si esta activo vamos al navegador y digitalos http://localhost.

it-works

php5: Con esto instalamos el modulo Php5 para Apache.
libapache2-mod-php5: Instala el modulo de apache para traducir el php.
php5-gd: Modulo de php para la manipulación de las imágenes.
php5-cli(Command Line Interpreter): Para ejecutar php por linea de comando.
/etc/init.d/apache2 restart: Reiniciamos el servidor web, esto es necesario para poder ver los cambios realizados.

sudo apt-get install mysql-server
sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin
sudo /etc/init.d/apache2 restart

mysql-server: Instalamos MySQL, el servidor de base de datos.
libapache2-mod-auth-mysql: Modulo de apache para el manejo de autentificaciones con mysql.
php5-mysql: Modulo de php para manejo de conexiones con MySQL.
phpmyadmin: Administrador de MySQL atravez del navegador ( http://localhost/phpmyadmin ).

PD:Nos pedirá un nombre de usuario y contraseña, esos datos son los que definimos al momento de instalar MySQL.
PD2: Si nos muestra "The requested URL /phpmyadmin/ was not found on this server" ejecuta sudo ln -s /usr/share/phpmyadmin/ /var/www/phpmyadmin esto creara un acceso directo el cual permitira ya ingresar a http://localhost/phpmyadmin

sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart

a2enmod rewrite: Activamos el Mod Rewrite.
En /var/www se publicara las paginas para tu servidor web donde puede probar el funcionamiento de Php, creando un archivo info.php y escribiendo adentro el cual de mostrara los parámetros de configuración y las variables de php y apache.
Continuara...

Categorizado :Informatica

Etiquetado :php,rewrite,Linux,Ubuntu,Apache2,MySQL

Jeff Lundberg ya hace mas de 2 años para hacer exacto termino de crear una singular guía en la cual nos demuestra paso a paso como montar un servidor web casero con apache soportando PHP, JSP, Ruby on Rails y MySQL bajo Windows XP SP 2. Una gran guía que cualquier desarrollador web no quisiera dejar de lado.

Scripts 09/04

04 Sep

Escrito por hace 1 año y 11 meses | 1 Comentario

  • ezSQL Database Class
    Como su nombre lo dice es una clase escrita en PHP que nos facilita el acceso a base de datos, podemos usarlo con MySQL, Oracle8, InterBase/FireBird, PostgreSQL, SQLite o MS-SQL
  • PHPMailer
    Es una clase escrita en PHP que facilita el envío de correo, añadiendo facilidad en el envío de correos con adjuntos, en formato HTML y con diferentes codificaciones, soporte para imágenes embebidas, headers personalizados y además funciona con múltiples servidores de correo.
  • Smarty
    Sistema de plantillas para PHP.
  • Magpie RSS
    MagpieRSS (alias Magpie) es un Clase analizador de RSS y Atom para PHP y es la base de varios agregadores y buscadores de blogs.
  • EZ Results Paging Class
    Es una clase para la paginación de datos, es muy configurable y muy fácil de usar.

Categorizado :Desarrollo Web

Etiquetado :php,MySQL,Scritps,RSS

Cheat Sheets (o chuletas) para desarrollo web

02 Sep

Escrito por hace 2 años y 23 horas | Sin Comentarios

Cheat Sheet (Hoja de referencia o "chuleta"), es una especie de mini guía para tener a mano las funciones, componentes o herramientas necesarias para un uso especifico. En la red se pueden encontrar una variedad de chuletas sobre Sistemas Operativos, Programas y lenguajes de programación.

Hoy les traigo mi colección de chuletas que mas utilizo a lo largo de estos años como desarrollador Web.

Ajax

Apache

Asp

Base de datos

Html

Php

Ruby On Rails

Seo

Subversión

Me han salvado la vida muchas veces, ya que recordar todas las funciones de un lenguaje más la tensión del trabajo diario es algo imposible.

Si conocen alguna más compártanla ;)

SQL Buddy, alternativa a phpMyAdmin

27 Aug

Escrito por hace 2 años y 6 días | 1 Comentario

SQL Buddy es una aplicación en php y Ajax, que nos permitirá prescindir de phpMyAdmin; esta alternativa multi-lenguaje que nos ofrece una interfase más limpia y muy cómoda a la hora de administrar nuestras base de datos.

Requerimientos

PHP 4.3+
MySQL 4+

Navegadores soportados

Firefox
Safari
Opera 9.5
Internet Explorer 7

No necesita instalación, solo descomprimimos el paquete, subimos a nuestro servidor Web y nos dirigimos en nuestro navegador a la ruta donde subimos la aplicación /path/sqlbuddy/.

Una vez en la interfase solo tendremos que definir los datos de conexion del servidor de base de datos.

Y ya estamos adentro, las opciones que nos brinda son las más comunes de cualquier administrador de base de datos.

(Sigue leyendo »)

Categorizado :Desarrollo Web

Etiquetado :php,MySQL,phpMyAdmin

« 1 »