Mostrando las entradas con la etiqueta Free Software. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Free Software. Mostrar todas las entradas

jueves, 2 de junio de 2016

Installation of MathGL 2.3.5 In Debian

Installation of MathGL 2.3.5 In Debian

Motivation

Despite that MathGL is included in the official Debian repositories, It is not the latest version, and the installed, library includes a lot of wrappers and features I'm unlikely to use.

What is MathGL?

As the official website states, MathGL is,

  • a library for making high-quality scientific graphics under Linux and Windows.
  • a library for the fast data plotting and data processing of large data arrays.
  • a library for working in window and console modes and for easy embedding into other programs.
  • a library with large and growing set of graphics.

Here you can see a gallery with MathGL graphics

I've used this library several times from long time ago (like in this project of Hodgking-Huxley action potential) and I think is a very nice library to generate graphics from your final binaries. For example, I've used it when my code is up and running and I want it to generate graphic output directly (png,pdf,...)


Installation

First of all, download the latest source from here, and then proceed to get the required prerequisistes.

Prerequisites

The list of prerequisites depends a lot on what you'd like to do with MathGL. I wanted to be able to work with Qt5 widgets, pdf output,gsl support (GNU Scientifical library),OpenMP, MPI, HDF5, and wxWidget support. I've installed the required libraries as root by,


To see the complete list of supported features you can read the CMakeLists.txt and look for every line containing option(enable-XYZ) so you add -D enable-XYZ when you call cmake.

Building MathGL

Once you've installed the prerequisites, you can build MathGL at the root directory of the source or simply a build directory. I like more the build approach since keeps the source directory clean.


Any errors during the cmake phase can be related to the lack of any prerequisite so keep an eye on the errors, they often say what needs to get installed or fixed.

If everything goes fine, you finally install MathGL as root by,

make install

And that's it.

Resources


martes, 24 de mayo de 2016

Neovim: Next generation vim


Motivation

I was wandering the web looking for some vim plugins that feature golang syntax and autocompletion. I found out about the neovim project and got interested on it, cause I'm a vim user. Here's what I've found.


Neovim?

Official Neovim webpage states,

Neovim is an extension of Vim: feature-parity and backwards compatibility are high priorities. If you are already familiar with Vim, see :help nvim-from-vim to learn about the differences.

After using it for more than a week I gotta say it's worth to use it. The customization is way to easy, as for performance neovim loads faster than my vim (this could be due to the installed plugins or other setups, though). The installation of plugins is pretty easy with the aid of vim-plug which can be installed by a single curl request from the command line.


Installation and use of Plugins

Detailed instructions of installation are located on my repo https://github.com/Daniel-M/nvimConfigFiles where I store my neovim configuration files. The Readme describes all steps to get Neovim up and running in Debian.


References

lunes, 25 de abril de 2016

Updating all pip/pip3 installed packages

Motivation

I've been looking for several options to upgrade my local python packages installed via pip. I've read some posts at stackoverflow and some github.com issues addressing different ways to upgrade them, but I was not very satisfied. I tried to make things on my own and here's how I did it.


Updating pip/pip3 packages

I knew that the command list of pip/pip3 consoles return the list of locally installed python packages. Just needed to take that output, process it and use it to feed pip/pip3 itself in order to get the packages updated.



I hope you find this useful!

sábado, 28 de febrero de 2015

Open source tools to document your software projects. Part 2: Pandoc

This is the second part of Open source tools to document your software projects if you want to read the fist part reviewing Markdown follow this link.

PANDOC

If you need to convert files from one markup format into another, pandoc is your swiss-army knife.[1]
Pandoc can convert documents in markdown, reStructuredText, textile, HTML, DocBook, LaTeX, MediaWiki markup, TWiki markup, OPML, Emacs Org-Mode, Txt2Tags, Microsoft Word docx, EPUB, or Haddock markup to HTML formats ( XHTML, HTML5, and HTML slide shows using Slidy, reveal.js, Slideous, S5, or DZSlides), Word processor  (Microsoft Word docx, OpenOffice/LibreOffice ODT, OpenDocument XML), Ebooks (EPUB version 2 or 3, FictionBook2), Documentation (DocBook, GNU TexInfo, Groff man pages, Haddock markup), Page layout formats(InDesign ICML), TeX formats(LaTeX, ConTeXt, LaTeX Beamer slides), PDF (via LaTeX), and Lightweight markup formats (Markdown, reStructuredText, AsciiDoc, MediaWiki markup, DokuWiki markup, Emacs Org-Mode, Textile), among others.

Getting pandoc

For Debian users pandoc is available from the official repositories. Get it with standard software applications
$ apt-get install pandoc -y

Using pandoc[2]

If the markdown formatted text is "pandoc.md" the following commands can be tested:

Markdown to HTML:
pandoc pandoc.md -o my_parsed_html.html
Markdown to an standalone HTML
pandoc -s pandoc.md -o my_parsed_html.html
Markdown to an standalone HTML with table of contents
pandoc -s --toc pandoc.md -o my_parsed_html.html
Markdown to  Latex
pandoc -s README -o example4.tex
Latex to Markdown
pandoc -s example4.tex -o example5.text
Markdown to PDF
pandoc -s example4.tex -o example5.text
To see more examples go to [2] or read the man page of pandoc. You can download the README file[3] and parse it to any other format by invoking pandoc and see the fancy output.

References

  1. from the creator of Pandoc at Pandoc webpage
  2. http://johnmacfarlane.net/pandoc/demos.html
  3. http://johnmacfarlane.net/pandoc/demo/README

martes, 24 de febrero de 2015

Open source tools to document your software projects. Part 1: Markdown

