Archivos del autor Félix García Borrego
Humor: GUÍA DE INGLÉS ZUBURBIAL (II)
Continuamos con la guía iniciada en Guía de Ingles Zuburbial (I):
LIGANDO
En los zuburbios, es imprescindible relacionarse. Para caer bien a las chicas, tienes que alagarlas. Y ¿qué mejor forma de alagar que los típicos piropos de tu tierra? Son universales y calarán en cualquier país. Algún ejemplo:
- Pretty you are, doughter! (¡Guapa ere… hija!)
- Girl, go here what you hear (Niña, ven pacá que te vas a enterá)
- I’m more hot that sanjacobos’s chease (Estoy más caliente que er queso de los sanjacobo)
- Cuando la tengas en el bote, podrás cantar victoria: “This night, you don’t scape with wings” (Esta noche no te escapas ni con alas).
VIAVANSI EN INGLÉ
Por último, es importante exportar siempre las peculiaridades de tu entorno de trabajo. Por lo tanto, en los zuburbios ingleses utiliza tus expresiones de siempre pero de forma que se te entienda:
- In zero-comma-two (En cero coma dos). Hacer algo muy rápido.
- To be a big border (Ser un filón). Una ganga, vamos.
- To be strange (Ser arcano), o Find a stranged (encontrarse una arcanidad)
- King Kong’s shit (Mojón de King Kong). Algo hecho rematadamente mal.
- To make you the bed (Hacerte la cama). No dejes nunca que te la hagan. Es malo.
- You are a person without arm! (¡Eres un muñón!). Para los malos programadores.
- Withfather (Compadre). Para los compañeros del alma.
Espero que sea suficiente para que tu estancia en la tierra de Ckeck’s Pierre sea lo menos traumática posible y te puedas integrar con lo más bajo del país.
Web Semántica: Cool URIs
Dentro del escenario de la web semántica, el estándar del Cool URIs se centra en definir el mecanismo de acceso a recursos basados en URIs, así como concretar el protocolo de negociación para el acceso a dichos recursos.
Este estándar, facilita la interoperabilidad del contenido web en el contexto de la web semántica, indicando como publicar la información sobre los recursos de manera que tanto máquinas como humanos puedan acceder a ella de una forma sencilla.
Para conseguir esto, el estándar define un conjunto de pautas básicas a seguir a la hora de publicar URIs, de este conjunto de pautas, las más interesantes son:
- Las URIs deben ser semánticas, de forma que teniendo sólo las URIs tanto máquinas como personas puedan obtener una descripción del tipo de recurso identificado.
- A una misma URI, las máquinas deben obtener RDF y las personas una visión legible en HTML. De forma más general se recomienda adaptar la respuesta al cliente que solicita el recurso, de forma que los humanos obtengan contenido inteligible por ellos y las máquinas obtengan algun tipo de recurso fácilmente procesable.
- Las URIs no deben ser ambiguas. Hay que distinguir entre documentos web e identificadores de recursos. No se deben utilizar URIs a documentos para identificar recursos reales. Se recomienda usar un mecanismo de resolución que en función de un identificador de recurso (URI) redirija al contenido RDF o al contenido HTML en función del tipo de cliente que solicita el recurso.
- Uso de Hash URIs o 303 URIs para el acceso a recursos parciales (zonas de documentos, o recurso no reales)
- Hash URIs: Utilizando el símbolo “#” para referenciar fragmentos o partes especiales de una URI. Esta es la opción preferída.

- Uso del estado HTTP 303 para la redirección del usuario al recurso o fragmento indicado.

- Las URIs deben ser simples y fáciles de recordar.
- Las URIs deben ser estables y pensadas para continuar durante años. Por este motivo no deben aparecer extensiones relacionadas con la tecnología (.jsp, .asp, .php, etc… ).
Visteme despacio que tengo prisa!
Los programadores se enfrentan a una paradoja de valores básicos. Todos los desarrolladores con algunos años de experiencia saben que desordenes previos son causas de retraso. Y sin embargo todos los desarrolladores sienten que la presión les hace dejar mal algunas cosas para conseguir alcanzar las fechas de entrega. En resumen, no se toman el tiempo necesario para ir rápido.
Los verdaderos profesionales saben que la segunda parte de la paradoja está mal. No llegarás a la fecha haciendo mal las cosas. Es más, hacer las cosas mal te retrasará instantáneamente, y te forzará a incumplir la fecha de entrega. La única manera de llegar a la fecha -la única manera de ir rápido- es mantener el código tan limpio como sea posible durante todo el tiempo.
Parrafos del libro “Clean Code”, leido en el blog de José Manuel Beas
El Mago de las Cajas de Viavansi
Imágenes tomadas por nuestra cámara de seguridad :p. Con varios proyectos a las espaldas y todavía le queda tikitaka!
Algunas citas célebres sobre Inteligencia Artificial
- Vernor Vinge escribió:
“ Dentro de 30 años tendremos los medios tecnológicos para crear una inteligencia superhumana…Algún tiempo después, la era humana habrá terminado” - Moravec escribió:
“De manera bastante rápida, podríamos quedar desplazados y fuera de la existencia…Al igual que los hijos biológicos de generaciones anteriores, las máquinas representan la mejor esperanza de la humanidad para un futuro a largo plazo. Nos corresponde a nosotros ofrecerles todas las ventajas y cómo retirarnos cuando ya no podamos contribuir” - I.J. Good escribió:
Vamos a definir una máquina ultrainteligente como una máquina que puede sobrepasar como mucho todas las actividades intelectuales de cualquier hombre, por muy inteligente que sea. Puesto que el diseño de las máquinas es una de estas actividades intelectuales, una máquina ultrainteligente podría diseñar máquinas incluso mejores; entonces existiría incuestionablemente una “explosión tecnológica”, y la inteligencia del hombre quedaría bastante atrás. Así pues la primera máquina ultrainteligente es la última invención que haya hecho nunca el hombre, siempre que la máquina sea lo suficientemente dócil como para decirnos cómo controlarla. - Anónimo:
“La inteligencia artificial nunca podrá competir con la estupidez natural.”
Pruebas estrés sobre la plataforma Viafirma
Para comprobar el rendimiento de nuestra plataforma de firma, hemos realizado una serie de pruebas de estrés sobre el API Web Service de Viafirma. El objetivo de estas pruebas ha sido obtener métricas de comportamiento y limites de carga para los diferentes servicios ofrecidos, para determinar el rango de operaciones en los que el servicio es estable.
Para las pruebas se han realizado firmas en servidor XADES de ficheros xml de 20k, utilizando como sistema de custodia ficheros y firmando con un certificado de Firma Profesional en software.
Se han realizado en dos tipos de entornos, el primero bastante precario en recursos y el segundo un entorno de producción real. En ambos casos pudimos comprobar que el comportamiento de Viafirma, ante un gran numero de peticiones fue más que aceptable.
Rendimiento de Viafirma con los requisitos Mínimos de Hardware
El entorno donde se realizaron las pruebas es un portátil con un procesador Turion a 2 GHz y 2 gigas de RAM, con el servidor de aplicaciones configurado para permitir 200 hilos concurrentes y con un máximo de 512 MB asignados.
Las pruebas se realizaron configurando un grupo de hilos simulando 100 peticiones por segundo en un bucle infinito.
A continuación se muestran los resultados obtenidos en la misma máquina y misma configuración en un entorno Windows y en un entorno Linux.
Pruebas sobre Windows XP SP 3 en JRE 6.0.11 de Sun
Como se observa en la gráfica, Viafirma mantuvo la cantidad constantes de 1.200 peticiones por minuto con una media de cerca de 5 segundos desde la entrada de la petición hasta su resolución y respuesta. Mientras se realizaros las pruebas, Jconsole marcó en todo momento un consumo de memoria estable.
Pruebas sobre Ubuntu 8.10 en JRE 6.0.10 de Sun
Repetimos las pruebas en un entorno Unix, y observando que el rendimiento es algo mayor. Respondiendo una media de 2.100 peticiones por minuto.
Rendimiento de Viafirma con la configuración de Hardware recomendada
Después de haber hecho estas pruebas “de andar por casa”, hemos repetido la misma batería de pruebas sobre un entorno de producción, un Ubuntu Server con 8 nucleos, 6 Gb de memoria y una configuración optimizada de la JVM 6.
Como podemos observar, el comportamiento es excelente, alcanzando casi más de 7.500 firmas por minuto, manteniéndose totalmente estable la JVM y con el procesador nunca superando el 50% ( debido a los tiempos de espera impuestos por la red).
Firmando digitalmente en Windows 7
Estos últimos días hemos estado realizando pruebas para comprobar el comportamiento de Viafirma en el nuevo sistema operativo de Microsoft, y los resultados no han podido ser mejores, el sistema se comporta perfectamente en Internet Explorer 8 sobre el nuevo Windows 7!!!.
Os dejo algunas capturas de pantalla:
- En caso de que el usuario no tenga instalado Java en su sistema, la detección de componentes inicial corrige esta situación e instala automáticamente la JRE.
- El componente de firma busca los certificados instalados en el sistema, detecta los certificados presentes (en este caso un certificado de la FNMT) y nos permite realizar sin problemas la firma digital del documento.
Integrando Opensearch con IE 7 / Firefox
Gracias a OpenSearch podemos publicar un sistema de búsqueda de forma que sistemas externos puedan federarse y realizar búsquedas sobre nuestro sistema. Este mecanismo de integración puede ir más allá, e incluido en las cabeceras de nuestras web permite que Firefox e Internet Explorer ofrezcan la búsqueda directa sobre nuestra web. Para conseguir esto, los únicos pasos a realizar son declarar este servicio en el head de nuestra web y definir el servicio mediante un fichero OpenSearchDescripcion.
- Añadimos en el head de nuestro página web:
<link rel=“search” href=“http://www.xnoccio.com/site_osd.xml” type=“application/opensearchdescription+xml” title=“Buscar información en Xnoccio”>
- Creamos el fichero site_osd.xml al que hacemos referencia en el link:
<?xml version=”1.0″?>
<OpenSearchDescription xmlns=”http://a9.com/-/spec/opensearch/1.1/”>
<ShortName>Xnoccio (Buscador)</ShortName>
<Description>Busca en todos los artículos publicados en xnoccio</Description>
<Image height=”16″ width=”16″ type=”image/x-icon”>http://www.viavansi.com/opencms/opencms/viavansi/favicon.ico</Image>
<Url type=”text/html” method=”get”template=”http://xnoccio.com?s={searchTerms}”/>
<!–<Url type=”application/x-suggestions+json” method=”GET” template=”http://xnoccio.com?action=opensearch&search=searchTerms}”/>
</OpenSearchDescription>
Con esta mínima modificación conseguiremos que el navegador pueda ofrecer los servicios de búsqueda directamente al usuario de una forma muy sencilla.
C# / ASP.NET : Firma digital y autenticación con Viafirma (II)
En este artículo muestran los pásos a seguir para utilizar los servicios de firma digital ( XAdes, Facturae, …), autenticación (FNMT, Firma Profesional, ANCERT, …) y verificación de validez de certificados ( OCSP, CRLs, …) desde aplicaciones ASP.NET gracias a Viafirma.
1- Añadir las dependencias necesarias
Es necesario que incorporemos al proyecto las siguientes dlls incluidas en el kit de desarrollo de Viafirma: DotNetOpenId.dll, log4net.dll y ViafirmaClientDotNet.dll.
Por otro lado también necesitaremos añadir el directorio “viafirma” y que contiene los ficheros:
- Default.aspx: con los métodos que deben ser sobreescritos con el comportamiento específico a ejecutar cuando finalice el proceso de firma.
- viafirmaStyle.css: con la apariencia que viafirma adoptara para el proceso de autenticación o firma. Este css puede ser adaptado a la identidad corporativa de la aplicación cliente.
- xrds.aspx: necesario para el correcto funcionamiento de la comunicación OpenID.
2- Creamos una página de ejemplo desde la que realizar la firma
Creamos una primera página aspx en la que simplemente colocaremos un botón de acción asociado a un controlador de página que utilizará el API de Viafirma para firmar digitalmente un fichero de ejemplo con el certificado digital al usuario.
El código de la aplicación de ejemplo queda como el siguiente:
<%@ Page Language=”C#” Inherits=”AplicacionEjemploClienteViafirma.Default” %>
<html>
<body>
<h2>Ejemplo de integración Viafirma con .Net</h2>
<form id=”form1″ runat=”server”>
<p>Pruebe la autenticación</p>
<asp:button id=”firmarButton” runat=”server” text=”Firmar un documento de ejemplo con Viafirma” onClick=”FirmarButton_Click” />
</form>
</body>
</html>
3- Implementar el método FirmarButton_Click
En este método simplemente indicaremos al cliente de viafirma cuál es la url pública de acceso a Viafirma, cuál es la url de acceso al servicio web de Viafirma, y registraremos un fichero para su firma.
public void FirmarButton_Click(object sender, EventArgs e){ // Configuramos el cliente de viafirma ( En una aplicación real esto se realiza al iniciar la aplicación) ViafirmaClientFactory.Init(“http://viafirma.viavansi.com/viafirma”, http://viafirma.viavansi.com/viafirma); // Recuperamos / Generamos el contenido del documento a firmar. ( Como ejemplo generamos un txt )byte[] datos_a_firmar = System.Text.ASCIIEncoding.ASCII.GetBytes(“Contenido del documento firmado”); // Enviamos a firmar el documento ViafirmaClient clienteViafirma = ViafirmaClientFactory.GetInstance(); // Registramos el documento que deseamos firmar. Obteniendo un identificador temporal. string idTemporalFirma = clienteViafirma.PrepareFirmaWithTypeFileAndFormatSign(“FicheroEjemplo.txt”, typeFile.txt, typeFormatSign.XADES_EPES_ENVELOPED, datos_a_firmar); System.Console.Write(“idTemporalFirma: “ + idTemporalFirma); // Iniciamos el proceso de firma redireccionando al usuario a Viafirma interactuando con el usuario.. clienteViafirma.Sign(idTemporalFirma); }
Con este simple código ya conseguimos que nuestra aplicación ASP.NET utilice Viafirma para que sea ésta la responsable de solicitar, validar, recuperar el certificado o DNI electrónico del usuario y firmar el documento digitalmente. En este ejemplo se ha realizado la firma de un fichero de texto utilizando en formato XADES, pero de una forma muy similar se podría haber optado por realizar la firma de un pdf o de una factura electrónica.
Una vez que el proceso termine, Viafirma devolverá el control a la aplicación ASP.NET retornando todos los datos obtenidos del certificado, junto con el identificador de firma asociado al documento firmado.
Obtener los datos de respuesta
Una vez que Viafirma obtenga los datos del certificado de usuario invocará al método ProcessResponseSign, que se encuentra en el fichero Default.aspx dentro del directorio viafirma. Lo único que tendremos que hacer es sobreescribir dicho método con el comportamiento deseado y recuperar todos los datos de la firma del objeto FirmaInfoViafirma.
En este ejemplo, si la firma ha sido correcta, redireccionamos al usuario a una página de destino.
override public void ProcessResponseSign(Viafirma.Estado estado,Viafirma.FirmaInfoViafirma firma){
Viafirma.Log.Debug(“Firma Viafirma realizada correctamente.”);
// Aquí ya tenemos todos los datos asociados al cliente y a su firma.
//redireccionamos al usuario a la p gina destino considerando el usuario ya ha finalizado la firma.
if(Viafirma.Estado.OK== estado){
Session[“resultadoFirma”]= firma;
Uri url=new Uri(HttpContext.Current.Request.Url, HttpContext.Current.Response.ApplyAppPathModifier(“~/resultadoFirma.aspx”));
HttpContext.Current.Response.Redirect(url.AbsoluteUri);
} else{
// Hay problemas al firmar.
}
}
A continuación se muestran algunas capturas de pantalla de la aplicación de ejemplo ASP.NET en acción:
Página inicial de la aplicación de ejemplo: ( contenida en el Kit de desarrollo de Viafirma)
La aplicación ASP.NET interactuando con Viafirma para realizar la firma.
La aplicación ASP.NET muestra algunos de los datos retornados tras el proceso de firma.
Categorías
Encuentra artículos a través de sus "tags"
Archivos mensuales
Encuentra artículos según el mes en el que fueron escritos.
- February 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- June 2009
- May 2009
- April 2009
- March 2009
- February 2009
- January 2009
- December 2008
- November 2008
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- July 2007
- June 2007
- May 2007
- April 2007
- March 2007
- February 2007
- January 2007














