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:
< div >
< asp:contentplaceholder id="place1" runat="server" / >
< asp:contentplaceholder id="place2" runat="server" / >
< /div >
...
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" %>
< asp:content contentplaceholderid="place1" runat="server" id="p1" / >
< asp:content contentplaceholderid="place2" runat="server" id="p2"/ >
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:
< asp:content contentplaceholderid="place1" runat="server" id="p1" >
< asp:placeholder runat="server" id="este_e_visto" / >
< /asp:Content >
E pode-se agora aceder ao objecto "este_e_visto", para chegar ao simples objectivo de colocar conteúdo dentro do objecto asp:Content.
quinta-feira, maio 31, 2007
quarta-feira, maio 30, 2007
How To Design A Good API and Why it Matters
Já tinha este vídeo em queue à uma data de tempo mas só 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);
[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.
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.
sábado, abril 28, 2007
Um novo desafio
Após 7 meses na Safira apareceu uma nova oportunidade, um novo desafio noutra empresa. Apesar de estar bastante contente com as pessoas com quem trabalhava na Safira já estava um pouco farto do projecto em que estava. Foi quando surgiu a hipótese de ir trababalhar para a PDM&FC uma empresa com uma filosofia diferente da Safira. O aliciante principal será trabalhar em projectos propostos e direccionados para a área de dos vídeo-jogos.
segunda-feira, abril 23, 2007
Algoritmo ELO
Para quem não sabe o algoritmo ELO foi criado pelo húngaro Árpád Élő e tem como objectivo calcular a perícia relativa de jogadores num ranking de um qualquer jogo. Apesar do algoritmo estar bem definido, tem algumas variáveis que possibilitam ajustes à formula dependendo do jogo em questão, por exemplo e possível ajustar o peso do número de jogos já efectuado pelo utilizador, o peso da diferença de ranking dos dois jogadores, etc.
Além destes ajustes ainda encontrei pequenas variações ao algoritmo, dependendo se o jogo é de equipa ou sigular, ou ainda se o resultado do confronto entre dois jogadores é mensurável em pontos ou se é simplesmente uma vitória ou uma derrota.
A fórmula começa com a seguinte equação:
RN = R + ( K x (S - EA) )
RN -> Novo valor de ranking que se quer calcular
R -> Valor de ranking actual do jogador
K -> Variável que traduz o peso do númeor de jogos já efectuados pelo jogador
S -> Variável que traduz o peso dos pontos envolvidos no confronto
SE -> Variável que traduz o peso da diferença de ranking entre os dois jogadores

RB -> Ranking actual do adversário
RA -> Ranking actual do jogador (RA = R)

PA -> Pontos ganhos pelo jogador
PB -> Pontos ganhos pelo adversário
Todas as constantes das diferentes formulas podem ser modificadas de modo a adaptar o algoritmo ao jogo em questão, apesar de isto desvirtualizar o algoritmo de ELO.
Além destes ajustes ainda encontrei pequenas variações ao algoritmo, dependendo se o jogo é de equipa ou sigular, ou ainda se o resultado do confronto entre dois jogadores é mensurável em pontos ou se é simplesmente uma vitória ou uma derrota.
A fórmula começa com a seguinte equação:
RN = R + ( K x (S - EA) )
RN -> Novo valor de ranking que se quer calcular
R -> Valor de ranking actual do jogador
K -> Variável que traduz o peso do númeor de jogos já efectuados pelo jogador
S -> Variável que traduz o peso dos pontos envolvidos no confronto
SE -> Variável que traduz o peso da diferença de ranking entre os dois jogadores
K = 1 + (90 /(10 + NJ))
NJ -> Número de jogos já efectuado pelo jogadorRB -> Ranking actual do adversário
RA -> Ranking actual do jogador (RA = R)

PA -> Pontos ganhos pelo jogador
PB -> Pontos ganhos pelo adversário
Todas as constantes das diferentes formulas podem ser modificadas de modo a adaptar o algoritmo ao jogo em questão, apesar de isto desvirtualizar o algoritmo de ELO.
sábado, abril 21, 2007
Karting
Pela primeira vez experimentei karting e posso dizer que é uma adrenalina "brutal". Apesar de ter ficado só em 11º de 19 pilotos considero que para primeira vez foi bastante positivo. Os pneus do kart é que não gostaram muito, a cada curva guinchavam e ginchavam como se fossem a desfazer-se. Depois ainda houve a parte "carrinhos de choque", aquela que eu dei cabo do joelho no suporte do volante depois de levar uma panada lateral em plena curva, mas pronto a malta entusiasma-se e são coisas e acontecem naturalmente.
quarta-feira, abril 18, 2007
Um dia a roçar a perfeição
Hoje sem dúvida foi uma grande dia, para começar e importantíssimo, estou de férias (as tão desejadas férias). Acordei de manhã e para despertar nada melhor que boa volta de bicicleta, desfrutar da beleza da serra de Sintra e do Guincho. Chego a casa, e para os que me chamam sovina, faço a minha declaração de IRS e que bom, ainda vou receber algum dinheiro. Passo a tarde a a ver uns filmes, uma das minhas actividades preferidas, e ainda a jogar um pouco de computador. Ao fim da tarde, e como já tinha descansado do passeio matinal de bicicleta, fui para a natação para acabar com as energias que ainda me restavam. Depois disto tudo uma bela refeição para acabar o dia em perfeição.
domingo, abril 15, 2007
Dia do azar - Sábado 14
Porquê 6ª feira 13 é o dia do azar? Quanto a mim sábado 14 é que é o dia do azar e tenho a prova vivida disso.
6ª feira a noite fui ver um concerto de Tragic Comic, apesar de todos os incidentes técnicos aos quais a banda é alheia, o espetáculo foi do melhor que já ouvi. Não percebo como uma banda com a qualidade que eles têm ainda não chegou mais longe. Para quem gosta de bandas como Within Temptation, Nightwish ou Sonata Artica aqui fica um dos site onde podem dar uma olhadela a informação sobre os Tragic Comic http://www.myspace.com/tragicomic.
Saio do concerto 0:15, ou seja, tinhamos acabado de entrar no sábado e dirigi-me à bomba de gasolina mais concorrida que conheço devido aos preços muito mais baixos. Costuma estar muita gente a por gasolina mas desta vez parecia que os carros demoravam mais tempo a andar, quando cheguei ao fim de 45 minutos ao pé da bomba reparei que estava com pouca pressão, a deitar muito devagar. Bem finalmente é a minha vez pensei eu, ponho a agulheta no depósito e começo a abastecer quando olho para o visor estava parado nos 1,25 litros...que se passa??? Não pode...acabou o gasóleo. Agora digam-me se não é azar, 50 minutos para por gasóleo e depois acontece o quase impossível?
6ª feira a noite fui ver um concerto de Tragic Comic, apesar de todos os incidentes técnicos aos quais a banda é alheia, o espetáculo foi do melhor que já ouvi. Não percebo como uma banda com a qualidade que eles têm ainda não chegou mais longe. Para quem gosta de bandas como Within Temptation, Nightwish ou Sonata Artica aqui fica um dos site onde podem dar uma olhadela a informação sobre os Tragic Comic http://www.myspace.com/tragicomic.
Saio do concerto 0:15, ou seja, tinhamos acabado de entrar no sábado e dirigi-me à bomba de gasolina mais concorrida que conheço devido aos preços muito mais baixos. Costuma estar muita gente a por gasolina mas desta vez parecia que os carros demoravam mais tempo a andar, quando cheguei ao fim de 45 minutos ao pé da bomba reparei que estava com pouca pressão, a deitar muito devagar. Bem finalmente é a minha vez pensei eu, ponho a agulheta no depósito e começo a abastecer quando olho para o visor estava parado nos 1,25 litros...que se passa??? Não pode...acabou o gasóleo. Agora digam-me se não é azar, 50 minutos para por gasóleo e depois acontece o quase impossível?
Subscrever:
Mensagens (Atom)