jueves, 10 de noviembre de 2011

Parcheando el clickpad de HP Envy en Ubuntu 11.10 Oneiric

Con el parche que instalamos a continuación, podremos hacer uso del clic derecho y central del clickpad. Sigue sin ser posible arrastrar y soltar si tenemos activado el desplazamiento con dos dedos, por ello conviene desactivarlo (está desactivado por defecto). Tampoco será posible encender y apagar el LED. Añadimos el ppa de Sérgio Faria:
sudo add-apt-repository ppa:sergio91pt/synaptics+clickpads
Actualizamos:
sudo apt-get update && sudo apt-get upgrade
A continuación instalamos synaptics-touchpad:
sudo apt-get install synaptics-touchpad
Reiniciar y listo.

sábado, 17 de septiembre de 2011

Abrir en un terminal

Cuando trabajo en Ubuntu echo en falta la opción en Nautilus de abrir el directorio actual en una terminal que siempre acompaña a Dolphin en Kubuntu. Por eso es necesario instalar:
sudo apt-get install nautilus-open-terminal
Por fin, tras reiniciar el entorno gráfico, ya es posible Abrir en un terminal.

viernes, 9 de septiembre de 2011

Subfloat en LaTeX

Poner imágenes en columnas en LaTeX.
\begin{figure}[ht]
 \centering
 \subfloat[Velocidad]{\label{fig:vel_p}\scalebox{0.5}{\includegraphics{practica7/circulo.eps}}}
 \subfloat[Posición]{\label{fig:pos_p}\scalebox{0.5}{\includegraphics{practica7/cuadrado.eps}}}
 \caption{Control proporcional.}
 \label{fig:proporcional}
 \end{figure}

Aplicación lineal en LaTeX

