wordpress visitor
» TutorialesInformática Práctica | Informática Práctica |

Contador de visitas únicas fácil con PHP y texto plano

Escrito por ffuentes el Thursday, 1 de September del 2011 a las 4:47

Hace un par de días estuve mostrándoles cómo hacer un contador de visitas simple y prometí continuar con un contador de visitas un poco más complejo. No es algo que haya hecho yo, sino que es algo que he visto y me parece interesante compartirlo.

Pues bien, la idea es detectar visitantes únicos, es decir, no marcar la visita de un usuario más de una vez, para lo que emplearemos la IP del usuario para distinguirles del resto.

Procedimiento:

No vamos a emplear una base de datos MySQL, simplemente texto plano para guardar las IPs, así que crearemos una carpeta /contador/ y en ella un archivo llamado ip.db que estará vacío.

Luego creamos a su lado, en la misma carpeta el archivo contador.db con la siguiente secuencia:

CODE:
  1. 0%0%0%0000 00 00%0

¿Esto qué será? Aquí estará el registro de cada día. El primer número representa el conteo de visitas de hoy. El siguiente (luego del signo de porcentaje) será el conteo de visitas de ayer, el tercero es el número de visitas en total. Los siguientes ocho números la fecha y el último cero, tras el símbolo de porcentaje es el número de días que tu script lleva operativo.

Dos scripts y acabamos:

El primer script y tal como aparece en el tutorial original, es el más fácil de entender porque es el HTML + PHP que mostrará nuestras visitas:

mostrarcontador.php

PHP:
  1. <table>
  2. <tr>
  3. <th colspan="2">Visitas únicas</th>
  4. </tr>
  5. <tr>
  6. <td><b>Hoy</b></td>
  7. <td>
  8. <?php
  9. $file_count = fopen('contador/contador.db', 'rb');
  10.     $data = '';
  11.     while (!feof($file_count)) $data .= fread($file_count, 4096);
  12.     fclose($file_count);
  13.     list($today, $yesterday, $total, $date, $days) = split("%", $data);
  14.     echo $today;
  15. ?>
  16. </td>
  17. </tr>
  18. <tr>
  19. <td><b>Ayer</b></td>
  20. <td>
  21. <?php
  22.     echo $yesterday;
  23. ?>
  24. </td>
  25. </tr>
  26. <tr>
  27. <td><b>Total</b></td>
  28. <td>
  29. <?php
  30.     echo $total;
  31. ?>
  32. </td>
  33. </tr>
  34. <tr>
  35. <td><b>Promedio del día</b></td>
  36. <td>
  37. <?php
  38.     echo ceil($total/$days);
  39. ?>
  40. </td>
  41. </tr>
  42. </table>

Que es fácil de entender, sencillamente abre y despliega en una tabla, los datos de contador.db.

Ahora necesitamos el contador, el real, el archivo que nos hará el trabajo sucio.

contador.php

PHP:
  1. <?php
  2.     $ip = $_SERVER['REMOTE_ADDR'];
  3.    
  4.     $file_ip = fopen('contador/ip.db', 'rb');
  5.     while (!feof($file_ip)) $line[]=fgets($file_ip,1024);
  6.     for ($i=0; $i<(count($line)); $i++) {
  7.         list($ip_x) = split("\n",$line[$i]);
  8.         if ($ip == $ip_x) {$found = 1;}
  9.     }
  10.     fclose($file_ip);
  11.    
  12.     if (!($found==1)) {
  13.         $file_ip2 = fopen('contador/ip.db', 'ab');
  14.         $line = "$ip\n";
  15.         fwrite($file_ip2, $line, strlen($line));
  16.         $file_count = fopen('contador/contador.db', 'rb');
  17.         $data = '';
  18.         while (!feof($file_count)) $data .= fread($file_count, 4096);
  19.         fclose($file_count);
  20.         list($today, $yesterday, $total, $date, $days) = split("%", $data);
  21.         if ($date == date("Y m d")) $today++;
  22.             else {
  23.                 $yesterday = $today;
  24.                 $today = 1;
  25.                 $days++;
  26.                 $date = date("Y m d");
  27.             }
  28.         $total++;
  29.         $line = "$today%$yesterday%$total%$date%$days";
  30.        
  31.         $file_count2 = fopen('contador/contador.db', 'wb');
  32.         fwrite($file_count2, $line, strlen($line));
  33.         fclose($file_count2);
  34.         fclose($file_ip2);
  35.     }
  36. ?>

