Todas las entradas de Luis Miguel Royo Pérez

HispaniaGIS dataset v1.0-English

Hi everyone, I would like to share with all of you what I’ve called HispaniaGIS dataset. This it’s only a gathering of differents types of data spread around the web and suited to roman Hispania. For this I had to take sections of these data and adjust to the needs of the project. This is only the final work of another project that I made some months ago, an Atlas about Hispania, but now I’ve decided modify and add some info, suit it and share with the community. The list of sources used can be found below.

Now I leave with a video where I explain the details of the project. I hope you found useful and interesting.

Thanks for coming and share!

HispaniaGIS Dataset v.1.0

Conjunto de datos  geográficos de la Hispania romana preparados para QGIS.

HispaniaGIS Dataset v.1.0-Español

Hola a todos, quería compartir con vosotros lo que he decidido llamar HispaniaGIS dataset. Ésto no es más que una recopilación de diferentes conjuntos de datos dispersos por la red y ajustados a Hispania. Para ello he tenido que tomar secciones de estos datos y acoplarlo a las necesidades del proyecto. En principio ésto es el resultado del trabajo que realicé hace unos meses, un atlas de Hispania, sólo que ahora he decidido modificarlo, adjuntarle algo más de información, y acomodar las capas a las necesidades del proyecto y compartirlo con la comunidad. La relación de fuentes que he utilizado se puede consultar a continuación.

A continuación os dejo un vídeo explicativo con los pormenores del proyecto. Espero que os resulte de interés y utilidad.

¡Gracias por entrar y compartir!

HispaniaGIS Dataset v.1.0

Conjunto de datos  geográficos de la Hispania romana preparados para QGIS.

Encontrar el piso ideal con PostGIS.

Hola a todos, en esta ocasión he decidido cambiar un poco la temática del blog. Ahora, vamos a tratar de localizar el piso ideal para un nuevo inquilino en la ciudad de Valencia. Éste nuevo habitante es un estudiante que viene atraído por el clima y por el buen ambiente estudiantil que se respira en la ciudad, no obstante, no está dispuesto a renunciar al aprendizaje, por ello quiere encontrar un piso que se acople a sus necesidades. Para ello ha puesto una serie de condiciones:

Sigue leyendo Encontrar el piso ideal con PostGIS.

GRUB

GNU GRUB (GNU GRand Unified Bootloader) es un gestor de arranque múltiple, desarrollado por el proyecto GNU que se usa comúnmente para iniciar uno, dos o más sistemas operativos instalados en un mismo equipo. Se usa principalmente en sistemas operativos GNU/Linux.

GRUB fue inicialmente diseñado e implementado por el programador Erich Stefan Boleyn como parte del trabajo en el arranque del sistema operativo GNU Hurd desarrollado por la Free Software Foundation. En 1999, Gordon Matzigkeit y Yoshinori Okuji convirtieron a GRUB en un paquete de software oficial del Proyecto GNU y abrieron el desarrollo del mismo al público.

Desarrollo

El nombre de la versión más utilizada de GRUB es denominada GRUB Legacy. Esta versión es sobre la cual se solucionan los errores, pero no se añaden nuevas características. Los desarrolladores de GRUB han cambiado su enfoque hacia GRUB 2, una completa reescritura del gestor original, cuyos objetivos incluyen la puesta a un GNU GRUB más limpia, robusta, segura y potente.

El desarrollo de la versión más moderna, GRUB 2, se inició con el nombre de PUPA, hoy abandonado. El proyecto PUPA fue apoyado por la organización Information-technology Promotion Agency (IPA) en Japón. PUPA se integró en el desarrollo de GRUB 2 alrededor del 2002, cuando la versión 0.9x de GRUB fue renombrada a GRUB Legacy. Desde febrero del año 2008, GRUB 2 todavía sigue en desarrollo, aunque está siendo usado en las más recientes versiones de distribuciones de GNU/Linux.

Algunos de los objetivos del proyecto incluyen el soporte de plataformas no-x86, la internacionalización y localización, caracteres no ASCII, módulos dinámicos, gestión de memoria, un mini-lenguaje de escritura de guiones, la migración de plataforma específica (x86) de código a la plataforma de módulos específicos y un marco orientado a objetos.

Descripción

Técnicamente, un gestor de arranque múltiple es aquel que puede cargar cualquier archivo ejecutable y que contiene un archivo de cabecera en los primeros 8 KB del archivo. Tal cabecera consiste en 32 bits de un número “mágico”, 32 de indicadores (flags), otros 32 de un número “mágico”, seguidos de información sobre la imagen ejecutable.

