Ha salido la nueva versión de PHP, la 5.2.5, estando centrada esta versión en mejorar la estabilidad con cerca de 60 errores solucionados, algunos de ellos relativos a la seguridad, por lo que es necesario actualizar nuestras versiones de PHP. PHP 5.2.5
PHP viene por defecto configurado para desarrollo, pero en producción hay opciones que no son recomendables sobre todo por temas de seguridad. Cambiad en el php.ini las siguientes opciones para mejorar la seguridad en tu entorno de producción:
Desactiva el acceso a ficheros remotos: las funciones fopen, file_get_contents, y include permiten el acceso a ficheros remotos (http://host/..), lo cual puede dar problema en temas de seguridad. Si necesitas acceder a ficheros remotos puedes usar fsockopen o funciones de CURL.
allow_url_fopen = Off
Register globals: aunque ahora viene por defecto desactivado, en versiones anteriores de PHP, los parámetros de entrada se registraban como variables globales.
Modo seguro: PHP dispone de un modo seguro, en el que Apache solo puede acceder a ficheros de los que sea dueño, aunque nos puede dar problemas sobre todo cuando se trabaja en grupo, la tranquilidad que nos aporta pesa más que este inconveniente. Para ello usaremos una propiedad para que solo ejecute scripts que le pertenecen y otra permite acceso a los ficheros que pertenecen al grupo de Apache aun cual sea el dueño.
safe_mode = Off
safe_mode_gid = On
Acceso permitido a ficheros binarios: el modo seguro tampoco permite ejecutar ficheros binarios, pero se le puede indicar en que ruta si se pueden ejecutar.
safe_mode_exec_dir = /www/ejecutables
Acceso a variables de entorno: tampoco está permitido acceder a variables de entorno en el modo seguro, pero se puede inluir una lista (separada por comas) de prefijos que se permiten para estas variables.
max_execution_time = 30 ; Tiempo máximo de ejecución
max_input_time = 60 ; Tiempo máximo que trata la entrada
memory_limit = 16M ; Memoria máxima para la ejecución de un script
upload_max_filesize = 2M ; Tamaño máximo de un fichero para subir
post_max_size = 8M ; Tamaño máximo de un POST
Control de acceso a ficheros mediante Apache: aunque en este caso se debe configurar Apache, tampoco biene mal el contarlo. Se trata de evitar que Apache acceda a ficheros importantes, por ejemplo ficheros .inc, .sql.
<FilesMatch "\.(inc|.*sql)$">
Order allow,deny
Deny from all
</FilesMatch>
Parece que la nueva versión de PHP (5.3) va a mejorar el rendimiento considerablemente en muchas de nuestras aplicaciones. En algunos casos hasta en un 30%:
Serendipity 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, …)
Un buen artÃculo que nos enseña cómo instalar PHP 5.2 en nuestro servidor, cuando el hosting no nos lo ofrece. En este caso se trata de DreamHost, pero como bien dice el autor, se puede usar para otros como Site5 Hositng o TextDrive.
En este caso, el autor necesita de PHP 5.2 por necesidades con la librerÃa GD y Freetype y aunque el hosting ofrece un script que deberÃa realizarnos la instalación, no funciona correctamente.
El script que nos ofrece nos descargará los archivos necesarios mediante FTP y HTTP, descomprimirá lo obtenido y lo instalará.
Espero que sea de utilidad para aquellos que se encuentren con el mismo problema. Install Your Own PHP 5 on Your Web Host
WordPress 3.4 ha añadido la opción de theme customizer, la cual permite modificar las opciones del theme y darle el aspecto que deseas de forma muy visual y sencilla. En estos momentos, por lo que he podido ver, solo permite modificar el background y poco más. Pero viendo y pegándome con el código he podido ver cómo añadir mis propias opciones.
El ejemplo que voy a poner permite elegir entre tres tipos de fuente de Google Webfonts y modificar las css para usar ese tipo de letra.
Aviso que el código quizás no sea el mejor, pero realizar ingeniería inversa no siempre es fácil y tampoco he visto otro sitio donde lo hagan.
Lo primero que se tiene que hacer es crear las opciones en el panel de customizer. Para ello hay que crear una sección (section “Fuente”) y asignarle unas opciones (settings) y añadirle unos controles (control) a las opciones. Existen controles por defecto, el de elegir el color está muy bien, pero en mi caso me he creado uno personalizado que muestra un control radio modificado para que el label del radio muestre la tipo de letra en cuestión.
add_action('customize_register', 'mi_theme_customizer', 1);
function mi_theme_customizer() {
global $customize;
if($customize) {
// La seccion
$customize->add_section('mi_font', array(
'title'=>'Fuente'
) );
// La opcion
$customize->add_setting( 'mi_font_family', array(
'control' => 'color', // esto ni idea de para que sirve, realmente no es un control tipo color y funciona
'type' => 'option'
) );
$customize->add_control( 'mi_font_family', array(
'settings' => 'mi_font_family',
'section' => 'mi_font',
'type' => 'font_radio',
'choices' => array('Trocchi', 'Great Vibes', 'Bad Script') // las fuentes de google
) );
}
}
Una vez creado los controles, añado el código que dibuja (render) mi control personalizado, primero añado los css para que dibuje las fuentes de Google y luego dibujo el control en sí. He usado Javascript en vez de PHP porque parece ser que el código no está del todo completo, y no hay un filtro para crear tu propio control, por lo que tengo que añadirlo mediante jQuery a un elemento para que el Javascript del customizer tenga en cuenta cuando selecciono una opción y refresque el preview del theme.
// Añado los css de google webfonts mediante javascript para tener luego el nombre de las fuentes y usarlo para crear los radio buttons
add_action('customize_controls_print_scripts', 'mi_customize_scripts');
function mi_customize_scripts() {
$fonts = array('Trocchi', 'Great Vibes', 'Bad Script');
?>
type == 'font_radio') {
if ( empty( $control->choices ) )
return;
$name = '_customize-font-radio-' . $control->id;
?>
label ); ?>
Y ya por último solo falta usar la opción guardada para mostrarla en el theme
add_action('wp_head', 'mi_custom_styles');
function mi_custom_styles() {
$option = get_option('mi_font_family');
// El customizer modifica este filtro para refrescar el preview
$option = apply_filters('option_mi_font_family', $option);
if ($option) {
echo "";
echo '';
}
}
Y esto es todo, no sé si hay una forma mejor de hacerlo, estoy abierto a sugerencias.
Voy a intentar responder de una forma un poco más completa la pregunta que nos hacía David sobre la forma de comparar dos imágenes. Aunque este tema es muy intenso y en algunos casos bastante complicado, vamos a intentar simplificarlo en dos casos: imágenes de distinto tamaño y distinto contenido en la imagen.
Si las imágenes son de distinto tamaño diremos que son distintas imágenes, no nos pararemos a ver el contenido. Si tienen el mismo tamaño, buscaremos que parte de la imagen es la que ha cambiado y la señalaremos con un rectángulo rojo.