Pablo Benjamín Arroyo: Leer y escribir en particiones ntfs

ntfs-3g es un programa que te permite leer las particiones de windows (ntfs). ArchLinux no lo trae instalado...pero es muy facil instalarlo:

$ sudo pacman -S ntfs-3g



Ahora podemos montar manualmente una particion desde el terminal (primero debe existir el punto de montaje):

$ sudo mkdir /windows
$ sudo mount /dev/sda3 /windows



O podemos editar el archivo ntfs y agregar los montajes que queremos que se realizen al iniciar el sistema automaticamente:

$ sudo nano /etc/fstab

/dev/sda3 /windows ntfs defaults 0 0



Ahora reiniciamos el sistema y listo...vamos a tener los permisos para poder copiar un archivo, ver una pelicula, etc...





Bookmark and Share

Pablo Benjamín Arroyo: Google Chrome OS

Google hoy jueves 19 de noviembre lanzo formalmente Google ChromeOs, un sistema operativo basado y funcionando en las nubes...escuchar musica, trabajabar, jugar, ver videos...TODO usando internet.

Para algunos es algo bueno...yo creo que no tanto. Se necesita una conexion a internet, no solo una conexion a internet sino una buena conexion a internet...Cosa que en Argentina no todos la podemos tener...

Les comparto un video donde hablan del nuevo os de google:



+Info




Bookmark and Share

Carlos Joel Delgado Pizarro: Variables – Parte 3

En esta parte me enfocaré a lo que se conoce como «Tipado dinámico» de las variables, ya que Python es un lenguaje de «Tipado Dinámico» y además «Fuertemente Tipado», lo que veremos a continuación:

Tipado Dinámico

Esta característica se refiere a que no es necesario declarar el tipo de dato que se almacenan en las variables, como en el caso de otros lenguajes, sino que su tipo se determinará en tiempo de ejecución, de acuerdo al valor que se le asigne, así que es posible que el tipo de la variable cambie de acuerdo al valor que se le asigne, por ejemplo, vemos el siguiente código:

#!/usr/bin/env python
a = 5 # "a" guarda un valor entero
print a, type(a)
a = "hola" # ahora "a" guarda una cadena
print a, type(a)
a = 5.4 # ahora "a" guarda un valor float
print a, type(a)
a = (4+2j) # ahora "a" guarda un valor del tipo complejo
print a, type(a)

Un ejemplo gráfico para que sea más entendible🙂 :

a = 5

asignamos el valor entero “5” a la variable “a”

a = “hola”

asignamos la cadena “hola” a la variable “a”, que antes apuntaba a un valor entero, el cual al quedar libre es borrado de la memoria.

Como la variable “a” no fue “ declarada” para ser de ningún tipo, osea que no se declaro explícitamente que “a” sea de tipo entero o cadena o real o algún otro tipo, puede guardar el valor que se le asigne, pero eso sí, es un lenguaje fuertemente tipado, es decir que no podemos mezclar diferentes tipos de variables.

Fuertemente Tipado

La característica de «Fuertemente Tipado» se refiere a que una vez que una variable guarda un valor, no se puede tratar a dicho valor como si fuera de otro tipo, es decir no se pueden realizar operaciones entre variables o valores de diferentes tipos, ejemplo: si tenemos una variable que guarda el numero entero 9, no podemos sumarle un valor del tipo cadena como “ 5”, pero en otros lenguajes si es posible ya que las variables cambiarían para adaptarse a la operación deseada, pero esto es más propenso a errores en una programación más extensa, si queremos tener ese comportamiento con nuestras variables en Python, es necesario«mutarlas»explícitamente, ejemplo en código:

#!/usr/bin/env python
a = 9 # valor entero
b = "5" # valor entero
c = a + b # no se puede realizar esta operacion
print c

al detectar esto, Python mostrará un mensaje como este:

Traceback (most recent call last):
File “var3ejem2.py”, line 4, in <module>

c = a + b # no se puede realizar esta operacion

TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’

es decir que la operación “+” no está soportada para actuar con variables del tipo int y str (entero y cadena)

Mutación de variables

Si queremos sumar los valores de dos cadenas o un número con una cadena, ejemplo “5” + “9” o 5 + “9” debemos de convertir la cadena al tipo del número, ya sea entero o real o cualquier otro tipo numérico. Para eso se utilizan las funciones que Python trae, ejemplo:

#!/usr/bin/env python
a = 5 # la variable "a" guarda un valor entero
b = "9" # la variable "b" guarda una cadena
c = a + int(b) # con la funcion int() convertimos
               # la cadena un entero
print c