In the past weeks I've been preparing a set of three posts on tools for document your software projects. The main goal is to introduce the tool and not to make a complete wiki, so don't expect any detailed descriptions.

Do you document your software?


Most of the scientist when asked for their software project's documentation [1]

As a wannabe scientist I'm aware of the need of having reliable registers about all the work related to any scientific task, such as experiments, simulations, math, results, and so on. Most of the logs are taken either in paper or by type writting to digital documents (LaTex or equivalents). When the project involves software most of the scientist are not so familiar with tools as Doxygen or Sphinx(to mention a couple) due to the needed learning curve: "Ain't nobody got time for that!!". And all the "documenting" lies on tons of commented code lines which rarely will be seen when using the libraries and stuff. In the process of developing and documenting my software I became aware of several tools which could come in handy to other scientist/programmers. That is the motivation to review three tools

  1. Markdown
  2. Pandoc
  3. Doxygen

MARKDOWN  [2][3]


Markdown is intended to be as easy-to-read and easy-to-write as is feasible,and is a text-to-HTML conversion tool for web writers. Markdown allows you to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid XHTML (or HTML).[3]
Created in 2004 by John Gruber and Aaron Swartz[2] Markdown provides a easy way to create HTML formatted filesout of plain text. Once the markdown file is parsed, one obtains a pretty good looking html wich can be embeded or distributed with your software in order to make more friendly the project, (or uploaded to your blog ;) ).
Every markdown file consist of plain text file with extension .md or .mkd (or without any extension since the processor that receives the plaintext file detects the markdown format. But is good to have an extension).

Markdown basics [4][5]

A good summary of Markdown syntax is [5]

Headers

# This is an <h1> tag
## This is an <h2> tag
###### This is an <h6> tag

Emphasis

*This text will be italic*
_This will also be italic_

**This text will be bold**
__This will also be bold__

*You **can** combine them*

Lists

Unordered

* Item 1
* Item 2
  * Item 2a
  * Item 2b

Ordered

1. Item 1
2. Item 2
3. Item 3
   * Item 3a
   * Item 3b

Links

http://github.com - automatic!
[GitHub](http://github.com)

Blockquotes

As Kanye West said:

> We're living the future so
> the present is our past.

Inline code

I think you should use an
`<addr>` element here instead.

A good markdown how-to is provided by github


A good example of a Markdown text is
Heading
 =======

 Sub-heading
 -----------

 ### Another deeper heading

 Paragraphs are separated
 by a blank line.

 Let 2 spaces at the end of a line to do a
 line break

 Text attributes *italic*, **bold**,
 `monospace`, ~~strikethrough~~ .

 A [link](http://example.com).
 <<<   No space between ] and (  >>>

 Shopping list:

   * apples
   * oranges
   * pears

 Numbered list:

   1. apples
   2. oranges
   3. pears

 The rain---not the reign---in
 Spain.

The parsed output is

Heading
Sub-heading
Another deeper heading
Paragraphs are separated by a blank line.
Let 2 spaces at the end of a line to do a
line break
Text attributes italic, bold, monospace, strikethrough.
A link.
Shopping list:
  • apples
  • oranges
  • pears
Numbered list:
  1. apples
  2. oranges
  3. pears
The rain—not the reign—in Spain.

Parsing the document


To parse markdown formatted text you need to have markdown installed on your system. Debian based should have markdown on their official repositories (Debian Jessie - Testing has it)

# apt-get install markdown

Should do the job (obviously as root user).

To parse the text

$ markdown mymark.md > mymarkparsed.html
The html file can be opened with your favorite web browser.

Some remarks

  • Given that Markdown does not count with any standard[2] several software organizations have developed markdown versions adding new features. One example is the git-flavoured markdown syntax as decribed on [5]
  • Once the markdown is parsed, one obtains a pretty good looking html wich can be embeded or distributed with your software in order to make more friendly the project.

References

  1. "Ain't no body got time for that"
  2. http://en.wikipedia.org/wiki/Markdown
  3. http://daringfireball.net/projects/markdown/
  4. http://daringfireball.net/projects/markdown/syntax
  5. https://guides.github.com/features/mastering-markdown/
  6. http://en.wikipedia.org/wiki/Markdown#Example

domingo, 16 de febrero de 2014

Editores de texto y programación - mi perspectiva desde el uso, el abuso y la desazón

Todo estudiante de ciencias* pasa por aquella época de la vida donde debe programar (o por lo menos, intentarlo). Dejando de lado todas las peripecias asociadas con esta empresa, quiero concentrar esta entrada en mi experiencia personal con los editores de texto y los entornos integrados de programación (IDE).
* se habla de lo que se conoce.

Emacs

Emacs forma parte de la comunidad GNU. Si bien, es un editor de texto útil, la necesidad recurrente de atajos de teclado que no podía memorizar fácilmente me hacían perderle un poco el respeto.
Se comporta muy bien al trabajar desde consola, pero también ofrece una interfaz gráfica.
Una de las características más llamativas es la gran cantidad de plug-ins disponibles. Por ejemplo, hay un plugin para integrar emacs sistemas de control de versiones (como git), hay un plugin de WYSIWYG para la edición de textos en latex. La lista sigue, incluso hay plugins que ofrecen juegos de arcade.
No recomendaría este editor para los neófitos en la programación, suelo bromear diciendo que emacs es el editor de texto preferido de Davy Jones

Así se sienten los atajos de teclado demasiado largos

KDevelop

Fui usuario asiduo del entorno de escritorio KDE. Un día por recomendación de un amigo me enteré de la existencia de KDevelop, un entorno de desarrollo muy poderoso. Igual que emacs posee reconocimiento de sintaxis en varios lenguajes, y permite configurar control de versiones con git. Otra característica importante es el autocompletado de palabras, lo cual acelera el proceso de escritura. Toda una maravilla si se tiene suficiente RAM a disposición.
Pero como todo en la vida, no hay nada perfecto: los requisitos de memoria del KDevelop, así como una reciente racha de crashes hicieron que retomase mis intentos por utilizar un editor que había probado tiempo atrás: Vim

VIM (VI Improved)

Vim pareciera ser un editor de texto bastante simple, sin embargo, no hay que dejarse engañar. Puedo resumir diciendo que vim es uno de los editores de texto más potentes que he podido utilizar. Posee gran versatilidad en su sistema de comandos, además de reconocer la sintaxis de más de 200 lenguajes de programación (incluyendo TeX y Latex), permite una personalización muy amplia al punto de permitir cosas como definir sistemas de resaltado de sintaxis propios, esquemas de color y comandos personalizados. Comparándolo con emacs, vim utiliza instrucciones más simples y fáciles de recordar, tan sencillas que es posible programar usando una mano (obviamente son escasas las situaciones donde esto será necesario). Además de su versatilidad, la curva de aprendizaje es suave y basta con usarlo por algunas horas para acoplarse a esta "power tool" como lo llama su creador. Sin lugar a dudas, uno de los mejores editores que he utilizado.
Me llamó mucho la atención enterarme que vim forma parte de una campaña para apoyar niños en Uganda a través de donaciones. Buen trabajo equipo vim!!!

Vim: The power tool for everyone!
El proceso de personalización el editor vim toma tiempo, hay un sitio en particular donde se puede aprender como. Un amigo mío dispone de un repositorio en github donde publica un conjunto de configuraciones muy útiles para quienes programamos en C++, los invito a que se den una pasada por https://github.com/muzgash/vim


Y a que viene todo esto?

El proceso de programación y escritura debe ser una experiencia reconfortante, por lo tanto es importante disponer de un buen editor de texto. Para programar puede usarse cualquier editor de texto y cada cual elije el editor que más le convenga en función de sus necesidades particulares. Opté por mencionar los editores de texto más significativos entre los que he usado durante mis proyectos de programación (que consisten básicamente en aprendizaje de lenguajes). Dentro de los editores que he probado están UltraEdit(Windows), Geany (Un IDE escrito en GTK), Kate, y la lista se extiende.
Pese a todo, lo que importan son las habilidades de programación que se tienen, y no el editor se use para programar.

Enlaces de interés

  1. Página del proyecto GNU Emacs http://www.gnu.org/software/emacs/
  2. Página del proyecto KDevelop http://kdevelop.org/
  3. Página del proyecto VIM http://www.vim.org/about.php
  4. Repositorio de configuraciones de VIM https://github.com/muzgash/vim
  5. IDE Geany http://www.geany.org/
  6. Para aprender a usar vim http://code.tutsplus.com/articles/25-vim-tutorials-screencasts-and-resources--net-14631
  7. Para aprender más de otros editores

martes, 24 de diciembre de 2013

Accede a las particiones ext2/ext3/ext4 desde Windows

Como usuario de sistemas multiboot Windows/Linux, sé cuanto apesta la situación en que se necesita acceder a algún archivo de mis particiones ext4 de Debian, pero he iniciado el PC en Windows. La única solución que encontraba consistía en reiniciar el sistema y acceder a Debian directamente

Recientemente me enteré de la existencia de Ext2 File System Driver for Windows, un programa muy liviano que instala un servicio (el equivalente en Windows de los daemon de Linux), que me permite acceder a las particiones Ext4 desde Windows 7. El soporte para lectura de datos está completamente soportado, pese a ello, el soporte para escritura de datos está aún en fase experimental. (Nota: No probé la escritura de datos, así que no comento nada al respecto)

Instalando y configurando Ext2Fs


El proceso de instalación es igual que cualquier programa en Windows, (la rutina de "Siguiente, Siguiente, Siguiente... Finalizar")
Una vez instalado, al iniciar el programa tendremos la siguiente interfaz

Aquí aparece habilitada la unidad (E:)  que corresponde a mi /home en Debian.

Selecciono la partición de interés y elijo la opción "Change drive letter" lo cual es necesario para habilitar la partición

Se abre un menú como este. y elegimos "Add" para añadir una letra para la partición.
Aparece la "E" puesto que ya había configurado mi partición, pero este menú debería estar vacío inicialmente.

Luego de presionar "Add" nos aparece esta ventana donde podemos elegir  la letra para la nueva partición que Windows debe reconocer, además del método de montaje. Yo elegí el modo automático, pero es posible destinar un punto de montaje permanente.

Una vez terminamos de definir la letra de partición y la letra que la identificará, finalizamos el proceso con el botón "Ok" y el botón "Done" a continuación.



Para habilitar el acceso a la(s) unidad(es) recién creada(s) debemos seleccionar "Tools" en la barra de menú y elegir "Service Management" en el menú desplegable

Debemos presionar el botón "Start" (que aparece deshabilitado en la imagen) para que el proceso inicie.
Una vez finalizado el proceso anterior deberíamos ver las unidades creadas al abrir el explorador de Windows. Aquí vemos la unidad (E:) y como Windows la reconoce como un sistema de archivos EXT3

Enlaces de interés


  1. Sitio web del proyecto http://www.ext2fsd.com/
  2. Repositorio en sourceforge http://sourceforge.net/projects/ext2fsd/
  3. Descarga directa http://sourceforge.net/projects/ext2fsd/files/latest/download

miércoles, 30 de octubre de 2013

Cuando el instalador de Debian falla...

Hoy decidí realizar una instalación limpia de Debian (a la fecha Jessie/Testing), con una lista depurada de los paquetes que si uso.
Para el proceso de instalación descargué la ISO del primer DVD para instalación del Debian Testing (usualmente contiene todos los paquetes necesarios para una instalación sencilla y con cualquier gestor de ventantas) cree una USB booteable ( el típico cat Debian.iso > /dev/sdX hay muchos tutoriales en la red, así que no entraré en detalles)
La instalación funcionaba muy bien hasta llegar a la parte de detección de hardware de red. En este punto la instalación se colgaba y no avanzaba más. 

Cual fue la solución?[1]

Iniciar la instalación en modo experto (expert install) puede ser en modo gráfico o en modo consola, una vez allí, seleccioné la opción 

Selección del modo experto.
A continuación buscamos una opción para abrir una consola (Execute a shell)

Execute a shell - la penúltima opción.
Se abre una consola de bash que debemos utilizar para editar un script interno del instalador

$ nano /bin/check-missing-firmware

Se abrirá un editor de texto donde la primera línea debe decir

#!/bin/sh

bajo esta línea escribimos

exit 0

para que el script termine antes de ejecutarse. Acto seguido, presionando Ctrl+o y luego Ctrl+x  salimos del editor. En la terminal escribimos 

$ exit

Para continuar con el proceso de instalación, seleccionamos la opción "choose language" (Elegir lenguaje) y continuamos cada item de la lista en secuencia hasta llegar a "Load installer components from CD"

Execute a shell - la penúltima opción.
Al abrir esta opción, no seleccionamos nada y le damos continuar, de ahí en adelante seguirá el proceso estándar de instalación. Estos simples pasos me sacaron de un gran lío y por ello merecieron una entrada en este blog.

Fuentes

miércoles, 23 de octubre de 2013

Aplicaciones recomendadas para Windows 7


Como usuario ocasional del sistema operativo Windows 7, siempre me pregunté cuales serían las mejores aplicaciones de uso cotidiano que, además de ser funcionales, fuesen de código abierto.
Una búsqueda en google dejará claro que no es complicado dar con listas de aplicaciones recomendadas. Personalmente he encontrado que muchas recomendaciones no resultan tan útiles, y en muchas ocasiones considero que las aplicaciones han sido sobre valoradas.
Durante varios meses de usos y abusos, he encontrado varias aplicaciones de código abierto útiles, teniendo como criterio principal la funcionalidad.

(Nota: hay un sitio que provee una enorme lista de programas de software libre: http://www.cdlibre.org/)

Compresión/descompresión

7-Zip

Esta es una aplicación de compresión de archivos, soporta una amalgama de formatos de compresión bastante amplia, incluyendo los clásicos .zip y .rar, así que no será necesario tener instalado ningún otro programa de compresión/descompresión de archivos.
La interfaz gráfica, pese a ser minimalista es bastante funcional (una característica que algunos apreciamos)

Ofimática

Lectores de documentos

Foxit Reader

Probablemente uno de los mejores lectores de PDF que he encontrado (para Windows). Si eres de los usuarios que les gusta subrayar los PDF, hacer comentarios en ellos o introducir marcadores, este programa es el indicado. Otra de las características más notables es sistema de pestañas que permite tener varios PDF abiertos en pestañas independientes sin llenar tu barra de tareas.
Una observación importante: consume menos recursos que el lector de Adobe.

WinDjVu

Existe un formato para libros digitales conocido por la extensión .djvu, WinDjVu es el lector de archivos .djvu más simple que conozco para windows, incluye la lectura por pestañas (como el Foxit) además de ser bastante amigable con el uso de recursos.

Editores de texto

LibreOffice

Esta suite ofimática es una de las más polémicas que conozco, su origen se remonta a las épocas en que la compañía Oracle se hizo cargo de mantener la suite conocida como OpenOffice, la comunidad del software libre fundó The Document Foundation a mantener su propia versión del software orientado a la manipulación de documentos, hojas de cálculo, diapositivas, entre otras funcionalidades. La compatibilidad con los formatos privativos de Micro$oft tales como el .docx, o el . xmlx es pésima, pero esto se conocía desde los tiempos de OpenOffice, pero ello se debe a que los formatos Micro$oft son cerrados.

TeXMaker

Este es un editor para la redacción de textos en LaTeX. Si bien, para redactar en LaTeX se necesita de un compilador y un editor de texto plano (como el block de notas), este editor viene con suficientes herramientas de edición para el sistema operativo Windows

Red Notebook

Este programa es muy versátil a la hora de llevar una bitácora/diario/registro, por ejemplo, a la hora de tomar nota sobre el progreso de una investigación o proyecto personal.
La entrada de texto se realiza por Markdown, lo que permite agilizar el proceso de escritura, es posible crear plantillas personalizadas y todo lo escrito se guarda por fechas, además de poder ser exportado en varios formatos. Como añadidura incluye un sistema de etiquetas (o tags) y la generación automática de WordClouds (o TagClouds)

Gestión de bibliografía

Mendeley 

Todos aquellos que trabajamos en ámbitos académicos nos enfrentamos a la tarea de organizar eficientemente las referencias bibliográficas y la manera de citarlas. Mendeley ha sido una de las mejores opciones que he encontrado pues permite tener la bibliografía sincronizada entre varios PC, tiene un PlugIn que puede instalarse en LibreOffice (creo que en M$ Office también) con el cual es posible introducir las referencias al vuelo sin preocuparse del formateo de la bibliografía, la cual se introduce automáticamente y con el formato que queramos darle (tiene una lista de opciones). Altamente recomendado para la gestión de bibliografía.

Calibre

Esta herramienta es funcional, está orientada a la gestión de libros digitales y su intercambio con lectores "ebook" tales como el Kindle de Amazon. Permite convertir entre distintos formatos (epub, mobi, pdf) además de realizar una gestión de contenidos a fondo.

Multimedia

VLC Player

Todo usuario de Windows conoce el eterno problema de Windows Media Player con los códecs de audio y video a la hora de reproducir películas en tu PC. VLC Media Player es un manejador multimedia que resuelve este problema, su instalación incluye un paquete completo de códecs además de hacer un uso más adecuado de los recursos del sistema lo cual lo convierte en un reproductor muy versátil. Dentro de los contra está el pequeño detalle: no tiene un buen sistema de gestión de multimedia,

Clementine

Este reproductor de multimedia me ha resutlado bastante útil, cuenta con un equalizador y un sistema de gestión de multimedia bastante adecuado.

Editores de Imagen

No tengo mucha experiencia en la edición o creación de imágenes, pero me permito recomendar estos programas sin añadir mayores comentarios al respecto

GIMP

Inskape

Scribus


Mensajería instantánea

Pidgin

Un gestor de mensajería instantánea que soporta múltiples cuentas y protocolos de comunicación, entre ellos, el protocolo de Gtalk (Jabber), Facebook Chat, IRC, AIM, Yahoo!, entre muchos otros.

Mantenimiento del sistema

CCleaner

Un programa para la limpieza de claves de registro, archivos temporales, entre otras tareas generales de limpieza

ToolWiz Care

Este programa se encarga de labores parecidas a CCleaner, pero trae herramientas adicionales muy útiles a la hora de optimizar el uso de recursos del sistema.

Defraggler

Un software para desfragmentado de dicos, simple, funcional, recomendado.

Computación y Matemáticas

Maxima

Es un motor de cálculo simbólico, bastante parecido a Mathematica, merece la pena una oportunidad.

Scilab

Es un software de cálculo numérico, bastante parecido a Matlab, diría que es una alternativa bastante útil, además de ser multiplataforma.

QtiPlot

Un sistema de análisis de datos que incluye herramientas de ajuste no lineal, graficación y manipulación estadística de datos. Una excelente alternativa a Origin.

jueves, 15 de agosto de 2013

Dropbox on a multiboot system with Debian

Motivation

Many Linux users might have problems when using the cloud synchronization tool known as Dropbox on a multiboot system. The problem arises when trying to have a Dropbox set-up on both Windows and Linux OS arising "syncronization issues", if you tried this before, you'll understand.
So i searched for solutions to this "issue", but all the proposed ways to solve it were... well, not so elegant for me.

The way i got dropbox working both on Debian GNU/Linux and Windows (same PC)

A little 'bout context

I've already have a Windows-7 OS installed, with a working Dropbox installation at

D:\Daniel\Dropbox

Without having a working installation of Dropbox at Debian.

Making symbolic links on Linux

On Debian, I've the "D:\" windows partition as "/dev/sda5", and is mounted on

/media/Disco-Local/

I wanted to have my Linux-Dropbox folder at

/home/damejia/Dropbox

So work with those locations. Given the context, boot Debian and open a terminal, to login as superuser type

$ su

It will ask you the "root" password. Then, do the following

# ln -s  /media/Disco-Local/Daniel/Dropbox  /home/damejia/Dropbox

This will create a link between both paths, so, the /home/damejia/Dropbox points to  /media/Disco-Local/Daniel/Dropbox

Change the group and the owner of the link created (in my case, the user is damejia)

# chown -R damejia  /home/damejia/Dropbox
# chgrp -R damejia  /home/damejia/Dropbox

We are ready to install Dropbox

Intalling Dropbox on Debian

Then, download the latest version of Dropbox for Debian (they have the .deb), and, from the console install the packe using dpkg (as root, is worth noting that you must be on the same directory as the package)

# dpkg -i dropbox-x.x.x-amd64.deb

On the first run of Dropbox on Debian, it will ask you for the folder to store the syched files. choose

/home/damejia/Dropbox

That is, choosing the link we created before. And... that's it, the Dropbox must appear as synched, since you haven't added files, you will have the same Dropbox path on either Windows or Linux.

jueves, 8 de agosto de 2013

System sound equalized with ALSA for Debian - Get-yo-self equalized!

(Still working on 2015. See workarounds at the end)

Motivation

Like many people, i really enjoy listening music, an, as many would know, having an equalizer can make a really big difference between "the ordinary experience" of listening music.
It's clear that many media players include plugins for audio enhancing, but, whan happens when you listen a music video on youtube, or just simply using grooveshark cloud music service?. For Windows machines the solution could be installing audio-enhancing software like DFX (A really good one, i can tell). But that kind of "stuff" isn't available for Linux. Maybe 'cause we have other kind of solutions, i have found one that works amazing, but you must have ALSA installed on your Linux distribution.

What is the ALSA System?

Many of you may wonder, hows that your Linux Distro communicates with your speakers/headphones/microphon/any-sound-device. Well, there are many ways to get the task donde, but, for Debian distributions (So, for the wide set of Debian-based distros like Ubunty, Mint, and so on) the ALSA system do the job. In words of Wikipedia [1]:
Advanced Linux Sound Architecture (known by the acronym ALSA) is a free, open source software framework released under the GNU GPL and the GNU LGPL[4] that provides an API for sound carddevice drivers. It is part of the Linux kernel. Some of the goals of the ALSA project at its inception were automatic configuration of sound-card hardware and graceful handling of multiple sound devices in a system, goals which it has largely met. A couple of different frameworks, such as JACK, use ALSA to allow performing low-latency professional-grade audio editing and mixing.
So

ALSA Equalizer

Getting the equalizer installed

Installing from repos (Debian Testing and Sid)

In the Debian Testing repositories we have the package libasound2-plugin-equal

The plugin on my Debian repository

In order to have the equalizer installed, as root, do:
# aptitude install libasound2-plugin-equal alsamixergui

  • libasound2-plugin-equal - The equalizer itself
  • alsamixergui - A GUI To control de plugin, but it's optional, cause you can use the command-line alsamixer. Unfortunatetly the only way to control the equalizer is to make use of the alsamixer utility

Manual Installing

For other linux distros, download the latest version of the plugin from here (look for "download")
Then, choose a folder and do

tar xvjf alsaequal-x.x.tar.bz2
cd alsaequal-x.x
make
sudo make install
You should read carefuly the reference [2]

Getting the equalizer to work

Single user

Into your "home" directory ("/home/user" for instance) create a file called ".asoundrc" and paste this code onto it (for more information see [2] and [3] from the references section below)
ctl.equal {
  type equal;
}
pcm.plugequal {
  type equal;
  # Modify the line below if you don't
  # want to use sound card 0.
  slave.pcm "plughw:0,0";
  # or if you want to use with multiple applications output to dmix
  # slave.pcm "plug:dmix"
}
# pcm.equal {
  # Or if you want the equalizer to be your
  # default soundcard uncomment the following
  # line and comment the above line.
 pcm.!default {
  type plug;
  slave.pcm plugequal;
}
Then, as root, you must do

# alsa force-reload

So the sound daemon restarts and loads the plugin. The equalizer should be working now.

Whole system (all users)

You must create the file

/etc/asound.conf

And paste this code onto it (for more information see [2] and [3] from the references section below, take a look at [4] too)
ctl.equal {
  type equal;
}
pcm.plugequal {
  type equal;
  # Modify the line below if you don't
  # want to use sound card 0.
  slave.pcm "plughw:0,0";
  # or if you want to use with multiple applications output to dmix
  # slave.pcm "plug:dmix"
}
# pcm.equal {
  # Or if you want the equalizer to be your
  # default soundcard uncomment the following
  # line and comment the above line.
 pcm.!default {
  type plug;
  slave.pcm plugequal;
}
Then, as root, you must do

# alsa force-reload

So the sound daemon restarts and loads the plugin. The equalizer should be working now.

Using the equalizer

The plugin installs a "virtual" audio device. This device is called "equal" (for obvious reasons).
If you followed the steps above, you shouln't have problems now.
To change the equalizer configuration, you must tell ALSA that you want to work with the "equal" device, so open a terminal and write either

$ alsamixer -D equal


This is how it looks on command line
or

$ alsamixergui -D equal


This is how it looks using alsamixergui

And choose your best audio configuration, and enjoy your audio-enhanced linux distro.

Some Workarounds (edit: 2015-Feb-04)


The above instructions still worked for me (I've resintalled Debian Testing on my PC on January of 2015), but I've noticed two little workarounds that might be of importance if you have more than a sound card or you have been experiencing no sound with web pages as youtube using google-chrome.

More than a soundcard

I've changed my motherd board and has two different sound cards which caused my system to direct the equalized sound stream to the "wrong" sound card.

Thanks to this post [7] I became aware of the need of tweaking the file /usr/share/alsa/alsa.conf in order to get ALSA using the "right" sound card.
If the working sound card is hw:0,1 and the "bad" sound card is hw:0,0, and you used hw:0,1 on your asound.conf as stated on the sections above, but still without equalized sound, you need to tell ALSA that start using sound card 1 (i.e. hw:0,1 in our example) on the file /usr/share/alsa/alsa.conf by changing the following lines:
defaults.ctl.card 0 to defaults.ctl.card 1
defaults.pcm.card 1 to defaults.pcm.card 1
defaults.rawmidi.card 1 to defaults.rawmidi.card 1
defaults.hwdep.card 1 to defaults.hwdep.card 1
defaults.timer.card 1 to defaults.timer.card 1

Youtube and HTML5 on google-chrome

Youtube video players were switched to use HTML5 (google it for more information). I don't know why the sound layer works if you use PulseAudio but if you have only ALSA, the sound migth not work (for me it was working anddd... the sound was gone).

The solution for google-chrome is to start the browser with the option

--try-supported-channel-layouts
So call google-chrome as

google-chrome --try-supported-channel-layouts

And play a nice youtube video, if that works for you, you can edit the menu entries and links to google-chrome adding the mentioned command option.
Resampling can be another issue (I can not tell about that but google product forum talks about it), some forums suggest to add the option --disable-audio-output-resampler, so another solution could be calling google-chrome as

google-chrome --disable-audio-output-resampler --try-supported-channel-layouts 
If that does not help you... Well... F*ck. 

References

  1. http://es.wikipedia.org/wiki/Advanced_Linux_Sound_Architecture
  2. http://www.thedigitalmachine.net/alsaequal.html
  3. http://wiki.linuxmce.org/index.php/Equalizer_for_ALSA
  4. http://www.alsa-project.org/main/index.php/Asoundrc
  5. http://packages.debian.org/source/sid/alsaequal
  6. Download my asound.conf 
  7. https://coderwall.com/p/wajiaq/replacing-pulseaudio-with-alsa-linux

viernes, 19 de abril de 2013

Lector de PDF nativo de Google Chrome en Chromium - Caso Debian GNU/Linux

Posiblemente una de la excusas más comunes para usar Google Chrome en lugar de Chromium, es la ausencia de un lector de PDF embebido en el navegador.
La solución que muchas personas indican es instalar una aplicación para leer PDF en Chromium. Puede que funcione para algunos, aún así, me sigue pareciendo una solución poco elegante.
Me he enterado recientemente que es posible mejorar el navegador Chromium añadiendole el mismo lector de PDF de G-Chrome.
Esta solución es muy antigua, pero me tomé la libertad de publicar una entrada en español al respecto.

Manos a la obra

Por alguna razón en los repositorios de Debian (Testing almenos) aparecen los paquetes
chromium  y chromium-browser, aún así el "hack" es bastante sencillo.

Primero se necesita disponer de un paquete de instalación de G-Chrome actual.
El truco consiste en extraer de G-Chrome, la librería que contiene el lector de PDF embebido.
(Para los perezosos, he habilitado un enlace de decarga a mi libpdf.so para la arquitectura de 64 bits de Chromium, no tengo la versión del navegador de la cual tomé la librería, pero es del mes de Marzo(2013). Actualicé el enlace usando la librería G-chrome versión 40.0.2214.94 (Feb 2015). Declaración No me hago responsable del uso indebido de este archivo ni de las consecuencias de su uso.).
Para cualquiera de los casos siguientes, debe tener privilegios de root para modificar los directorios.

chromium instalado 

Solo se requiere colocar la librería mencionada anteriormente en el directorio
 /usr/lib/chromium/
de manera que se vea  /usr/lib/chromium/libpdf.so

chromium-browser instalado

Solo se requiere colocar la librería mencionada anteriormente en el directorio
/usr/lib/chromium-browser/
de manera que se vea /usr/lib/chromium-browser/libpdf.so


Probando el lector

Al reiniciar el navegador, en la barra de direcciones del navegador escribimos
chrome://plugins/
Notaremos de inmediato que aparece un plug-in asociado a la librería, y por defecto, debería estar activado (Si no, lo habilitamos).
El Plug-in se activa al reiniciar el navegador

Al abrir un PDF, deberíamos tener el mismo lector de Google Chrome, solo que usando Chromium.

Vemos que se trata de Chromium

Tiene exactamente las mismas características que para el navegador Google Chrome




Apostilla

Al interior de estos directorios puede existir una carpeta llamada plugins, si desea puede colocar la librería allí, por motivos de organización y estética fundamentalmente

viernes, 12 de abril de 2013

Flash Player plugin problems in Google-Chrome under Debian GNU/Linux

SOME CONTEXT


I'm using Debian GNU/Linux. Some day on the month of February(2013), the flash player plugin suddenly stopped working in the google-chrome web browser. I've noticed the glitch when I used some web pages as groveshark.com and youtube.com, they suggest me the use of HTML5 given the “lack” of a flash player plugin. 


FACTS


The package flashplugin-nonfree was installed (yeah, i know about Gnash, but i still prefer the non-free version)

No system update were performed, so the problem was not caused by package conflicts.


FINDINGS


Given the facts above, the search begun, i found that Google Chrome uses his own flashplugin version (named flashpepperplugin), independent of the system installed version (flashplugin-nonfree for the Non-free case).
A way to check the plugins, is type chrome://plugins/ in the search/url bar of the browser, then activate the option “Details” (a + on the left-top corner) and allow a version to execute  (system version 11.2 series, and chrome version 11.5 series. at February 2013). a Sensitive path is ~/.config/google-chrome/ the chrome plugin is located at the path PepperFlash

SOLVING THE PROBLEM

I think that the problem was that both flash versions available (system version 11.2 series, and chrome version 11.5 series. at February 2013) so I choose the system version as activated, and deactivated the chrome version. That made flash player plugin work fine.
But, another solution is to use the Chromium browser instead of Google Chrome. That was the solution of my choice, not only solved the problem, I really feel tha Chromium is much faster with an efficient system resources consumption.

To install chromium, just use aptitude as root (su)

# aptitude install chromium
Or by any other package manager, look for chromium.

jueves, 11 de abril de 2013

Unison - una forma de mantener PCs sincronizados


Muchos de nosotros tenemos un PC de escritorio(Desktop) y un equipo portátil (Laptop, o Netbook --como en mi caso--) y siempre tenemos el problema de mantener nuestros dispositivos en sincronía. Piense, por ejemplo, que está trabajando en un proyecto y manipulando copias del mismo en su PC de escritorio y en su equipo portátil. Realizar sincronizaciones manuales puede enredar un poco las cosas, arriesgando información valiosa en el proceso.
Se ha dicho mucho sobre la opción de usar Dropbox, pero no siempre es posible utilizar este servicio para esta tarea (Pues Dropbox solo almacena 2GB en el plan básico gratuito. Es posible incrementar la cuota de espacio, pero hay situaciones donde Dropbox no es una solución inteligente).
Le dediqué algún tiempo a encontrar una buena aplicación que me permitiera sincronizar mis dispositivos y me encontré con Unison, que en palabras de la página oficial:
El logo de Unison

Este programa tiene la ventaja de ser multiplataforma, permitiendo sincronizar entre dos plataformas diferentes (por ejemplo, entre Linux y Windows), como añadidura, se encarga de controlar las versiones de los archivos controlando cuales son más recientes y permitiéndo que el usuario eliga que cambios se deben propagar entre las réplicas.
He probado este programa por cerca de dos meses y puedo decir que funciona de maravilla. Si usted necesita sincronizar dos o más directorios, debería darle una oportunidad.
Dentro de los usos que le he dado al programa, y los que se le pueden dar, están
  • Mantener mi Netbook y el Desktop sincronizados (exactamente con la misma información) en los directorios elegidos
  • Como una herramienta de respaldo de USB Flash, pues tengo un perfil configurado que me sincroniza el contenido de la misma en mi Netbook, así que, si necesito un poco de espacio adicional  puedo eliminar archivos sabiendo que tengo copias del mismo en otro lugar. Un ejemplo de esta necesidad es al montar ISO hibridas de Debian en una memoria USB, así no pierdo información y puedo restaurar la memoria a su estado inicial
  • Se pueden guardar varios perfiles de sincronización, así se pueden usar cuando sea necesario.
  • Puede utilizar SSH para realizar la sincronización, así que basta tener una red LAN o una WLAN en casa para sincronizar dispositivos. La mayor utilidad también se da sincronizando equipos remotos por SSH, pero no lo he probado.
Los manuales y tutoriales en inglés están Aquí.


Guía simplificada para el novato.


Instalando


En los sitemas GNU/Linux, Unison se puede instalar desde consola con permisos de superusuario, usando el comando su, o sudo. Posteriormente utilizamos un gestor de paquetes, en mi caso aptitude (pero apt-get servirá también)
# aptitude install unison-all unison-alll-gtk

Sincronizando PCs por SSH con Unison

La aplicación puede utilizarse mediante la línea de comandos, sin embargo, en aras de la brevedad ilustraré su uso mediante la interfaz de usario (en GTK). Supondremos que tenemos dos computadores que comparten una red local, ambos tienen instalado Debian GNU/Linux y la carpeta que queremos sincronizar está almacenada en un disco con formato NTFS (Una partición de Windows)
Al correr Unison aparece una ventana de selección de perfil, más o menos así:
Selección de perfil - Aparecen dos perfiles porque son los que tengo guardados.
Una vez allí, para crear un perfil se presiona el botón, Añadir al costado derecho de la ventana.


Al presionar añadir aparece este mensaje, presionamos adelante para continuar
Aparece un menú que solicita un Nombre y Descripción del perfil a crear, en este caso le puse Prueba

Acto seguido, aparece un menú que ofrece distintas opciones de sincronización, a saber, Sincronización Local, Sincronización vía SSH, y Sincronización vía RSH, o através de una conexión TCP
Tipo de conexión - Tipos de sincronización disponibles

Al elegir SSH aparecen más opciones:
Tipo de conexión - He seleccionado SSH como el tipo de conexión. 
Para configurar la conexión vía SSH es necesario proporcionar los datos del servidor remoto, y del usuario en el servidor remoto. Esta información se escribe en las casillas correspondientes (Si no entiende de lo que estoy hablando debería mirar este enlace y este tal vez).

Una vez se ha establecido el tipo de conexión, aparece un menú para elegir el directorio Local (el de la máquina en que se está configurando el Unison) y el menú remoto (Remoto porque elegimos sincronizar PC diferentes vía SSH)
Eligiendo directorios a Sincronizar
Para el caso en que la sincronización involucre particiones de windows, Unison ofrece la posibilidad de activar una casilla de verificación. Las razones para ello, es que el sistema de archivos FAT o NTFS no permiten la modificación de permisos como los sistemas de archivos ext2,ext3 o ext4 que son de uso común para las distribuciones de Linux.

Activo esta casilla pues la sincronización involucra particiones con tipo de Archivo FAT o NTFS
 Así ha terminado de configurar su perfil de Unison.


Creación de perfil terminada :D

Sincronizando Directorios - Utilizando el perfil

Atención: Unison debe estar instalado en todas las máquinas que desean sincronizarse, adicionalmente, deben tener la misma versión instalada. De otro modo no será posible sincronizar y le aparecerán mensajes de error.

Para utilizar el perfil creado, solo debe seleccionarlo en la ventana inicial de Unison y presionar el botón Abrir en la parte inferior de la ventana.
Selección de perfil - Aparecen dos perfiles, son los que tengo guardados.
Una vez se seleccionó el perfil y Unison encuentra al servido remoto (el otro PC), solicita la contraseña del usuario en el servidor remoto.
Conectando con el servidor remoto - Solicita contraseña para continuar
Una vez ingresada la contraseña, Unison buscará los cambios en ambas máquinas y sugerirá acciones pendientes. La primera columna de la izquierda, con nombre local indica el estado del directorio local, la segunda, action indica en verde la dirección hacia donde se propagarán los cambios, y la tercera columna indica el estado del directorio remoto (Icaro es el nombre del servidor remoto en este caso).
La columna status mostrará el progreso de cada archivo, finalmente la columna path indica el archivo en cuestión.
Preparando sincronización - Examinando diferencias entre directorios
Vemos que en la columna action en las primeras dos filas tiene direcciones distintas. La primera fila nos indica que se progará de Icaro a local un archivo nuevo (New File). Por su parte, la seguna fila muestra que un archivo nuevo se propagará de local al directorio remoto en el servidor Icaro.
Al iniciar la sincronización, veremos como cambia la columna status según se vaya completando cada acción pendiente.
Propagando cambios - Los PC se están sincronizando
Al finalizar, en la barra de estado (barra inferior) se indicará que la sincronización ha terminado.

Comentarios Finales

  • Según la página oficial de Unison, (específicamente acá en inglés) declaran que el software no tendrá mejoras respecto a sus versiones actuales, sin embargo se trabajará para que el programa siga siendo soportado e incluido en las distribuciones de software futuras (incluyendo los reportes de fallos). La razón para ello es que no disponen de un desarrollador que dedicado a la tarea de mejorar el software.

  • Llevo mucho tiempo preparando el tutorial, y por motivos de tiempo  --y espacio--  no puedo mostrar como se utilizan los demás métodos de sincronización. Espero que con esta "guía simplificada" sea suficiente para satisfacer las necesidades de la vida cotidiana. Si tiene cualquier pregunta, siéntase libre de dejar un comentario (o los que considere necesarios)