Una de las características más interesantes de este tipo de gestor es que no es necesario instalar una partición nueva o un núcleo nuevo, pudiendo cambiar todos los parámetros en el arranque mediante el sistema de órdenes de consola de GRUB.

Mientras los gestores de arranque convencionales tienen una tabla de bloques en el disco duro, GRUB es capaz de examinar el sistema de archivos. Actualmente, soporta los siguientes sistemas de archivos:

  • ext2/ext3/ext4 (Grub2) usado por los sistemas UNIX (incluyendo GNU/Linux).
  • ReiserFS.
  • XFS de SGI (aunque puede provocar problemas).
  • UFS y UFS2 de FreeBSD u otros sistemas BSD.
  • VFAT, como FAT16 y FAT32 usados por Windows 9.x.
  • NTFS usado por los sistemas Windows NT (a partir de Windows NT v.3.51).
  • JFS de IBM.
  • HFS de Apple Inc.
  • ZFS de Opensolaris/Solaris.
  • Btrfs Sistema de archivos Copy-on-write como futuro reemplazo de ext4.
  • ISO 9660 Sistema de archivos de imágenes en disco CD-ROM o DVD-ROM.

Otros ejemplos de cargadores multiarranque son LILO y Syslinux.

GRUB soporta 14 colores de fondo, siendo el negro el color por defecto. Algunas distribuciones de GNU/Linux que incluyen GRUB frecuentemente utilizan fondos personalizados con el logotipo de dicha distribución. Los usuarios de GRUB pueden también hacer y colocar sus propios fondos.

Proceso de inicio de GRUB
  1. El BIOS busca un dispositivo de inicio (como el disco duro) y de ahí pasa el control al primer sector físico del dispositivo conocido como master boot record, son los primeros 512 bytes (primer sector) del disco duro y que forman la fase 1 de GRUB.
  2. La fase 1 de GRUB carga la siguiente fase de GRUB, ubicada físicamente en cualquier parte del disco duro. La fase 1 puede cargar ya sea la fase 1.5 o, directamente, la 2.
  3. La fase 1.5 de GRUB, ubicada en los siguientes 30 kilobytes del disco duro, carga la fase 2. (En GRUB 2, esta fase ha dejado de existir).
  4. La fase 2 de GRUB (cargada por las fases 1 ó 1.5) recibe el control, y presenta al usuario el menú de inicio.
  5. GRUB carga el kernel seleccionado por el usuario, en la memoria y le pasa el control.

 

USO DE CONSOLA. LOGIN PROMPT Y SHELL

Una vez ya sabemos cómo se estructuran los ficheros en Linux podemos empezar a usar la consola en Linux, con el fin de movernos por la estructura y dar órdenes al sistema, para ello debemos tener claros tres conceptos, el login, el prompt y la shell.

consola

Login

El login y el password identifican nuestra cuenta. Nada más arrancar Linux, lo primero que nos pedirá será que introduzcamos nuestro nombre de usuario y la contraseña.

login

Prompt

El prompt es una línea de entrada de órdenes. Consiste en una serie de caracteres que nos muestran una información, generalmente acerca del cual es nuestra posición en el árbol de directorios. Seguido de esta línea, es donde podemos comenzar a introducir órdenes y parámetros.

La órdenes se escriben en el prompt y se introducen con la tecla intro. Cabe volver a destacar que Linux es un sistema Case sensitive y asume que nosotros sabemos qué es lo que estamos introduciendo, de manera que si no obtenemos el resultado deseado es porque algo hemos hecho mal.

En sistemas GNU/Linux, el prompt tiene el aspecto de:

  • usuario@máquina:~$ (Cuando el prompt acaba con “$” significa que estamos actuando como usuario sin privilegios).

  • root@máquina:~# (Cuando el prompt acaba con “#” significa que estamos actuando como superusuario con todos los privilegios).

Como podemos comprobar el prompt está compuesto por varias partes, vamos a explicar qué significa cada parte:

  • El nombre que aparece antes de la “@” hace referencia al nombre de usuario bajo el que estamos actuando.

    luismi@luismi-VirtualBox:~$

  • Luego, la parte posterior a la “@” hace referencia al nombre d ella máquina con la que estamos trabajando.

    luismi@luismi-VirtualBox:~$

  • Por último lugar tenemos el símbolo “~”. Éste significa el directorio raíz en donde estamos ubicados. Si estamos actuando como usuarios normales sin privilegios, el directorio raíz será /home. Sin embargo, Linux no nos lo mostrará a menos que se lo pidamos expresamente.

    luismi@luismi-VirtualBox:~$

Shell

