Configurar l’idioma Català a Linux

30Jul10

Estic fent algunes probes per a mostrar les dates a PHP en Català. Al meu servidor local tot funcionava correctament, pero al passar-ho al servidor remot ha deixat de funcionar.

El codi font es el següent (en PHP):

setlocale(LC_ALL, $lang . "_ES.UTF-8");
echo strftime("%A %e de %B del %Y a " . $translate->_("las") . " %H:%M", strtotime($time));

En castellà funcionaba correctament, pero al passar-ho al català no funciona.

Per a que funcioni, he hagut de fer la següent modificació: Obrir el fitxer /var/lib/locales/supported.d/local i afegir la darrera línea.

es_ES.UTF-8 UTF-8
ca_ES.UTF-8 UTF-8

Despres de desar el fitxer, he executat la següent comanda:

sudo dpkg-reconfigure locales

I ja ha funcionat, ja puc veure la data tant en català com en castellà :) !

No Comments

Error messages in Zend Form .ini file

24Jul10

I was searching the way to customize the validator error messages in Zend Form using the .ini file.

Finally I found two useful links:

  1. Rob Allen answering in StackOverflow
  2. One guy asking a similar question in Nabble

I copy here the content of my form.ini:

; apellido
elements.apellido.type = "text"
elements.apellido.options.label = "Apellido"
elements.apellido.options.description = "Introduce tu apellido"
elements.apellido.options.validators.notempty.validator = "NotEmpty"
elements.apellido.options.validators.notempty.options.messages.isEmpty = "Campo requerido"
elements.apellido.options.validators.notempty.breakChainOnFailure = true
elements.apellido.options.validators.strlen.validator = "StringLength"
elements.apellido.options.validators.strlen.options.min = "1"
elements.apellido.options.validators.strlen.options.max = "100"
elements.apellido.options.required = true

Some useful tips that you might know:

  • If you don’t put the “options.required = true” the “NotEmpty” validator doesn’t work.
  • If you don’t put the “breakChainOnFailure = true” the form will carry on executing other validators.
  • You can search in the Zend Framework source code for the messages that you can overwrite. Look at: “Zend/Validate/*” files.

I wish it will be useful for somebody =) !

No Comments

Buenas prácticas en PHP

13Jul10

Miguel, mi buen socio y mejor amigo ha estado impartiendo las dos semanas anteriores el curso de PHP Avanzado (programa en pdf) de Jedi (Junior Empresa). Se trata de unos cursos de verano que ofrece esta organización adherida a la UPC. Yo le he estado echando un cable a modo de becario.

Estuvo repasando en una de las sesiones de teoría las buenas prácticas a la hora de escribir código en PHP. A continuación las recopilo, pues aunque algunas sean obvias y parezcan básicas creo que es importantes tenerlas en cuenta, sobretodo si se trabaja en grupo. Además, PHP es tan flexible que permite hacer muchas marranadas.

1) Usar “soft tabs” (seguido de espacios) o bien configurar el IDE para que el botón de tabulación se transforme automáticamente en X espacios (normalmente 4). Esto evita los típicos problemas de indentado al leer el código en distintos editores de texto.

2) La llave que abre los bloques “{” debe ir en la linea siguiente de la declaración.

3) Pautas para nombrar clases:

  • Letra inicial en mayúscula.
  • Resto de nombre se escribe en CamelCase.
  • Se usa “_” para indicar la capa o paquete en la que se encuentra la clase (normalmente el folder).

4) Pautas para nombrar variables:

  • Poner nombres entendibles, explicativos y concisos
  • Usa camelCase

5) Pautas para nombrar constantes:

  • Toda en mayúscula
  • Distintas palabras separadas por “_”

6) Pautas para nombrar métodos:

  • Si es privado, añadir el “_” delante del nombre de la función

7) No usar “open tag” <?.  Estos pueden ser confundidos con el inicio de código <?xml. En su lugar, usar siempre <?php.

8) Para documentar usar siempre /* */ o //, nunca usar #.

Estas son algunas. Seguramente haya mas … si alguien quiere completar la lista lo añadiré sin ningún problema.

Editado: Añado algunas más que he recibido mediante los comentarios de CPS 2.0.

9) Los string literales van entre comillas simples:

$a = 'Example String';

Nota: Yo uso por defecto las comillas dobles, por el tema de los apostrofes en catalán. Lo importante es definir un estándar.

10) En la concatenación usar espacio antes y despues de “.”:

$company = 'Zend' . ' ' . 'Technologies';

11) Para concatenacion multilinea, poner el “.” en la linea siguiente y tabularlos a la altura de “=”:

