May
30
2009
3

Uso del administrador de archivos “midnight-commander” y “gnome-commander” en linux – Tutorial.
Escrito por NomikOS el 30/May/2009 | 3 comentarios | 217 visitas

Uso del administrador de archivos midnight-commander y “gnome-commander” en linux.


bla bla


gnome-commander durmiendo (View -> Swith to horizontal)

· · ·

midnight-commander listo para el.l combate

Coming up soon!


– desde que instalé un plugin para contar visitas a cada post, me he dado cuenta que este, ha recibido muchas. Lo completaré muy pronto. Puedes marcar esta página en tus bookmarks.


Ya veamos. Lo primero que se me ocurre decir respecto a midnight-commander (mc para los amigos) es que es veloz. Creo que esa es una, tan sólo una de sus buenas características. Con veloz me refiero a que puedes navegar por tu árbol de directorios super rápido. Lo otro sobresaliente es que está pensado para evitar el uso del mouse –aunque tambien responde a él.

Cuando trabajas en un servido remoto, mc te permite tener un manejador de archivos gráfico. Bien , ah?

Algunas caracteríticas:

Incluye un cliente FTP: O sea puedes trabajar con archivos remotos como si fueran locales. Incluso sobre una linea segura: sftp (secure ftp). Puedes desarchivar (si tal palabra existe) tan sólo presionando [Enter] sobre el archivo. No sólo zip, sino casi cualquier tipo de archivador: rar, lzh, tar, etc. Fantástico!

1
mc
Written by NomikOS in: Midnight Commander - mc |
May
29
2009
1

Uso de la linea de comando para MySQL.
Escrito por NomikOS el 29/May/2009 | un comentario | 117 visitas

MySQL database monitor
Creative Commons License photo credit: dmuth

Esto es un tutorial introductorio (bastante bueno me permito decir). Si quieres una excelente lista de consulta rápida de comandos http://www.pantz.org/software/mysql/mysqlcommands.html


MySQL dispone de una interface/shell llamada mysql. Con ella podrás interactuar en forma rápida con tus bases de datos, especialmente si accades a un servidor remoto, como es el caso de servidores web.

Tiene capacidades readline lo que fundamentalmente te permite recorrer el historial de entradas/comandos usando las teclas de cursor (arriba y abajo) y autocompletación usando [TAB].