El Shell es aquel programa que provee una interfaz de usuario para acceder a los servicios del sistema operativo. Esta puede ser gráfico o de texto simple, dependiendo del tipo de interfaz que empleen. Los shells están diseñados para facilitar la forma en que se invocan o ejecutan los distintos programas disponibles en el computador.

En el caso de Kubuntu, la shell que viene instalada por defecto es bash, aunque no es el único software que hay para esto. La más común es sh (llamada “Bourne shell“), csh (“C Shell“), Tcsh (“Tenex C shell“), ksh (“Korn shell“) y zsh (“Zero shell“). Generalmente, sus nombres coinciden con el nombre del ejecutable.

Gestión de ficheros y directorios

ls

Viene de list.

$ ls

Proporciona en pantalla un listado que nos muestra todos los archivos contenidos en el directorio en el que estemos. Algunas versiones o modos de conexión a Linux nos mostrarán esta información en distintos colores. Por defecto las listas vienen en orden alfabético (mayúsculas y números primero). Si obtenemos una lista que exceda de la pantalla, podemos usar Shift+RePag y Shift+AvPag para movernos por ella. Si lo usamos con la opción -l obtenemos mas información acerca de los ficheros, y con la opción -a se mostrarán los ficheros ocultos. Con man ls obtendremos una lista completa de opciones.

cd

Viene de change directory.

$ cd nombre__del_directorio

Es obvio ver que esta orden nos permitirá cambiar de directorio. Para ir al directorio padre, es decir, el que aloja al directorio actual, tecleamos:

$ cd ..

Es importante dejar el espacio entre la orden y el parámetro del nombre del fichero (en este

caso ..).

Ahora que podemos movernos por la estructura de directorios de todo el disco duro, es hora de aprender algunos conceptos especiales acerca de los directorios. Ya hemos visto que el carácter “~” era el carácter que nos indicaba que nos encontramos en nuestro directorio raíz o home. Usándolo del siguiente modo:

$ cd ~

Da igual en qué directorio nos encontremos, seremos trasladados a nuestro directorio home. Otra forma de hacer esto es usando simplemente la orden sin ningún modificador.

pwd

Viene de Print Working Directory.

$ pwd

Esta orden nos indica la ruta o path del directorio en el que nos encontramos. La utilidad radica en que en ocasiones no observamos toda la ruta actual.

mkdir

Viene de make directory.

$ mkdir nombre_del__directorio

Hemos creado un directorio. Podemos entrar y crear otro directorio y obtener un árbol, o llenarlo de ficheros.

Para crear un directorio directamente dentro de otro que todavía no existe en uno solo tenemos la opción -p que crea directorios en cadena.

$ mkdir -p musica/bandas_sonoras/closer creará el directorio musica dentro del actual, y el directorio bandas_sonoras dentro de musica y el directorio closer dentro bandas_sonoras.

rm

Viene de Remove.

$ rm nombre_del_fichero

Este comando elimina ficheros.

También se puede usar para eliminar directorios y todo lo que contengan con el parámetro -r. Con el parámetro -f forzamos que no pregunte antes de borrar.

Ejemplo:

$ rm -rf nombre_de_fichero

MUCHO OJO con:

$rm ~rf / o $rm ~rf

La aplicación de este comando concreto, sin especificar fichero y con los modificadores -r y -f borrará todo lo que tenga el sistema. Es decir, nos lo cargamos. Ejemplo.

rmdir

Viene de Remove Directory.

$ rmdir nombre_del_directorio

Este comando se encarga de borrar directorios. Sólo puede borrar directorios que estén vacíos. El sistema nos preguntará si estamos seguros de querer borrar ese directorio o nos avisará si no podemos borrarlo porque no está vacío. Para borrar los directorios que contenga podemos escribir su ruta y referirnos a todos ellos mediante el comodín * que sustituya el nombre de todos:

