domingo, 12 de diciembre de 2010

Intel GMA500 "Poulsbo" para Asus Seashell 1201HA.

Para Kubuntu Maverick Meerkat los drivers de la tarjeta gráfica se encuentran en:

https://wiki.ubuntu.com/HardwareSupportComponentsVideoCardsPoulsbo

sábado, 4 de diciembre de 2010

¿Cómo imprimir por pantalla un QString?

Una posible manera la siguiente:
#include <iostream>
int main() {
  QString str = "hola";
  std::cout << str.toStdString() << std::endl;
}

¿Cómo compilar C++0x con Qt4?

Para poder compilar utilizando C++0x y Qt4 hay que editar el fichero que se genera con qmake y añadir lo siguiente:

#Input
HEADERS +=
SORUCES +=
QMAKE_CXXFLAGS += -std=c++0x


De esta manera ya se pueden utilizar las nuevas características de C++0x.

viernes, 19 de noviembre de 2010

Enviar un e-mail suplantando la identidad de otra persona.

Nota: Este post nada tiene que ver con hacking, no se realiza nada ilegal.

El protocolo SMTP (Simple Mail Transfer Protocol) se utiliza para intercambiar e-mails. La forma en la que debe comportarse está definida en un estándar, en concreto el RFC 2821.

La anécdota de este protocolo de la capa de aplicación tan común, es que el estándar no especifica que para poder enviar correos electrónicos haya que proporcionar una contraseña. Esto da lugar a realizar cosas como la siguiente:

Supón que tienes dos amigos, Pepe y Juan. Tanto Pepe como Juan como tú tienen cuentas de correo electrónico en el trabajo (por ejemplo). Como sabes cuál es el correo de Pepe y de Juan, puedes enviar un correo a Juan haciéndote pasar por Pepe. Cuando Juan reciba el correo electrónico escrito por tí, verá que el remitente es Pepe. Sin embargo, Pepe no tendrá ni idea de que ese correo ha sido enviado con su e-mail.

¿Curioso verdad? Veamos como hacerlo funcionar:
  
telnet correo.servidor.empresa.es 25

Trying X X X . X X X . X X X . X X X . . .
Connected t o c o r r e o . servidor. empresa . e s .
Escape c h a r a c t e r i s ] .
220 c o r r e o . servidor . empresa . e s ESMTP − SERVIDOR

ehlo correo . servidor . empresa . es

250− c o r r e o . servidor. empresa . e s .
250−PIPELINING
250−SIZE 40480000
250−VRFY
250−ETRN
250−AUTH PLAIN LOGIN
250−AUTH
=PLAIN LOGIN
250−ENHANCEDSTATUSCODES
250−8BITMIME
250 DSN

m a i l from : CorreoDePepe @ servidor.empresa . e s
250 2 . 1 . 0 Ok
rcpt to : CorreoDeJuan @ servidor.empresa . es
250 2 . 1 . 5 Ok
data
354 End data with
>.
>
s u b j e c t : Asunto del correo a enviar
Aquí puedes escribir el cuerpo del mensaje. Para terminar escribe "."
.

250 2 . 0 . 0 Ok : queued a s 55CXXXXX1BA


Nota: Según las restricciones del servidor hemos de reiterar el envío de mensajes ehlo. Esto es debido a que algunos servidores tienen un mecanismo simple para evitar correos de spam, basado en tiempos de espera y reenvíos. Otra posibilidad es enviarse un correo a sí mismo y ya luego el de suplantación de identidad.

Servidores de correo como hotmail, gmail, ... no permiten realizar esta serie de actividades, lo que quiere decir que no implementan el protocolo estandarizado de SMTP, sino un SMTP adulterado. Si lo intentas comprobarás que el protocolo rechaza este tipo de intentos.

Sin embargo, si tienes una cuenta de correo electrónico en la universidad, en el trabajo, ... seguro que podrás ver que efectivamente esto funciona.

sábado, 13 de noviembre de 2010

¿Cómo gestionar la dependencia circular en C++?

La dependencia circular ocurre cuando dos clases se han de incluir la una a la otra. Para que el compilador no emita un error la forma de implementar las clases es la siguiente:

A.h

#ifndef _A_H_
#define _A_H_
#include <string>

class B;  // Declaración forward de la clase B

