Últimos Comentarios

domingo, 24 de febrero de 2019

Creando un servidor de correo electrónico en Ubuntu 18.04

Primero instalaremos Postfix que es un agente de trasporte de correo

# sudo apt-get install poxtfix

Nos saldrá la pantalla de configuración:


Le damos a OK y seleccionamos sitio de internet


Escribimos el dominio que queramos


Reiniciamos es servicio para que se activen los cambios

# sudo /etc/init.d/postfix restart

Ahora instalaremos el Courier-pop

# sudo apt-get install courier-pop



Courier-imap

# sudo apt-get install courier-imap


Y S-nail será lo que nos permita enviar correos

# sudo apt-get install s-nail

Y por último squirrelmail, lo descargamos y descomprimimos

# wget https://sourceforge.net/projects/squirrelmail/files/stable/1.4.22/squirrelmail-webmail-1.4.22.zip

# unzip squirrelmail-webmail-1.4.22.zip

Lo movemos a la carpeta correspondiente y le damos permisos:

# mv squirrelmail-webmail-1.4.22 /var/www/html/

# chown -R www-data:www-data /var/www/html/squirrelmail-webmail-1.4.22/



# chmod 755 -R /var/www/html/squirrelmail-webmail-1.4.22/
Para mayor comodidad podemos renombrar la carpeta simplemente squirrelmail:

 # mv squirrelmail-webmail-1.4.22 /var/www/html/squirrelmail


Ahora configuramos squirrelmail:

# perl /var/www/html/squirrelmail/config/conf.pl

Le damos al 2
Ahora le damos al 1 y ponemos nuestro dominio


Volvemos al panel principal y le damos al 4 y después 11 escribiendo Y para activar la opción

Salimos después de guardar

Entramos al navegador y vamos a siguiente dirección

http://IPSERVIDOR/squirrelmail


Puedes entrar con tu usuario y contraseña de ubuntu o crear usuarios nuevos para entrar.


viernes, 2 de noviembre de 2018

Probando Netbeans 9

Existe una nueva versión de Netbeans, pero con cambios importantes, como son cambio de propietario, de Oracle a Apache....

En el siguiente vídeo podrás ver como instalarlo y configurarlo para que funcione correctamente:


El futuro de Java

Interesante vídeo para comprender qué está pasando con Java en la actualidad:


sábado, 20 de octubre de 2018

Cómo subir un proyecto a Github fácilmente

Todo buen programador que se precie, debe tener una cuenta en GitHub donde subir sus proyectos para compartirlos con la comunidad de programadores. En el siguiente vídeo os muestro como darnos de alta en GitHub y subir nuestros proyectos:



Instalación de Linux en Virtual Box

Os pongo un video sobre como instalar Linux en Virtual Box, para probar comandos, etc sin necesidad de tener que formatear nuestro ordenador:


Aunque aquí aparezca para la versión de Linux Mint, es exactamente igual para Ubuntu.

domingo, 18 de marzo de 2018

Diferencias entre programadores Junior, Semi Senior y Senior

¿Cuáles son las principales diferencias entre un programador junior, un semi senior y un senior?

Durante las últimas semanas recibí algunas consultas sobre este tema, lo que me motivó a escribir este artículo.

No es un tema de simple respuesta. Incluso buscando en Google no se encuentran respuestas maravillosas sobre el asunto.

Lo que sucede en realidad es que las diferencias entre los distintos “niveles” dependen de las necesidades y la cultura de cada organización y de cada equipo. En distintos entornos lo que diferencia a un senior de un junior puede variar.
En algunas organizaciones la diferencia solo está dada por la cantidad de años de experiencia laboral que la persona tenga, en otros casos depende del grado de conocimiento técnico y en otros está asociado a la capacidad de la persona de gestionar proactivamente su trabajo.

Lo que no tiene cuestionamientos es que se trata de una temática sumamente sensible. Habitualmente la remuneración del ingeniero de software se asocia a su nivel de seniority, así que seré lo más cuidadoso posible al presentar el tema.

En este artículo comparto algunos de los criterios que pueden ayudar a definir el nivel de seniority de una persona. Cada uno de los indicadores puede tener más o menos importancia de acuerdo a cada organización (al final del artículo incluiré una encuesta para conocer tu opinión).

Si el lector es el Gerente del equipo, podría asignar una ponderación a cada uno de los indicadores antes de aplicarlos.
Si en cambio es un programador, mi sugerencia es que intente dominar todos los aspectos, aprovechando las oportunidades que se le presenten para su desarrollo.
Si el lector es el Gerente de Recursos Humanos, mi consejo es que ayude a comunicar dentro de la compañía cuáles son los aspectos que más se valoran.

Experiencia laboral

Cantidad de años de experiencia laboral en informática.
No cuentan los trabajos prácticos realizados ni trabajos dentro de otras actividades.

Junior: Menos de 2 años de experiencia.
Semi Senior: De 2 a 6 años de experiencia.
Senior: Más de 6 años de experiencia.

Conocimientos técnicos

Principalmente referido a las herramientas, tecnologías, lenguajes de programación, paradigmas de programación, base de datos, arquitecturas, etc. que deba utilizar para cumplir sus labores.

Junior: Para desempeñarse suele requerir acompañamiento. El código que genera puede presentar mayor cantidad de bugs de lo esperado. Probablemente no maneja todas las herramientas que se necesitan para la tarea.
Semi Senior: Técnicamente autosuficiente. Puede desarrollar funcionalidades más complejas y ejecutar proyectos de mayor envergadura. Pero no es un crack y todavía comete errores “evitables”.
Senior: Es referente técnico dentro del equipo. Su conocimiento le permite colaborar en definiciones arquitectónicas y desarrollar los proyectos más desafiantes. Su código funciona, es bueno y fácil de mantener.

Conocimientos funcionales

Relacionado a los procesos, metodologías, estándares, circuitos requeridos para cumplir sus labores.

Junior: Para desempeñarse suele requerir cierto nivel de acompañamiento. No conoce todos los procesos, ni los estándares. No es experto en los temas propios del negocio.
Semi Senior: Maneja los circuitos lo suficiente como para desempeñarse. Respeta los estándares y metodologías. Conoce buena parte de los procesos del negocio.
Senior: Ayuda a definir procesos, metodologías, estándares y circuitos. Por supuesto cumple los existentes.

Proactividad

Indicando si la persona espera a que le asignen sus tarea o si por el contrario toma una actitud de mayor iniciativa.

Junior: Necesita que frecuentemente le definan su trabajo. Está a la espera del siguiente pedido. Cuando tiene tiempo libre no sabe con qué seguir. Depende de otros para avanzar con sus tareas.
Semi Senior: Se preocupa por aprovechar mejor su tiempo. Pide nuevas asignaciones cuando tiene tiempo disponible y es autosuficiente para llevar adelante una gran parte de sus tareas.
Senior: No solamente recibe requerimientos, sino que los busca y genera. En muchas oportunidades es él quien le genera asignaciones nuevas a su superior.

Seguimiento requerido

Atención que requiere de su superior inmediato.

Junior: Requiere seguimiento diario a nivel detallado.
Semi Senior: Requiere seguimiento semanal y a nivel general.
Senior: Proactivamente reporta el estado y avance de sus tareas.

Indicadores de productividad

Indicadores varios relacionados con el trabajo que realiza

Junior: Calidad: Baja/Media  –  Productividad: Baja/Media  –  Innovación: Poca o Nula
Semi Senior: Calidad: Media  –  Productividad: Media  –  Innovación: Poca
Senior: Calidad: Alta  –  Productividad: Alta  –  Innovación: Alta

Cumplimiento de fechas

Cumplimiento de las fechas de entrega pautadas. Se aplica a las tareas de análisis, desarrollos, documentación, reporting, etc.

Junior: La mayoría de las veces no cumple con sus estimaciones.
Semi Senior: A veces cumple, a veces no.
Senior: Siempre cumple. Cuando surge un desvío (inevitablemente) lo informa adecuadamente y con anticipación.

Respuesta bajo presión

Referido a situaciones extremas… no a la corrida semanal para cumplir con la fecha de entrega del siguiente release en producción.

Junior: Le pueden pasar alguna de las siguientes cosas: Se bloquea, se angustia, se confunde, se estresa…
El resultado de su trabajo en una situación de presión no es bueno.

Semi Senior: Le pueden pasar alguna de las siguientes cosas: Se enoja, se defiende, se distancia (se borra), se resigna…
El resultado de su trabajo en una situación de presión a pesar de todo, es bueno.

Senior: Le pueden pasar alguna de las siguientes cosas: Se entusiasma, se compromete, se hace cargo, se inspira e inspira a otros…
El resultado de su trabajo en una situación de presión puede llegar a ser asombroso.

Relación interpersonal

(Gracias a Javier Scavino por mencionar este aspecto).

Más allá de los conocimientos y capacidades de una persona, la habilidad de comunicarse con su entorno es fundamental para su desarrollo profesional.

Junior: Puede tener dificultades para transmitir sus ideas con claridad. No logra arribar a conclusiones concretables. No siempre sabe interactuar con otras personas de forma colaborativa y profesional.
Semi Senior: Se hace entender pero no logra ganarse la simpatía ni despierta la vocación de sus colaboradores para acompañarlo en sus sugerencias. Se permite escuchar otros puntos de vista pero sigue intentando que sean sus ideas (buenas y malas) las que prevalecen.
Senior: Es bueno comunicando, pero principalmente escuchando. Puede participar en desiciones de alto nivel y colaborar si es necesario en actividades más operativas privilegiando el resultado y la calidad de las relaciones por sobre su autoría en las ideas.

Vale la pena mencionar que la misma persona puede tener características de Senior en un aspecto y de Junior en otro.

Fuente: http://www.diegosalama.com

jueves, 27 de julio de 2017

Conoces Klotlin?? Un nuevo lenguaje de programación

¿Qué es Kotlin?



Kotlin es un lenguaje de programación de tipado estático que corre sobre la Máquina Virtual de Java y que también puede ser compilado a código fuente de Javascript. Su desarrollo primario es de un equipo de programadores de JetBrains con base en San Petersburgo, Rusia (el nombre proviene de la Isla de Kotlin, cerca de San Petersburgo). Kotlin fue nombrado Lenguaje del Mes en la edición de enero de 2012 de la revista Dr. Dobb. Aunque no tiene una sintaxis compatible con Java, Kotlin está diseñado para interoperar con código Java y es dependiente de código Java de la Biblioteca de Clases Java existente, tal como el Collections Framework.

Link de interés:







Para más información: