Quantcast
Channel: Planeta Linux Venezuela
Viewing all 1457 articles
Browse latest View live

Erick Birbe: Hacer Paquetes de Configuración para Debian

$
0
0
En este enlace de la wiki de Debian se encuentran reseñados varios consejos, herramientas y mejores prácticas que pueden servir para mejorar los paquetes de configuración de Canaima y para aquellas personas o instituciones que deseen personalizar su Canaima automatizando a través de paquetes la aplicación de sus configuraciones.

Jesus Palencia: MyGit un script para automatizar tareas en Git

$
0
0

Este script en Bash nos permite automatizar tareas en Git como la subida de archivos al servidor, así como también la creación del archivo de cambios (changelog).

Su uso es bastante sencillo, solo hace falta ejecutarlo de la siguiente forma.

mygit.sh up|change|change-all|refresh

Entre las opciones que encontramos en este script están las siguientes.

  • up: sube los últimos cambios al servidor.
  • change: crea el archivo de cambios.
  • change-all: crea el archivo de cambios de todos proyectos en un directorio.
  • refresh: sincroniza la rama con su servidor.

Este script se encuentra disponible para su descarga desde su repositorio en Github.


Tagged: git, script

Jesus Palencia: Feliz Navidad!!!

$
0
0

No son los adornos, no es la nieve, no es el árbol, ni los regalos. La Navidad es el calor que vuelve al corazón de las personas, la generosidad de compartirla con otros y la esperanza de seguir unidos en paz.

feliz_navidadFeliz Navidad!!!


Jesus Palencia: Instalar Webmin en Debian y derivados

$
0
0

Webmin es un interfaz basada en la web para la administración de sistema GNU/Linux. Utilizando cualquiera de los navegadores web modernos podemos administrar usuarios, Apache, DNS, Samba y mucho más. Webmin elimina la necesidad de editar archivos de configuración pero manteniendo la posibilidad de administrar el sistema de manera local o remota.

Existen paquetes para casi todas las plataformas y su instalación en Debian es bastante sencilla.

  • Descargamos el paquete desde aquí.
  • Abrimos un terminal (como root) e instalamos las dependencias necesarias.
# apt install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python
  • Abrimos un terminal (como root) y vamos al directorio donde descargamos el paquete y lo instalamos con el siguiente comando.
# dpkg -i *.deb
  • Al finalizar solo hace falta abrir un navegador e ir a la siguiente dirección http://localhost:10000 e ingresamos con nuestras credenciales.

Espero les sea útil…

Referencias:


Tagged: debian, webmin

Miguel Ángel Useche: CrudGen 1.0 un generador de CRUD para Postgresql

$
0
0

CrudGen fue mi proyecto de tesis de mis estudios de pregrado, consiste en un generador de páginas Create, Report, Update y Delete para base de datos PostgreSQL utilizando el gestor phpPgAdmin. Es uno de los plugines “oficiales” del proyecto y al encontrar un poco de tiempo libre decidí actualizarlo para añadir ligeras mejoras, compatibilidad y mantener vivo el proyecto.

Hoy he lanzado la versión 1.0, pues considero que el plugin cumple con la tarea inicial para la que fue desarrollada y es compatible con las últimas versiones de Postgres y phpPgAdmin, el administrador web de la base de datos. Si te interesa el proyecto, ver como funciona y aprender a crear páginas web rápidamente usando esta herramienta, puedes ver mi entrada sobre este generador de páginas web para PostgreSQL usando phppgadmin que incluye vídeos, información, entre otros.

Página de REPORT de Crudgen

Ejemplo de una página de visualización usando CrudGen

Finalmente, te invito a chequear el código en el sitio de CrudGen en Github, para utilizarlo o colaborar con cualquier aporte. Deseo que lo prueben y reporten errores, y si son desarrolladores frontend, me gustaría que colaboraran con plantillas para las páginas generadas.

Gabriel Vegas: FAT filesystem – bad superblock

$
0
0
Tiempo sin publicar nada. Hace poco tuve un problema con una memoria sd, movía unos archivos y el Gala de Elementary OS se congelo. Me salia el siguiente error : mount:/dev/sdf1 can’t read superblock Con sudo fdisk -l /dev/sdf me salia: Disco /dev/sdf1: 1973 MB, 1973416448 bytes 61 cabezas, 62 sectores/pista, 1019 cilindros, 3854329 sectores…

Ernesto Crespo: Configurando un sitio estático con flask

$
0
0

Continuando con la serie de artículos sobre el microframework de desarrollo web flask, ahora se mostrará como crear un sitio estático.

Este artículo se basa en un artículo en inglés llamado Introduction to Flask, Part 1 - Setting up a static site.

Se usará el mismo archivo utilizado en los artículos anteriores (app.py), en este caso simplemente se agregará el decorador y la función que se va a usar que será para llamar una página de bienvenida.

Aparte del archivo app.py se necesita crear dos directorios, uno llamado templates el cual contendrá la plantilla html y el otro se llamará static que contendrá archivos estáticos como archivos css y archivos javascript.

