miércoles, 23 de octubre de 2013

Punto como separador decimal en Ubuntu

Antes que nada, agradecer la referencia de esta entrada, del foro de ubuntu:
http://www.ubuntu-es.org/node/177441#.UmiH-FMW1c9, la entrada de Gabriel_M

El problema es este:
La configuración regional oficial del Perú (así parece) hace que el separador de decimales por defecto sea la coma. Pero la verdad aquí usamos el punto. Así que hay que cambiar la configuración regional por defecto del Ubuntu.

Por ahí encontré una sugerencia que decía cambiar el lenguaje a "Español (EU)" pero el problema es que esta configuración cambia la moneda por defecto a $, y la fecha (me parece) al poco práctico formato mes-dia-año (siempre comparo este formato a escribir un numero con centenas-unidades-decenas, pero ese es otro tema).

Lo propio es conservar el formato regional de Perú y sólo cambiar el separador decimal a punto, y el separador de miles a coma, y el linux en general permite manipular lo que querramos (¡felizmente!)

Es como sigue:
Hay que editar el archivo "es_PE" poniendo en la terminal:

sudo gedit /usr/share/i18n/locales/es_PE

ubicar las líneas:
mon_decimal_point    "<U002C>"
mon_thousands_sep    "
<U002E>"

e invertir los parámetros así:
mon_decimal_point    "<U002E>"
mon_thousands_sep    "
<U002C>"

esto fue para moneda.

Ahora hay que hacer algo similar para los números.
Ubicar las lineas entre:
LC_NUMERIC
(aqui dice algo para copiar la configuración de españa)
END LC_NUMERIC

y reemplazarlas con:
LC_NUMERIC
decimal_point        "
<U002E>"
thousands_sep        "
<U002C>"
grouping             3;3
END LC_NUMERIC


Grabar y cerrar.

Ahora hay que actualizar la modificación en el sistema con el siguiente comando de terminal:

sudo dpkg-reconfigure locales

Eso es todo. Ahora los programas que utilizan números (calculadora, hoja de cálculo, etc.) usarán el punto como separador decimal y la coma como separador de miles.


sábado, 19 de octubre de 2013

Como instalar windows 7 desde una memoria USB

Gracias a Benny26 por su publicación en techspot:

http://www.techspot.com/community/topics/how-to-install-windows-7-on-a-netbook-using-a-usb-flash-drive.183072/


Para hacer cosas básicas en windows veo que casi siempre te mandan a "descarga este programita de aquí". Terminas descargando varios programas y perdiendo el tiempo al comprobar que no te sirven, además de cruzar los dedos para que no te este metiendo un virus.



Pero en esta página que encontré describen las cosas al estilo Linux (¡¡al fin!!) con simples pasos y comandos de consola. Después de intentos sin éxito hasta con una aplicación que me descargué del mismo microsoft (lamentable) estos pasos fueron los que me sirvieron.



A continuación una traducción del enlace:

PASO 1: LO QUE NECESITAS:

  1. Una memoria usb de 4GB o mas.
  2. Una PC con lectora de DVD, windows 7 y privilegios de administrador (estos pasos no han sido comprobados en windows XP)
  3. Un DVD con el instalador de wiindows 7.


