Currently Browsing

Posts Tagged ‘ dev ’

Revista PROGRAMAR – 29ª Edição – Junho 2011

Download

Tema de capa
GIT – Controlo de Versões para Pequenos e Grandes Projectos

A programar
LUA – Linguagem de Programação – Parte 9
Introdução ao Cloud Computing e à Plataforma Windows
Managed Extensibility Framework (MEF) e AJAX
Microsoft BizTalk Server aos olhos dos programadores
O Editor de texto VIM

Visual (Not) Basic
Introdução ao OpenXML SDK

Core Dump
Fazer mal = Rápido?

Comunidades
Certificações Microsoft

Instaladores Habilitados de TDT por Código Postal (JSON + C#)

Pois é, a TDT já anda aí, e por razões que não interessam, precisei de retornar todos os instaladores por cada código postal, cuja PT indica como sendo um instalador habilitado.

Para tal, fiz uma pequena aplicação que enviada um pedido com o código postal, e interpretava o resultado retornado em JSON.

Primeiro tive que criar um ficheiro de texto com todos os códigos postais. Podem fazer download do que usei aqui.

O código poderá não ser o melhor, mas fez o que pretendia e não precisei de me chatear mais com o assunto.

using System;
using System.Collections.Generic;
using System.Net;
using System.IO;
using System.Web.Script.Serialization;

namespace WebApplication1
{
    public class CPs
    {
        public string cp4 { get; set; }
        public string cp3 { get; set; }
    }

    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            GetData();
        }

        private void GetData()
        {
            List<CPs> cps = new List<CPs>();

            TextReader t = new StreamReader(@"C:cps.txt");
            string line = "";
            t.ReadLine();
            while (t.Peek() > 0)
            {
                line = t.ReadLine();
                cps.Add(new CPs() { cp4 = line.Split('-')[0].ToString(), cp3 = line.Split('-')[1].ToString() });
            }

            HttpWebRequest request = null;

            foreach (CPs cp in cps)
            {
                try
                {
                    request = (HttpWebRequest)HttpWebRequest.Create(@"http://tdt.telecom.pt/handlers/installerSearch.ashx?cp4=" + cp.cp4 + "&cp3=" + cp.cp3);
                    request.ContentType = "application/json; charset=utf-8";
                    request.Accept = "application/json, text/javascript, */*";
                    WebResponse response = request.GetResponse();

                    Stream stream = response.GetResponseStream();
                    string json = "";

                    using (StreamReader reader = new StreamReader(stream))
                    {
                        while (!reader.EndOfStream)
                        {
                            json += reader.ReadLine();
                        }
                    }

                    JavaScriptSerializer serializer = new JavaScriptSerializer();
                    Dictionary<string, object> x = (Dictionary<string, object>)serializer.DeserializeObject(json);

                    if (x.Count > 0)
                        Response.Write(cp.cp4 + ";" + cp.cp3 + ";" + x["name"].ToString() + ";" + x["phoneNumber1"].ToString() + ";" + x["phoneNumber2"].ToString() + "<br />");

                }
                catch (Exception)
                {

                }

            }
        }

    }

}

CODE PROJECT VIRTUAL TECH SUMMIT ON MOBILE DEVELOPMENT – ON DEMAND

Quem não assistiu ao Code Project’s Virtual Tech Summit on Mobile Development, pode agora ver todas as sessões “on demand”.

As sessões são:

  • The Mobile Development Landscape
  • Android Push Notifications
  • Beginning Android Flash Development
  • Android for .NET/C# Developers Using MonoDroid
  • iPhone 101: Introduction to iPhone and iOS Development
  • Building Rich Mobile Apps with HTML5, CSS3 and JavaScript
  • Building MVVM apps for Windows Phone 7
  • Using Panorama and Pivot Controls for WP7 apps
  • Building Data Visualization Applications for Windows Phone 7

Para aceder às sessões, é necessário fazer o registo no seguinte link:

http://www.virtualtechsummits.com/Register.aspx?EventID=11

Utilizar a API do bit.ly para gerar um url curto em C#

Hoje andei a dar uma olhadela à API do serviço bit.ly. Para utilizarmos basta mesmo criar uma conta, e com a key que gera para utilizarmos a API rapidamente fazemos qualquer brincadeira.

Segue um exemplo rápido de como gerar um link curto a partir da URL inserida.

string username = "username";
string api = "your_api_key";
using (WebClient w = new WebClient())
{
string LongUrl = "http://blog.tiagosalgado.com";
string bitLyUrl =string.Format("http://api.bit.ly/v3/shorten?login={0}&apiKey={1}&uri={2}&format=txt",username,api,LongUrl);
string ShortUrl = w.DownloadString(bitLyUrl);
Console.Write(ShortUrl);
Console.Read();
}

E temos algo como isto:

File iconbitLy_get_shorturl_csharp.zip

Livro ASP.NET 4.0

aspnet40
Já está disponivel para compra, o ultimo livro do Luis Abreu e João Paulo Carreiro.

Os temas abordados são os seguintes:

  • Arquitectura de aplicações ASP.NET, Formulários Web e Controlos ASP.NET;
  • Controlos data source e Controlos data bound;
  • Serviços, segurança e perfis de utilizadores;
  • Manutenção de estado;
  • Validação de dados e scripts no lado cliente;
  • Configuração de aplicações e tratamento de erros;
  • User controls, master pages, themes e skins;
  • Localização de aplicações;
  • Handlers e módulos;
  • ASP.NET AJAX no lado servidor;
  • A nova livraria ASP.NET AJAX no lado cliente;
  • Projectos e Aplicações, Construção de portais e Ciclo de vida de uma página.

Este livro pode ser encontrado na FCA, Wook, etc.

T-SQL: CSV para Linhas (UDF e XML)

Esta semana precisei de fazer exactamente o que o titulo do post indica, ou seja, retornar todas as linhas de uma tabela mas ao mesmo tempo separar os valores numa das colunas em cada linha.

Para testar, criei a seguinte tabela:

CREATE TABLE [dbo].[Agentes](
    [Codigo] [varchar](50) NULL,
    [Nome] [varchar](50) NULL,
    [Emails] [varchar](100) NULL
) 

Inseri alguns dados com o mesmo formato da tabela real que iria depois utilizar:

INSERT INTO Agentes 
VALUES('C12345','Agente 1','agente1@xpto.pt;agente1.loja@xpto.pt')
INSERT INTO Agentes 
VALUES('C12346','Agente 2','agente2@xpto.pt;agente2.loja@xpto.pt')

Como já podem perceber, o campo “Emails” precisa de ser retornado com apenas um email, ou seja, preciso de passar uma listagem como esta

para uma como esta

Para isso precisei de fazer uma função que me separasse cada um emails de forma a poder retornar um por cada linha.


CREATE FUNCTION dbo.SplitEmails(@separador char(1), @emails varchar(512))
RETURNS table
AS
RETURN (
    WITH Emails(pn, start, stop) AS (
      SELECT 1, 1, CHARINDEX(@separador, @emails)
      UNION ALL
      SELECT pn + 1, stop + 1, CHARINDEX(@separador, @emails, 
stop + 1)
      FROM Emails
      WHERE stop > 0
    )
    SELECT SUBSTRING(@emails, start, CASE WHEN stop > 0 THEN 
stop-start ELSE 512 END) AS email
    FROM Emails
  )


Por fim, para ter a listagem com o formato pretendido, bastou fazer o CROSS APPLY com a minha tabela de agentes, e está o trabalho feito.

SELECT a.Codigo,a.Nome,c.email FROM Agentes a
CROSS APPLY SplitEmails(';',a.Emails) c

Outra forma de retornar esta listagem, indicada pelo @Caio, era recorrendo ao XML e evitava assim criar uma função para fazer o split dos emails.

WITH Consulta AS
(
SELECT Codigo, Nome,
CAST('<email>' + 
REPLACE(Emails, ';', '</email><email>') + 
'</email>' AS XML) 
AS EmailXml
FROM Agentes
)
 
SELECT Codigo, Nome,
    r.value('.', 'varchar(255)') AS Email
FROM
    Consulta
CROSS APPLY
    consulta.EmailXml.nodes('email') AS x(r)

Visual Studio 2010 and .NET Framework 4 Training Course

The Visual Studio 2010 and .NET Framework 4 Training Course includes videos and hands-on-labs designed to help you learn how to utilize the Visual Studio 2010 features and a variety of framework technologies including: C# 4.0, Visual Basic 10, F#, Parallel Computing Platform, WCF, WF, WPF, ASP.NET AJAX 4.0, ASP.NET MVC Dynamic Data.

Units in this course:

  • Overview
  • Managed Languages
  • ASP.NET 4
  • Data Platform
  • Windows Communication Foundation and Workflow
  • Parallel Computing
  • Application Lifecycle Management
  • Summary

Visual Studio 2010 and .NET Framework 4 Training Course

Ciclo de Seminários sobre desenvolvimento de software

Vai-se realizar um ciclo de seminários pela FCT da Universidade de Coimbra, no ambito da parceria com a Universidade Carnegie Mellon, sobre desenvolvimento de software.

Serão 4 seminários, realizados em Lisboa e no Porto, com o seguintes temas e datas:

  • 10 de Outubro – Gestão de Risco em Projectos de Software
  • 31 de Outubro – Desenvolvimento Ágil de Software com SCRUM
  • 21 de Novembro – Dinâmica de Equipas e Grupos
  • 12 de Dezembro – Metodologias de Desenvolvimento de Software

Cada seminário terá um valor de 25€ ou poderão fazer o registo para todos pelo valor de 70€.

Para mais informações visitem http://mse.dei.uc.pt/workshop/

Free AJAX and Silverlight Automated Testing by Telerik

WebAii Testing Framework helps developers build automated unit tests, functional tests and end to end scenario tests for both AJAX- and Silverlight-powered applications. From automating complex UI actions, waiting on DOM changes to imitating the complete list of UI XAML elements in Silverlight – it’s all in here for free!

Website: WebAii Testing Framework

ReMix 09 PT

remix09_pt

O ReMIX traz-lhe as tendência e a inovação Web: o futuro das tecnologias como o Silverlight, o Internet Explorer, Expression, ASP.NET e Windows Azure.

Um dia completo, com três tracks, 13 sessões e os melhores Oradores. Terá ainda a oportunidade de partilhar as melhores práticas com a Comunidade Web.
Inscreva-se Já! Número de lugares limitado. 50€, com IVA incluído.
(tirado do site)

Blogroll