Bernardo Raskovsky's Blogs

(en español y desde Argentina)
Como armar un rango de fechas en una tabla temporal en SQL

Este es un truco que utilizo para mostrar datos por fechas, donde no tenia registro para una fecha dentro del rango. Así, que ¿como mostrar las variaciones entre esas dos fechas?.

Primero crear una tabla temporal, con las fechas y luego un left join con nuestra tabla de datos. Así seria el script:

CREATE PROCEDURE sp_sel_DameVistasEntreFechas   
    @FechaInicio DateTime,
    @FechaCierre DateTime
AS
BEGIN
    SET NOCOUNT ON;
 
    -- Tabla temporal con las fechas de inicio y cierre
    CREATE TABLE #Temp(
                        Fecha datetime
                        )
    DECLARE @date DATETIME   
    SET @date = @FechaInicio
    WHILE @date < @FechaCierre + 1
    BEGIN
        INSERT INTO #Temp
        VALUES(@date)
        SET @date = dateadd(day, 1, @date)
    END
    Select  miTabla.* , #Temp.Fecha
    from  #Temp
    LEFT JOIN miTabla
    ON #Temp.Fecha = miTabla.Fecha
END

Espero que lo usen

Un Abrazo

Parche para Facebook Developer Toolkit para usuarios de habla Hispana.

Como dije en el primer post de la serie de tutoriales sobre aplicaciones en Facebook, hay que estar atento a los cambios en la arquitectura de Facebook. Un día nos podemos levantar y nuestras aplicaciones ya no funcionan.

Eso es lo que me paso el sábado 9 de febrero, Facebook agrego el lenguaje español y los parámetros que recibía la api que uso en mis aplicaciones, Facebook Developer Toolkit, no las entendía y daba error.

Busque en los foros que hacer, pero nadie respondía. Así que me senté a ver el código fuente y genere la dll por mi cuenta. Dejo el link a la dll para que la puedan usar, ante algún error que tengan, por favor dejen un comentario así todos pueden seguirlo.

Un abrazo

Posted: Feb 12 2008, 10:06 AM by Ber_Arg | with 4 comment(s) |
Filed under: , ,
Aplicaciones en Facebook 2º Parte - Crear nuestra primera App

Este es la segunda parte de una serie de post sobre desarrollo de aplicaciones para Facebook. El primer post, "Aplicaciones en Facebook 1º parte" fue una introducción a la arquitectura de Facebook, ahora vamos a aprender a crear una aplicación muy sencilla.

Primero lo primero, hay que tener una cuenta en Facebook (supongo que si ya leyeron el primer post ya deben tener una). Una vez registrados debemos agregar la aplicación "Developer". Con ella accedemos a las pantallas con foros, novedades, el status del framework de Facebook y algunos datos de nuestras aplicaciones.

barra lateral de Facebook

Ahora hay que dar de alta una nueva aplicación y configurar algunos datos para que Facebook pueda acceder a nuestra página. Para dar de alta una nueva aplicación hay que hacer clic en el botón "+ Set Up New Application".

top

Obtenemos una pantalla para llenar datos que modifican como va a funcionar la aplicación dentro de Facebook. Estas es una descripción de los datos mínimos que debemos completar, el resto queda en ustedes para aprender, no son muy difíciles de entender:

  • Application Name: Nombre de la aplicación.
  • Developer Contact E-mail: Nuestro e-mail.
  • Callback Url: Dirección a la que Facebook va a buscar nuestra aplicación, para el ejemplo seria algo así, http://www.midominio.com/Default.aspx.
    Aquí me voy a detener un poco, en la etapa de desarrollo es complicado usar una dirección de tipo localhost, más si usan Web Developer Express como servidor web, es preferible subirlo sobre un IIS local, y usar una dirección así http://localhost:80/Default.aspx que solo funcionaria dentro de nuestra red.
  • Canvas Page URL: Como se la dirección a la que accederán los usuarios.
  • Use FBML o Use iframe: Esta opción es para que Facebook sepa si tiene que detectar las etiquetas FB. Para nuestro ejemplo usamos iframe.
  • Application Type: vamos a elegir Website.
  • Can your application be added on Facebook?: elegimos que si.
  • Post-Add URL: Dirección de Facebook a donde se redirecciona después de agregar la aplicación, tiene que ser la dirección que formamos en Canvas Page.
  • Developer Mode: Tildamos, temporalmente, solo nosotros podemos agregar la aplicación.