$ rmdir nombre_del_directorio/*

file

$ file nombre_de_fichero

Muestra el tipo de fichero.

mv

Viene de Move.

$ mv ruta_origen ruta__destino

Este comando moverá un fichero desde el lugar que indiquemos como origen hasta el lugar que indiquemos como destino. Si no indicamos ruta de origen, se supondrá que el archivo a mover se encuentra en el directorio en el que estamos. En cuanto al directorio de salida, si no indicamos nada dejará el fichero donde está, sin embargo, si cambiásemos el nombre de destino del fichero, lo renombraría simplemente. (Es una buena manera de renombrar archivos).

cp

Viene de Copy.

$ cp ruta_origen ruta_destino

La orden cp mantiene el origen en su lugar mientras que la orden mv elimina el archivo origen.

du

Se usa para saber el tamaño de los directorios/ficheros.

$ du -sh *

5,7M lawn5z2g.pdf

Con el modificador -s lo que hacemos que excluya los subdirectorios, y con el modificador -h le decimos que nos imprima el tamaño del archivo en un formato que el ser humano pueda entender. Además con el * le estamos diciendo que liste todos los ficheros contenidos.

ln

Utilizamos este comando para crear enlaces duros y simbólicos a algún fichero.

$ ln nombre_del_fichero Nombre_del_enlace (El nombre del enlace puede estar inserto dentro de una ruta concreta, p.e. /home/usuario/Nombre_del_enlace).

Los enlaces ofrecen la posibilidad de dar a un único fichero múltiples nombres. Estos ficheros van a ser identificados mediante el sistema operativo por su numero de inodo, el cual se genera de forma semialeatoria. Solo para ficheros y sólo en particiones Linux.

Un inodo es un enlace que resulta el único identificador del fichero para el sistema de ficheros. Un directorio, por tanto, será una lista de números de inodo con sus correspondientes nombres de fichero. Cada nombre de fichero en un directorio es un enlace a un inodo particular.

  • Enlaces duros: Estos enlaces se denominan enlaces duros (hard links) porque directamente crean el enlace al inodo1. También hay que tener en cuenta que solamente podremos crear enlaces duros entre ficheros del mismo sistema de ficheros; los enlaces simbólicos no tendrán este tipo de restricciones. Recordad que podíamos ver el número de enlaces duros que tenía un archivo usando el comando ls y el modificador -l. (Es la segunda columna :D)

  • Enlaces simbólicos: permite dar a un fichero el nombre de otro, pero no enlaza el fichero con un inodo, es decir, en realidad lo que hacemos es enlazar directamente al nombre del fichero. Esto podría parecerse bastante a lo que Windows nos tiene acostumbrados.

    Con la orden ln -s creamos un enlace simbólico a un fichero. Por ejemplo:

    $ ln -s archivo archivo2.

    Hay que tener en cuenta que el nombre del enlace simbólico no soporta rutas completas, por lo que para crearlo, será imprescindible situarse dentro del directorio en el que queramos que quede colocado dicho enlace.

chmod

Viene de change mode. Cambia los permisos de los archivos.

$ chmod 754 archivo1

$ chmod u+x archivo2

$ chmod o-w archivo3

En el primer ejemplo, como recordaréis por la 2ª parte del curso, estamos dando permisos al archivo1 de:

  • Total libertad de ejecución, lectura y escritura al dueño del archivo.

  • Permisos de lectura y ejecución al grupo al que pertenece el archivo.

  • Permiso de lectura al resto de usuarios que NO están en el grupo.

En el segundo ejemplo, vemos una forma diferente de otorgar permisos, ya que podemos otorgar permisos de forma más sencilla que con la codificación octal que hemos visto anteriormente. Podemos otorgar permisos al dueño, al grupo, a otros usuarios incluso a todos a la vez con los modificadores siguientes:

u – dueño: dueño del archivo o directorio

g – grupo: grupo al que pertenece el archivo

o – otros: todos los demás usuarios que no son el dueño ni del grupo

a – todos: incluye al dueño, al grupo y a otros

Luego, con los modificadores siguientes podemos otorgar o quitar permisos a cada uno de los actores que hemos mencionado:

  • r: permisos de lectura.

  • w: permisos de escritura.

  • x: permisos de ejecución.

Así pues en el ejemplo 2, vemos que se le han otorgado permisos de ejecución al dueño del archivo en cuestión. Así como en el ejemplo 3 hemos quitado permisos de escritura al resto de usuarios. Como habréis supuesto, para otorgar permisos usamos el símbolo de adición “+” y para quitarlos o revocarlos usamos el símbolo se sustracción “-”.

chown

Viene de “change owner”. Cambia el propietario del archivo.

# chown kuasar /home/kuasar/documento1.txt

Notar que en vez del símbolo del dólar “$”, hemos puesto la almohadilla “#” indicando así que sólo podemos cambiar este aspecto siendo root/superusuario. La nomenclatura de este es la siguiente:

  • # chown kuasar /home/kuasar/documento1.txt (en negrita nombre del usuario nuevo)

  • # chown kuasar /home/kuasar/documento1.txt (en negrita la ruta y el nombre del archivo a cambiar los permisos)

Si en vez de especificar un archivo en concreto, especificáramos tan sólo un directorio más el modificador -R, lo que haríamos es cambiar el propietario a todos los archivos y subdirectorios que se hallan en ese directorio.

# chown kuasar -R /home/kuasar/

chgrp

Viene de change group. Cambia el grupo del archivo.

# chgrp kuasar /home/kuasar/documento1.txt

Como podéis observar la nomenclatura es la misma que para chown, así que no vamos a incidir mas en ella.

Gestión de usuarios

useradd

Añade nuevo usuario al sistema Linux, con el nombre de usuario especificado.

#useradd inisig

Podemos añadir modificadores que se pondrán delante del nombre del nuevo usuario, por ejemplo:

#useradd -p 12345 inisig

En este ejemplo hemos especificado la contraseña del usuario inisig como 12345.

userdel

Lo usamos para borrar usuarios.

#userdel inisig

usermod

Nos permite modificar aspectos de las cuentas de los usuarios del sistema, como su home, poner tiempos de expiración a las cuentas, entre otras. Este comando no se puede usar si no es con modificadores, ya que cuando modificamos un usuario lo hacemos en alguno de sus aspectos. Veamos algún ejemplo:

#usermod -p 1234567 -l pepito inisig

En este caso lo que hemos hecho ha sido modificar la contraseña con el modificador -p a 1234567 y cambiar el nombre del usuario por pepito. Notad que el nombre del usuario al que estamos modificando se coloca al final.

passwd

Lo usamos para asignar o cambiar la contraseña de un usuario concreto.

#passwd inisig

groups

Este comando se usa para mostrar los grupos a los que pertenece el usuario en cuestión.

$groups inisig

Fijaos que ahora en vez del símbolo de almohadilla #, hemos usado el de dólar $, puesto que esta orden se puede ejecutar siendo usuario sin privilegios.

gpasswd

Este comando sirve para administrar grupos.

$gpasswd -a inisig sambashare

Con este comando lo que hemos hecho es añadir el usuario inisig al grupo sambashare, gracias al modificador -a.

Administración del Sistema

sudo

Es el acrónimo de “Super User DO”. Nos va a servir para ejecutar comandos que solamente pueda ejecutar un superusuario/root mientras estamos logueados como usuarios sin privilegios. Por ello lo usaremos cuando en el prompt veamos el símbolo del dólar “$”.

$sudo usermod -p 1234567 -l pepito inisig

Notad que es el mismo ejemplo que el comando usermod, sin embargo estamos logueados como usurarios sin privilegios, y podemos, gracias a sudo, ejecutar esta modificación sin necesidad de entrar como root.

top

Muestra una lista de los procesos en uso del servidor para conocer el uso de CPU, Memoria, PID del proceso, etc.

$top

kill

Con este comando podemos eliminar un proceso activo. Podemos a su vez mandar señales distintas en función de nuestras necesidades, estas distintas señales vienen dadas por los modificadores, los cuales en esta ocasión serán números.

$kill -9 2234

En el ejemplo le estamos diciendo al Sistema Operativo que queremos matar el proceso que tiene el PID=2234. ¿Cómo averiguamos el Identificador de Proceso? Con el comando top que hemos visto previo a este. El modificador -9 le dice al proceso que ha de acabar si o si.

|

Este símbolo “|” se le conoce como tubería, “pipe” en inglés, y nos va a servir para concatenar órdenes/comandos. Por ejemplo, si quisiéramos terminar un proceso que se ha quedado colgado e iniciarlo después, escribimos lo siguiente:

$kill -9 3863|bluefish

Como podéis observar hemos matado el proceso que tenía de ID 3863 y acto seguido hemos invocado al software que queríamos “bluefish”. Todo gracias a las tuberías. Bien usada, esta herramienta puede ser muy poderosa, ya que podemos concatenar muchos comandos a la vez, no solamente dos. (Recordad este símbolo “|” se pone apretando “Alt Gr+1”).

Compresores

tar

Empaquetar

$tar cvf archivo.tar /archivo/mayo/*

Desempaquetar:

$tar xvf archivo.tar

Ver el contenido (sin extraer)

$tar tvf archivo.tar

gzip

Comprimir, el archivo lo comprime y lo renombra como “archivo.gz”

$gzip archivo

Descomprimir, el archivo lo descomprime y lo deja como “archivo”

$gzip -d archivo.gz

Nota: gzip solo comprime archivos, no directorios

rar

Comprimir:

$rar -a archivo.rar /mayo/archivos

Descomprimir:

$rar -x archivo.rar

Ver contenido:

$rar -v archivo.rar

$rar -l archivo.rar

zip

Comprimir:

$zip archivo.zip /mayo/archivos

Descomprimir:

unzip archivo.zip

Ver contenido:

unzip -v archivo.zip