Currently Browsing

Setembro, 2008

moBlog

Estou a testar o moBlog, uma aplicação para windows mobile, que permite fazer posts como este a partir do pda :)
Caso vejam este post, é porque está a funcionar :)

Apagar items de uma dropdownlist e manter um default

Uma situação vulgar é termos uma DropDownList com uma lista de opções retornadas da base de dados para o utilizador poder seleccionar uma delas.

Para evitar que uma das opções está seleccionada por defeito, recorre-se normalmente à opção “– Seleccione –” ou “– Escolha uma opção –”, etc etc etc.

Para evitar que tenhamos um UNION na nossa query que retorna essas mesmas opções ou mesmo um registo na tabela para tal, adicionando ao output a tal opção “default”, podemos adicionar esse mesmo item à DropDownList.

image

Para actualizar os dados, recorrendo ao metodo DataBind(), fará com que sejam adicionados os items retornados aos que já lá estão. Ou seja, antes de fazer o DataBind() é necessário apagar todos os items (usando o xpto.Items.Clear()) e só depois então faremos o DataBind().

Nesta altura, a opção “– Seleccione –” foi à vida e temos que adiciona-la novamente à dropdownlist.

Uma forma de evitar isto é adicionar um método (recorrendo aos Extension Methods) para apagar os items e preservar o item que queremos que apareça sempre por defeito.

image

Desta forma, o método ClearItems aparece agora no Intellisence e basta passar o parâmetro preserveDefaultItem a true.

image

Exemplo

Visual Studio Themes

Já lá vão alguns dias que uso um tema no Visual Studio disponibilizado pelo Rob Conery e hoje já não quero outra coisa. Sem dúvida que este tema com fundo preto e cores essencialmente escuras é uma enorme diferença (para melhor) em relação ao tema que vem por defeito.

vs_theme

Na altura que andei a procura de um tema que fosse de encontro ao que pretendia encontrei outros sites com vários disponíveis e que podem servir-vos:

Paint no Windows 7 com novo look

WOW :) pelo que parece o prático e simples MS Paint vai ter um novo look no Windows 7.

paint_on_windows7
imagem retirada de UXEvangelist

Tipos de ficheiros bloqueados no MS Office 2003 apos instalar SP3

Como este artigo diz, após instalar o SP3 do MS Office 2003, alguns tipos de ficheiros ficam bloqueados, ficheiros estes que são referentes a versões antigas do Office e que podem por em risco a segurança da máquina.

 

Para contornar o erro é necessário fazer algumas alterações no registo do Windows e para tal podem sacar este pack com os seguintes ficheiros:

  • UnblockWord.reg
  • UnblockPowerPoint.reg
  • UnblockExcel.reg
  • RestoreBlockingWord.reg
  • RestoreBlockingPowerPoint.reg
  • RestoreBlockingExcel.reg
  • RestoreBlockingCDR.reg

Download Pack

C# yield

A expressão yield é bastante útil quando queremos os valores de um método que retorna um IEnumerable ou IEnumerator.

Para retornarmos os valores entre o intervalo passado como parâmetro no método GetValuesFromInterval() teriamos algo assim:

static IEnumerable<int> GetValuesFromInterval(int min, int max)
{
        List<int> intervalo = new List<int>();
        for (int i = min+1; i < max; i++)
        {
                intervalo.Add(i);
        }
        return intervalo;
}

Neste exemplo, para retornarmos todos os valores precisamos de criar um List e adicionar todos os nºs do intervalo que indicamos, e por fim retornarmos o List.

Com a expressão yield deixamos de precisar de criar um List e ficamos com o código bastante mais elegante.

static IEnumerable<int> GetValuesFromInterval(int min, int max)
{
        for (int i = min + 1; i < max; i++)
        {
                yield return i;
        }
}

Google Reader + RSS Bandit

As aplicações web são sem dúvida o futuro, e desde que fiz esta análise que nunca mais troquei de leitor.

Mas ok, dá jeito para acedermos de qualquer sitio às nossas leituras mas uma aplicação “local” é sempre melhor no que respeita a rapidez na disponibilização dos conteúdos.

