|

Recursos para crear paginación

A la hora de crear paginación en los resultados que devuelve una búsqueda en nuestra aplicación hay que tener varias cosas en cuenta. Sobre todo cuando queremos mostrar los resultados totales. Para saber cuántos resultados se han obtenido, debemos hacer una consulta del tipo:

select count(1) from tabla

Esto suele ser lo más eficiente, ya que la otra opción es hacer la consulta sin más y luego contar el número de registros (a mí me parece una locura, pero lo he visto en varios sitios).

Si ya hemos calculado el número de registros, ahora podemos obtener únicamente un rango de registros ya sea con LIMIT en MySQL o haciendo uso del ROWNUM en Oracle.

¿Presenta algún problema calcular inicialmente el número de registros?, pues sí, si la consulta es pesada, por ejemplo por su complejidad, se deberá realizar dos veces, la primera para calcular el número de registros y la segunda para obtener los datos, por lo que perdemos un tiempo precioso.

Lo lógico sería hacer un estudio de cuántos registros se pueden obtener de la consulta, si son relativamente pocos, quizás compense obtener todos y no tener que hacer dos consultas. También puede ser interesante conocer hasta que página suele acceder el usuario, no creo que más de 5 a 10 páginas, si el usuario llega a ese número de páginas consultadas y no encuentra nada, o lo da por imposible o refina la búsqueda.

Lo mejor sería que no aparecieran el número de registros totales encontrados, aunque esto a veces no es posible ya que las especificaciones del cliente lo obligan, entre otras cosas porque ese dato puede llegar a dar cierto prestigio sobre la calidad del buscador.

Tampoco olvidar que las bases de datos no recuperan todos los registros de una sola vez, sino que los va recuperando según se van solicitando, al menos así lo hacen bases de datos como Oracle.

De todas formas, para aquellos que necesiten realizar paginación en sus aplicaciones web, os pasamos una serie de tutoriales que esperamos sean de utilidad:

links for 2007-07-04

Proyectos open source alternativas a MySpace

Os presentamos una lista de proyectos open source para crear vuestras propias alternativas a MySpace.

  • Elgg: creado inicialmente para comunidades educativas, permite crear comunidades, blogs y sistema de compartición de archivos.
  • People Aggregator: a parte de ser un sistema de alojamiento dónde crear tu propia red social, también puedes descargártelo, instalarlo en tu servidor y configurarlo según tus necesidades.
  • Open PNE: uno de los proyectos más definidos, pero con el problema de ser un proyecto japonés con una no muy buena traducción al inglés.
  • Joomla Community Builder: no se trata de un proyecto para la creación de redes sociales, sino una extensión para Joomla que va en esa dirección, con una curva de aprendizaje sencilla.
  • PHPizabi: otra herramienta para crear comunidades con más de 90.000 descargas, nos permite crear redes sociales y lugares para reunirse usuarios.
  • AroundMe: clon de MySpace que permite crear blogs, wikis y comunidades.

5 Open Source Alternatives to Create Your Own MySpace

Vía / dzone

phpTube: sube y descarga vídeos desde Youtube

phpTube es una librería que nos permitirá subir nuestros vides a Youtube o descargarlos. Para descargarlos deberemos indicar el id del vídeo en Youtube y la ruta donde querremos guardarlo. Para subir un vídeo a Youtube, habrá que indicar el nombre del fichero que contiene el vídeo, el título, la descripción, las etiquetas, la categoría, el idioma y el modo de publicación (público o para amigos).

Unos ejemplos de uso serían los siguientes:

<?php
include_once ("phptube.php");
$tube = new PHPTube ();
$tube->download("clOCFKak1_c","video.flv");
?>
<?php
include_once ("phptube.php");
$tube = new PHPTube ();
$tube = new PHPTube ("usuario","contraseña");
$id = $tube->upload ("/path/video.avi","Video", "Demo video", "…", 10, "ES");
?>

phpTube

Zend Framework 1.0.0

