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

domingo, 23 de agosto de 2015

Instalar SWI-Prolog en Linux

Hoy les comparto un mini tutorial sobre como instalar SWI-Prolog en Linux.

Pero antes que comenzar. ¿Qué es SWI-Prolog?
SWI-Prolog es una implementación en código abierto del lenguaje de programación Prolog, comúnmente utilizado para la enseñanza y aplicaciones web semánticas.

Sabiendo eso, comencemos.

Abrimos nuestra terminal y escribimos el siguiente comando para instalar software-properties-common ya que lo requiere SWI-Prolog:
sudo apt-get install software-properties-common
Una vez hecho esto, generamos un repositorio con:
sudo apt-add-repository ppa:swi-prolog/stable
Nos pedira que oprimamos la tecla "Enter" para continuar.

Ya que se genero el repositorio lo siguiente es actualizar el sistema para que se considere el cambio en el repositorio que generamos:
sudo apt-get update
Actualizar el sistema puede tomar un tiempo.

Y por ultimo instalamos SWI-Prolog con el siguiente comando:
sudo apt-get install swi-prolog
Nos pedira seleccionar la tecla "Enter" para continuar la instalación.

Y con esto, SWI-Prolog estara listo para utilizarse, podemos comprobar si se instalo correctamente con el siguiente comando:
swipl --version
Este comando nos mostrara la versión de nuestro SWI-Prolog.

Para ejecutar SWI-Prolog basta con escribir en nuestra terminal:
swipl
Para utilizarlo de manera sencilla, recomiendo generar nuestro archivo de Prolog (.pl), con cualquier editor de texto y guardarlo con la extensión .pl

Una ves que contemos con nuestro archivo .pl basta con acceder en la terminar a la ubicación de nuestro archivo .pl y ejecutar el siguiente comando:
swipl -f archivo.pl
Y solo sustituimos la palabra "archivo" por el nombre de nuestro archivo y con esto ya podemos hacer consultas y probar nuestro programa.

Espero y este mini tutorial les sea de mucha utilidad para instalar y utilizar SWI-Prolog.

Cualquier duda o aclaración no duden en comentarla, y de antemano muchas gracias.

Fuente:
https://www.nuigalway.ie/information-solutions-services/servicesforstaff/software/softwarea-z/s-t/swi-prolog/ Consultado el 23 de Agosto del 2015.

miércoles, 15 de julio de 2015

Expresiones regulares en Python

Primero principios básicos:
Anclas.
Donde se encuentra lo que queremos encontrar.
  • ^patron, coincidencia con cadenas que comiencen con "patron"
  • patron$, coincidencia con cadenas que terminen con "patron"
  • ^patron$, la cadena exacta es "patron"
Expresión regular.
Una expresión regular, a menudo llamada también regex, es una secuencia de caracteres que forma un patrón de búsqueda, principalmente utilizada para la búsqueda de patrones de cadenas de caracteres u operaciones de sustituciones. 

Clase de caracteres.
El dominio de posibilidades que puede llegar a ser cierto carácter.
  • [abc] el carácter puede ser a ó b ó c
  • [123ac] el carácter puede ser  1 ó 2 ó 3 ó a ó c
  • ciudadan[oa]s puede ser ciudadanos o ciudadanas la cadena que se busca obtener.
  • [a-z] puede ser cualquier carácter de la a a la z.
  • [0-9] puede ser cualquier número del 0-9
  • [b5-] puede ser un guion b o 5, si se quiere usar un guion, este va al principio o al final nunca intermedio para evitar confusiones.
  • [^dbz] puede ser cualquier carácter que no sea ni d ni b ni z.
Cuantificadores.
  • ?: 0 o una vez.
  • +: una o mas veces.
  • *: cero o mas ocurrencias.
  • {x}: número exacto de ocurrencias que indique x siendo x una variable entera.
  • {x,y}: al menos x y no más de y ocurrencias siendo x e y variables enteras.