Y eso es todo. Este php almacenará la IP de todos quienes ingresen a tu web, si alguien ha entrado antes (porque su IP está en ip.db), no contará la visita, pero si esa IP no estaba en tu ip.db, contará un nuevo visitante.

Al igual que en el contador de visitas anterior, si quieres usar este contador en tus páginas has de usar la función include, de la siguiente manera:

PHP:
  1. <?php include 'contador/contador.php'; ?>

Puedes hacer lo mismo con los datos de mostrarcontador.php.

El tutorial es una traducción libre del tutorial original de InObscuro: Simple PHP unique visitors counter de Nela Dunato. Usado con permiso.

Categoría: PHP, Tutoriales | No hay Comentarios »

Un simple contador de visitas con PHP

Escrito por ffuentes el Tuesday, 30 de August del 2011 a las 2:12

Estas son cosas que solían ir en Sólo Código, pero actualmente el blog sólo funciona como archivo histórico y no lo actualizo hace años. Así que aquí va:

Es un contador de visitas muy sencillo y hasta cutre, pero te servirá para conocer el tráfico en sitios donde no te importe demasiado si las visitas son únicas o no y te ayuda a no depender de sitios webs ajenos que te obligan a usar unos códigos javascript horribles que hasta pueden infectar tu sitio o poner una publicidad inaguantable.

Entonces debemos crear dos archivos (esto igual puede que lo hayas visto antes pero la publico como la opción para "perezosos", si quieres más funcionalidades ya podemos explicar algún ejemplo más complejo).

1. Creamos un archivo contador.php y pegamos esto:
2. Crear un archivo llamado visitas.txt.
3. En el primer archivo que suponemos está en la misma carpeta de la web que queremos monitorear, pegamos:

PHP:
  1. <?php
  2. $contar = ("visitas.txt");
  3. $hits = file($contar);
  4. $hits[0] ++;
  5. $fp = fopen($contar , "w");
  6. fputs($fp , "$hits[0]");
  7. fclose($fp);
  8. ?>

Y cerramos.

4. Abrir el archivo visitas.txt y escribir un número.
5. Visitar la página y corroborar que el número del archivo visitas.txt ha aumentado en un dígito.

Si queremos que el contador nos sirva en un sitio web, lo hemos de incluir dentro de la página de la siguiente manera:

PHP:
  1. <?php
  2. include ("counter.php");
  3. ?>

Y si le añades un:

PHP:
  1. echo $hits[0];

Te mostrará lo mismo pero en la propia web. Si no quieres que nadie más vea el resultado, déjalo como está.

Este tutorial lo leí en otros sitios y aparecía pero no era demasiado claro o a mi no me lo pareció y no le puse ningún número a visitas.txt y me pareció que no funcionaba, pero cuando se me ocurrió agregárselo, funcionó. Dicho lo anterior, se entenderá que yo, clases de PHP no podría dar, pero el ejemplo ya algo, aunque poco, nos enseña.

Durante esta semana mostraré otro ejemplo que es más interesante porque es un contador de visitantes únicos sin SQL ni cosas raras.

Categoría: PHP, Tutoriales | 2 Comentarios »

Pasar MPEG a AVI (y crear un VCD con él) en Linux

Escrito por ffuentes el Friday, 29 de July del 2011 a las 4:58

He desechado varios CDs porque el programa Brasero no me ha funcionado muy bien, así que averigüé cómo grabar mis discos con la consola:

El problema era el siguiente: Convertir un video mpeg (que eran un par de videos mp4 de YouTube originalmente) a un formato que me permitiese crear un disco de video. Brasero se colgaba.

