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

| |

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.

Comunicación con los puertos serie en PHP

Hace tiempo nos preguntaban como leer de los puertos serie desde PHP, y ahora acabo de encontrar eso mismo y además cómo hacerlo para Windows y para Linux.
Para Windows se necesita la extensión PHP Serial Extension, la cual una vez instalada nos permite manejar los puertos y las comunicaciones de los puertos serie. Aunque su uso se sale de lo normal, pero seguro que hay algún caso en el que pueda ser útil, como controlar cámaras, video, modems y terminales GSM, lectores de códigos de barras o algún otro dispositivo conectado al puerto serie.
En el caso de Linux, es necesaria la clase PHP Serial Class, la cual toma la ruta del dispositivo y comprueba qué es válido antes de abrir la conexión, y una vez abierta, envía datos al puerto serie. Además puede cambiar los parámetros de conexión para el dispositivo conectado.
Vía / VT’s Tech Blog

Captura pantallas con PHP y GD

El tema de los screenshots de páginas web es algo que ahora está bastante de moda. Existen servicios que nos muestran miniaturas de páginas web a las que enlazamos (algo que a mucha gente desespera), pero en algunos casos somos nosotros quienes queremos obtener esas capturas.
En este caso se van a realizar mediante PHP y la librería GD, aunque para ello haya que modificar la librería GD por esta otra, la cual añade las funciones imagegrabscreen y imagegrabwindow, permitiendo grabar pantallas completas y ventanas (usando su manejador) respectivamente.
Los ejemplos que nos muestran funcionan bajo Windows y ejecutando PHP en modo línea de comandos, nos abre una ventana de IE y captura su contenido. ¿Pegas? no tengo claro si se puede redimensionar la ventana y nos muestra también el IE, no el contenido HTML únicamente.
Screen capture with PHP and GD
Vía / Planet PHP

Generar documentos Excel con CakePHP

CakePHP es uno de los mejores frameworks de PHP que nos ofrece muchas posibilidades en nuestros desarrollos. En este caso se trata de crear documentos Excel, algo muy frecuente en las aplicaciones de gestión de empresas.
En el artículo ofrecido por la gente de CakePHP, nos indican paso a paso qué pasos debemos seguir para poder exportar nuestros contenidos a hojas Excel. Para ello es necesario tener instalado las librerías que aporta PEAR para la generación de documentos Excel.
Mi experiencia desarrollando una librería para generar Excel (en Java) me obliga a decir dice que cualquier ayuda es buena, ya que la diferencia entre versiones de Excel es significativa.
No olvidemos a Drake si queremos usar esta librería en nuestro Drupal.
Generate Excel spreadsheets from your database
Vía / Prográmame.net

Corrector ortográfico con PHP

Algo que nos sorprendió a muchos fue que Google nos corrigiera los errores ortográficos que introducíamos cuando realizábamos una búsqueda. Ahora tan de moda las aplicaciones web, sería algo muy interesante a incluir en los buscadores.
El artículo que os presento a continuación explica paso a paso todo lo que hay que hacer para usar la librería pspell, las cuales nos permiten: usar diferentes lenguajes, saber si una palabra es correcta para un lenguaje, sugerir posibles alternativas para la palabra incorrecta y facilitar la posibilidad de añadir nuevas palabras.
Lo mejor de todo es que su implementación es sencilla y que con pocas llamadas podemos saber si una palabra es correcta, sugerencias y demás. Me gustaría hacer pruebas para ver el rendimiento, ya que Google tiene una arquitectura impresionante, pero quizás en nuestras aplicaciones puede ser algo costoso. También ver cómo poder pasar para leer el diccionario de la base de datos nuestra y no de un fichero.
Spell checking in PHP

|

PhpSecInfo: información sobre la seguridad de tu PHP

PhpSecInfo es un equivalente a phpinfo() que nos muestra información similar a este pero indicando los puntos negros en nuestra instalación, mediante una serie de test realizados miediante una única llamada en el entorno de PHP, identifica posibles problemas de seguridad y ofrece soluciones.
phpsecinfo.png
Eso sí, hay que tener en cuenta que PhpSecInfo no sustituye métodos de programación para evitar problemas de seguridad y no hace comprobaciones de nuestro código PHP, tan solo detecta posibles fallos de seguridad.
PhpSecInfo