Sunday, December 27, 2009

Streamlines con MatPlotLib

Durante las vacaciones de navidad tuve que hacer un programa para resolver la ecuación de Laplace en 2D en un rectangulo con unas determinadas condiciones de contorno.
Hice el programa en C, pero los gráficos de las streamlines los hice con MatPlotLib.
Este es el script de Python que genera las streamlines:
# -*- coding: iso-8859-15
# grafico.py
import sys
from numpy import * 
from pylab import load  
import matplotlib.pyplot as plt
if len(sys.argv) >= 1:
psi = load(sys.argv[1])
cs = plt.contour(psi,20)
plt.clabel(cs)
plt.xlabel("y/h")
plt.ylabel("x/h")
plt.show()
else:
print "Este programa necesita la ruta del fichero que contiene la matriz psi"

Para ejecutarlo basta con llamar al programa pasándole como parámetro la ruta del fichero donde está la matriz. En este caso las entradas de la matriz están separadas por un espacio. Leyendo la ayuda de load se puede ver cómo usar otros delimitadores.

Lo ejecuté desde iPython:
$ ipython
Python 2.5.2 (r252:60911, Dic 20 2009, 23:16:55) 
Type "copyright", "credits" or "license" for more information.

IPython 0.8.4 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object'. ?object also works, ?? prints more.

In [1]: run ~/grafico.py 'rutaFicheroMatriz'
y este es el resultado:

Para poder usarlo, aparte de Python, hay que instalarse los modulos: numpy, pylab y matplotlib (todo está en los repositorios)

Thursday, December 24, 2009

Links C++

Estos son los links que me fueron más útiles para hacer la PAC de C++ del curso Introducció al desenvolupament de programari del Master de Software Libre de la UOC:

C++ String Examples

C++ Reference en cplusplus.com

C++ reference en cppreference.com

Saturday, November 7, 2009

Saturday, October 24, 2009

Thursday, October 22, 2009

Ejemplos de programación avanzada en C sobre Linux

Ejemplos sencillos de C/C++ para Linux avanzado
Esta web contiene ejemplos muy bien explicados de técnicas de programación avanzadas en C y C++.
Los temas avanzados de C son:
  • Comunicaciones en red entre procesos.
  • IPCs (Recursos compartidos).
    • Varios programas en el mismo ordenador pueden compartir información por medio de recursos compartidos, como memoria compartida, semáforos, colas de mensajes o señales y alarmas. Cómo hacer que un programa ejecute algo cada cierto tiempo sin necesidad de "dormirlo".
  • Procesos y Threads.
  • Gráficos con X11.

Programación en Linux

Programación en Linux
Como dice su autor:
Esta página intenta acumular links, información y toda clase de cosas útiles a los que se embarcan en la programación para Linux.
Es muy interesante.

Ejemplos de Java y C/Linux

Tiene muchos ejemplos en ambos lenguajes y algunos tutoriales.
Lo mejor es que tiene mucho ejemplos muy bien explicados de C y C++ en Linux.
Estos me gustaron tanto que les dedicaré una entrada aparte.

Operating System Concepts

Trasparencias que acompañan al libro Operating System Concepts.
Las trasparencias corresponden a la septima edición, pero el libro ya va por la ocatava.
Otros libros relacionados de los mismos autores.

Wednesday, October 21, 2009

The GNU C Library

Documentación de The GNU C Library.
Muy útil para no reinventar la rueda, pero parece que no trae muchos ejemplos.

Thursday, October 15, 2009

Cursos de C

Este curso de C de la web El rincón del C puede complementar los dos primeros temas del curso de Introducción al desarrollo de software del Master de Software Libre de la UOC. El rincón del C contiene un montón de ejemplos, noticias y tutoriales.

En el curso de la Cardiff School of Computer Sciences:
Programming in C. UNIX System Calls and Subroutines using C. se puede encontrar mucha información sobre el uso de threads en C, comunicación entre procesos, señales, interrupciones y otros aspectos avanzados del lenguaje C. La verdad es que tiene muy buena pinta y contiene abundantes ejemplos y código fuente.

Thursday, October 8, 2009

Gnu/Linux en la bolsa de Londres

