|

Comparativa entre J2EE, ASP.NET y PHP

Interesante comparativa entre 3 de los lenguajes de programación más usados en desarrollo web: J2EE, ASP.NET y PHP:

  • Sintaxis: Java es el que mejor sintaxis tiene, PHP aún usa ‘::’ y ‘->’ y algunas funciones podrían ser usadas dentro de los objetos y no como procedimientos. Para ASP.NET lo más sencillo es VB.NET.
  • Curva de aprendizaje: PHP es el más sencillo, aunque a mí me pasa que siempre tengo que estar mirando en algunas funciones el orden de los parámetros porque a veces no siguen la misma lógica. ASP.NET también es bastante sencillo y J2EE el más complicado de aprender.
  • Velocidad de desarrollo: ASP.NET es el más rápido, debido a la cantidad de componentes que tiene que te hacen todo el trabajo. PHP es rápido si se usa algún framework. J2EE es el más lento.
  • Plataforma: PHP trabaja mejor en LAMP, aunque funciona también en otras plataformas, ASP.NET es Windows y J2EE trabaja bien en cualquier plataforma.
  • Base de datos: normalmente es MySQL para PHP, Oracle para J2EE y MSSQL para ASP.NET.
  • IDE (Integrated Development Environments): ASP.NET tiene Visual Studio que es una gran aplicación, pero de coste elevado. J2EE tiene varias herramientas comerciales, pero Eclipse es la mejor (incluso alguna de las comerciales como WASD está basada en Eclipse). Para PHP no existe una que destaque sobre las demás, aunque también puedes usar Eclipse.
  • Soporte orientado a objetos: J2EE y ASP.NET son los mejores, aunque PHP ha mejorado en las últimas versiones.
  • Seguridad: J2EE parece el más seguro, aunque PHP tiene mala fama, pero es debido sobre todo a los desarrolladores, no al lenguaje de programación. ASP.NET tiene también mala fama debido a fallos de seguridad debidos a Windows.
  • Rendimiento: Suele ganar PHP en cuestión de velocidad y recursos. J2EE es más pesado, parecido a ASP.NET.
  • Servidor Web: ASP.NET solo funciona con IIS, PHP y J2EE tiene versiones comerciales y open source.
  • Librerías y frameworks: Todos tiene muchas librerías y frameworks disponibles, siendo para PHP y J2EE la mayoría gratuitas y open source.
  • Soporte y comunidad: para ASP.NET la mayoría de los foros, grupos de usuarios y comunidades de desarrolladores están manejados por Microsoft, mientras que para PHP y J2EE existen muchos grupos independientes.
  • Coste: PHP es la alternativa totalmente gratuita, ASP.NET tiene licencias bastante caras, mientras que J2EE puede desarrollarse con herramientas gratuitas y de pago.

J2EE vs ASP.NET vs PHP

Vía / dzone

| |

Sphinx: buscador de texto open source

sphinx.pngSphinx (SQL Phrase Index) es un motor que permite buscar texto. Normalmente es un motor de búsqueda independiente, que provee de forma rápida y eficiente resultados relevantes a otras aplicaciones. Está diseñado para ser integrado con MySQL y lenguajes de programación (actualmente PHP). Los datos se pueden recuperar mediante conexión directa a MySQL o mediante XMLs.

Dispone de cuatro utilidades: indexer para crear índeces de texto, search para buscar desde la línea de comandos, searchd es un demonio que busca en los textos desde aplicaciones externas y sphinxapi un API para lenguajes de programación (PHP).

Entre las características que ofrece nos encontramos con lo siguiente:

  • Alta velocidad de indexación (+10Mb/s)
  • Alta velocidad de búsqueda (0.1 s. en 2-4 Gb de texto)
  • Alta escalabilidad
  • Soporte para búsquedas distribuidas
  • Soporte para MySQL nativo (admite tablas MyISAM y InnoDB)
  • Búsqueda de frases
  • Stemming de inglés y ruso
  • Y mucho más

Sphinx

Vía / MySQL Performance Blog

5 expresiones regulares útiles para desarrollo web

Aunque a algunos nos gustan bastante las expresiones regulares, no está mal ofrecer una lista de alguna de ellas que nos pueden ser útiles cuando desarrollamos aplicaciones web.

  • Usuario: está es sencilla, letras, dígitos y el subrayado, con una longitud entre 3 y 16 caracteres.
/^[a-zA-Z0-9_]{3,16}$/
  • Etiquetas XHTML: habrá que sustituir la palabra etiqueta por la correspondiente que queremos buscar.
/]*>(.*?)<\/etiqueta>/
  • Etiqueta con atributos: lo mismo que la anterior pero con atributos.
