viernes, 25 de abril de 2008

Presentación sobre SQL - Conceptos

Aquí les dejo con una presentación que hice para un Curso de PHP que estoy impartiendo. El fin es explicar los principales conceptos del lenguajes SQL.


SlideShare | View | Upload your own


Saludos...

martes, 22 de abril de 2008

mysql_num_rows vs. SQl - SELECT COUNT(*)

Haciendo una paginación para un proyecto me dió la curiosidad de verificar cuál método es más efectivo para contar el total de registros. Bueno a pesar de ser obvio que con sql count(*) sería más rápido, me propuse hacer las pruebas y estos fueron los resultados:

  • Prueba con SELECT COUNT(*) FROM tabla
    Fecha: 22/04/2008 11:35:17 am

    Test con count(*) - registros = 44069
    Tiempo 0.00441598892212 segundos
  • Prueba mysql_num_rows
    Fecha: 22/04/2008 11:35:21 am
    Test con mysql_affected_rows - registros = 44069
    Tiempo 59.3658621311 segundos
Código fuente de la prueba:
1.    
2.
require('../benchmark.php');
3. $caso = 'mysql';
4. $file = '../var/bench_databasecount.txt';
5. try{
6. Benchmark::startBenchmark($file);
7. $conn = mysql_connect('localhost', 'root', 'pannet1');
8. mysql_select_db('test', $conn);
9. switch($caso){
10. case 'count':
11. $sql = "SELECT COUNT(*) as contador FROM tabla";
12. $rs = mysql_query($sql, $conn);
13. $count = mysql_fetch_array($rs);
14. Benchmark::pushLog('Test con count - registros = '.$count['contador']."\n", $file);
15. break;
16. case 'mysql':
17. $sql = "SELECT * FROM tabla";
18. $rs = mysql_query($sql, $conn);
19. $count = mysql_num_rows($rs);
20. Benchmark::pushLog('Test con mysql_affected_rows - registros = '.$count ."\n", $file);
21. break;
22.
23.
}
24. Benchmark::endBenchmark($file);
25. echo 'Termino';
26. }catch(Exception $e){
27. echo $e->getMessage();
28. }
29. ?>
30.
31.

Conclusión

A las personas que todavía realizan las paginaciones con mysql_num_rows, preferiblemente usen sql (función COUNT(*)).

Saludos ...

martes, 15 de abril de 2008

Patrón Singleton en PHP

Les dejo un ejemplo del patrón singleton aplicado en php. Es bien útil para manejar las conexiones a la base de datos.

1.  <?php  
2.
class DB {
3. private static $_singleton;
4. private $_connection;
5. private function __construct()
6. {
7. $this->_connection = mysql_connect();
8. }
9. public static function getInstance()
10. {
11. if (is_null (self::$_singleton)) {
12. self::$_singleton = new DB();
13. }
14. return self::$_singleton;
15. }
16. }
17. $db = DB::getInstance();
18.
19. ?>

Saludos ...

jueves, 10 de abril de 2008

Sound Juicer para extracción de música

Ubuntu trae una herramienta muy buena para la extracción de música en los cd's. Se llama Sound Juicer. Para poder guardar las canciones en formato mp3 se necesita bajar el paquete gstreamer0.10-plugins-ugly-multiverse.
#: sudo aptitude install
gstreamer0.10-plugins-ugly-multiverse.

Después debes entrar Sound Juicer y buscar las opciones en Editar -> Preferencias -> Editar Perfiles.

Debes agregar un nuevo perfil con los siguientes datos:
  • Nombre: Calidad de CD mp3 optimo
  • Descripción del perfil: Calidad de mp3 a 190 kbs
  • Pipeline de Gstreamer: audio/x-raw-int,rate=44100,channels=2 ! lame name=enc bitrate=192 mode=Stereo
  • Extensión: mp3
  • Seleccionar el checkbox que dice ¿Está activo?
Con esto debes tener la opción para guardar tus canciones en formato mp3.