y así podemos mutar las variables para que se comporten de la manera que queremos, pero ojo, que luego “b” sigue siendo una cadena, si queremos que sea un entero para el resto del código, simplemente la reasignamos con el nuevo valor.

b = int(b)


Pablo Benjamín Arroyo: GO - Lenguaje de programacion

Google sorprendio con su nuevo lenguaje de programacion:




Google anuncia que entra al juego de los lenguajes de programación, se llama Go: es de fuente abierta, experimental y combina las ventajas de desempeño de un lenguaje compilado como C++ sumado a la velocidad de un lenguaje dinámico como Python.

En Google son fanáticos de Python, muchas de sus servicios son hechos en este lenguaje; en abril de 2009 Techreporter hacía un artículo de cómo su creador, Guido van Rossum, que ahora trabaja en la empresa se ha dedicado a mejorar el desempeño de las aplicaciones reemplazando el interpretador por uno más eficiente basado en LLVM. Pero seguramente vuelven a llegar a un límite de velocidad que no es alcanzable a menos que se compile; crear un nuevo lenguaje que combine estas dos ventajas parece ser el paso natural (aunque el más difícil).

Para los curiosos en interesados en Go, Google ha creado golang.org donde hay detalles técnicos, preguntas frecuentes y un video de una hora explicando cómo funciona.


Un video (ingles)




LINK-INFO
Instalarlo



Bookmark and Share

Carlos Joel Delgado Pizarro: Variables – Parte 2

 

Ya vimos los tipos básicos de datos en Python, los cuales hemos llamado «variables», pero en realidad ese no es el nombre correcto en Python, lo correcto es « nombres» o «etiquetas»; pero, para no salir de la terminología común, la cual es entendida por todo el mundo, vamos a seguir llamándolos «variables», pero debemos tener en cuenta:

Los otros lenguajes (la mayoría) tienen «variables», a las que se les asigna valores, por ejemplo:

Declaración de variables en Java o C#:

int a = 5;

Declaración de variables en Basic:

Dim a as Integer= 5

y así cada lenguaje tiene su manera de declarar variables…

 

¿Qué quiere decir esto?

Que al momento de declarar una variable, se crea un espacio en la memoria que se comporta como una caja, en donde se almacenan los valores asignados.

 

Al declarar la variable “a” se tiene:

int a = 5;

 

 

Si le asignamos otro valor a la variable “a”, el valor anterior es sobrescrito, por ejemplo

a = 8;

 

Si declaramos otra variable “b”, y le asignamos el valor de “a”, esto crea una copia del contenido de “a” en “b”.

int b = a;

Luego, el valor de “b” es independiente al valor de “a”.

 

En Python se usan “nombres” o “etiquetas”

 

Como en Python «todo es un objeto», este comportamiento es algo diferente, Python tiene «nombres» o «etiquetas».

Al hacer:

a = 5, estamos etiquetando al objeto entero “5” con “a”

 

Si asignamos un nuevo valor a “a”, por ejemplo:

a = 8, estamos colocando la etiqueta “a” a un nuevo objeto.

Y el objeto 5 queda libre, puede seguir existiendo en la memoria, pero como nadie hace referencia a él, es borrado.

Si creamos una nueva etiqueta “b” y le asignamos el valor de “a”, osea:

b = a, estamos agregando otra etiqueta al mismo objeto al que “a” hace referencia.

 

Esto significa eficiencia en el uso de memoria, pero si cambiamos el valor de “a”, por ejemplo hacemos una operación aritmética, como restarle 1

a = a – 1

al hacer esto se está creando un nuevo objeto y se etiqueta con “a”, entonces tendremos dos objetos diferentes con etiquetas independientes.

 

Espero que no haya dudas sobre como Python maneja las “etiquetas”, pero para evitarnos complicaciones más adelante, sigamos llamándolas «variables»🙂.

Dale una revisada al siguiente código:

a = 5 # se etiqueta el objeto entero 5 con "a"

print a # muestra el objeto de "a"

a = 8 # se etiqueta otro objeto con "a"

b = a # se agrega la etiqueta "b" al objeto de "a"

print b # se muestra el objeto de "b"

a = a – 1 # se modifica el valor del objeto de "a"

print a # se muestra el objeto de "a"

print b # se muestra el objeto de "b", que ahora es independiente

El mismo código con una «traducción más común» de los comentarios:

a = 5 # se crea la variable entera "a" y se guarda el valor "5"

print a # muestra el valor de "a"

a = 8 # se guarda un nuevo valor en "a"

b = a # se crea la variable "b" donde guarda el valor de "a"

print b # se muestra el valor de "b"

a = a – 1 # se modifica el valor de "a"

print a # se muestra el valor de "a"

