viernes, 30 de diciembre de 2011

Office XP u Office 2003 no abre archivos docx

Si tiene instalado Office XP u Office 2003 no podras abrir documentos .docx.

Para solucionarlo, es necesario instalar el "Módulo de compatibilidad de Microsoft Office para formatos de archivos de Word, Excel y PowerPoint".

Descárgatelo directamente de Microsoft en http://www.microsoft.com/downloads/es-es/details.aspx?displaylang=es&FamilyID=941b3470-3ae9-4aee-8f43-c6bb74cd1466

Antes de instalar lee la sección "Información General" porque Microsoft adviente de que antes de instalar este módulo, debén estar instaladas todas las actualizaciones de alta prioridad. Este es el mensaje de Microsoft, "Los usuarios de los programas de Microsoft Office XP y 2003 Word, Excel o PowerPoint deberían instalar todas las actualizaciones de alta prioridad desde Microsoft Updateantes de descargar el paquete de compatibilidad."

viernes, 9 de diciembre de 2011

Eclipse, CDT y Cygwin. Programar en C++ con Elipse

En esta entrada voy a explicar como instalar y configurar eclipse en Windows para poder desarrollar proyectos de C++. En Linux es mucho mas sencillo porque el compilador de C/C++ ya está (casi siempre) instalado en cualquier distribución Linux y con solo instalar Eclipse ya se puede desarrollar en C/C++.
Para ello, eclipse necesita del plugin CDT (C/C++ Development tools) y de un compilador de C/C++ para windows; se pude utiliar Cygwin (www.cygwin.com) o MinGW (http://www.mingw.org/).
MinGW es "Minimalist GNU for Windows", según la página web de MinGW, pero para nosotros es suficiente para compilar con Eclipse y es mas sencillo de instalar que Cygwin porque en Cygwin tu tienes que elegir que paquetes instalar y si te falta alguno no podrás compilar.
El inconveniente de MinGW es que no does not, and never will, attempt to provide a POSIX runtime environment.
La instalacion de MinGW es muy sencilla; descargar e instalar. 
Ahora vamos a ver como instalar Cygwin.
Instalación de Cygwin
Nos descargamos el instalador de cygwin (http://cygwin.com/setup.exe) y lo ejecutamos.
Seleccionamos:
  • Install from Internet
  • Root Directory: el directorio donde se instalará Cygwin. Por ejemplo: c:\cygwin
  • Local Package Directory: directorio donde se descargarán los paquetes que seleccionaremos en la instalación de Cygwin.
  • Internet Connection: Direct Connection si no tenemos proxy. 
  • Select Packages: aquí seleccionaremos los paquetes mínimos que necesitamos para compilar un proyecto en C/C++. Estos son: binutils, gcc (gcc, gcc-core, gcc-g++, gcc-mingw-core, gcc-mingw-g++ ), g++, gdb (para depurar) y make.
    Si tenemos dudas a la hora de instalar un paquete y no queremos instalar todos los paquetes, podemos ir filtrando por el nombre del paquete e instalando todas sus referencias encontradas.
    Por ejemplo: en search insertamos gcc. Nos mostrará todos los paquetes que contienen gcc. Pulsamos sobre Default hasta que aparezca Install en todos los subniveles de la categoría All. Repetimos esto con todos los paquetes que queremos instalar (gcc, g++, gdb, etc..) Aunque no hagan falta todos, de esta forma nos aseguramos que se instalan todos los paquetes necesarios sin instalar todos los paquetes de Cygwin.

    Como ultimo recurso, instalamos todos los paquetes pulsando a la derecha de All (encima de Default) hasta que aparezca Install. Esto instala todos los paquetes de Cygwin. Esta opción tarda mucho tiempo en descargar e instalar todos los paquetes.
  • Una vez instalado Cygwin, añadimos a la variable de entorno PATH el directorio bin de Cygwin.
    Si en Root Directory pusimos c:\cygwin, entonces a la variable de entorno PATH debemos añadir ;c:\cygwin\bin
    En Windows XP se hace desde: Botón derecho sobre Mi PC -> Propiedades -> Pestaña "Opciones Avanzadas" -> Botón "Variables de Entorno" -> En "Variables de Sistema" buscamos Path y pulsamos sobre "Modificar" -> Añadimos al final de "Valor de Variable" el texto ";c:\cygwin\bin" (sin las comillas pero si con el ; (punto y coma))
Una vez que tenemos instalado Cygwin, instalamos Eclipse y el plugin CDT.
Instalacion de Eclipse y CDT
Aqui tenemos varias posibilidades:
  1. Ya tenemos Eclipse instalado y solo tenemos que instalar el plugin CDT
  2. No tenemos Eclipse instalado. Tenemos que instalarlo pero no solo quiero desarrollar proyectos en C/C++. También quiero desarrollar en otros lenguajes.
  3. No tenemos Eclipse instalado y solo vamos a desarrollar código en C/C++
Vamos a ver cada una de estas posibilidades.
  1. Si ya tenemos instalado Eclipse solo tenemos que instalar el plugin CDT. Esta es la pagina de descargas de CDT (http://eclipse.org/cdt/downloads.php).
    Seleccionamos la versión de Eclipse que tengamos. Aconsejo hacerlo a través del software repository; desde Eclipse, Help -> Install New Software.
  2. Si no tenemos instalado Eclipse y queremos desarrollar en varios lenguajes, recomiendo descargar la versión básica de Eclipse e instalar los plugins necesarios para dar soporte a cada uno de los lenguajes que queramos utilizar. En nuestro caso, descargamos la última versión de Eclipse desde http://download.eclipse.org/eclipse/downloads/ (A día de hoy, la última versión es la 4.1.1).
    La instalación solo consiste en descomprimir el fichero .zip descargado y ejecutar el binario eclipse.exe.
    Una vez instalado Eclipse,  instalamos el plugin CDT como se ha indicado en el paso 1.
  3. Si no tenemos instalado Eclipse y solo vamos a desarrollar en C/C++, podemos descargar la versión de Eclipse para C/C++ directamente que ya tiene todo preparado para C/C++. De http://www.eclipse.org/downloads/ descargamos la versión Eclipse IDE for C/C++ Developers.

Creación del primer proyecto C/C++

Hasta aquí, ya tenemos instalado y configurado todo lo necesario para desarrollar en C/C++.
Al crear un nuevo proyecto en Eclipse, podemos ver en Toolchains que aparece Cygwin GCC



Una vez creado el proyecto, podemos ver la estructura de árbol del proyecto. La siguiente imagen se puede ver una vez que hayamos compilado al menos una vez el proyecto.



En las propiedades del proyecto, si hemos creado un "Hello World C++ Project", vemos que Eclipse ya ha hecho los includes necesarios.

Es posible que Eclipse no reconozca a Cygwin como ToolChain. Entonces, al crear el proyecto no veremos Cygwin en los ToolChains.
La solución es asegurarnos que el directorio bin de Cygwin esta en la variable de entorno PATH de Windows y añadir los includes necesarios al proyecto en "Path And Symbols".
Problemas de depuracion:
Si al depurar un programa nos dá el siguiente error: "Can't find a source file at "/cygdrive/c/..." ahi que crear un nuevo "Path Mapping" en Preferences -> C/C++ -> Debug -> Source Lookup Path, pulsamos sobre el botón "Add ...", seleccionamos "Path Mapping", le ponemos cualquier nombre, pulsamos sobre el botón "Add" y en "Compilation Path"  escribimos "/cygdrive/c/" y en "Local File System Path" seleccionamos la unidad c:.

A continuación, un par de enlaces que también nos pueden ayudar:
http://homepage.cs.uri.edu/courses/fall2007/csc406/Handouts/eclipseTutorial.pdf
http://www3.ntu.edu.sg/home/ehchua/programming/howto/EclipseCpp_HowTo.html

viernes, 25 de noviembre de 2011

Montar usb sin que el propietario de los ficheros sea root

Si no tienes el password de root pero puedes montar un usb con mount (porque tienes permisos de sudo) y al montar un usb el propietario de los ficheros es el root, se pueden montar los ficheros poniendo como propietarios de los ficheros a tu usuario con:
sudo mount /dev/sdbX /directorio -o uid=tu_usuario
/dev/sdbX es donde linux te haya detectado el usb. Lo puedes saber haciendo dmesg. Te saldrá mucha información del usb contectado y en alguna linea aparecerá algo asi: 
     sdb: sdb1
directorio: un directorio donde quieras montar los ficheros del usb. Pon un directorio en el que tu seas el propietario.
tu_usuario: pues tu usuario, con el que te has logueado.

miércoles, 12 de octubre de 2011

Cargar una magen iso en un usb con unetbootin

UnetBootin es una aplicacion que permite cargar en un usb un montón de distribuciones de sistemas operativos en un usb.

Tiene dos opciones, seleccionar la distribución a meter en el usb y el programa se encarga de descargarla e introducirla en el usb automáticamente o seleccinar una distribucion contenida en una imagen .iso y introducirla en el usb.
Antes de comenzar es necesario formatear el usb con formato fat32.
Opción 1:

Seleccionamos la distribución, en Tipo seleccinamos "Unidad USB" y en unidad seleccionamos la unidad que se le ha asignado el usb insertado. Pulsamos Aceptar y comenzará la descarga y copia de los datos en el usb.


Opcion 2:





















Pulsamos sobre la opción "Disco Imagen" y pulsamos sobre el botón con los tres puntos para seleccionar la imagen .iso con la distribución de nuestro disco duro. En Tipo seleccinamos "Unidad USB" y en unidad seleccionamos la unidad que se le ha asignado el usb insertado. Pulsamos Aceptar y copia de los datos en el usb.

Asi de sencillo.

Montar imagen .iso en Windows XP sin software adicional

Microsoft proporciona un programita sencillo para esta función.
Aunque solo sirve para ver el contenido del iso. NO se puede modificar.
Se puede descargar de aqui:
http://download.microsoft.com/download/7/b/6/7b6abd84-7841-4978-96f5-bd58df02efa2/winxpvirtualcdcontrolpanel_21.exe
Este fichero es un ejecutable que descomprime los tres ficheros que contiene.
Uno de los ficheros es el fichero readme.txt en el que explica en unos sencillos pasos lo que hay que hacer.
Tambien hay sofwtare gratuito para hacer lo mismo.
Magic Disk , Virtual CloneDrive y DAEMON Tools

Para manegar imagenes iso y poder modificarlas podemos copiar el contenido de la imagen iso con el programa anterior, añadirle o modificar cualquier contenido de la imagen donde lo hemos copiado y crear una nueva imagen con nuestro grabador de CD/DVD habitual pero indicando que se cree una imagen iso en lugar de grabarlo al CD o DVD.

Configurar la BIOS para arrancar un usb con la distribucion Live de un sistema operativo

Este problema me ocurrió después de preparar un pendrive con una distribucion de un sistema operativo Live.
(Suponemos que el usb está bien creado)
Con el ordenador apagado, pinchaba mi usb en el ordenador y arrancaba.
El menú de arranque, mi placa me daba la opcion de pulsar sobre F12 para ver el Boot Menu y me aparecia un menu para elegir con que dispositivo quería arrancar. Las opciones de USB eran USB-FDD, USB-ZIP, USB-CDROM y USB-HDD.
A pesar de elegir todas las opciones, el ordenador no arrancaba con la distribucion live del usb.
Despues de mirar detenidamente en la BIOS de mi ordenador encontré la solución.
Voy a explicar los pasos que dí en la BIOS de mi ordenador, pero en otras BIOS será muy parecido.
Arranqué el ordenador con el usb insertado y entré en la BIOS ("push 'del' to enter BIOS" en mi ordenador, también es posible que sea F2).
Entré en el menú "Advanced BIOS Features" y dentro de este había una entrada llamada "Hard disk Boot Priority".
Dentro de este menú aparecían tres entradas, una de ellas era mi usb (USB-HDD0 : USB Disk 2.0), otra mi disco duro (Ch 0 M. : ST32.....) y otra "Booteable Add-in Cards".
Puse la del usb la primera y salí de la BIOS salvando los cambios.
Al arrancar de nuevo con el usb insertado (y sin pulsar sobre F12: Boot Menu) arrancó la distribucion Live del usb.

Aquí hay un enlace donde lo explica también aunque en inglés. http://www.hirensbootcd.org/change-the-boot-order-in-bios/

Problemas con escaner en brother DCP-540CN

Después de cambiar la ip de la multifunción Brother DCP-540CN, comprobé que el escaner no funcionaba. La impresora tampoco funcionaba pero era evidente porque todavía no había cambiado la nueva configuración de red.
Para hacer que funcionara la impresora, en Impresoras y faxes, pulsando con el botón derecho y accediendo al Propiedades, pestaña puertos, agregué un nuevo puerto de tipo Standard TCP/IP con la nueva ip de la impresora y todo a funcionar sin problemas.
Pero el escaner sigue sin funcionar.
Después de buscar un poco por Internet, vi que también hay que decirle al escaner la nueva ip de la multifuncion.
Eso se hace desde el Panel de Control en el icono "Escaneres y cámaras". Debe aparecer un icono de la multifuncion (Brother DCP-540CN). Accedemos a las propiedades y en la pestaña "Ajustes de red" introducimos la ip de la multifunción.
Para comprobar que ahora si funciona bien el escaner, en la pestaña General podemos probarlo con el botón "Probar el escaner". Saldrá una ventana con el mensaje "Su dispositivo de imágenes pasó la prueba de diagnóstico".

Crear una imagen .iso bootable en Windows con cdimage

Primero necesitamos el cdimage, lo podemos descargar de aqui y lo descomprimimos.
Y a continuacion:

  1. Primero copiamos el contenido del cd/dvd a un directorio del disco duro (c:datos)
  2. Ejecutamos el cdimage.
  3. En la pestaña Directories de StartUp seleccionamos el directorio de los datos y el fichero imagen destino
  4. En la pestaña Files de Configuration seleccionamos la opcion -h para incluir ficheros y directorios ocultos
  5. En la pestaña FileSystem de Configurarion, seleccionamos la opcion -u2 si queremos que soporte los nombres largos en los ficheros y directorios. Esta opcion convierte el cd en formato UDF.
  6. En la pestaña Boot de Configuration seleccionamos el fichero del sector de arranque. Debemos seleccionar el fichero boot.img que hay dentro del directorio en el que hemos descomprimido el cdimage.
  7. En la pestaña Creation de Configuration selecionamos la opcion -m para el tamaño maximo de una imagen a 700MB y la opcion -l si queremos ponerle label al cd/dvd
  8. En creation tenemos el comando que se va a ejecutar. Con las opciones anteriores, el comando seria:
    "C:directorio temporalcdimage.exe" -l"LABEL" -h -u2 -b"D:softwarecdimageCDIMAGEboot.img" -m "C:datos" "c:image.iso"
  9. Ya podemos crear la imagen pulsando sobre el boton "Start Image Creation"

De aqui he sacado la información y podeis ver algunas imagenes

Aqui se indica  como hacerlo con Nero

Añadir ficheros a un cd/dvd o una imagen .iso bootable en Linux

Primero hay que copiar los datos del cd/dvd o la imagen .iso a un directorio.
-Si tenemos una imagen:
      mount -t iso9660 imagen.iso /mnt/datos -o loop
Si tenemos un cd/dvd:
      mount -t iso9660 /dev/cdrom /mnt/datos

Copiar todos los datos a un directorio temporal:
      rsync -av /mnt/datos ~/dir_temp
      Tambien se puede hacer con el comando cp (pero asegurarse de copiar tambien los ficheros ocultos)

Crear la imagen iso bootable:
      mkisofs -r -b boot/isolinux/boot.img -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ~/nueva_imagen.iso ~/dir_temp

Los ficheros boot.img y boot.cat los puedes encontrar en cualquier live cd de cualquier distribucion de linux.Por ejemplo: isolinux/isolinux.bin e isolinux/boot.cat( Segun la distribucion puede cambiar el nombre)

Un poco mas de información de como crear cd o dvd con cdrecord y mkisof

Reinstalar grub despues de reinstalar Windows

Este tutorial es para todos aquellos que tenian Dual-Boot (Windows y Ubuntu) en sus computadoras, y que por alguna razón tuvieron que reinstalar Windows, y obviamente, perdieron el Dual-Boot y ya no tiene Grub Instalado que les da a escoger que sistema operativo desean iniciar. Para arreglar esto seguiremos los siguientes pasos:

1. Lo primero que tenemos que hacer es iniciar Ubuntu desde un Live CD.
2. Luego tenemos que ejecutar una seria de comandos que definirán el lugar donde instalaremos grub. Por tanto, hacemos lo siguiente:

:~$ sudo grub
> find /boot/grub/stage1

El resultado del comando anterior nos mostrará un resultado parecido a (hdX,Y), donde X es el número que identifica el disco duro, y Y es el número que identifica la partición. Este resultado lo utilizaremos en el paso siguiente.

3. Ahora que tenemos el disco y la partició donde instalaremos Grub, hacemos lo siguiente:

> root (hdX,Y)
> setup (hdX)
> quit

4. Por último, reiniciamos el computador y listo. Ya debemos tener Grub instalado nuevamente mostranto tanto a Ubuntu como Windows.

Fuente: http://www.tutoriales-ubuntu.com/archives/como-reinstalar-grub-despues-de-una-instalacion-de-windows#more-200

Manuales de Windows XP y Windows 7

Aqui os muestro algunos enlaces (box.net) a unos manuales de Windows XP y Windows 7 que he ido encontrando por Internet a lo largo del tiempo.

Manual Windows 7 - Guia de bolsillo
http://www.box.net/shared/0t6x3m4bmr

Apuntes basicos de Windows XP
http://www.box.net/shared/eyx14m4i7n

Manual Windows XP de la Universidad de Navarra
http://www.box.net/shared/77kc3enfla

NOTA: No guardé las fuentes en donde encontré estos manuales, si alguien se siente 'perjudicado' que me lo diga e indico la fuente o elimino el enlace.

Configuracion de servidor NTP en entorno cerrado en Linux

Esto sirve para configurar todas las maquinas de un entorno de red cerrado (no conectado a Internet) en el que todas las maquinas van a tener la misma hora.
Una de las maquinas hace de servidor y el resto de clientes mediante ntp.
En el servidor, el fichero /etc/ntp.conf debe contener:
     driftfile /var/lib/ntp/drift
     server 127.127.0.1 minpoll 4 maxpoll 4
     fudge 127.127.0.1 stratum 1
En los clientes, el fichero /etc/ntp.conf debe contener:
     driftfile /var/lib/ntp/drift
     server maquina_server_ntp minpoll 4 maxpoll 5 burst iburst
     restrict aquina_server_ntp mask 255.255.255.0 nomodify notrap noquery
En todas las maquinas, el servicio ntpd debe estar arrancado.

Para comprobar que una maquina está sincronizada, ejecutar /usr/sbin/ntpq -p
La salida debe ser esta:
remote refid st t when poll reach delay offset jitter
==============================================================
*maquina_server_ntp LOCAL(0) 2 u 1 16 377 0.080 -0.437 0.081
El * indica que está sincronizado, si no sale dicho * hay que esperar a que el demonio ntpq sincronice con el servidor.
Si no esta lanzado el demonio ntpq, se puede sincronizar manualmente con /usr/sbin/ntpdate maquina_server_ntp

Escribir a fichero con stl

#include <iostream>
#include <fstream>

ofstream iorFile("fichero.txt");
iorFile << "hola mundo!" << std::endl;
iorFile.close();

A completar...

Creacion de un pcb

Insolado:
Para el proceso de insolado, yo me construí mi propia insoladora con leds ultravioleta. Para ello utilice la infomación de estas webs:
Recomiendo esta por el paso final del difusor de fotografía:
http://booleria.wordpress.com/2008/02/16/insoladora-casera-con-leds-uv/
Aunque también me informé en estas:
http://www.muchotrasto.com/Insoladora%20casera%20mediante%20Leds%20Ultra%20Violeta.php
http://radikaldesig.blogspot.com/2006/10/insoladora-uv-leds.html
Y si quereis añadir un temporizador, esta:
http://www.micropic.es/index.php?option=com_content&view=article&id=54%3Ainsoladora-de-doble-cara&catid=3%3Aproyectos&Itemid=62&lang=es

Al hacer la insoladora, recomiendo que probeis la uniformidad de la luz poniendo un folio en blanco.
Deberemos ver la luz uniforme por todo el folio, si no es asi, tendremos problemas al insolar porque una parte de la placa recibirá mas o menos luz. Solución: papel vegetal como se hace en la web que recomiendo.

Una vez que tenemos nuestra insoladora, tenemos que comprobar el tiempo de isolado necesario.
Para ello, metemos varios trocitos de una placa fotosensible de una cara y vamos sacando trocitos cada minuto en un intervalo de 3 o 4 minutos hasta 10 mas o menos. Con mi insoladora me valen 5 minutos.

Revelado:
Una vez que tenemos insolada la placa, pasamos al atacado de la placa. Aunque hay productos que podemos comprar en tiendas yo uso el metodo casero, es decir, compré sosa cáustica en una tienda (desatascador de tuberías) y me hice mi propia mezcla. Mirando en muchas web vi que la mezcla recomendada (y a mi me va perfectamete) es de una cucharada (unos 30 gramos) por litro de agua. MUY IMPORTANTE: Usar guantes y no tocar la sosa con las manos y añadir la sosa al agua, no al revés.. Notaremos que se calienta la mezcla, es normal. Mas vale que echemos de menos que de mas, porque sino el proceso es muy rápido y puede que nos quedemos sin pistas.Movemos hasta que se disuelva toda la sosa.

Una vez que tenemos la mezcla, echamos un poco de sosa en un recipiente de plástico (suficiente para que se cubra la placa) y metemos nuestra placa insolada a la sosa. Vamos removiendo el recipiente (en modo 'vaiven') y veremos que se va eliminando la capa fotosensible y van apareciendo las pistas. La sacamos cuando veamos claramente las pistas y al mover el recipiente vemos que ya no se desprende mas material fotosensible. Sacamos la placa (con pinzas de plastico o con las manos con guantes) y aclaramos muy bien con agua, pasando el dedo con suavidad para eliminar el ultimo material fotosensible que queda.

Atacado:
Por último, pasamos al atacado del cobre.
Para ello utilizamos una mezcla que podemos comprar o volver a hacerla casera. El liquido atacador se hace con:
-agua
-salfuman (la podemos comprar en cualquier droguería por menos de un euro)
-agua oxigenada de 110 volumenes (la podemos comprar en cualquier farmacia por unos 3 o 4 euros)
La mezcla se hace añadiendo una parte de cada. Si queremos que el atacado sea mas lento, echamos dos partes de agua y una de salfuman y otra de agua oxigenada 110 vol.
De nuevo, usando los guantes y las pinzas de plástico (cuidado con los gases que se desprenden y con anillos o cosas metalicas) echamos la placa a la disolución.
Veremos que va haciendo reacción y se va comiendo el cobre...aparecerán burbujitas y se desprenderán gases...MUCHO CUIDADO
Sacamos la placa cuando veamos que se ha comido todo el cobre sobrante y se ven claramente las pistas de cobre. Si nos pasamos, se irá comiendo las pistas y si nos pasamos del todo, se comerá todo el cobre y ya no habrá solución. ;)
Para finalizar, aclaramos de nuevo con agua y limpiamos las pista con alcohol.

cout de un vector o array de un tipo en una instruccion con iterador

Es una chorrada....pero ahorra un poquito de tiempo.

Si queremos imprimir rapido un vector a la salida estandard.

  std::vector<int> V;
  V.push_back(2);
  V.push_back(4);
  V.push_back(6);
  copy(V.begin(), V.end(), ostream_iterator<int>(cout, " "));

Si lo que quieres es imprimir un array de cualquier tipo:
    float * aa = new float [10];

    for(int i=0; i<10;i++) aa[i]=i+0.456;

    copy(pAABegin,pAAEnd,ostream_iterator<float>(cout," - "));


   //Y esto es un ejemplo de copiar un array a otro con iteradores y la funcion copy de la stl






    short * bb = new short [10];

    float * pAABegin=&aa[0];
    float * pAAEnd=&aa[9];
    copy(pAABegin,pAAEnd,&bb[0]);
    std::cout << std::endl;
    copy(&bb[0],&bb[9],ostream_iterator<short>(cout , " - "));

Algunos comandos para shell scripts: tr, uniq y sort

1. Si queremos quitar espacios en blanco a una variable:
Por ejemplo: a=" hola"
1.1- Con echo:
1.1.1 b=`echo $a`
1.1.2 echo $b da como resulstado "hola"
1.2- Con tr:
1.2.1 b=echo $a | tr -d ' ' da el resultado esperado
1.3- Con sed:
1.3.1 b=echo $a | sed 's/^ *//g' da el resultado esperado
2.1.Reemplazar varias apariciones de espacios en blanco y tabulaciones por un solo espacion en blanco
  sed 's/[ \t] */ /g' | sed 's/[ \t] */ /g'
  Nota: solo con el primer sed eliminar las apariciones sucesivas en un espacio por cada sucesion; el segundo sed reemplaza todos los espacios por uno solo
  ejemplo:  echo -e "hola     \t \t \t \t \t\t\t\t caracola" | sed 's/[ \t] */ /g' | sed 's/[ \t] */ /g'
2.2 Eliminar varias apariciones de espacios en blanco y tabulaciones al principio de linea
   sed 's/^[ \t]*//g'
  ejemplo: echo -e "\t \t  \t  hola caracola" | sed 's/^[ \t]*//g'
2.3 Si queremos usar el comando sed dentro de un shell script con variables debemos quitar las comillas
  referencia: http://www.unix.com/shell-programming-scripting/14085-how-can-i-use-variable-sed.html
  ejemplo:       cat fichero.txt | sed -e s/mytext${var1}0.txt/hola${var2}.txt/g  > salida_${fichero}.txt
3. Si queremos ordenar la salida a pantalla usamos sort
4. Si queremos que no se repitan las lineas repetidas usamos uniq.

leer un string con stl en c++

std::string stt;
std::cin.clear();
std::cin.ignore(std::numeric_limits<std ::streamsize>::max(),'\n');

std::getline(std::cin,stt,'\n');
std::cout << stt;

"Su navegador no ha generado una firma valida" en Firefox

Si al usar tu certificado digital para firmar un documento, el Firefox te devuelve el mensaje "su navegador no ha generado una firma valida", es posible que con los siguientes pasos se solucione. Al menos, a mi, me funcionó.

En primer lugar, acceda a Herramientas, Opciones, Avanzado y seleccione la pestaña Cifrado. Compruebe que la opción Preguntarme cada vez esté marcada para que la selección del certificado al acceder a las opciones de la página que lo requieran sea correcta.

Pinche sobre el botón Ver certificados. Compruebe que su certificado esté correctamente instalado y compruebe que en la pestaña Autoridades figura instalado el certificado raíz de la entidad emisora de su certificado. Por ejemplo, si se trata de la FNMT, localícela en la lista y márquela de tal modo que se habilite el botón Editar. Las tres opciones con casilla que aparecen deben estar marcadas para que el funcionamiento sea correcto.

Si la entidad emisora no fuera la FNMT, deberá contactar con su soporte técnico para que le indiquen si puede trabajar con su certificado en el navegador Firefox. Para la FNMT, la descarga del certificado raíz está disponible en su página web. Acceda a www.fnmt.es y pinche en el enlace Obtenga su certificado de usuario situado en la columna de la izquierda. En la página que se muestra, entre las opciones en verde de la columna de la izquierda, seleccione Descarga de contratos. Haga clic en el enlace Descarga del Certificado raíz FNMT Certificado de Usuario y guarde el archivo descargado (por ejemplo en el Escritorio) para importarlo después desde la pestaña de Autoridades en Firefox (recuerde marcar las tres casillas).

Para terminar, escriba about:config (sin http o www. delante) en la barra de direcciones donde escribe habitualmente las direcciones de las páginas web. Pulse "Intro" en el teclado y aparecerá un listado en la parte inferior. Sobre éste, aparecerá una línea en blanco con el nombre Filtro. En este campo escriba la palabra signed y pulse "Intro" de nuevo. La lista habrá quedado reducida a una sola preferencia (signed.applets.codebase_principal_support). A la derecha, debajo de la columna Valor aparecerá "false" o "true". Asegúrese de que el valor está en "true" y si aparece "false" haga doble clic encima para que el valor cambie a "true", que es el correcto.

Resetear password de root en mysql

<p>Si se tiene acceso a mysql como root, nos conectamos a la base de datos mysql como usuario root:<br>
    <a href="mailto:user@host:~#">user@host:~#</a> mysql --user=root --pass mysql<br>
    Enter password:<br>
Cambiamos el campo password de la tabla user:<br>
    mysql&gt; update user set Password=PASSWORD('new-password-here') WHERE User='root';<br>
    Query OK, 2 rows affected (0.04 sec)<br>
    Rows matched: 2  Changed: 2  Warnings: 0</p>
    <p>    mysql&gt; flush privileges;<br>
    Query OK, 0 rows affected (0.02 sec)</p>
    <p>Si no se tiene acceso a mysql como root porque se ha olvidado o perdido el password de root, paramos el servicio mysql:<br>
    <a href="mailto:user@host:~#">user@host:~#</a> /etc/init.d/mysql stop<br>
Arrancamos el servidor mysql en modo seguro:<br>
    <a href="mailto:user@host:~#">user@host:~#</a> /usr/bin/mysqld_safe --skip-grant-tables &amp;<br>
    [1] 6702<br>
    Starting mysqld daemon with databases from /var/lib/mysql<br>
    mysqld_safe[6763]: started<br>
Accedemos como root (esta vez no nos pedirá password):<br>
    <a href="mailto:user@host:~#">user@host:~#</a> mysql --user=root mysql<br>
    Enter password: (no hace falta meterlo)<br>
    mysql&gt;<br>
Paramos el servidor mysql, podemos hacerlo con el kill sabiendo el numero del proceso o con el comando fg y (ctrl + c):<br>
    <a href="mailto:user@host:~#">user@host:~#</a> fg<br>
    <a href="mailto:user@host:~#">user@host:~#</a> Ctrl + c<br>
Reiniciamos el servidor mysql normalmente:<br>
    <a href="mailto:user@host:~#">user@host:~#</a> /etc/init.d/mysql start<br>
Accedemos a mysql con el nuevo password de root:<br>
    <a href="mailto:user@host:~#">user@host:~#</a> mysql --user=root --pass=new-password-here</p>
    <p>Notas:<br>
-Se ha probado en una ubuntu.<br>
-Si tienes que ser usuario root en ubuntu, escribe en el prompt: sudo su<br>
-Si no eres root tendrás que escribir delante de cada comando 'sudo'</p>
    <p>fuente: <a href="http://www.debian-administration.org/articles/442">http://www.debian-administration.org/articles/442</a></p>

Crear cd o dvd con cdrecord y mkisofs

Hacer una ISO desde un directorio

  • $ mkisofs -RJ -V etiqueta -o cdimage.iso dir/

Hacer una ISO desde un disco

  • $ cat /dev/cdrom > cdimage.iso

ó

  • $ dd if=/dev/cdrom of=cdimage.iso
Hacer una imagen ISO de ficheros mayores de 2GB con sistema de ficheros UDF
mkisofs -r -R -J -l -allow-limited-size -udf -o largefile.iso largefile.ext
también se pude hacer con
genisoimage -allow-limited-size -udf -o largefile.iso largefile.ext


Montar la ISO (para probarla)

  • $ mount cdimage.iso -r -t iso9660 -o loop /mnt

Detectando la grabadora
Si usas emulación SCSI prueba con:

  • $ cdrecord -scanbus

Si usas ide-cd (lo normal si usas Linux-2.6.x) prueba:

  • $ cdrecord -scanbus dev=ATAPI:

Si ése es tu caso, tendrás que poner ?dev=ATAPI: ?? en los ejemplos siguientes.
También se puede detectar la grabadora con

  • $ dvd+rw-mediainfo /dev/cdrom

Para mas informacion sobre el dispositivo:

  • $ cdrecord -prcap -inq dev=0,0,0

Grabar la imagen con cdrecord

  • $ cdrecord -v dev=0,0,0 -driveropts=burnfree -dao ./cdimage.iso

Grabar un directorio a CD al vuelo
En lo siguiente es recomendable poner un buffer de 4MB como poco (el parámetro ?fs?).

  • $ mkisofs -RJ /DIRECTORIO/A/GRABAR | cdrecord -v fs=4m speed=8 dev=0,0,0 ?

Grabar un directorio a DVD al vuelo

  • $ growisofs -Z /dev/dvd -RJ /DIRECTORIO/A/GRABAR

Esto será un DVD multisesión, para añadir otra sesión al mismo DVD:

  • $ growisofs -M /dev/dvd -RJ /DIRECTORIO/A/GRABAR

Para simular una grabacion usamos la opcion -dry-run con growisofs

Grabar una imagen a un DVD

  • $ growisofs -dvd-compat -Z /dev/dvd=imagen.iso
tambien podemos probar antes con una simulacion
nice -10 growisofs -dry-run -dvd-compat -speed=2.0 -Z /dev/hdc -R -J ./dvdfilms134/
-dry-run: simulacion. No graba realmente.
-dvd-compat: cerrar la sesión
-speed: velocidad de grabación

Para cerrar el disco:

  • $ growisofs -M /dev/dvd=/dev/zero

Borrar un DVD regrabable

  • $ dvd+rw-format /dev/dvd

Grabar una imagen a una memoria usb

  1. $ fdisk -l #esto le muestra todas las unidades y particiones disponibles en su ordenador incluidos los discos duros
  2. $ dd if=mandriva-linux.iso of=/dev/sdX bs=8M
  3. $ sync

Fuente: http://crysol.org/es/node/26
Otro sitio: http://www.escomposlinux.org/fserrano/index_203.html

Backup de svn

Supongamos que el repositorio del svn esta en /var/lib/svn/repos
Para crear un backup del svn hay dos metodos:
1- svnadmin dump: crea un fichero unico con todo el repositorio.
sintaxis: svnadmin dump REPOS_PATH [-r LOWER[:UPPER]] [--incremental] [--deltas] [> fichero_salida]
#sudo svnadmin dump /var/lib/svn/repos > fichero_dump.backup

Para restaurar este backup con dump:
#sudo svnadmin load /var/lib/svn/repos < fichero_dump.backup

2- svnadmin hotcopy crea un directorio que es una replica del repositorio
sintaxis: svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH
#sudo svnadmin hotcopy /var/lib/svn/repos /home/user/svn_bk/directorio

Para restaurar este backup:
#sudo svnadmin hotcopy /home/user/svn_bk/directorio /var/lib/svn/repos

Nota:
Para accede como root en ubuntu: sudo su

Comandos postgresql en linux

Comandos sobre la linea de comandos
Borrar base de datos:
$ dropdb dbname

Crear base de datos
$ createdb dbname

Ejecutar script sobre base de datos
$ psql -f dump.sql dbname

Exportar base de datos:
$pg_dump dbname [-U username] > dump.sql

Exportar solo los datos(no el esquema)base de datos:
$pg_dump -a dbname [-U username] > dump.sql

Exportar base de datos, la salida comienza con un creado de la base de datos y conexion a dicha base de datos:
$pg_dump -C dbname [-U username] > dump.sql

Exoprtar todas las bases de datos
$pg_dumpall > outfile.sql

Cliente postgresql -> comando psql
PostgreSQL command line prompt
dbname=# \l #muestra listado de las bases de datos existentes
dbname=# \d #listar tablas de base de datos actual
dbname=# \d table-name #muestra descripcion de los campo de la tabla table-name
dbname=# \c dbname # conectarse a base de datos dbname
dbname=# \h # ayuda de comandos SQL
dbname=# \? # ayuda de comandos psql
dbname=#inset, create,..... #ejecutar comandos sql
dbname=# \g o terminar las query con ;
dbname=# \q # salir

Restringir acceso a directorio de servidor apache con .htacces

Crear el directorio al que se quiere restringir el acceso (por ejemplo /var/www/directorio) un fichero llamado .htaccess con el siguiente contenido:

AuthType Basic
AuthName "Password Required"
AuthUserFile /etc/apache2/passwords #ejemplo de fichero donde estan los password
AuthGroupFile /dev/null
<limit GET POST>
require valid-user
</limit>

Crear el fichero de password con:
htpasswd -c /etc/apache2/passwords usuario
Te pedira el password del usuario 'usuario'

Si despues se quiere modificar el password:
htpasswd /etc/apache2/passwords usuario

En el fichero httpd.conf de apache: (en Ubuntu esta en /etc/apache2)
<directory /var/www/directorio>
............
DirectoryIndex index.php
AllowOverride All
</directory>

Reiniciar apache:
sudo /etc/init.d/apache2 restart

La proxima vez que accedas a http://servidor/directorio te pedira el usuario y password para acceder a dicho directorio

http://www.sitedeveloper.ws/tutorials/htaccess.htm

Uso comando apt-get

* apt-get update

Ejecute este comando después de cambiar /etc/apt/sources.list o /etc/apt/preferences.
También debe ejecutarlo periódicamente para asegurarse que sus fuentes están actualizadas.

* apt-get install nombre_paquete

Instala un nuevo paquete (pero vea aptitude mas abajo)

apt-cache search cadena_texto

Busca la cadena_texto en la lista de paquetes conocidos

* dpkg -l patrón_nombre_paquete

Lista los paquetes que coincidan con patrón_nomb

* aptitude

Visor basado en curses de los paquetes instalados o disponibles.
Aptitude puede usarse desde la línea de comandos de manera similar a apt-get
pero solo para algunos comandos -instalar y remover serían los más comunes.
Sin embargo, ya que aptitude muestra más información que apt-get, puede considerarse una mejor para las operaciones de instalar y remover.

* apt-cache showpkg paquetes...

Muestra información sobre paquetes

* apt-cache dumpavail

Muestra la descripción de los paquetes disponibles

* apt-cache show paquetes...

Muestra el registro de paquetes, similar a dpkg --print-avail

* apt-cache pkgnames

Una lista rápida de los paquetes del sistema

* dpkg -S archivo

¿En qué paquete está el archivo?

* apt-file search nombre_archivo

Busca los paquetes (no neceseriamente instalados) que contengan archivos que incluyan la cadena nombre_archivo. apt-file es un paquete por si mismo, por lo que debe primero hacer sudo apt-get install apt-file, luego ejecutar sudo apt-file update. Si apt-file search nombre_archivo muestra demasiada información, trate con apt-file search nombre_archivo | grep -w nombre_archivo (lo que le mostrará solo los archivos que contengan nombre_archivo como palabra completa) o variantes como apt-file search nombre_archivo | grep /bin/ que muestra solo los archivos localizados en los directorios como /bin o /usr/bin, útil si está buscando un ejecutable en particular

* apt-get autoclean

Ejecute este comando periódicamente para limpar de archivo .deb de paquetes que ya no están instalados en el sistema. Puede recuperar un montón de espacio en disco de esta manera. Si realmente está deseperado por espacio en disco, apt-get clean es más radical, y removerá todos los archivos .deb, incluso de los paquetes instalados actualmente. Pero por lo general no necesitará mas esos archivos .deb, de modo que tal vez valga la pena si está corto de megabytes.

fuente: http://es.wikibooks.org/wiki/Hacks_unixlike:_La_utilidad_apt-get

Comando dig: consulta a servidores de dns

DIG
---
Permiter hacer consultas dobre un dominio o ip a un servidor dns

Para obtener la lista de los trece super servidores dns
dig . ns

Para saber los servidores que manejan los dominios .es, .com o .net
dig es. NS
En ANSWER SECTION nos indica todos los servidores de nombres que manejan los dominios .es
En ADDITIONAL SECTION nos indica en los registros tipo A la ip de estos servidores.

dig tu_dominio.com +trace
Te hace un traceo desde los servidores root de dns hasta el servidor del dominio tu_dominio.com
El la linea Received X bytes from ..... te indica que servidor ha sido el que ha enviado la respuesta.
Esta consulta comienza sobre un servidor root de dns. A este se le pregunta por un servidor dns de dominios .com.
Al servidor que ha respondido el root server (que sabe de dominios .com) se le pregunta por el dominio tu_dominio.com y asi sucesivamente.

dig tu_dominio.com MX
Te indica los servidores de correo para el dominio tu_dominio.com

dig tu_dominio.com
te devuelve la ip de la maquina tu_dominio.com realizando la consulta a tu servidor dns
El servidor al que le hace la consulta aparece en la salida del comando en la linea ;; SERVER: X.Y.Z.T#puerto

dig @servidor_dns tu_dominio.com
te devuelve la ip de la maquina tu_dominio.com realizando la consulta al servidor dns indicado
El servidor al que le hace la consulta aparece en la salida del comando en la linea ;; SERVER: X.Y.Z.T#puerto

AUTHORITY & NO AUTHORITY
Cuando la respuesta de una consulta realizada con dig nos muestra una seccion que comienza con ;; AUTHORITY SECTION
indica que hemos consultado a un servidor de dominio que es el responsable de dicho dominio.
Si no contiene esta seccion, indica que el servidor consultado no es responsable de dicho dominio.

Esta web http://www.ignside.net/man/redes/dig.php explica detalladamente el resultado de las respuestas de dig.

Eliminar programa ventajas window original

Abrir una consola de ms-dos
Inicio->Ejecuar -> cmd
Entrar en el directorio c:\window\system32
cd c:\window\system32
Renombrar el fichero wgalogon.dll a wgalogon.dll.bak
move wgalogon.dll wgalogon.dll.bak
Crear el fichero wgalogon.dll vacío
echo '' > wgalogon.dll
o con el edit de texto de window.(Asegurarse que al guardarlo se guarda con la extensión correcta). Puede ser que windows guarde el fichero con nombre wgalogon.dll.txt
Los siguientes dos pasos hay que hacerlos rápido, como mucho no más de 5 segundos entre ellos.
Hay que borrar el fichero WgaTray.exe y matar el proceso WgaTray.exe.
Para hacer estos pasos rápido, aconsejo abrir el explordador de archivos, entrar en el directorio windows\system32 y seleccionar el fichero WgaTray.exe.
A continuación abrir el administrador de tareas de windows pulstando simulatánemamente control + alt + supr o con el botón derecho sobre la bara de tareas y seleccionamos Administrador de tareas. A continuación seleccionamos la pestaña procesos y localizamos el proceso WgaTray.exe.
Una vez que tenemos el explorador de archivos abierto y el administrador de tareas, nos vamos el explorador, borramos el fichero WgaTray.exe, cambiamos el administrador de tareas y teniendo seleccionado el proceso WgaTray.exe pulsamos sobre Terminar Proceso.
Reiniciamos y ya está.

Para evitar que se instale otra vez, nos vamos al panel de control, ejecutamos Actualizaciones automáticas y seleccionar "Descargar actualizaciones por mí, pero permitirme elegir antes cuando instalarlas".
Cuando hayan actualizaciones disponibles, nos aparecera un icono abajo a la derecha en la barra de tareas que nos indica que tenemos actualizaciones disponibles para actualizar.
Instalarlas todas excepto la de Ventajas de Windows Original cuando aparezca.
Nos preguntará si no queremos volver a instalar esta actualización. Aunque le digamos que no nos lo pregunte más, lo volverá a hacer cuando este disponible.

Una vez eliminado las ventajas de windows original, es posible que al iniciar el ordenador, salga la instalacion de programa de validacion (WGA). El proceso es wgasetup.exe.
Para que no vuelva a salir, hay dos soluciones:
1-Entrar en c:\windows\system32 y eliminar la carpeta KB905474
2-Entrar en Tareas programadas y eliminar el proceso que se ejecuta al arrancar wgasetup.exe. Tareas programadas está en menú inicio/accesorios/herramientas del sistema/ tareas programadas
Mejor hacer las dos cosas.

Obtener token de string como StringTokenizer in c++

std::string token, text("Here:is:some:text");
std::istringstream iss(text);
while ( getline(iss, token, ':') )
{
std::cout << token << std::endl;
}
if(iss.fail()){
}

Concatenar a un std::string numeros de tipo float o double

Con el siguiente codigo podemos concatenar valores float o double a una cadena de tipo string de la stl indicando el numero de decimales que queremos mostrar e indicando la longitud del numero.
#include <iostream>
#include <sstream>
#include <iomanip>
stringstream ss;
float flot=12345.123456789;
ss.flags(std::ios::fixed); //write floating point values in fixed-point notation
ss.precision(3); //indicar el numero de decimales a mostrar
ss.width(0); //Especificar el ancho qeu va a ocupar todo el numero, Se rellena con espacios en blanco, Si ponemos un numero inferior a la longitud del numero, imprime al menos todos los numeros enteros mas los decimales indicados en precision.
ss << "numero:" << flot << endl;
cout << ss.str() << endl;
La salida de este codigo es:
numero:12345.123

Si queremos añadir varios numero al stringstream tambien se puede hacer estableciendo el formato con las funciones de la std de iomanip. Esto se puede hacer todo en una misma linea con :
ss << std::setw(2) << std::setfill('0') << std::setprecision(0) <<  numero1;
ss <<  numero2;
ss << numero3;

Otras funciones para formatear la salida de un stringstream es:
setfill(char): caracter de relleno hasta completar el width indicado
setbase(std::oct | std::dec | std::hex): define la base a la que convertir el numero
setw(num): numero de caracteres que ocupará el numero impreso. Los que falten se rellenan con caracteres en blanco y con el caracter indicado en setfill
setiosflags(): establece el formato de los flags. Ver los flags aqui
resetiosflags(): resete un flag previamente establecido
setprecision(): establece el numero de decimales a mostrar. se rellena con ceros.



Todas estas funciones esta definidas en la libreria iomanip


El metodo str del stringstream devuelve un std::string

Montar por nfs un directorio remoto

Supongamos que queremos montar en una maquinaA en el directorio /mnt/maqB el directorio /home/user de una maquinaB.
En la maquina A realizamos:
-Como root, editar /etc/fstab y añadimos la linea
maquinaB:/home/user /mnt/maqB nfs [auto],users,defaults,exec 0 0
-Creamos el directorio /mnt/maqB
En la maquina B realizamos:
-Como root, editamos el fichero /etc/exports y añadimos la linea
/home/user/ *(rw,insecure)
-Reiniciar el servicio nfs
/etc/init.d/nfs restart

Consultar objetos registrados en servicio de nombres

Para consultar el servicio de nombres usamos el comando nslist de tao.
Este fichero esta en 'rutainstalaciontao'/bin
Para consultar el servicio de nombres:
./nslist -ORBInitRef NameService=corbaloc:iiop:'ip':'puerto'
nslist se puede ejecutar desde cualquier maquina, no solo desde donde se ejecuta el servicio de nombres. Lo importante es la ip y el puerto de la maquina que ejecuta el servicio de nombres.

Conexion via ssh sin password a maquina remota

Documento que explica como realizar un ssh a una maquina sin escribir password
1- Cliente: Crear los ficheros de clave publica y privada
cd $HOME
ssh-keygen -t dsa;
enter
enter enter
2- Cliente: Copiar el contenido del fichero de clave publica en el fichero authorized_keys del home del servidor
scp .ssh/id_dsa.pub user@servermachine:~/.ssh
3- Servidor: Entrar como el usuario que se quiere conectar y añadir el contenido de la clave publica del cliente en el fichero authorized_keys
cd ~
cat id_dsa.pub >> .ssh/authorized_keys
YA TA.
1- Si no funciona,
Comprobar permisos de ficheros en Servidor
-el directorio /home/user/ y el /home/user/.ssh no pueden tener permisos de escritura para el grupo y otros. Si se puede, poner permisos 600(o creo que al menos solo puede tener permisos de escritura el usuario propietario)
-el fichero authorized_keys debe tener permisos 600(o creo que al menos solo puede tener permisos de escritura el usuario propietario)
-rw-r--r-- 1 user grupo 836 jul 2 13:32 /home/user/.ssh/authorized_keys
-Hay que añadir al fichero /home/user/.rhosts una entrada con ipcliente user, que debe tener permisos 600(o creo que al menos solo puede tener permisos de escritura el usuario propietario)
192.168.1.2 user
-Si no se pueden poner permisos 600 a estos directorios por algun motivo, hay que cambiar el atributo StrictModes a no en el fichero
/etc/ssh/sshd_config del servidor y reiniciar el ssh. Esta medida es un fallo de seguridad. Ya no hace falta el uso del fichero .rhosts
Note:The option StrictModes specifies whether ssh should check user's permissions in their home directory and rhosts files before accepting login. This option must always be set to *yes* because sometimes users may accidentally leave their directory or files world-writable.
[user@hostname ~]$ ls -al ~/.ssh/authorized_keys ~/.rhosts
-rw------- 1 user grupo 85 oct 18 2007 /home/user/.rhosts
-rw-r--r-- 1 user grupo 836 jul 2 13:32 /home/user/.ssh/authorized_keys
DEBUG:
Cliente: ssh -vvv serverhost muestra mensajes de debug en el cliente
-Buscar Offering public key: /home/user/.ssh/id_dsa. Este fichero debe existir
-Si esto no esta bien, en el fichero /etc/ssh/ssh_config añadir al final la linea
IdentifyFile ~/.ssh/id_dsa
Servidor: mirar el fichero /var/log/secure o el fichero que muestre el log del sshd en el directorio /var/log
Si sale el mensaje "Authentication refused: bad ownership or modes for directory /home/user/.ssh...." comprobar los permisos de estos directorios, no pueden tener
permiso de escritura para el grupo ni otros
Segun la version del ssh, si sigue sin funcionar, probar a hacer un enlace al fichero authorized_keys ln -s authorized_keys authorized_keys2
o mirar la configuracion del servidor en sshd_config el atributo
AuthorizedKeysFile .ssh/authorized_keys

Montar por samba(cifs) un directorio compartido

Este pequeño manual permite montar un directorio compartido por samba mediante fstab y permite realizar el montaje a un usuario no root.
Hay que hacer los siguientes pasos:
1-Establecer el sticky-bit al fichero /sbin/mount.cifs
1.1 Como root hacer: chmod u+s /sbin/mount.cifs
2-Crear el directorio donde se realizara el montaje; el propietario y grupo deben ser el propietario y grupo del usuario en la host cliente.
2.1 Como root hacer: mkdir /mnt/puntomontaje ; chown user_cliente:grupocliente /mnt/puntomontaje
3- Añadir una linea al fichero /etc/fstab
3.1 Como root, editar el fichero /etc/fstab y añadir la siguiente linea:
//servidor/recursocompartido /mnt/puntomontaje cifs user,_netdev,username='user_cliente',domain='dominio',noperm,uid='uid_user_cliente',gid='gid_grupo_user_cliente' 0 0
3.2.1 user: permite montar a usuarios no root
3.2.2 _netdev: restrasa el montaje hasta que la red este disponible
3.2.3 domain: especifica el nombre del dominio del usuario en el servidor
3.2.4 noperm: no realiza checkeo de permisos
3.2.5 uid: identificador del usuario en la maquina cliente
3.2.6 gid: identificador del usuario en la maquina servidor
Con esto ya deberia funcionar.
4- Como usuario cliente realizamos: mount /mnt/puntomontaje
Si el usuario tiene password, este comando pide password de cliente en la maquina servidor.
5- Se puede añadir el password en el fstab con password=passwordcliente, pero esto deja el password en claro en el fichero fstab.
Para evitar esto:
5.1 Crear un fichero (por ejemplo: ~/.credentials, con permidos rw------- para que solo lo pueda ver y modificar el propietario) en el que ponemos en cada linea:
5.1.1 username='user_cliente'
5.1.2 domain='dominio'
5.1.3 password='passwordcliente'
(sin las comillas)
5.2 Cambiamos la linea del fstab sustituyendo username y domain por credentials=/home/user/.credentials
Quedaria asi:
//servidor/recursocompartido /mnt/puntomontaje cifs user,_netdev,credentials=/home/'user'/.credentials,noperm,uid='uid_user_cliente',gid='gid_grupo_user_cliente' 0 0
Nota: cualquier palabra que vaya entre comillas simples ('user_cliente') deber ser sustituida por el valor real
Posibles errores:
1- mount error 13 = Permission denied
1.1 Posiblemente el password introducido es incorrecto.
Enlaces:
http://www.swerdna.net.au/linhowtosambacifs.html
http://pserver.samba.org/samba/ftp/cifs-cvs/linux-cifs-client-guide.pdf

Crear tar con ficheros que comienzan por .(punto)

Por defecto, cuando creamos un fichero tar para unir y comprimir ficheros y directorios, escribimos un comando parecido al siguiente:
tar zcvf fichero.tgz *.
Este comando incluye en el fichero tar todos los ficheros y directorios del directio actual.
El problema ocurre cuando tambien queremos incluir en el fichero .tgz los ficheros y directorios que comiencen por .(punto).
Para ello, nos ayudamos del find y del xargs, con:
find . -name "*" | xargs tar zcvf fichero.tgz
Otra forma
tar fichero.tgz --exclude fichero.tgz .
Este comando incluye todos los ficheros y directorios(incluidos los que comienzan por .) excepto el propio fichero tgz que se crea; si no se excluye el tar intenta incluirlo.
Si ponemos *, de la siguiente forma
tar fichero.tgz --exclude fichero.tgz *
el tar no incluye los ficheros y directorios que comienzan por .(punto).
Para excluir varios ficheros o directorios se puede poner varias veces --exclude.

Cambiar configuracion de teclado por linea de comandos en linux

Para cambiar la configuracion del teclado para ponerlo en español desde la linea de comandos:
/usr/X11R6/bin/setxkbmap -layout es -model pc105 -option ''

Para cambiar el dioma del OS:
system-config-language