Fuente: Guía Ubuntu - Sound Juicer

Saludos ...

martes, 8 de abril de 2008

Problemas con mi celular y el bluetooth de mi laptop en Ubuntu Linux

Algunas veces había intentado pegar mi celular (Sony Erickson w300) a mi laptop (Dell XPS 1330), pero me salía un error de que no podía realizar la conexión (obex://[–]...) . Para resolver este problema se debe instalar un paquete llamado gnome-vfs-obexftp.

#: sudo aptitude install
gnome-vfs-obexftp


Bueno espero les ayuden en algo...

Saludos ...

Fuente: http://www.davidsuarez.es/?p=472

domingo, 6 de abril de 2008

Peleas de Robots

Buscando videos sobre Lego Mindstorms me encuentro con un video bastante cómico de una pelea de dos robots. Éstos robots son bastante ágiles y uno de ellos llega a dar hasta un mortal jajaja. Aquí les dejo con el video:


viernes, 4 de abril de 2008

Problemas con mysql instalando sphinx en Ubuntu Linux

Instalando sphinx (search engine) en mi máquina del trabajo (Dell Optilex gx520 Ubuntu Gusty 7.10), me topo con un problema relacionado con mysql. Me aperece que no encuentra las librerías de mysql y me aconseja que instale el paquete mysql-devel. Buscando en google me doy cuenta que en ubuntu el paquete no se llama mysql-devel, sino libmysql++-dev.

Instalando este paquete, no tendrás problemas para compilar el sphinx en tu máquina con ubuntu. Claro ántes debes tener instalado mysql en tu máquina.

Espero les ayude en algo si llegan a tener este problema.

Saludos ...

jueves, 3 de abril de 2008

Primer Lego MindStorms en la clase de Robótica

Este semestre nos toca la materia de Robótica. Una materia bastante interesante y que ha despertado cierto interés por parte mía y de unos amigos. En las primeras clases estamos aprendiendo lo básico, pero viendo algunos videos en youtube, nos ha llamado más aún la atención lo que se puede hacer con estos juguetes.

Aquí les dejo con un video (de mi celular, no muy buena resolución jeje) del primer robot que armamos en la clase.



Saludos ...

miércoles, 2 de abril de 2008

Clase en php para filtrar texto

Cuando creamos un foro por ejemplo nos vemos en la necesidad de crear filtros para malas palabras. La siguiente clase se encarga de filtrar texto dependiendo de un arreglo de palabras que estén definidas con anterioridad.

Código:

/**
* WordFilter
* Class for censoring words in text
* @access public
* @package SPLIB
*/
class WordFilter {
/**
* An array of words to censor
* @access private
* @var array
*/
var $badWords;
/**
* WordFilter constructor
* Randomly generates strings to censor words with
* @param array an array of words to filter
* @access public
*/
function WordFilter($badWords)
{
$this->badWords = array();
srand((float)microtime() * 1000000);
$censors = array('$', '@', '#', '*');
foreach (
$badWords as $badWord) {
$badWord = preg_quote($badWord);
$replaceStr = '';
$size = strlen($badWord);
for (
$i = 0; $i < $size; $i++) {
shuffle($censors);
$replaceStr .= $censors[0];
}
$this->badWords[$badWord] = $replaceStr;
}
}
/**
* Searches for bad words in text and censors them
* @param string text to filter
* @return string the filtered text
* @access public
*/
function filter($text)
{
foreach (
$this->badWords as $badWord => $replaceStr) {
$text = preg_replace('/' . $badWord . '/i', $replaceStr,
$text);
}
return
$text;
}
}

// An array of words to replace
$badWords = array('tubby', 'tubbies', 'byebye');
// Include the word file with the list of bad words
$wordFilter = new WordFilter($badWords);
// $text simulates some data from the database
$text = 'byebye!';
// Filter the words
$text = $wordFilter->filter($text);
echo
$text;
?>


Fuente: Libro The PHP Anthology, Volumen II.