$sql = "SELECT `id`, `name` FROM `people` "
. "WHERE `name` = 'Susan' "
. "ORDER BY `name` ASC ";

Muchas gracias por la colaboración ;) !

1 Comment

Iterar sobre array en PHP y Javascript

26May10

¡Porfin lo encontré!

En PHP hacemos el típico foreach:

foreach($array as $key =&gt; $value) {
echo "clave = " + $key;
echo "valor = " + $value;
}

Y en Javascript también se puede hacer del siguiente modo:

for(i in array) {
alert("clave = " + i);
alert("value = " + array[i]);
}
No Comments

Función de swap sin variable aux

03May10

Este es el típico problema que te ponen a veces para probar tu habilidad como programador.

Tienes que hacer una función para cambiar los valores de dos variables sin usar una variable auxiliar.

La función que a todos se nos ocurre és:

function swap($a, $b) {
   $tmp = $a;
   $a = $b;
   $b = $tmp;
}

Pero esta no cumple el enunciado. Una posible función que si cumple el enunciado es la siguiente:

function swap($a, $b) {
   $a = $a + $b;
   $b = $a - $b;
   $a = $a - $b;
}

Edición 05/07/2010:

Juan Antonio Galán, mediante los comentarios me hace llegar esta solución:

function swap($a, $b) {
   list($a, $b) = array($b, $a);
}

Y Víctor me comenta esta otra:

function swap($a, $b) {
   $a ^= $b ^= $a ^= $b;
}

Muchas gracias por vuestra aportación ;) !

2 Comments

w4@tvss: Fiscalidad de una startup

01May10

Esta semana en la Startup School de Tetuan Valley ha sido especialmente interesante. Primero Alexis Roque no estubo contando sus experiencias como emprendedor con su empresa Undefined, una empresa que combina servicios con el lanzamiento de sus productos. Tengo que felicitar a Alexis, porque hizo una de las mejores presentaciones que he visto

Después Jesús Osuna (abogado y docente) nos ha estado hablando de los aspector jurídicos y legales de una Startup. A continuación transcribo las notas que tomé en clase:

Descripción de empresa:

Es un ente que participa en el mercado bajo nuestra própia responsabilidad. Además, tiene personalidad jurídica con sus derechos y obligaciones.

En la empresa hay:

  • Socios: aportan capital, sin derechos ni obligaciones.
  • Administradores: representan y gestionan la empresa.

Tipos de administradores:

  • Único: 1 solo administrador
  • 2 administradores mancomunados: Si uno de los dos administradores quiere sacar 100 € del banco no puede hacerlo solo, necesitan ir los 2 a hacerlo.
  • 2 administradores solidarios: Cualquiera de los dos puede ir al banco y sacadr 100 €, no necesita del permiso del otro.
  • Consejo de administración: Como mínimo 3 personas y no hay máximo.

El pacto de socios o estatutos de la empresa són un documento interno que define la relación entre los socios. ¿Quién hace qué? ¿Que pasa si va bien? ¿Que hacemos si va mal? ¿Que esperamos de los socios? Y muchas cosas más …

Un consejo de Jesús es tener cuidado con los temas jurídicos de la empresa, igual que acostumbramos a tener cuidado con los temas tecnológicos de la empresa.

Proceso de inversión en una empresa:

Fase 1:

  • Acuerdos de confidencialidad, NDA (si los hay): Se firman para que el posible inversor no aproveche los datos que revela la empresa. Hay bastante polémica en este punto.
  • Carta de intenciones: Se declara hay intenciones de invertir la cantidad X de dinero en la empresa.
  • Proceso de “Due diligence”: Se revisa la empresa en tres aspectos; legal, fiscal y contable. En algunos casos también se revisa a nivel tecnológico. En este punto, las empresas que no han tenido el “rigor jurídico” del que hablaba antes, tienen que regularizar toda la empresa. Si nos hemos dejado algúna cosa ahora pagaremos las consequencias.
  • Contrato de inversión + Ejecución: Se transfiere el dinero pactado tal y como describa el contrato. Aquí cada inversión es distinta. Hay quien fija objetivos y se va haciendo entrega del dinero a medida que se alcanzan los objetivos, hay quien entrega todo el dinero de golpe y al principio, etc. En el contrato de inversión también se especifican las clausulas de salida, que también es un tema delicado. Hay que discutir todas las clausulas. Las más típicas són la clausula de permanencia, “drag alone” (arrastre) o “tag alone” (acompañamiento), entre muchas otras más.

Fase 2:

  • Cohabitación: Es el momento de convivir. La empresa va avanzando y se va generando el valor.

