Cuando Mongoid Object está vacío

Estaba yo haciendo mis pruebas con MongoDB cuando he reparado que el campo “_id” de todas mis colecciones está vacío. Para el que no lo sepa, todos los documentos en MongoDB (y en otras bases de datos NOSQL como CouchDB) tienen que tener un campo “_id” que consiste en 24 caracteres hexadecimales, viniendo a ser como el `id`autonumérico de las bases relacionales.
Bueno, parece ser el driver de PHP sólo nos deja contar con el campo “_id” si llamamos explícitamente a new MongoId() haciendo un $_id= new MongoId($_id);, como bien se explica en http://php.net/manual/en/mongoid.construct.php
Vale, bien, ese no era el problema, el problema era que aún haciendo esto, mi campo “_id” seguía vacío.
Bueno, pues parece que se hace el lío el sólo al hacer el cast a JSON y como ya no le parece una cadena en hexadecimal, lo ignora.
SOLUCIÓN:

$data['_id'] = $data['_id']."";

antes de hacer el insert.
Atentos al .”" porque con eso nos aseguramos de que lo toma como cadena y, entonces, ya nos mete el “_id” correctamente.

Os dejo algunos ejemplos de mi código funcionando correctamente los inserts usando simplemongophp:
array('name' => 'prueba', 'password' => 'prueba', 'creation' => time(), 'role'=> 1, '_id' => new MongoId()."")
para el ejemplo del post anterior quedaría así:
foreach ($row as $k => $v){
$_[_id]= new MongoId().”";
$_[$k] = utf8_encode ($v);
}

Db::batchInsert(‘prueba’,array($_));

Comments (1)

Convertir datos de mysql a mongodb

Para un proyecto personal en el que estoy utilizando ExtJs he decidido abandonar MySql en favor de MongoDB.
Para ello, hize un dump de la base de datos e intenté importarla con mongoimport.
El caso es que mongoimport me tiraba un críptico error:
./mongoimport -d pruebas -c piedras stones.json
me daba siempre
imported 1 objects
encountered 1 error

harto de encontrar una salida para este problema, decidí volcarlo a json yo mismo con PHP
encontré la clase SimpleMongoPHP y con unas pocas líneas de código conseguí extraer los datos de Mysql y directamente insertarlos en MongoDB.

Dejo el código aquí a modo de máquina del tiempo por si lo vuelvo a necesitar.

require "Db.php";

//crear primero la colección con phpmoadmin a mano
  $mongo = new Mongo("localhost:27017");
  define('MONGODB_NAME', 'prueba');

  $conn = mysql_connect('localhost', 'root', '*****') or die('no conecto');
  $db_selected = mysql_select_db('stones', $conn);
  if (!$db_selected) {
       die ('Can\'t use foo : ' . mysql_error());
  }

  $sql = "SELECT * FROM stones";
  $result = mysql_query($sql, $conn);

  while ($row = mysql_fetch_assoc($result)) {
     $_ = array();
     foreach ($row as $k => $v){
       $_[$k] =   utf8_encode ($v);
     }

     Db::batchInsert('piedras',array($_));
  }


como se ve en el código, la madre del cordero está en el método Db::batchInsert que nos permite insertar un array en una colección de MongoDB del tirón.

PD: cuidado con el encoding, parece ser que MongoDB requiere que el texto que le introduzcamos esté en UTF8, así que ya sabéis, utf8_encode() para insertar y utf8_decode para leer los datos.

Dejo para la posteridad un ejemplo de un registro para el novicio

[_id] => MongoId Object (4ba5fb738ead0ed20f650100)
[id] => 86
[reference] => S0086
[picture] => 514z515
[installed_picture] => 443z444z445
[type] => 6
[color] => 13
[subtype] => Amber Onyx
[origin] => Iran
[description] =>
[uses] => Commercial & Residential, Interior & Exterior, Floor & Wall, Backsplashes, Countertops, Fireplaces, Tub Surrounds, Vanities
[other_name] => Yellow Onyx
[quarries] =>
[slug] => amber-onyx
[foto] => 1