ernesto@heimdall:~/proyectos/tutorialflask$ ls -l
total 12
-rw-r--r-- 1 ernesto ernesto  792 jun  7 20:56 app.py
drwxr-xr-x 2 ernesto ernesto 4096 jun  7 21:09 static
drwxr-xr-x 2 ernesto ernesto 4096 jun  7 21:10 templates

El archivo app.py tendrá la siguiente información adicional:

#Se agrega el renderizado de la plantilla

from flask import Flask,request,redirect,render_template









#Se usa el decorador ruta para ver el url bienvenido.


@app.route('/bienvenido')


#Se crea la funcion welcome que renderiza una plantilla html.


def welcome():


    return render_template('bienvenido.html')  # renderiza la plantilla bienvenido.html.






Ahora en el directorio templates se crea el archivo bienvenido.html con el siguiente contenido:



Se ejecuta la aplicación y se consulta el url http://127.0.0.1:5000/bienvenido


Ahora se usará un estilo que se llama bootstrap para descargarlo lo puede hacer desde el enlace. Al bajarlo y descomprimirlo copie los archivos bootstrap.min.css y bootstrap.min.js al directorio static, como se muestra a continuación:
ernesto@heimdall:~/proyectos/tutorialflask$ ls -l static/
total 132
-rw-r--r-- 1 ernesto ernesto 99961 feb 13 12:54 bootstrap.min.css
-rw-r--r-- 1 ernesto ernesto 29110 feb 13 12:54 bootstrap.min.js


A continuación se muestra los nuevos cambios a la plantilla bienvenido.html para que use los archivos mencionados anteriormente.

Ahora se abre el navegador al url http://127.0.0.1:5000/bienvenido y se obtiene lo que muestra la siguiente figura:

Jesus Palencia: Instalar Kodi (anteriormente XBMC) en Ubuntu o Mint

$
0
0

Kodi (antes conocido como “Xbox Media Center” o XBMC) es un centro multimedia de entretenimiento multi-plataforma bajo la licencia GPL, inicialmente creado para la primera generación de la videoconsola Xbox. Sin embargo, el equipo de desarrollo de Kodi ha portado el producto para que pueda correr de manera nativa en Linux, Mac OS X, los sistemas operativos de Microsoft Windows y en la consola Ouya.

Kodi soporta una amplia gama de formatos multimedia, e incluye características tales como listas de reproducción, visualizaciones de audio, presentación de diapositivas, reportes del clima y ampliación de funciones mediante plug-ins. Como Media Center, Kodi puede reproducir la mayoría de los formatos de audio y vídeo, así como mostrar imágenes prácticamente de cualquier fuente, incluidos CD, DVD, dispositivos de almacenamiento masivo, Internet y elementos compartidos en LAN.

Para instalarlo en Ubuntu o Mint solo hace falta instalar unas dependencias y el PPA oficial mediante los siguientes comandos.

# apt install python-software-properties pkg-config software-properties-common
# add-apt-repository ppa:team-xbmc/ppa
# apt update
# apt install kodi

También existe una distribución de GNU/Linux basada en Ubuntu llamada Kodibuntu que trae instalado todo lo necesario para ejecutar Kodi sin tener que realizar complicadas configuraciones, para descargarlo haga clic aquí.

Referencias:


Tagged: kodi, mediacenter

Jesus Palencia: Dotsch/UX una distribución GNU/Linux para colaborar con BOINC

$
0
0

BOINC cuenta con una gran comunidad que tiene como objetivo contribuir con capacidad de computo para los proyectos gestionados por BOINC y con herramientas que facilitan ese proceso, en este apartado es donde se ubica Dotsch/UX una distribución GNU/Linux basada en Ubuntu que cuenta con muchas aplicaciones para ayudar en el despliegue de una infraestructura dedicada a la computación distribuida con BOINC.

Aparte de tener instalado el cliente de BOINC por defecto (acá se explica como instalar BOINC en Debian), tiene una interfaz que permite configurar un servidor para luego iniciar múltiples clientes diskless (sin disco) y luego asignarles tareas mediante BOINC, entre sus principales características podemos encontrar las siguientes.

  • Consumo de RAM reducido: 128 Mb para la interfaz gráfica.
  • Consumo de disco reducido: requiere 2.5 GB.
  • CUDA: los controladores NVIDIA CUDA vienen instalados por defecto.

Dotsch/UX es una excelente distribución muy fácil de instalar, esta disponible en versiones para 32 y 64 bits y puede ser descargado desde aquí.

Referencias:


Tagged: boinc, colaborar, dotsch/ux

Jesus Palencia: Historia de Mozilla Firefox

$
0
0

En sus comienzos, la historia de la navegación web tuvo altos y bajos desde el proyecto arpanet hasta el nuevo milenio. Antes del célebre Internet Explorer, los navegadores tuvieron que desplazarse por el texto, seguido de imágenes y animaciones. El auge de las empresas hechas en Silicon Valley motivó que la alguna vez HyperCard fuera el precursor comercial para surgir avances fusionados; y Mosaic, el gran impulsor.

Firefox comenzó como una rama experimental del proyecto Mozilla a cargo de Dave Hyatt, Joe Hewitt y Blake Ross. A su juicio, las exigencias comerciales del patrocinio de Netscape y el gran número de características de Mozilla Application Suite comprometían la utilidad de este. Para combatir lo que ellos denominaban inflada Mozilla Application Suite, crearon un navegador independiente con la intención de reemplazarla.

Dave Hyatt y Blake Ross decidieron aislar la rama matriz para centrarse en un solo proyecto para la navegación web. Previamente, la multinacional estadounidense AOL quiso que Netscape, no pusiera mucha atención en Internet Explorer, si no en un prototipo multiusos: Chat IRC, e-mail y navegador web. Una de las motivaciones para promover un modelo de desarrollo distinto fue mediante el libro The Cathedral and the Bazaar (La catedral y el bazar) de Eric S. Raymond. El libro, que motiva a las personas en mantener el equipo con otras más, cita que tratar a los usuarios como colaboradores es la forma más apropiada de mejorar el código, y la más efectiva de depurarlo.

phoenixEl navegador cambió varias veces de nombre. Originalmente fue llamado Phoenix cuando, por razones legales, debió ser cambiado al estar ya registrado por el desarrollador de BIOS Phoenix Technologies. El nombre elegido fue «Firebird» (Pájaro de Fuego), lo que provocó una polémica por parte la base de datos Firebird. El 3 de abril de 2003, la Organización Mozilla anuncia que centrarán sus esfuerzos en Firefox y Thunderbird.

Sin embargo, la presión constante de la comunidad forzó a que, tras barajar otros nombres como «Firebird Browser» y «Mozilla Firebird», el 9 de febrero de 2004 se rebautizara finalmente como Mozilla Firefox, a menudo referido simplemente como «Firefox» y abreviado como «Fx» o «fx», o más común como «FF». Este nombre se eligió por su semejanza con Firebird y por ser único en la industria informática. Para garantizar la estabilidad del nuevo nombre, la Fundación Mozilla empezó en diciembre de 2003 el procedimiento para su registro como una marca depositada en Estados Unidos.

Aunque muestra una evidente inconsistencia con los nombres de los proyectos hermanos de Mozilla mencionados anteriormente, el nuevo nombre y logotipo del navegador fueron rápidamente aceptados. Mientras algunos usuarios se irritaron por estos cambios de nombre sucesivos, otros lo tomaron como filosofía.

Con más de 25 millones de descargas en los 99 días siguientes a la publicación de la versión 1.0, Firefox se convirtió en una de las aplicaciones libres más descargadas, especialmente entre los usuarios domésticos. El 19 de octubre de 2005, Firefox había alcanzado la cifra de 100 millones de descargas en menos de un año (344 días). La versión 1.5 llegó el 29 de noviembre de 2005, superándose la cota de los 2 millones de descargas en las primeras 36 horas.

Extended Support Release

En enero de 2012 la Fundación Mozilla anuncia la disponibilidad de una versión Extended Support Release (versión con soporte extendido) de Firefox. Firefox ESR está dirigida a aquellos grupos quienes despliegan y mantienen entornos de desarrollo en grandes organizaciones como universidades, países o gobiernos y empresas. Está disponible para Windows, Mac y Linux.

ESR se actualiza de forma automática durante 9 ciclos (54 semanas), pero dos ciclos antes de finalizar se publica la siguiente versión. Por ejemplo, ESR salta desde 10.0 a 17.0, luego a 24.0, y así sucesivamente.

Cada seis semanas es publicada una nueva versión en la línea principal de desarrollo de Firefox siguiendo el ciclo de desarrollo acelerado. Las versiones ESR seguirían este calendario. Por ejemplo, ESR 10.0.1 estaría prevista para ser publicada al mismo tiempo que Firefox 11. Luego se publicarían ESR 10.0.2, 10.0.3, etc. Para Firefox 16, ESR alcanzaría la versión 10.0.6. Para la versión 17 se iniciaría un nuevo ciclo de ESR, pero aún no habría finalizado el ciclo ESR anterior (es decir las versiones 17 y 18 tendrían dos versiones con soporte extendido). Tal que así: ESR 10.0.7 junto a ESR 17.0.0; ESR 10.0.8 con ESR 17.0.1. Finalmente, cuando Firefox (la línea principal) alcance la versión 19.0, ESR 10.0.x llegaría a su fin de ciclo coincidiendo con la publicación de ESR 17.0.2. El ciclo se volvería a repetir sucesivamente.


Tagged: firefox, historia

Jesus Palencia: Historia del proyecto GNU

$
0
0

El proyecto GNU fue iniciado por Richard Stallman con el objetivo de crear un sistema operativo completamente libre. El 27 de septiembre de 1983 se anunció públicamente el proyecto por primera vez en el grupo de noticias net.unix-wizards. Al anuncio original, siguieron otros ensayos escritos por Richard Stallman como el “Manifiesto GNU“, que establecieron sus motivaciones para realizar el proyecto GNU, entre las que destaca “volver al espíritu de cooperación que prevaleció en los tiempos iniciales de la comunidad de usuarios de computadoras”.