La bolsa de Londres está migrando de un sistema basado en Microsoft .Net a un sistema basado en Gnu/Linux. Sus predicciones son que acabarán ahorrando unos $14.7 entre 2011 y 2012.
Aparte de que el nuevo sistema es unas 6 veces más rápido que el anterior, el código abierto ofrece una ventaja muy significativa sobre el software propietario ya que permite un mayor control del comportamiento del software y la posibilidad de seguir desarrollando el sistema aportando nuevas soluciones.
Parece que muchas otras bolsas europeas están migrando a Gnu/Linux, por lo que tras este movimiento de la bolsa de Londres, casi no quedan clientes para el sistema basado en .Net.
Artículo original.
Más detalles.

Monday, September 28, 2009

Configurar cambio de contraseñas en Linux

Link donde podemos encontrar información para configurar cuándo se debe cambiar una contraseña, así como el período de validez de la misma, aviso de caducidad de la contraseña o caducidad de una cuenta.
En el blog Informático de guardia también hay otros links relacionados con otros temas como comprobación de puertos, configuración de teclado o manejo de enlaces simbólicos entre otros.

Comandos para gestionar usuarios en Linux

Link con un montón de ejemplos donde explican los comandos más habituales para gestionar usuarios en Linux.

Scripts en Linux (II)

He encontrado un tutorial que está muy bien:
Linux Shell Scripting Tutorial (LSST) v2.0

El tutorial está en nixCraft, en donde se puede encontrar mucha más información sobre administración de sistemas Gnu/Linux y software libre en general.

Scripts en Linux

En el Linux Documentation Project encontré unas guías de Bash que nos pueden servir:

- Advanced Bash-Scripting Guide (tutorial con muchos ejemplos resueltos).
- Bash Guide for Beginners.

Se pueden descargar en PDF o consultar online.

Thursday, September 10, 2009

Master Software Libre UOC y OCWs

Toni y yo vamos a empezar este semestre el Master de Programari Lliure de la UOC. Utilizaremos el blog para colgar links y comentarios que encontremos útiles para complementar el material de estudio facilitado por la UOC. Este material puede descargarse desde el OpenCourseWare (OCW) de la UOC.

El OCW es una idea que muchas universidades en todo el mundo están copiando del Massachusetts Institute of Technology (MIT), que abrió el MIT OCW hace ya muchos años (1999 creo). La verdad es que el sitio es magnífico y en él se puede conseguir material puntero de prácticamente todas las disciplinas enseñadas en el MIT. Algunos de los cursos permiten bajarse las grabaciones en video de las clases.

Siguiendo esta idea se ha creado el Open OCW Consortium en el que participan universidades de todo el mundo para poner a disposición del público sus materiales de enseñanza. Muchas universidades españolas participan en este proyecto (aquí se puede ver un listado). La verdad es que el material que ofrecen las universidades españolas, entre ellas la UB, se encuentra, tanto en calidad como en cantidad, muy por debajo del ofrecido en el MIT. Me resulta curioso el hecho de que la UB participe en este proyecto con tan poco material, cuando tiene un campus virtual lleno de contenidos. Debe ser que no llevan mucho tiempo en el proyecto.

Wednesday, July 8, 2009

Otra herramienta para UML

Esta se llama Umbrello y también tiene buena pinta.

Herramienta Open Source para UML

Me descargué de aquí, una herramienta para hacer modelos UML, llamada ArgoUML.
Me daba problemas, por lo que al final estoy usando esta otra: BOUML. Ya comentaré algo más sobre ella más adelante.

Saturday, July 4, 2009

Repositorios con Mercurial

He estado mirando varios repositorios con soporte para Mercurial(GoogleCode, BerliOS Developer, Bitbucket, etc) y creo que al final me convence más Bitbucket.

Thursday, July 2, 2009

Charla sobre Mercurial

Charla sobre Mercurial de Bryan O'Sullivan en Google videos.

Aprendiendo a usar Mercurial (1)

Parece que ya estoy avanzando con el Mercurial gracias a Mercurial: The Definitive Guide by Bryan O'Sullivan. Es un tutorial muy bien hecho.
Voy por el capítulo 3 y he aprendido un montón. Por ahora Mercurial me parece una pasada y no es difícil de usar.
Lo estoy usando desde la consola para practicar e ir memorizando los comandos. Si no quieres usar consola, hay una interfaz gráfica que se llama TortoiseHg.