Primer paso, convertir el archivo mpeg en un avi desde la consola de Linux:

CODE:
  1. ffmpeg -i archivo.mpeg -sameq archivo.avi

Muy importante el parámetro -sameq porque el AVI puede acabar quedando de peor calidad, el parámetro la mantiene.

Segundo paso, convertir el .avi en un archivo apto para crear un svcd:

CODE:
  1. ffmpeg -i archivo.avi -target ntsc-svcd nuevoarchivo.avi

Y ahora recién podemos crear la imagen para quemar en un cd:

CODE:
  1. vcdimager -t svcd -l "titulo" -c archivo.cue -b archivo.bin nuevoarchivo.avi

Ya puedes quemar el CD:

CODE:
  1. cdrdao write archivo.cue

Es un poco lío, pero si lo que necesitan es evadir los programas típicos de grabación de videos, les convendrá seguir los pasos señalados.

Categoría: Linux/UNIX, Tutoriales | 1 Comentario »

Dropbox como webseed

Escrito por ffuentes el Sunday, 12 de June del 2011 a las 2:35

Acostumbro a usar Transmission para descargar con torrents archivos pesados y una vez descargando una copia de LibreOffice descubrí que existían los web seeds y me pregunté cómo podría usar un hosting o Dropbox para alimentar torrents.

La verdad es que no tiene ninguna dificultad, sin embargo, no todos los clientes de torrents permiten hacerlo.

Lo que hay que hacer es lo siguiente: Usar µtorrent que está disponible en las tres grandes plataformas (Windows, Mac y Linux a través de una versión wine). Crear nuestro torrent y en el campo Webseed añadir la URL de Dropbox donde tenemos el archivo que queremos alimentar (seedear).

screenshot_243

Lo guardamos y ya está. Para añadir web seeds a un torrent ya creado hay que entrar a las propiedades del torrent, en µtorrent y añadirlo (esto último jamás lo he probado).

No sé si con un hosting normal sea diferente, pero con Dropbox sólo puedes usar como Web seed un archivo suelto ya que este servicio no permite leer un directorio completo o leer un index de directorio, en vez de eso, da error 404 (yo a veces subo carpetas a Bit Torrent, por eso lo digo).

Creo que para emplearlo para poner descargas a nuestros archivos en vez de recurrir a las webs mal llamadas "descarga directa", porque esperar treinta segundos y hacer varios clics para descargar un solo archivo a mi no me parece muy directo.

Nota: Ojo con Dropbox que en ocasiones cuando difundes un archivo demasiado, y se lo descargan mucho, Dropbox lo deja de disponer públicamente. En todo caso la gracia de BitTorrent es que una vez descargado el archivo, nuestros queridos "leechers" nos ayudarán a compartirlo, reduciendo la carga que recibe Dropbox.

Entonces ya sabemos que podemos darle dos usos a nuestra cuenta de Dropbox, el primero descubierto es la posibilidad de iniciar una descarga bittorrent remotamente en otro PC (un truco conocido de antiguo) y ahora alimentar (o seedear) torrents desde tu cuenta gracias al web seeding.

Lo supe gracias a Torrent Tricks.

Categoría: Tutoriales | 1 Comentario »

Manuales y cursos de ofimática con Software Libre.

Escrito por ffuentes el Friday, 15 de April del 2011 a las 3:49

A continuación una serie de recursos tales como cursos de ofimática, manuales o tutoriales de ofimática para open office y otros programas libres.

Manuales:

Writer:

Manual de Writer
Manual de Writer del Grupo Universitario de GNU/Linux de Entre Ríos, Argentina..
Un manual sencillo para usuarios de Writer"
"Manual Básico de OpenOffice Writer": Este es muy básico y está orientado a usuarios de Linux.

Abiword.

Manual de Abiword

Calc:

Un manual básico de OpenOffice Calc

Manual de Calc de Movistar.

Gnumeric

Manual oficial de Gnumeric. (Y el único al menos en castellano).

Impress

El Manual de Impress de Movistar.

