quinta-feira, maio 31, 2007

Identificar o ContentPlaceHolder

Hoje dei por algo que considero uma falha no asp .NET 2.0. Imagine-se que se tem uma master page muito simples parecida com o seguinte:

&lt div &gt
&lt asp:contentplaceholder id="place1" runat="server" / &gt
&lt asp:contentplaceholder id="place2" runat="server" / &gt
&lt /div &gt
...

E agora tem-se uma página que usa esta master page também muito simples:

<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/MasterPage.master" CodeFile="Default.aspx.cs" Inherits="_Default" %>

&lt asp:content contentplaceholderid="place1" runat="server" id="p1" / &gt
&lt asp:content contentplaceholderid="place2" runat="server" id="p2"/ &gt

A falha é a seguinte todos os controlos em aspx desde que sejam runat="server" podem ser acedidos no code behind através do seu ID, porque raio os controlos do tipo asp:Content são diferentes de todos os outros e não podem ser acedidos? É necessário fazer algo do género:

&lt asp:content contentplaceholderid="place1" runat="server" id="p1" &gt
&lt asp:placeholder runat="server" id="este_e_visto" / &gt
&lt /asp:Content &gt

E pode-se agora aceder ao objecto "este_e_visto", para chegar ao simples objectivo de colocar conteúdo dentro do objecto asp:Content.

quarta-feira, maio 30, 2007

How To Design A Good API and Why it Matters

tinha este vídeo em queue à uma data de tempo mas este fim-de-semana tive tempo para o ver http://video.google.com/videoplay?docid=-3733345136856180693. Apesar dos assuntos abordados devessem estar entranhado na pele de todos os programadores, aconselho vivamente todos a verem o vídeo, pois por um motivo ou outro acabamos por não seguir algumas destas regras, que a meu ver são bem úteis.

quinta-feira, maio 24, 2007

Drama na rotunda

Comecei esta semana a trabalhar num projecto novo que está a ser desenvolvido em Almada. Além do imenso trânsito que apanho e da distância que tenho de percorrer, mesmo à chegada do trabalho ainda tenho de enfrentar a pior rotunda que já vi. A dita cuja, uma rotunda com não mais de 2 metros de raio, bastante pequena, tem a porcaria de semáforos em todas as entradas e saídas. Bolas como é possível que algum visionário tenha visto utilidade em semáforos numa rotunda tão pequena e ainda por cima em todas as entradas e saídas, fechando os semáforos constantemente e todos ao mesmo tempo, qual a utilidade...criar ainda mais trânsito?

terça-feira, maio 15, 2007

Outputs dos web methods

Imaginemos que se tem um web method com a seguinte assinatura:

[WebMethod]
public void TestWS(out int va1, out double va2);

Ao criar uma web reference para esta classe (o nome da classe poderá ser ClassWS) como acham que é feita a chamada ao método apresentado? Provavelmente algo do género:

ClassWS ws = new ClassWS();
int var1;
double var2;
ws.TestWS(out var1, out var 2);

Pois é quem apostou nesta versão sinto muito mas não é um dos vencedores. Ao gerar a classe que faz wrapping, ao web service o método que é gerado para acesso a este método tem a seguinte assinatura:

public int TestWS(out double va2);

Desconhecia esta optimização, mas como é facil de verificar faz todo o sentido. Logo a chamada será algo do género:

ClassWS ws = new ClassWS();
int var1;
double var2;
var1 = ws.TestWS(out var 2);

sexta-feira, maio 04, 2007

A prisão

Parece que a vai haver uma nova temporada de Prison Break, só que desta vez o Michael Scofield vai ser substituído por mim e a prisão vai ser a sede da caixa geral de depósitos.

Comecemos pela estrutura da prisão, um edifício em forma de cubo em que todos os andares são iguais e com todos os corredores iguais, independentemente do lado do cubo em que se esteja, ou seja, torna a fuga complicada. Passemos à cela, vulgo "local de trabalho", uma secretária com as dimensões aproximadas de 80cm x 100cm com caixa do computador, monitor, teclado, rato e ainda tem de sobrar um espacinho para as minhas folhas. Ao lado da minha cela está outra igualzinha à minha em que o monitor está separado do meu uns 4 dedos.

A minha pena era de 15 dias, aparentemente tão contentes com o meu comportamento logo...não não vou sair mais cedo como era espectável...vou ter ainda que fazer mais umas coisas o que leva a que tenha de estar cá mais tempo que espero que não seja muito mais porque a fuga está em preparação se assim for. Contudo hoje depois de andar aqui a amotinar as hostes parece que para a semana estão a pensar em mudar-nos para uma cela com melhores condições, assim espero.