Código.
En Python el manejo de expresiones regulares es bastante simple, y bastante útil, es una herramienta imprescindible si deseas hacer una aplicación con una alta funcionalidad y código eficiente.
Pondré este ejemplo:
Validar si las cadenas que entren cumplen con las siguientes características:
  • 5 caracteres
  • El primer carácter es el símbolo "#"
  • El resto son números del 0-9
  • Ejemplo #12345

import re #Modulo de Python para expresiones regulares.
import os

patron=re.compile('[#][0-9]{4}') #Declaracion de patron y almacenamiento en la variable patron
prueba='#123a' #Primera prueba
if patron.findall(prueba)==[prueba]:
 print "Es correcto"
else:
 print "Fallo"

prueba='#1234'#Segunda prueba
if patron.findall(prueba)==[prueba]:
 print "Es correcto"
else:
 print "Fallo"

Aquí tendremos como resultado de la ejecución:

Vamos por partes:
El resultado del findall siempre sera una lista con los resultados encontrados, lo que se trata de encontrar es que toda la variable sea un mismo resultado, eso significa que toda la cadena es parte de la expresión que declaramos.
La primera comparación nos dará como resultado Fallo, esto debido a que solo se cumple la expresión regular hasta el "3" y entonces el resultado que retornara el findall seria ['#123'] cuando lo que se pide es que sea igual a la variable que entro para comparar, a la cadena original.
En la segunda comparación dio como resultado "Es correcto" por que el findall dio como resultado ['#1234'] que es igual a la cadena que mandamos a comparar y por lo tanto es True o "Es correcto".

Este es un tema complejo, te recomiendo practica y que no dudes en escribirme tus dudas, recuerda que pueden ser dudas que muchas otras personas tengan.
De igual manera si deseas más tutoriales de este tema solo pídelos en comentarios. Gracias.


Fuentes y lecturas recomendadas:
https://es.wikipedia.org/wiki/Expresi%C3%B3n_regular consultada el 15 de julio del 2015.
http://www.maestrosdelweb.com/guia-python-expresiones-regulares/ consultada el 15 de julio del 2015.
https://docs.python.org/2/library/re.html?highlight=re#module-re consultada el 15 de julio del 2015.

Muy en especial checate esta pagina, te puedes encontrar muchas herramientas para tus programas.

Manejo de cadenas de texto en Python

En ocasiones es necesario trabajar con el texto e interpretar que es lo que dice. Para eso tomaremos algunos axiomas a considerar:

  1. Cada posición en el texto que analizaremos significa algo.
  2. Siempre habrá una manera de interpretar esas posiciones y saber como se dividen las susodichas.
  3. Los casos especiales no son lo suficientemente especiales como para romper las reglas (checar el Zen de Python que se encuentra en este tutorial).
Muy bien, entendido esto, vamos a hacer la declaración de una variable de texto, para eso hacemos esto:

cadena="Hola mundo"

Si quisiéramos hacer referencia a un cierto carácter de nuestra variable cadena, solo usamos los famosos corchetes, por ejemplo el carácter en la posición 1.

ReferenciaACaracter1=cadena[1]

Y aquí nuestra variable "ReferenciaACaracter1 tendrá el valor 'o' de la cadena 'Hola mundo'.
Si quisiéramos una subcadena que vaya, por ejemplo del carácter 2 al 4 de nuestra cadena lo que hacemos es:

subcadena=cadena[2:4]

Entonces la variable "subcadena" tendrá como valor la cadena 'la' referente a la subcadena de los caracteres del 2 al 4 de 'Hola mundo".

Para saber en que posicion se encuentra o comienza una cadena o subcadena, lo que hacemos es utilizar la función find, pongo este ejemplo, si queremos saber en que posición se encuentra la variable a dentro de nuetsra cadena, lo que hacemos es:

posicionA=cadena.find('a')

Y esto nos retornara un entero con el index de la subcadena 'a' dentro de la variable "cadena", en este caso 3. Si no se encontrara 'a' dentro de la cadena retornaría -1.

Ahora bien, para dividir una cadena entre algún separador, utilizaremos la función split(), pondré un ejemplo, dividir la variable "cadena" en subcadenas, y tomare como referencia el espacio que se encuentra en dicha variable.

lista=cadena.split(" ")

