Emblemas

Energizado por OpenSource
Soporta RSS2
Soporta Atom
Soporta Debian Power User
Energizado por Hacker
Soporta Last.FM
Soporta Ubuntu
Energizado por MySQL

twitter


Twitter

  • Un nano cliente de twitter hecho en 30 minutos desde cero en ASP.NET

    Un día como cualquier otro, habla por el mensajero de la oficina con mi Sensei y nos pusimos a platicar sobe una entrevista que había hecho a un aspirante a developer donde le pedía que hiciera un programa sencillo consumiendo el API de twitter (Mostrar el Time Line y poder publicar el estatus) y me preguntaba si 1 hora de tiempo era suficiente, hice un "calculo" mental y se me hizo suficiente tiempo para completar la tarea, sin embargo me pregunte si yo podría hacerlo en menos tiempo (solo por pura diversión), puse el cronometro (ya con el IDE abierto y listo) y este fue el resultado después de 30 minutos (momento en el cual consideré que la tarea estaba cumplida).


    Paso a Paso



    #1 Autentificación

    El primer paso fue entonces hacer una autentificación del usuario, para lo cual ASP.NET tiene un control.

    #2 Time Line de Twitter

    El problema suena complicado pero el API de Twitter es muy amigable y ASP.NET tiene un control que se alimenta con XML, entonces solo tuve que conectar estos dos puntos.

    #3 Publicar status

    Habría ahorrado mucho tiempo usar LinQ2Twitter pero olvide descargarlo y el tiempo no detenía su marcha así que de la forma más rupestre hice un HttpRequest para hacer update del estatus.

    public static bool PostTweet(string username, string password, string tweet)
            {
                try
                {
                    // encode the username/password
                    string user = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(username + ":" + password));
                    // determine what we want to upload as a status
                    byte[] bytes = System.Text.Encoding.ASCII.GetBytes("status=" + tweet);
                    // connect with the update page
                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://twitter.com/statuses/update.xml");
                    // set the method to POST
                    request.Method = "POST";
                    request.ServicePoint.Expect100Continue = false;
                    // set the authorisation levels
                    request.Headers.Add("Authorization", "Basic " + user);
                    request.ContentType = "application/x-www-form-urlencoded";
                    // set the length of the content
                    request.ContentLength = bytes.Length;
                    // set up the stream
                    Stream reqStream = request.GetRequestStream();
                    // write to the stream
                    reqStream.Write(bytes, 0, bytes.Length);
                    // close the stream
                    reqStream.Close();
                }
                catch (Exception ex) { return false; }
                return true;
            }
     

    #4 140 caracteres o menos

    Una de las características más conocidas de Twitter es la restricción de los 140 caracteres (o menos), la página de twitter tiene un contador de caracteres que debía incluir en mi programa, así tuve que agregar un par de funciones JavaScript para poder emular esta característica de la página original de twitter

    function CountChars()
            {
                document.getElementById("lblCount").value = 140 - document.getElementById("<% = status.ClientID %>").value.length;
            }
     

    #5 Talacha

    El resto fue solo talacha como decimos coloquialmente, todo el proceso fue muy rápido e indoloro, al presionar F5 probé el programa y todo salio bien (Al menos este programa no iría a las garras de QA).

    Ahí está el código...

    Si estas interesado en agregarle algo al proyecto, puedes hacerlo en Code Run (el link ya lo puse al principio) y/o mandarme tus comentarios.

  • Quitter un cliente ligero y discreto de Twitter

    Quitter es un cliente ligero de twitter, además es muy discreto para aquellos entornos en los cuales no te dejan tener el "Twitter" abierto en el navegador. Encontré este cliente de pura casualidad y sin estar buscándolo, cuando lo baje me dio algo de lata configurar lo pero luego de configurado funciona de maravilla.

    Lo malo

    El programa no te deja escribir acentos o Ñ's peeeeeero tengo un parche de 3 centavos para el código fuente que agrega esta pequeña funcionalidad y claro que si aquí está el parche para que se lo apliquen al código y puedan ser felices y comer perdices.

    El parche



    El Código Fuente

    Este proyecto esta muy bien diseñado y prueba de esto es que copiando el Main del código todo esta claro como el agua:
    Sub Main()
            Initialize()
            Dim QuitSelected As Boolean = False
            Do
                WriteLine()
                If _CurrentUser.ScreenName <> String.Empty Then
                    WriteLine(String.Format("[{0} ({1})]", _CurrentUser.ScreenName, _HitsRemaining))
                End If
                Write(MAIN_PROMPT)
                Dim Choice As String = ReadKey("acdfhlpqrstu?x")
                Select Case Choice
                    Case String.Empty
                        Write("Read ")
                        Read()
                    Case "A"
                        WriteLine("About Quitter")
                        About()
                    Case "C"
                        WriteLine("Configuration")
                        ConfigureMenu()
                    Case "D"
                        Write("Direct messages ")
                        DirectMessageMenu()
                    Case "F"
                        WriteLine("Follow user")
                        FollowUser()
                    Case "L"
                        WriteLine("Open link")
                        OpenLink()
                    Case "P"
                        WriteLine("Post")
                        PostUpdate()
                    Case "Q"
                        WriteLine("Quit")
                        If ReadYesNo("Are you sure? (Y/N):") Then
                            QuitSelected = True
                        End If
                    Case "R"
                        WriteLine("Reply")
                        Reply()
                    Case "S"
                        WriteLine("Search")
                        Search()
                    Case "T"
                        WriteLine("Re-tweet")
                        ReTweet()
                    Case "U"
                        WriteLine("Unfollow user")
                        UnFollowUser()
                    Case "?"
                        WriteLine("Help")
                        ShowHelp()
                End Select
            Loop Until QuitSelected
        End Sub
     

music@last.fm