viernes, 22 de enero de 2016

Instalar MongoDB en MAC

Una simple guía para instalar MongoDB en la mac. Basado en Installing MongoDB on a MAC
1. Descargar mongoDB
2. Extraer los documentos del archivo descargado
Método fácil: Hacer doble click en el archivo
o
tar -zxvf mongodb-osx-x86_64-n.n.n.tgz
3. Copiar los documentos extraidos a la carpeta destino 
Método fácil: Renombrar el folder (mongodb) y moverlo al directorio del usuario (/Users/charz/)
o
mv /Users/charz/Downloads/mongodb-osx-x86_64-n.n.n /Users/charz/mongodb
4. Crear el folder data
Método fácil: Crear la siguiente estructura de folder: data/db bajo el directorio de usuario (/Users/charz)
o
mkdir /Users/charz/data
mkdir /Users/charz/data/db
5. Poner lo binarios en el path
cd $HOME (solo para asegurar que estas en el directorio de usuario - /Users/charz)
echo “export PATH=$PATH:/Users/charz/mongodb/bin” >.bash_profile
Para asegurarnos que fue creado exitosamente:
ls -la (el archivo .bash_profile debe aparecer)
cat .bash_profile (el folder mongodb/bin debe aparecer)
Salir del terminal y abrirla nuevamente.
6. Crear el archivo de configuración mongod.conf
Mi archivo mongod.conf
# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /Users/charz/mongodb/mongod.log

# Where and how to store data.
storage:
  dbPath: /Users/charz/data/db
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:
Copia el ejemplo de las líneas de arriba o lo puedes descargar de  aquí: MongoDB Github
Abrir TextEdit
Opción "Format" - "Make Plain Text"
Cambiar “logpath=” y “dbpath=”
Guardarlo en /Users/charz/mongodb/mongod.conf (folder de instalación de mongodb)
7. Iniciar mongoDB
mongod -f /Users/charz/mongodb/mongod.conf (No debería darte ningún error)
"mongod" para abrir el servidor mongodb
8. Probar mongoDB
Abrir un terminal
mongo
use mydb
db.test.save({a:1})
db.test.find() (el objeto creado debe aparecer)
"mongo" para abrir el cliente mongodb
  • Nuevas contribuciones y/o correcciones son BIENVENIDAS!

domingo, 17 de agosto de 2014

Cómo preservar un developer durante muchos años

Hola! En primer lugar, con esta publicación quiero explicarles los principales motivos de por qué existe una gran rotación de developers en las empresas. Yo, como developer en formación con algunos años de experiencia, doy fe y credibilidad de muchos de los puntos listados, pues los developers no somos robots que solo se sientan en frente de una computadora.

