jueves, 26 de noviembre de 2015

CakePHP Simple Authentication and Authorization Application error en login()

Para los que estéis siguiendo el tutorial de CakePHP 2.x y estéis desarrollando el ejemmplo de Auth Simple Simple Authentication and Authorization Application. Cuando he seguido el ejemplo me he topado con que una vez que he añadido un nuevo usuario a la base de datos y he intentado logarme con ese nuevo usuario/password, la aplicación me rechazaba con el mensaje "Invalid username or password, try again"
Este error lo he solucionado aumentando el tamaño de almacenamiento del VARCHAR del campo password en la tabla Users, ya que al hacer el hash de la password con Blowfish, la base de datos trunca el hash a 40 caracteres, y por consiguiente, no se podía volver a autenticar el usuario al no cuadrar las passwords. El código SQL que hay que modificar para la tabla users es el siguiente:
CREATE TABLE users (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50),
    password VARCHAR(255),
    role VARCHAR(20),
    created DATETIME DEFAULT NULL,
    modified DATETIME DEFAULT NULL
);

miércoles, 19 de junio de 2013

Niños prodigio de las "Apps"

Muy buen artículo de Teknautas en El Confidencial Los niños prodigio de las 'apps' sobre los desarrolladores tempranos de apps. De todo el artículo me quedo con la respuesta a la pregunta que se hace a Jorque Izquierdo sobre la posibilidad de trabajar en Apple, "en principio, me gustaría trabajar para mí, no para otros, y en el caso de trabajar para una compañía, me gustaría que fuese una de Silicon Valley, sin demasiadas formalidades"

Algo está cambiando en nuestra mentalidad y el objetivo ya no es trabajar por cuenta ajena.

viernes, 26 de abril de 2013

Éxito de Geeksphone con nuevos modelos Firefox OS

Me había apuntado a la newsletter de Geeksphone en la que alertaban de unas noticias inminentes, y que serían de especial importancia.

Me he llevado una sorpresa mayúscula cuando he visto que han sacado dos nuevos modelos de móvil con sistema operativo Firefox OS y más aún cuando he visto que la demanda de estos dos modelos les ha desbordado, y en estos momentos su tienda on-line está fuera de servicio.
Los nuevos modelos son Keon y Peak

Keon





Peak




Me alegra ver como la mentalidad de los ingenieros españoles está cambiando y están empezando a pivotar de la idea del trabajo por cuenta ajena a crear empresas tecnológicas con una filosofía de innovación continua. Javier Agüera es el cofundador y CEO de esta compañía y es de Madrid, del barrio de Aluche, a un pasito de donde nací yo, en Carabanchel.


Éxito rotundo y enhorabuena

jueves, 11 de octubre de 2012

Una oferta de 500 euros al mes para un ingeniero con experiencia

En Infojobs han publicado esta oferta de trabajo

Parece ser que posteriormente se ha montado un follón de los que se suelen montar en internet, y les ha dado tanta vergüenza (o no) que han retirado el salario.
Se habla mucho de Responsabilidad Corporativa, Código Ético en el mundo empresarial, etc., etc. pero ¿Una empresa que es un portal de oferta y demanda de trabajo, no debería tener un código ético por el cual debiese rechazar este tipo de esperpentos? En fin, parace que ya solo nos queda internet para sacar los colores a estos pájaros.

miércoles, 3 de octubre de 2012

Just Eat compra Sindelantal

Leo en El Confidencial que Just Eat compra Sindelantal La venta del año: Just Eat compra la 'startup' española Sindelantal.com. Iñaki Arrola en su blog se felicita de la venta, como inversor no me extraña y lo llama un éxito Un gran exit. Just Eat compra Sindelantal. ¿Es un éxito que te absorba la competencia? No se, no lo creo.
Desde luego, es una realidad que los inversores y los emprendedores del proyecto se han puesto las botas. Si el bussines plan era ese, enhorabuena, pero me parece muy triste. Se que es muy injusto llamarlo pelotazo, porque hay una gran cantidad de trabajo detrás, pero es que se parece tanto...

martes, 2 de octubre de 2012

XML Parser en Android

A la hora de analizar un fichero XML y obtener información de él, Android ofrece su propia clase parser basada en SAX org.xmlpull.v1.XmlPullParser.
Para analizar un fichero XML este primero debe colocarse en la carperta de recursos del proyecto Android. En este caso, en la carpeta raw. En caso de no existir esta carpeta debe crease e incluir el fichero XML en esta ruta.
El flujo de entrada del fichero se obtiene del contexto de la actividad, de la siguiente manera,

...
InputStream inputStream = context.getResources().openRawResource(R.raw.fichero);
  
...
Este InputStream es pasado posteriormente al parser para iniciar el análisis del fichero. La manera de obtener el parser y asignar el flujo del fichero a este se realiza como sigue:
...
  XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
  factory.setNamespaceAware(true);
  XmlPullParser xpp = factory.newPullParser();
  InputStream inputStream =    context.getResources().openRawResource(R.raw.fichero);
  xpp.setInput(inputStream, null);
...

En este trozo de código se obtine un objeto XmlPullParser mediante un pattern Factory. Mediante el método setInput se asigna el fichero XML a analizar. Por último, se debe saber como recoger la información almacenada en el fichero XML. Al igualque SAX, que se maneja por eventos, aquí se debe recorrer el fichero llamando al siguiente evento de análisis mediante el método next().
...


  while (eventType != XmlPullParser.END_DOCUMENT) {
   if (eventType == XmlPullParser.START_DOCUMENT) {
    System.out.println("Start document");
   } else if (eventType == XmlPullParser.END_DOCUMENT) {
    System.out.println("End document");
    
   } else if (eventType == XmlPullParser.START_TAG) {
    
    System.out.println("Start tag " + xpp.getName() + " Text " + xpp.getText());
    
   } else if (eventType == XmlPullParser.END_TAG) {
    System.out.println("End tag " + xpp.getName() + " Text " + xpp.getText());
   } else if (eventType == XmlPullParser.TEXT) {
    System.out.println("--- Tag " + xpp.getName() + " Text " + xpp.getText());
   }
   eventType = xpp.next();
  }

...


En este ejemplo, se atiende al tipo de evento siguiente, pero también se puede acceder a distintos tipos de información como son el nombre del nodo, los atributos, etc..

viernes, 31 de agosto de 2012

OpenGL ES

En el blog de androideity hay dos post muy buenos sobre como dibujar una pirámide en un proyecto Android, usando para ello OpenGL ES 1.0.

Aquí está los enlaces:

La aplicación funciona correctamente si se realiza un cambio en la definición de las caras;

 // La forma como vamos a conectarlos

 private short caras[] = {

 0, 1, 2,

 0, 2, 3,

 0, 1, 3,

 1, 2, 3

 //2, 3, 4,

 //3, 0, 4

 };

Código fuente del proyecto:OpenGLProject