Jul 20 2010

Equation y Matrix, mis últimos desarrollos en PHP

tatai

Para recuperar un poco el blog, que últimamente está muy mustio, voy a hablar de un par de desarrollos que he hecho y publicado en PHP. Los he llamado con el original nombre de Equation y Matrix.

Los tenía desde hace bastante tiempo, pero aprovechando que le estoy dando a TDD y a los testeos unitarios, los he adecentado y completado hasta ponerlos decentes para publicarlos y este es el resultado.

Equation

Es una sencilla clase que nos permite trabajar con una ecuación polinomial de grado n-ésimo mediante un objeto, facilitando el acceso a cada uno de los coeficientes así como una sencilla evaluación de la misma (basada en el método Horner).

Además, permite mostrar la ecuación renderizada al formato indicado de una forma muy sencilla. Actualmente en el paquete existe la opción de mostrarlo en formato HTML, cuyo resultado final sería algo del estilo: y = x3 + 7x2 + 10

El código completo, incluyendo ejemplos y test unitarios está publicado en github. También lo he publicado en phpclasses (sin test unitarios por lo engorroso que es subir cada fichero de forma individual).

Matrix

Este paquete consta de varias clases, la principal es Matrix que permite representar en un objeto una matriz matemática. Podemos además realizar distintas operaciones que a día de hoy son:

  • suma de dos matrices
  • resta de dos matrices
  • multiplicación de dos matrices
  • multiplicación de una matriz por un escalar
  • multiplicación de una fila por un valor
  • multiplicación de una columna por un valor
  • cambiar dos filas
  • cambiar dos columnas
  • inversa de una matriz
  • unir dos matrices compatibles
  • trasponer una matriz
  • eliminación de Gauss-Jordan (con el que poder obtener, por ejemplo, ajustes polinómicos de cualquier grado o inversas)

Las clases, con sus correspondientes test unitarios, están publicada en github.

Enlaces


May 18 2010

Múltiples cuentas en github.com

tatai

Al hilo del último post sobre cómo “tunear” un poco nuestro ssh, podemos usarlo por ejemplo si tenemos varias cuentas en github.com. Cuando ocurre esto, por cada cuenta que tienes en github, tienes que añadir una clave pública; esto no es ningún problema ya que podemos crear tantas claves como queramos, pero lo que no es tan fácil es cambiar la cuenta ssh con la que debe conectarse el cliente de git a github. No es muy común, pero te puede ocurrir como a mi, que tienes tu cuenta personal y la del trabajo.

Para poder conseguir esto, supongamos que tienes estos datos:

  • Cuenta personal
    • Usuario: usuario_casa
    • Fichero de clave: ~/.ssh/casa
  • Cuenta trabajo
    • Usuario: usuario_trabajo
    • Fichero de clave: ~/.ssh/trabajo

Lo que habría que hacer es tener un fichero de configuración ssh (recordemos que está en ~/.ssh/config) de la siguiente forma:

Host github
    HostName github.com
    User usuario_casa
    IdentityFile ~/.ssh/casa

Host github-trabajo
    HostName github.com
    User usuario_trabajo
    IdentityFile ~/.ssh/trabajo

La diferencia es sutil: cambia el valor que ponemos en Host (los espacios o tabulaciones son opcionales, yo los uso para dar un poco más de orden).

Con esto, tenemos que cambiar la dirección con la que nos conectaremos con la cuenta de trabajo. Si por ejemplo, para añadir el repositorio remoto usamos:

git remote add origin git@github.com:usuario_trabajo/proyecto.git

Ahora deberemos poner:

git remote add origin git@github-trabajo:usuario_trabajo/proyecto.git

Es decir, ssh se encargará automáticamente de hacer el cambio por nosotros y, de esta forma, no tendremos problemas decidiendo con qué usuario debe conectar o no, está todo en el fichero de configuración ;)


Feb 26 2010

Bash completion for symfony (autocomplete)

tatai

I have just pushed into GitHub a bash autocomplete script for symfony.

This script allows to autocomplete your first level option when calling to symfony script. It is easy to install (just copy one and call it manually if you do not have access rights). All steps and working issues are in the wiki. It also accepts custom actions.

This is a working example once script is corretly installed and invoked:

Assuming symfony is in current folder and [tab] y tab key press action, this is an example of how symfony_complete works:

$ ./symfony con[tab]figure:[tab][tab]
author    database
$ ./symfony doctrine:a[tab]uthor

We are pleased to know what you think and any issue you have. You can find us on GitHub.

Related links: