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!