Proxy inverso y Java: J2EP y Noodle

Un proxy inverso es un servidor que recibe todo el tráfico entrante a una organización y lo redirige a los servidores web correspondientes.

El "reverse proxy" puede necesitar reescribir las URL de cada página web (traducción de la URL externa a la URL interna correspondiente, según en qué servidor se encuentre la información solicitada).

Se utiliza para controlar temas como:

· Seguridad: el servidor proxy es una capa adicional de defensa y por lo tanto protege los servidores web.

· Cifrado / Aceleración SSL: cuando se crea un sitio web seguro, habitualmente el cifrado SSL no lo hace el mismo servidor web, sino que es realizado por el "reverse proxy", el cual puede estar equipado con un hardware de aceleración SSL (Security Sockets Layer).

· Distribución de Carga: el "reverse proxy" puede distribuir la carga entre varios servidores web.

· Caché de contenido estático: Un "reverse proxy" puede descargar los servidores web almacenando contenido estático como imágenes u otro contenido gráfico.

Puede usarse Apache como proxy inverso de forma sencilla: link1, link2, link3

Aunque también hay otras opciones como nginx, HAProxy o lighttpd: (link).

¿Por qué Java? En otros casos lo que necesito es crear una solución a medida que contemple requisitos adicionales.

En el mundo Java existen al menos dos soluciones a tomar de base cuando construimos un proxy inverso:

J2EP (jEasy Extensible Proxy) un proxy inverso corriendo sobre un motor JEE (pensado para trabajar sobre Tomcat).

– Se configura con el fichero data.xml

– Tiene dos conceptos fundamentales: Server y Rule

BaseServer: indica el host y path del que quiero hacer proxy:

En el ejemplo el proxy recibe las peticiones a la url http://<proxy>/proxy_MiAplicaciony las redirige a http://<MiServidor>/MiAplicacion.

RoundRobinCluster:

Decide a que servidor reenviar la petición con algoritmo RoundRobin, si se ha abierto una sesión anteriormente con la misma sesión siempre se redirige al mismo server.

Rule: tiene reglas por IPs, Directorio,Rewrite,Composite

En el ejemplo el revertFrom y el revertTo se pueden sobreescribir los links a la ida y a la vuelta

Control sobre el rewrite

Noodle : conjunto de clases capaces de hacer cambiar en las peticiones y respuestas HTTP.

– Se puede usar parar correr filtros en function de la petición que envíen la request a otro servidor web,…

– Tiene un conjunto de filtros interesantes:

· CheckForRedirect will propagate a redirect from the proxy response into the client response.

· CopyCookies will copy over Set-Cookie headers from the proxy response to the client response.

· CopyHeaders will copy all HTTP headers from the proxy response to the client response.

· HandleContentType will propagate the content type of the proxy response to the client response, and will disable further filtering if the content type is not "text/html".

Imprescindible: ¿Cómo pedir un aumento?

De :

Me lo apunto para el año que viene!!! Que este sin duda no me funcionó :):

1) Negocia desde el principio: Muchos tenemos miedo de hacer una propuesta al momento de la entrevista de trabajo, pero el establecer desde el principio una remuneración justa le da un indicio al empleador de que estamos conscientes del valor de nuestra experiencia y conocimientos. Incluso si no lo convences en ese momento, estarás sentando un precedente.

2) Ve preparado: Debes saber a ciencia cierta cuánto gana un profesional con tu experiencia y formación; no dejes de hacer una pequeña investigación en Google o mejor aún, en tu círculo de colegas para tener una idea sólida de tu valor en el mercado.

3) Sé tú mismo: La idea es que establezcas un salario justo para tí, no que te muestres agresivo o inconforme. Quien tiene la razón y está seguro de lo que está solicitando, no necesita usar una máscara de dureza o estrategias muy rebuscadas. Después de todo, lo estás solicitando por lo que eres, no por lo que pretendes ser.

4) Sé concreto y ve al grano: Pedir un aumento de sueldo no debería ser un acto avergonzante ni estresante. Si sabes lo que vales, no necesitas rodeos para decirlo; hacer una introducción al tema parecerá una antesala para malas noticias. El ser directo lo hace neutral, justo e impersonal.