print b # se muestra el valor de "b"


Carlos Joel Delgado Pizarro: Variables en Python

En Python los tipos básicos para las variables se dividen en:

  • Números: enteros (123), reales o coma flotante (-43.23) y complejos (4 + 3j), en Python la parte imaginaria de un número complejo se representa con j y no con i como es matemáticamente.
  • Cadenas de texto: “Hola”, “abc123”.
  • Valores booleanos: True (cierto) y False (falso).

Vamos a crear un par de variables a modo de ejemplo. Una de tipo cadena y una de tipo entero:

# en la variable cadena guardamos una cadena
cadena = "Hola"
# y en entero un número entero
entero = 23
# lo comprobamos con la función type
print type(cadena)
print type(entero)

El resultado será:

<type ‘str’>
<type ‘int’>

Lo que indica que la variable cadena es del tipo str, que es lo mismo que string o cadena, y la variable entero es del tipo int, que significa integer o entero.

Además vemos que los comentarios en Python se indican con el signo #, pero existen más formas de insertar comentarios, lo que veremos más adelante.

Enteros

En Python los enteros son int (tipo integer o entero) o long (tipo de entero largo).

En Python, utilizando el tipo int podemos almacenar números de -231 a 231 – 1, o lo que es lo mismo, de -2.147.483.648 a 2.147.483.647, eso en plataformas de 32bits. En plataformas de 64 bits, el rango es de -9.223.372.036.854.775.808 hasta 9.223.372.036.854.775.807 Para declarar un tipo entero o int es suficiente asignar un número entero a una variable, ejemplo:

entero = 23

Para declarar un tipo entero largo o long hay que añadir la letra L al final del número

entero = 23L

También se puede expresar la variable como un octal, anteponiendo un cero:

# 027 octal = 23 en base 10
entero = 027

o bien en hexadecimal, anteponiendo un 0x:

# 0×17 hexadecimal = 23 en base 10
entero = 0×17

Reales

Son los números que tienen decimales, en Python se representan con el tipo float, Python siempre se utiliza este tipo de variables con doble precisión (tipo double en lenguaje C), y en concreto se sigue el estándar IEEE 754: 1 bit para el signo, 11 para el exponente, y 52 para la mantisa. Esto significa que los valores que podemos representar van desde ±2,2250738585072020×10-308 hasta ±1,7976931348623157×10308, para asignar este tipo de números se escribe la parte entera y luego la parte decimal, ejemplo:

real = 25.85
real = 19.00

También es posible utilizar la notación científica, por ejemplo:

real = 19.886e-7

Lo que sería igual a decir: 0.0000019886

Complejos

Son los números que tienen parte imaginaria, en Python este tipo es conocido como complex, y se asigna a una variable de la siguiente manera:

complejo = 4.2 + 2.5j

Nótese nuevamente que la parte imaginaria se representa con la letra j.

Cadenas

Es el conjunto de letras o números encerrados entre comillas dobles (“texto”) o comillas simples (‘texto’) las cuales pueden contener caracteres especiales como \n para saltar a una línea nueva o \t para agregar un espacio de tabulación.

texto = "Hola mundo" # El resultado se mostrará en una sola linea
texto = "Hola\nmundo" # El resultado se mostrará en dos lineas distintas

También se puede poner texto entre triples comillas, lo cual, al momento de presentarlo o escribirlo en la consola, respetará los saltos de línea sin necesidad de utilizar \n

triple = """Esta es una línea
y esta es otra línea"""

Las cadenas admiten las operaciones + y * para concatenación, ejemplo

a = “uno”
b = “dos”
c = a * 3
print a + b
print c

el resultado será

unodos
unounouno

Booleanos

Las variables de tipo bool en Python (y todos los otros lenguajes) almacenan dos valores: True y False, solo que en Python el tipo bool es una subclase del tipo int, es decir que True vale 1 y False vale 0, algo curioso, ya que si haces:

a = True + True

El resultado será 2

Prueba con lo siguiente y fíjate en el resultado.

a = True + True
b = True
print a
print type(a)
print b
print type(b)

Vemos que el valor de a es 2 y su tipo es int, y el valor de b es True y su tipo es bool, esto se debe, como ya dije, a que el tipo bool es una subclase del tipo int.


Carlos Joel Delgado Pizarro: Primer encuentro con Python

Primer encuentro con Python

Si eres de los que todavía utilizan Windows®, debes instalar el interprete de Python, el cual puedes obtenerlo desde la página oficial de Python http://www.python.org.

Si utilizas GNU/Linux lo más probable (casi seguro) es que Python ya esté instalado, y si no lo está, puedes instalarlo fácilmente utilizando el gestor de paquetes de tu distribución, o también bajándolo desde la página oficial de Python; en otros sistemas operativos Unix y compatibles (MacOSX, oSolaris, etc.) Python también puede encontrarse ya instalado, y también puede ser instalado fácilmente.

Para empezar a programar es suficiente un editor de texto sencillo, guardar nuestro código con la extensión .py y luego ejecutarlo con el interprete.

El instalador para Windows® viene con IDLE, un entorno de desarrollo para Python.

Tanto para Windows®, GNU/Linux y demás sistemas Unix podemos instalar PyDEV que es uno de los mejores IDEs (entornos de desarrollo) para Python, bueno, en realidad PyDEV es un complemento (plugin) que puede ser instalado en Eclipse o Aptana, por lo que primero debemos instalar Eclipse o Aptana y luego instalar PyDEV, o podemos utilizar EasyEclipse para Python, que es una modificación de Eclipse y que además tiene una distribución que ya viene con PyDEV instalado. PyDEV cuenta con autocompletado de código (con información sobre cada elemento), resaltado de sintaxis, un depurador gráfico, resaltado de errores, explorador de clases, formateo del código, refactorización, etc.

EasyEclipse se puede descargar desde http://www.easyeclipse.org/site/distributions/python.html

En GNU/Linux para asegurarse que tiene Python instalado abra una terminal y escriba el comando python, el cual llama al intérprete, debería ver lo siguiente:

~$ python

Python 2.6.4rc2 (r264rc2:75497, Oct 20 2009, 02:54:09)

[GCC 4.4.1] on linux2

Type “help”, “copyright”, “credits” or “license” for more information.

>>>

Los 3 signos >>> indican que el interprete está activo y esperando ordenes. Para salir del interprete solo se debe escribir exit() o presionar las teclas Ctrl+D.

Prueba escribiendo:

print "Hola mundo, este es mi primer programa en Python"

También puedes crear un documento de texto nuevo o utilizar Pydev y escribir la misma línea de código, luego guardar el archivo como Hola.py y ejecutarlo con el intérprete

~$ python hola.py

y acabas de hacer tu primer programa en python.

Si utilizas Windows® los archivos .py ya estarán asociados al intérprete de Python, por lo que basta hacer doble clic sobre el archivo para ejecutar el programa. Sin embargo como este programa no hace más que imprimir un texto en la consola, la ejecución es demasiado rápida para poder verlo. Para remediarlo, vamos a añadir una nueva línea que espere la entrada de datos por parte del usuario.

print "Hola mundo, este es mi primer programa en Python"

raw_input()

De esta forma se mostrará una consola con el texto hasta que se presione la tecla Enter.

Si utilizas Linux (u otro Unix) para conseguir este comportamiento, es decir, para que el sistema operativo abra el archivo .py con el intérprete adecuado, es necesario añadir una nueva línea al principio del archivo:

#!/usr/bin/env python

print "Hola mundo, este es mi primer programa en Python"

raw_input()

A esta línea se le conoce en el mundo Unix como shebang, hashbang o sharpbang. El par de caracteres #! indica al sistema operativo que dicho script se debe ejecutar utilizando el intérprete especificado a continuación. De esto se desprende, evidentemente, que si esta no es la ruta en la que está instalado nuestro intérprete de Python, es necesario cambiarla.

Por supuesto además de añadir el shebang, tendremos que dar permisos de ejecución al programa.

chmod +x hola.py

Y listo, si hacemos doble clic el programa se ejecutará, mostrando una consola con el texto Hola mundo, este es mi primer programa en Python, como en el caso de Windows®.

También podríamos correr el programa desde la consola como si tratara de un ejecutable cualquiera:

./hola.py

Ahora, si queremos insertar texto con caracteres especiales, es decir, tildes, eñe «ñ» y otros simbolos, debemos agregar la siguiente linea a nuestro programa, justo debajo del sharpbang:

# -*- coding: UTF-8 -*-

Con esa declaración, todos los caracteres serán reconocidos y no tendremos errores de caracteres no admitidos al ejecutar nuestro programa.


Carlos Joel Delgado Pizarro: Parece vacío, pero no… :)

python-logo

Mmm… Hace algún tiempo que abrí este blog, y hasta ahora no escribí nada, bueno, no “afecta” mucho todavía porque nadie entra a ver este blog «todavía», pero eso no significa que no haya aprendido nada hasta ahora, ya tengo algo escrito en borrador sobre programación básica hasta el tema de Programación Orientada a Objetos, y esta semana voy a empezar a ver como maneja Python lo que es Herencia y Polimorfismo. Un dato interesante es que en Python «Todo es un Objeto».