Sobre rescates y lo que está pasando en España

October 26, 2012

Hoy me van a permitir que escriba un artículo no técnico sobre mi opinión acerca de lo que está ocurriendo en España.

He visto este artículo, donde se aboga por rescatar a los deshauciados y eso me ha hecho reflexionar sobre algunas cosas que están pasando en España. En España la crisis se ha producido principalmente por la burbuja inmobiliaria. Dicha burbuja se fue inflando con los años por los intereses de bancos, constructoras y promotores. Los promotores y las constructoras tenían acceso a financiación barata, porque lo que estaban produciendo, viviendas, siempre revalorizaba su valor, y los bancos obtenían beneficios porque los compradores pagaban las hipotecas que solicitaban. La tasa de morosidad en el año 2007 se situaba entorno al 1%   Todavía hoy se sitúa en un sorprendente 8.72% y digo sorprendente porque tenemos 5.8 millones de parados y una tasa de desempleo del 25.02%.

No saldremos de esta crisis hasta que seamos conscientes de que tenemos que ser creativos con las soluciones aportadas. No podemos caer en una espiral como la que están provocando los dirigentes políticos. Me refiero por ejemplo a medidas como eliminar la paga extra de navidad de los empleados públicos. Dicha medida significa reducir un 1/14% el salario bruto anual de los empleados públicos. Si esa es la cifra que hay que recortar no se puede hacer de peor manera que eliminando la paga extra de navidad. ¿Por qué?. La mayoría de los empleados públicos utiliza la paga extra de Navidad para gastar, comprar los regalos de navidad, las comidas tan especiales que tenemos en dicha época del año, etc. Eliminar dicha paga extra va a hacer que se eviten en gran medida gastos excesivos en dicha época del año, por contra si se hubiera hecho el recorte manteniendo las pagas extras, pero rebajando mes a mes dicho porcentaje, seguramente el consumo en Navidad se hubiera mantenido un poco más cercano a la normalidad.

Del mismo modo algunos rescates deberían ser replanteados. Por ejemplo, si en lugar de rescatar a la banca, se diese un paso más y se tratase de encontrar soluciones para las causas que provocan la crisis de la banca, se conseguiría el mismo efecto, pero de una manera mucho menos lesiva para los intereses de los ciudadanos. Si en lugar de darle dinero a la banca, se diera dinero a los que no pueden pagar sus hipotecas para que puedan pagarlas, se estaría rescatando de una sola vez a las personas y a la banca. A medida que la economía se recupere, que se recuperará, dichas ayudas dejarían de ser necesarias, y probablemente la cifra total empleada será infinitamente menor que la que nos vamos a gastar (todos) en rescatar a la banca.

La austeridad, palabra que llena la boca de los dirigentes de determinado signo político, es necesaria, pero austeridad no significa socializar las perdidas y privatizar los beneficios. Cada vez que nos bajan el sueldo y nos suben los impuestos están haciendo más difícil que salgamos de la crisis, porque nos hundimos un poco más en la espiral negativa. Necesitamos que se estimule la economía, que se estimule el consumo, que se estimulen las exportaciones, que se estimulen las inversiones, especialmente aquellas asociadas a sectores que deben experimentar gran crecimiento en los próximos años. Hasta que no logremos que los políticos vean esto, no conseguiremos salir de ninguna crisis.


Jenkins and GIT

September 26, 2012

Jenkins is a continuos integration software designed to run tests and compile projects and providing lots of meaningful metrics over test and compilation process such as test coverage, coding style and such things. Among other features it’s possible to integrate it with several VCS, to ensure you can test every new piece of code.

Few weeks ago, I migrated the repository of the software project I’m most involved from Subversion to git. To make a long story short, the reasons were mainly the branches support. Now I need to make Jenkins use the git repository instead of Subversion one. This is pretty simple.

In my installation, Jenkins runs under its own user, which is jenkins. So first of all you need to become that user and create a new ssh key for it.

 esauro@legolas:~$ sudo su