zendframework.pngDespués de un año que anunciábamos sobre la aparición de Zend Framework, acaban de anunciar la salida de la versión 1.0 definitiva del framework.
Antes de esta versión oficial, ha habido muchas contribuciones de código, tests, documentación, traducciones (hasta 16) y mucho más, haciendo este framework más completo. Siendo uno de sus mayores logros la simplicidad de uso, no siendo tan complicado como otros frameworks o entornos, teniendo siempre en cuenta la posibles extensiones y la flexibilidad.
Zend Framework 1.0
Vía / Andi Gutmans’ Weblog

Los 500 y Pownce

No se trata de una película, sino del título del error que devuelve Pownce cada vez que quieres hacer algo.
Casi emocionado por obtener una invitación para probar el novedoso Pownce del que todo el mundo habla (gracias Chris por la invitación), veo que cada vez que quiero hacer algo, lo que sea, me sale un Mon Calamari que te dice que hay un bug y que seas majete y les avises (espero que la gente no lo haga, porque les saturarán el correo). ¿No será todo Pownce un único bug?
pownce1.png
Está bien que seas el creador de Digg y que lo que hagas tenga mucha repercusión, pero, por favor, antes de que todo el mundo vea que la aplicación no funciona y hagas un poco el ridículo, dale un poco al testing y a las pruebas de estrés.
Esto no es web 2.0, es web ½

GeSHI: resalta el código en tu web

GeSHI (Generic Syntax Highlighter) es un script PHP que resalta el código que indiquemos realizado en un total de más de 50 lenguajes de programación, entre los que se encuentran PHP, Java, HTML, CSS, C#, Javascript y SQL.
Inicialmente desarrollado para el sistema de foros phpBB, finalmente ha pasado a ser un proyecto independiente. Entre sus características destaca la cantidad de lenguajes que admite, la facilidad de añadir un lenguaje nuevo y la facilidad para modificar la salida del script.
geshi.png
Lo que más me gusta de este script es que enlaza con las URLs de las funciones de los lenguajes.
GeSHI

links for 2007-06-30

Los buenos programadores son más productivos

No suelo hablar de estos temas, hay lugares más especializados en esta temática y que seguramente lo comenten mucho mejor que yo. Quizás la experiencia propia me haga estar totalmente de acuerdo con el artículo que referencio.
Normalmente en las empresas de consultoría informática en la que los trabajadores son recursos, se suele dar la circustancia de que un buen programador sale caro para el proyecto, por lo que debe ascender, pasar a ser analista (o documentalista, según se vea) y así ser productivo para el cliente.
El artículo comenta ciertas cosas que muchos gestores de proyecto deberían tener en cuenta, como por ejemplo que un buen programador es más productivo que uno medio. Un buen programador suele hacerse cargo del proyecto y no suele ser necesario que estén detrás de él, que le expliquen las especificaciones o los requerimientos. Tampoco hay que estar detrás de él para saber el estado de su trabajo.
Cuánto mayor es tu experiencia desarrollando, más conocimientos tienes y menos fallos cometes, aunque sea por haberte peleado con ellos. Incluso encuentra los fallos con mayor rapidez y le da una solución en menos tiempo, ya que en muchas ocasiones los fallos suelen ser bastante parecidos y se repiten.
Supongo que por la experiencia de que el código nunca acaba de estar completo, así como las funcionalidades, un buen programador suele escribir código más fácil de mantener. Lo cual reduce tiempos de desarrollo en funcionalidades posteriores, y no hacerlo aumenta los tiempos estimados de desarrollo. Pensar en el futuro te evita reescribir lo ya desarrollado y añadir cosas nuevas con más facilidad.
El código limpio y eficiente se consigue con los años de trabajo. Es lógico pensar que un buen desarrollador hace más cosas en menos código, lo cual en caso de errores detectados, localizar el punto donde falla será más fácil porque hay menos código que seguir.
También me gustaría añadir que un buen desarrollador suele encontrar los fallos que cometen los analistas, sin necesidad de preguntar a éste cómo hacerlo. Y por último, darle un consejo a los jefes de proyecto, dos juniors no salen más baratos que uno o dos seniors, la experiencia lo demuestra (al menos desde el punto de vista del desarrollador).
Gracias Millán por el enlace.
10 Developers For The Price Of One