/]*atributo\s*=\s*(["'])valor\\1[^>]*>(.*?)<\/etiqueta>/
  • Direcciones de correo: según la especificación RFC 822:
function is_valid_email_address($email){
$qtext = '[^\x0d\x22\x5c\x80-\xff]';
$dtext = '[^\x0d\x5b-\x5d\x80-\xff]';
$atom = '[^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c'.
'\x3e\x40\x5b-\x5d\x7f-\xff]+';
$quoted_pair = '\x5c[\x00-\x7f]';
$domain_literal = "\x5b($dtext|$quoted_pair)*\x5d";
$quoted_string = "\x22($qtext|$quoted_pair)*\x22";
$domain_ref = $atom;
$sub_domain = "($domain_ref|$domain_literal)";
$word = "($atom|$quoted_string)";
$domain = "$sub_domain(\x2e$sub_domain)*";
$local_part = "$word(\x2e$word)*";
$addr_spec = "$local_part\x40$domain";
return preg_match("!^$addr_spec$!", $email) ? 1 : 0;
}
  • URL: para reconocer direcciones de internet:
{
\b
# Parte principal (protocolo://dominio, o solo dominio)
(
# http://, o https://
(https?)://[-\w]+(\.\w[-\w]*)+
|
# Nombre de dominio
(?i: [a-z0-9] (?:[-a-z0-9]*[a-z0-9])? \. )+ # subdominions
# .com, .net...
(?-i: com\b
| edu\b
| biz\b
| gov\b
| in(?:t|fo)\b # .int or .info
| mil\b
| net\b
| org\b
| [a-z][a-z]\.[a-z][a-z]\b # two-letter country code
)
)
# Puerto
( : \d+ )?
# El resto es opcional que empieza por /
(
/
[^.!,?;"\'<>()[]{}sx7F-\xFF]*
(
[.!,?]+ [^.!,?;”\’<>()\[\]{\}s\x7F-\xFF]+
)*
)?
}ix

5 Regular Expressions Every Web Programmer Should Know

Vía / dzone

MySQLToolKit: utilidades MySQL para la línea de comandos

MySQLToolKit es una serie de utilidades de línea de comandos esenciales para MySQL. Totalmente independientes, no se necesita ninguna aplicación externa, ni ser instalados, solo es necesario ejecutarlos.

Entre las utilidades que ofrece, nos encontramos con:

  • Table Checksum: comprueba si existen los mismos datos en dos tablas. La única forma de comprobar si las tablas esclavas están sincronizadas.
  • Table Sync: ofrece dos algoritmos que aseguran sincronización entre tablas aunque no estén en el mismo servidor.
  • Query Profiler: analiza querys normales, en batch, aplicaciones externas y comandos. Recopila datos de diversas fuentes para mostrar un informe de resultados con sentido.
  • Archiver: almacena filas de una tabla en otra tabla o en un fihero.
  • Deadlock Logger: recupera datos del último deadlock InnoDB y lo almacena en un fichero o en una tabla.
  • Duplicate Key Checker: encuentra índices o claves foráneas que estén total o parcialmente duplicadas.
  • Show Grants: te ayuda a extraer, comparar, cambiar, sincronizar y llevar una control de versiones de los privilegios de los usuarios.
  • Slave Restart: monitoriza la replicación de los esclavos por si ha habido error y si es así los reinicia.

MySQLToolKit

Vía / Xaprb

links for 2007-07-23

Recursos, plantillas y herramientas de diseño web open source

A pesar de la lucha entre el uso de software propietario y el open source, hay que reconocer que el que sea gratis no implica que sea malo, y para demostrarlo, una lista (que os resumimos) de herramientas para diseño web, directorio de plantillas y recursos open source.

The Open Source Web Design Toolbox: 100 Tools, Resources, and Template Sources

Vía / Digg

links for 2007-07-20

Hyperic HQ: monitoriza estructuras web

Hyperic HQ es una aplicación opensource que ofrece un portal diseñado para descubrir y empezar a controlar la infraestructura web de forma sencilla.

hyperichq.png

Descubre el software y hardware

Crea un modelo y muestra las relaciones entre en software, el hardware y los servicios de forma precisa. Detecta cada aspecto de tu hardware y software automáticamente, incluyendo memoria, CPU, disco, red e información sobre configuración y versiones. Genera eventos sobre cada cambio de configuración en cada recurso que se use y avisa a los administradores de sistemas. Comprueba el estado de los recursos de una forma simple desde el navegador.

Monitoria cada capa de tu infraestructura

Colecciona mediciones en tiempo real e históricas sin ser invasivo. Permite definir alertas que nos ayude a anticiparnos a los problemas. Compara métricas de diferentes recursos que nos permite comprender las interacciones entre ellos.

Registra todos los logs, la configuración y los eventos de seguridad

Muestra informes de detalles sobre cada evento generado. Refuerza las políticas de seguridad para detectar cualquier acceso no permitido.

Hyperic HQ

Vía / OpenSourceCommunity.org