en: Programacion
CodeIgniter es un genial framework, pensado para ofrecer un alto rendimiento, claro está con una óptima configuración.
Como ya hemos comentado en otras ocasiones CodeIgniter cumple perfectamente el fin de cualquier framework, una estructura definida que de soporte a un proyecto web y ayude a que este proyecto sea organizado y desarrollado, veamos los puntos clave a tener en cuenta a la hora de optimizar la configuración de CodeIgniter.
Ver Ejemplo (Benchmark para CodeIgniter)
Seguramente hayas oido e incluso utilizado algún MVC (Modelo Vista Controlador), de lo que se trata en este tipo de modelos es de repetirse lo menos posible y hacer una separación entre la lógica de la aplicación y su presentación:
Teniendo estos tres puntos claros podemos pasar a ver el diagrama de flujo de CodeIgniter.
Sparks es una librería que nos permite solventar dos deficiencias con las que nos podemos encontrar a la hora de afrontar un proyecto basado en CodeIgniter.
1. Mejora la cache que únicamente permite cachear páginas completas.
2. Podremos incluir “vistas” dentro de “vistas”.
Para entender este supuesto tenemos que imaginar que necesitamos que la página tenga un módulo de autentificación, al devolver sólo HTMl sería imposible hacer convivir la cache y el módulo de autentificación, con esta librería solucionamos el problema pero el diagrama de flujo cambia un poco.
en: Programacion
Probablemente no te encuentres con este problema pero si lo encuentras esta es una buena solución.
A menudo nos encontramos con sitios con un gran número de archivos para descargar, estos sitios limitan el número de descargas permitidas a sus visitantes.
En un principio no suele haber problemas si no limitas las descargas, pero si el visitante utiliza un “gestor de descargas” en los que puedes introducir un número de conexiones por archivo descargado, veras muy limitados los recursos de tu servidor.
Si tienes un control total de tu servidor puedes limitar de manera sencilla el número de descargas permitidas gracias al módulo mod_limitipconn, pero si tu sitio esta en un “hosting compartido” tendrás que tirar de ingenio para ponerle solución.
en: Internet|Programacion
Yahoo Developer Network ofrece a los desarrolladores una variedad de características, como acceso a las API, ejemplos de código fuente, grupos de discusión, listas de correo y secciones es las que se pueden previsualizar herramientas creadas por Yahoo.
Esta serie de herramientas pretende dar solución a los problemas de diseño e interfaz que aparecen en cualquier portal web: autocompletado, pestañas de navegación, Drag & Drop, paginación y calificación.
Se pueden encontrar ejemplos en JavaScript y PHP para infinidad de aplicaciones, desde elementos de interface de usuario hasta cómo parsear las respuestas XML de los Yahoo! Web Services. Es una genial reocopilación de recursos de programación para poder construir nuestro propio portal con numerosas de funcionalidad Ajax para implementar.
en: Programacion
Estos tests se han realizado en un VIA Nehemiah 999 MHz con 480 Mb RAM, Windows XP Professional SP2 y PHP 5.2.1. Los scripts necesarios para realizar estas pruebas pueden ser descargados.
En primer lugar veamos las funciones sizeof y count. Ambas pueden ser utilizadas para contar el número de elementos de un array.
sizeof: 3.75928902626 microsegundos
count: 3.33035206795 microsegundos
Tiempo ahorrado: 0.428936958313 microsegundos; 12.8796280262%
La función “count” es un 12% más rápida y ambas tardan entre 3 y 4 microsegundos en contar los elementos de un array con 100.000 elementos. No sólo es más rápida en la ejecución sino que incluso es más sencilla de recordar y más corta a la hora de escribirla en código.
Vamos a ver cuál de estas funciones valida mejor.
is_int vs is_integer
is_int: 3.11394786835 microsegundos
is_integer: 3.42630600929 microsegundos
Tiempo ahorrado: 0.312358140945 microsegundos; 9.11646946006%
La diferencia es pequeña un 9% y ambas tardan en torno a los 3 microsegundos en validar una variable, de nuevo vuelve a ser la función de nombre más corto la más eficiente.
en: Programacion
Ya han pasado algunas semanas desde que descubrí este genial framework, pensado para ofrecer un alto rendimiento, además es bastante ligero y fácilmente configurable.
CodeIgniter Framework para PHP
Hay muchos frameworks para PHP y este podría pasar por una alternativa mas, pero si la aplicación que desarrollas requiere de una plataforma que no marque mucho la aplicación y que necesite un alto rendimiento creo que CodeIgniter debería ser tu elección.
Cumple perfectamente el fin de cualquier framework.. una estructura definida que de soporte a un proyecto web y ayude a que este proyecto sea organizado y desarrollado.
Tras esta breve descripción os dejo un ejemplo de como podríamos crear nuestro feed RSS con las herramientas que ofrece CodeIgniter…
En primer lugar tenenmos que crear un controlador con el nombre “feed”, recuerda que un controlador es simplemente un archivo que es llamado cada vez que la URL a la que va asociado es invocada.
<?php class Feed extends Controller { function Feed() { parent::Controller(); $this->load->model('posts_model', '', TRUE); $this->load->helper('xml'); } function index() { $data['encoding'] = 'utf-8'; $data['feed_name'] = 'TuFuncion.com'; $data['feed_url'] = 'http://www.tufuncion.com'; $data['page_description'] = 'Descripción de la página'; $data['page_language'] = 'es-es'; $data['creator_email'] = 'Manuel Gutiérrez Heredia'; $data['posts'] = $this->posts_model->getRecentPosts(); header("Content-Type: application/rss+xml"); $this->load->view('feed/rss', $data); } } ?>
en: Programacion
El software de reconocicmiento óptico de caracteres es habitualmente conocido como OCR (Optical character recognition) y es capar de extraer / reconocer caracteres o formas dentro de una imagen.
Dentro de este tipo de software tendríamos también los OMR (optical mark recognition) que reconocerían una marca dentro de una imagen por lo que en la vida real podríamos aplicarlo a un corrector automático de exámenes tipo test o también el mecanismo que detecta las casillas marcadas en una quiniela.
phpOCR es una librería que nos permite reconocer el texto que esta impreso en una imagen, como hemos dicho nos valemos del reconocimiento óptico de caracteres (Optical Character Recognition).
Que nadie se vaya a pensar que podrá hacer un gran número de cosas con esta libreria… ya que es bastante básica, ya que sólo reconoce texto en imágenes de un solo color (preferiblemente blanco sobre negro) y hay que entrenarla previamente para que alcance una precisión relevante pero no por esto deja de ser útil e interesante.
Si nos descargamos la clase encontraremos 25 archivos y una carpeta, la gran mayoria de los archivos son imágenes necesarias para los ejemplos (todas monocromo) y la carpeta (“storage”) es donde se van almacenando los conocimientos del programa… por ejemplo nada más descargarnolos reconocerá las letras: z, m, b, w y el símbolo +.
Descarga el ejemplo que se detalla a continuación
El motivo de que contenga más imágenes de ejemplo que el número de letras citado es que hay letras duplicadas en diferentes tamaños para poder apreciar el verdadero aprendizaje del caracter.
example.php -> Ejemplo de como reconocer y almacenar nuevas letras o formas
example1.php -> Ejemplo de detección de formas o letras, devolverá si es o no es conocidad esa letra o forma dependiendo de si tenía previamente memorizada en la carpeta “storage” alguna letra o forma parecida.
Tras descargarnos la clase y ejecutar estos dos ejemplos básicos podemos proceder a “memorizar una nueva forma / letra”.
Lo que hacemos en este primer ejemplo es almacenar la información de los caracteres citados anteriormente.
<?php include_once("config.php"); include_once("OCR.class.php"); $char = new OCR(); $char->Learn("W"); $char->saveResult(); echo 'Almacenar información de "W"<br>'; $char->Learn("z"); $char->saveResult(); echo 'Almacenar información de "z"<br>'; $char->Learn("M"); $char->saveResult(); echo 'Almacenar información de "M"<br>'; $char->Learn("B"); $char->saveResult(); echo 'Almacenar información de "B"<br>'; ?>
Si quisiéramos ampliar un poco el ejemplo y reconocer una nueva forma o caracter deberemos añadir unas líneas a este ejemplo para que almacene en la carpeta “storage” la información del nuevo elemento.
Por ejemplo podríamos hacer una forma compuesta por las letras “TF” y llamar a la forma tufunción.
Tendremos que crearnos una imagen monocroma con nuestra forma del tipo que se muestra en la imagen inferior.
$char->LearnFromImage("tf.png","tufuncion"); $char->saveResult(); echo 'Almacenar información de "tufuncion"<br/><img src="tf.png"/>';
La ejecución de este nuevo ejemplo debería quedarnos muy parecida a la siguiente imagen: