Simple Web Tools for Everyone, mi primer proyecto en Python

Siempre tuve la inquietud de aprender Python, me parece un lenguaje de programación muy versátil y poderoso. En el camino por aprenderlo hice este proyecto que se trata de un conjunto de simples tareas que usualmente usamos los desarrolladores o administradores de servidores.

Esta es una captura de pantalla de la aplicacion

Esta es una captura de pantalla de la aplicacion

Todo comenzo cuando estaba sacando en el curso de MongoDB para developers (usando Python) ellos usan Bottle Framework como base para far la tutoria y pues me parecio muy interesante, así que decidí aprender  Python con Bottle por aparte, llevandome hasta esta aplicación.

Las tecnolgías implementadas en esta aplicación son Python 2.6, Bottle Framework, uWSGI, NGINX.

Las diferentes tareas que se pueden hacer con esta aplicación son PING, Get IP Address, Domain Information, Get MX Domains, HTTP Header, Reverse IP Lookup, Get SOA Records, Traceroute. Pronto estaré agregando mas tareas utiles.

Una excelente opción para licenciar y activar Windows 7

Hace poco tuve el problema de que mi sistema operativo (el cual es Windows 7) necesitaba activarse y en la busqueda de conseguir una manera segura y legal de hacerlo, me puse a la tarea de encontrar la manera y encontré que Microsoft tiene una opción de licencias para OEM (Empresas de armado de computadoras), el cual maneja precios muy comodos pero con el inconveniente de que tienes que registrarte y ser aprobado para conseguirlo, la verdad es un poco engorrose todo eso, pero encontré una mejor solución, Pay4Key (www.pay4key.com) que básicamente lo que hace es venderte licencias a un precio OEM, y así te ahorras en registrarte y llenar todos esos formularios de Microsoft, además de estar bajo aprobación para adquirirlos.

Así que ya saben, tomenlo a consideración.

Windows 7 Activated

Railo: La mejor alternativa en la programación web

RailoOpenSource

Railo es el nombre del motor de CFML. Por el momento, es el único producto de la empresa Railo, la compañía detrás de Railo.

¿Que es Railo?

Railo Server, comúnmente conocido como Railo, es un software de código abierto que implementa el lenguaje de programación CFML de propósito general utilizado para crear sitios web dinámicos, aplicaciones web o sistemas de intranet, etc. CFML es un lenguaje dinámico que soporta múltiples paradigmas de programación y se ejecuta en la máquina virtual de Java (JVM).

¡Perfección Suiza!

Railo fue creado por la compañía suiza Railo Technologies GmbH, que es una alternativa “High Performance” de Adobe ColdFusion. En 2008, Railo cambió a un modelo de código abierto impulsado por la comunidad, y se convirtió en un proyecto de JBoss. El proyecto de código abierto Railo está liderado por Railo Technologies, financiado por contratos de consultoría y asistencia, pero cualquiera puede contribuir con código para su consideración.

Una pequeña reseña

Railo comenzó en 2002 como un proyecto estudiantil para compilar el código CFML en PHP, una elección hecha por la ubicuidad de PHP, sin embargo, se encontró que este no dio el rendimiento y la estabilidad deseada, y se tomó la decisión de cambiar a la plataforma de Java en su lugar.

El proyecto fue exitoso y se decidió seguir para convertirlo en un producto completo. Varios Alfa y Beta se hicieron antes del lanzamiento oficial 1.0 en abril de 2006. Railo continuó desarrollándose, pero era relativamente desconocido para muchos desarrolladores de CFML, fue hasta en junio de 2008 en la conferencia “Scotch on the Rocks” en Edimburgo, cuando Railo Technologies en el día 2 de apertura anunciaba una alianza con JBoss y un Railo como código abierto.

La Filosofía de Railo

Un objetivo principal de Railo era proporcionar la funcionalidad de ColdFusion utilizando menos recursos y dar un mejor rendimiento, y el equipo de Railo Technologies tiene el concepto de “Tratar la lentitud como un error (treat slowness as a bug)” como una filosofía de desarrollo básico. Muchas pruebas de rendimiento han demostrado que Railo realiza procesos más rápido que otros motores de CFML.
Además de esto, Railo intenta resolver muchas inconsistencias que se encuentran en CFML tradicionalmente. Estas pueden ser cambios forzados en el comportamiento, o las opciones configurables en el Administrador Railo.

El equipo de Railo Technologies siempre ha estado abierto a la retroalimentación y a eventos comunitarios CFML, estando dispuestos a recordarle a la gente que Railo es un proyecto comunitario.

Railo Technologies también crea fuertes asociaciones tecnológicas con empresas de software CFML, incluyendo Blue River Interactive Group, CONTENS Software GmbH e Intergral GmbH, para ayudar a garantizar que su software funciona bien con Railo. Además, Railo Technologies programas de socios para soluciones (desarrollo), alojamiento y capacitación.

Más adelante estaremos hablando más de Railo, seguro que hay muchas cosas mas interesante de este software para aplicaciones web.

Monitorizar JVM usando un CFC y JSON

Developer