Split toma como parametro el caracter o caracteres que quieras tener como referencia para dividir tu cadena, en este caso fue el espacio. La variable lista tendrá almacenado: ['Hola', 'mundo']
Si quisiéramos almacenar un elemento de dicha lista solo accedemos a el con los famosos corchetes por ejemplo si quisieramos almacenar el primer elemento de la lista:

hola=cadena.split(" ")[0]

Y esto nos almacenara en la variable hola esto 'Hola'.

Para saber cuantos elementos tiene la lista que obtuvimos usaremos la función len. Ejemplo:

CantidadElementos=len(cadena.split(" "))

Y la variable CantidadElementos tendrá como valor 2.
Así termina la primera parte de este tutorial de como manejar textos en python. Te recomiendo checar el tutorial de funciones.


Funciones, ciclos y condiciones en Python


Para explicar este tema necesitaremos algo muy especial mi muy apreciable lector, necesitare que se sienta un completo novato en el mundo de la programación, si en verdad lo es, mucho mejor. (Considero que por nuestro propio bien, todos los que nos dedicamos a esto debemos siempre considerarnos novatos, te recomiendo ver el tutorial de introducción a python).
Antes que nada, para declarar una variable, solo mencionamos el identificador con el que sera utilizada, y le asignamos un valor, el tipo del valor que le asignemos sera el tipo de valor de la variable.
Una variable puede cambiar de tipo durante la ejecución, según se necesite, esta propiedad se llama tipado dinámico.
Una condición, un if en Python tiene la siguiente sintaxis:

if <Condicion>:
        <Sentencias>

Es importante seguir con esta sintaxis, no hay paréntesis en la condición, solo se escribe, y el doble punto  indica el inicio al modulo que procede al indicarse la sentencia. Este modulo tiene algo muy especial, cada sentencia que se encuentre dentro del mismo va distinguido por algo muy particular, en la sintaxis del cuerpo de este modulo. Tiene una tabulacion superior a la que tiene el if de la condición, como en el ejemplo de sintaxis anterior. Esto es lo mismo para todos los ciclos o módulos que se generen en tu programa, lo que va dentro del mismo tiene que tener una tabulacion mayor a la que tiene  la condición principal de dicho modulo.

Una función es un proceso que siempre nos retornara un resultado dentro de un dominio establecido.
En python la palabra reservada para esto es def. Y la estructura para este caso es:

def <Nombre de tu función> ( Parámetro 1, Parámetro 2, Parámetro n):
       <Sentencias>
En cuanto a los ciclos no es muy diferente  a las condiciones, en este tutorial analizaremos el while, su estructura es:
while <Condicion>:
        <Sentencias>

