Desarrollo, arreglar no parchar

Soy el más nuevo en mi equipo de trabajo y creo que cuando vas trabajando mucho tiempo con un equipo adoptas sus malas costumbres de trabajo, el punto es que realice un modulo que a partir de una entrada de datos realiza un proceso y devuelve una salida, el típico sistema Entrada – Proceso – Salida, pero los datos de entrada son la respuesta de una llamada a un API externo, el cual no es manejado por nosotros.

Por un tiempo el modulo funcionaba de la manera correcta, realizaba todo el proceso y devolvía los resultados esperados, hasta que un día, los resultados no eran los que se esperaban, el resultado tampoco era demasiado grave se arreglaba agregando una sentencia if.

Obviamente un compañero de trabajo me sugirió esta solución y eh aquí el tema del post, algo tuvo que variar en la entrada de datos para que la salida no sea la esperada, personalmente creo que esto se considera como un error y agregando la sentencia if el error en el fondo seguiría ocurriendo, creo que lo más correcto sería arreglar esto en el proceso del modulo y no en la salida.

Solo se estaría ocultando el error, no se estaría solucionando, en este caso particular no afecta mucho pero imagino que en sistemas mucho más complejos un error como este sería algo serio, en sistemas grandes donde hacer un proceso extra puede sobrecargar y afectar a todo el sistema.

La cosa que al final fue como lo sospeche, la respuesta del API había cambiado me tomo más tiempo descubrir el error pero creo que esta es la manera correcta de solucionar los errores.

ProFTPD: no se levanta el servicio FTP

proftpd-logo

Sea cual sea el motivo por el cual no se levante este servicio, en primer lugar se debe realizar una verificación de las configuraciones del servicio, para esto se usa la siguiente orden:

proftpd --configtest

Un caso particular (y común) es la siguiente respuesta:

Checking syntax of configuration file
 - warning: unable to determine IP address of 'Domain'
 - ProFTPD terminating (signal 11)
 - FTP session closed.

La solución este este caso particular es configurar el archivo /etc/hosts agregando la dirección ip y el nombre del dominio asignado al equipo, por ejemplo:

123.456.789.123 Domain

Verificando de nuevo la configuración:

proftpd --configtest
Checking syntax of configuration file
Syntac check complete.

CRM: cual elegir

Un pequeño resumen sobre CRM’s (Customer Relationship Management) que he tenido el gusto de usar, son mas bien opiniones muy personales.

SugarCRM

sugar-logo

  • Un gigante en todas las dimensiones, tanto versión de pago como gratuita.
  • Puede llegar a ser confuso y complicado si no se tiene un poco de experiencia en el uso de CRM’s.
  • Su principal ventaja es el workflow, disponible solo para la versión comercial.
  • Hice varias actualizaciones (versión gratuita) y en ninguna tuve problemas.
  • Se puede personalizar casi todo, contactos, leads, campañas, etc.
  • API, no muy bien documentada.
  • Posibilidad de gestionar directamente desde el CRM los correos, de esta manera se puede tener un historial y control de los mensajes enviados y los contactos.

Más info | www.sugarcrm.com/

ToutApp

toutapp-logo

  • Se nota que aun esta en una fase temprana, a mi parecer le faltan bastantes detalles que desarrollar.
  • Interfaz confusa, no se distinguen directamente los contactos ni las organizaciones.
  • Los leads no son mas que contactos categorizados.
  • No posee un API, por lo tanto se hace complicado crear contactos o leads a partir de formularios o mensajes de correos.
  • Algo que destacar es que tiene integraciones con varios otros servicios, tales como highrise u otros CRM’s.
  • Otro punto importante es el soporte, tal vez al intenta captar nuevos clientes y por esta razón el soporte es casi inmediato, todas las preguntas o dudas son contestadas de manera rápida, incluso cuentan con una sala de chat.

Mas info | toutapp.com

Highrise

logo-highrise

  • Seria todo lo contrario a SugarCRM, cuenta con lo básico, contactos, organizaciones y deals (leads).
  • Una interfaz bastante simple, no hay donde perderse.
  • Cuenta con un API, personalmente no encontré una documentación oficial, así que tuve que optar por librerías y documentación de terceros.
  • Llega a ser demasiado simplista, por ejemplo si se desea ordenar los contactos por fecha de creación esto es simplemente imposible, o si se quiere buscar duplicados tampoco es posible hacerlo de una manera sencilla, seria buscar contacto por contacto.
  • Existe un add-on (de pago) que agrega algunas acciones extras a highrise, WLH.

Más info | highrisehq.com

WLH | welovehighrise.com

Pipedrive

Pipedrive-logo

  • Desde mi punto de vista, el que tiene una mejor relación entre complejidad, diseño y funcionalidad.
  • Interfaz sencilla, bien organizada y todo separado de manera clara, personas, organizaciones, deals (leads).
  • Se pueden personalizar los formularios.
  • API bien documentada.
  • Un detalle que no me gusto mucho es acerca de los campos personales (aquellos que uno mismo crea), al intentar usar el nombre de estos para poder crear algún registro, no funcionan, es necesario obtener el ID para poder usarlos.

Más info | www.pipedrive.com