Buscando una manera de estar monitorizando la JVM usando algo ‘light’, en este caso, llegué a la conclusión de usar un CFC como web service devolviendo en format JSON el estado actual de la JVM, ademas de permitirme escribir un log en ColdFusion.

Ejemplo del ‘output’:

{
  "PERCENTFREEALLOCATED":85.0,
  "FREEMEMORY":214.0,
  "MAXMEMORY":455.0,
  "TOTALMEMORY":253.0,
  "PERCENTALLOCATED":56.0
}

El código es muy simple para prevenir carga innecesaria en el servidor e incluso en la JVM.

Código wsJVM.cfc:

component {
  remote struct function getJVMstat()
    returnformat="JSON" {
      var result = {};
      var runtime = CreateObject("java","java.lang.Runtime").getRuntime();

      result.freememory = round(runtime.freeMemory()/1024^2);
      result.totalmemory = round(runtime.totalMemory()/1024^2);
      result.maxmemory = round(runtime.maxMemory()/1024^2);
      result.percentfreeallocated = round((result.freeMemory/result.totalMemory)*100);
      result.percentallocated = round((result.totalMemory/result.maxMemory)*100);

      writelog("freememory=#result.freememory# totalmemory=#result.totalmemory# maxmemory=#result.maxmemory# percentfreeallocated=#result.percentfreeallocated# percentallocated=#result.percentallocated#","information",false,"jvmstats");

      return result;
  }
}

 

ColdFusion Tip: Make HTML to Plain Text

Buscando una manera de eliminar elementos HTML que generalmente vienen en los API o desde base de datos ingresados usando un HTML Editor, esto fue lo mejor que pude usar, se los comparto.

#REReplace(htmlstr,”<[^>]*>”,”",”All”)#

Usando Splunk Storm REST API en ColdFusion

Comparto con todos ustedes este código para podes utilizar Splunk Storm REST API en ColdFusion, ya que ya pasé la terrible tarea de probar y probar hasta que por fin funciono, decidí compartirlo así no pierdan el tiempo ustedes y continuen con su ardua labor de programar.

splunkstorm.cfc

component {
variables.projectID = "9934fda08f5711e2ad4822000a1ea029";
variables.access_token = "HD2K2mfhhov_fiGZaAwx-7sxSpJcNwrtm33hdsKr0yWXY71KYWDdbRCk8XT3B2ou6e60eF-QDaE=";
variables.host = createObject("java", "java.net.InetAddress").getLocalHost().getHostName();

public void function send(string event="",
string sourcetype="coldfusion",
string source="",
string host=variables.host,
string projectID=variables.projectID,
string access_token=variables.access_token) {
var result = {};

httpService = new http();
httpService.setMethod("post");
httpService.setCharset("utf-8");
httpService.setUrl("https://api.splunkstorm.com/1/inputs/http?index=#arguments.projectID#&amp;sourcetype=#arguments.sourcetype#&amp;host=#arguments.host#");
httpService.setUsername("x");
httpService.setPassword("#arguments.access_token#");
httpService.addParam(type="header", name="Content-Type", value="text/plain");
httpService.addParam(type="body", value="#arguments.event#");

result = httpService.send().getPrefix();
}
}

Protección Adicional contra XSS en ColdFusion

xss

Hace un par de días atrás me encontre con el problema de que por alguna razón la opción “Protect Cross-Site Scripting” es ignorada cuando hay variables que vienen desde ColdFusion y no en JavaScript, por eso decidí hacer esta función que me ayuda a proteger mis JavaScript que tienen código ColdFusion insertas.

<!--- xssProtect: Prevent XSS attack --->
<cffunction name="xssProtect" access="public" returntype="string">
  <cfargument name="str" type="string" default="" required="no" />
  <cfscript>
    result = "";
    // result = HTMLEditFormat(arguments.str);
    result = REreplace(arguments.str,"<|>|/|(|)|'|'|;|:|=| ","","ALL");

    if(!isNumeric(result))
    result = "'#result#'";

    return result;
  </cfscript>
</cffunction>

Fast Public DNS

dns_2

Free Public DNS Server

Service provider: Google
8.8.8.8
8.8.4.4

Service provider: DNSadvantage
156.154.70.1
156.154.71.1

Service provider: OpenDNS
208.67.222.222
208.67.220.220

Service provider: Norton
198.153.192.1
198.153.194.1

Service provider: GTEI DNS (now Verizon)
4.2.2.1
4.2.2.2
4.2.2.3
4.2.2.4
4.2.2.5
4.2.2.6

Service provider: ScrubIt
67.138.54.100
207.225.209.66

‘StartUp Code’ para Administrador usando FW/1 y Twitter Bootstrap

Manager FW/1 Bootstrap

Esta aportación a la comunidad de desarrolladores de ColdFusion la hago pensando en ahorrarnos tiempo ha ciendo lo mismo casi siempre, así que con esto al menos entraremos en acción más rapidamente. Read more

Crear un archivo de configuración en onApplicationStart()

Aqui les comparto como pueden automatizar un archivo de configuración en onApplicationStart(). Read more