\begin{eqnarray}
   \mathit{f}:\mathcal{C}&\longrightarrow&\mathbf{R}\nonumber\\
   x&\rightarrow&f(x) = \left\{
   \begin{array}{l@{\quad}l}
    \exp(1+x^2), & \mbox{si } x \geq 0\\
    0, & \mbox{si } x < 0 
   \end{array}
   \right.
\end{eqnarray}

Álgebra lineal en LaTeX

Un sistema de ecuaciones lineales se puede escribir de la forma:
\begin{eqnarray*}
   a_{11}x_1 + a_{12}x_2 + \cdots + a_{1n}x_n&=&b_1\\
   a_{21}x_1 + a_{22}x_2 + \cdots + a_{2n}x_n&=&b_2\\
   \ldots&&\\
   a_{m1}x_1 + a_{m2}x_2 + \cdots + a_{mn}x_n&=&b_n
\end{eqnarray*}
Una solución particular de la ecuación lineal es un vector:
\[(\alpha_1, \alpha_2, \ldots, \alpha_n) \in \mathbf{R}^n\]
Una matriz:
\[
  \left(
  \begin{array}{cccc} 
   \mathsf{A}_{11} & 0 & \ldots & 0\\
   0 & \mathsf{A_{22}} & \ldots & 0\\
   \vdots & \vdots & \ddots & \vdots\\
   0 & 0 &\ldots&\mathsf{A_{nn}}
  \end{array}
  \right)
  \]

martes, 30 de agosto de 2011

Editor multiplataforma Sublime Text 2

Sublime Text 2 es un editor de textos disponible para Linux, Mac y Windows. Aunque se trata de una versión beta tiene bastante funcionalidad. Además se le pueden instalar plug-ins adicionales. No hace falta hacer ningún tipo de instalación. Simplemente descargarlo y ejecutarlo.


Con Ctr + Shift + P se despliega un cuadro en el que podemos encontrar la mayor parte de la funcionalidad del editor. Por ejemplo, podemos fijar el resaltado del código escribiendo "set syntax: ".


El tema que aparece en las capturas se llama Soda y se puede descargar utilizando git y poniendo la carpeta en el directorio de Packages de Sublime, que en en Linux es ~/.config/sublime-text-2/Packages/:
cd ~/.config/sublime-text-2/Packages/
git clone https://github.com/buymeasoda/soda-theme/ "Theme - Soda"
Una vez hecho esto, hay que aplicar el tema en Preferencias -> Global Settings - User. Se abre una página con código parecido a CSS y añadimos la siguiente línea entre las llaves:
"theme": "Soda Light.sublime-theme"
Para instalarlo podemos utilizar el ppa que adjunto a continuación (recomendado):
sudo add-apt-repository ppa:webupd8team/sublime-text-2
sudo apt-get update
sudo apt-get install sublime-text-2
O bien hay otra manera, un poco más larga, que consiste en añadir el binario al path y hacer un fichero .desktop para poderlo ejecutar desde el dash. Suponiendo que estamos en el directorio donde se encuentre el ejecutable, lo añadimos al path, por ejemplo de la siguiente manera:
sudo cp sublime_text /usr/bin/
A continuación también añadimos este icono a la ruta donde se encuentran los iconos del sistema.
sudo cp sublime.png /usr/share/icons/
Para poner un "acceso directo" desde el dash creamos un fichero .desktop. Propongo el siguiente:
[Desktop Entry]
Version=1.0
Type=Application
Name=Sublime Text
Comment=A text editor
TryExec=sublime_text
Exec=sublime_text %F
Icon=/usr/share/icons/sublime.png
MimeType=text/plain;
En mi caso lo he llamado sublime.desktop. Ahora hay que copiarlo a /usr/share/applications/.
sudo cp sublime.desktop /usr/share/applications/
El resultado debe ser algo similar a esto:


Este artículo está basado en este otro de net tuts +.

viernes, 26 de agosto de 2011

Fuentes que añadir a Ubuntu.

Una fuente apropiada para escribir código puede ser Excalibur Monospace. Es muy similar a Sans Serif. Un ejemplo de código utilizando esta fuente puede verse a continuación.


Para instalarla, una vez descargada, se copia en el directorio /usr/share/fonts. En la consola, por ejemplo, escribiendo:
sudo cp *.ttf /usr/share/fonts
De esta manera estará disponible para todos los usuarios de la máquina. Si sólo quieres que esté disponible para un único usuario crea una carpeta llamada .fonts en el directorio raíz de dicho usuario y pega la fuente en la nueva carpeta. Si no te gusta usar la consola de Linux, puedes hacerlo de forma gráfica usando gksu (Nautilus en modo administrador). Para ello, pulsa Alt + F2 y escribe:
gksu nautilus /usr/share/fonts
Otras fuentes para escribir documentos que se encuentran en Windows y que a veces echo en falta son Calibri, Cambria, Consolas, Constantia, y Corbel.



sudo apt-get install cabextract curl
Guarda el siguiente script en un archivo llamado vista-fonts-installer.sh
mkdir -p ~/.fonts
chmod +x vista-fonts-installer.sh
Otras fuentes interesantes como Airal, Times New Roman, etc. se pueden encontrar instalando:
sudo apt-get install msttcorefonts

lunes, 22 de agosto de 2011

Tema Divergence IV para Ubuntu

A continuación se muestra en imágenes Ubuntu 11.04 con el tema Divergence IV "A New Hope". También (aunque no se aprecie) se utiliza Unity 2D que mejora los efectos visuales del dash. El fondo se encuentra en DevianART y se titula "Whirl".





viernes, 15 de julio de 2011

Minitutorial de uso de GNUPlot

GNUPlot puede trabajar tanto de forma interactiva como no interactiva, por lo que se puede invocar desde un shell script.

Un ejemplo sencillo.

Supongamos que tenemos tres ficheros, con dos columnas cada uno de datos numéricos separados por espacios en blanco (espacios, tabuladores, ...). Estos ficheros se pueden dibujar utilizando GNUPlot de forma tanto interactiva como no interactiva.

De manera interactiva

Abrimos GNUPlot en un terminal, escribiendo gnuplot y nos mostrará el modo interactivo. En el podemos representar los ficheros de forma rápida utilizando la orden plot.
plot ’fichero1.txt’ u 1:2, ’fichero2.txt’ u 1:2, ’fichero3.txt’ u 1:2

De manera no interactiva

En la terminal escribimos la siguiente orden para pintar los ficheros:
echo \
"plot ’fichero1.txt’ u 3:4, ’fichero2.txt’ u 3:4, ’fichero3.txt’ u 3:4" |
gnuplot -persist
La u es la abreviatura de la palabra reservada using y los números a continuación son el rango de columnas en el fichero que se van a representar.

Parámetros más comunes.

  • set xrange[a:b]: especifica el rango de la variable x.
  • set yrange[a:b]: especifica el rango de la variable y.
  • set xlabel 'etiqueta': especifica la etiqueta del eje x.
  • set ylabel 'etiqueta': especifica la etiqueta del eje y.
  • set encoding iso_8859_1: especifica el tipo de codificación. Resulta útil cuando es necesario rotular utilizando acentos.
  • set title 'etiqueta': especifica el título del gráfico.
  • set logscale x : fija el eje x con escala logarítmica.
  • set logscale y : fija el eje y con escala logarítmica.
  • set xtics ("1" 1, "Dos" 2): especifíca que puntos del eje x deben aparecer en la gráfica y qué etiqueta deben llevar.
  • set ytics ("1" 1, "Dos" 2): especifíca que puntos del eje y deben aparecer en la gráfica y qué etiqueta deben llevar.
  • set key [punto/posición]: especifica el lugar dónde situar la leyenda. Puede ponerse el punto absoluto o utilizar una posición relativa de entre {left | right | center} {top | bottom | center}.

Utilizar una escala logarítmica.

set autoscale
set title 'Tasa de error en función del nº de estados.'
set xlabel "Estados"
set ylabel "%Error"
set logscale x
set logscale y
set xrange [0.9:280]
set yrange [0.9:104]
set xtics ("1" 1, "2" 2, "4" 4, "8" 8, "16" 16, "32" 32, "64" 64, "128" 128, "256" 256)
set ytics ("1" 1, "2" 2, "3" 3, "4" 4, "5" 5, "10" 10, "20" 20, "30" 30, "40" 40, "50" 50, "100" 100)
plot "salida_codeword4" using 1:2 title  'Codewords = 4' with linespoints, \
     "salida_codeword16" using 1:2 title '           16' with linespoints, \
     "salida_codeword64" using 1:2 title '           64' with linespoints, \
     "salida_codeword256" using 1:2 title '          256' with linespoints
Generando la siguiente gráfica:

Utilizar LaTeX para pintar la gráfica.

GNUPlot puede generar un fichero con la información de la gráfica para LaTeX. Este fichero es importado en un documento de LaTeX que es quién realiza el dibujado. Para que genera un fichero en LaTeX hay que utilizar la orden:
set output "fichero_latex.tex"
Un ejemplo de uso, en el que se pinta la función seno escrita en notación polaca inversa.
set terminal latex
set output "gnueg.tex"
set title "This is a plot of $y=\sin(x)$"
set xlabel "This is the $x$ axis"
set ylabel "\\rotatebox{90}{This is the $y$ axis}"
plot [0:2*pi] [-1.2:1.2] sin(x) title "Sinus"
set output "egpltl.tex"
replot
Para importarla en LaTeX, se podría hacer de la siguiente manera:
\begin{figure}[ht]
 \centering
 \scalebox{0.8}{\input{egpltl.tex}}
 \caption{Funció generada per {\sf GNUPLOT}.}\label{egplt1}
\end{figure}

jueves, 14 de julio de 2011

Un promtp para Linux

Un prompt sencillo para Linux.
Para utilizar este prompt de manera permanente:
export PS1="\[\033[0;34m\]\[\e]0;\u@\h: \w\a\]\u\[\033[0;31m\]@\h:\w$ \[\033[0;0m\]"

Ambiance Evolution para Ubuntu.

Un tema para Ubuntu.
Para instalarlo se añaden dos repositorios: equinox con los iconos de faenza y ambiance-evolution donde está el tema ambiance modificado.
sudo apt-add-repository ppa:tiheum/equinox
sudo apt-add-repository ppa:victored/ambiance-evolution
sudo mv  /usr/share/themes/Ambiance ~/
sudo mv  /usr/share/themes/Radiance ~/
sudo apt-get update
sudo apt-get install --reinstall light-themes

martes, 12 de julio de 2011

Wallpapers

Los fondos de escritorio que en algún momento he usado.










Personalizando las citas y referencias cruzadas en LaTeX.

Al igual que se personalizó el énfasis del texto en este post, también se puede hacer lo mismo para las citas a libros y a referencias cruzadas. Para ello, podemos crear dos nuevos comandos, a los que llamaré "myref" y "mycite".
\newcommand{\myref}[1]{\textcolor{red}{\emph{(\ref{#1})}}}
\newcommand{\mycite}[1]{\textcolor{PineGreen}{\cite{#1}}}
El texto ha sido generado de la siguiente manera:
que es poden consultar en \mycite{ogata} i \mycite{philips}, calculem les següents funcions de transferència que podem veure en les seccions~\myref{sec:pv},~\myref{sec:pdv},~\myref{sec:piv} i~\myref{sec:pidv}.
Los colores se encuentran dentro del paquete xcolor
\usepackage[usenames,dvipsnames]{xcolor}

Ejemplo de uso de lstlistings en LaTeX.

El paquete lstlisting permite incluir código fuente personalizado en LaTeX. Para ello, lo primero es incluir el paquete:
\usepackage{listings}
En este caso, el código se encuentra dentro de un fichero, reduciendo así el número de líneas del documento de LaTeX. El código que produce la figura de la imagen es el siguiente:
\lstset{numbers=left,stepnumber=5,numberstyle=\tiny,basicstyle=\footnotesize,stringstyle=\ttfamily,language=C,keywordstyle=\color{RedViolet},identifierstyle=\color{Mahogany}\bfseries,commentstyle=\scriptsize\itshape,basicstyle=\ttfamily}
\lstinputlisting[language=C, frame=trBL, texcl=true, escapechar=',%
caption={Dispositiu de \emph{Duff}}, label=lst:duff]{duffsdevice.c}
Donde duffsdevice.c es el nombre del fichero con el código C. Como se puede ver en la figura se ha cambiado el rótulo del código. Esto se puede conseguir de la siguiente manera:
\addto\captionscatalan{\renewcommand{\lstlistingname}{Algorisme}}

Personalizar el énfasis de un texto en LaTeX.

Enfatizar un texto en Latex puede convertirse en una tarea ardua si el número de palabras a resaltar es grande y si además se quiere utilizar algún color. Por esto, es una buena idea crear un nuevo comando para enfatizar. Yo lo he llamado "myemph" y lo he definido de la siguiente manera:
\newcommand{\myemph}[1]{\textcolor{Mulberry}{\emph{#1}}}
De esta manera, cuando enfatizo una palabra uso este nuevo comando.
\myemph{pattern matching}
Obteniendo algo así:
Cambiar el color de las palabras enfatizadas será mucho más rápido. Para utilizar este color es conveniente añadir el paquete xcolor.
\usepackage[usenames,dvipsnames]{xcolor}

Suavizar el texto de los documentos de LaTeX

El texto de la izquierda ha sido compilado sin más, en cambio el de la derecha ha sido compilado usando el paquete lmodern. Se puede apreciar que el texto de la derecha tiene un trazo más fino y continuo.

Si prefieres el trazo de la derecha recuerda añadir el paquete lmodern:
\usepackage{lmodern}

¿Cómo escribir el valor absoluto o la norma en LaTeX?

Para escribir el valor absoluto o la norma en LaTeX es conveniente crear un comando antes que usar la barra vertical "|". De forma muy simple antes del cuerpo del documento basta añadir las dos instrucciones siguientes:
\providecommand{\abs}[1]{\lvert#1\rvert}
\providecommand{\norm}[1]{\lVert#1\rVert}
Estos comandos se usan de la siguiente manera:
 \begin{gather}
  \abs{r_1} = \sqrt{\alpha^2 + \beta^2}\\
  \norm{r_2} = \sqrt{\alpha^2 + \beta^2 + \gamma^2}
 \end{gather}
Dando lugar a:

Ejemplo de cómo dibujar un circuito eléctrico en LaTeX.

A continuación un ejemplo sencillo de cómo dibujar un circuito eléctrico en LaTeX como el de la figura.
Incluyendo el paquete pstricks y pst-circ:
\usepackage{pstricks,pst-node,pst-circ,pst-plot,pst-3dplot}

Dentro del bloque de \begin{document} insertamos el código:
 \begin{figure}[ht]
  \centering
  \scalebox{0.8}{
  \ovalbox{\begin{pspicture}(-1,-1)(9,6)
   %Nodos del circuito
   \pnode(0,0){A}
   \pnode(3,0){B}
   \pnode(4,0){C}
   \pnode(5,0){D}
   \pnode(8,0){E}
   \pnode(0,2){F}
   \pnode(0,5){G}
   \pnode(3,5){H}
   \pnode(4,5){I}
   \pnode(8,5){J}
   %Conexiones
   \battery[directconvention=false,labeloffset=1.](F)(A){$3V$}
   \battery[directconvention=true](H)(I){$5V$}
   \myresistor{$i_1$}{A}{B}{$5\Omega$}
   \myresistor{$i_2$}{D}{E}{$1\Omega$}
   \myresistor{$i_1$}{F}{G}{$1\Omega$}
   \myresistor{$i_1$}{G}{H}{$2\Omega$}
   \myresistor{$i_3$}{I}{C}{$3\Omega$}
   \myresistor{$i_2$}{I}{J}{$2\Omega$}
   \myresistor{$i_2$}{J}{E}{$4\Omega$}
   %Cable para completar el circuito
   \wire(B)(C)
   \wire(C)(D)
   %Tierra
   \newground(C)
  \end{pspicture}}}
  \caption{Circuito con dos mallas.}\label{fig:circuito}
 \end{figure}

Google Pretty Print para blogspot.

Google Pretty Print permite resaltar código de ciertos lenguajes de programación. Puede encontrar una lista actualizada haciendo clic aquí. El código se puede resaltar usando varios estilos, puede verlos aquí.

Para utilizarlo en blogspot, hay que añadir las dos siguientes líneas debajo de la etiqueta <head>
<link href="http://google-code-prettify.googlecode.com/svn/trunk/styles/sunburst.css" rel="stylesheet" type="text/css"></link>
<script src="http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.js" type="text/javascript">
</script>
Y en la etiqueta <body> poner:
<body onload='prettyPrint()'>
Para utilizarlo, en la entrada hay que poner:
<pre class="prettyprint"><code class="language-java">...</code></pre>
Puede ver un ejemplo de código Java resaltado haciendo clic aquí. Si dispones de algún dominio en internet, puedes decargar el script de Google Pretty Print y no depender de los enlaces de Google. Para ello, puedes descargarlo desde la página oficial de Google Pretty Print haciendo clic aquí.

viernes, 17 de junio de 2011

Testing Google pretty print

/**
* Creates a new CD, provided its title, group, and song list.
* @param title The title.
* @param group The group.
* @param tracks The song titles.
*/
public CompactDisc(String title, String group, String... tracks) {
this.title = title;
this.group = group;
this.tracks = Arrays.asList(tracks);
// Since CompactDiscs are immutable, the hash value will never change for an instance.
this.hashvalue = (new String(title + group)).hashCode();
}

viernes, 29 de abril de 2011

Plugins para Eclipse Galileo usando Update Manager

Para añadir los siguientes plug-ins basta con:
  1. Ir a Help → Software Updates → Find and Install...
  2. Seleccionar la opción de buscar nuevas características y hacer click en Next. Hacer clic en New Remote Site e introducir en el campo URL las direcciones que se muestran a continuación.
Azurri Clay permite crear un modelo relacional. Una vez creadas las tablas, sus relaciones, claves primarias, claves ajenas, ... genera el código SQL asociado.


Una vez tengas el esquema de la base de datos, para crearla puedes usar Eclipse SQL Explorer.



Con Hibernate puedes hacer un mapeado de las tablas de la base de datos a objetos.


Con JIgloo puedes crear una interfaz gráfica de usuario a base de arrastrar los controles al formulario.


domingo, 3 de abril de 2011

Arreglando el touchpad de HP Envy 15

El touchpad o clicpad del HP Envy 15 está plagado de errores. Se trata de un error reconocido y actualmente se sigue trabajando en el. Hasta el momento la solución que muestro es hasta donde se ha llegado. Esta solución incluye:
  1. Habilitar clic derecho y clic central.
  2. Habilitar el encendido y apagado del LED.
Puesto que el proceso es un poco largo lo he metido en un script que se puede puede descargar haciendo clic aquí. (El script lo ejecutas bajo tu propio riesgo). Una vez descargado, se le dan permisos de ejecución y se ejecuta como superusuario de la siguiente manera.
chmod +x fix.sh
sudo ./fix.sh
Por último, es necesario reiniciar. A continuación pego el script anterior:
#!/bin/bash
KERNELVER=`uname -r`
mkdir -p tmpbuild
cd tmpbuild
rm -rf *
wget http://david.hardeman.nu/synaptics-suse-patches.tar.bz2
apt-get source xserver-xorg-input-synaptics
cd xserver-xorg-input-synaptics-*/debian/patches
tar xfvj ../../../synaptics-suse-patches.tar.bz2
wget https://bugs.launchpad.net/ubuntu/+source/linux/+bug/582809/+attachment/2155978/+files/213-fix_mohegan-V2.patch
ls -1 2*.patch >> series
cd ../..
sudo apt-get build-dep xserver-xorg-input-synaptics
dpkg-buildpackage -us -uc -rfakeroot
sudo dpkg -i ../xserver-xorg-input-synaptics_*.deb
# PSMOUSE
cd ..
apt-get source linux-image-`uname -r`
sudo mkdir -p /usr/src/psmouse-`uname -r`/src
sudo cp linux-*/drivers/input/mouse/* /usr/src/psmouse-`uname -r`/src/

echo -e "PACKAGE_NAME=\"psmouse\"
PACKAGE_VERSION=\"$KERNELVER\"
CLEAN=\"rm -f *.*o\"

BUILT_MODULE_NAME[0]=\"psmouse\"
MAKE[0]=\"make -C \$kernel_source_dir M=\$dkms_tree/\$PACKAGE_NAME/\$PACKAGE_VERSION/build/src psmouse.ko\"
BUILT_MODULE_LOCATION[0]=\"src\"
DEST_MODULE_LOCATION[0]=\"/updates\"

AUTOINSTALL=\"yes\"" >>/usr/src/psmouse-`uname -r`/dkms.conf

wget https://bugs.launchpad.net/ubuntu/+source/linux/+bug/582809/+attachment/2147105/+files/synaptics_led_support.patch -P /tmp
cd /usr/src/psmouse-`uname -r`
sudo patch -p1 -f -i /tmp/synaptics_led_support.patch
sudo dkms add -m psmouse -v `uname -r`
sudo dkms build -m psmouse -v `uname -r`
sudo dkms install -m psmouse -v `uname -r`

K/Ubuntu 10.10 no estima la duración de la batería en HP Envy 15

Al hacer clic sobre el icono de la batería en K/Ubuntu 10.10 pone "Estimando..." y no muestra la duración de la batería. Esto se resuelve instalando lo siguiente:
sudo add-apt-repository ppa:brian-rogers/power
sudo apt-get update
sudo apt-get upgrade

jueves, 31 de marzo de 2011

Hibernar y suspender el HP Envy 15 en K/Ubuntu 10.10

Basta con seguir los pasos que se especifican en la siguiente dirección:

http://thecodecentral.com/2011/01/18/fix-ubuntu-10-10-suspendhibernate-not-working-bug

jueves, 24 de marzo de 2011

Ejemplo de uso de gnuplot.

Supongamos que tenemos un fichero como el siguiente al que llamo error_w_1.dat

También hay otro fichero con el mismo formato y queremos representarlos usando gnuplot. Un sencillo script sería el siguiente:

Instalar Firefox-4.0 en K/Ubuntu 10.10

Abrimos una terminal e insertamos los siguientes comandos.

  • sudo add-apt-repository ppa:mozillateam/firefox-stable
  • sudo apt-get update && sudo apt-get upgrade 
Para cambiar el idioma de Firefox-4.0 pulsa aquí.

miércoles, 2 de marzo de 2011

¿Cómo cambiar el idioma en firefox 4-0?

Para cambiar el idioma del Firefox 4-0 en Linux se realiza accediendo a la siguiente dirección:

En el caso de tener firefox de 32 bits (la más común):
http://releases.mozilla.org/pub/mozilla.org/firefox/releases/latest-4.0/linux-x86_64/xpi/


En el caso de tener firefox de 64 bits.
http://releases.mozilla.org/pub/mozilla.org/firefox/releases/latest-4.0/linux-i686/xpi/

A continuación pinchar en es-ES.xpi, por ejemplo.

martes, 1 de marzo de 2011

Comillas latinas en LaTeX.

Dos maneras de escribir comillas latinas en LaTeX:
  1. "<Ejemplo de comillas latinas">
  2. \guillemotleft Ejemplo de comillas latinas\guillemotright
Ejemplo:

Dibujar funciones de forma rápida y con un buen resultado

He encontrado un programa online para representar funciones que está bastante bien. Se encuentra en


Un ejemplo:


Nota: Al intentar guardar la imagen tuve problemas. Pero con ksnapshot (Kubuntu) basta con seleccionar el área de la pantalla deseada.

domingo, 27 de febrero de 2011

HP Envy 15 no se apaga con Ubuntu/Kubuntu

Uno de los múltiples problemas del HP Envy 15 (en mi caso el 1150es) es que no se apaga. Tras mostrar el mensaje Will now halt nunca se llega a apagar y hay que forzar el apagado manual pulsando el botón de encendido durante unos segundos. Para solucionar esto es necesario actualizar la BIOS. El software se puede bajar desde la página de HP y hay que instalarlo en Windows 7.

martes, 22 de febrero de 2011

HP Envy 15 Acelerar la tarjeta gráfica ATI HD 5830 en Ubuntu.

Para acelerar la tarjeta gráfica ATI HD 5830 que viene, por ejemplo, en el HP ENVY 15 en Ubuntu Maverick viene explicado en la siguiente URL.

http://wiki.cchtml.com/index.php/Ubuntu_Maverick_Installation_Guide

Para cualquier distribución basada en Ubuntu:

http://wiki.cchtml.com/index.php/Ubuntu

Para cualquier otra distribución:

http://wiki.cchtml.com/index.php/Main_Page

lunes, 14 de febrero de 2011

Instalando Ubuntu o Kubuntu en Hp Envy 15.

Los puertos USB del HP Envy son versión 3.0, por lo que cuando intentas instalar Ubuntu, Kubuntu, desde una unidad que haga uso del USB dará un error. Si utilizamos la version en vivo encontraras un error que dice algo así como:
Busy Box ... (initramfs)
Unable to find a medium containing a live file system.

Si utilizas el empaquetado Ubuntu alternate, cuando intentes montar la unidad de cd (externa en este caso) dará un error informando de que no puede cargar dicha unidad. Una manera de conseguir instalar Ubuntu o Kubuntu en este sistema es metiendo el Sistema Operativo GNU/Linux tanto en un pendrive o BD-ROM (BlueRay ...) y a la vez en una memoria SD. Posibles pasos a seguir:
  1. Utilizar Unetbootin o el creador de discos de arranque de Ubuntu para introducir Ubuntu o Kubuntu en un pendrive y también en una SD.
  2. Reiniciar el ordenador y pulsar F9 durante el arranque para elegir una unidad desde la que bootear GNU/Linux.
  3. Elegir la opción de USB o CD según donde hayamos puesto el sistema operativo. (Antes de elegir debemos estar seguros de que la SD está insertada).
  4. Continuar la instalación normalmente.
No es muy cómodo pero al menos se puede instalar. Esperemos que en las nuevas versiones arreglen los de los USB 3.0.

viernes, 4 de febrero de 2011

Algunas cosillas sobre LaTeX (1).

Un ejemplo de cómo comenzar un fichero escrito en Latex:
\documentclass[a4paper,12pt]{article} \usepackage[T1]{fontenc} \usepackage[latin9]{inputenc} \usepackage[english,spanish]{babel} \frenchspacing  \begin{document} \end{document}


La virgulilla (~) especifica que dos palabras a pesar de llevar un espacio de por medio no se deben separar en dos líneas.

\footnote{Texto a pie de página} inserta un texto a pie de página.

\begin{verbatim}
  Texto sin formatear.                 El texto se vuelca tal cual en el formato de salida.
\end{verbatim}

Si se usa \begin{verbatim*} ...\end{verbatim} marcará los espacios en blanco.

jueves, 3 de febrero de 2011

Escribir código resaltado en Blogger, Wordpress, ... sin plug-ins

Una fantástica herramienta para añadir código resaltado sin necesidad de instalar ningún plug-in.


La única pega es que no soporta muchos lenguajes.  Un ejemplo de salida de esta herramienta es el siguiente código en Java.

public class Example { private int a; private String b; public Example() { } public static void main(String [] args) { System.out.println("http://airamrguez.blogspot.com"); } }

martes, 1 de febrero de 2011

How to implement a getchar or getch function using C++ libraries.

There is no getchar() function in C++ as it's not in iostream.h library. We can implement a getchar() function using some bash commands to implement the function under GNU/Linux. In Windows you can import the library conio.h so you don't have this problem.

Here is a sample code of getch() or getchar() function development:

For example, we create a file named nstdio.h which contains the function getch().


#include <iostream> #include <string> #include <sstream> #include <fstream> #include <cstdlib> using namespace std; static bool isGenerated = false; const string readCharScript[7] = {"#!/bin/sh" , "tput smso", "tput rmso", "oldstty=`stty -g`", "stty -icanon min 1 time 0", "dd bs=1 count=1 of=output >/dev/null 2>&1", "stty \"$oldstty\"" }; void resetOutputFile() { ofstream outputFile( "output", fstream::out ); outputFile << "$"; outputFile.close(); } void GenereFile() { resetOutputFile(); ofstream readFile( ".readone", fstream::out ); for ( int i = 0; i < 7; i++ ) readFile << readCharScript[i] << endl; readFile.close(); system("chmod ugo+x .readone"); isGenerated = true; } char getch() { if (!isGenerated) GenereFile(); system("./.readone"); const int EOL = '$'; char ch; ifstream file("output", fstream::in); while (ch == EOL) file >> ch; file.close(); resetOutputFile(); return ch; }

A file to test the getch() function called test.cpp.


#include <iostream> #include "nstdio.h" using namespace std; int main() { char ch = getch(); if (ch == '\n') cout << "Se pulsó intro" << endl; else cout << endl << "El caracter es: " << ch << endl; return 0; }



As you can see I didn't use objects, but you can encapsulate the methods in a class. The important thing is that I only use C++ libraries.

Furthermore, don't forget that C++ is a multiparadigm language, so you can use both, OO and procedural programming.

Have a nice programming!

lunes, 31 de enero de 2011

¿Cómo implementar una librería estática usando C++ en GNU/Linux?

En este post se explica lo fácil que es realizar una librería estática.
Para explicarlo, vamos a considerar un fichero que ni si quiera contiene una clase (para simplificar las cosas) que usa una llamada a una función getchar() como la de Pascal o getch(), getche() de la libreria conio.h que se usa en Windows.

Supongamos el siguiente fichero nstdio.h

#include <iostream> #include <string> #include <sstream> #include <fstream> #include <cstdlib> using namespace std; static bool isGenerated = false; const string readCharScript[7] = {"#!/bin/sh" , "tput smso", "tput rmso", "oldstty=`stty -g`", "stty -icanon min 1 time 0", "dd bs=1 count=1 of=output >/dev/null 2>&1", "stty \"$oldstty\"" }; void resetOutputFile() { ofstream outputFile( "output", fstream::out ); outputFile << "$"; outputFile.close(); } void GenereFile() { resetOutputFile(); ofstream readFile( ".readone", fstream::out ); for ( int i = 0; i < 7; i++ ) readFile << readCharScript[i] << endl; readFile.close(); system("chmod ugo+x .readone"); isGenerated = true; } char getch() { if (!isGenerated) GenereFile(); system("./.readone"); const int EOL = '$'; char ch; ifstream file("output", fstream::in); while (ch == EOL) file >> ch; file.close(); resetOutputFile(); return ch; }



Ahora un fichero nstdio.cpp que lo incluya.

#include "nstdio.h"



[airam~/Documentos/lib]-> g++ -Wall -c nstdio.cpp
[airam~/Documentos/lib]-> ar -cvq libnstdio.a nstdio.o
a - nstdio.o
[airam~/Documentos/lib]-> ar -t libnstdio.a
nstdio.o

A continuación creamos un fichero test.cpp. Este fichero debe contener las cabeceras de las funciones que se encuentran en la librería y que se van a utilizar.


#include <iostream> char getch(); using namespace std; int main() { char ch = getch(); if (ch == '\n') cout << "Se pulsó intro" << endl; else cout << endl << "El caracter es: " << ch << endl; return 0; }



y lo compilamos de la siguiente manera:

[airam~/Documentos/lib]-> g++ -o test test.cpp libnstdio.a
[airam~/Documentos/lib]-> ./test

sábado, 15 de enero de 2011

Un prompt para la consola de Linux.

Un prompt simple para la consola de Linux:


PS1="\[\033[1;33m\][\[\033[1;32m\]\u\[\033[1;32m\]\[\033[0;1;33m\]\w\[\033[0;1;33m\]]-> \[\033[0;0m\]"



Para hacerlo permanente, lo guardamos en .bashrc, por ejemplo así:

echo 'PS1="\[\033[1;33m\][\[\033[1;32m\]\u\[\033[1;32m\]\[\033[0;1;33m\]\w\[\033[0;1;33m\]]-> \[\033[0;0m\]"' > .bashrc

sábado, 8 de enero de 2011

¿Cómo crear un launcher para una aplicación en K/Ubuntu?

Después de haber desarrollado una aplicación, nos encontramos en la situación en la que queremos que un instalador haga lo propio y a parte de copiar el programa y sus "resources" ponga un lanzador en el menú de nuestro GNU/Linux. Para hacer esto hay que crear un fichero por ejemplo: programa.desktop cuyo contenido se muestra más abajo.

Copiar el fichero .desktop en el directorio:
/usr/share/applications/
Y el fichero binario (el programa en sí) en:
/usr/bin/

Contenido de programa.desktop:

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Encoding=UTF-8
Type=Application
Name=program
TryExec=$(dirname %k)/program
Exec=$(dirname %k)/program
Icon=icon.png
Terminal=false


Ejecutar en la consola:

xdg-desktop-menu install /usr/share/applications/program.desktop --novendor