class A {
public:
  B getBfromA();
  std::string who_are_you();
};

#endif

B.h

#ifndef _B_H_
#define _B_H_
#include <string>

class A;  // Declaración forward de la clase A

class B {
public:
  A getAfromB();
  std::string who_are_you();
};

#endif

A.cpp

#include "A.h"
#include "B.h"

B A::getBfromA() {
  return B();
}

std::string A::who_are_you() {
  return "I am A";
}

B.cpp

#include "B.h"
#include "A.h"

A B::getAfromB() {
  return A();
}

std::string B::who_are_you() {
  return "I am B";
}

main.cpp

#include "A.h"
#include "B.h"

#include <iostream>

int main() {
  A a;
  B b;

  A ab = b.getAfromB();
  B ba = a.getBfromA();

  std::cout << "ab is: " << ab.who_are_you() << endl;
  std::cout << "ba is: " << ba.who_are_you() << endl;
  return 0;
}

Cuando se utiliza dependencia circular hay ciertas prácticas que no se pueden hacer. Supongamos el código A.cpp donde la clase B está declarada pero no definida. Veamos que se puede hacer:
  • Utilizar B como puntero o referencia, por ejemplo:
    class A {
        B *pt;
        B &pt;
    };
  • Declarar funciones o métodos cuyos parámetros o valores devueltos sean clases incompletas.
    class A {
      void f1(B);
      B    f2();
    };
  • Definir funciones o métodos que acepten/retornen punteros/referencias a los tipos incompletos (pero sin usar sus miembros)
    class A {
      void f3(B*, B&) {}
      B&   f4()       {}
      B*   f5()       {}
    };
Lo que no se puede hacer:
  • Utilizar B como clase base:
    class A : B {} // error de compilación
  • Usar B para declarar un miembro.
    class A {
        B m; // error de compilación
    };
  • Definir funciones o métodos usando el tipo B.
    class A {
      void f1(B b) {} // error de compilación
      B    f2()    {} // error de compilación
    };
  • Usar sus métodos o campos, en general intentar referenciar una variable con un tipo incompleto.
    class A {
        B *m;            
        void method()            
        {
            m->someMethod();      // error de compilación
            int i = m->someField; // error de compilación
        }
    };
Bibliografía:
http://www.adp-gmbh.ch/cpp/forward_decl.html
http://stackoverflow.com/questions/553682/when-to-use-forward-declaration

viernes, 12 de noviembre de 2010

Claves WEP

¿Eres usuario de telefónica y tienes contratado ADSL? Si es así, este artículo te puede interesar. Si no, quizás te podría interesar la conclusión final.

Seguro que como no quieres que nadie se conecte a tu router, usarás algún tipo de cifrado. Mucha gente utiliza el cifrado WEP con clave compartida. La clave WEP es un número hexadecimal (base 16) que puede ser de 64 ó 128 bits. ¿Te has preguntado alguna vez cómo se generan estas claves? Lo lógico sería decir que son aleatorias, pero parece que Telefónica no piensa así. Veamos por qué.
Telefónica comercializa básicamente 3 tipos de Routers que son:




ZyxelXavi Comtrend
0013490001380030DA

Según el tipo de Router que tengas, tu contraseña WEP por defecto comenzará por esa letra e irá seguida de los siguientes dígitos que se especifican debajo de cada módem.
Es decir, que si tienes un módem Zyxel, tu clave WEP comienza por:

Z001349

Pero no queda ahí la cosa. Como sabrás tu Wifi tiene un nombre de identificación, también llamado SSID. Por ejemplo un típico SSID por defecto de telefónica es el prefijo "WLAN_" seguido de un número hexadecimal. Por ejemplo 8B, dando como resultado el SSID:

WLAN_8B

Esto quiere decir que esos dos dígitos hexadecimales se ponen al final de la clave WEP, por lo que en el ejemplo anterior tenemos que la clave WEP es:

Z001349XXXX8B

Las equis que aparecen son los únicos 4 dígitos hexadecimales que se generan de forma aleatoria. Lo que quiere decir que realizar un programa que utilizando la fuerza bruta que encuentre la combinación de 4 dígitos que completa la clave WEP no es tan costoso computacionalmente.

Solución:

