aelena.com

23 January 2010

Mistabishi - From Memory

Filed under: General, music — admin @ 16:27

Sin duda uno de los mejores temas de drum n’ bass de la historia además de un video está entre los más emotivos que haya visto nunca, merece estar al lado de la gran Sinead. Maravilloso, Mistabishi.

18 January 2010

Google, China y Baidu

Filed under: General, web 2.0, china — admin @ 14:52

en The Register publican los resultados de un interesante estudio forénsico sobre el porqué la predominancia de mercado de Baidu, la piratería musical, las diferencias o competencia desleal a la hora de competir en el mercado de internet chino, la falta de neutralidad / escrúpulos, etc. Merece la pena echar un vistazo al estudio.

El artículo deja bien claro una sensación que yo creo que está muy extendida y de la que se habla menos de lo que se debería, y es la absoluta falta de transparencia e igualdad de condiciones a la hora de competir en el mercado chino, tremendamente intervenido por el gobierno cuyos aliados pueden operar con total impunidad incluso dentro de la ilegalidad, mientras que otros competidores tienen que saltar trabas y cumplir regulaciones exigentes y excesivas como si se tratase de un país muy puntilloso con la legalidad, las auditorías y la calidad. Es evidente que queda un larguísimo camino para convencer a China de algunas de las premisas básicas del libre mercado.

Curioso que a la vez se trate de una empresa listada en el índice Nasdaq y en la cual invierten, y obtienen beneficios por publicidad, numerosas empresas occidentales. Como mínimo, y dejando de lado temas legales, se demuestra el crecimiento y progresiva complicación de los lazos globales entre mercados y empresas y el flujo del capital, cada vez más difícil de seguir.

15 January 2010

jQuery para MOSS

Filed under: MOSS 2007, jQuery — admin @ 11:11

Recientemente he tenido que hacer algunas customizaciones para MOSS con jQuery, y he acabado conociendo la existencia de una interesante librería que combina ambos mundos. Es la jQuery Library for SharePoint Web Services que podemos encontrar en CodePlex.

La descripción lo dice todo:

This is a jQuery library which abstracts SharePoint’s Web Services and makes them easier to use. It also includes functions which use the various Web Service operations to provide more useful (and cool) capabilities. It works entirely client side and requires no server install.

Una herramienta muy interesante a tener en cuenta en el futuro.

7 January 2010

The F# Survival Guide

Filed under: .NET, F#, functional programming — admin @ 18:58

La programación funcional cada vez va ganando más importancia…es de sobra hora de irse familiarizando con los conceptos y las técnicas, así que viene perfecto el libro gratuito que podeis encontrar aquí.

F# es un lenguaje funcional basado en ML y OCaml para el mundo .net, de manera que nos da un fácil acceso a las librerías a las que estamos ya acostumbrados desde una perspectiva funcional.

No olvidemos que C# ya incorpora características típicas de la programación funcional como las lambda expressions, las funciones anónimas o la llamada lazy evaluation. Ya no hay excusas

ClientIDMode en ASP.Net 4.0

Filed under: General, .NET, Asp.Net — admin @ 9:06

La próxima versión de asp.net introducirá un cambio que creo será agradecido por muchos desarrolladores, y es la posibilidad de poder controlar la generacion de los IDs de los controles, de manera que podamos evitar las típicas cadenas “ctl00_ctl…” etc. que tanto dificultan el acceso DOM a los elementos mediante javascript o librerías como jQuery o Mootools.

El modo por defecto seguirá siendo el que ya conocemos, pero se podrá cambiar a nivel de página a alguno de los siguientes valores:

  • Static el ID no tendrá antepuesta la concatenación de los identificadores de los contenedores padres, lo que facilita el acceso a un control que se puede encontrar en diferentes páginas en diferentes tipos de contenedores, facilitando la programación en el cliente.
  • Predictable muy útil para controles con plantillas de repetición (item templates), como por ejemplo un Datalist o un Gridview.
  • Inherit el control heredará el modo que use su control padre.
  • AutoID el modo habitual como en cualquier versión de asp.net

Como hemos comentado esto se puede hacer a nivel de página