5) Mantente visible: Hacer el trabajo a cabalidad, incluso más allá, nunca es suficiente. Debes hacer que la gente se entere y sepa que las cosas salen bien gracias a tí. No seas modesto; puedes creer que “brillarás a través de tu trabajo”, pero… no será así.

6) Consigue un aliado “arriba”: Es muy común que establezcas una relación estrecha de cooperación con un directivo que no necesariamente sea tu jefe. Posiblemente por gustos similares, inclusive por proyectos que los acerquen. No se trata de ser interesado, pero es una carta bajo la manga que no debes descartar; esa persona podría abogar por ti en caso de que le consulten si te mereces ese aumento.

7) Pide más de lo que esperas recibir: Como mínimo un 20% más; de esta manera tendrás espacio para negociar hasta el monto que habías considerado en un principio.

8) No te rindas demasiado pronto: Si bien negociar no es una destreza natural en la mayoría de nosotros, rendirnos ante la primera resistencia sería fracasar instantáneamente. Haz preguntas y averigua cuáles son los verdaderos argumentos de esa negación.

CoderFacts: No eres el primero!!!

Publicado en Humor. Leave a Comment »

¿Qué es EEML (Extended Environments Markup Language)?

EEML (Extended Environments Markup Language) es un protocolo para compartir datos de sensores entre entornos.

Está pensado para facilitar la conexión directa entre entornos, lo usan entre otros Cosm, para compartir datos de sensores entre participantes.

El protocolo soporta fuentes de streams para intercambiar datos.

El formato es un XML que tiene este aspecto:

En este ejemplo podéis ver como un Arduino genera datos en este formato y los envía.

Existe una librería Java para trabajar con EEML: EEML Library for Processing, que consiste en 4 clases :D:

http://www.eeml.org/library/docs/

Linkedin Kafka: Streaming según Linkedin

Linkedin Kafka es un sistema de mensajería Publish/Suscribe distribuida de alto rendimiento.

Actualmente se encuentra en la incubadora de Apache.

Se usa en Linkedin para hacer tracking de actividades.

Su uso para el procesamiento de streams de datos lo hacen comparable a Apache Flume, Twitter Storm, Facebook Scribe, aunque su arquitectura y primitivas lo diferencian de estos y lo hacen más comparable a un sistema de mensajería tradicional.

Publicado en BigData, Java. 1 Comment »

Mahout: Machine Learning en Hadoop

El Machine Learning es una disciplina muy compleja (verdad Luis?).

Normalmente decimos al programa que debe hacer: query, controlador,…

Machine Learning es una técnica para enseñar a los programas que deben hacer…

Y dónde entra Hadoop(=Big Data) aquí…pues si nos creemos las frases de: “No gana quien tiene los mejores algoritmos, si no quien tiene más datos” o “No hay mejor dato que más datos”

Mahout es una librería de Machine Learning escrita en Java y optimizada para funcionar sobre Hadoop (entendiendo por Hadoop HDFS y MapReduce), la ventaja de usar Mahout es que ya tiene un gran número de algoritmos implementados para trabajar sobre las tres Cs del Machine Learning:

Collaborative filtering: técnica para recomendaciones (por ejemplo en base a personas a quien le gustan ciertos temas recomendar otros temas que pudieran gustarles)

Clustering: para descubrir estructuras en colecciones de datos (grupos de sensores relacionados)

Classification: es una técnica supervisada (las otras dos no) para descubrir relaciones (por ejemplo en base a los mails spam etiquetar nuevos mails)

Podéis ver el listado de algoritmos soportados aquí.

Publicado en Productos. 1 Comment »

Un poco más de Cosm

YA comentábamos en el post anterior lo que ofrecía Cosm

Veamos un ejemplo de uso:

Cosm (Pachube) permite almacenar, compartir y descubrir datos de “cosas” en tiempo real lo que permite construir tus sistemas basados en ellos. En ese sentido Cosm es una plataforma para conectar y construir “el Internet de las cosas”.

En el diagrama se ve un escenario de colaboración entre dispositivos y sistemas:

Cosm simplifica a través de su API el desarrollo de aplicaciones y servicios que actúan de bridge con el mundo real o virtual.

Cosm se usa para construir sistemas de trazas de sensores, monitorización remota, integración de sistemas, sistemas de geolocalización,…

A %d blogueros les gusta esto: