Mostrando entradas con la etiqueta Linux. Mostrar todas las entradas
Mostrando entradas con la etiqueta Linux. Mostrar todas las entradas

martes, 20 de noviembre de 2018

Clonando y cambiando partición root en Linux

Contexto:
Sucede que mis particiones de root siempre las hago alrededor de los 20GB. Usualmente esto me da espacio suficiente para soportar mucho tiempo antes de la próxima reinstalación.
 Pero esta vez no, cuando trate de dimensionar root, me dio errores. Entonces tome la decisión de clonar root y cambiarlo.

Nota:
De momento ha funcionado bien y sin problemas.

Pasos:
  1. Utilizando un Live CD en mi caso use Kubuntu 14.02 (Viejo). Entro en en modo "Probar sin instalar".
  2.  Dentro entro al gestor de particiones de KDE. Comando:
    partitionmanager




  • Dentro encontré: 

    • /dev/sda7 como root (20GB), 
    • /dev/sda5 como home(350GB). 
    • Simplemente lo que hice fue hacer algo de espacio para la nueva partición que superara su tamaño original. Esta fue asignada con 90GB y quedo como /dev/sda8




  • Lo siguiente que debemos hacer es clonar sda7 (Viejo root) en /dev/sda8 (Nuevo root). Usando el comando: 
    dd if=/dev/sda7 of=/dev/sdb8 bs=64K conv=noerror,sync
  •  El siguiente paso fue montar /dev/sda7 y el /dev/sda8 para poder editar el fstab. Usando Dolphin es solo cuestión de darle un par de clicks.
  •  Debemos editar el /etc/fstab de ambas particiones. Quedaría algo como esto: Nota: Soy de vieja escuela y siempre me ha parecido mejor usar particiones que UUID. Sin embargo en el final de este post encontraras como cambiar los UUID de la vieja partición.
  • Como se logra ver en la imagen anterior, antes se usaba la UUID del /dev/sda7. Pero ahora directamente lo cambie para /dev/sda8. Y esto para no tener que lidear con NADA mas. Sino tendriamos que actualizar un monton de cosas entre ellas grub.(Recortar cambiar el FSTAB DE AMBAS PARTICIONES)
  • Para este punto ya podemos reiniciar (Dejar de usar el LiveCD
  • Con la nueva partición corriendo, si ejecutamos el
    df -h
    se puede notar  que la partición aun tiene 20Gb de espacio. Esto es porque se clono de forma que la tabla de particiones se duplico. Lo que debemos hacer es ejecutar este comando:
    sudo resize2fs /dev/sda8 
    de esta forma se actualiza y ahora si me marca los 90GB de espacio. 

  • Epilogo
    Como editar el UUID de un disco duro con comandos?

    Contexto:
    Como se duplico la vieja root, también duplico el UUID y esto no es recomendable.

    Es tan sencillo como generar un nuevo UUID y actualizarlo:

    uuidgen
    #bbef6868-6903-456e-ad5e-2784154dfb9a
    tune2fs /dev/sda7 -U bbef6868-6903-456e-ad5e-2784154dfb9a
    

    sábado, 2 de septiembre de 2017

    Configurar Android Devices para desarrollo en Linux (Debian 8)

    Es muy comun encontrarse este error despues de ejecutar:

    adb devices
    
    #Error al mostrar que no hay permisos:
    List of devices attached
    M4 SS1070       no permissions (verify udev rules); see [http://developer.android.com/tools/device.html]

    Aquí el problema es que los usb son mas restrictivos en linux.
    Pero no te alarmes. Es sencillo de resolver.

    Lo que voy a mostrar en una recopilación de la mayoría de vendors para que no sufras mas por esto. Eventualmente si después de seguir los pasos abajo mostrados aun te sigue saliendo.
    Tendrás que buscar el vendo-Id correcto para tu device.

    #Edita/Agregar el archivo de udev rules
    sudo nano /etc/udev/rules.d/51-android.rules
    
    #Agregar la lista de abajo al archivo.#51-android.rules: 
    #Lista con los vendors mas comunes
    SUBSYSTEM=="usb", ATTR{idVendor}=="0502", MODE="0666", GROUP="plugdev" #Acer
    SUBSYSTEM=="usb", ATTR{idVendor}=="0b05", MODE="0666", GROUP="plugdev" #ASUS
    SUBSYSTEM=="usb", ATTR{idVendor}=="413c", MODE="0666", GROUP="plugdev" #Dell
    SUBSYSTEM=="usb", ATTR{idVendor}=="0489", MODE="0666", GROUP="plugdev" #Foxconn
    SUBSYSTEM=="usb", ATTR{idVendor}=="04c5", MODE="0666", GROUP="plugdev" #Fujitsu
    SUBSYSTEM=="usb", ATTR{idVendor}=="04c5", MODE="0666", GROUP="plugdev" #Fujitsu Toshiba
    SUBSYSTEM=="usb", ATTR{idVendor}=="091e", MODE="0666", GROUP="plugdev" #Garmin-Asus
    SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev" #Google
    SUBSYSTEM=="usb", ATTR{idVendor}=="201E", MODE="0666", GROUP="plugdev" #Haier
    SUBSYSTEM=="usb", ATTR{idVendor}=="109b", MODE="0666", GROUP="plugdev" #Hisense
    SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev" #HTC
    SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0666", GROUP="plugdev" #Huawei
    SUBSYSTEM=="usb", ATTR{idVendor}=="24e3", MODE="0666", GROUP="plugdev" #K-Touch
    SUBSYSTEM=="usb", ATTR{idVendor}=="2116", MODE="0666", GROUP="plugdev" #KT Tech
    SUBSYSTEM=="usb", ATTR{idVendor}=="0482", MODE="0666", GROUP="plugdev" #Kyocera
    SUBSYSTEM=="usb", ATTR{idVendor}=="17ef", MODE="0666", GROUP="plugdev" #Lenovo
    SUBSYSTEM=="usb", ATTR{idVendor}=="1004", MODE="0666", GROUP="plugdev" #LG
    SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0666", GROUP="plugdev" #Motorola
    SUBSYSTEM=="usb", ATTR{idVendor}=="0e8d", MODE="0666", GROUP="plugdev" #MTK
    SUBSYSTEM=="usb", ATTR{idVendor}=="0409", MODE="0666", GROUP="plugdev" #NEC
    SUBSYSTEM=="usb", ATTR{idVendor}=="2080", MODE="0666", GROUP="plugdev" #Nook
    SUBSYSTEM=="usb", ATTR{idVendor}=="0955", MODE="0666", GROUP="plugdev" #Nvidia
    SUBSYSTEM=="usb", ATTR{idVendor}=="2257", MODE="0666", GROUP="plugdev" #OTGV
    SUBSYSTEM=="usb", ATTR{idVendor}=="10a9", MODE="0666", GROUP="plugdev" #Pantech
    SUBSYSTEM=="usb", ATTR{idVendor}=="1d4d", MODE="0666", GROUP="plugdev" #Pegatron
    SUBSYSTEM=="usb", ATTR{idVendor}=="0471", MODE="0666", GROUP="plugdev" #Philips
    SUBSYSTEM=="usb", ATTR{idVendor}=="04da", MODE="0666", GROUP="plugdev" #PMC-Sierra
    SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666", GROUP="plugdev" #Qualcomm
    SUBSYSTEM=="usb", ATTR{idVendor}=="1f53", MODE="0666", GROUP="plugdev" #SK Telesys
    SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666", GROUP="plugdev" #Samsung
    SUBSYSTEM=="usb", ATTR{idVendor}=="04dd", MODE="0666", GROUP="plugdev" #Sharp
    SUBSYSTEM=="usb", ATTR{idVendor}=="054c", MODE="0666", GROUP="plugdev" #Sony
    SUBSYSTEM=="usb", ATTR{idVendor}=="0fce", MODE="0666", GROUP="plugdev" #Sony Ericsson
    SUBSYSTEM=="usb", ATTR{idVendor}=="2340", MODE="0666", GROUP="plugdev" #Teleepoch
    SUBSYSTEM=="usb", ATTR{idVendor}=="0930", MODE="0666", GROUP="plugdev" #Toshiba
    SUBSYSTEM=="usb", ATTR{idVendor}=="19d2", MODE="0666", GROUP="plugdev" #ZTE
    SUBSYSTEM=="usb", ATTR{idVendor}=="0414", MODE="0666", GROUP="plugdev" #Gigabyte
    
    #Ejecutar el comando:
    sudo udevadm control --reload-rules
    #Esto con el objetivo de no reiniciar tu PC
    #Y refrescar los Udev en "caliente"
    
    
    #Por ultimo simplemente volver a conectar nuestro device a la computadora y ejecutar
    adb devices
    
    List of devices attached
    M4 SS1070       device



    lunes, 31 de diciembre de 2012

    Apache para drupal 7 en Linux (Problemas con Clean URL)

    Hace algún tiempo me he empezado a interesar en Drupal 7. Honestamente me ha gustado mucho, la idea esta bien planteada. La documentación esta bien y el soporte de la comunidad. En futuras entradas hablare de los módulos. Por ahora quiero hablar un poco sobre los requisitos necesarios y sobre todo de Apache y su configuración.

    Verán instalar Drupal 7 es un juego de ninos. Podrían buscar en Internet miles de entradas de como instalarlo. Por eso no me parece útil referirme al tema.

    Una vez instalado ya tienen su sistema instalado en localhost. Y digamos que quieren ingresar a la pagina de autentificación de ususario.
    Deberian acceder a la siguente pagina:

    http://127.0.0.1/kcontrol/user

    Pero sorpresa, SORPRESA!!!
    La pagina no existe. Bienvenido al problema de los cleanURL.
    Para poder acceder esta pagina deberian usar:

    http://127.0.0.1/kcontrol/?q=/user

    Porque?
    El .htaccess de Apache es un archivo que te permite escribir reglas especializadas para que los clean url funcionen en Drupal 7. Por defecto no vienen configuradas en nuestro Apache de linux mediante de los repositorios (sudo apt-get install apache2)

    Por eso vamos a hacer un par de ajustes para que sirvan:

    1. Primer paso instalar apache y todas las dependencias:

    #!/bin/bash
    sudo apt-get install apache2 php5 libapache2-mod-php5 php5-gd php5-dom php5-pgsql


    Note que yo uso Postgrest SQL. Por eso el paquete php5-pgsql pero para los mysql adictos debería ser php5-mysql

    2. Modificar el archivo /etc/apache2/sites-available/default
    Remplazar:
    "AllowOverride none" por "AllowOverride All"


    3. Habilitar el modulo de rewrite rules

    #!/bin/bash
    sudo a2enmod rewrite
    sudo service apache2 restart

    Listo!!!

    miércoles, 30 de mayo de 2012

    Convertir el color de una imagen a transparente con bash...

    Hace tiempo atrás me había enfrentado a la tarea de quitar un color de una imagen en BMP y sustituirla por transparencia.

    Nota: Por razones de derechos de autor no puedo poner las imágenes, pero puedo poner el link donde están:

    http://www.reinerstilesets.de/

    Para recrear lo que quiero hacer es algo como esto:
    Cambiar el cafe y ponerlo trasparente
     

    Esas imágenes son geniales para programar juegos con SDL. Ya que necesitamos un color key que podamos "sacrificar". Pero si lo queremos usar en algún lenguaje que soporte transparencia como Java.

    R// Muy fácil dirán unos, abrís GIMP y seleccionas con Magic Choose el color deseado lo cortas y lo salvas.

    Es verdad, pero hacerlo para 1000 imágenes...
    VERDAD? que no es tan fácil.

    La solución a nuestros problemas es simplemente un script en bash que hagarra todas las imágenes las convierta y borre las originales.

    El comando que necesitamos es este:

    convert -transparent 'RGB()' imagenOrigen.bmp imagenDestino.png

    El script quedaria

    #!/bin/bash
    FILES=`find $1 | grep bmp`
    for f in $FILES
    do
        nf=`echo ${f//bmp/png}` #replace all
        echo $nf
        convert -transparent 'RGB(97,68,43)' $f $nf
        rm $f
    done

    Y para usarlo basta llamar el script y darle el folder con todas las imagenes

    martes, 18 de octubre de 2011

    Algunos trucos con el httpd.conf y php.init

    Php en su archivo de configuración tiene una serie de atributos interesantes. Muchos de los cuales en mi vida he visto y otros que no les presto mucha importancia. Curiosamente hace un par de semanas atrás, mi jefe directo me asigno una misión bastante peculiar. Tenia que hacer funcionar local un aplicación. No voy a rondar en detalles. Si los quieren leer pueden verlos aquí.

    En mi búsqueda de hacer funcionar dicha aplicación me tope con algunas variables en los archivos de configuración en el php y en el apache que quiero compartir por aca:
     
    Primer truco

    Uno muy interesante es poder anular los warning en php.
    Usando la variable siguente en el php.init:

    error_reporting = E_ALL & ~E_NOTICE

    Esto le dice al Php que muestre los errores, pero no los warning o Notice como se les conoce. Entonces imaginemos que en el php creamos un array o tratamos de acceder alguna variable global y después simplemente tratamos de acceder sus datos con un índice que no existe.

    Ejemplo:

    echo $_REQUEST["email"]; 

    Si esta variable no se encuentra configurada en el php.init, el warning es mostrado.

    Sin embargo puede presentar problemas intensos de hackeo. Yo no recomendara utilizarlos.

    Segundo Truco

    Otro truco que si me parece mas util de usar es el: auto_prepend_fileauto_append_file. Estos son archivos que se cargan al inicio de cualquier script y despues de cualquier otros script en su orden respectivamente.

    Un ejemplo seria algo asi como:
    auto_prepend_file = /home/sites/koza/phpdefines.php

    Esta variable auto carga o auto ejecuta este script antes de cualquier ejecusion. Es equivalente a:

    inlcude('/home/sites/koza/phpdefines.php');
    

    En el incio de cualquier script.

    Tercer Truco

    Ejecutar los script en php en archivos con extensión html. Al inicio pensé que esto seria de lo mas trivial del mundo. Honestamente confieso que me tomo más tiempo del que pensé. Realmente es trivial, pero encontrar el lugar para poner la configuración fue lo que me tomo mucho tiempo. Nota: Se puede hacer esto un archivo .httpaccess. Sin embargo no logre hacerlo funcionar por eso prefiero dejarlo como un nota (De que en teoría es posible).


    En el archivo de configuración de apache (httpd.conf)

    Buscamos la línea:

    AddType application/x-httpd-php

    Y le agregamos al final .htm y .html

    Quedando algo asi como:

    AddType application/x-httpd-php .htm .html

    Esto es muy útil por razones de seguridad. Escondiendo en que esta programado la aplicación porque en el browser se vera simplemente .html en los scripts que en realidad son php. Pienso que es una excelente practica de configuración del los servidores.

    Cuarto Truco.

    Los virtual host, las configuración https y el /etc/hosts. Estos chicos pueden hacer una verdadera epifanía si no se sabe configurar bien. Hagamos algo básico y general. Los archivos hosts son archivos especializados dentro de los sistemas operativos (/etc/hosts para linux, unix y derivados) -> notese el s al final. Este archivo "simula" la llamada de un dominio remplazando por un ip previamente configurado.

    Ejemplo:
    127.0.0.1 koza.com

    Si en el browser abro la dirección www.koza.com en realidad el archivo hosts se encarga de cargar mi servidor local.

    Quinto Truco.

    Los virtual Host son una noble invención, junto con el archivo host pueden hacer grandes hazanas.
    Daremos por un hecho que existe en el archivo host la configuración anteriormente dada.

    Entonces podemos construir de koza.com un mundo de reglas virtuales de nuestro sitio como:

    
            ServerName cruiser.koza.com
            UseCanonicalName Off
            DocumentRoot /home/sites/koza/htdocs/
    
        SetEnv SITE_LINK_URL http://www.google.com
    
    

    En la configuracón arriba establecida le estamos diciendo al apache (Con ayuda del host file) que la proxima vez que alguien acceda a cruiser.koza.com su configuración personalizada va a usar Document Root en la carpeta /home/sites/koza/htdocs y que va a tener una variable de entorno personalizada llamada SITE_LINK_URL. Podemos hacer uso de esta en Php asi:

    define("SITE_LINK_URL", $_SERVER["SITE_LINK_URL"]);

    lunes, 26 de septiembre de 2011

    Kde - Dolphin - Symbolik Link Gui

    Hoy saque el rato para hacer un par de Desktop entries que me permitirán hacer los symbolic linnk.

    Ya saben el clasico:

    ln -s <Origen> <destino>

    La cuestión es que por razones meramente laborales, últimamente he tenido que ejecutar ese condenado comando ya varias veces. No es difícil simplemente es medio cansado escribir esas enormes direcciones.

    Buscando en el repo y "googleando" tope con tan mala suerte que no encontré ningún GUI. Curiosamente hay un proyecto de symbolic link para "Guindos". Aqui le pueden echar una mirada.

    Bueno entonces, me decidí a hacer mi propia versión del asunto. En vista de que un programita en C++ cumpliría mis expectativas, pensé que no seria adecuado ya que estar buscando dos path con un FileChooser es bastante irritante. Sin embargo era mejor que escribir los path a mano. (Vean kompare como ejemplo)

    Entonces la inspiración me llego con Dolphin, si pudiera usar el menu contextual para generar orígenes y destinos. Hasta el momento no se como hacer plugin para Dolphin (No se si se puede) pero si había usado los desktop entries para expandir las opciones del menú contextual.

    Bueno, entonces manos a la obra.

    Como funciona?

    Desktop entrie es un archivo especial en los escritorios X definido por FreeDesktop. Es un simple archivo de texto que define reglas y la ejecución de comandos.

    Para que funcionen en KDE se puede poner en dos lugares:

    /usr/share/kde4/services/ServiceMenus/

    /home/<User>/.kde/share/kde4/services/

    Y con solo ponerlos ahí basta. Cuando Dolphin refresque estos entries agregara el comportamiento definido en los menus contextuales.

    Yo necesitaba habilitar la opción de origen a cualquier cosa, archivos, carpetas.
    Entonces la definición fue asi:


    [Desktop Entry]
    Type=Service
    X-KDE-ServiceTypes=KonqPopupMenu/Plugin,inode/directory,all/all,all/allfiles
    X-KDE-Submenu=Symbolic Links
    X-KDE-AuthorizeAction=shell_access
    Actions=lnorigin;
    
    [Desktop Action lnorigin]
    Name=Origin
    Icon=/opt/resources/SymboliclinkOrigin.png
    Exec=bash /opt/scripts/services/lnorigin.sh %f
    

    El script simplemente salva %f  en un archvio temporal en home:

    #!/bin/bash
    echo $1 > /home/koza/.lnorigin.txt
    

    El asunto con el Destino fue diferente. El menú contextual de Dolphin solo debía mostrar la opción cuando se estuviera apuntando a una carpeta. Esto se debe a que en la carpeta me va a pedir el nombre (Utilice el comando KDialog). Mi definición y el script que hace el truco por abajo fue así:

    [Desktop Entry]
    Type=Service
    X-KDE-ServiceTypes=KonqPopupMenu/Plugin,inode/directory
    X-KDE-Submenu=Symbolic Links
    X-KDE-AuthorizeAction=shell_access
    Actions=lndesteny;
    
    [Desktop Action lndesteny]
    Name=Destiny
    Icon=/opt/resources/SymboliclinkDesteny.png
    Exec=bash /opt/scripts/services/lndesteny.sh %f
    
    

    #!/bin/bash
    path=$1
    if [ -f /home/koza/.lnorigin.txt ]
    then
        name=$(kdialog --title "Destiny Name" --inputbox "What name do you want?")
        ln -s `cat /home/koza/.lnorigin.txt` $1/$name
    else
        kdialog --error "Destiny is not setted"
    fi
    

    Notas:
    Queda de mas decir que la ubicación de la imagen, la ubicación donde se va a correr el script y otras cosas deben ser ajustados.

    PD: Los archivos desktop entries pueden tener cualquier nombre pero con extensión .desktop.

    Si tienen problemas comenten abajo y si esto es como muy solicitado puedo hacerme un script de instalación.

    Actualización:

    Descubri que la manera mas rapida para refrescar los desktop entries (inclusive imagenes) es atravez del comando siguente:

    #!/bin/bash
    kbuildsycoca4
    

    sábado, 17 de septiembre de 2011

    Un extraño en tierras ajenas. Freedom software day sarapiqui

    En estas fechas se celebra el Freedom Software Day. Como buen Geek, simpatizo con la causa y me di a la tarea de incorporarme a las actividades en las que la Universidad Nacional pensaba desenvolverse. La experiencia de hoy a sido enriquecedora pero algo extraña. Todo empezó cuando la Red costarricense de software libre. Grupo al que formo "parte" estaban solicitando ayuda para hacer estantes y charlas para la cede de Sarapiqui. Me ofrecí para ambas actividades. Mi Stands estaría basada en juegos libres y mi charla en entornos de programación en Linux. Quiero abrir un paréntesis para mencionar que el el año pasado colabore con la frase "voy a ayudar" en lo que me pusieran a hacer. Me lleve una amarga experiencia a la cual no quiero tomar remembranza en este momento. Este año dije "Colaborare pero sera en algo que realmente me motive".

    En vista que llevaría todo el equipo de juegos eso consistía en; el teclado gammer, el joysitick, los parlantes, la compu. Lo único que solicite era el "RAY". Jennifer Vargaz se ofreció en llevarme. (Mil gracias de paso). Dos chicas más serian mis compañeras de viaje. Andrea Torres y Diana Rodríguez. Yo sabía que Andrea Torres si tiene trascendencia en esto del software libre. Anteriormente la había "conocido" en una charla sobre SSH. Algo básica pero interesante.
    Desgraciadamente de las otras dos muchachas no tenía ni idea.

    En un principio ir tan largo con completas desconocidas me aterraba completamente. Incluso la noche anterior, necesite tomarme un te de tilo bien cargado para poder conciliar el sueño. Era algo completamente loco, no sabía que esperar, no tenía amistad con ninguna de ellas. Lo único que tenía era un conjunto de referencias, un par de fotos y actividades en las que habían participado donde la la documentación seguía siendo disponible por medio del Internet.

    El día de la actividad me desperté alrededor de las 5:15am. No quería llegar tarde. Me levante inspirado en preparar todo lo que necesitaba llegar. Cuando mi equipo estaba listo para el viaje, solicite un taxi. Me permitió llegar a la Universidad nacional alrededor de las 6:40am. Tenia suficiente tiempo para esperar con las chicas que viajaría. Ya me pito Jennifer a la distancia. Donde ya pude reconocer a Andrea Torres (Una cara no la olvido nunca). Me dirigí donde ellas, salude, acomode mi equipo y me senté un poco nervioso en el asiento de atrás. Empezamos a hablar un poco, realmente no hable mucho. Me dio la impresión que ellas se conocían de muchos año. Hablaban de actividades, recuentros de la U, actividades de la red, que hacer en sus oficinas. No se tornaron muy interesadas en mi la verdad. Sin embargo el estar callado escuchando con interesantes me sienta muy bien. Desṕues de un viaje relativamente corto. Llegamos al campus de la UNA de sarapiqui.

    Llegando a la UNA fue la primera vez que vi a Gabriela Mejias. La que fue mi contacto directo para llevar acabo la actividad en la Cede. La Universidad de Sarapiqui es muy chiva, tiene paisajes boscosos en sus alrededores. El lugar es como ver Bijagua de Alajuela. Un lugar "Rural" muy agradable, pero nada como mi caliente Guanacaste. (:P). Ya fui a desayunar con las chicas.
    Poco tiempo después era hora de montar el stand de juegos. Me asignaron a Diego. Un estudiante de informática que seria mi mano derecha. Tengo que admitir que el Stand fue todo un éxito. Los asistentes se tornaron muy interesados. Entre los juegos que logre que jugaran estuvo; Openarena, Gltron, Super Tux, Super Tux Car y World. Los involucrados llegaban, reían, se divertían, hablaban un poco conmigo, copiaban los juegos y comentaban. Para mi lo mas sobresaliente fue una chiquita de alredor de unos 7 - 8 años que se acerco. Adrea Torres le cedió el control (Joystick). La niña gozaba con Super Tux. Realmente fue muy chistoso verlo. De repente el padre se acerco y me pregunto sobre que tan difícil era configurar un joystick y hablamos un poco al respecto.

    Después de todo el "despelote" que fue el estante de juegos libres. Me toco la charla de programación. La charla era muy pesada, pero se llevo acabo en el tiempo proviso (1 hora). A todos les dije que los ejemplos que viéramos se los podía copiar una vez finalizada la charla. Los temas que logre abarcar fueron; Librerías, Binarios, g++, Gui, java y php. Fue algo muy relámpago, pero dejaba la idea de como empezar a programar. Lo que mas me dolió fue que pase semanas preparando los ejemplos con comentarios, notas y todo lo necesario. Al final solo uno de todos los 17 asistentes me pidió el correo. OJALA que me solicite el material. (:s)

    Aquí les dejo el material por si quieren ver mi trabajo.

    Por ultimo, después de las fotos, los besos y los abrazos. Me despedí de la cede de Sarapiqui y su gente. Muy agradecido por que todos fueron tan amables. Con una sensación de satisfacción. Diciendo UNA "Gracias por todo lo que me diste". Espero haberte retribuido un poquito el día de hoy.

    Nos emprendimos en nuestro viaje de vuelta. Un poco incomodo por reparaciones en la carretera y la neblina. Cuando al fin llegamos a Heredia. Pasamos a comer a un restaurante, donde tuve la oportunidad de compartir una ultima vez con las chicas. Mis ultimas palabras de esta entraba se las quiero dedicar a ellas. Infinitamente agradecido; por acogerme en el viaje, su amabilidad mostrada, su tiempo y sus buenas intenciones. Considerado como un desconocido lograron hacerme sentir muy cómodo. Se que es esta vida nada sucede como deseábamos, como suponíamos, ni como teníamos previsto. Pero me siento muy afortunado en haberlas conocido hoy. Todas ustedes tienen mis respetos, besos y abrazos. Espero volver a vernos pronto...

    domingo, 11 de septiembre de 2011

    Kubuntu, Php y Mysql

    Me imagino que a muchos les ha pasado el siguente error:

    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld

    Y de verdad que da mucha colera :P. Y si usamos sudo la cosa se pone peor. Lo que da mas chicha es que este error es muy típico para KDE.
    Para ponerlos en contexto resulta que mysql ya viene por defecto en KDE. Lo usa el programita Akonadi. La verdad no voy a hablar mucho sobre el. Simplemente queria aclararlo. Entonces el peor error en KDE si quieres mysql para programar es teclear:

    sudo apt-get install mysql

    Porque entonces la cosa se enreda mas y el resultado sera dos mysql instalados y ninguno operacional. Entonces por favor NO LO HAGAS.

    Lo que puedes hacer es usar la instancia que ya existe de Mysql que Akonadi necesita. Resulta que ya existe un socket por defecto. Es este amigo de aca.

    /home/<USER>/.local/share/akonadi/socket-sabrina/mysql.socket


    Entonces vamos a levantar el servicio de mysql con el siguente comando.

    mysql --socket=/home/koza/.local/share/akonadi/socket-sabrina/mysql.socket

    Nota: Recuerden dejar la terminal abierta, si la cierran despues de unos minutos el servicio bajara.

    Ahora bien. Podemos hacer un script pequeñito para realizar la prueba.

    //No se necesita poner la extencion .socket is se pone los (:) al inicio del path
    $link = mysql_connect(':home/koza/.local/share/akonadi/socket-sabrina/mysql', 'koza', '');
    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }
    echo 'Connected successfully';
    mysql_close($link);
    


    Con eso debería bastar. 

    Pero por si los fallos, acá esta un par de tips que se pueden usar:

    Asegúrese de que Akonadi este funcionando. Puede usar el el programa "Configuracion de Akonadi". Y en la pestana de "Configuracion del servidor" bajar el servicio y volverlo a subir.

    Si es un caso en el que da problemas de permitos. Lo que se puede hacer ir al archivo Httpd.conf del Apache y modificar la linea:

    User nobody por User <USER>

    miércoles, 15 de junio de 2011

    Entrevista a Linux Torvald

    Para mi Linus Torvalds ( El creador de kernel de Linux) es una persona de admirar, todo un Héroe para muchos y Némesis para otros. A mi me gusta mucho la forma de expresión de este tipo, porque en ocasiones es todo un filosofo y en otras es un verdadero animal. :P

    Hoy estaba leyendo una entrevista que realizaron con el. Pueden verla aquí.

    En esta entrada me gustaría comentar un poco sobre dicha entrevista, sobre todo las cosas que más me han llamado la atención.

    Si Linus empezó Linux como un Hobbie, no me puedo imaginar que clase de tipo puede ser. Pero es curioso como el destino mueve los hilos. El nunca pensó que Linux llegara tan largo, ahora es increíble pero hay cientos de usos para Linux.  El mas común y menos conocido... El famoso Android. Pocos saben que Android es Linux pero es súper utilizado por Tabletas y Teléfonos.


    Tampoco logro imaginarme la sensación de Torvalds de saber que Linux ha sido tan difundido, deber ser algo totalmente impresionante. Parece como si fuera el dios del Linux (Vivo). El saber que hay miles de miles de personas alrededor del mundo que aportan horas de trabajo en sus días para mejorar el Kernel, y que eres parte de este hecho histórico, sería para mi suficiente motivación para seguir. Linuz es una leyenda que nunca morirá, ha hecho historia, si Linux dejara de existir y otro nuevo sistema naciera, no debería de hacerlo desde cero. Podría usar a Linux como base.

    No se que tan cierto será, pero me da la impresión de que Linuz cree cada palabra que dice y predica o al menos eso parece. Hace un buen tiempo atrás lo vi en una entrevista donde el entrevistador le preguntaba sobre cuando dinero hubiera ganada si hubiera decido comercializar Linux. El se hecho una sonrisa y dijo "A cada quien que se ha involucrado con Linux le ha tocado su parte". Esto es muy cierto, los programadores y personas que usan Linux de forma empresarial han hecho millones. Los propietarios de los servidores han ahorrado dinero con Linux en actualizaciones, rendimiento y licencias. Los usuarios convencionales como usted y yo, tenemos un sistema operativo completamente funcional gratis, sin muchos problemas. La idea es que cualquier que use Linux simplemente "Le toca su parte". No se si Linus miente, al menos cree su propia mentira. (Pienso yo)

    Quiero abrir un paréntesis para aclarar un par de cosas a personar que no tiene nada que ver con programación. Creo que hay una opinión común entre los profesionales en informática sobre cual es el problema más grande al que se pueden enfrentar. Irónicamente no es nada técnico, el principal reto es la comunicación con el cliente o persona involucrada directamente con el proyecto. Se le suele llamar Placeholder. Curiosamente este mismo problema lo tiene Linus mejorando el Kernel de Linux. Las comunidades de Linux se han vuelto enormes y el gran desafío es tener un norte común. Ese procesos de organización, comunicación y coordinación es lo que el dice "es lo mas complicado grande reto al que Linux se enfrenta".


    Linus habla de Linux como un todo. La gente es muy purista en Llamarlo GNU/Linux pero a Torvalds poco le importa siempre que lo uses. Como el dice, Linux no fue un proyecto de la Free Software Fundation (FSF). Aunque Linux hacen mucha sinergia con los proyectos que de han nacido de este ultimo. Linux como tal es un Núcleo, que poco hace sin los programas de la FSF. Como Linus dice "La mayoría de las distribuciones le dan al sistema su propio nombre: Fedora, SuSE, Ubuntu, Android, Mandriva, la lista sigue. Así que si la FSF quiere llamarlo GNU/Linux, ¿por qué debería preocuparme? No".

    Yo admiro a Free Software Fundation pero tiene un mentalidad he ideologiza muy complicada. La verdad no la entiendo bien y prefiero no tocar el tema. Si quieres un sistema completamente libre, ese es tu problema. A mi me encantan las cosas funcionales  a las que no tengo que gastarles mucho rato. Por ese Ubuntu es un amor, máxime que tiene millones de blog dedicados a hacer turoriales y postiar problemas. Ubuntu usa código no libre para algunas tareas. Ese es el principal pleito de Free Software Fundation. TODO DEBE SER LIBRE. La idea es buena lo curioso que hay gente que no libera el código de su proyectos ni a palos. Este es el caso de Nvidia y sus controladores gráficos. Hace ya rato que Nvidia le da soporte a Linux, pero de forma cerrada. Dice Torvalds que no entiende este tipo de actitudes. No sabe si lo hacen porque les da vergüenza liberar el código que este lleno de errores o simplemente es una estrategia comercial.

    Deje de ultimo el tema de las ideologías. Porque realmente es algo muy interesante. Linus cree que Linux no tiene una única ideología. Esto quiere decir que Linux puede ser adaptado a cualquier filosofía y la gente la adopta a sus razones he intereses. Mi filosofía es "Estoy feliz con Linux (Ubuntu) porque no tengo virus, la compu no se me traba, la mayoría es gratis y hago todo lo que quiero hacer sin problemas". Para otros la ideología es "Es bueno para mi negocio". Para otros es "Soy un rebelde sin causa y me cae mal Windows". Irrelevante de la filosofía que se use del porque usar Linux, La única ideología que a Linus lo enferma es la que excluye a otras. "Mi ideología es la definitiva y correcta". Creo que por ahí Linus y Richard Stallman el hombre grande del movimiento open source, tienen tantas asperezas. Muchos lo critican. Yo simplemente lo admiro, muere con sus ideas y se hunde con ellas si es necesario. Si me gustaría que entre Torvalds y Stallman hubiera una hermandad. Que dejaran de cortarse las cabezas y que dejaran de hacer el teatro de política. Dejaran de usar palabras eléctricas cuando se refieren el uno al otro.

    martes, 3 de mayo de 2011

    Mas Azul y menos Naranja

    Quien no ha usado Ubuntu Linux. Con el poderoso Escritorio Gnome. Como odio esos botones tamaño elefante y su naranja horrendo. Puta, me llevo mal con Gnome hace ya unos años. Y como es Software libre, lo que no te sirve o no te gusta que no estorbe. Entonces pase a KDE. Dios mio al principio fue duro como todo cambio. Pero me he acostumbrado tanto a usarlo que no podría abandonarlo.
    Mi viaje por los escritorios fue amplio. Al inicio use Gnome (Hermosa hasta que conoces KDE), probé XFCE que es el que tiene el segundo lugar en mi corazón, probé E17 y no tengo quejas, probé fluxbox, entre otros escritorios.
    Pero solo hay un problema en el mundo del GTK (librería de Gnome) . Que si corres un programa GTK en KDE notaras que se ve todavía mas horrendo que en el propio GNOME. Y por mas que le hagas que le reduzcan fuentes, cambies estilo de todo. Sera siempre una Cochinada.
    Gracias a dios y después de mucho tiempo. (Créame que lo he intentado durante buen tiempo). Ya hay una forma de ver Gtk como Qt(La librería base de KDE).
    Como:
    Primero vayan aquí:
    http://code.google.com/p/gtk-qt-engine/downloads/list
    Y descarguen el archivo gtk-qt-engine-1.1.tar.bz2
    Antes que se rompan el calabazo viendo como lo compilan le doy los requerimientos.
    Necesitamos:

    CMake 2.4
    Qt 4.3 developement package
    GTK developement package
    GCC
    Bonobo



    Claro si buscan con el synactic encontraran que cada una de las librerías de arriba necesita un montón de cosas. Pero la vida es fácil con synactic. Todo es automático.
    Descomprimen el archivo en cualquier ubicación.
    Acceden a ellas con terminal (Konsole)
    y dan los siguientes comandos.

    cmake .   
     make  
     sudo make install   
    

    Ahora si en Preferencias → Gtk Style → Encontraran una opción de usar style QT. Y magia magia.
    Reinician la Pc y por fin las aplicaciones en GTK corriendo en KDE se verán hermosas (Como si hubieran sido escritas en QT).
    NOTA:
    Esto solo aplica para usuarios de KDE. No me puedo imaginar las consecuencias desastrosas que puede traerle al escritorio GNOME.

    Actualización 
    Con las nuevas versiones de Kubuntu (11.04) ya trae este paquete por defecto. Entonces no es necesario hacer mayor cosa.

    AEM hablemos del arquetipo 11

    Cuando creamos un proyecto con AEM. Siempre es importante saber que arquetipo estamos usando. Pues esto me determinara que source, herramien...