Cosas que hacen que un developer decida quedarse en una empresa:

  • Buen salario (superior al mercado)
  • Beneficios de ley completas (planilla, seguro de vida, seguro médico, vacaciones, etc)
  • "Working from Home". El trabajar desde casa al menos 1 día a la semana puede ser más productivo para un developer. Muy pocas empresas tienen esos beneficios.
  • Flexibilidad de horario. Los developers somos trabajadores nocturnos, en la mayoría de casos, y muchas veces estamos desvelados todo el tiempo, así que las empresas que se ponen exigentes con el horario terminan cansando al developer. El developer de alguna manera ajustará su horario y trabajará su cantidad de horas semanales requeridas.
  • Línea de carrera laboral. Debe existir de alguna manera una línea de carrera en la empresa para que el developer se sienta motivado profesionalmente.
  • Trabajar por objetivos y no por horas laborales. Exagerando, a la empresa le debe dar igual si tu developer llega 30 minutos tarde o no, siempre y cuando haga su trabajo bien en tiempo y forma, no hay por qué preocuparse.
  • El código de vestimenta está bien hasta cierto punto. Pero obligar a tus empleados a traer camisa, corbata y pantalón de vestir todos los días. Eso puede entenderse para reuniones importantes. Tampoco el developer vendrá en short, sandalias y un polo manga cero. Jeans y polo o short y polo están bien. La idea es que el developer se sienta augusto con su vestimenta para que el código fluya mejor.
  • Uso de nuevas tecnologías. Las empresas deben hacer sentir al developer esa necesidad de competir y mejorar en el ámbito profesional y laboral. 
  • No estar encima del developer viendo su pantalla o preguntando cada 10 minutos que está haciendo. El developer sabe lo que tiene que hacer, y si no lo sabe, lo logrará de alguna manera.
  • Las redes sociales quitan tiempo. Pero un developer no necesita que se le bloquee TODO incluyendo GMAIL, o cuenta de correo personal. Creo que es muy importante para el developer revisar su correo electrónico al menos 2 veces al día.
  • Respetar el formato de las reuniones diarias (daily meetings) si siguen un marco de trabajo ágil (scrum, xp, etc). Los "standup meetings" deben ser 15 minutos, no 30 minutos ni 1 hora!
  • Dejar que el developer decida con qué sistema operativo trabajar. Algunos gustan de Microsoft, otros de Linux y otros de MACs.
  • Comprar gadgets o dispositivos móviles diversos para que el developer se entretenga testeando en: iPad, iPhone, Android, etc.
  • Dejar que el developer decida con que IDE trabajar. A todos no les gusta Netbeans, Eclipse, etc. Algunos gustan de Notepad++ o SublimeText. 
  • Considerar aumentos salariales anuales de mínimo el 10% o 15%. Cuando uno se cambia de empresa, el factor monetario puede ser una de las principales causas.
  • Si el developer tiene que llamar a un cliente por teléfono, conseguir esos teléfonos CISCO con los botones de "Mute" y "Speaker". Es muy útil.
  • Sillas cómodas y ergonómicas. Los developers invertimos mucho tiempo sentados en nuestras sillas. Por dicho motivo, ese espacio debe ser lo más cómodo posible.
  • Dos monitores widescreen hacen a los developers más productivos. Es muy común que en una pantalla programan, y en la otra ven el resultado de la web o aplicación que esten desarrollando.
  • 40 horas semanales es mucho más que suficiente. Deja que tu developer tenga libre el fin de semana o al menos que no se la pase en la oficina en sus días de descanso.
  • 9am a 5pm es el horario predilecto. Pero no! A muchas empresas les gusta: 8am a 6pm o 9am a 6pm (claro, allí incluyen el almuerzo, pero no es gran problema 30 minutos de refrigerio, por favor!)
  • La despensa! Tener la despensa llena de galletas, jugos, golosinas, FRUTAS, agua, leche, etc. La cerveza también cuenta. Es más, lo consideran como un plus. El developer no tiene que salir de la empresa a comprar sus cosas, y de paso se ahorra unas cuantas monedas.
  • El developer debe tener un buen espacio de trabajo. Su silla, computadora o laptop, su escritorio, etc. No debe tener gente pegado a él codo a codo. Si tiene privacidad es mucho mejor, pero con un espacio prudente es suficiente.
  • Utilizar metodologías ágiles como: scrum y xp, o por lo menos enfoques ágiles: daily meetings, code reviews, estimación, etc. Utilizar herramientas como: git, svn, jira, hudson, etc.
  • Actividades fuera del trabajo que integren al equipo (como ir a jugar fútbol, bowling, billar o tomar unos tragos en un after office)
  • Tener juegos o algo divertido en la empresa (mesa de ping pong, futbolín, videojuegos (wii, play station), ajedrez, etc)
  • Evitar ser demasiado burocrático. Tener que pedir permiso a 5 personas para instalar un plugin de chrome o notepad++.
  • Ofrecer comida cada mes o cada 15 días al equipo de desarrollo. Eso ayudará a mantener una buena comunicación. Además a quién no le gustaría comida gratis? Si provees almuerzo diario a tus empleados es un plus bien valorado.
  • Jueves o viernes de amigos! Establecer un día en que todos acuerden salir a tomar o reunirse en un after office. 

Estos son los puntos que pude identificar. De hecho que hay más pero lamentablemente son muy pocas las empresas que cumplen con casi todos los puntos. Y por esto y muchas otras razones existe una alta rotación de developers. Y tú? Como es tu empresa?







martes, 19 de junio de 2012

Sockets TCP Java

Un breve introducción al tema de programación en sockets en Java. Este tema es utilizado por ejemplo para la implementación de ventanas de chats, envío de datos, cargas masivas de datos, etc.
Las siguientes java clases muestran una estructura Cliente - Servidor, en la que la clase "cliente" se encarga de enviar un dato al servidor para que realice una operación y el "Servidor", por su parte, le envía un mensaje a la aplicación cliente de recepción satisfactoria.


EL RESULTADO:







EL CODIGO:
ClienteTCP.java 



ServidorTCP.java 



Descargar Aquí



Cabe resaltar que el ejemplo fue adaptado del libro: DEITEL- Java How to Program