Manual de Impress del Gobierno Bolivariano de Venezuela. (Orientado a usuarios de Linux aunque la única diferencia relevante que veo es estética).

Math

Manual de OpenOffice Math del Grupo Univ. de GNU/Linux de Entre Ríos.

Guía avanzada de OpenOffice Math

Un tutorial básico de Math (en formato OpenOffice Writer).

Tutoriales

Tutorial de OpenOffice para principiantes. En HTML.

Tutorial de OpenOffice Base.

Tutorial básico de Abiword (En Inglés).

Tutorial para crear una carta con Abiword. (En inglés).

La conclusión a la que llego de esto es que hay que seguir escribiendo más material. Algunos de los manuales que son más conocidos son bastante antiguos y otros programas apenas cuentan con material disponible en la red.

Categoría: open source, Recursos, Tutoriales | No hay Comentarios »

Trucos con FFMPEG

Escrito por ffuentes el Wednesday, 9 de March del 2011 a las 18:13

Voy a resumir algo que encontré muy interesante, una serie de 7 comandos con FFMPEG desde lo más elemental hasta cosas muy interesantes como veréis:

Convertir formatos de audio:

ffmpeg -i my_audio.wav my_audio.mp3

Es sólo un ejemplo de lo que puedes hacer, -i significa "input". Para saber qué formatos soporta, basta con ejecutar el siguiente comando:

ffmpeg -formats

Aparecerá una larga lista de formatos con una D y/o una E delante que indican si se puede decodificar, codificar o ambas cosas a la vez.

Convertir video con ffmpeg

La misma mecánica anterior con un parámetro extra:

ffmpeg -i my_video.mpeg -s 500×500 my_video.flv

El parámetro -s indica el tamaño que tendrá el video.

Extraer imágenes de un video:

ffmpeg -i test.mpg image%d.jpg

El comando anterior indica que simplemente queremos imágenes (ojo con el %d al final del archivo). Pero esto puede resultar un lío, ya que, a menos que queramos hacer un gif animado enorme, una serie de imágenes estáticas de un video no tienen mayor utilidad y más aún si aparecerán probablemente 25 imágenes por cada segundo lo cual lo hará aún peor.

ffmpeg -i test.mpg -r 1 image%d.jpg

Aquí ya ha mejorado la cosa, aparece el parámetro -r con el que le estamos indicando a ffmpeg que queremos sólo una imagen por segundo, un "frame" por segundo. Pero todavía no es suficiente, necesitamos controlar cómo escoger la imagen desde el momento apropiado.

ffmpeg -i test.mpg -r 25 -ss 00:00:10 -t 00:00:05 images%05d.png

El parámetro -ss nos permite indicarle a ffmpeg un lapso de tiempo. El -r 25 es la cantidad de frames por defecto (de hecho, no hace falta ponerlo) y puede estar bien para un gif animado pero ser demasiado para una ilustración.

Extraer un audio de un video

También es una tarea sencilla con ffmpeg:

ffmpeg -i video.avi -f mp3 audio.mp3

Ojo con el parámetro "-f mp3" puesto en ese lugar para que fuerce a un formato de video a ser convertido a audio. El mismo efecto se logra con el comando "-vn".

Crear una captura de video (screencast)

Mira, esto es interesante:

ffmpeg -f x11grab -r 25 -s wxga -i :0.0 /tmp/outputFile.mpg

En este caso no es extrapolable a Windows. El x11grab es una especie de códec que nos permite capturar lo que estamos haciendo en pantalla. El parámetro -s el tamaño y la forma del video que creará (anteriormente sólo indicamos el códec a utilizar) y el parámetro -i en este caso como no hay archivo, pues, el origen exacto del video que es :0.0 el número de nuestro servidor X.
A mi la wxga no me funcionó, usé vga y empezó a grabar.

Convertir imágenes a video:

Recuerdan el paso anterior para convertir videos en imágenes. Suponiendo que teníamos un lote de imágenes guardadas y las queremos volver a "animar", ffmpeg nos permite hacerlo de la siguiente manera:

ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg

-f image2 es el "forzador de formato" genérico para convertir imágenes. Como ven, es tan sencillo como el ejercicio inverso.

Capturar video desde una webcam

ffmpeg -f oss -i /dev/dsp -f video4linux2 -s 320x240 -i /dev/video0 out.mpg

Este comando nos permite capturar tanto el audio del micrófono (/dev/dsp) como el video (/dev/video0), por regla general debería funcionar, pero en mi caso no ha sido así y no consigo encontrar la solución. Eso para que no me pregunten.

El comando también puede emplearse sin audio quitando "-f oss -i /dev/dsp" llegando también a comandos tan breves como:

ffmpeg -sameq -s 640x480 -i /dev/video0 output-filename.mpg

Evidentemente hay muchas más cosas que se pueden hacer con ffmpeg (ahora mismo se me ocurre que podría hacer una captura de pantalla con ffmpeg aunque para eso ya tenemos a scrot). Existe un programa llamado Super que permite utilizar de forma gráfica ffmpeg en Windows.

Del original de Linuxaria

Categoría: Tutoriales | No hay Comentarios »

40 Tutoriales excelentes sobre Photoshop

Escrito por J.F. el Wednesday, 29 de October del 2008 a las 9:48

Smashing Magazine, nuevamente, como es habitual, nos trae una nueva colección con 40 tutoriales excelentes para Adobe Photoshop. Multitud de efectos profesionales, que con un poco de paciencia y siguiendo los tutoriales con detenimiento, seguro que con práctica cualquiera podemos llegar a conseguir.

Tutoriales excelentes sobre Photoshop

Enlace: | 40 tutoriales excelentes para Photoshop

Categoría: Diseño Gráfico, Tutoriales | No hay Comentarios »

Implementación de servidores GNU/Linux

Escrito por J.F. el Monday, 14 de July del 2008 a las 12:56

Muy recomendable el libro "Implementación de servidores GNU/Linux", en el cual podremos aprender desde los comandos más básicos, hasta configuración de servidores. Son algo menos de 600 páginas en 3,3mb, se encuentra en español, y está bajo Licencia Creative Commons. Una biblia más sobre el sistema operativo libre, Linux.

GNU Linux

Enlace: | Descargar "Implementación de servidores GNU/Linux"
Vía: | Dragonjar
Continúa leyendo »

Categoría: Linux/UNIX, Tutoriales | 1 Comentario »

Liberar el iPhone, Pwnage 2.0

Escrito por J.F. el Sunday, 13 de July del 2008 a las 23:01

No soy muy partidario de comentar demasiadas cosas sobre el iPhone en el blog, creo que toda la blogosfera y páginas de Internet acerca de tecnología están saturando ya de información acerca de éste tema, asi que desde éste blog un vídeo que quizás resulte de utuilidad a alguién, donde se muestra como liberar el iPhone:

Visto en : | XKOD

Categoría: Telefonía, Tutoriales | 2 Comentarios »

Instalación de openSUSE 11.0 y guías para el usuario

Escrito por J.F. el Wednesday, 25 de June del 2008 a las 17:06

OpenSUSEOpenSUSE 11.0 lleva unos días ya liberado, aún no he tenido ocasión de instalarlo en disco duro, pero si he podido probar la versión live cd y he de reconocer que me ha agradado bastante, y que presenta evidentes mejoras respecto a versiones anteriores.

OpenSUSE tiene una versión que puedes comprar, en la que viene con caja, asistencia al usuario y guías. Si quieres disfrutar de las guías del usuario, no es necesario que compres esa edición de openSUSE, ya que Novell nos pone a nuestra disposición de forma gratuita la posibilidad de descargarlos en formato pdf. Guía para los novatos, para el usuario normal y guía para el administrador.

Si quieres ver la instalación de la nueva versión, aquí tienes un videotutorial que ví en el blog de Nierox:

Continúa leyendo »

Categoría: Linux/UNIX, S.O., Tutoriales | No hay Comentarios »

« Entradas previas