Para asegurar que el software GNU permaneciera libre para que todos los usuarios pudieran “ejecutarlo, copiarlo, modificarlo y distribuirlo”, el proyecto debía ser liberado bajo una licencia diseñada para garantizar esos derechos al tiempo que evitase restricciones posteriores de los mismos. La idea se conoce en Inglés como copyleft (lo cual significa que el autor permite la distribución libre del mismo, en clara oposición a copyright o “derecho de autor”), y está contenida en la Licencia General Pública de GNU (GPL).

En 1985, Stallman creó la Free Software Foundation (FSF o Fundación para el Software Libre) para proveer soportes logísticos, legales y financieros al proyecto GNU. La FSF también contrató programadores para contribuir a GNU, aunque una porción sustancial del desarrollo fue (y continúa siendo) producida por voluntarios. A medida que GNU ganaba renombre, negocios interesados comenzaron a contribuir al desarrollo o comercialización de productos GNU y el correspondiente soporte técnico. El más prominente y exitoso de ellos fue Cygnus Solutions.

En 1990, el sistema GNU ya tenía un editor de texto llamado Emacs, un exitoso compilador (GCC), y la mayor parte de las bibliotecas y utilidades que componen un sistema operativo UNIX típico. Pero faltaba un componente clave llamado núcleo.

En el manifiesto GNU, Stallman mencionó que “un núcleo inicial existe, pero se necesitan muchos otros programas para emular Unix”. Él se refería a TRIX, que es un núcleo de llamadas remotas a procedimientos, desarrollado por el MIT y cuyos autores decidieron que fuera libremente distribuido; TRIX era totalmente compatible con UNIX versión 7. En diciembre de 1986 ya se había trabajado para modificar este núcleo. Sin embargo, los programadores decidieron que no era inicialmente utilizable, debido a que solamente funcionaba en “algunos equipos sumamente complicados y caros” razón por la cual debería ser portado a otras arquitecturas antes de que se pudiera utilizar. Finalmente, en 1988, se decidió utilizar como base el núcleo Mach desarrollado en la CMU. Inicialmente, el núcleo recibió el nombre de Alix (así se llamaba una novia de Stallman), pero por decisión del programador Michael Bushnell fue renombrado a Hurd. Desafortunadamente, debido a razones técnicas y conflictos personales entre los programadores originales, el desarrollo de Hurd acabó estancándose.

En 1991, Linus Torvalds empezó a escribir el núcleo Linux y decidió distribuirlo bajo la licencia GPL. Rápidamente, múltiples programadores se unieron a Linus en el desarrollo, colaborando a través de Internet y consiguiendo paulatinamente que Linux llegase a ser un núcleo compatible con UNIX. En 1992, el núcleo Linux fue combinado con el sistema GNU, resultando en un sistema operativo libre y completamente funcional. El Sistema Operativo formado por esta combinación es usualmente conocido como “GNU/Linux” o como una “distribución Linux” y existen diversas variantes.

Si desea saber mas del proyecto GNU puede ir a la siguiente dirección, donde encontrara la historia del proyecto narrada por el mismo Richard Stallman además de algunas definiciones relacionadas con el tema.


Tagged: gnu, historia

Jesus Palencia: Historia del núcleo Linux

$
0
0

Linus Benedit Torvalds nació en Helsinki, Finlándia, en el año de 1969. Su abuelo, matemático y estadista le compró un Comodore en 1980 y fue quien “enganchó” a Linus al mundo de los computadores.

En 1988 Linus Torvalds entra a la Universidad. Ese mismo año fue cuando el sistema operativo didáctico, basado en UNIX y creado por Andy Tannenbaum, empezó a cobrar importancia. Dicho sistema era el Minix.

Linus entró a formar parte de la comunidad de usuarios Minix. Andy Tannenbaum cometió un error en su sistema operativo, era demasiado limitado, tanto técnicamente como políticamente, en ningún momento tuvo en cuenta la posibilidad de incluir Minix al proyecto GNU. Su primer error fue ceder todos sus derechos a Prentice Hall, que empezó a cobrar 150 dólares por licencia.

Así, Linus tomó la decisión de cambiar esta política debido a que el sistema Minix era ideal para los estudiantes de sistemas operativos, y su precio era considerablemente alto.

Año 1991, cuando Linus con 23 años se acababa de comprar su primer 386, la intención era crear un nuevo Kernel de UNIX basado en el Kernel de Minix y modificarlo periódicamente de manera que fuera capaz de ejecutar aplicaciones GNU. Esto fue al principio un emulador terminal, al cual Torvalds solía tener acceso en los grandes servidores UNIX de la universidad. Él escribió el programa expresamente para el hardware que usaba, e independiente de un sistema operativo, porque quiso usar las funciones de su nueva computadora personal con un procesador 80386. Este es aún el estándar de hoy, el compilador inicial fue el GNU C compiler, que aún es la opción principal para compilar Linux hoy (aunque Linux puede ser compilado bajo otros compiladores, tal como el Intel C Compiler).

Como Torvalds escribió en su libro “Solamente por diversión”), él tarde o temprano comprendió que había escrito un núcleo de sistema operativo. El 25 de agosto de 1991, 20:57:08 GMT, anunció este sistema en un envío a la red Usenet, en el newsgroup comp.os.minix.:

Hola a todos aquellos que usan Minix -

Estoy haciendo un sistema operativo (gratuito) (solamente una afición, no será grande ni profesional como el GNU) para clones 386(486) AT. Este ha estado gestándose desde abril, y está comenzando a estar listo. Me gustaría recibir cualquier comentario sobre las cosas que gustan/disgustan en minix, ya que mi SO (Sistema Operativo) se le parece un poco (la misma disposición física del sistema de archivos, debido a motivos prácticos, entre otras cosas).

Actualmente he portado bash(1.08) y gcc(1.40), y las cosas parecen funcionar. Esto implica que conseguiré algo práctico dentro de unos meses, y me gustaría saber qué características quiere la mayoría de la gente. Cualquier sugerencia es bienvenida, pero no prometeré que las pondré en práctica :-)

Linus Benedict Torvalds (torvalds@kruuna.helsinki.fi)

PD. Sí – es libre de cualquier código de minix, y tiene un sistema de archivos multi-hilo. NO es portable (usa 386 una conmutación de tarea etc.), y probablemente nunca será soportada por nada más que los discos duros AT, porque es todo lo que tengo :-(.

Linus Torvalds

Linus Torvalds había querido llamar su invención Freax, una unión de varias palabras, la primera freak (anormal o raro), free (libre), y “X”, una alusión a Unix. Durante el inicio de su trabajo sobre el sistema, él almacenó los archivos bajo el nombre “Freax” por aproximadamente medio año. Torvalds ya había considerado el nombre “Linux”, pero al principio lo había descartado por ser demasiado egocéntrico o egoísta.

Para dar a otra gente la capacidad de cooperar en el sistema o sugerir mejoras, los archivos fueron colocados en el servidor ftp (ftp.funet.fi) de la Universidad de Tecnología de Helsinki (Helsinki University of Technology), en septiembre de 1991. Ari Lemmke, colega de Torvalds en la HUT, que en ese entonces era responsable de los servidores, no estuvo de acuerdo con el nombre Freax, prefiriendo el nombre Linux. Él simplemente llamó a los archivos colocados sobre el servidor “Linux” sin consultar a Torvalds. Más tarde, sin embargo, Torvalds accedió a usar el nombre “Linux”:

“Después de muchas discusiones, él finalmente admitió que Linux era simplemente el mejor nombre. En el código original de la versión 0.01 de Linux, el nombre Freax fue, sin embargo, usado en el makefile. Sólo después fue usado el nombre Linux. Así el nombre, en realidad, no planificado en absoluto se hizo generalmente aceptado por todo el mundo.”

Linux bajo la Licencia pública general de GPL

Torvalds primero publicó el núcleo Linux bajo su propia licencia, la cual fue casi una licencia de código fuente compartida (en inglés, share source) y que tenía una restricción contra la actividad comercial. En 1992, él sugirió cambiar a la GNU GPL. Primero anunció este cambio en las notas de lanzamiento de la versión 0.12.4

A mediados de diciembre de 1992 él publicó la versión 0.99 usando la GPL. Más tarde, Torvalds dijo en una entrevista, “registrar a Linux bajo la GPL fue definitivamente la mejor cosa que alguna vez hice”.


Tagged: historia, linux

Milton Mazzarri: Grunt: The Javascript Task Manager

$
0
0

Grunt

When you play the Web Developer role, sometimes you may have to endure some repetitive tasks like minification, unit testing, compilation, linting, beautify or unpack Javascript code and so on. To solve this problems, and in the meantime, try to keep your mental health in a good shape, you desperately need to find a way to automate this tasks. Grunt offers you an easy way to accomplish this kind of automation.

In this article I’ll try to explain how to automate some tasks with Grunt, but I recommend that you should take some time to read Grunt’s documentation and enjoy the experience by yourself.

So, in the following sections I’ll try to show you how to accomplish this tasks:

  • Concatenate and create a minified version of your CSS, JavaScript and HTML files.
  • Automatic generation of the documentation for JavaScript with JSDoc.
  • Linting your Javascript code.
  • Reformat and reindent (prettify) your Javascript code.

You can install Grunt via npm (Node Package Manager), so, in order to install Grunt you need to install Node.js first.

Now that you have Node.js and npm installed is a good time to installglobally the Grunt CLI (Command Line Interface) package.

$ sudo npm install -g grunt-cli

Once grunt-cli is installed you need to go to the root directory of your project and create a package.json file, to accomplish this you can do the following:

$ cd example_project$ npm init

The previous command will ask you a series of questions in order to create thepackage.json file, package.json basically store metadata for projects published as npm modules. It’s important to remember to add this file to your source code versioning tool to facilitate the installation of the development dependencies among your partners via npm install command.

At this point we can install Grunt and their respective plugins in the existing package.json with:

$ npm install grunt --save-dev

And the plugins that you need can be installed as follows:

$ npm install <grunt-plugin-name> --save-dev

Please note that the --save-dev parameter will modify your devDependencies section in your package.json. So, be sure to commit the updated package.json file with your project whenever you consider appropriate.

Code documentation

If you document your code following the syntax rules defined on JSDoc 3, e.g.:

/**  * A callback function returning array defining where the ticks  * are laid out on the axis.  *  * @function tickPositioner  * @see {@link http://api.highcharts.com/highstock#yAxis.tickPositioner}  * @param {String} xOrY - Is it X or Y Axis?  * @param {Number} min - Minimum value  * @param {Number} max - Maximum value  * @returns {Array} - Where the ticks are laid out on the axis.  */functiontickPositioner(xOrY,min,max){// do somethingreturntickPositions;}

If you need more information about JSDoc, read their documentation, it’s easy to catch up.

The next step to automate the generation of the code documentation is to install first the grunt-jsdoc plugin as follows:

$ npm install grunt-jsdoc --save-dev

Once grunt-jsdoc is installed you must create your Gruntfile.js in the root directory of your project and then add the jsdoc entry to the options of the initConfig method.

module.exports=function(grunt){// Project configuration.grunt.initConfig({pkg:grunt.file.readJSON('package.json'),jsdoc:{dist:{src:['src/*.js','test/*.js'],dest:'doc'}}});};

Then, you need to load the plugin after the initConfig method in theGruntfile.js:

// Load the plugin that provides the 'jsdoc' task.grunt.loadNpmtasks('grunt-jsdoc');

The resulting Gruntfile.js until now is:

module.exports=function(grunt){// Project configuration.grunt.initConfig({pkg:grunt.file.readJSON('package.json'),jsdoc:{dist:{src:['src/*.js','test/*.js'],dest:'doc'}}});// Load the plugin that provides the 'jsdoc' task.grunt.loadNpmtasks('grunt-jsdoc');};

To generate the documentation, you need to call the jsdoc task as follows:

$ grunt jsdoc

Immediately you can see, inside the doc directory, the available documentation in HTML format with some beautiful styles by default.

JSDoc

Linting your Javascript code

In order to find suspicious, non-portable or potential problems in Javascript code or simply to enforce your team’s coding convention, whatever may be the reason, I recommend that you should include a static code analysis tool in your toolset.

The first step is to define your set of rules. I prefer to specify the set of rules in an independent file called .jshintrc located at the root directory of the project, let’s see an example:

// file: .jshintrc{"globals":{"Highcharts":true,// This is only necessary if you use Highcharts"module":true// Gruntfile.js},"bitwise":true,"browser":true,"camelcase":true,"curly":true,"eqeqeq":true,"forin":true,"freeze":true,"immed":true,"indent":4,"jquery":true,"latedef":true,"newcap":true,"noempty":true,"nonew":true,"quotmark":true,"trailing":true,"undef":true,"unused":true}

If you need more details about the checks that offer every rule mentioned above, please, read the page that contains a list ofall options supported by JSHint

To install the grunt-contrib-jshint plugin do the following:

$ npm install grunt-contrib-jshint --save-dev

Next, proceed to add the jshint entry to the options of the initConfig method in the Gruntfile.js as follows:

jshint:{options:{jshintrc:'.jshintrc'},all:['Gruntfile.js','src/*.js','test/*.js']}

Then, as it’s done in the previous section, you need to load the plugin after the initConfig method in the Grunfile.js

// Load the plugin that provides the 'jshint' task.grunt.loadNpmTasks('grunt-contrib-jshint');

To validate your Javascript code against the previous set of rules you need to call the jshint task:

$ grunt jshint

Note that if you need more information or explanations about the errors that you may receive after the previous command I suggest that you should visitJSLint Error Explanations site.

Code Style

As I mentioned in the previous section, I suggest that you should maintain an independent file where you define the set of rules about your coding styles:

// file: .jsbeautifyrc{"indent_size":4,"indent_char":" ","indent_level":0,"indent_with_tabs":false,"preserve_newlines":true,"max_preserve_newlines":2,"jslint_happy":true,"brace_style":"collapse","keep_array_indentation":false,"keep_function_indentation":false,"space_before_conditional":true,"break_chained_methods":false,"eval_code":false,"unescape_strings":false,"wrap_line_length":0}

Next, proceed to add the jsbeautifier entry to the options of the initConfig method in the Gruntfile.js as follows:

jsbeautifier:{modify:{src:'index.js',options:{config:'.jsbeautifyrc'}},verify:{src:['index.js'],options:{mode:'VERIFY_ONLY',config:'.jsbeautifyrc'}}}

The next step it to load the plugin after the initConfig method:

// Load the plugin that provides the 'jsbeautifier' task.grunt.loadNpmTasks('grunt-jsbeautifier');

To adjust your JS files according to the previous set of rules you need to call the jsbeautifier task:

$ grunt jsbeautifier:modify

Concat and minified CSS, HTML, JS

In order to reduce your CSS, HTML and JS files do as follows:

$ npm install grunt-contrib-uglify --save-dev$ npm install grunt-contrib-htmlmin --save-dev$ npm install grunt-contrib-cssmin --save-dev

Next, proceed to add the htmlmin, cssmin and uglify entries to the options of the initConfig method in the Gruntfile.js as follows:

htmlmin:{dist:{options:{removeComments:true,collapseWhitespace:true},files:{'dist/index.html':'src/index.html',// 'destination': 'source''dist/contact.html':'src/contact.html'}}},cssmin:{add_banner:{options:{banner:'/* My minified css file */'},files:{'path/to/output.css':['path/to/**/*.css']}}},uglify:{options:{banner:'/* <%= grunt.template.today("yyyy-mm-dd") %> */\n',separator:',',compress:true,},chart:{src:['src/js/*.js'],dest:'dist/js/example.min.js'}}

The next step it to load the plugins after the initConfig method:

// Load the plugin that provides the 'uglify' task.grunt.loadNpmTasks('grunt-contrib-uglify');// Load the plugin that provides the 'htmlmin' task.grunt.loadNpmTasks('grunt-contrib-htmlmin');// Load the plugin that provides the 'cssmin' task.grunt.loadNpmTasks('grunt-contrib-cssmin');

To adjust your files according to the previous set of rules you need to call the htmlmin, cssmin or uglify tasks:

$ grunt htmlmin$ grunt cssmin$ grunt uglify

After loading all of your Grunt tasks you can create some aliases.

If you want to create an alias to run the three previous tasks in one step do as follows:

// Wrapper around htmlmin, cssmin and uglify tasks.grunt.registerTask('minified',['htmlmin','cssmin','uglify']);

So, to execute the three tasks in one step you can do the following:

$ grunt minified

The previous command is a wrapper around the htmlmin, cssmin and uglify tasks defined previously.

Wrapping all together we get the following [Grunfile.js][]

Other plugins

Grunt offers you a very large amount of plugins, they have a dedicated section to list them!

I recommend that you should take some time to check out the followingplugins:

Conclusion

Certainly, Grunt do a great job when we talk about task automation, also, automating this repetitive tasks is fun and reduce the errors associated with tasks that in the past we used to run manually over and over again. That been said, I definitely recommend that you should try Grunt, you will get in exchange an improvement in your development workflow, also with it you can forget to endure repetitive tasks that we hate to do, as a consequence you will get more free time to focus on getting things done.

Last but not least, another option for Grunt is Gulp, I recently read about it, if you look at their documentation you notice that their syntax is more clean than Grunt, also is very concise and allows chaining calls, following the concept of streams that pipes offer in *nix like systems, so, I’ll give it a try in my next project.

Grunt: The Javascript Task Manager was originally published by Milton Mazzarri at milmazz on June 28, 2014.

Jesus Palencia: Feliz Año Nuevo!!!

$
0
0

Para el año que comienza te deseo que las rutinas se transformen en sorpresas, los enfados en sonrisas, las tristezas en esperanzas y que tu bandera sea el amor, la esperanza y la paz.

feliz-ano¡Feliz Año Nuevo!


Erick Birbe: Bajar/Subir volumen desde la terminal de Linux

$
0
0
En este artículo haré un resumen de algunos pasos que realicé para configurar el audio de una máquina con Canaima GNU/Linux, de tal modo que cada vez que el usuario inicie su sesión el audio esté con volumen alto. No estoy muy de acuerdo con ese lógica de iniciar con el volumen siempre alto pero […]

Milton Mazzarri: The DRY principle

$
0
0

The DRY (Don’t Repeat Yourself) principle it basically consist in the following:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

That said, it’s almost clear that the DRY principle is against the code duplication, something that in the long term affects the maintenance phase, it doesn’t facilitate the improvement or code refactoring and, in some cases, it can generate some contradictions, among other problems.

Recently I have inherited a project, and one of the things that I noticed in some part of the source code are the following:

After a glance, you can save some bytes and apply the facade and module pattern without breaking the API compatibility in this way:

But, if you have read the jQuery documentation it’s obvious that the previous code portions are against the DRY principle, basically, this functions expose some shorthands for the $.ajax method from the jQuery library. That said, it’s important to clarify that jQuery, from version 1.0, offers some shorthands, they are: $.get(), $.getJSON(), $.post(), among others.

So, in this particular case, I prefer to break the backward compatibility and delete the previous code portions. After that, I changed the code that used the previous functions and from this point I only used the shorthands that jQuery offers, some examples may clarify this thought:

Another advantage of using the shorthand methods that jQuery provides is that you can work with Deferreds, one last thing that we must take in consideration is that jqXHR.success() and jqXHR.error() callback methods are deprecated as of jQuery 1.8.

Anyway, I wanted to share my experience in this case. Also, remark that we need to take care of some principles at the moment we develop software and avoid to reinvent the wheel or do overengineering.

Last but not least, one way to read offline documentation that I tend to use isDash or Zeal, I can access a bunch of documentation without the need of an Internet connection, give it a try!

The DRY principle was originally published by Milton Mazzarri at milmazz on June 25, 2014.

César Mata Moya: Convertir vídeos con subtítulos para el decodificador TDA Novatech T207 en Debian

$
0
0
El sintonizador TDA Novatech T207 permite la reproducción de archivos con codificación H.264 para el video y AAC para el sonido, pero no es capaz de leer los subtítulos en formato SubRip (.srt), por lo cual se debe incrustar en el archivo final.

Para hacer la codificación se va a utilizar la herramienta mencoder en Debian Wheezy, sin embargo se debe instalar la versión de deb-multimedia ya que esta es la que nos permite utilizar la librería libfaac.

Procedemos a agregar el siguiente repositorio:

deb http://mirror.optus.net/deb-multimedia/ wheezy main

Luego realizamos:

apt-get update
apt-get  install mkvtoolnix mencoder x264 libfaac0

Nos situamos en el directorio donde se encuentra el vídeo origen con el subtitulo .srt y ejecutamos:

mencoder videoOrigen.mp4  -ovc x264 -x264encopts threads=auto:subq=6:partitions=all:8x8dct:me=umh:frameref=5:bframes=3:b_pyramid=normal:weight_b -oac faac -vf scale=720:404 -sub videoOrigen.srt -subcp latin1 -subfont-text-scale 3 -o video.avi


mencoder: es el programa que permite hacer la conversión del vídeo.

videoOrigen.mp4: Es el archivo que contiene el vídeo Original. Puede estar en otro formato que no sea .mp4 (avi, etc).

-ovc x264: Le indica a mencoder que el vídeo va a ser codificado usando la utilidad x264.

-x264encopts: Son las opciones utilizadas para x264. Coloque las recomendadas para una mayor calidad en la pagina.

-oac faac: Le indica a mencoder que el audio va a ser codificado usando la librería libfaac0.

-vf scale=720:404: este parámetro es opcional y lo utilizo para escalar el vídeo a la resolución 720x404 (Aspecto 16:9)
 ya que el codificador los reproduce con mayor holgura. Si el vídeo es de menor resolución, se debe omitir para no afectar la calidad.

-sub: Se indica el archivo .srt

-subcp: Se coloca la codificación (latin1, UTF8, etc)

-subfont-text-scale: Se indica el tamaño de escala de la fuente.

-o video.avi: Archivo .avi que luego se debe convertir a .mkv para que lo reconozca el decodificador.

Y para finalizar se convierte el archivo resultante en un .mkv de la siguiente manera:

mkvmerge video.avi -o videoFin.mkv

El videoFin.mkv se copia en una memoria USB y se podrá reproducir en el decodificador.




Ernesto Crespo: Configurando un sitio estático con flask

$
0
0

Continuando con la serie de artículos sobre el microframework de desarrollo web flask, ahora se mostrará como crear un sitio estático.

Este artículo se basa en un artículo en inglés llamado Introduction to Flask, Part 1 - Setting up a static site.

Se usará el mismo archivo utilizado en los artículos anteriores (app.py), en este caso simplemente se agregará el decorador y la función que se va a usar que será para llamar una página de bienvenida.

Aparte del archivo app.py se necesita crear dos directorios, uno llamado templates el cual contendrá la plantilla html y el otro se llamará static que contendrá archivos estáticos como archivos css y archivos javascript.

ernesto@heimdall:~/proyectos/tutorialflask$ ls -l
total 12
-rw-r--r-- 1 ernesto ernesto  792 jun  7 20:56 app.py
drwxr-xr-x 2 ernesto ernesto 4096 jun  7 21:09 static
drwxr-xr-x 2 ernesto ernesto 4096 jun  7 21:10 templates

El archivo app.py tendrá la siguiente información adicional:

#Se agrega el renderizado de la plantilla

from flask import Flask,request,redirect,render_template









#Se usa el decorador ruta para ver el url bienvenido.


@app.route('/bienvenido')


#Se crea la funcion welcome que renderiza una plantilla html.


def welcome():


    return render_template('bienvenido.html')  # renderiza la plantilla bienvenido.html.






Ahora en el directorio templates se crea el archivo bienvenido.html con el siguiente contenido:



Se ejecuta la aplicación y se consulta el url http://127.0.0.1:5000/bienvenido


Ahora se usará un estilo que se llama bootstrap para descargarlo lo puede hacer desde el enlace. Al bajarlo y descomprimirlo copie los archivos bootstrap.min.css y bootstrap.min.js al directorio static, como se muestra a continuación:
ernesto@heimdall:~/proyectos/tutorialflask$ ls -l static/
total 132
-rw-r--r-- 1 ernesto ernesto 99961 feb 13 12:54 bootstrap.min.css
-rw-r--r-- 1 ernesto ernesto 29110 feb 13 12:54 bootstrap.min.js


A continuación se muestra los nuevos cambios a la plantilla bienvenido.html para que use los archivos mencionados anteriormente.

Ahora se abre el navegador al url http://127.0.0.1:5000/bienvenido y se obtiene lo que muestra la siguiente figura:

Erick Birbe: Hacer Paquetes de Configuración para Debian

$
0
0
En este enlace de la wiki de Debian se encuentran reseñados varios consejos, herramientas y mejores prácticas que pueden servir para mejorar los paquetes de configuración de Canaima y para aquellas personas o instituciones que deseen personalizar su Canaima automatizando a través de paquetes la aplicación de sus configuraciones.

Erick Birbe: Bajar/Subir volumen desde la terminal de Linux

$
0
0
En este artículo haré un resumen de algunos pasos que realicé para configurar el audio de una máquina con Canaima GNU/Linux, de tal modo que cada vez que el usuario inicie su sesión el audio esté con volumen alto. No estoy muy de acuerdo con ese lógica de iniciar con el volumen siempre alto pero […]
Viewing all 1457 articles
Browse latest View live