links for 2007-04-24

| |

Serendipity: otro sistema de blogs

serendipity.pngSerendipity es un CMS basado en PHP que nos permite llevar nuestro blog o nuestra web completa. Ofrece flexibilidad, fácil de ampliar y con un framework sencillo de usar.

Aquellos usuarios casuales verán en la arquitectura de plugins un modo sencillo de modificar el aspecto y las características. Existe un repertorio de más de 120 plugins fáciles de instalar, sin necesidad de editar código.

Actualmente existen 40 plantillas para descargar, realizadas mediante el sistema de plantillas Smarty, para que aquellos usuarios expertos puedan modificarlas.

Las características que nos ofrece son las siguientes:

  • Editor WYSIWYG y HTML
  • Múltiples autores y sistema de usuarios/permisos configurable
  • Comentarios, categorías y entradas asignables a varias categorías
  • Internacionalización
  • Repositorio de plugins y plantillas para fácil instalación
  • Interesantes plugins: sub-blogs basados en categorías, podcasting, RSS, páginas estáticas
  • Anti-spam
  • Actualización de versión mediante un único click
  • Incrustable en otras páginas web
  • Bloggin remoto mediante XML-RPC
  • Soporte para SQLite, PostgreSQL, MySQL y MySQLi
  • Instalaciones compartidas pueden crear multiples blogs desde un única base
  • Importación de otros blogs (WordPress, Textpattern, Moveable Type, bblog, …)

Serendipity

Vía / Walhez

Roadsend Compiler: compilador de PHP

roadsend.pngRoadsend Compiler es un compilador opensource nativo de PHP. Mediante este compilador podremos ejecutar código PHP sin necesidad de un intérprete.
Siendo inicialmente un software comercial, está realizado por una empresa experta en PHP. Actualmente el compilador está disponible para Linux, Windows y FreeBSD, aunque por ejemplo los binarios de Windows los tienes que compilar tú mismo por ahora siguiendo estas instrucciones.
Actualmente solo compila código PHP4, pero de todas formas ofrece buenas posibilidades: compila todo el árbol de código en un único ejecutable, el código compilable no es reversible, permite crear aplicaciones online para Apache y IIS, crear aplicaciones GUI y muchas otras cosas.
RoadSend PHP Compiler
Vía / VT’s Tech Blog

|

jQPie: interfaz PHP para jQuery

jQPie es una interfaz ligera en PHP para jQuery, permitiendo muchos modos de interactuación.
A parte de ser ligero, maneja XML, HTML y JSON y tiene una API sencilla. Incluye un plugin para autocompletado, y está pensado para ofrecer otros plugins usar o como ejemplos.
Con jQPie podemos obtener y procesar datos de forma sencilla desde PHP, incluir código HTML generado mediante PHP en elementos de la página, llamar a funciones PHP directamente desde las páginas y más funcionalidades interesantes.
jQPie
Vía / PHPDeveloper.org

Esquinas redondeadas mediante Canvas

El tema de las esquinas redondeadas es algo bastante frecuente en los sitios de desarrollo web, pero antes no había visto ninguno que lo hiciera usando Canvas.
corner.png
El script del que hablamos añade varios efectos a nuestras imágenes de forma no obtrusiva, usando para ello canvas. Navegadores como Mozilla Firefox 1.5+, Opera 9+ y Safari mostrarán los efectos indicados, mientras que navegadores antiguos y el Internet Explorer no mostrarán nada.
Para incluir los efectos se debe modificar el class y añadir diversos tipos para cada efecto y así poder hacer combinaciones. Entre los efectos nos encontramos: esquinas redondeadas, efecto shading (con transparencia configurable) y sombras.
Corner.js
Vía / dzone

links for 2007-04-20

| |

Laboratorio: área clientes mediante Apache y PHP

Viendo diferentes empresas con página corporativa, he visto que suele ser común el área para los clientes. En este mundo es normal que el tema de los pagos suela dar complicaciones, por eso yo creo que es preferible subir lo que se va desarrollando para el cliente en un servidor propio que en el servidor del cliente, ya que hasta que no pague en su totalidad, no dispone de ello.

Si te encuentras en esta situación, quizás te sea útil este truco para habilitar una área privada protegida para los clientes, la cual redireccionará al contenido del cliente, ya sea el propio trabajo en sí o una aplicación en particular.

Para el caso del ejemplo, yo lo he hecho para unas páginas web estáticas, y luego que cada cual, si le interesa, que lo adapte a su gusto.

El funcionamiento es el siguiente: el usuario accede a una ruta con acceso restringido a usuarios válidos mediante Apache. También mediante Apache se le redirigirá a una página propia, en este caso las páginas HTML que están guardadas en un directorio específico para clientes (fuera del webroot) y en un directorio específico para ese cliente en concreto.

Supongamos que tenemos el directorio webroot siguiente home/www y el área web de clientes está en el directorio home/www/clientes y el espacio físico específico de clientes está en home/www/_clientes. Lo primero que debemos hacer es añadir el siguiente .htaccess en el directorio clientes.

AuthType Basic
AuthName "Acceso a clientes"
AuthUserFile [path]\passwords.conf
Require valid-user
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/clientes(.*)$
RewriteRule ^(.*)$ /_clientes/index.php?url=$1  [L,QSA]

Lo que hace esta configuración es añadir autenticación al directorio clientes y redireccionar al script index.php del directorio _clientes, pasándole como parámetro la url a la que se accede.

El script index.php para este ejemplo, lo que he hecho ha sido incrustar el fichero que se quiere directamente, teniendo en cuenta el Content-Type y que si no se añade ninguna url después de clientes se tome por defecto el fichero index.html.

<?php
// Devuelve el content-type
function content_type($url) {
$ext = substr($url, strrpos($url, '.')+1);
if ($ext == 'swf') {
header("Content-type: application/octet-stream");
} else if ($ext == 'png') {
header("Content-type: image/png");
} else if ($ext == 'jpg') {
header("Content-type: image/jpeg");
} else if ($ext == 'gif') {
header("Content-type: image/gif");
} else if ($ext == 'js') {
header("Content-type: text/javascript");
} else if ($ext == 'css') {
header("Content-type: text/css");
} else if ($ext == 'html') {
header("Content-type: text/html");
} else {
header("Content-type: text/plain");
}
}
// Obtengo el usuario y la ruta a la que quiere acceder
$user = $_SERVER['REMOTE_USER'];
$url = substr($_SERVER['REQUEST_URI'], strlen("/clientes"));
$url = $url == '/'? '/index.html' : $url;
// Añado el content-type
content_type($url);
// Inserto el fichero
if (file_exists('./'.$user.$url)) {
include './'.$user.$url;
}
?>

Por supuesto a este truco le faltan cosas, como seguridad en el directorio _clientes, a parte de que hay que tener cuidado con los paths relativos o absolutos, y alguna cosilla más, pero creo que como idea desde la que partir no está mal.

| |

API para Feeds de Google

Google ha sacado un API para obtener feeds mediante Javascript. Podremos usar esta librería para obtener los feeds de cualquier dominio de una forma más sencilla mediante Ajax.
El API devuelve los resultados en dos formatos: JSON y XML. Por defecto usa JSON, devolviendo los datos del RSS de forma abreviada y con un formato específico.
También existe la posibilidad de que te devuelva los resultados en un formato mezcla de JSON y XML, devuelve el formato JSON y la modo de acceso XML.
Una librería que nos puede ser muy útil.
Announcing the Google AJAX Feed API
Vía / Ajaxian