En adelante suponemos:

  • fanquito: nombre de usuario.
  • mibd: nombre de una base de datos.
  • mipassword: tu password de acceso a MySQL (Esta password no es necesariamente la misma de la de tu cuenta de usuario).
  • Las mayúsculas no son obligatorias aunque son muy usadas para mayor claridad como ya verás.
  • Acceso a la linea de comando

    Simplemente escribe mysql.

    1
    2
    3
    4
    5
    6
    7
    8
    $ mysql [ENTER]
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 22
    Server version: 5.0.75-log Source distribution

    Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

    mysql>

    Asi es, tu prompt es ahora mysql>. Y como muy amigablemente te recibe es con un: Tipée help si necesita ayuda.

    Super valiosa ayuda para usar la linea de comando

    Simplemente escribe help.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    mysql> help

    For information about MySQL products and services, visit:
       http://www.mysql.com/
    For developer information, including the MySQL Reference Manual, visit:
       http://dev.mysql.com/
    To buy MySQL Network Support, training, or other products, visit:
       https://shop.mysql.com/

    List of all MySQL commands:
    Note that all text commands must be first on line and end with ';'
    ?         (\?) Synonym for 'help'.
    clear     (\c) Clear command.
    connect   (\r) Reconnect to the server. Optional arguments are db/host.
    ... (varios comandos) ...

    For server side help, type 'help contents'

    mysql>

    De aquí aprendemos 2 cosas muy importantes:

  • Para ejecutar un comando debes terminar su enunciado con un punto y coma (;) y [ENTER]. Puedes escribir en varias lineas. El shell te responderá en cada nueva linea con el símbolo (->) que significa que aún espera el punto y coma.
  • Y lejos, lo mejor: Te dice que si de verdad quieres ayuda tipées help contents.
  • Simplemente escribe help contents.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    # ayuda en general
    mysql> help contents
    You asked for help about help category: "Contents"
    For more information, type 'help <item>', where <item> is one of the
    following categories:
       Account Management
       Administration
       Data Definition
       Data Manipulation
       Data Types
       Functions
       Functions and Modifiers for Use with GROUP BY
       Geographic Features
       Language Structure
       Storage Engines
       Stored Routines
       Table Maintenance
       Transactions
       Triggers

    # ayuda sobre comandos de adminstración
    mysql> help administration
    You asked for help about help category: "Administration"
    For more information, type 'help <item>', where <item> is one of the
    following topics:
       DESCRIBE
       FLUSH QUERY CACHE
       HELP COMMAND
       HELP STATEMENT

    # ayuda sobre comando DESCRIBE
    mysql> help describe
    Name: 'DESCRIBE'
    Description:
    Syntax:
    {DESCRIBE | DESC} tbl_name [col_name | wild]

    DESCRIBE provides information about the columns in a table. It is a
    shortcut for SHOW COLUMNS FROM. As of MySQL 5.0.1, these statements
    also display information for views. (See [HELP SHOW COLUMNS].)

    URL: http://dev.mysql.com/doc/refman/5.0/en/describe.html

    mysql>

    Creación de una cuenta de usuario para MySQL

    MySQL tiene un subconjunto propio de usuarios y estos deben ser creados explícitamente.

    1
    2
    3
    4
    # sólo en MySQL 5.0.2+
    # para versiones anteriores usa GRANT
    CREATE USER fanquito IDENTIFIED BY 'mipassword';
    Query OK, 0 rows affected (0.01 sec)

    Esto crea una cuenta identificada como fanquito (aqui cuenta y usuario son sinónimos) en localhost, que es el host donde te encuentras ahora mismo, y es lo que la mayor parte de las veces necesitarás. Este nuevo usuario no tiene ningún privilegio, estos se asignan con GRANT. Luego este comando “CREATE USER” puedes servirte para crear una lista de usuarios de los cuales aún no sabes que tareas van a realizar. La forma más realista de crear nuevos usuarios es con GRANT.

    Creación de una cuenta de usuario para MySQL con el comando GRANT

    GRANT permite crear usuarios y asignarle privilegios al mismo tiempo.

    A todo esto los privilegios determinan que operaciones puedes realizar en que bases de datos (y sus tablas). Por ejemplo:

  • SELECT: leer.
  • INSERT: escribir.
  • DELETE: borrar.
  • UPDATE: actualizar.
  • Veamos:

    1
    2
    3
    4
    5
    # crear el usuario "fanquito2" con password "mipassword"
    # que pueda leer y reescribir registros en todas las tablas de midb
    mysql> GRANT SELECT, UPDATE, DELETE ON midb.* TO fanquito2 IDENTIFIED
    -> by 'mipassword';
    Query OK, 0 rows affected (0.01 sec)

    Si el usuario ya existe sólo asigna/reasigna los nuevos privilegios y en este caso no es necesario agregar “IDENTIFIED by ‘mipassword’”.
    Mirando más de cerca el enunciado. “ON midb.*” determina donde será efectivos los privilegios.

    Usa:

  • *.* para todas las bases de datos.
  • midb.mitabla para especificar sólo cierta tabla.
  • Si un usuario ha metido la pata, como por ejemplo, borrando todos los registros de una tabla de acceso colectivo (shú) le puedes dar una buena patada así:

    1
    2
    3
    4
    # revocar todos los privilegios en toda la base de datos
    # para el usuario fanquito2
    mysql> REVOKE * ON rac.* FROM fanquito2;
    Query OK, 0 rows affected (0.01 sec)

    Si sólo quieres quitarle la posibilidad de seguir cambiando el estado de la base de datos:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # averiguar que privilegios tiene el manos de hacha
    mysql> SHOW GRANTS FOR fanquito2;
    +----------------------------------------------------------------------+
    | Grants for fanquito2@%                                               |
    +----------------------------------------------------------------------+
    | GRANT USAGE ON *.* TO 'fanquito2'@'%' IDENTIFIED BY PASSWORD '*CEE8' |
    | GRANT SELECT, UPDATE, DELETE ON `midb`.* TO 'fanquito2'@'%'          |
    +----------------------------------------------------------------------+
    3 rows in set (0.00 sec)

    # revocar privilegios de escritura
    # para el usuario fanquito2
    mysql> REVOKE UPDATE, DELETE ON rac.* FROM fanquito2;
    Query OK, 0 rows affected (0.00 sec)

    Muy bien. Con eso debiera dejar de dar problemas el susodicho. Ahora si que si se trataba de la tabla con los datos de lo me debes:

    1
    2
    3
    # borrar cuenta/usuario fanquito2
    mysql> DROP USER fanquito2;
    Query OK, 0 rows affected (0.01 sec)

    Datos comunes en scripts PHP referentes a bases de datos

    El script necesita saber tus datos de usuario en la base de datos para poder acceder en tu nombre. Generalmente se definen en una manera parecida a esta:

    1
    2
    3
    4
    5
    6
    7
    8
    define('DB_TYPE', 'mysql');
    define('DB_NAME', 'midb');
    # en el mismo servidor
    define('DB_HOST', 'localhost');
    # en la base de datos sudb un servidor remoto
    define('DB_HOST', 'sudb.servidorremoto.com');
    define('DB_USER', 'fanquito');
    define('DB_PASS', 'mipassword');

    La palabra reservada “define” es propia de PHP y asigna contantes. Estas a diferencia de las variables son superglobales o sea pueden ser accedidas desde cualquier función/clase (y no pueden ser redefinidas posteriormente).

    Importación y exportación de tablas y bases de datos

    Para empezar (que ingenuo fuí), una ventaja insuperable y que yo comúnmente aprovecho, por sobre una interface web como phpmyadmin, es la velocidad con que puedes importar y exportar tablas y bases de datos enteras.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # importar archivo sql
    # no importa la extension sql. sólo debe ser un archivo de texto
    # con instrucciones entendibles por MySQL
    mysql -uroot -pmipassword mibd < tubd.sql

    # exportar base de datos entera a archivo sql
    # sabiamente agregamos .sql pero no es necesario
    mysqldump -u root -pmipassword mibd > midb.sql

    # exportar sólo una tabla
    mysqldump -uroot -p mibd mitabla> mitabla.sql

    Fíjate que en el ultimo comando no escribimos la password, sólo “-p”. Esto es muy bueno si quieres mantener oculta tu password, tanto de ojos sobre tu hombro (como cuando aparecen sólo asteriscos en una página web) como de los logs del servidor.

    1
    2
    3
    # usando la opción -p podrás ingresar tu password en una manera segura
    $ mysqldump -uroot -p mibd mitabla> mitabla.sql
    Enter password:

    Personalmente creo que en un ambiente distendido de trabajo como por ejemplo, el manejo normal de tu blog, es lícito escribir tu password en la linea de comando para posteriormente usar history y ejecutar comandos rápidamente. Depende de tí.

    Comandos muy usados para consultar tus tablas

    Vuelvo a decir que esta es la manera ideal de trabajar si quieres terminar antes de las 5 de la tarde para alcanzar a tomarte una cerveza antes de que llegue la noche.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    # mostrar todas las bases de datos
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | mibd               |
    +--------------------+
    4 rows in set (0.00 sec)

    # trabajar con una en particular
    mysql> use mibd;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A

    Database changed

    # mostrar sus tablas
    mysql> show tables;
    +---------------------------------------------+
    | Tables_in_rac                               |
    +---------------------------------------------+
    | data_control                        |
    | data_record1                        |
    | data_record2                        |
    | data_source                         |
    | data_status_autotrader_control      |
    | data_status_ebay_control            |
    | data_status_exchangeandmart_control |
    | data_status_fish4_control           |
    +---------------------------------------------+
    8 rows in set (0.00 sec)

    # mostrar estructura de una tabla en particular
    mysql> describe data_control;
    +--------------+-------------+------+-----+---------+----------------+
    | Field        | Type        | Null | Key | Default | Extra          |
    +--------------+-------------+------+-----+---------+----------------+
    | id           | int(11)     | NO   | PRI | NULL    | auto_increment |
    | shedule_on   | tinyint(1)  | NO   |     | 0       |                |
    | admin        | varchar(20) | NO   |     |         |                |
    | password     | varchar(32) | NO   |     |         |                |
    | data         | tinyint(1)  | NO   |     | 1       |                |
    +--------------+-------------+------+-----+---------+----------------+
    5 rows in set (0.02 sec)

    # en una tabla de autos (170000 aprox.) con varias
    # características (columnas)
    # quiero saber cuantos hay de cada uno (columna marca)
    mysql> select distinct(marca),count(id) as c from data_record1 group by
    -> marca order by c desc;
    +---------------+-------+
    | marca         | c     |
    +---------------+-------+
    | VAUXHALL      | 32514 |
    | RENAULT       | 30945 |
    | PEUGEOT       | 29008 |
    | MERCEDES-BENZ | 22985 |
    | CITROEN       | 21015 |
    | TOYOTA        | 17921 |
    | FIAT          | 16676 |
    ... etc ...
    +---------------+-------+
    100 rows in set (4.39 sec)

    # borrar todos los que no indican año
    mysql> delete from data_record1 where year='';
    Query OK, 0 rows affected (0.11 sec)

    Definir password de root

    Aclaremos que este root se refiere al usuario root del conjunto de usuarios de MySQL y no del sistema operativo. Son distintos. Cuando se instala MySQL viene el usuario root predefinido y sin password.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # definir una password para root
    # primero seleccionamos la bases de datos "mysql"
    # esta es parte de MySQL y siempre existe
    mysql> USE mysql;

    mysql> UPDATE user SET password=PASSWORD("mipassword") WHERE user="root";

    # recargar cache interno de MySQL
    mysql> FLUSH PRIVILEGES;

    Recuperar password de root

    Sin comentarios.
    Para esto debes ser root en el sistema operativo de tal manera que puedas reiniciar el demonio mysqld.

    Te daré los pasos calcados. Haz lo mismo que yo nena.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    mysql> cabeza de pollo de nuevo olvidaste tu password >:(

    # asumir privilegios de root
    su[ENTER]
    password:

    # parar mysld
    $ service stop mysqld
    Stopping the mysqld service

    # iniciar mysqld sin cargar tabla de privilegios
    $ mysqld_safe --skip-grant-tables &
    Starting mysqld daemon with databases from /var/lib/mysql

    $ mysql -uroot
    ERROR 2002 (HY000): Can't connect to local MySQL server through
    socket '
    /var/run/mysql/mysql.sock' (2)

    # si, no es na'
    así
    # dijo clarito: Starting mysqld daemon with databases from /var/lib/mysql

    $ cd /var/lib/mysql/
    $ mysql -uroot
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 1
    Server version: 5.0.75-log Source distribution

    Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

    # reasignar password para root
    mysql> UPDATE user SET password=PASSWORD("mipassword") WHERE user="root";
    Query OK, 3 rows affected (0.01 sec)
    Rows matched: 3  Changed: 3  Warnings: 0

    # abandonar la linea de comando
    mysql> exit

    # reiniciar mysqld
    [17:47:40 root@zenwalk]$ service restart mysqld
    Restarting the mysqld service

    Muy bien, me he alargado bastante en esto que sólo iba a ser una entrentención mañanera antes de trabajar de veras. Así que ponte con unos comentarios tú también, vale, colega?

    Written by NomikOS in: MySQL-DB |
    May
    18
    2009
    0

    Encontrar URL de radios dentro de páginas web usando wget y less.
    Escrito por NomikOS el 18/May/2009 | 225 visitas

    music@work
    Creative Commons License photo credit: meeg-el

    Generalmente las radios online dan un pequeño archivo que puedes bajar/abrir directamente con tu reproductor de música. Y así puedes guardarlo y ejecutarlo cada vez que quieras sin tener que visitar la página cada vez.

    Eso es lo ideal. Pero también muchas buenas páginas web de radios tienen el reproductor incrustado. Eso no es ideal y lo vamos a arreglar altiro.

    Nota para los vapuleados camaradas usuarios de MS-Windows:
    Antes de seguir te digo que esto también lo puedes hacer en Windows mirando el código fuente (hay una opción para esto en el menú ver de Internet Explorer) y reingresando direcciones de frames, si es necesario, al mismo browser hasta encontrar el URL de la radio.

    Nos abocaremos a esta tarea usando los comandos wget y less, para los cuales este post es sólo una introducción, ya profundizaremos más en estas herramientas super cojonudas: (more…)

    Written by NomikOS in: Linux,Tips y trucos cortos |
    May
    16
    2009
    0

    Autocompletación en vim.
    Escrito por NomikOS el 16/May/2009 | 119 visitas

    Cuando programas en vim puedes usar C-x-o para obtener una lista de las posibles funciones, estructuras o clases que deseas escribir basada en sus primeras letras.

    Por ejemplo si estás escribiendo en PHP: in_ [C-x-o] completará a in_array()
    (more…)

    Written by NomikOS in: Linux,PHP | Tags:
    May
    16
    2009
    0

    Función PHP para transformar fechas formateadas a unixtime.
    Escrito por NomikOS el 16/May/2009 | 125 visitas

    Función para transformar fechas formateadas a unixtime. En este historico momento son las:

    1
    2
    3
    4
    <?php
    echo time();
    # 1242485685
    ?>

    Unixtime es el tiempo en segundos desde el 1/1/1970 y es muy útil para almacenar y procesar fechas.
    Por lo mismo no es adecuado para fechas anteriores. Por ejemplo para fechas de nacimiento. (more…)

    Written by NomikOS in: PHP | Tags: ,

    motor: WordPress. tema: TheBuckmaker modificado por NomikOS.