[sudo] password for esauro:
root@legolas:/home/esauro# su - jenkins
$ $ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/var/www/.ssh/id_rsa): ~jenkins/.ssh/git
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ~jenkins/.ssh/git.
Your public key has been saved in ~jenkins/.ssh/git.pub.
...
 

They passphrase should be empty. The next step is to give read access for the repository to that ssh key. That’s beyond the scope of this post, as it depends on the git server that you are using.

Add and ssh config file which use that key for the git server. Edit the file ~jenkins/.ssh/config and add the next

Host <put_your_git_host_here>
IdentityFile    ~jenkins/.ssh/git

You need to add the git host to the known hosts file. The simplest way to do this is just connecting throw ssh using the jenkins user. That way we also test the ssh key is working, and the ssh key is in the authorized keys on the server side.

We are almost done, just config a user.email and a user.name

 jenkins@ubuntu:/tmp$ git config --global user.email "jenkins@your.server.com"
 jenkins@ubuntu:/tmp$ git config --global user.name "Jenkins CI"

The last step is to setup that repository in your jenkin task.


Oracle RMAN and archivelog

September 19, 2012

As usual, I start saying I’m not a DBA, but sometimes perform some DBA task, so…

I had again a problem with a database server running out of disk space due to Oracle database usage. This time it was archivelog and RMAN. I’m pretty sure you could find information of archivelog and rman out there, so I won’t repeat it here. In order to be able to uses RMAN a database must be in archivelog mode. In archivelog mode, the redo logs, are archived in separate files instead of overwritten. This actually means that, under some circumstances your disk will be fully used.

Our knowledge base says that, if you need to free disk space, you must do this:


RMAN> DELETE OBSOLETE;
RMAN> CROSSCHECK ARCHIVELOG ALL;

If you don’t get enough space after that, then


RMAN> BACKUP ARCHIVELOG ALL;
RMAN> DELETE ARCHIVELOG ALL;

However, in my experience what it actually happens when you do this is:

  • RMAN creates a new backupset for archivelogs
  • The archivelog files are removed

So it doesn’t free any space if you don’t move the backupset outside the filesystem. Even worse, it actually uses more disk space until you delete archivelog.

After removing (lot of times) archivelogs and RMAN backupset, the problem was still there, because new archivelogs files appeared, so, as it’s a critical database, and we still have export backups, we decided to put noarchivelog mode, until we realize what’s going on with this database.

More information about archivelog and RMAN:


Oracle ADR

September 9, 2012

Although I’m not a DBA, from time to time I do some DBA tasks. I decided to include them here.

Last friday, I got an alert of disk usage from an Oracle database server. As usual I started using the command “du” to trace the problem to the directory causing it. And I found the directory was called diag. After that I looked inside and found lots of trc files. After some google I knew it’s a new feature in 11G called Automatic Diagnostic Repository. Every time Oracle database has a problem, meaning returning some error, it stores a dump and some log files regarding the incident. The default policy is quite conservative, it stores traces for a whole year, while dump files for 30 days

To manage these files you should do it from a tool called “adrci”. Here is how I did the purge, after having a look to the policy used.

adrci> show control

ADR Home = <home_path>:
*************************************************************************
ADRID                SHORTP_POLICY        LONGP_POLICY         LAST_MOD_TIME                            LAST_AUTOPRG_TIME                        LAST_MANUPRG_TIME                        ADRDIR_VERSION       ADRSCHM_VERSION      ADRSCHMV_SUMMARY     ADRALERT_VERSION     CREATE_TIME                             
-------------------- -------------------- -------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- -------------------- -------------------- -------------------- -------------------- ----------------------------------------
2741315226           720                  8760                 2012-03-27 08:25:55.733126 +01:00        2012-09-05 00:13:23.940809 +01:00                                                 1                    2                    80                   1                    2012-03-27 08:25:55.733126 +01:00      
1 rows fetched

adrci> purge

</code>

Vacations over, Jasig CAS and Django

September 7, 2012

This is my first week after a whole month on vacations, so I’m feeling plenty of energy to work in my two principal projects at work:

  • Jasig CAS
  • A Django app to manage digital identity

On the Jasig CAS side, I have some upgrades to do, and also some challenges to face. Jasig CAS has a problem with the documentation. It symply doesn’t exists. The documentation is maintained separated from source, and they don’t have any QA process on it. I manage a custom deployment with a custom theme, and custom authentication handlers and repositories, to support spanish DNIe. To do this I need a custom login-webflow, so every new versión I need to figure out what changed to incorporated it into our login-webflow. With the source in Github the best  way to do this is using “history” on the login-webflow of the project.

I often need to expose user data through Web Services to other apps. Depending on the nature of the user data exposed this has some security concerns. My challenge regarding Jasig CAS is to include in the attributes some ones gathered throw web services. Doing this way I ensure the user data are exposed when the user is logged, so I have a point, a crazy developer won’t be able to poll the entire user database.

On the other hand the Django project has tons of things to do. The upgrade work is a continuous task, because I use so many libraries, that they are always getting security upgrades. This project is being developed in an internal svn repository. I want to move the project to git, mainly because I want to use feature branches to avoid hot fixes issues. I’m using jenkins to tests the test, although our test coverage is not that high now. I would like to publish this project in github too,  my boss used to agreed me, but he always said we need to improve the project to publish it “finished”. I convinced him that developing in github is a good idea, because if no one gets involve then I won’t be slower, but if some one gets involve I’ll expend some time in managing his/her collaborations, but also won’t expend time actually doing what he/she commited.


Retina Display, y la forma de hacer las cosas de Apple

July 6, 2012

Será que me estoy haciendo mayor, pero por algún motivo que desconozco cada vez me siento más atraido por el universo Apple. Actualmente el único producto de esta empresa que tengo es un Ipod, no soy un fanboy ni nada que se le parezca, pero creo que el camino que están siguiendo es interesante, y me siento atraido por él. Esto puede ser sorprendente viniendo de alguien que lleva siendo firme defensor del software libre desde hace más de 10 años. Pero creo que la industria de los ordenadores ha elegido el camino equivocado y Apple ha sido la única empresa que se ha desmarcada ligeramente de dicha tendencia.

Esta historia comienza hace diez años cuando aun era un estudiante de ingeniería informática y, harto de encontrar las salas de informática complemente llenas día tras día, me decidí a comprarme un portátil personal. Era una época extraña en la que no todo el mundo tenía portátil, la wifi era un concepto que estaba comenzando, e incluso los pendrive eran alta tecnología. El sistema operativo dominante era Windows XP, pero aún no había recibido ningún Service Pack ni nada por el estilo. Como la informática era y es lo mio decidí invertir algo de “pasta” en el portátil, no me iba a conformar con un equipo de los más básicos. Saque los ahorros que tenía y adquirí un fantástico Dell Inspiron 8500 con 1GB de RAM, 40 GB de disco duro, grabadora de DVD, y una pantalla de 15.4 pulgadas con una resolución de 1920×1200. Aún tengo este portátil conmigo y la pantalla es espectacular.

Con la popularización de los portátiles los precios fueron abaratándose, la industria se metió en una guerra de precios sin precedentes, y había que recortar, mi siguiente portátil tendría una pantalla con una resolución de 1280×800. Habían pasado 5 años y me había gastado dinero en un pantalla significativemente peor (y no solo por la resolución, la reproducción de color, la luminosidad, etc. habían empeorado por al camino también). Eso sí había ganado en portabilidad, el primero estaba por encima de los 3.5Kg, mientras que el segundo se quedaba en solo 2.3Kg.

A día de hoy la mayoría de portátiles tienen una pantalla de 1920×1080, no he encontrado nada mayor en ningún fabricante generalista salvo Apple con el retina display. La resolución es importante, y la calidad de la pantalla también, de hecho pienso que una pantalla de mejor calidad mejora más la experiencia de usuario que tener una memoria RAM ligeramente más rápida. Apple es la única empresa a día de hoy que parece preocuparse por innovar, y aquí no hablo únicamente de la pantalla. Los nuevos Macbook Pro cuentan con un nuevo diseño de ventilador destinado a conseguir que el aparato sea menos ruidoso, y lo grande de esto es que todos aceptamos ya que los portátiles son ruidoso cuando se usan. Otro ejemplo es el Time Capsule. Es una idea simplemente genial, un disco duro de red wifi, he buscado alternativas fuera del universo Apple y todo pasa por coger un disco duro de red y conectarlo a un router, esa solución existe, pero no es lo que busco, necesitaría más espacio, dos fuentes de alimentación externas, tendría dos posibles puntos de fallo, etc.

Hace cosa de un año estuve tentado de adquirir un iMac 27″ porque tiene una pantalla soberbia. Es un ordenador caro, pero si uno se plantea hacer uno similar por su cuenta termina dándose cuenta de que el precio es similar, ya que solo una pantalla similar cuesta (costaba cuando me plantee comprarlo) 1000 euros. Ahora con la llegada del Macbook Pro Retina pasa algo similar. El precio es caro, pero lo es porque utiliza procesadores ivy bridge, 8GB de ram, discos SSD, y una pantalla que no existe fuera del universo Apple. Creo que la innovación hay que pagarla, y necesitamos que alguien la haga. Sea por el tipo de clientes o por la búsqueda de maximizar el beneficio o por lo que sea, pienso que el fabricante de ordenadores menos conformista ahora mismo es Apple. Es cierto que son los más cerrados del mundo también, pero todas las decisiones tienen pros y contras, hay que sopesar que pesa más en cada caso.

Mi portátil está comenzando a pedir la jubilación ya y el caso es que el MBP Retina me gusta mucho y, aunque cuesta mucho dinero, creo que puede merecer la pena.

Perdón por el offtopic.

 


The (almost) perfect Django IDE: Pycharm 2.5

May 16, 2012

Disclaimer: Como hace algún tiempo escribí unos cuantos artículos sobre IDEs en inglés, considero justo hacer lo mismo con este.

Some time ago, I wrote a bunch of posts about state of the art IDEs for Django in that moment. I didn’t give up in my search, but I felt there was not reason to continue writing about thart. Until now.

The first time I gave a chance to PyCharm 2.5 I finished it thinking “What else can I expect for a Django IDE?”. I decide not to write a post in that moment, but to use it exclusivly as long as free trial allows me. It has several features I’m really keen on such as code autocompletion, django debugging, imports assitant, etc. One of the features surprised me more was the posibility of using the editor as a plain VIM (althought I don’t use it after all).

This is much better than any other Django IDE I have tried, but not everything shine. It’s propietary software and that’s a painful kick for a free software fan like me. Ok, it’s cheap, but I’m most concerned about the ‘free’ as in free speech (not in free beer). I found myself using ‘grep -r’ to find some usages, although usages features works really good in most circumstances. The dictionary import is easy, but involve the conversion of aspell dict manually, it should be automatically. Theres not support no wsdl, which is a pity, but you still can use a standalone such as soapUI, (which was suggested by jetbrains staff).

On the pros, I felt it really smooth, not as resource greedy as Eclipse or Netbeans, the code completion works really well, the debugging is pretty easy too, although it should be possible to use it for management command in an easy way too. One of the most interesting features is the code inspection. It performs a bunch of test on code, and let you see were you are not doing the things perfectly in a lot of different ways, such as ensuring PEP-8, checking CSS syntax, etc. this drive you to a better, more compatible, code; and hooking this feature to commits is awesome, as it prevents you from putting bad code into repository.

As I said we almost have the perfect Django IDE. Thank you Jetbrains folks!.