Una vez que llenamos todo, hacemos clic en submit. Nos redirecciona a una pantalla donde esta un pequeño resumen de nuestra aplicación. Entre estos datos hay dos muy importante: api key, y secret, más adelante las usaremos.

Una vez que configuramos nuestra aplicación vamos a construirla. Antes que nada este ejemplo lo realizo usando la API Facebook Developer Toolkit (es la que estuve usando hasta ahora, probablemente actualice más adelante para Facebook.Net), entonces tenemos agregar al proyecto las referencias de esta API, Facebook.dll, Facebook.Controls.dll y Facebook.WebControls.dll así tenemos todas las funciones para trabajar.

En el Code Behind de Default.aspx  cambiamos la clase que heredada por CanvasIFrameBasePage, está base page tiene dos propiedades, Api y Secret. ( Adivinaron hay van las llaves que nos da Facebook), y un clase FBService que llama los servicios REST. La pagina debería configurarse de esta forma

public partial class _Default : CanvasIFrameBasePage
{
   Facebook.Components.FacebookService();
   private const string FACEBOOK_API_KEY = "llave api";  
   private const string FACEBOOK_SECRET = "llave secret"; 
 
   new protected void Page_Load(object sender, EventArgs e)
   {
       base.Api = FACEBOOK_API_KEY;
       base.Secret = FACEBOOK_SECRET;
       base.Page_Load(sender, e);
    }
}

Bien vamos ha buscar datos del usuario que accede a la aplicación, y mostrarlos en la pantalla. Agregamos un Label en el aspx. en el Code Behind llamamos a las librerías Facebook, Facebook.Entity, Facebook.WebControls y escribimos el siguiente código:

User usuario = this.FBService.GetUserInfo();
this.Label1.Text = string.Format("Hola {0} ", usuario.FirstName);

Ahora solo queda una cosa, ver la pagina dentro de Facebook, primero agregamos la aplicación a nuestro profile, lo pueden hacer directamente entrando con la URL que completaron en el campo "Canvas Page URL". Al agregar serán redireccionados a la pagina que armamos.

Otro ejemplo, ver las fotos de todos sus amigos agregamos un Literal al aspx y copiamos el siguiente código:

string salida = "Estos son tus amigos:<br />";
Collection<User> amigos = this.FBService.GetFriends();
foreach (User amigo in amigos)
{
       salida += string.Format("<img src='{0}' alt='{1}'/>", amigo.PictureSmallUrl,
                amigo.Name);
}
Literal1.Text = salida;

Bien, hasta aquí por hoy, intenten hacer una App , pueden dejar sus comentarios y las URL de sus App así otros pueden verlas. También les dejo los links a la aplicación on-line y al código fuente.

Un abrazo.

Posted: Feb 03 2008, 04:21 PM by Ber_Arg | with 29 comment(s) |
Filed under: , , ,
Videología de Maradona con el tema "A lado del camino"

Les dejo un video que editó mi amigo Niki Herrera. Es una videología de Diego Maradona con música de Fito Paez, el tema "Al lado del camino" del disco Abre. Bueno disfruten del video y dejen sus comentarios.

 

 

Un abrazo 

Base Page con jquery, script.aculo.us, motools, etc

Un requisito para tener una excelente web 2.0 es el framework javascript que uno elije, mi favorito es jquery, pero también hay otros igual de buenos como script.aculo.us, mootols. Agregarlos a todas las páginas del sitio aun cuando no se usan en todas es un mal uso de los recursos y de performance. De eso se trata este post, como usar los framework sólo donde se necesitan.

Cuando uno trabaja con Master Page y solo algunas de las paginas usan un framework. Debemos agregar al header programando una por una, algo que cualquier programador odia. Mi solución (después de programar mucho) fue crear una base page para cada framework.

Para los que no sepan una Base Page es simplemente una clase que hereda la clase System.Web.UI.Page a la cual le modificamos los eventos como por ejemplo OnLoad con nuestro código. Todas las demás paginas que hereden de esta clase  ejecutaran ese código y luego continuaran con su código propio. Algo así:

 
 
    public class MiBasePage : System.Web.UI.Page
        {
            protected override void OnLoad(EventArgs e)
            {
                // Código General
                base.OnLoad(e);
            }
        }
 
    public partial class MiPagina : MiBasePage
        {
            protected void Page_Load(object sender, EventArgs e)
            {
              //Código particular de la pagina
            }
        }