Tags: , , , , , , ,

Comments (1)

Profesionales IT más demandados y mejor cotizados para el 2010.

La tendencia en el mercado laboral de las nuevas tecnologías no va a variar en el futuro más próximo y los profesionales de la tecnología JAVA serán los más buscados un año más. Esta tecnología es con diferencia la más demandada, con más del doble de las ofertas de empleo que su inmediato perseguidor, el programador .NET. En cualquier caso, ambas tecnologías han concentrado el 40% de los profesionales demandados por las empresas en el 2009 y así prevé que continúe la situación la consultora Adecco Information Technology.

El programador JAVA ha sufrido una ligera disminución en su banda salarial a raíz de la situación actual: de 24.000 euros anuales que recibía este profesional con un año de experiencia, actualmente puede percibir alrededor de 22.000. En el caso de un profesional con unos 3-4 años de experiencia, su salario ha caído de unos 35.000 euros anuales de media a 27.000, pero con esta experiencia su siguiente paso natural es ser un analista programador superando esta banda salarial hasta poder alcanzar los 32.000 euros.

Tags: , , , , ,

Leave a Comment

El negocio de las consultoras de recursos humanos

Si trabajas en el ramo de la informática casi seguro alguna vez habrás trabajado revendiendo tus servicios, esto es, a través de una consultora de recursos humanos. Seguro, también, que habrás intuído que ésta se lleva muerto una cantidad importante. Pues tienes razón. Basándome en mi propia experiencia con este tipo de revendedores de servicios, voy a apuntar aquí, a modo de máquina del tiempo, como se encuentra el panorama en la actualidad, a primeros de 2010.
Lo primero que debemos saber es que este tipo de empresas se suelen asegurar por contrato un mínimo de 2000 € por trabajador colocado. Eso es el mínimo, normalmente se llevan un porcentaje del salario bruto del trabajador. Si éste cobra 20.000 € al año o menos, ellos suelen percibir una cantidad que ronda el 12 %. Cuanto más cobre el trabajador, mayor es su porcentaje a cobrar, así hasta los 40.000 € (sueldos mayores no he tenido la suerte de ver) en los que suelen acaparar un 20%.
En cuanto al tema de la negociación del puesto, suele llevarlo la consultora exclusivamente; no permitiéndosele al empresario más que una o varias entrevistas. Toda comunicación posterior se suele canalizar a través de la consultora.
Por la parte del empresario, se le suele obligar (lógicamente) a no contratar en el plazo de un año a ninguno de los candidatos descartados que le presente la consultora.
Bueno y hasta ahí puedo leer… personalmente, como trabajador me disgusta bastante la existencia de empresas que parasiten el proceso de selección de personal. Creo que se lo llevan muerto por presentar a 4 personas a las que no conocen de nada y apostar por una o dos (que, en el mejor de los casos, tampoco conocen de nada). Como empresario tampoco me parece que ofrezcan un servicio interesante ya que todo lo que hacen ellos lo puedes hacer tu mismo (a no ser que tu empresa sea una multinacional y realmente contratando a la consultora ahorres mucho tiempo)

Tags: , , , , , ,

Leave a Comment

10 consejos para emprender un negocio

Desde el blog de François Derbaix encuentro este decálogo para emprender un negocio:

* Solucionar 1 problema / facilitar la vida: ¿qué valor al usuario aporta tu negocio?
* Equipo multidisciplinar, compatibles y misma visión. En Internet 1 técnico, 1 usabilidad y 1 gestión.
* Apoyo familiar: no tener apoyo de tu pareja acabará con tu negocio… o con tu pareja (o con ambos).
* Empezar con dinero propio + FFF (puede que algún business angel, pero ni fondos ni bancos)
* Reparto capital: según € invertidos y trabajo o salario al que se renuncia
* Dedicación full time: es importante recibir todos los impulsos para reaccionar rápido. + tus competidores estarán a tiempo completo: a tiempo parcial no tienes ninguna oportunidad de ganarles.
* Factor X: un equipo motivado, unido y con el mismo objetivo = Factor X, alma, mojo.
* Orientación al usuario: pensar en el usuario, en el usuario y en el usuario. El usuario es el rey, no el cliente.
* Pareto + KISS: el 20% del esfuerzo te da el 80% del resultado así que Keep It Simple, Stupid.
* Hacer deporte: busca mínimo 1 hora a la semana para hacer deporte y rebajar la presión, ésto es una carrera de fondo.

Son unos consejos que comparto al 100%

Tags: , , , ,

Leave a Comment

ExtJS y utf8

Pongo este post tanto a modo de máquina del tiempo como recordatorio como para echar un cable a todos los que se vean en la misma situación que me ví yo.
El caso es que tanto para introducir como para extraer datos en un MySQL a través de ExtJS, si utilizamos utf-8 podemos encontrarnos problemas de codificación.
A continuación unos consejos para sobrevivir a la crisis del encoding:

* usar siempre en el html

 [meta http-equiv="Content-Type" content="text/html; charset=utf-8"] 

. Esto nos permite hacer un display correcto de los caracteres en todo momento.

* después de extraer el dato de la base de datos hacer un utf8_encode() (si usáis PHP) antes de enviar el dato por Json a ExtJS. Esto nos va a permitir que ExtJS maneje correctamente caracteres con eñes y otros simbolos raros.

* antes de insertar un dato que viene de ExtJS en la base de datos, debeis hacer un utf8_decode() ya que ExtJS por defecto toma como encoding utf-8 por defecto.

Bueno, con eso ya no deberíais tener problemas de encoding.

Tags: , ,

Comments (1)

Listado alfabético de las “Top Employers España 2009″

Listado alfabético de las “Top Employers España 2009″

Abengoa
Almirall
Atos Origin
Avanade
Banesto
Bankinter
British American Tobacco Iberia
Campofrío
Canon España
Caser
Celsa Group
Correos
Cristian Lay
everis
Grupo Cortefiel
Grupo Thales
Ineco-Tifsa
Janssen-Cilag
KPMG
LG Electronics España
Orange
PC City Computer Superstore
Pepsico Iberia
Philip Morris Spain
Red Eléctrica de España
Repsol
Schindler
Telefónica España
Vodafone
Zurich

Ver más información en:
http://www.topemployers.es/Default.aspx?alias=www.topemployers.es/employers

Tags: , , , ,

Leave a Comment

las profesiones más demandadas en 2009

Ranking de los 10 profesionales más buscados según el último barómetro laboral de Randstad

Administración y dirección de empresas:concentra el 20% de la oferta actual y se espera que siga al mismo ritmo en los primeros meses de 2010. Contables habituados a utilizar nuevas tecnologías, técnicos de finanzas, gestores de proveedores para realizar el control de cuentas, pedidos yo negociación de precios de compra y administrativos son algunos de los puestos de trabajo más demandados que se engloban en este sector.

Ventas y comercial: centraliza el 15% de las ofertas de empleo generadas con gran variedad de puestos: desde ingenieros con vocación comercial, hasta gestores comerciales que se encargan de la comercialización y desarrollo del negocio.

Producción: en este sector se engloban las categorías de electricidad, automoción, limpieza, seguridad, carpintería, agricultura, etc y es que los oficios siguen teniendo un fuerte peso en distintas ramas de actividad, con un 11% del total de la oferta de empleo.

Atención al cliente: conseguir nuevos clientes y, sobre todo, retenerlos es el objetivo de este perfil profesional con unas funciones que se consideran básicas para el funcionamiento de las compañías. Los requisitos para estos puestos: clara orientación al cliente, capacidad de comunicación, flexibilidad horaria y don de gentes.

Turismo – restauración: es uno de los sectores más potentes a nivel nacional y las empresas cada vez solicitan profesionales con experiencia demostrable. Recepcionistas, botones, personal de cocina, camareros… .Todos ellos demostrando su orientación al público, gestión del estrés o flexibilidad horaria.

Logística:distribución, almacenaje, compras y aprovisionamiento y transporte son los cuatro grandes grupos de especialidad de este sector, que requiere profesionales como responsable de almacén, técnico de logística, encargado de inventarios, mozos, manipuladores y reponedores

Transporte:muy unido al sector logístico, sigue siendo un área estratégica para algunas empresas. Los puestos de carretillero, conductor y repartidor son los más solicitados.

Finanzas:productos bancarios y bursátiles son las especialidades más demandadas en este ámbito. Aunque la crisis ha provocado una fuerte contracción de este sector, también ha producido un aumento en la petición de determinadas posiciones claves en la empresa, así, los controllers (especialistas en preparación y seguimiento de presupuestos y análisis de desviaciones), contables, gestores de cobros y asesores financieros son algunos de los puestos más solicitados.

Informática:la apuesta tecnológica de las empresas hace que los programadores e informáticos de sistemas sigan siendo algunos de los puestos más demandados.

Sanidad:medicina es una de las titulaciones con mejores salidas profesionales debido al déficit de profesionales en este sector. Además, enfermeros, profesionales de farmacia, psicología y medicina alternativa cuentan con una demanda creciente en el mercado.

Fuente: blog de empleo de clasificados de elpais.es

Tags: , , , , , ,

Leave a Comment

Módulo de 11870.com para Drupal

Con motivo del lanzamiento del calendario de eventos sobre el mundo árabe e islámico Eventos Alharaca, se me ocurrió hacer un módulo para Drupal que sacara locales relacionados aleatoriamente pero geolocalizando la ip del visitante. Que yo sepa, los unicos que han hecho algo así han sido los de Vocento para sus propios medios.
Bueno hacer un módulo en Drupal no tiene mucho misterio, y el fantástico API de 11870 tampoco. El API funciona fenomenal, así que la dificultad estaba en geolocalizar a los clientes.
A través de @adirael (ellos en su empresa lo usan para mostrar la publicidad de Audiotube), llegué a dar con Maxmind. Ellos dan el 77% de positivos en una exactitud máxima de 25 millas en España. Realmente te localizan la ciudad, pero en grandes ciudades no me coge bien los códigos postales.
Esto me ha obligado a poner un radio máximo en la búsqueda con el AP de 11870 bastante grande, varios kilómetros.
Si consiguiera un método de geolocalización más exacto, podría reducir el radio y mostrar resultados realmente próximos.
Módulo de 11870 para Drupal
Bueno, de momento la cosa se va a quedar ahí.
He estado mirando la licencia de MaxMind y creo que no me permite redistribuirlo sin adquirir una licencia. Cosa que, de momento, no pienso hacer.
Si no, hubiera podido subirlo al cvs de Drupal y liberarlo para su comunidad. Todo esto no quita para que si alguien está interesado se ponga en contacto conmigo y con gusto se lo cedo para que lo utilice sin ningún problema.

Tags: , , , , , , ,

Leave a Comment

Encontrar trabajo con twitter

Si buscas empleo y usas twitter a lo mejor te interesa añadir a @currofile.
Comento a continuación este caso que valoro como una iniciativa magnífica y una gran idea.
Detrás de @currofile se encuentra Marina, una persona que desde hace seis meses viene realizando la tarea de poner en contacto a candidatos con empresas que ofertan empleos en el sector online.
Ahora mismo a Marina le están llegando muchísimas ofertas de empleo. Ella se está dedicando a gestionar muchos CV, mandar muchos correos, poner la gente en contacto, revisar una barbaridad de currículos y dar consejos de mejora de los mismos.
Que conste que no es solo para España. @currofile ha ayudado a gente en Italia, UK, USA (aunque se limita realmente a EU), aunque por supuesto tiene mas alcance aquí en España.

Está consiguiendo empleo a mucha gente, así que si estás en paro o buscas cambiar de empleo, ya sabes.. añadelo a tu twitter!

Tags: ,

Leave a Comment