Un monitor de Servidores
Si este es un monitor el uso de CPU y memoria ademas quieres estar revisando el estado del load average y te aburriste de ver el TOP o mas aun te aburriste de pedirle al administrador de servidores que instale el Nagios u otra cosa.
https://hub.docker.com/r/netdata/netdata
Término BUG en programación.
DEBUG
Todos en mas de alguna vez hemos utilizado el termino de BUG (Bicho) en la programación. y todos entendemos que se refiere a algún error de programación y desde aquí es donde nace la otra palabra mas utilizada DEBUG o DEBUGGING que es el proceso que realizamos para localizar y eliminar un error en nuestra programación.
¿Pero de donde nace esta palabra o este concepto?
En 1945, el MARK II sufrio un fallo en uno de los miles de relés electromagnético.
Cuando se investigó, se encontró una polilla que había provocado que este relé quedase abierto.
Este incidente es conocido como el origen de la palabra BUG para describir un error en un sistema informático.
Dejemos la historia y ahora la programación.
Que se puede hacer cuando comenzamos un DEBUG.- Break : Marca una ubicación de un punto de control. Linea en donde situaremos el corte.
- Step : Ejecutamos el programa linea alinea, al menos que indiquemos lo contrario. Este puede ser tanto hacia adelante o atrás
- Finish Debugger : Damos termino al proceso de debug.
- Pausa : Su nombre lo indica detenemos momentáneamente el debug.
- Continue : Saltamos al siguiente break Point.
- Apply code changes : Esta herramienta del debug es la que mas me gusta ya que me permite realizar cambios en caliente
Errores o Bugs más comunes.
A la hora de programar o realizar manutenciones a aplicacion ni que conoces lo mas importante es saber leer errores. Pero antes es saber cuales son los mas comunes esto es en cualquier lenguaje de programación y/o tecnología.- División por CERO : No es mentira es mas común de lo que se cree.
- Ciclo infinito : En este caso es muy importante que en la empresa se tengan normas de programación. Por ejemplo los famosos IF o FOR anidados. Rotundamente prohibidos.
- Desbordamiento (Overflow) : Cuando asignamos un valor a una variable con una capacidad inferior. Es este caso es muy importante que conozcas tu datos y el lenguaje que utilizas.
- Subdesbordamiento (Underflow) : Lo contrario a Overflow. Asignamos a una variable un valor inferior al permitido. Por ejemplo : byte Numérico Entero con signo -128 a 127 y le asignamos un -130.
- Exceder el tamaño del array : Cuando nos salimos de la capasidad del indice del array. Si tengo una array de largo 5 no le puedo agregar un valor en el indice 8.
- Utilizar una variable no inicializada: Jajaja tengo muchas historias con este error. En java seria el NullPointerException. (Como un compañero de trabajo diría "El Típico NullPointerException")
- Acceder a memoria no permitida. (Access violation).
- Perdida de memoria (Memory leak) : Perdida de memoria. Es muy común en algunos lenguajes me toco vivir lo con apache-tomcat 6 (Garbage collector). Esto es cuando se pierden referencias a posesiones de memoria . Un mal que no se lo deseo a nadie. puedes realizar análisis con jmap -dump:file=heap.hprof <pid> y luego con un plugin de eclipse para analizar. https://dzone.com/articles/how-to-find-and-fix-memory-leaks-in-your-java-appl
- Buffer overflow : En Java y tomcat 6 muy común. Aqui una explicacion muy buena https://www.welivesecurity.com/la-es/2014/11/05/como-funcionan-buffer-overflow/
- Deadlock : En Oracle me tope con algunos de estos errores. Al principio no entendía nada. Luego con la ayuda de un amigo me explico los bloqueos de datos. Se da principalmente cuando dos procesos intentan acceder a una posición de memoria. https://www.jasoft.org/Blog/post/191;Que-es-un-deadlock-o-interbloqueo.aspx
Bueno eso tenia que contar. Saludos
Estaba un poco aburrido y decidí aprender ruby.
Ruby - Manual del Programador (Users)
Así como esta en el titulo del aburrimiento decidí aprender a programar en Ruby. Ademas que necesitaba un lenguaje interpretado como PHP o Ruby. El tema es que de PHP hay mucha información y personas que ya lo programan asi que por suerte me encontré este libro el cual me estoy devorando. A mi sorpresa me resulto muy simple de leer y para nada de aburrido. Partiendo de la base que ya sabes de programación o has programado en algún lenguaje.
Si quieres aprender Ruby desde cero, te recomiendo este libro. En cuanto a los ejemplos son muy prácticos lo que ayuda bastante.
En cuanto a lo que a mi me interesa Ruby on Rails. (Desarrollo de aplicaciones WEB).
Rails suena bastante bien al punto buscar en google Ruby and Rails V/S Spring
La verdad es que esperaba menos de Ruby on Rails me resulto bastante grato encontrar una alternativa tan buena en el papel. Ahora se tendría que ver en la programación que tal se comportar.
Ahora la misma comparación contra PHP este se ve bastante superior. Pero estamos hablando de PHP. Que con los años y mejoras que se le han echo. Quien podría decir otra cosa.
¿Porque me gusta la informática?
Ya hace varios años que egrese de Analista Programador en computación en especifico desde el 2006. y me pregunto :
¿Que me gusta de este trabajo?
¿Recomiendo o no estudiar esta carrera?
Bueno lo que me gusta de esta profesión :
El desafió constantes de Construir y Resolver problema. Es algo que me encanta. Llegar a diario a la oficina y descubrir algo que hacer. Claro muchas veces los desafíos se vuelven monótonos pero esta en uno en buscar el rumbo para encontrar desafios distintas que hacer. La idea es que estés trabajando en un lugar que te permitan expandir tu creatividad y si no, siempre tienes la posibilidad de buscar desafíos por fuera de tu trabajo.
La comunidad : Es grandioso que con solo buscar en google siempre encontraras a alguien que paso desarrollo alguna idea o solución a lo que buscar.
La oportunidad de Aprender. La informática tiene tantas áreas que mantenerse actualizado en todas es muy difícil. Pero si te gustan los desafíos de la programación y sientes que estas donde tus habilidades son retadas a diario siempre encontraras el tiempo para estudiar o al menos enterarte de los nuevo framework que se estén desarrollando para dar solución a alguna problemática que podrías encontrar. Buscar información y sorprender con cada solución y herramientas de que se desarrollan.
Si te recomiendo esta profesión. Si estas con dudas de estudiar informática yo te cuento que el camino no es fácil. Al inicio siempre te costara y debes de estudiar por que luego todo se te ira haciendo fácil.
Programar crear y solucionar creo que son las palabras claves de este trabajo.
Bueno les escribo esto luego de ver un documental en netflix AlphaGo donde con solo programación y algoritmos lograron crear una inteligencia capas de jugar contra el mejor del mundo en GO y ganar. Pero no solo eso ahora crearon AlphaGo Zero que con 2 horas de entrenamiento y lo mínimo en recursos de hardware como un notebook puedes tener tu IA para Jugar. Sorprendente.
Saludos
¿Que me gusta de este trabajo?
¿Recomiendo o no estudiar esta carrera?
Bueno lo que me gusta de esta profesión :
El desafió constantes de Construir y Resolver problema. Es algo que me encanta. Llegar a diario a la oficina y descubrir algo que hacer. Claro muchas veces los desafíos se vuelven monótonos pero esta en uno en buscar el rumbo para encontrar desafios distintas que hacer. La idea es que estés trabajando en un lugar que te permitan expandir tu creatividad y si no, siempre tienes la posibilidad de buscar desafíos por fuera de tu trabajo.
La comunidad : Es grandioso que con solo buscar en google siempre encontraras a alguien que paso desarrollo alguna idea o solución a lo que buscar.
La oportunidad de Aprender. La informática tiene tantas áreas que mantenerse actualizado en todas es muy difícil. Pero si te gustan los desafíos de la programación y sientes que estas donde tus habilidades son retadas a diario siempre encontraras el tiempo para estudiar o al menos enterarte de los nuevo framework que se estén desarrollando para dar solución a alguna problemática que podrías encontrar. Buscar información y sorprender con cada solución y herramientas de que se desarrollan.
Si te recomiendo esta profesión. Si estas con dudas de estudiar informática yo te cuento que el camino no es fácil. Al inicio siempre te costara y debes de estudiar por que luego todo se te ira haciendo fácil.
Programar crear y solucionar creo que son las palabras claves de este trabajo.
Bueno les escribo esto luego de ver un documental en netflix AlphaGo donde con solo programación y algoritmos lograron crear una inteligencia capas de jugar contra el mejor del mundo en GO y ganar. Pero no solo eso ahora crearon AlphaGo Zero que con 2 horas de entrenamiento y lo mínimo en recursos de hardware como un notebook puedes tener tu IA para Jugar. Sorprendente.
Saludos
YouTube Interesantes
Seguridad en aplicaciones web con Spring Security 4 V/s Seguridad con J2ee..
Muy interesante video donde dicen lo que siempre hemos sabido de J2ee.
Postgres Function y Cursores
El Gran Elefante.
Bueno la pregunta es como programar una buena function en postgres y mas aun como obtener los datos. En este caso estoy evaluando function y cursores. Veamos como funciona esto.
1.- La tabla y código de la function.
CREATE TABLE public.parametros (
codigo VARCHAR NOT NULL,
valor VARCHAR NOT NULL,
descripcion VARCHAR NOT NULL,
dominio VARCHAR NOT NULL,
CONSTRAINT parametros_pk PRIMARY KEY (codigo)
)
2.- La cabecera de la function.
CREATE OR REPLACE FUNCTION public.get_lst_dominio(
IN p_dominio character varying,
IN p_count integer DEFAULT 0,
OUT p_cod_err integer,
OUT p_desc_err character varying,
OUT ref refcursor)
Aquí tengamos presente que los parámetros de entrada están con un IN/OUT
2.- Código Java.
Muy importante que al utilizar cursores en postgresql el autocommit debe estar deshabilitado.
getConexion().setAutoCommit(false);
// TODO : Con el Manejo de cursores es importante manejar el auto commit en falso.
String sql = "{ call public.get_lst_dominio(?, ?, ?, ?, ?) }";
CallableStatement pre = getConexion().prepareCall(sql);
pre.setString(1, dominio);
pre.setInt(2, 0);
pre.registerOutParameter(3, java.sql.Types.INTEGER);
pre.registerOutParameter(4, java.sql.Types.VARCHAR);
pre.registerOutParameter(5, java.sql.Types.OTHER);
pre.execute();
ResultSet resSet = (ResultSet) pre.getObject(5);
Fuentes en GIT : https://github.com/FrankSeguel/Postgresql
Mi Experiencia con un HP BladeSystem c3000
HP BladeSystem c3000
En cuanto a servidores siempre confío en HP. Ya desde hace tiempo que tuve la oportunidad de jugar un poco con un DL360 Gen 6 y ahora que agradezco la confianza de mis jefes en permitirme cotizar, adquirir, planificar, testear y organizar la puesta en marcha de este C3000.
Bueno que he realizado con esta maquina :
1.- Actualizar el Firmware del OA.
2.- Configurar el ILO : Muy importante para esta maquina ya que para ver los servidores. Necesitas tener un cable HP Local I/O Cable Ahora la maravilla es que si configurar bien el ILO. NO necesitaras el cable. ¿Por que? esta maquina maravillosa tiene un KVM a través de Internet Explorer. (Lamento decirlo Si es IE. Lo dije.) y necesitas Java.
3.- Probar los Blade BL460c Gen1
4.- Actualizar el Firmware de los BL460c.
5.- Instalación de los Sistemas operativos. Para testear. Centos 6.8.
En el futuro.
OpenStack
http://iesgn.github.io/cloud/curso/u5/arquitectura_openstack.html#/8
Plugin OpenSource de Acunetix para Jenkins
Estimados
Cuando hablamos de probar la seguridad de nuestras aplicaciones existen varias aplicacion que ayudan con este trabajo. Como Acunetix la cual tiene un costo pero ahora sacaron un plugin opensource la cual nos facilitara y nos permitirá automatizar en parte este trabajo.
Manual de Instalación
http://www.acunetix.com/blog/docs/installing-and-configuring-the-acunetix-jenkins-plugin
Presentación
http://www.acunetix.com/blog/web-security-zone/acunetix-jenkins-plugin/
Cuando hablamos de probar la seguridad de nuestras aplicaciones existen varias aplicacion que ayudan con este trabajo. Como Acunetix la cual tiene un costo pero ahora sacaron un plugin opensource la cual nos facilitara y nos permitirá automatizar en parte este trabajo.
Manual de Instalación
http://www.acunetix.com/blog/docs/installing-and-configuring-the-acunetix-jenkins-plugin
Presentación
http://www.acunetix.com/blog/web-security-zone/acunetix-jenkins-plugin/
Que utilizar Glassfish o Payara
Siempre utilizo en mis desarrollo el famoso he imbatible Apache-Tomcat para desarrollar y en mis servidores locales. Pero ahora necesitaba algo mas potente en cuanto a consola de Administración y parti con JBoss EAP. El cual se me iba por OutMemory a cada rato. Entonces Me acorde del Glassfish 4.1 que ya hace algunos años no lo utilizo lo instale y se cayo. Pufff.. Que alternativa tengo? y un colega me hablo de Payara. Lo instale es un glassfish por donde lo mire pero funciona y bien. Saludos
Projecto Lombok
En mis proyectos siempre incluyo uno de los patrones de diseño favoritos. Reflection
para las implementaciones de :
toString()
getSerializedBean()
equals(Object obj)
hashCode()
clone()
isNullObject()
toHashMap()
Pero ahora este framework soluciona en parte la implemetaciones de estos metodos. ya que vasta con solo una Anotación @Data y al menos se crean los :
@ToString
@EqualsAndHashCode
@Getter
@Setter
@RequiredArgsConstructor
Ver mas en https://projectlombok.org/features/index.html
No soluciona todo lo que usualmente utilizamos en los Objetos Pero es un comienzo muy bueno.
https://projectlombok.org/
Un nuevo parche de seguridad de OpenSSL introduce otro bug aún peor.
Que MAL Yo aun con la OpenSSL 1.0.2g-fips 1 Mar 2016
Mejor ni actualizar asta que no este estable Open SSL.
El problema más grave de los anunciados el pasado día 22, con CVE-2016-6304, reside en que a un cliente malicioso puede solicita la renegociación de forma continua mediante el envío de una extensión OCSP Status Request excesivamente larga de manera progresiva. Esto provocará un crecimiento de la memoria del servidor fuera de límites, con la consiguiente denegación de servicio por consumo excesivo de memoria.
OpenSSL con versiones anteriores a la 1.0.1g no son vulnerables en la configuración por defecto,
:P
Otra vulnerabilidad de gravedad media, con CVE-2016-6305, afecta a OpenSSL 1.1.0 debido a que SSL/TLS podrá colgarse durante una llamada a SSL_peek() si el interlocutor envía un registro vacío. Un usuario malicioso podría provocar condiciones de denegación de servicio.
Happy Hacker Hour de Telefónica Chile
Se Agradece la deferencia que tuvieron con migo las personas de Telefónica (Eleven Paths) por la invitación que me hicieron para asistir al evento de "Hapy Hacker Hour". Solo tengo que decir excelente recepción y el lugar impresionante el "Sky Telefónica - Piso 31".
Adjunto Evidencia de la Asistencia :D
Oracle Proposes NetBeans As Apache Incubator Project
Hoy me sorprendió la noticia que Oracle sedera el IDE NetBeans a la fundación Apache. La primera sensación que tuve es "Mi Ide favorito NOOOOOO" El IDE que me ha dado tanto trabajo y solucionado tantos problemas. Luego leo los comentarios y alguien dice "Jubilaron a NetBeans" Chucha Que estoy Viejo..
No se si es una buena o mala idea de que Oracle transpasara a Apache el IDE. Solo le doy mis mejores deseos y que Apache lo mejore.
https://netbeans.org/community/apache-incubator.html
Técnicas para Desarrollo Seguro
Un gusto escuchar a Carlos Allendes. No es el primer curso al que asisto con el, siempre muy entretenido y dinámico se me hicieron muy cortos los 4 días . Aprender y recordar lo importante que es el desarrollo de aplicaciones web Seguras esta en las manos de los programadores. Siempre con buenas practicas de programación podríamos cubrir gran parte de las típicas vulnerabilidades de seguridad. Por ejemplo las TOP 10 de OWASP.
Fishing por Correo.
Estimados favor de no entregar su información en un correo que esta dando vuelta.
Este es un correo de un hacker que busca obtener sus contraseñas del banco.
https://es.wikipedia.org/wiki/Hackear
Este es un correo de un hacker que busca obtener sus contraseñas del banco.
Log4j configuracion recomendada.
Configuración recomendada para un buen registro de log con slf4j
Introducción
Una buena configuración del log es fundamental para la identificación de problemas o comportamientos no esperados. Nosotros consideramos este un punto importante en los procesos de desarrollo, pruebas y puesta en producción de las diversas aplicaciones tanto como web, bash y/o aplicaciones de escritorio.
La idea de esta publicación es indicar la configuración más óptima de slf4j en el archivo log4j.xml y además excluyendo información relevante en la escritura de la información de log.
Entorno :
1.- Java SE 1.7 (http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html?ssSourceSiteId=otnes)
2.- IDE Netbeans (https://netbeans.org/)
3.- Apache-Tomcat 7 (https://tomcat.apache.org/download-70.cgi)
4,- Apache-Maven (https://maven.apache.org/download.cgi)
5.- slf4j (http://www.slf4j.org/)
6.- Sistema Operativo (Linux Ubuntu)
Que es slf4j?
La mejor descripción la podremos ver el https://es.wikipedia.org/wiki/SLF4J
Slf4j es una abstracción de varios frameworks de logging que permite elegir el framework concreto en tiempo de despliegue.
Las implementaciones son :
- java.util.logging
- log4j
- logback
- tinylog
En general utilizamos slf4j ya que dispone de varias características. La Principal y la que nombra a esta herramienta lo indica su nombre “Simple Logging Facade for Java”.
Consideraciones.
1.- Modificamos el pom.xml donde incluimos dentro del tag dependencies :
2.- Crear archivo de configuración log4j.xml
3.- Contenido del log4j.xml
1.- Vamos a revisar el contenido de appender solo lo mas importantes :
File : Ruta y nombre del archivo que se generará.
/tmp : En este caso como usamos linux ya existe el directorio /tmp
${logTomcat} : En este caso en el inicio del tomcat definimos un parámetros que identifica a este.
debug_menu_web.log : Al final completamos el nombre del archivo de log que se generará.
MaxFileSize : Tamaño máximo en kilobytes de los archivos generados. Por ejemplo 5000kb equivalen a 5 megas
MaxBackupIndex : Cantidad máxima de respaldo de archivos de log ejemplo de máximo de 7 días. Importante ya que depende mucho del disco disponible en el servidor.
ConversionPattern : Patrón en el que se escribirán las líneas de log.
%d{ISO8601} %-5p (%t) [%c{1}(%M:%L)] %m%n
Descripcion :
%d{ISO8601} – displays the date and time in the ISO format (see earlier post about this norm).
%-5p – the log level (such as DEBUG, INFO, WARN, …), formatted to occupy five columns (I like when things keep in line).
%t – the name of the thread logging this line.
%c{1} – the name of the class calling the logger (the {1} argument is there to restrict the number of packages displayed; {2} would display one package level before the class name, {3} would display two package levels, … and %c without the brackets would display the full package and class names).
%M – the method.
%L – the line number.
%m – the message to log.
%n – begin a new line.
%-5p – the log level (such as DEBUG, INFO, WARN, …), formatted to occupy five columns (I like when things keep in line).
%t – the name of the thread logging this line.
%c{1} – the name of the class calling the logger (the {1} argument is there to restrict the number of packages displayed; {2} would display one package level before the class name, {3} would display two package levels, … and %c without the brackets would display the full package and class names).
%M – the method.
%L – the line number.
%m – the message to log.
%n – begin a new line.
Conclusión.
Codigo : https://git-scm.com/
Notas :
Nunca esta demas una herramienta que te permite migrar tu antigua aplicación a slf4j. Aquí les dejamos el link del manual.
Referencia :
https://archive.keyboardplaying.org/2013/06/24/log4j-conversion-pattern/
Levenshtein en postgreSQL
Muy Simple. Como utilizar levenshtein en postgres por ejemplo en buscar direcciones.
select
dire_calle_predio,
comuna_cod,
numero ,
levenshtein( dire_calle_predio , 'PUNTA ARENAS') as distancia
from direccion
order by distancia asc limit 10;
Suscribirse a:
Entradas (Atom)