Ahora tenemos que agregar en el header de nuestra paginas la etiqueta <script>, para eso se utiliza la clase HtmlGenericControl con etiqueta "script", el atributos "type" con valor "text/javascript" y el atributo "src" con la dirección del framework, este ultimo atributo puede cambiar y adaptarse al framework que vamos a usar. Aquí hay un ejemplo:

HtmlGenericControl jquery = new HtmlGenericControl("script");
jquery .Attributes.Add("type", "text/javascript");
jquery .Attributes.Add("src", "jquery/jquery.js");
this.Page.Header.Controls.Add(jquery );

Tomando el código previo lo agregamos dentro del evento Onload antes del "base.Onload(e)" y todas las paginas que hereden esta clase compartiran este funcionamiento.

Un tip: podemos tener distintas base page con diferentes framework y usar el que necesitamos eligiendo la base page de cada framework, asi una pagina hecha en mootols otra en jquery. etc.

Yo les dejo un link para que bajen la clase que yo uso y vean si les sirve.

Un abrazo

Aplicaciones en Facebook 1º parte

 Para los que no conocen, Facebook es la red social con mayor crecimiento en el mundo de Internet. Este sitio permite a sus usuarios compartir  no solo fotos  y vídeos, si no la experiencia de compartir millones de aplicaciones hechas por 3ros a facebook. Si leyeron bien cualquier persona con un poco de conocimiento en lenguajes de programación web puede programar aplicaciones que pueden ser compartidas y visitadas por millones de usuarios en todo el mundo, aun que parezca bastante simple es un mercado que esta moviendo millones de dolares en USA, Asia y Europa.

¿Pero como se programa una aplicación en Facebook?  primero hay que entender como nuestra aplicación debe comunicarse mediante REST. es decir nuestro sistema hace un request a facebook y recibe un xml de respuesta. hasta aquí parece muy difícil, pero por suerte hay gente con buen corazón y ya se encuentran dando vuelta varias API's para cada lenguaje. El que nos importa ahora .Net, las dos API's mas importantes en este momento son:

Hasta ahora solo probé la primera con muy buen resultado (sin quitarle valor a la segunda), hice una aplicación llamada Soy hincha de... en solo un fin de semana, ahora tiene más de 200 usuarios y va creciendo de a poquito, próximamente voy ha construir alguna más interesante.

Algo que se debe tener en cuenta es que el ritmo de las versiones de estas API van con el ritmo en el que Facebook actualiza su framework. Es recomendable que una vez que elijan una API cada cierto tiempo revisen si el framework de Facebook cambio y si hay una actualización de la API.

Muy importante es saber como Facebook muestra nuestra aplicación en su sitio, en un principio lo hacia directamente dentro de un IFrame, una solución con poca performance pero el 80% y mas de desarrolladores lo hacen. Una Novedad es que Facebook agrego un lenguaje de etiquetas como HTML llamdo FBML donde estas etiquetas son reconocidas por Facebook y procesadas, liberando el código HTML, algo muy parecido a lo que hace ASP.Net. De estas dos técnicas solo prové la primera, es rápida, muy fácil y para una aplicación pequeña es suficiente.

Bueno creo que para empezar está bien, tienen links para y viendo de que estoy hablando y le dejo mi profile en Facebook también.

Un abrazo
 

Dattatec se cayó

Hace dos días que Dattatec se cayo, no da servicios de mail, web, servidores dedicados, inclusive su sitio está fuera de servisio. Se rumorea que es un ataque DDoS.

Los que programan en asp.net deben conocer bien sobre esta empresa rosarina, es la provedora de hosting más barata de Argentina y ademas ofrece hosting .net 2.0 - 3.0 -3.5 con Sql Server 2005, siendo muy dificil encontrar otro servicio igual, aun así la calidad de servicio y la seguridad que provee deja mucho que decear.

Voy a  dejar libre los comentarios asi dejan su expreriencias con dattatec.

Un abrazo 

Actualización: Si algun representante de Dattatec quiere dejar alguna info de que esta ocurriendo, tambín puede hacerlo, solo que deje un link o me mande un email.

Posted: Jan 24 2008, 07:33 PM by Ber_Arg | with 10 comment(s) |
Filed under:
Mi primer post desde la comunidad asp.net

Hola a todos, le agradezco mucho a Joe Stagner y Scott Guthrie por darme esta oportunidad de bloguear (ya se, no existe esta palabra en español, pero se entiende) para la comunidad asp.net.

La idea es poder escribir sobre cosas que me gustan en el mundo web y mostrarlas a los que quieran saber y me envien sus comentarios.

Un abrazo.

More Posts