General

Esta es la categoría general donde pongo los posts que no encajan con el resto de categorías. Y algunos posts, que aunque encajan en alguna otra categoría, también los he considerado de interés general en informática. Aquí puedes encontrar contenidos varios sobre utilidades como programas, sistemas operativos, herramientas de mantenimiento y cosas de este estilo que me han parecido interesantes.

Abduction, complemento de Firefox

2014-09-28 - Categorías: General
Hoy traigo un sencillo complemento para Firefox. Siguiendo con la serie de utilidades para todo el mundo. Abduction sirve para capturar una imagen instantánea de una web que estés visitando. Una vez instalado en tu Firefox, simplemente le das al botón derecho de la zona de la web que quieras y te saldrá un menú desplegable. Le das a la opción que pone ‘Save Page As Image’ y te saldrá un recuadro encima de la web como el de la imagen de aquí al lado.

Sólo tienes que elegir la zona exacta que quieras guardar y le das al botón que pone ‘Save…’ arriba a la derecha, que significa guardar en castellano. Eliges dónde la quieres guardar y ya tendrás una captura de la zona de la web que quieres.
Un truco, si quieres capturar la web completa le haces doble click al recuadro y automáticamente se ampliará al total de la web. Si estas viendo una web muy larga no te preocupes, cuando guardes te saldrá una imagen muy larga de igual manera.
Sólo me falta poner la dirección del complemento:
Simplemente visita la dirección con el navegador Firefox y le das al botón verde que pone ‘Add to Firefox’ como el de la imagen a continuación que he capturado con Abduction jejej
¡Un saludo!

Hola mundo Silex usando Composer

2014-09-28 - Categorías: General


Estoy ahora curioseando los entresijos de PHP. Viendo hacia dónde tiende la programación en la web. Añadiendo herramientas, librerías de programación para mis proyectos.

Dentro del mundo de la programación, elegir librerías, actualizarlas, combinarlas.. todo esto lleva trabajo y en los últimos años están apareciendo herramientas que nos facilitan la vida.

Pongámonos en situación

Cuando empezamos a programar con PHP. Desde el inicio hasta hace pocos años, que casi todo se hacía a pelo. PHP puro y duro, añadiendo código y más código. Los programas iban creciendo y creciendo. Se iban añadiendo manualmente librerías para todo tipo de tareas. Ahora ya no tenemos que reinventar la rueda. Estan surgiendo librerías públicas como por ejemplo  Packagist, donde se recopilan códigos para hacer todo tipo de tareas con PHP.

Para manejo de Packagist tenemos una herramienta llamada Composer, con la que una vez configurado lo que vamos a necesitar Composer se encarga de conectar a Packagist y descargar los ficheros que haga falta. Para la programación front-end tenemos herramientas como Bower, similar a Composer, pero pensado para gestionar librerías Javascript/CSS. Estas herramientas, una vez configuradas, nos descargarán los ficheros a nuestro directorio de trabajo y listo. Ya tendremos nuestro proyecto para programar, podremos añadir o borrar librerías fácilmente, elegir versiones, actualizar todo..

Web de Composer: https://getcomposer.org/
Web de Packagist: https://packagist.org/
Web de Bower: http://bower.io/

Herramientas

Para éste post he elegido probar Silex, es un framework bien sencillo. Más bien un micro-framework como lo nombran oficialmente. Está construido a base de componentes del gran framework Symfony. Con él tendremos una serie de herramientas para usar como plantillas Twig, podremos enviar emails con Swiftmailer, si no eres un experto en seguridad (como es mi caso) no pasa nada porque tenemos el componente de seguridad Security, el componente para generar formularios Form, el generador de URLs, etcétera.

Todos los componentes

Como iba diciendo, Composer se va a encargar de gestionar por nosotros las librerías PHP de nuestro proyecto. Con el ejemplo veremos mejor cómo funciona. Prepararemos nuestro proyecto hola mundo con Silex con Composer y veremos qué sencillo que lo tenemos para aumentar luego librerías. Pasos:

  1. Descargamos el fichero composer.phar
  2. Preparamos nuestro fichero composer.json
  3. Ejecutamos Composer.
  4. Empezamos a programar.

Descargamos el fichero composer.phar

En el directorio donde vayamos a desarrollar nuestro proyecto o queramos hacer éstas pruebas debemos de poder usar Composer. Se puede instalar en el sistema, en el PATH del sistema, pero eso ya se sale del post. La forma sencilla que viene en su web oficial es poniendo el fichero composer.phar en el directorio. Si tienes curl ejecutas lo siguiente:

curl -sS https://getcomposer.org/installer | php

Si sólo tienes PHP, puedes ejecutar lo siguiente en línea de comandos y se te descargará el fichero:

php -r «readfile(‘https://getcomposer.org/installer’);» | php

O manualmente como se indica en su web: https://getcomposer.org/download/

Si quieres instalar globalmente Composer tengo un post anterior donde lo explico: https://jnjsite.com/programacion/instalar-globalmente-composer-en-ubuntu/

No lo he dicho pero supongo que ya tienes instalado PHP. Sino desde su web puedes instalarlo: http://es1.php.net/downloads.php. Si tienes Linux, en mi caso Ubuntu, basta con poner en línea de comandos ‘sudo apt-get install php5’.

Preparamos nuestro fichero composer.json

Para Silex va a ser muy sencillo. Si queremos elegir librerías no tenemos más que ir a Packagist y añadir las que necesitemos. El fichero:

{
«require» : {
«silex/silex» : «dev-master»,
«phpoffice/phpword»: «dev-master»
}
}

En el mismo directorio raiz donde tenemos el composer.phar creamos éste fichero composer.json con el contenido de aquí encima. Si nos fijamos he puesto dev-master aquí arriba, esto nos descargará siempre la última versión que haya disponible. He añadido phpoffice/phpexcel, para hacer una prueba a ver qué tal.

Ejecutamos Composer

Entonces la primera vez tenemos que ejecutar una instalación de las librerías en linea de comandos:

php composer.phar install

Veremos entonces algo parecido a lo que hay en la imagen inicial. Si estamos modificando el fichero composer.json debemos entonces ejecutar lo siguiente:

php composer.phar update

Si todo ha ido bien entonces tendremos en nuestro directorio los siguientes ficheros: composer.phar, composer.json, composer.lock y el directorio vendor. El fichero composer.lock es un fichero que se actualiza para llevar sus tareas internas cada vez que ejecutamos Composer. Luego en el directorio vendor/ tendremos todas las librerías actualizadas a la versión.

Empezamos a programar

No lo he dicho antes pero dentro del directorio de las librerías (vendor), tendremos ahora un fichero autoload.php que simplemente lo incluimos o requerimos y a programar. Tendremos acceso a todas las librerías de Composer que hayamos incluido. Con un ejemplo se verá más claro:

<?php
// index.php
ini_set('display_errors', 'On');
error_reporting(E_ALL);

require_once __DIR__.'/vendor/autoload.php';

$app = new SilexApplication();

$app->get('/', function () {
    return 'Página inicial.';
});

$app->get('/crearTexto', function () {
    $nombreArchivo = 'fichero.odt';
    
    $phpWord = new PhpOfficePhpWordPhpWord();
    
    $section = $phpWord->addSection();
    $section->addText('Hello world!');
    $section->addText('Hello world! I am formatted.',
        array('name'=>'Tahoma', 'size'=>16, 'bold'=>true));
    $phpWord->addFontStyle('myOwnStyle',
        array('name'=>'Verdana', 'size'=>14, 'color'=>'1B2232'));
    $section->addText('Hello world! I am formatted by a user defined style',
        'myOwnStyle');
    $objWriter = PhpOfficePhpWordIOFactory::createWriter($phpWord, 'ODText');
    $objWriter->save($nombreArchivo);
    
    $str = 'Fichero de Word en formato Open Document creado.';
    $str .= '<a href="' . $nombreArchivo . '">Haz click aquí para descargar</a>';
    
    return $str;
});

$app->run();

Ahora vamos a arrancar el servidor web interno de PHP para probar la pequeña aplicación. Ejecutamos en línea de comandos estando en el directorio del proyecto:

php -S localhost:8000

He usado el ejemplo del libro oficial en castellano sobre Silex, modificándolo para ésta prueba. Si quieres puedes ver toda la documentación de Silex en http://librosweb.es/silex/

Web de PHPWord: https://github.com/PHPOffice/PHPWord

Si todo ha ido bien, ejecutando http://localhost:8000/ veremos el mensaje ‘Página inicial.’. Si ejecutamos http://localhost:8000/crearTexto veremos el segundo mensaje, en donde se habrá creado el fichero de texto fichero.odt y podremos descargarlo. Si vemos nuestro directorio del proyecto ahí lo tendremos. En el ejemplo he seguido la documentación de su página oficial para crear dicho fichero.

Resumiendo

¿Qué sencillo usar las librerías para hacer algo tan complejo como un fichero compatible con Word? En casi 40 líneas de código tenemos una aplicación web que crea dicho fichero. Todo gracias a usar dos librerías de Composer y en seguida ya lo tenemos.

Recapitulando, ponemos en el fichero composer.json las librerías que vayamos a usar. Luego incluimos el fichero /vendor/autoload.php y ya tenemos todas las clases de objetos listos para usar. Te ahorra tiempo, es práctico, organizado. Si no estás ya usando los vendors deberías de hacerlo.

¡Un saludo!


FreeFileSync para tus copias de seguridad locales

2014-09-20 - Categorías: General

¡Hola de nuevo! Hoy les traigo una frikada total. Se trata de un programa para hacer copias de seguridad muy sofisticado y a la vez bastante simple de configurar.

Estoy hablando del FreeFileSync, otro programa de código libre que se publica en SourceForge.net. Donde tenemos que ésta misma semana en que les escribo 13.308 descargas, que son muchas comparando con otros proyectos similares.


Es un programa muy muy completo. Podemos hacer copias espejo de una carpeta a otra. Podemos hacer sincronización de archivos, donde se comparan dos directorios y sólo se copian los archivos en los que ha habido cambios. Las sincronizaciones se pueden hacer en una dirección o en ambas.

Siempre con todo lujo de detalles en la interfaz gráfica. Veremos qué archivos han cambiado, cuáles se han borrado de qué sitio, qué carpetas tienes más cambios. Tendremos también contadores totales de la cantidad de cambios abajo a la derecha. Permite filtros para sólo copiar ciertos archivos, todos los archivos o para excluir archivos. Y por si no era bastante, cuando se realiza la copia o sincronización se muestra una gráfica de estado en tiempo real como la de la imagen de arriba.

Compatible con Linux, Windows y Mac. Traducido a múltiples idiomas. Se pueden grabar las configuraciones que hagamos para copiar. También se pueden grabar para ejecutar luego como tarea programada del sistema operativo, con lo que, una vez configurado, podemos estar tranquilos. Cada vez que se ejecute tendremos una copia de todos nuestros valiosos archivos.

Lo tenemos en descarga en su página oficial: http://freefilesync.sourceforge.net/

Otra joya de la informática del mundo del código libre. Por supuesto, también es gratis 😉

Un saludo.


Instalar globalmente Composer en Ubuntu

2014-09-08 - Categorías: General

Este post va a ser bien corto. Se trata de cómo instalar el ejecutable de Composer en un directorio de Linux que está en la variable PATH del sistema.

Los directorios que están en PATH son los directorios en donde se busca el programa cuando queremos ejecutar algo en Linux. Podemos escribir lo siguiente en línea de comandos y veremos cuáles tenemos ahora mismo:

echo $PATH

Tendremos separados por : todos los directorios actuales. Vamos entonces a añadir en uno nuestro ejecutable de Composer, que se trata de un phar. Un fichero .phar es un programa PHP empaquetado dentro de un sólo archivo.

Vamos entonces..

Descargar la última versión de composer

Si tenemos instalado curl podemos ejecutar lo siguiente en línea de comandos:

curl -sS https://getcomposer.org/installer | php

Si sólo tenemos instalado PHP ejecutamos lo siguiente:

php -r «readfile(‘https://getcomposer.org/installer’);» | php

Entonces debemos tener en el directorio en que estamos un fichero llamado composer.phar que podríamos usar con ‘php composer.phar …’. Pero queremos ir un paso más allá. Pudiendo ejecutarlo desde cualquier directorio, ¿recuerdas?

Instalamos en el sistema en PATH

Ejecutamos los siguientes comandos y ya lo tendremos instalado globalmente.

sudo mv composer.phar /usr/local/bin/composer
sudo chown root:root /usr/local/bin/composer
sudo chmod 755 /usr/local/bin/composer

Ahora podremos usarlo simplemente poniendo $ composer ..

Por ejemplo, si queremos actualizar composer debemos usar:

composer selfupdate

Siendo usuario root, si eres usuario normal debes poner:

sudo composer selfupdate

¿Sencillo verdad? Espero haberme explicado bien, si no, mensaje aquí abajo 😉


Mozilla y su navegador Firefox ya son de los grandes

2014-08-31 - Categorías: General

Cómo no, siguiendo con la serie de utilidades de código abierto, no me podía olvidar de una de las grandes joyas de la informática. Estoy hablando, como indica el titular, del navegador Mozilla Firefox.

Es uno de mis mejores aliados al conectarme a la web, vela por mi seguridad, por mi privacidad, sigue fiel a los estándares, es gratuito, de código abierto, está hecho por todos, es para todos.. si enumero todas sus características me puedo quedar aquí escribiendo toda una eternidad así que mejor voy a ir un poco al grano.

Situación actual

Son muchas las bondades que tiene éste navegador. Muchos ya lo conocerán, alrededor del 17-18% de los usuarios navegamos con él. Según los últimos datos que encuentro a fecha en que escribo, el ranking de navegadores queda en el orden siguiente:

  1. Internet Explorer
  2. Firefox
  3. Chrome
  4. Safari
  5. Opera

Si quieren corroborar los datos pueden consultar las estadísticas de StatCounter o NetMarketShare, por ejemplo. Hay muchos datos muy interesantes dispersados por Internet, como el uso de los navegadores por país, donde podemos ver que en muchos países Firefox es el navegador más utilizado. Probablemente que tengamos a Internet Explorer como ganador en el ranking mundial se debe a que viene instalado con Windows, pero eso ya es mi opinión.

Naturaleza

El hecho es que un proyecto como Firefox, esté siendo el segundo navegador más utilizado tiene mucho mérito. Pensemos que está organizado por la Fundación Mozilla, una organización sin ánimo de lucro. Una fundación que vive de donaciones, publica sus trabajos totalmente gratis para todos y además nos da el código fuente. No existe una gran multinacional detrás del navegador, sino que se trata de muchos voluntarios de todo el mundo colaborando junto con unos pocos que forman la Fundación Mozilla.

En su propia web pueden encontrar mucha información sobra la naturaleza de sus proyectos:
https://www.mozilla.org/es-ES/mission/

Podemos ver, cada vez más a menudo, proyectos de colaboración para un mundo mejor. Estoy hablando de GNU/Linux que nos proporcionan un sistema operativo completo, estoy hablando también de Wikipedia con su filosofía de ayudar a todo el mundo ofreciendo gratuitamente el conocimiento, y así unos tras otro podemos encontrar otros en la misma linea.

Colaboraciones

Personas de todo el mundo están colaborando activamente, y grandes empresas como por ejemplo Google ayudan al proyecto. La Fundación Mozilla está metida en el desarrollo y estandarización de muchas funcionalidades que tenemos hoy en dia en nuestros navegadores. Algunas de las cuales están parcialmente desarrolladas o en pleno desarrollo. Podemos ver proyectos para almacenar información en el navegador como IndexedDB o el WebGL para hacer gráficos en 3 dimensiones.

Destaca en 2014 la presentación de la mano de Mozilla y Unity (entorno de desarrollo con motor gráfico para desarrollo de videojuegos) la librería asm.js, con la que se podrá usar el navegador para correr completos videojuegos portando código desde C/C++. En Unity quieren hacer sus herramientas compatibles con la web, con lo que se podrán exportar los videojuegos y ejecutar dentro de navegadores, corriendo a la misma velocidad que los tradicionales videojuegos. En todos éstos avances y muchos más está metida la Fundación Mozilla.

El navegador

Para hablar de Firefox no podemos olvidarnos de los otros proyectos de Mozilla: como el lector de correo Thunderbird, o un nuevo sistema operativo para móviles, el Firefox OS, con el que podremos correr programas hechos completamente con lenguajes web. Ya hay acuerdos con Telefónica para poner en marcha éste sistema operativo, veremos a ver qué tal. Nos podemos hacer una idea de que Firefox está donde tiene que estar.

Tenemos las clásicas herramientas que podemos encontrar en otros navegadores como el historial, la navegación privada que está ahora de moda, los marcadores para guardar las direcciones de nuestras páginas favoritas, y un largo etcétera.

Podemos ver todas las características de primera mano aquí:
https://www.mozilla.org/es-ES/firefox/desktop/

Hace un par de años podíamos ver que Firefox se estaba quedando un poco atrás, estaba siendo un poco lento, y no incluía muchos cambios con las últimas versiones. Pero ya veo que nos traían muchas nuevos cambios haciendo más pequeña la barra de menús que por defecto no está visible. Tenemos un menú desplegable a la derecha donde podemos configurar los accesos directos que queramos. Es muy configurable, teniendo gran cantidad de complementos con los que aumentamos sus funciones.

Si eres desarrollador podrás inspeccionar las webs mientras navegas o desarrollas, viendo al detalle el funcionamiento de una web. La primera imagen de arriba del todo en 3D es una de éstas herramientas, el visor 3D. Es la página de Mozilla, si lo activamos podemos mirar desde distintas perspectivas una web viendo como se dibujan las web internamente, viendo como las capas se amontonan unas encima de otras hasta llegar a lo que realmente vemos. ¿Mola verdad? ¡Qué frikada! Jajaja

También es interesante que ahora los de Mozilla te dan gratis una cuenta Sync, con la que puedes también guardar los marcadores de páginas favoritas, historial, contraseñas, etc. Todo ello en dicha cuenta, no hay problema si se te estropea el ordenador o lo cambias. Si pones tu usuario y contraseña de Sync en otro navegador Firefox tendrás todos esos datos de nuevo.

En resumen, una maravilla, otra joya de la informática que debemos de conocer.

Instalar

En la web de Mozilla tenemos un enlace para descargar el navegador:
https://www.mozilla.org/
Debe salir la versión que te debes instalar según tu ordenador, ya sea Windows, Mac, Linux..

Si tienes Linux como en mi caso sólo con poner lo siguiente el línea de comandos ya lo tendremos instalado:

sudo apt-get install firefox

Si has llegado hasta aquí abajo te digo que ya sólo me queda despedirme. Me permites preguntarte ¿qué navegador estas usando? ¿conocías Firefox? ¿te ha gustado el artículo? ¿falta o sobra algo? Para cualquier cosa, un mensaje aquí abajo, un click en me gusta, compartir, etc.. 😉

¡Gracias! ¡Saludos!


VLC: mucho más que un reproductor multimedia

2014-08-24 - Categorías: General

¡Hola de nuevo!

Hoy he cogido otro de los grandes proyectos de código abierto que tenemos disponibles para usar gratuitamente en nuestro ordenador.

¿No les han enviado alguna vez un vídeo que ha grabado su tio, abuelo, madre, un amigo.. y resulta que cuando vas a verlo no se puede ver? Es habitual que salga un error de códec desconocido. Ésto se debe a que muchos reproductores, aunque cada vez menos, no instalan los decodificadores de vídeo. Se instalan aparte mediante otros programas. Podemos encontrar grandes recopilaciones de decodificadores de vídeo y audio juntos en un mismo instalador.

Pues con VLC casi seguro que no vamos a necesitar instalar nada más, puesto que ya trae dentro del propio programa la gran mayoría de decodificadores que podamos necesitar. Éste ha sido uno de los puntos fuertes a la hora de elegir VLC como el reproductor multimedia por defecto de muchos de nosotros.

Un poco de historia

VLC nace como un proyecto universitario en 1996 en París. Sus siglas significan Video Lan Client, y como su nombre indica se trata de un programa para transmitir video por la red LAN. De ahí que ha ido derivando a lo que ahora tenemos.

Originalmente en el proyecto VideoLAN había dos soluciones: el VideoLanClient (VLC) y el VideoLanServer (VLS). Donde VLS se dedicaba a transmitir el video mientras que el VLC lo recibía y reproducía. Actualmente los dos proyectos se han unido en el VLC con lo que podemos emitir y recibir una señal de vídeo con el mismo programa. Que es lo que se puede ver en la imagen inicial.

Cabe destacar que partes de éste programa se han integrado en otros grandes proyectos. Siendo habitual que encontremos que nos recomiendan instalarlo.

Instalar o descargar

En la propia página web podemos encontrar todas las distribuciones disponibles. Está para varias plataformas, cómo no, para Windows, Mac o Linux lo tenemos disponible. En mi caso, como tengo Linux, pongo lo siguiente en línea de comandos y ya lo tengo instalado:

sudo apt-get install vlc

La web del proyecto: http://www.videolan.org/

Más información

Todas las características del VLC: http://www.videolan.org/vlc/features.html

También es interesante un proyecto que tienen de editor de vídeo basado en VLC, el llamado VLMC (video lan movie creator). Es un proyecto muy prometedor porque el programa sería compatible con casi todo tipo de vídeos sin tener que instalar nada extra. Buscan colaboradores como en todo buen proyecto de código abierto 😉

La web del VLMC: http://www.videolan.org/vlmc/

Para más información dejo un par de enlaces:
http://es.wikipedia.org/wiki/VideoLAN
http://es.wikipedia.org/wiki/VLC_media_player

Gran proyecto, existen muchos colaboradores, partners, y se están incluyendo partes del VLC en otras soluciones de la industria multimedia.

Terminando

Sólo me queda explicar un poco la imagen con la que empezaba el post. Ahí se puede ver cómo el primer VLC abierto está emitiendo la señal. Los cuatro restantes VLC están recibiendo y mostrando la señal que emite el primero.

Estaba curioseando y encuentro que tenemos muchos protocolos de streaming de video HTTP, RDP, Icecast, etc.. Cada uno tiene su forma de configurar y explicarlos no es el fin de éste post. Simplemente hay que coger un VLC darle a Archivo->Emitir entonces elegimos lo que queremos emitir: desde cámara, desde otro emisor, desde disco o archivos. Configuramos y lo lanzamos el servidor. Luego abriendo otros VLC le damos a Archivo->Abrir ubicación de red.. y podremos conectar al servidor.

Parece sencillo pero si vamos jugando con el programa veremos que tiene muchas, muchas, muchas opciones 🙂

¡Un saludo!


Audacity: editor y grabador de audio

2014-08-17 - Categorías: General

Cuando uno entra en el mundo de la informática y va necesitando programas para solucionar ciertas tareas, nos podemos encontrar con que no encontramos fácilmente la solución. Con éste post, pretendo empezar con una serie de programas de ‘fuente abierta’, open source para los amigos, que nos solucionan éstas tareas.

Basta navegar un poco y seguro que encontraremos alguno dedicado a lo que necesitemos.

Instalando

En mi caso tengo una distribución de Linux instalado. Si tienes Linux sólo con poner lo siguiente en un terminal tendrás instalado Audacity en tu máquina:

sudo apt-get install audacity

Si tienes otro sistema operativo puedes ir a la página oficial de descarga y elegir tu versión. Simplemente descargas el fichero y sigues las instrucciones de instalación como se hace con la mayoría de programas.

http://audacity.sourceforge.net/download/

Características

Podemos ver en la página del programa que es capaz de grabar con una velocidad de muestreo de hasta 384 000 Hz si tu ordenador es capaz de soportar tanta resolución, con muestras de hasta 32 bits de coma flotante cada una. Soporta los principales formatos de audio como MP3, AC3, WMA, etcétera.. Podemos cortar y pegar fácilmente mientras visualizamos lo grabado, editar, aplicar filtros, mezclar, hacer zoom a trozos de nuestro audio. Enlaza entradas y salidas, eligiendo de dónde queremos grabar, si queremos escuchar mientras grabamos.

Podemos programar grabaciones, establecer umbrales de activación para grabar. Grabación pista a pista al estilo de un estudio de sonido profesional grabando instrumento o instrumento, o voz a voz, mientras unos se escuchan a otros. Podemos tener múltiples pistas, mezclarlas, editarlas por separado. A parte de los efectos de sonido principales, tenemos 117 complementos.

Analizador de espectro, búsqueda de silencios, búsqueda de ritmo, generadores de ruido, de silencio, y un largo etcétera.

http://audacity.sourceforge.net/about/features

Para los expertos, también permite complementos para aumentar sus funciones.

Como puntos negativos sólo le encuentro que la interfaz es bien sencilla en cuanto a diseño: las formas y colores.

Conclusión

Una joya de la informática. Que seguro que haría las delicias de muchos de los aficionados o incluso profesionales que elijan soluciones del mundo de Open Source. Podemos tener resultados muy profesionales si aprendemos a manejarnos bien con éste programa y si tenemos un buen ordenador con buena tarjeta de sonido.

Para terminar sólo me queda poner la página principal del programa:
http://audacity.sourceforge.net/

Espero que lo disfruten.
¡Saludos!


Trabajando con ficheros CSV desde PHP

2014-08-03 - Categorías: General

Otra vez más, con PHP tenemos también una utilidad, herramienta, librería, función, o como queramos llamarle.. para hacernos más fácil la vida diaria al programar con PHP.

De igual manera que podemos leer o escribir en un fichero de texto, también podemos leer o escribir línea a línea en ficheros estándar CSV. Los ficheros CSV son los llamados ficheros de valores separados por comas. Dentro se ordenan fila a fila listas de elementos separados por comas, como su nombre indica.

Todo ésto lo podemos manejar con el uso general de un fichero abriendo y cerrando ficheros como veniamos haciendo con fopen y fclose. Y ahora usaremos fgetcsv o fputcsv para leer línea a línea del fichero. Dejemos de tanto hablar de lo mismo y vamos a ver un ejemplo..

Supongamos que tenemos el siguiente fichero:

21,89,7,16,76,18,52,51,58,52
80,3,20,6,83,64,21,73,14,80
7,30,23,75,71,9,96,56,47,25

Tenemos 3 filas de 10 elementos separados por comas.

Supongamos ahora que tenemos el siguiente código PHP:

<?php
$fichero = 'nombreFichero.csv';

// si el fichero lo abrimos para leer correctamente
if (($manejador = fopen ( $fichero, "r" )) !== FALSE) {
 
 echo "Leyendo el fichero: <br>n";
 
 // leemos hasta que se acaba fila a fila
 while ( ($arrayFila = fgetcsv ( $manejador, 1000, "," )) !== FALSE ) {

  // escribimos cada fila por pantalla
  for($i = 0; $i < count ( $arrayFila ); $i ++) {
   echo $arrayFila [$i] . " - ";
  }
  echo "<br>n";
 }
 fclose ( $manejador );
}

if (($manejador = fopen ( $fichero, "w" )) !== FALSE) {
 
 echo "Escribiendo en el fichero: <br>n";
 
 // escribimos 3 filas
 for($i = 0; $i < 3; $i ++) {
  $arrayFila = null;
  // de 10 elementos cada fila
  for($j = 0; $j < 10; $j ++) {
   // llenamos con números aleatorios
   $arrayFila [$j] = rand ( 1, 100 );
  }
  echo var_dump($arrayFila) . "<br>n"; 
  fputcsv ( $manejador, $arrayFila, "," );
 }
 
 fclose ( $manejador );
}

?>

Si lo ejecutamos veremos por pantalla lo siguiente en un navegador:

Leyendo el fichero:
21 – 89 – 7 – 16 – 76 – 18 – 52 – 51 – 58 – 52 –
80 – 3 – 20 – 6 – 83 – 64 – 21 – 73 – 14 – 80 –
7 – 30 – 23 – 75 – 71 – 9 – 96 – 56 – 47 – 25 –
Escribiendo en el fichero:

array (size=10)
  0 => int 8
  1 => int 71
  2 => int 98
  3 => int 71
  4 => int 26
  5 => int 96
  6 => int 3
  7 => int 54
  8 => int 9
  9 => int 51
array (size=10)
  0 => int 77
  1 => int 6
  2 => int 73
  3 => int 65
  4 => int 83
  5 => int 7
  6 => int 11
  7 => int 83
  8 => int 61
  9 => int 25
array (size=10)
  0 => int 78
  1 => int 13
  2 => int 71
  3 => int 31
  4 => int 22
  5 => int 44
  6 => int 92
  7 => int 89
  8 => int 43
  9 => int 77

También podemos ejecutarlo desde línea de comandos con ‘php nombrefichero.php’, para los que no tengan instalado un servidor web.

Espero que sirva para aclarar alguna cosa que no se explique en la documentación oficial, o por lo menos haya quedado más simple.

Un saludo.

Documentación oficial: http://php.net/manual/es/function.fgetcsv.php


Ya no hay excusa para no probar Linux

2014-05-05 - Categorías: General

Tengo un viejo ordenador en el que puse Linux Ubuntu 12. Va de maravilla para lo antiguo que es. Ronda los ocho años y es un ordenador lento de bajo consumo. Con poca memoria, y aunque ha tenido una vida ajetreada está dando lo mejor de sí mismo hasta el último momento como servidor de pruebas, para páginas web o ficheros entre otras cosas.

Hace poco me dejaron a ver si podía arreglar un pequeño Notebook. De aquellos que se pusieron de moda cuando los vendían por menos de 200 euros. Estaba dando muchos fallos: a veces pantalla negra al arrancar, a veces se veia el escritorio más pequeño de lo normal, pero al mover la pantalla cambiaba de tamaño y de colores. Estaba muy lento corriendo el ya obsoleto Windows XP.

Total que, ya puestos en escena, decidido a arreglarlo pienso en instalarle el último Linux de moda, el Ubuntu 14 LTS con escritorio Gnome por supuesto. Pero no tenía CDROM, asi que navegando encontré el programa por el que les escribo éste post, el Linux Live USB Creator, o LiLi para los amigos.

Según pone en la web, tenemos de la mano de Thibaut Lauzière éste fenómeno programa. Con él podemos elegir una distribución de Linux y creamos, siguiendo las instrucciones de instalación, un live USB.

Pero ahora pensará, ¿qué es eso de live? Simplemente es un USB que se puede arrancar. Lo ponemos en un ordenador que tenga arranque desde USB y listo, a usar el Linux que hayamos elegido. No será obligatorio instalarlo en el disco duro, sino que se usará grabando los datos en el propio USB. Necesitaremos activar en la BIOS dicho arranque si no lo está ya. Últimamente todos los ordenadores que he han pasado por mis manos tienen éste arranque disponible.

Ya no hay excusa para no probar un Linux. Aquello de que Linux es para informáticos. Que es complicado de instalar y de usar ya no es así. Podemos de ésta manera disfrutar de éstos sistemas operativos, probarlos, trastearlos, configurarlos, romperlos, sin miedo a tener que volver a hacer complejas instalaciones. Simplemente reinstalas el sistema en el USB y a correr. Y todo ésto gratis, siguiendo la filosofía original de GNU/Linux. Aunque no sea Open Source esperemos que siga siendo gratis por mucho tiempo. Personalmente pienso que es muy buen programa, aparte de que ayuda mucho a la comunidad de linuxeros haciendo más fácil que nuevas personas pasen y vean las bondades de Linux.

Aquí su web:
http://www.linuxliveusb.com/

Un saludo.


Aumentar la vida del disco duro

2014-02-25 - Categorías: General
En éstos días he tenido acceso a un ordenador que ha estado trabajando con archivos grandes, generados de resultado de renderizados 3D. El ordenador ha estado trabajando duro y el disco se ha muerto. Asunto normal teniendo en cuenta la gran carga de trabajo hecho.
No ha quedado otra solución que reemplazar el disco duro, reinstalar el sistema operativo y a seguir funcionando. Pensando en ello, tengo un sistema operativo Windows, igual que el equipo en cuestión. Y resulta que hace tiempo que no desfragmentaba. Con lo que me encontré en uno de los discos la imagen del disco bastante fragmentada que adjunto.

La desfragmentación en Windows

La fragmentación ocurre cuando grabamos archivos en el disco duro en trozos dispersos. Sería mejor que un mismo archivo estuviera en el disco en el mismo sitio, mejorando así su lectura y evitando que el cabezal de lectura del disco vaya dando saltos buscando los trozos del archivo, cosa que reduce la vida del mismo aparte de su velocidad de respuesta.
Aún tenemos en los sistemas de Microsoft el problema de la fragmentación. Cuando teníamos los sistemas de archivos antiguos tipo FAT la desfragmentación era más grave. Con los nuevos sistemas de archivos NTFS se ha mejorado pero sigue pasando, con lo que el desfragmentado viene siendo necesario. Cosa que no ocurre en otros sistemas. Pero ¿porqué ocurre? ¿no sería más fácil grabar los archivos sin partirlos?
La fragmentación ocurre porque Windows da más importancia a que los datos se graben rápidamente, con lo que ahí donde esté el cabezal empezará a grabar y si queda sin espacio contiguo partirá el fichero en trozos más o menos dispersos dependiendo del espacio libre. Además si un archivo crece en tamaño y no hay espacio libre hasta el siguiente archivo entonces se fragmenta. Ésto se ha mejorado con el nuevo NTFS, dejando más espacio libre entre archivo y archivo por si acaso crece en tamaño. Pero tarde o temprano se torna necesario desfragmentar.

Otros sistemas

En los equipos Mac también ocurre la desfragmentación. En Linux, con los sistemas de archivos ‘ext’ se ha solucionado casi totalmente éste problema porque directamente dispersa los archivos por el disco duro asegurándose que no haga falta fragmentarlos. Produciéndose la desfragmentación sobre la marcha donde sólo permite un 1% de archivos fragmentados. Aunque también hay herramientas con las que se puede desfragmentar un sistema Linux.

Mejorando

Resumiendo, si queremos entonces evitar en la medida de lo posible que tu disco duro vaya dando saltos adelante y atrás, moviéndose entre discos, sectores y cilindros para leer y escribir tus datos lo que debemos hacer es desfragmentar el disco duro de vez en cuando.
En Windows 7 tenemos el desfragmentador en el botón de Inicio -> Accesorios -> Herramientas del sistema -> Desfragmentador de disco
Hay muchas soluciones en el mercado, de entre ellas, para uso personal tenemos el famoso Defraggler. Es muy completo, te permite incluso elegir qué archivos quieres compactar entre sus numerosas opciones.
Un saludo!

Probando Bootstrap 3

2014-02-17 - Categorías: General

Cada vez menos ordenadores de sobremesa visitan las páginas web. Se venden ingentes cantidades de dispositivos que no son los clásicos ordenadores como tablets, smartphones, smart TV.. Los visitantes de una web necesitan que la página sea compatible con todo tipo de dispositivos. Bootstrap de Twitter está muy de moda, a fecha de hoy van por la versión 3.1.1 así que aprovechando para ponerme al día les dejo éste post. Al grano..

Bootstrap de Twitter es un framework de desarrollo para hacer aplicaciones web compatibles con todo tipo de dispositivos. El modelo de desarrollo cambia totalmente al modo habitual porque se da preferencia a los dispositivos móviles siendo su adaptación primera, antes que para escritorios de ordenador. Para verlo claro más abajo veremos cómo el mismo menú en caso de tener una pantalla ancha se verá en horizontal como en la imagen de arriba. Si tenemos una pantalla estrecha se visualizará desplegándose hacia abajo para que quepa todo.
Lo mismo sucede con el resto de las páginas diseñadas con Bootstrap, se adaptan según cambia el tamaño del navegador. Así tendremos una web que se puede ver correctamente en cualquier dispositivo.

Esbozando la web

Para que sea lo máximo posible compatible necesitamos utilizar el estándar HTML5 con lo que la primera estructura quedará así:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Probando Bootstrap Twitter</title>

</head>
<body>

</body>
</html>
Es importante saber que con la metaetiqueta «viewport» definimos la escala inicial de la página. Ésto se utiliza para agrandar o disminuir con la función de zoom de los navegadores.

Añadiendo los archivos externos

Prefiero descagar los archivos de las páginas oficiales (getbootstrap.com) y usarlos dentro del proyecto en cuestión. Pero para simplificar ésta primera plantilla he puesto los CDN. Será necesario tener conexión a Internet para ejecutar la web y se vean el aspecto estilo Bootstrap. Si los incluyes dichos archivos no será necesario Internet. Añadimos dentro del <head> lo siguiente:
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap-theme.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="https:///netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>

Ésto simplemente enlaza a los archivos públicos que tenemos en Internet. Te ahorras espacio usando los CDN, pero dependes de que dichos archivos estén disponibles para que tu web funcione correctamente.

Algunos componentes para probar

A continuación he puesto un menú de navegación y tres paneles, uno simple, otro con título y un tercero con título con estilo de cabecera. Añadiendo en el body lo siguiente tendremos la barra de navegación que viene en la documentación oficial:
        <nav class="navbar navbar-default" role="navigation">
<!-- El logotipo y el
icono
que despliega el menú se
agrupan
para mostrarlos mejor en
los
dispositivos móviles -->
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse"
data-target=".navbar-ex1-collapse">
<span class="sr-only">Desplegar navegación</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Logotipo</a>
</div>

<!-- Agrupar los enlaces
de
navegación, los
formularios y
cualquier
otro elemento que se
pueda
ocultar al minimizar la
barra
-->
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav">
<li class="active">
<a href="#">Enlace #1</a>
</li>
<li>
<a href="#">Enlace #2</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"> Menú #1 <b class="caret"></b> </a>
<ul class="dropdown-menu">
<li>
<a href="#">Acción #1</a>
</li>
<li>
<a href="#">Acción #2</a>
</li>
<li>
<a href="#">Acción #3</a>
</li>
<li class="divider">
</li>
<li>
<a href="#">Acción #4</a>
</li>
<li class="divider">
</li>
<li>
<a href="#">Acción #5</a>
</li>
</ul>
</li>
</ul>

<form class="navbar-form navbar-left" role="search">
<div class="form-group">
<input type="text" class="form-control" placeholder="Buscar">
</div>
<button type="submit" class="btn btn-default">
Enviar
</button>
</form>

<ul class="nav navbar-nav navbar-right">
<li>
<a href="#">Enlace #3</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"> Menú #2 <b class="caret"></b> </a>
<ul class="dropdown-menu">
<li>
<a href="#">Acción #1</a>
</li>
<li>
<a href="#">Acción #2</a>
</li>
<li>
<a href="#">Acción #3</a>
</li>
<li class="divider">
</li>
<li>
<a href="#">Acción #4</a>
</li>
</ul>
</li>
</ul>
</div>
</nav>
Incluyendo dentro del body también lo siguiente tenemos los tres paneles citados:
        <div class="container">
<div class="panel panel-default">
<div class="panel-body">

<h1>¡Hola Mundo!</h1>

</div>
</div>

<div class="panel panel-default">
<div class="panel-heading">
¡Hola Mundo!
</div>
<div class="panel-body">
Contenido del panel
</div>
</div>

<div class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">¡Hola Mundo!</h2>
</div>
<div class="panel-body">
Contenido del panel
</div>
</div>
</div>
Nota que los paneles están dentro de un <div class=»container»>. Éste div contenedor se suele usar para el contenido de la web, alinea lo que tengas dentro, para algunos componentes es necesario si no puede que no se vean bien.

Ahora es el momento de probar con un móvil el fichero, o con una tablet. Si quieres verlo claro directamente en el ordenador puedes estrechar horizontalmente el navegador con la página cargada y verás cómo se modifica el aspecto.

Usando archivos incluidos en el proyecto

Si descargamos y descomprimimos los archivos de la página oficial getbootrap.com, tendremos tres directorios con todos los archivos necesarios menos jQuery. jQuery lo podemos descargar de su página oficial http://code.jquery.com/jquery-2.1.0.min.js y copiarlo al directorio js. Ahora tendremos un directorio /css otro /fonts y un tercero /js con todo incluido. En éste caso viendo los archivos que tengamos según la versión podremos incluir en la cabecera el código siguiente:
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/bootstrap-theme.min.css">
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>

Mira que las rutas relativas a los archivos sean correctas y que dichos archivos estén en su sitio, sino no funcionará.

Resumiendo

Entonces el archivo completo de pruebas con los archivos necesarios incluidos en el directorio del proyecto quedará tal que así:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Probando Bootstrap Twitter</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/bootstrap-theme.min.css">
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</head>
<body>

<nav class="navbar navbar-default" role="navigation">
<!-- El logotipo y el
icono
que despliega el menú se
agrupan
para mostrarlos mejor en
los
dispositivos móviles -->
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse"
data-target=".navbar-ex1-collapse">
<span class="sr-only">Desplegar navegación</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Logotipo</a>
</div>

<!-- Agrupar los enlaces
de
navegación, los
formularios y
cualquier
otro elemento que se
pueda
ocultar al minimizar la
barra
-->
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav">
<li class="active">
<a href="#">Enlace #1</a>
</li>
<li>
<a href="#">Enlace #2</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"> Menú #1 <b class="caret"></b> </a>
<ul class="dropdown-menu">
<li>
<a href="#">Acción #1</a>
</li>
<li>
<a href="#">Acción #2</a>
</li>
<li>
<a href="#">Acción #3</a>
</li>
<li class="divider">
</li>
<li>
<a href="#">Acción #4</a>
</li>
<li class="divider">
</li>
<li>
<a href="#">Acción #5</a>
</li>
</ul>
</li>
</ul>

<form class="navbar-form navbar-left" role="search">
<div class="form-group">
<input type="text" class="form-control" placeholder="Buscar">
</div>
<button type="submit" class="btn btn-default">
Enviar
</button>
</form>

<ul class="nav navbar-nav navbar-right">
<li>
<a href="#">Enlace #3</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"> Menú #2 <b class="caret"></b> </a>
<ul class="dropdown-menu">
<li>
<a href="#">Acción #1</a>
</li>
<li>
<a href="#">Acción #2</a>
</li>
<li>
<a href="#">Acción #3</a>
</li>
<li class="divider">
</li>
<li>
<a href="#">Acción #4</a>
</li>
</ul>
</li>
</ul>
</div>
</nav>

<div class="container">
<div class="panel panel-default">
<div class="panel-body">

<h1>¡Hola Mundo!</h1>

</div>
</div>

<div class="panel panel-default">
<div class="panel-heading">
¡Hola Mundo!
</div>
<div class="panel-body">
Contenido del panel
</div>
</div>

<div class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">¡Hola Mundo!</h2>
</div>
<div class="panel-body">
Contenido del panel
</div>
</div>
</div>

</body>
</html>
Si todo ha ido bien debemos de ver la página como la de la imagen de al lado cuando hacemos la ventana del navegador estrecha. Espero haber resumido correctamente la documentación oficial como para poder empezar a jugar con el framework Bootstrap.

Sólo me queda decir que los ejemplos de componentes que he puesto los he sacado de la documentación oficial, en ella estan todos los que hay disponibles. Como por ejemplo el uso de rejillas, las fuentes para los pequeños gráficos incluidos, y un largo etcétera..

Saludos!


Validación de páginas web

2014-02-09 - Categorías: General
Hace tiempo que no escribo, parece que estoy olvidándome de la programación pero no es así. He estado bastante liado, tal vez demasiados proyectos o demasiado «querer hacer». El que mucho abarca poco aprieta, o el que mucho aprieta poco abarca :S así que espero seguir escribiendo, aunque sea los fines de semana.

En éstos días he estado viendo cómo se puede medir la calidad de una página web. Desde un punto de vista se puede medir la cantidad y calidad de los algoritmos que trabajan en la parte servidor, sus funciones o servicios que dan. Por otro lado tenemos las validaciones de la parte cliente, si cumple con los estándares de los lenguajes..

Unos chequeos que podemos hacer para validar la parte cliente:
Otras herramientas: http://www.w3.org/QA/Tools/
Con ésto ya hay para hacerle algunos checkeos automáticos. Son pocas las webs que cumplen con todos los estándares, pero la organización mundial donde se organiza todo ésto está ahí haciendo su trabajo, queda de nuestra mano todo lo demás sino te arriesgarás a que la web pueda no funcionar bien en algunos navegadores. Ten en cuenta también que cumpliendo con la accesibilidad le hecharás una mano a personas que tienen problemas visuales, a los que necesitan traductores automáticos, de otras culturas, y un largo etcétera. La accesibilidad es algo muy importante y se nos pueden pasar por alto.
Por otro lado tenemos también los criterios de diseño como por ejemplo: «Si algo es un botón que parezca un botón.» no le pongamos una imagen con luces intermitentes.. ésto ya es otro tema, a ver si pronto tengo tiempo.. Si estás leyendo ésto gracias por haber llegado hasta aquí 🙂
Un saludo!

© 2022 JnjSite.com - MIT license

Sitio hecho con WordPress, diseño y programación del tema por Jnj.