<%@ Page Language=”C#” AutoEventWireup=”true”
  CodeFile=”Default.aspx.cs”
  Inherits=”_Default”
  ClientIDMode=”Predictable” %>

o a nivel de web.config para todo el sitio

<system.web>
    <pages clientIDMode=Predictable>pages>
system.web>

Eso sí, cuidado de no generar IDs que no sean únicos. Ahora esto es nuestra responsabilidad si escogemos algunos de los modos que nos permiten controlar este aspecto.
Sería además una delicia que esto se pudiera hacer también con SharePoint 2010, que para customizarlo con jquery o similares ofrece a veces un acceso farragoso a los controles.

Saludos

12 July 2009

Escapar texto en formato QuotedPrintable - C#

Filed under: .NET — admin @ 16:35

Una pequeña función que hace uso de las expresiones regulares para escapar (transformar) texto en formato QP y evitar que estas cadenas salgan representadas en pantalla incorrectamente.

La función es muy sencilla:

public string EscapeText(string _textToEscape)
{

    if (!(String.IsNullOrEmpty(_textToEscape)))
    {

        Regex _regex = new Regex(”=[0-9|A-F][0-9|A-F]“);
        MatchCollection _matches = _regex.Matches(_textToEscape);
        foreach (Match _match in _matches)
        {
          int _asciiCode = int.Parse(_match.Value.Substring(1),
            System.Globalization.NumberStyles.HexNumber);
          _textToEscape = _textToEscape.Replace(_match.Value,
          Convert.ToString(Convert.ToChar(_asciiCode)));
         }

         _textToEscape = _textToEscape.Replace(”?=“, ““);
        _textToEscape = _textToEscape.Replace(”  “, “ “);

        return _textToEscape;

    }
    return string.Empty;

}   

Saludos.

14 June 2009

office eye candy

Filed under: General — admin @ 10:47

Para todos aquellos que sufrimos el trabajo en lugares grises, beige, aburridos, cutres (lo normal) o simplemente horrendos, cuando ya no lo podamos soportar más, siempre podemos echar un vistazo a páginas como esta o esta otra para alegrarnos durante unos minutos y volver al tajo con ilusión / resignación o un suspiro.

6 June 2009

OWStimer.exe vs. w3wp.exe

Filed under: MOSS 2007, MOSS — admin @ 11:58

Si quereis depurar un workflow de MOSS que despierta al recibirse un correo en la biblioteca a la que el workflow está asociado, debereis adjuntar el depurador de Visual Studio no contra w3wp.exe sino contra el timer de MOSS, OWSTimer.exe. Y es que aunque MOSS corra sobre la infraestructura de ASP.Net, este proceso es el encargado de enviar notificaciones y realizar tareas programadas para Windows SharePoint Services, y se ve que la gente del equipo de desarrollo de MOSS decidió programar una tarea cuando llega un correo y correr con w3wp.exe cuando se cargan elementos a mano en una biblioteca.

Es decir, según la funcionalidad que queramos probar (1. Un WF que arranca con un correo y 2. un WF que arranca al añadir manualmente un nuevo elemento en una biblioteca), el escenario de depuración será diferente, ya que la forma de ejecutar estas tareas será distinta.

Además esto implica que si queremos leer parámetros de configuracion de un web.config como estamos acostumbrados a hacer desde una webpart o un desarrollo web normal, esta operación fallará cuando el encargado de despertar el WF sea  OWSTimer.exe, ya que este proceso no sabe nada del web.config que tengamos en el directorio de nuestra aplicación web o site. De manera que no queda otra que tener la configuración en un XML aparte, o base de datos, u otra alternativa, como un servicio web quizás, para hacer  nuestro escenario un poquito más SOA y desacoplado.
Eso sí, de vez en cuando el Visual Studio decidirá cerrarse. Supongo que para que esto de desarrollar para MOSS no se convierta en algo demasiado agradable o cómodo. ;P

Es posible además que cuando esto ocurra, luego el proceso no aparezca, y es porque se habrá caído el propio servicio de MOSS. Entonces, abrimos las Herramientas Administrativas, vamos a Servicios, y buscamos Windows SharePoint Services Timer. Lo volvemos a levantar y a depurar de nuevo.
Saludos

Next Page »