Fase 3:

  • Salida: Es el momento de desinversión. Hay varias opciones de salida: Venta de la empresa, salida a bolsa, entrada de más capital, etc.

Esto es un repaso de lo que vimos. Parece importente, pero tan solo es un resumen del cantidad de temas fiscales y legales que hay detrás de una startup.

No Comments

Prueba de concepto, #porrafcb

11Apr10

El otro día me di cuenta de que la gente está empezando a usar el hashtag #porrafcb en Twitter y me decidí en comprar el dominio.

Y este fin de semana me he puesto un ratito y he sacado una primera versión de porrafcb.com, todavía no tengo programado el cron que procesa los tweets y genera los resultados pero lo he probado de ejecutar manualmente y funciona.

Lo que podéis ver ahora es una parte, ahora tengo pendiente incluir los partidos por los que haces la porra y al finalizar el partido, actualizar el resultado y ver quien ha ganado. A partir de ahí no es difícil crear el ránking … a ver que tal sale.

porrafcb homepage v1

Si alguien tiene alguna idea más o quiere colaborar hacédmelo saber. Todavía no me he puesto en contacto con el usuario de twitter @porrafcb porque quiero esperar a que lo tenga un poco avanzado.

Nota: he vuelto a dejar mis tweets públicos … me he dado cuenta que cuando comento en algún hashtag, al ser privados no aparecían, lo qual le quita mucha gracia al tema.

No Comments

w1@tvss: The way of start-up

10Apr10

Voy a dejar algunas notas que he tomado en la primera sesión de Tetuan Valley Startap School, donde nos hablaron de la forma de funcionar y las características de una start-up.

“Welcome to NOBODY CARES, population 6 billion” los emprendedores somos muy pocos y a menudo nos sentimos incomprendidos por gente que tenemos a nuestro alrededor.

“The hardest thing about getting started is getting started”
by Guy Kawasaki (escritor del libro “The art of start” y el encargado de llevar la campaña de marketing del Mac de Apple).

Características de una startup:

  • Empresa de base tecnológica
  • Componente de innovación alto, que implica un cierto riesgo
  • Reciente creación
  • Creada para ser vendida

Un factor importante para una start-up es el equipo. “A-team players”. Es difícil y es caro tener un buen equipo.

Hablamos de este anuncio: “Mis expectativas son mayores que las tuyas”. CR9, Nike. Hay gente a la que le molesta pero tenemos que creer en nosotros mismos y apuntar alto. Si nosotros no nos convencemos a nosotros mismos … ¿a quien vamos a convencer? ¿Como vamos a conseguir rodearnos de los mejores y motivarlos para que suban a nuestro barco? Apuntar alto y pensar a lo grande.

En españa no se valoran las neuronas, se valora al tio que hace la trampa. Los que curran son gilipollas.

En lo referente al fracaso: “Try and fail, but don’t fail to try”. El fracaso está mal visto. No podemos pedir dinero y luego fracasar. La cultura del “Te lo dije”. “I didn’t fail the test, I just found 100 ways to do it wrong”. En realidad fracasar es la mejor manera de aprender la lección, no es malo tener algun fracaso en tu expediente.

Y por último un pequeño apunte sobre como hacer que un blog funcione?

  • Poco texto, menudo nos cuesta leer textos largos en la pantalla
  • Artículo con enlaces, citando fuentes, etc.
  • Poner imágenes
  • Habilitar y contestar a los comentarios, tanto en nuestros blogs como en los de la competéncia, mismo sector, gente que hace lo mismo que tú, etc.

Dejo algunas fotos de la sesión:

Alex y Josep

Alex Barrera junto con Josep Amorós, uno de los organizadores de Barcelona

Gregor

Gregor, CEO de Sclipo en su charla sobre inversión

Mike

Miguel y Santiago concentrados escuchando la charla de Gregor

No Comments

Tetuan Valley Startap School 2010

08Apr10

A partir de esta semana empieza nuestra andadura en Tetuan Valley Startap School 2010. Esto se trata básicamente de un programa de formación para emprendedores … a un nivel bastante básico pero tocando temas generales en start-ups que a mi personalmente me interesan.

Tenéis toda la información del programa en este post del blog de Tetuan Valley.

En el programa participan 10 proyectos que durante 6 semanas nos reuniremos todos los jueves de 19:00 a 23:00 para recibir estas lecciones sobre como empezar una start-up en Internet.

Durante estas 6 semanas iré compartiendo toda la información que vaya recopilando en este blog, a modo de “libreta” para recopilar, resumir, compartir e inmortalizar todo el conocimiento.

El proyecto que presentamos es 140promote.com, una herramienta para hacer promociones en Twitter. Ya os ampliaré la información.

Nota: En breve pondré la información de la primera sesión, que ha sido hoy mismo.

No Comments

Objetivos para 2010

27Jan10

Bueno, como es habitual a principios de cada año (mierda ya se me ha hecho Febrero) y ya de paso respondiendo al meme de Miquel (aka gafeman) voy a repasar los objetivos que me propongo para 2010:

Referente a mis proyectos en Internet:

  • Opinionesde.com: El proyecto ya lleva un tiempo un poco triste. Hace poco pusimos AdSense para contenido pero parece que no funciona mucho. La página en sí tiene un buen SEO para “htc magic”, ya que en su época hicimos algo de link building pero ahora ya ha quedado un poco muerta. No tengo objetivos concretos, pero si me gustaría mantener el dominio y el proyecto por si se le quiere dar un vuelta o lo que sea. Ahora estoy intentando posicionar opiniones de nexus one, a ver si funciona …
  • alertas.de: És primo hermano de Opinionesde.com. Aquí nuestro compañero Santiago está dandole caña al tema pero yo no le puedo seguir. Me encantaría añadir alertas o notificaciones sobre promociones en los clubes de venta online como BuyVIP, Privalia, Vente-privee, etc. pero no he encontrado de momento un feed que agregue todas estas promociones. Quizás es una buena oportunidad para hacer un pequeño servicio que lo haga, y que alertas.de se beneficie de ello.
  • FronteraEstates: Llevamos ya con este proyecto desde octubre de 2008, es decir, ya nos acercamos al año y medio. Tal y como dice nuestro amigo Claudio: “Persisténcia“. Quiero darle una oportunidad y mi intención es continuar con el proyecto gran parte del 2010. Lo cierto es que no veo el rumbo muy claro, pero a corto plazo sabemos muy bien que hay que hacer y tal y como dice la teoria: persistiremos.
  • SocialTrivial: Pués todavia no había hablado el público de este proyecto. Es una idea muy buena idea de Miguel, de hecho fué su primer proyecto y ¡desde el primer momento me enamoró la idea! He hecho una pequeña página con información para describir la plataforma y marcar un poco de terreno. Parece que hay poca competéncia y ahora tengo un dilema interno sobre si hacerlo una app. de Facebook o una web aparte. Por otro lado no tengo claro el modelo de negocio … así que sigo dandole vueltas a ver si lo maduro. No descarto presentarlo en algún iWeekend.

A nivel profesional:

  • Rentamus: Tampoco he dicho nada al respecto pero en Octubre de 2009 cambié de empresa. Sentía que mi perfil profesional se estaba encarando hacia un sector que no quería y decidí buscar otro puesto de trabajo. Escogí Rentamus porque és una start-up en fase semilla, había estado en SeedRocket (puede parecer un argumento estúpido pero si estubo ahí es que los organizadores algo vieron …) y me gustó como me lo presentó David (enlazo un vídeo donde explica él mismo qué és Rentamus).

A nivel personal:

  • Formación: Hace bastante poco que terminé la carrera pero mi intención es no dejar de formarme. Tengo en mente seguir estudiando más a medio plazo y lo que quiero hacer ahora es leer sobre el desarrollo de habilidades (lo que en inglés llaman soft-skills). Además seguir leyendo sobre Emprendedurismo.

Objetivos:

  • Leer … 12 libros (por poner algo).
  • Ir haciendo cursos de “Éines bàsiques de gestió” en Barcelona Activa.
  • Deporte: Siempre voy con altibajos en cuanto a mi forma física. Creo que hasta cierto punto és normal, pero debo conseguir mantener mas o menos un peso. Mi objetivo es estar entre 70 – 74 kg. De momento estoy jugando a fútbol los lunes y los sábados y voy al gimnasio a hacer algo de running como mínimo 3 días a la semana. Así que hasta ahora estoy cumpliendo el tópico “este año me apunto al gimnasio”.

Objetivos:

  • Alcanzar los 72 kg.
  • Llegar a fin de año < 74 kg.
  • Networking: Tengo complejo de técnico y a menudo caigo en el engaño de pensar que para que un desarrollador web necesita contactos? En fín, a mi personalmente me cuesta bastante salir de mi zona de confort, y este año tengo que conseguir asistir a más eventos. Iniciador y First Tuesday (a ver si se sigue haciendo) deberían ser eventos obligados cada mes.

Objetivos:

  • Asistir al menos a 8 Iniciadores y como mínimo a 1 First Tuesday.
  • Conocer en persona a Miquel (aka Gafeman).

Bueno, no me extiendo más que me ha quedado un post demasiado largo. Estoy abierto a que me recomendéis lecturas :).

1 Comment