Tuesday, June 30, 2009

Libros gratuitos Python

Link con una lista de libros gratuitos de Python.

Artículo de Wikipedia sobre Revision Control

Acabo de leer este artículo de Wikipedia sobre Revision Control al que te envían desde la página inicial de Mercurial. Creo que es muy interesante para fijar conceptos antes de empezar con Mercurial.

Monday, June 29, 2009

Libro de Mercurial

Esto puede ser útil:
Mercurial: The Definitive Guide
by Bryan O'Sullivan

Tipos de Licencias

Información sobre los distintos tipos de licencias:
http://opensource.org/licenses/category

Repositorio en Google Code

He estado mirando el repositorio de Google Code y tiene soporte para Subversion y Mercurial.
En este link se cuenta lo que hay que hacer para crear nuevos proyectos y configurar el repositorio.
Creo que puede ser una buena opción.

Thursday, June 18, 2009

Software Carpentry

Encontré este sitio: Software Carpentry en el que explican muchas cosas muy útiles para desarrollar software.

Thursday, April 30, 2009

Primera prueba MatPlotLib

Usé el siguiente código de ejemplo para comprobar si había instalado bien MatPlotLib:
# plotting with the pylab module from matplotlib
# free from: http://matplotlib.sourceforge.net/
# used windows istaller matplotlib-0.90.0.win32-py2.5.exe
# tested with Python25 EU 4/21/2007
import math
import pylab # matplotlib
# create the x list data
# arange() is just like range() but allows float numbers
x_list = pylab.arange(0.0, 5.0, 0.01)
# calculate the y list data
y_list = []
for x in x_list:
y = math.cos(2*math.pi*x) * math.exp(-x)
y_list.append(y)
pylab.xlabel("x")
pylab.ylabel("cos(2pi * x) * exp(-x)")
# draw the plot with a blue line 'b' (is default)
# using x,y data from the x_list and y_list
# (these lists can be brought in from other programs)
#
# other drawing styles -->
# 'r' red line, 'g' green line, 'y' yellow line
# 'ro' red dots as markers, 'r.' smaller red dots, 'r+' red pluses
# 'r--' red dashed line, 'g^' green triangles, 'bs' blue squares
# 'rp' red pentagons, 'r1', 'r2', 'r3', 'r4' well, check out the markers
#
pylab.plot(x_list, y_list, 'b')
# save the plot as a PNG image file (optional)
pylab.savefig('d:\PracticasPython\Fig1.png')
# show the pylab plot window
# you can zoom the graph, drag the graph, change the margins, save the graph
pylab.show()

Esto es lo que aparece:
















Y esta es la imagen que guarda:

Scipy

Acabo de instalarme NumPy, SciPy y MatPlotLib.
Por lo que he estado viendo con estos módulos puedes tener un entorno como MatLab pero gratis.

Monday, April 13, 2009

Videotutoriales Java

Videotutoriales Java en español!!.

HP garage rules / Reglas del garaje HP

These were the rules in Bill Hewlett and Dave Packard garage:
  • Believe you can change the world.
  • Work quickly, keep the tools unlocked, work whenever.
  • Know when to work alone and when to work together.
  • Share tools, ideas. Trust your colleagues.
  • No Politics. No bureaucracy. (These are ridiculous in a garage).
  • The customer defines a job well done.
  • Radical ideas are not bad ideas.
  • Invent different ways of working.
  • Make a contribution every day. If it doesn’t contribute, it doesn’t leave the garage.
  • Believe that together we can do anything.
  • Invent.
--------
Estas eran las reglas del garaje de Bill Hewlett y Dave Packard:
  • Cree que puedes cambiar el mundo.
  • Trabaja rápido, manten las herramientas a mano, trabaja en cualquier momento.
  • Discierne cuando trabajar solo y cuando trabajar en equipo.
  • Comparte las herramientas. Confía en tus colegas.
  • Nada de política. Nada de burocracia. (Resultan ridículas en un garaje).
  • Son los clientes quienes definen un trabajo bien hecho.
  • Las ideas radicales no son malas.
  • Inventa maneras diferentes de trabajar.
  • Contribuye cada día. Si algo no contribuye, no debe salir del garaje.
  • Cree que juntos podemos conseguir cualquier cosa.
  • Inventa.

Tuesday, March 31, 2009

Instalación de Python en Windows XP

Acabo de instalar Python en Windows XP para poder usarlo no sólo en Linux.
Instalé la versión 2.5.
En este video de ShowMeDo lo explican de una forma muy sencilla

Django book

Segunda edición del Django book.

Django y Python

Mirad lo que se puede hacer con Django y Python.
Este sitio ha ganado varios premios en USA. Pongo el link en el about para que vean quienes son lo creadores.
Es una startup de Chicago. Es muy interesante la diversidad de las formación de los miembros y la división de trabajo. En general parece estar dividido en gestores de contenidos, relaciones públicas/comerciales, diseñadores y desarrolladores.

Sunday, March 29, 2009

Irish Linux Users' Group

En esta web hay un montón de artículos explicando cosas bastante interesante sobre Linux.

Saturday, March 28, 2009

Links interesantes sobre Python

Blog de una chica interesada en Python y bases de datos:
Catherine: pyOraGeek

Pythonware
The Daily Python-URL

Python en el MIT OCW

Curso de introducción a la programación usando Python.
6.189 A Gentle Introduction to Programming Using Python

Otro curso un poco más avanzado que incluye orientación a objetos:
6.00 Introduction to Computer Science and Programming

Java en el MIT OCW

6.092 Java Preparation for 6.170

6.092 Introduction to Software Engineering in Java

Java Tutorials

Los tutoriales de Java de Sun.

Links útiles Java

Un link que tendré que consultar muchísimo si sigo con Java es:
Página de referencia del API Java (version 6).

Este otro está muy bien para seguir aprendiendo Java (cuando acabe con el Head First Java): Programación orientada a objetos y técnicas avanzadas de programación con Java. Es un curso de primero de informática de la Universidad de Jaen, en el que se profundiza bastante.

Wednesday, March 25, 2009

Linux Documentation Project

En la web del Linux Documentation Project se pueden encontrar un móntón de guías gratuitas sobre temas relacionados con Linux.
Yo he empezado a leerme Introduction to Linux - A Hands on Guide, pero hay muchas más.

Friday, March 20, 2009

Primeros pasos en Java

Hice mi primer programa orientado a objetos!
Es un programa muy tonto para probar, modificando uno que sale en el libro Head first Java.
Tengo tres clases: la que inicia el juego, el juego en sí y el jugador.
En la clase que inicia el juego se crea un objeto Juego y se le pide que inicie la partida. Durante la partida el objeto Juego piensa un número, crea un número de jugadores y les pide que adivinen el número. El diálogo entre los jugadores sale por pantalla.
Es una chorrada pero me lo pasé muy bien. Lo guapo es que si modificas algo en el programa. Sólo tienes que volver a compilar el código de la clase modificada. Todo lo demás sigue funcionando igual

Monday, March 16, 2009

JVM? JRE? JDK? J2SDK?

Esto es lo que dice el Java Beginners FAQ:
# What is a JVM? JRE? JDK? J2SDK?
* A JVM (Java Virtual Machine) is an imaginary (theoretical) machine that executes Java bytecodes.
* A JRE (Java Runtime Environment) is a software implementation of a JVM and all the standard Java libraries, and other bits and pieces that are needed to make the thing actually work.
* A JDK (Java Developer's Kit) or J2SDK (Java 2 Software Developer's Kit) are two different names for the same thing: a JRE plus tools like the Java compiler, debugger, and other things needed for basic Java development.
* The diagram on this page visualizes it nicely: JDK and JRE are brackets on the left, while the JVM is the blue layer at the bottom.

Al final me descargué:
Java SE Development Kit 6u12 for Windows, Multi-language

Instalando Java SDK

Voy a instalar el Java Software Development Kit (SDK) en mi Windows.
Si vas a la web de SUN Microsystems hay un montón de productos diferentes para descargar.
Este FAQ for beginners en JavaRanch te puede ayudar a distinguirlos.
Este sitio estaba recomendado en el libro Head First Java (creo que lo llevan los autores del libro). También tienen un foro para Java Begginers.