Foi então que me lembrei se existiria algum leitor offline que permitisse fazer a sincronização com o Google Reader, e foi aí que encontrei o RSS Bandit.

rssbandit_logo

Foi adicionada à nova versão (ainda em BETA) esta opção e que para já está a funcionar muito bem.

Podem fazer o download aqui, e para sincronizarem com o Google Reader basta irem ao menu File > Sincronize Feeds. Alem do Google Reader, ainda poderão optar por sincronizar com o Newsgator Online e com o Internet Explorer ou Outlook.

rssbandit_sync1

Basta indicarem o username/password da vossa conta e em poucos minutos tá a sincronização feita. O bom disto tudo é que as alterações que façam no RSS Bandit é reflectido no Google Reader :)

Classes Pair e Triplet

Muito rápidamente, as classes Pair e Triplet servem para guardar objectos que possam estar relaccionados. A classe Pair é usada normalmente para guardar as colecções do ViewState e do ControlState, usando a propriedade First e a proriedade Second respectivamente.

Podemos usar a classe Triplet para guardar as cores primárias por exemplo.

Triplet cores = new Triplet("Vermelho","Azul","Amarelo");

Para fazer o output de ambas as cores deveremos ter algo assim:

lblCoresPrimarias.Text = String.Format("As cores primárias são 
o {0}, o {1} e o {2}.", cores.First, cores.Second, cores.Third);

ASP.NET Membership + Location Paths

Quando recorremos ao Membership para implementarmos a segurança da nossa aplicação, um dos problemas que podemos ter é quando definimos que determinada pasta será acedida apenas por utilizadores previamente autenticados e nela contemos ficheiros que usamos noutras páginas que não precisam desta mesma autenticação para serem acedidas, como ficheiros de estilos (CSS), imagens, etc.

Se tivermos por exemplo a seguinte estrutura:

/ (root)
/Imagens
/Imagens/usericon.png
/Estilos
/Estilos/estilos.css
/Login.aspx
/MinhaPaginaProtegida.aspx
/OutraPaginaProtegida.aspx

E no web.config definirmos que, para aceder a qualquer página  na aplicação temos que estar autenticados, 

<authorization>
<deny users=* />
</
authorization>

se usarmos o ficheiro de estilos ( /Estilos/estilos.css ) na nossa página de login, ao ser carregada no browser irá aparecer sem qualquer personalização feita. Isto porque na página Login.aspx teremos algo do tipo

<link type=”text/css” rel=”Stylesheet” href=”Estilos/estilos.css” />

e como este ficheiro está numa pasta dentro da zona protegida, o browser não vai conseguir carregar os estilos definidos na página.

Para podermos contornar isso temos que indicar no web.config que o ficheiro poderá ser acedido mesmo não sendo feita a autenticação na aplicação. Para isso usamos o elemento <location> e no atributo path indicamos onde está o ficheiro. Por fim, indicamos que todos os utilizadores (incluindo os anónimos) poderão aceder a ele, fazendo assim com que a nossa página de login consiga ir buscar os estilos a serem carregados.

<location path=estilos.css>
<
system.web>
<
authorization>
<
allow users=*/>
</
authorization>
</
system.web>
</
location>

Google Chrome

Para quê ser diferente dos outros e não dizer que já está disponível o download do Google Chrome?

Pelo que estive a ler no Lifehacker, o que me saltou mais à vista neste browser foi:

Recently Closed Tabs – para mim é sem dúvida um “must-have” em qualquer browser, e vir de base é uma mais valia.

Porn Mode Incognito Mode – É sem dúvida a opção que muita gente irá usar e abusar (lol). Acabaram-se as preocupações em esconder todas as páginas dúvidosas por onde andaram :)

Inspector – Analisar em detalhe o código das nossas páginas.

Não tenho hipotese de tar o testar para ver que mais funcionalidades dispomos, mas podem ve-las mais ao detalhe na página principal do Google Chrome assim como fazer o download.

Blogroll