- ¿Cambiar la clave WEP por defecto? Sería aconsejable, pero esta solución no hace tu conexión segura. Los packets sniffers utilizados para averiguar claves WEP utilizan un mecanismo más potente para averiguar claves. No le importa que tu router sea de Telefónica, de ya.com, etc.

Una solución es habilitar en el router el MAC filtering y añadir las direcciones MAC de las tarjetas de red de aquellos dispositivos (pc's, portátiles, móviles, ...)  al router que queremos conectar a Internet. Cuando se habilita MAC filtering un packet sniffer no puede asociarse con nuestro router, por lo que posteriormente no podrá probar ningún tipo de ataque.

Para ello hay que entrar en la página de configuración del Router. Si estás en este Blog probablemente sepas cómo (y si no, pon un comentario).

¿Cómo saber cuál es la dirección de mi tarjeta de red en Linux?

Pues mediante el comando ifconfig.

Obtendrás una salida como la siguiente:

eth0    Link encap:Ethernet  direcciónHW 00:XX:XX:XX:XX:XX 
          ACTIVO DIFUSIÓN MULTICAST  MTU:1500  Métrica:1
          Paquetes RX:0 errores:0 perdidos:0 overruns:0 frame:0
          Paquetes TX:0 errores:0 perdidos:0 overruns:0 carrier:0
          colisiones:0 long.colaTX:1000
          Bytes RX:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupción:44 Dirección base: 0x8000

El campo de direcciónHW es la dirección de tu tarjeta de Red.

Luego , WEP es un sistema de cifrado seguro, siempre que se configure correctamente.



martes, 14 de septiembre de 2010

Plantilla de Java para Kate

Una plantilla o template es un documento base o general a partir del cual se puede partir para trabajar en la mayoría de las veces. En Kate se pueden utilizar plantillas habilitando el plugin correspondiente. ¿Cómo?
Vamos al menú Preferencias -> Configurar Kate
A continuación seleccionamos complementos y en el cuadro que aparece a la derecha habilitamos la opción "Plantillas de archivos".

Clic en Aplicar y Aceptar.

En el menú de Preferencias ahora encontrarás una nueva opción, "Gestionar plantillas". Si le das, aparece una ventana en la que puedes crear, editar, eliminar diferentes plantillas.

Por ejemplo, una plantilla para Java sería la siguiente:

katetemplate: Template=Java Group=Código fuente Documentname=Plantilla Icon=java Highlight=Java
katetemplate: Author=Airam Rodríguez Rivero
katetemplate: Description=Plantilla básica para Java.
/**
 * <b>Descripción</b>
 * <p>
 * Copyright (C) %{day}-%{month}-%{year}, Airam Tal tal email@email.com
 */


public class ${ClassName} {




  /**
   * <b>${ClassName}</b>
   * <p>
   *  
   */
  public ${ClassName}( ) {
   
  }
}


Esta plantilla podría tener el nombre de "Java.katetemplate" y se debería almacenar en el siguiente directorio:


/home/TU_NOMBRE_DE_USUARIO/.kde/share/apps/kate/plugins/katefiletemplates/templates/

miércoles, 18 de agosto de 2010

Dos formas de escribir límites en Latex.

Una primera forma sin \displaystyle es como sigue:

$\lim\limits_{x\rightarrow x_0}f(x)$

Una segunda forma es:

$\displaystyle\lim_{x \rightarrow x_0} f(x)$

Las dos producen el mismo resultado:

Integral definida en Latex.

Ejemplo de una integral definida en LaTeX.
\begin{equation}
 \int^{+\infty}_0 \frac{1}{1+t^4}\,\mathrm{d}t = \frac{\sqrt{2}}{4} \pi
\end{equation}

martes, 17 de agosto de 2010

\nonumber en Latex.

Cuando se utiliza eqnarray sin * se enumeran todas las ecuaciones que se escriban dentro del ámbito marcado por las palabras reservadas begin y end. Si se utiliza eqnarray con * no se enumera ninguna de las ecuaciones. Para numerar selectivamente unas ecuaciones y otras no se puede utulizar \nonumber.
A continuación un ejemplo:

\begin{eqnarray}
x&=&y\label{prime}\\
x^2&=&xy\nonumber\\
x^2-y^2&=&xy-y^2\nonumber\\
(x+y)(x-y)&=&y(x-y)\nonumber\\
x+y&=&y\nonumber\\
2y&=&y\quad \mbox{por (\ref{prime})}\nonumber\\
2&=&1\nonumber
\end{eqnarray}

Referencias a ecuaciones en Latex.

   Cuando escribimos una ecuación en un texto, a veces es necesario hacer referencia a ella en varias ocasiones. Una forma muy común de hacerlo es escribiendo un número entre paréntesis al lado de la fórmula o ecuación. En Latex esto se consigue de la siguiente manera:

\begin{equation}
\label{pitagoras}
  c_1^2 + b_1^2 = h^2
\end{equation}

   Para referirnos a ella lo haremos de la siguiente manera:

La ecuación (\ref{pitagoras}) es la del teorema de Pitágoras.

Enfatizar números en Latex.

  Hace tiempo que quería saber qué tipo de letra era el que daba como salida el siguiente tipo de numeración:


es tan fácil como emfatizar los números de la siguiente forma:

\emph{0 1 2 3 4 5 6 7 8 9}

Definir un operador con tilde en Latex.

  Una manera de definir un operador con tilde es la siguiente:

\def\max{\mathop{\mbox{\normalfont m\’ax}}\limits}

Definir el comando \sen en Latex para no usar \sin.

  En Latex el operador seno es \sin en lugar de \sen. Es más elegante escribir el texto en castellano en lugar de mezclar idiomas sin necesidad. Por esto, una forma de definir el operador \sen es la siguiente:

\def\sen{\mathop{\mbox{\normalfont sen}}\nolimits}

Crear un cuadro de texto con borde en Latex.

 A continuación, muestro un ejemplo de cómo crear un cuadro de texto para añadir una nota.

\fbox{\parbox[b]{\linewidth}{\textbf{\underline{\emph{Nota:}}} Esto es un ejemplo de cuadro de texto para escribir una nota.\\ $x = \dfrac{-b \pm \sqrt{b^2 - 4 \cdot a \cdot b}}{2\cdot a}$}}

Cuadro de texto en Latex.

sábado, 7 de agosto de 2010

Conseguir que amarok funcione sin problemas con youtube.

Uno de los problemas con los que me he encontrado en Kubuntu Lucid Lynx es la incompatibilidad entre amarok y youtube. Ambos usan pulseaudio y dan problemas si los dos funcionan al mismo tiempo. Una solución es eliminar pulseaudio y reemplazarlo por otras librerías.

Desinstalar pulseaudio:

sudo apt-get purge --remove pulseaudio

Instalar lo siguiente:

sudo apt-get install alsa-oss libasound2 libasound2-plugins sysv-rc-conf

Reiniciar y listo.

Error de plymouth al iniciar en Kubuntun Lucid Lynx.

Al iniciar Kubuntu en algunos equipos puede dar un error en el proceso plymouth.

Para evitarlo (aunque no del todo, pero suficiente para olvidarnos del tema) hay que desinstalar el siguiente paquete:

sudo aptitude purge ubuntu-minimal ureadahead

Reiniciar y más o menos la cosa debería funcionar.

Instalar sun-java6-jdk en Kubuntu Lucid Lynx.

Para instalar sun-java6-jdk hay que añadir un nuevo repositorio a la librería:

sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"

Actualizamos

sudo aptitude update

Y por último instalamos java6-jdk

sudo aptitude install sun-java6-jdk

sábado, 24 de julio de 2010

Pantalla negra en Asus Seashell 1201HA tras hibernar.

Cuando se cierra la tapa del Asus Seashell 1201HA el ordenador entra en hibernación y la pantalla se apaga. Una vez está la pantalla negra no vuelve a funcionar de nuevo ni el sistema gráfico ni nada que tenga que ver con la pantalla. Se ve totalmente oscura. ¿Cómo arreglar esto?


Abrimos un terminal (pulsamos Alt + F2 y aparece una barra en la parte superior de la pantalla y escribimos: konsole)


Se abre la konsola que tiene el siguiente aspecto (o similar):



Hay que eliminar vbetool, por lo que en la consola escribimos:

sudo apt-get remove --purge vbetool

Al insertar este comando nos pedirá la contraseña de superusuario (esa con la que se inicia sesión). Luego hay que instalar uswsusp. En la misma consola escribimos lo siguiente:

sudo apt-get install uswsusp

Para probar que funciona correctamente se puede utilizar el comando, que también se escribe en la konsola:

sudo s2ram --force
También le puede interesar:

Instalar los drivers de la tarjeta gráfica del Asus Seashell 1201HA. (Altamente recomendado).

jueves, 22 de julio de 2010

Activar los atajos de teclado o hotkeys del Asus SeaShell 1201HA.

   En esta ocasión vamos a activar los atajos de teclado del Asus SeaShell 1201HA. Para ello hay que actualizar el grub. Para ello editamos el fichero:

sudo vim /etc/default/grub

   A continuación cambiamos la línea GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"


por 

GRUB_CMDLINE_LINUX_DEFAULT="quiet acpi_osi=Linux acpi_backligh=vendor splash"


Actualizar grub.

sudo update-grub2

y por último reiniciar.

El original está sacado de aquí:

https://wiki.ubuntu.com/HardwareSupport/Machines/Netbooks#AsusEee1201HA

miércoles, 21 de julio de 2010

Acelerar la tarjeta gráfica de Asus Seashell 1201HA.

   La tarjeta gráfica de Asus SeaShell 1201HA es una Intel GMA 500. Cuando se instala Kubuntu Lucid Lynx la resolución gráfica parece ir a trompicones. Para mejorar el suavizado o renderizado de la imagen hay que dar los siguientes pasos:

Añadir el siguiente repositorio:

sudo add-apt-repository ppa:gma500/ppa 

Actualizar:

sudo apt-get update

Instalar lo siguiente:

sudo apt-get install poulsbo-driver-2d poulsbo-driver-3d poulsbo-config

Reiniciar.

Luego de reiniciar y logearme en el modo gráfico la pantalla se quedó en blanco. Por lo que inicié sesión en modo texto (Alt + Crtl + F1) simplemente actualicé el S.O.

sudo apt-get update

sudo apt-get upgrade

La información original está aquí:

http://code.google.com/p/gma500/wiki/PPARepository

viernes, 16 de julio de 2010

Compartir ficheros en Kubuntu Lucid Lynx usando Samba.

   Este tutorial muestra como compartir ficheros entre diferentes equipos Linux (en concreto Kubuntu) y entre Kubuntu y Windows. Samba es un demonio (programa que se ejecuta en segundo plano) de Linux que se encarga de la compartición de ficheros entre máquinas.


   El primer paso consiste en instalar samba, para ello abrimos un terminal o konsole e introducimos lo siguiente:

sudo aptitude install samba samba-client smbfs smbclient

   Para poder compartir archivos hay que indicar que una carpeta es de compartición. Esta carpeta compartida es aconsejable que se use únicamente para compartir ficheros entre equipos. Por ejemplo, vamos a construir la carpeta public en el directorio /home/public. Para ello en el terminal escribimos:

sudo mkdir /home/public

   Se asignan los permisos necesarios para que los demás equipos puedan acceder a los datos, modificarlos, borrarlos, ...


sudo chmod ugo+rwx /home/public

   Ahora sólo falta especificar que se trata de una carpeta compartida, para hacer esto en Kubuntu editamos el siguiente fichero:

sudo vim /etc/samba/smb.conf


   Nos desplazamos hasta el final del fichero pulsamos la tecla i y a continuación pegamos el siguiente código:

[public]
  comment =  Carpeta compartida
  path = /home/public/
  public = yes
  writeable = yes

  Nota: Para pegar el código en vim se puede usar Shift+Insert.
   Guarda y sal del vim pulsando Esc + :x
 
  Es necesario reiniciar el demonio samba para que los cambios surtan efecto, por lo que el siguiente comando reinicia el servidor samba.


sudo smbd restart


   Con lo hecho hasta el momento, ya la carpeta debe ser compartida por ordenadores Linux. Para compartir ficheros con Windows habrá que hacer lo siguiente:
Primero en la máquina Kubuntu añadimos el usuario de la máquina Windows. Para ello, en la konsole escribimos

sudo useradd -s /usr/sbin/nologin Usuario_de_Windows.
  Donde obviamente Usuario_de_Windows es el nombre de usuario del ordenador con Windows. Lo siguiente es añadir la contraseña que se utilizará para hacer transferencias a través de la red.


sudo smbpasswd -a Contraseña_De_Red
  Donde Contraseña_De_Red es la que nosotros queramos.



  En la máquina Windows, una vez hecho todo lo anterior, estando en el escritorio pulsamos Win+r, o bien Inicio -> Ejecutar. En el cuadro de texto escribimos:

\\Dirección_De_Red_Privada\public

  Donde Dirección_De_Red_Privada es la dirección privada del equipo de Kubuntu en la red. que ¿cómo sé cuál es la dirección privada del equipo de Kubuntu? Pues simple, en la terminal de Kubuntu escribe:

ifconfig

Y pondrá algo como:

eth0      Link encap:Ethernet  direcciónHW 00:1f:d0:db:b3:68 
          Direc. inet:192.168.1.33  Difus.:192.168.1.255  Másc:255.255.255.0

A la que me refiero es a la dirección inet: 192.168.1.33

Mucha suerte.
            

domingo, 16 de mayo de 2010

EPSON SX400 Kubuntu Impresora + Escáner.

Si estás utilizando Kubuntu 8.10 o mayor debes instalar:

sudo apt-get install libltdl7

luego, hay que bajar el siguiente paquete e instalarlo. Es un deb, simplemente un clic y ya se instala solo.

iscan_2.24.0-4.ltdl7_i386.deb


Hay un post que explica otras cosas que se pueden hacer si el hecho de instalar solamente el paquete anterior no funciona.

Además en un comentario del post que pongo a continuación y a su vez en varias páginas más como en algún foro de ubuntu se recomienda también añadir al fichero /lib/udev/rules.d/40-libsane.rules las siguientes líneas:

# Epson SX400 scanner
ATTRS{idVendor}==”04b8″, ATTRS{idProduct}==”084a”, ENV{libsane_matched}=”yes”

Por cierto, el fichero .deb está originalmente sacado de:

http://www.avasys.jp/lx-bin2/linux_e/spc/DL1.do

Este post está sacado de:

http://blog.bluemonki.net/2009/03/28/ubuntu-epson-sx400-all-in-one-making-it-work/

Sólo he probado la parte del escáner y funciona correctamente.

Printing
First off make sure you have cupsys installed, from a Terminal (Applications->Accessories->Terminal) type:
sudo apt-get install cupsys (input your password if asked)
And say yes if you need to.
Right now it’s time to go and grab the driver, visit http://www.avasys.jp/lx-bin2/linux_e/spc/DL1.do and fill in the form to get the driver for your printer (SX400 in my case).
You should now have a deb file that you can double click on and install. Right, now make sure the printer is connected and turned on.
Then, in a terminal, type:
sudo pipslite-install
This will have a bit of a poke around and probably appear with just a cancel button. If it does appear with a cancel button then reboot your computer and try again (which worked for me).
When you get a continue button then you need to fire up the printing configuration program (System->Administration->Printing), click Change on the right of where the driver name is written and choose the driver model called LITE. Then choose the recommended driver.
Now you should be able to print a test page :D
Scanning
Scanning is a little bit harder, but not impossible. First off lets make sure we’ve got all the scanning tools installed:
sudo apt-get install sane sane-utils
Once again say yes to everything.
When that’s done run:
sudo sane-find-scanner
This should hopefully produce some thing that looks like:
$ sane-find-scanner
# sane-find-scanner will now attempt to detect your scanner. If the
# result is different from what you expected, first make sure your
# scanner is powered up and properly connected to your computer.

# No SCSI scanners found. If you expected something different, make sure that
# you have loaded a kernel SCSI driver for your SCSI adapter.
found USB scanner (vendor=0x04b8, product=0x084a) at libusb:005:002
# Your USB scanner was (probably) detected. It may or may not be supported by
# SANE. Try scanimage -L and read the backend's manpage.
# Not checking for parallel port scanners.
# Most Scanners connected to the parallel port or other proprietary ports
# can't be detected by this program.
# You may want to run this program as root to find all devices. Once you
# found the scanner devices, be sure to adjust access permissions as
# necessary.
What you need are those two kind of number looking things:
vendor=0x04b8, product=0x084a
Now we have those we need to add them to a file, so now type:
sudo gedit /etc/sane.d/epson.conf (assuming your scanner is an epson)
Find the line that just says: usb
# USB scanner:
# There are two different methods of configuring a USB scanner: libusb and the kernel module
# For any system with libusb support (which is pretty much any recent Linux distribution) the
# following line is sufficient. This however assumes that the connected scanner (or to be more
# accurate, it's device ID) is known to the backend.
usb
# For libusb support for unknown scanners use the following command

And change it to make it read:
# USB scanner:
# There are two different methods of configuring a USB scanner: libusb and the kernel module
# For any system with libusb support (which is pretty much any recent Linux distribution) the
# following line is sufficient. This however assumes that the connected scanner (or to be more
# accurate, it's device ID) is known to the backend.
usb 0x04b8 0x084a
# For libusb support for unknown scanners use the following command

Obviously use your numbers not mine (unless you have a SX400 too), save that and close it.
Right lets see if it works at all, type
sudo xsane
Click OK to the warning. In the large window towards the right of the screen (titled Preview ….) click the Aquire button. If you get an image back then we’re all set to go. If you don’t then I can’t help you as it worked perfectly for me.
Now we need to make the scanner available for everyone to use so once again from the terminal type:
sudo gedit /etc/udev/rules.d/90-modprobe.rules
and add the line:
SUBSYSTEM=="usb" ATTRS{manufacturer}=="EPSON", GROUP="scanner", OWNER="root", MODE="0660"
Save that, now we need to create a script to load our map so type:
sudo gedit /etc/hotplug/usb/epson_scanner.sh
And add the lines
#!/bin/bash
if [ "${ACTION}" = "add" ] && [ -f "${DEVICE}" ]
then
chown root "${DEVICE}"
chgrp scanner "${DEVICE}"
chmod 660 "${DEVICE}"
fi
And save it.
Right that’s it. Reboot and you should be able to use your scanner via xsane (Applications->Graphics->XSane Image Scanner)
Reference
Printing: http://ubuntuforums.org/showthread.php?t=903905
Scanning: http://www.freecolormanagement.com/sane/libusb.html
Enjoy!

miércoles, 17 de marzo de 2010

martes, 16 de febrero de 2010

Crear tablas en MySQL y cargar datos desde un fichero.

  • Crear una tabla:
CREATE TABLE LIBROS ( ISBN INT(4) PRIMARY KEY,
                      T VARCHAR(80),
                      NP VARCHAR(80),
                      CAT VARCHAR(80),
                      ED(80));
  • Crear una tabla con claves ajenas:
CREATE TABLE AUTORES( ISBN INT(4),
                      DNI INT(4),
                      FOREIGN KEY(ISBN) REFERENCES LIBROS(ISBN) 
                      ON DELETE CASCADE
                      ON UPDATE CASCADE);
  • Cargar datos en una tabla desde un fichero donde cada colummna va separada por tabuladores o espacios.
LOAD DATA LOCAL INFILE "libros.txt" INTO TABLE LIBROS;

domingo, 14 de febrero de 2010

Instalar fuentes libres de Office 2007 en Kubuntu.

Las fuentes de libres de Office que vamos a instalar son las siguientes:

Calibri, Cambria, Candara, Consolas, Constantia, y Corbel.

$sudo apt-get install cabextract curl
 Guarda el siguiente script en un archivo llamado vista-fonts-installer.sh
$ chmod a+x ~/vista-fonts-installer.sh
 
$ ~/vista-fonts-installer.sh 
 Otras fuentes interesantes como Airal, Times New Roman....
$ apt-get install msttcorefonts

jueves, 7 de enero de 2010

Epson SX405 Kubuntu

Bueno, la impresora funciona sin ningún problema en el Karmic Koala.

El escaner hay que proceder del siguiente modo:

sudo aptitude install sane sane-utilsii

Descargar iscan desde aquí.

sudo perl -p -i.bak -e 's/scsi EPSON\n/#scsi EPSON\n/g' /etc/sane.d/epkowa.conf
sudo perl -p -i.bak -e 's/#usb\n/usb\n/g' /etc/sane.d/epkowa.conf             
sudo perl -p -i.bak -e 's/epson\n/epkowa\n#epson\n/g' /etc/sane.d/dll.conf  

sudo apt-get install libltdl7


sudo dpkg --ignore-depends=libltdl3 -i iscan_2.12.0-4_i386.deb