Para que esto quede más claro presento este ejemplo que es la famosa serie de fibonacci en python.
def fibonacci(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fibonacci(n-1) + fibonacci(n-2)
i=0
while(i < 10):
    print fibonacci(i)
    i+=1

Este programa solo muestra los primeros 10 elementos dentro de la serie de fibonacci.
Analicemos la función fibonacci.
La funcion recibe como parámetro un numero, este si es 0, retornara 0, si es 1 retornara 1, y si es diferente a estos dos números retornara la suma de la resta del parámetro menos uno mas la resta del parámetro menos dos.

Se inicializa un variable, que sera nuestra variable de contro en este caso i, esta variable se incrementara de uno en uno en cada vuelta del ciclo del while.
Cada que se ejecute el ciclo while, se validara que el control sea menor a 10, y se imprimirá el valor del control en la serie de fibonacci, dicho con otras apalabras, imprimirá el valor de fibonacci que indique el indice que es nuestro control. Terminado el ciclo, termina la ejecución de nuestro programa.

Ahora la parte que genera más emoción en la jornada de un programador, ejecutemos nuestro programa (Para ver como ejecutar un programa en python, checa este tutorial).

Este es un tema extenso, seguire publicando del mismo, esten en contacto, y estas son las bases para todo aquel que quiera programar algo desente en este y cualquier lenguaje, si tienes alguna duda no dudes en ponerla en comentarios, te la contestare en la primera oportunidad.
Te recomiendo ver la introducción a python. Checa el Zen de Python!!!!

martes, 14 de julio de 2015

Indroducción a Python.

Python es un lenguaje simplemente hermoso, y no lo digo solo por que su sintaxis es limpia y trata de hacer que el código sea legible y simple de comprender gracias a su estructura.
Es muliproposito, bueno la definición formal de mutiproposito ya se la imaginaran, por eso mismo la resumiré en que sirve para todo un poco, y si le hacen falta atributos para cierta aplicación se pueden agregar. Sirve para aplicaciones web, de escritorio, móviles, para paralelizar tareas, juegos, etc.

Los programas en Python se llaman scripts, y funciona gracias a un interprete, los scripts son interpretados linea por linea según se va requiriendo. Siempre para los scripts sera necesario el interprete, pero también tenemos un interprete para calar instrucciones simples, muy similar a la shell en linux, de igual manera tenemos un prompt que nos marca donde vamos con las instrucciones ejecutadas.

Para la gran mayoría de las distribuciones de Linux no es necesario instalar Python, ya esta instalado debido a que ya es parte funcional para estas, esta incrustado en las librerías básicas de las distribuciones.

Para la instalación en Windows paso este tutorial, en la primera parte del mismo están las instrucciones para instalarlo en este sistema operativo.

Para abrir el intérprete de Python en Linux es necesario solo escribir la palabra "python" en shell y este aparecerá.


Los programas se pueden hacer desde cualquier editor de texto plano y para correr el script en terminal solo se accede al directorio donde se encuentra tu programa (tutorial de los comandos básicos de Linux, ahí encontraras el comando para navegar entre directorios en el shell). A continuación en la terminal solo escribirás "python <nombre de tu archivo.py>" y ya se ejecutará tu programa.

Ya hay IDE para hacer este proceso mas sencillo, con solo pulsar un botón. Los mas recomendables en mi opinión son pycharm y geany para Python en este caso.

Python tiene una filosofía que es necesario conocerla para comprender el paradigma y al mismo lenguaje. Debido a la importancia de la misma es fácil acceder a ella, en el interprete de python solo escribimos:
import this

Y aparecerá esto:

Vale la pena echarle una leída para comprender bien este paradigma. Crecerás como programador si lo aplicas.

Ahora vamos con el hola mundo en python, es bastante sencillo, primero lo haremos con el interprete y en seguida leyendo de un archivo.

La palabra reservada que nos servirá para esta operación sera "print". Print lo que hace es imprimir en terminal la secuencia de caracteres o variables que se mande como parámetros. Cuando solo se imprime una variable de cualquier tipo no es necesario castear a String. En cambió si se  tiene algún texto como "El resultado =" y enseguida la variable, la variable si no es de tipo String se tendrá que castear, no es difícil, pero es material para un próximo tutorial.

Primero haciendo el "Hola mundo" en el interprete:

Ahora en algún archivo. Primero abrimos el editor de texto en este caso usare nano, un editor en shell muy popular en la comunidad linuxera. Para llamar a este editor se tiene utiliza en shell la palabra nano y enseguida el nombre del archivo que quieres crear en este caso sera:
nano HolaMundo.py

Y esto nos llevara al popular editor:
Y escribimos el programa, en este caso solo es el mensaje de hola mundo:

Y ahora presionamos la combinación de teclas "Control" y "O". Esto para guardar el archivo, nos mandara un mensaje confirmación, solo le damos enter.
Y ya enseguida presionamos "Control" y "X" para salir.
Para ejecutar solo escribimos "python HolaMundo.py"

Este es el primero de una serie de tutoriales de python, dudas o cualquier cosa en comentarios por favor. Por su atención gracias.
Te invito a ver funciones, ciclos y condiciones en Python.

viernes, 10 de julio de 2015

Programa en Shell para renombrar archivos (Linux)

En ocasiones necesitamos trabajar con grandes volúmenes de archivos y los nombres de estos pueden influir en gran medida con lo que deseemos hacer.

Cambiar los nombres de los archivos que se encuentran dentro de un determinado directorio es una tarea sencilla para cuando se habla de volúmenes pequeños, pero ya cuando se excede los 50 archivos, es una tarea que puede parecer hasta imposible por el nivel de fuerza de voluntad que exige ( después del re-nombramiento 50 buscas cualquier pequeña excusa para dejar de hacerlo, lo digo por experiencia propia). 

Así que ahora mostrare como hacer un archivo .sh para que en linux esto sea una tarea simple.
cont=25
for archivo in *.png; do
 mv "$archivo" "$cont.png"
 let cont+=1
done

Explicando, el código:
  •  cont es una variable entera que se incrementa de uno en uno dentro del cilco for.
  • *.png hace referencia a los nombres de archivos dentro del directorio que terminan con .png
  • mv comando que re-nombra los archivos en turno dentro del ciclo. 
Lo que hace este pequeño script es trabajar con cada uno de los archivos que se encuentren en el directorio con la extensión ".png", y re-nombrarlos tomando como base un contador.  Si el primer archivo del directorio que entra al ciclo se llama "archivo.txt" ahora se llamara "25.png".

Guardaremos el archivo como renombraTodos.sh , sera necesario brindarle permisos de ejecución a este archivo, esto se hace con el siguiente comando:
sudo chmod a+x renombraTodos.sh

Y para ejecutar este comando:
./renombraTodos.sh

Y les cambiara los nombres de sus archivos dentro del directorio donde se encuentren, espero les sea util este script, no duden en publicar sus dudas, pasen un buen día.


miércoles, 8 de julio de 2015

Combinación de teclas dentro de Google Chrome. Parte 1

Hoy les traigo un pequeño tutorial de combinaciones de teclas muy útiles dentro de Google Chrome.

Antes de comenzar quiero aclarar que estas combinaciones pueden variar de entre Windows y Mac, las combinaciones de teclas que explicare a continuación las pondré en 2 apartados distintos:

        -Windows y Linux
        -Mac

Y pues entonces, comencemos.

La siguiente combinación de teclas abre una nueva ventana:
    -Windows y Linux
        Ctrl + N
    -Mac
        ⌘ + N

Abrir una nueva pestaña:
    -Windows y Linux
        Ctrl + T
    -Mac
        ⌘ + T

Abrir una nueva ventana de modo incógnito:
    -Windows y Linux
        Ctrl + Shift + N
    -Mac
        ⌘ + Shift + N

Abrir un archivo de tu equipo en el navegador:
    -Windows y Linux
        Ctrl + O
    -Mac
        ⌘ + O

Este me parece demasiado útil, abrir la ultima pestaña que se cerro dentro de chrome:
    -Windows y Linux
        Ctrl + Shift + T
    -Mac
        ⌘ + Shift + T

Navegar entre las pestañas, según numero dentro de la barra de pestañas::
    -Windows y Linux
        Ctrl + 1 hasta Ctrl + 8
    -Mac
        ⌘ + 1 hasta ⌘ + 8

Desplazarse hasta la ultima pestaña en la barra de pestañas:
    -Windows y Linux
        Ctrl + 9
    -Mac
        ⌘ + 9

Desplazarse a la siguiente pestaña en la barra de pestañas:
    -Windows y Linux
        Ctrl + Tabulador o Ctrl + AvPág
    -Mac
        ⌘- + opción y la flecha derecha al mismo tiempo

Desplazarse a la  pestaña anterior en la barra de pestañas:
    -Windows y Linux
        Ctrl + Shift + Tabulador o Ctrl +RePág
    -Mac
        ⌘- + opción y la flecha izquierda al mismo tiempo

Cerrar la pestaña actual:
    -Windows y Linux
        Ctrl + W o Ctrl + F4
    -Mac
        ⌘- W

Y por ultimo, un dato curioso, la barra de búsqueda de google chrome es una calculadora!




Espero y este tutorial les sea de utilidad, cualquier duda no duden en comentarla por favor. Muchas gracias por visitar este tutorial.

Fuente:

https://support.google.com/chrome/answer/157179?hl=es-419 consultada el 07 de Julio del 2015.
http://www.computerhope.com/tips/tip203.htm consultada el 07 de Julio del 2015.

Comandos basicos de linux

Hola en este tutorial iniciaremos con tutoriales básicos de  comandos. Los comandos el linux son una parte esencial, ya que recuerdan en gran parte sus orígenes y su esencia.
Se puede decir que es como las matemáticas, entre mas comprendes los conceptos específicos mas te enamoras de ellas.
Bien esta sera mas que nada un tutorial de consulta, estilo diccionario de comandos.
man.
Este comando  nos lleva directamente a un manual de referencia de las aplicaciones que escribamos en los parámetros. Se puede decir que es un asistente personal que te lleva directamente a donde deseas en el manual de usuario de tu sistema.
man nano
Este comando nos retornara el manual de usuario de nano, un editor de texto en terminal muy popular entre linuxeros.

who.
Este comando nos retornara los usuarios que están loggeados en el sistema al momento.
who

cd.
Este comando sirve para navegar en terminal entre  directorios.
cd ..
cd .. nos lleva a una posición jerárquica mayor en el árbol de directorios.
cd ~

cd ~ nos lleva a la carpeta "home" de nuestro sistema.

cd directorio

cd y el nombre de algun directorio nos lleva al interior del mismo.

ls.
Con este comando listaran en orden ascendente los archivos que esten dentro del directorio en el que esten trabajando.
ls

lspci.
Mostrar los dispositivos que se encuentren en los buses PCI.
lspci

lsusb.
Muestra la información de los puertos usb del equipo
lsusb

sudo su.
Permite loggearte como super usuario en el sistema, el super usuario es el que tiene todos los permisos así que recuerda solo loggearte como super usuario cuando en verdad lo necesites.
sudo su

sudo apt-get install
Comando utilizado para la instalación de paquetes adicionales a tu sistema.
sudo apt-get install gedit

martes, 7 de julio de 2015

Instalar JDK en Ubuntu

En esta ocasión les traigo un pequeño tutorial de como instalar el JDK en Ubuntu o distribuciones de linux similares.
¿Que es el JDK?
Java Development Kit o (JDK), es un software que provee herramientas de desarrollo para la creación de programas en Java. Puede instalarse en una computadora local o en una unidad de red.
¿Para que nos sirve?
Siendo una persona dedicada enteramente a la programación, y más si es de aplicaciones móviles, el JDK debe de ser un punto de partida por el cual todos debemos de pasar.
Como mencione, para el desarrollo de aplicaciones móviles y sobretodo si es en android, esta herramienta es indispensable, ya que esta no es solo el motor que le da la fuerza y validez a tu código, sino que también es la que hace trabajar a algunos IDE.
No solo se puede trabajar con ella en aplicaciones móviles, de hecho el habitad natural del JDK es en escritorio, trabajando para el lenguaje de programación multipropositos java,

Primero hay que abrir la terminal. Una combinación de teclas que puede ayudar Control+Atl+T.
En seguida es necesario añadir el repositorio de donde vamos a obtener todo lo que requerimos.
¿Que es un repositorio?
Es un lugar donde se pueden almacenar cosas y un cierto publico puede obtenerlas de ahí mismo.

Para hacer eso en Ubuntu o en distribuciones similares es con el comando :
sudo add-apt-repository

El comando que ingresaremos en terminal sera:
sudo add-apt-repository ppa:webupd8team/java
En seguida actualizamos el sistema, para que ya se considere el cambio en repositorios que acabamos de hacer:
sudo apt-get update

A continuación instalamos el JDK que nos interese, para los fines de este tutorial, sera el 8.
sudo apt-get install oracle-java8-installer

Y a continuación les pedirá que acepten la licencia y los requisitos de la instalación que no es mas que dos "Enter".

Para confirmar que la instalación se haya realizado de manera correcta ejecuten este comando:
java -version

Y les debe aparecer su versión de JDK.
Eso seria todo por hoy, espero les sea util esta información cualquier duda, por favor en comentarios. Muchas gracias
Fuentes:
https://es.wikipedia.org/wiki/Java_Development_Kit  consultada el 7 de julio del 2015.