PASO 2: PREPARANDO LA USB CON COMANDOS DE D.O.S.


  1. Coloca tu memoria usb en la pc, y retira cualquier otra memoria que tengas conectada para evitar confusiones en el proceso.
  2. Abre la ventana de terminal de windows:
    • -clic en "inicio"
    • -clic en "todos los programas"
    • -clic en "accesorios"
    • -clic DERECHO en "símbolo del sistema"
    • -clic en "ejecutar como administrador" (ESTO ES IMPORTANTE)
      (nota para aquellos que nunca han usado una ventana de comandos: no olvides que cada comando que ingreses en la ventana va seguido de la tecla enter)
      (nota 2 para aquellos que nunca han usado una ventana de comandos: sean muy cuidadosos en seguir estos pasos, sobre todo en el momento de elegir el disco. Si se equivocan de número podrían borrar todos los datos y programas de un disco equivocado)
  3. Ahora en la ventana de "símbolo del sistema" que se ha abierto, tipear DISKPART (y enter como siempre) y esperar uno segundos.
  4. Luego de unos segundos, tipear LIST DISK (y enter). Aparecerá una lista de las unidades en tu PC
  5. Ahora necesitamos saber cual es el número de tu memoria usb ("Disco 0" o "Disco 1" o etc). Te debes guiar viendo la columna "Tamaño". Una memoria usb de 4GB mostrará aproximadamente 3800MB, una de 8GB mostrará 7600MB, etc. (ser cuidadosos en este paso, no olviden que se recomendó retirar todas las otras memorias usb para no borrarlas por error)
  6. Ahora debes seleccionar tu memoria usb tipeando "SELECT DISK ?" (donde "?" es el número de tu usb que identificaste en el paso anterior, por ejemplo: SELECT DISK 8)
  7. Ahora empieza la preparación de la usb:
    • Tipea CLEAN
    • Tipea CREATE PARTITION PRIMARY
    • Tipea SELECT PARTITION 1 (si, es el numero 1, no lo cambies)
    • Tipea ACTIVE
    • Tipea FORMAT FS=NTFS
    • Espera unos minutos hasta que termine el formato
    • Tipea ASSIGN
    • Tipea EXIT
  8. Ahora puedes minimizar la ventana negra de simbolo del sistema y colocar el DVD del instalador del windows 7 en la lectora (no dejes que se ejecute el instalador)
    • Ahora debes identificar que letra tiene tu dvd y la letra que tiene tu usb. Lo puedes encontrar en "Equipo" o en "mi pc".
  9. Ahora regresa a la ventana negra de simbolo del sistema y tipea: ?: CD BOOT (reemplaza "?" con la letra de tu dvd que identificaste en el paso anterior, por ejemplo G: CD BOOT)
    • 9a. Tipea CD BOOT
  10. Tipea BOOTSECT.EXE /NT60 ?: (reemplaza "?" con la letra de tu USB que identificaste en el paso 8a, por ejemplo BOOTSECT.EXE /NT60 P:)
  11. Ahora puedes cerrar la pantalla negra de simbolo del sistema.

PASO 3: PREPARACIÓN FINAL


  1. Entra a "mi pc" (o "equipo" o donde puedas ver tus archivos). Clic derecho en tu dvd y clic en "abrir" (no en ejecutar).
  2. Selecciona todos los archivos, clic derecho y clic en "copiar"
  3. Entra a tu usb y "pega" todos los archivos en ella.
  4. Cuando termine la copia, retira "de forma segura" (como siempre lo haces) tu usb de la pc

Ahora tienes lista una usb "booteable" para instalar windows. Util por ejemplo para una netbook que no tiene lectora de DVD. Solo debes asegurarte de que la Netbook tenga habilitada la opción de "bootear desde usb". Si no sabes como hacerlo puedes googlear o comentar este post para darte una ayuda.

Espero les sirva. Aunque nunca dejaré de ser Linuxero, estamos obligados muchas veces a tener disponible un windows (estoy trabajando en desarrollos para windows con C++ y Visual Studio)... Como diría Mafalda "qué asco me doy a veces"...


jueves, 25 de octubre de 2012

Designated Initializers

"Inicializadores Designados" (espero que sea una traducción aceptable).
He buscado tanto acerca de este tema y son tan escasas las referencias que vale la pena publicar una.

En Ansi C tenía el siguiente problema:
Necesito una estructura (struct) con algunos de sus miembros constantes:

struct
{
    int valor;
    const int constante1;
    const int constante2;
} mi_estructura;


El estándar no permite la inicialización de los elementos de una estructura, osea, si quiero que mis constantes sean 4 y 6:

struct
{
    const int constante1 = 4;
    const int constante2 = 6;
    int valor;
} mi_estructura;

NO ESTA PERMITIDO


Buscando encontré la forma de inicializar los miembros de struct. Entonces para hacer lo anterior correctamente sería:

struct
{
    const int constante1;
    const int constante2;
    int valor;
} mi_estructura = { 4, 6 };

PERMITIDO


Listo, ya hay una forma de hacerlo. Pero, aun no me gusta. La lista depende del orden en que coloco las variables miembro de struct. ¿que tal si muevo "int valor" al principio de la lista? ¿o si agrego una nueva variable? ¿o quito alguna?. Cuando lo haga debo ser muy cuidadoso en rehacer la lista de inicialización para respetar el nuevo orden (cuando alguien mas le haga mantenimiento a tu código después de tiempo, es MUY deseable que esto quede claro).

La solución (que escasamente pude encontrar) los "inicializadores designados" ("designed initializers"). Había sido tan simple como etiquetar cada elemento de la lista de inicialización anterior (un estilo muy similar a "enum"):

struct
{
    const int constante1;
    const int constante2;
    int valor;
} mi_estructura = { .constante2 =6, .constante1=4 };

PERMITIDO


Ahora si está mucho mejor. Quien le de mantenimiento a mi código debe fijarse solo en que el elemento constante de la estructura tenga su inicializador en la lista. Ya no debe preocuparse del orden y ni de una posible asignación errónea de valores.
Aún me gustaría evitar la edición en dos lugares, pero parece que es lo mejor que el estándar del C puede dar.


viernes, 13 de abril de 2012

ubuntu temp

gracias a TeoBigusGeekus en http://ubuntuforums.org/showthread.php?t=1688948&page=2

A continuacion una transcripcion de su aporte:

1)Open flash video page (that you own of course) and let it load. Don't close the page.


2)Open terminal and give
code:
lsof | grep Flash

lsof: list open files
In my case (opera user) it gives
code:
operaplug 2840 teo 9u REG 8,8 6962837 392986 /tmp/FlashXXFfe85s (deleted)


Notice the 2nd (process id) and 4rth (file descriptor - without the letter) columns.


3)
code:
cp /proc/2840/fd/9 ~/Desktop/video

lunes, 6 de febrero de 2012

Repositorio local de ubuntu con archivos descargados

Esta entrada está dedicada a las PC con Ubuntu, sin conexión a internet pero que quieren usar el synaptics como si estuvieran conectados.

Hay muchas ayudas al respecto sueltas en la red, pero de todas las que revisé ninguna me funcionó bien. Así que me puse a tantear pequeñas variaciones hasta que una me funcionó y es la que les describiré a continuación: (aparentemente la falla de las ayudas que encontré se deben a una mala traducción y a errores de tipeo, asi que seré cuidadoso al respecto).
(probado con Ubuntu 11.04 Natty 64 bits)


1.- CONSEGUIR LOS ARCHIVOS DE REPOSITORIO (*.deb)
Bueno, para esta parte se necesitará irremediablemente internet, talvez de otra computadora con conexión y misma versión de ubuntu.
Las instalaciones hechas desde el synaptics guardan una copia de todas las dependencias descargadas y empleadas en la carpeta /var/cache/apt/archives.
Entonces, una PC a la que ya le hayan instalado el o los paquetes deseados via synaptics, tendrá todas las dependencias necesarias (archivos .deb) en esta carpeta.
Copien todo el contenido de esta carpeta (excepto la subcarpeta "partial" y el archivo "lock" que son solo de trabajo). Estos archivos serán su repositorio local.


2.- PREPARANDO A LA PC SIN INTERNET.
Creen una nueva carpeta en cualquier lugar, por ejemplo:
cd /home/$USER
mkdir misrepositorios
Dentro de esta carpeta creen otra (ahora si deben usar el nombre "Packages")
cd misrepositorios
mkdir Packages
Dentro de la carpeta Packages copien todos los archivos ".deb" que extrajeron de la otra PC.


3. PREPARANDO NUESTRO REPOSITORIO PARA SU USO
Ahora se creará el índice de nuestro repositorio local:
cd /home/$USER/misrepositorios/
dpkg-scanpackages Packages /dev/null | gzip > Packages/Packages.gz
Ahora se le indicará al synaptics donde buscar nuestra lista de repositorios:
sudo gedit /etc/apt/sources.list
En la parte final del archivo que se abrirá deberán añadir la línea: (¡¡respetar los espacios!!) (esta era otra fuente de error: la edición del archivo no acepta la variable "$USER", asi que aqui si hay que poner el usuario que corresponda a su pc. Si alguien sabe como usar variables en este archivo de texto, háganmelo saber)
deb file:/home/mi_usuario/misrepositorios/ Packages/
Guardan y cierran


Eso es todo. Si ahora le dan "recargar" al synaptics, leerá todos los repositorios de la carpeta como si lo estuvieran haciendo desde internet, y podrán hacer las instalaciones que deseen, siempre y cuando todas las dependencias hayan estado en su carpeta.

lunes, 2 de enero de 2012

detalles de compilacion de c++ en eclipse

Compilando en eclipse un programa hecho por otra persona en otra IDE se me presentaron los siguientes errores:

"multiple definition of _start"

el detalle en consola:
/build/buildd/eglibc-2.10.1/csu/../sysdeps/x86_64/elf/start.S:65: multiple definition of `_start'

Gracias a la publicación de Mario en un foro (http://stackoverflow.com/a/5528987) encontré la solución:
añadir el parametro -c a la compilación del g++ (en "other flags"). No volvió a aparecer el error.


Otro error que se me presentó a continuación:
" undefined reference to `pthread_create' "

a pesar de haberle añadido la opción -lpthread a la compilación con g++, me seguía arrojando el mismo error, hasta que caí en la cuenta que el eclipse trabaja por separado la compilación y el enlazado (link), así que el enlazado también debería incluir esta opción en "linker flags". Incluí de nuevo -lpthread en ese campo, y todo corrió perfecto.

Como siempre digo, aunque esta información es redundante, es mas fácil encontrarla en la web si está publicada en varios sitios y agrupada de forma distinta. Espero les sirva.

Saludos

martes, 21 de junio de 2011

Instalar controlador/driver de tarjeta de video nvidia sin internet

Datos:
Procesador Core 2 duo
2GB RAM
tarjeta de video nvidia GeForce 7300 GT
Ubuntu 11.04

Procedimiento:
Hay muchas referencias al respecto en la web. Particularmente a mi me sirvió de base la siguiente: http://www.ubuntu-es.org/node/143352

Bueno, lo más directo es instalar el driver de nvdia usando "controladores adicionales" de ubuntu. Casi siempre funciona bien siempre y cuando haya conexión a internet.
Cuando no hay internet en la PC donde se desea empiezan los problemas, pero aquí están las soluciones.

1.- Descargar el driver de nvidia desde su página web: (obviamente será desde otra computadora que si tenga el acceso a internet)
http://www.nvidia.com/Download/index.aspx?lang=es

obtendrán un archivo de unos 50MB de un nombre similar a este: NVIDIA-Linux-x86_64-275.09.07.run

2.- Instalar los requisitos previos:
build-essential (ya viene por defecto en el ubuntu 11.04)
linux-headers (ya viene por defecto en el ubuntu 11.04)
ia32-libs (si se desea correr aplicaiones compatibles con 32bits como las de windows por ejemplo)
-Sobre como instalarlos sin internet será motivo de otro post o pregúntenmelo si es que aún no lo he hecho

3.- (En este paso algunos sugieren guardar una copia del archivo xorg.conf. Pero resulta que para versiones recientes de ubuntu este archivo ya está en desuso).

Si no se ha hecho, abrir una consola desde "accesorios" y crear la contraseña del usuario "root":
sudo passwd root


4.- Presionar CTRL+ALT+F1 para entrar en consola de texto (recuerden que pueden regresar a su entorno gráfico normal con CTRL+ALT+F7)
Logearse como root (para eso crearon la contraseña si es que no la tenían)

5.- Editar el archivo "blacklist.conf" con la siguiente linea de comandos:
sudo nano /etc/modprobe.d/blacklist.conf
Agregar en la parte final del archivo las siguientes lineas:
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv

CTRL+O (para guardar), Enter.
CTRL+X para salir.

6.- Detener el modo gráfico:
sudo service gdm stop
saldrá: gdm stop/waiting

7.- Desinstalar alguna posible instalación previa de algún driver de nvidia:
sudo apt-get --purge remove nvidia-*

8.- Ejecutar el instalador del driver que se descargaron de nvidia (en la ruta que lo guardaron claro)
sudo sh NVIDIA-Linux-x86_64-275.09.07.run

Entrarán a un diálogo de instalación en modo texto, hay que darle "si/aceptar" a todo.
El detalle es que en la primera ejecución de esta aplicación siempre me sale algo como que "el driver nouveau se está ejecutando aún pero que el instalador de nvidia intentará desactivarlo agregando un archivo especial". Se le da aceptar. Internamente el archivo será agregado pero saldrá un mensaje en el instalador diciendo "la instalación del driver ha fallado". No hay problema, hasta este punto ha hecho lo correcto, desactivar el "nouveau", ahora solo debemos reiniciar el sistema:
sudo shutdown -r now

9.- De nuevo entrarán al modo gráfico pero esta vez se verá un tanto diferente porque ya está deshabilitado el driver que impedía la instalación.
De nuevo CTRL+ALT+F1 para entrar en texto, se logean como root.
De nuevo detienen el modo gráfico:
sudo service gdm stop
De nuevo ejecutan el instalador de nvidia descargado:
sudo sh NVIDIA-Linux-x86_64-275.09.07.run
Y esta vez ya no motrará ningún inconveniente para proceder con la instalación. Dar "si/aceptar" a todas las pantallas (si instalaron ia32-libs denle también "aceptar" a la compatibilidad con 32bits cuando el instalador se los pregunte)

LISTO, cuando el instalador terminen de nuevo reinician:
sudo shutdown -r now

Y ya tendrán el driver de nvidia instalado junto con el administrador de configuraciones de pantalla "nvidia-settings".

NOTA: No se preocupen si "controladores adicionales" del ubuntu muestra su tarjeta como inactiva. En realidad está activa sino que esta aplicación no se ha enterado de que lo está.
Pueden comprobarlo con el comando:
glxinfo | grep rendering
si el resultado es: direct rendering: Yes
entonces la aceleración 3D de la tarjeta está activada.


otras fuentes:
ftp://download.nvidia.com/XFree86/Linux-x86/169.04/README/chapter-08.html
https://help.ubuntu.com/6.06/ubuntu/desktopguide/C/hardware.html