More servicesWindows Live
HomeHotmailSpacesOneCare
 
MSN
Sign in
 
 
Spaces home  FuryousCoder ProPhotosProfileFriendsMore Tools Explore the Spaces community

FuryousCoder Pro

Lições da vida profissional
July 16

Digna de notas

Como pude perder esta pérola da Microsoft?


 

July 13

Futuro negro


Ok... Já tinha desistido de virar MCAD. Depois dessa vou descartar o MBA.
May 31

Só faltava essa: ABNT vs Microsoft

Fonte: Folha on line

Creio que tem algum petista ou outro radical vermelho envolvido, mas acho que a ABNT está fazendo uma cagada enorme. A entidade resolveu apelar para a ISO contra a decisão de tornar o Office Open XML da Microsoft como formato padrão de documento eletrônico. O motivo da entidade: com a certificação, a empresa aumenta as chances de vencer contratos governamentais.

Essa onda de software livre promovida pelo governo Lula muitas vezes beira o ridículo e deve ter mexido com algum ser com baixa estima da ABNT. Ele não percebeu que a MS ofereceu um padrão aberto, e como tal, está disponível para todos, inclusive a turma do código livre e até os concorrentes da própria MS. Isso significa que outros podem disponibilizar suítes Office-like tão bons ou até melhores do que o próprio MS-Office por valores bem mais interessantes.

Como muitos sabem, não sou exatamente um fanático pela Microsoft. Porém, creio que este tipo de decisão não cabe à ABNT. Um metro aqui e no Egito devem ter a mesma extensão, e não 3 braços do presidente ou 4 pés do faraó. Quem define padrão deve se preocupar apenas de que o mesmo possa ser aplicado e interpretado da mesma forma em qualquer lugar. Para levantar os critérios de especificação é necessário ser imparcial pois deve-se levar em conta apenas méritos técnicos. Se o Office Open XML conter os melhores critérios, ela deve ser utilizada, independente de ter sido proposto pela Microsoft ou por Osama Bin Laden.

Outra, nada impede a coexistência de dois padrões para o mesmo tipo de artefato. Quem decide qual padrão deve ser adotado é o mercado. Ingleses e americanos compram carnes em libras e a gente aqui em kilogramas. Deixamos de exportar carne para eles por acaso? A GM é uma empresa americana e nem por isso vende no Brasil carros com velocímetros em milhas por hora! O que impede que o Open XML possa conviver junta com o ODF (Open Document Format)? Usem as duas, dependendo da situação! Essa é a beleza de ter várias opções disponíveis!

A ABNT precisa entender o papel da ISO, e com isso, entender seu próprio papel. A ISO não é um tribunal. Ela apenas estabelece e especifica alguns padrões e se solicitado afere se determinada empresa está produzindo produtos ou serviços de acordo com esses padrões. Ela oferece uma língua franca para o mercado, mas não define o comportamento do mercado. A ISO não é a única entidade que estabelece padrões, e tem países que preferem trabalhar com as outras entidades.

Só para lembrar: a ISO não especificou o xls como padrão, mas a planilha mais utilizada no mundo ainda é o Excel.
April 07

Certified Scrum Master: you must be kidding, right?

Meus colegas mais próximos sabem: sou adepto e fanático por metodologias ágeis, entre elas o Scrum. Formalizado por Ken Schwaber, é uma metodologia mais formal que o XP, mas menos burocrática se comparada com o CMMI. Eu diria que é o meio termo que agrada os menos xiitas. O mais legal de tudo: se aplicado corretamente, funciona. Sei por experiência própria.

O que me deixa triste no Scrum é uma "certificação" chamada CSM (Certified Scrum Master). Não sou do tipo que acredita ou preza uma certificação (não fiz nem questão do MCP por mais de 10 anos), mas não desmereço quem as tenha. Só que no caso do CSM, para conseguir a porra da certificação tudo que precisa fazer é assistir dois dias de treinamento caríssimos onde nenhuma prova é aplicada... Porra, que valor essa certificação poderia ter então???

Durante minhas navegadas acabei deparando com um excelente artigo escrito por Scott Ambler, escrito em junho de 2007 no Dr. Dobb's, onde ele expressa exatamente o que sinto em relação à esta certificação. Para quem não sabe, Ambler faz parte do Agille Manifest ao lado de personalidades como Martin Fowler e Kent Beck, os papas do Agille. Seu livro "Modelagem Agil" devia ser de leitura obrigatória nos cursos de TI. O trecho mais interessante:

The challenge that we face is that many good people have chosen to become CSMs, but their reputations are at risk of being tarnished because of the actions of others. All is not lost, there are several ways that we can take back the ethical high ground:

  • You can simply choose to stop claiming to be a CSM.
  • When you indicate on your CV or in your e-mail signature that you are a CSM, you could follow with the text "earned by taking a two-day course".
  • You could include a URL to a page that overviews the CSM designation.

    Falou pouco, mas disse tudo...

  • March 29

    Simples, mas poucos fazem...

    No lugar onde estou, estou me deparando com alguns códigos feitos no início do .Net 1.1, e acabo topando com umas aberrações que me dá vontade de entregar um Darwin Awards para quem criou isso. Tudo bem, dou um crédito para o cidadão, afinal era uma tecnologia nova e muitos vieram para o mundo .Net do VB 5 ou 6. Então programar orientado a objeto acaba sendo uma coisa que poucos se acostumaram (e muitos ainda não se acostumaram).

    Uma das coisas medonhas que acabei deparando num dos projetos era a repetição de blocos gigantescos de códigos dentro dos codebehinds. 3 anos atrás, eu resolvia esse tipo de coisa criando uma classe com um monte de métodos e referenciando ela aos aspx que precisavam dela. Outras vezes resolvia com métodos embutidos em usercontrols que era compartilhada em todas as páginas. Isso resolvia o problema, mas meu amigo e colega George me mostrou um modo mais elegante de contornar esse tipo de coisa.

    Imagine a seguinte situação, que é bem comum numa aplicação web. Você precisa que em todas as páginas seja executada no evento PageLoad uma rotina de autenticação onde se verifica se o usuário logado tenha ou não permissão para acessar à mesma. Iniciantes costumam fazer algo desse tipo:

    using System.Web;
    using System.Web.UI;

    #region : e mais uma porrada de referências

    namespace SampleWebSite
    {
         
       public class Principal: System.Web.UI.Page
    ···{
    ······private void Page_Load(object sender, System.EventArgs e)
    ······{
             if(!IsPostBack)
             {
    ············//rotinas para autenticação
    ············if(Session["objUsuario"]!=null)
    ············{
    ···············cUsuario objUsuario = (cUsuario)Session["objUsuario"];
    ···············if(!cUsuario.TemPermissao("Principal"))
    ···············{
    ··················Response.Redirect("erro.aspx");
    ···············}
    ············}
    ············else
    ············{
    ···············cUsuario objUsuario = new cUsuario();
    ···············/*
    ···············
    ···············*/
    ···············Session["cUsuario"] = objUsuario;
    ·········   ·}
    ·········}
             //fim rotinas autenticação
           
             //Aqui pode estar executando outras coisas, como carregar valores defaults em textboxes, etc
          }
    ···}

    Não é nada primoroso esse código, né? Mas creio que é simples de entender e ilustra o cenário que vamos trabalhar. Funcionalmente, não existe nada muito errado. Porém o programador resolveu replicar o trecho de autenticação em um site com mais de 60 aspx. Continua funcionando, mas por algum motivo, o método TemPermissão foi alterado radicalmente e obriga a inclusão de um parâmetro adicional. Legal para caramba, né? Só precisa abrir todas as páginas e alterar uma por uma!

    Alguns podem achar que isso não pode ser real, mas o fato é que não é a primeira vez que encontro algo medonho como esse aí acima.

    A solução que considero a mais elegante: crie uma nova classe, chamada basepage.cs como exemplo e monte algo assim com ela:


    using System.Web;
    using System.Web.UI;
    #region : e mais uma porrada de referências

    public class pagebase:  System.Web.UI.Page
    {
    ···public override void On_Load(EventArgs e)
    ···{
    ······Autentica();
    ······base.OnLoad(e);
    ···}


    ···private void Autentica()
    ···{
    ············//Aqui boto a rotina de autenticação
    ············if(Session["objUsuario"]!=null)
    ············{
    ···············cUsuario objUsuario = (cUsuario)Session["objUsuario"];
    ···············if(!cUsuario.TemPermissao(this.Page.ToString()))
    ···············{
    ··················Response.Redirect("erro.aspx");
    ···············}
    ············}
    ············else
    ············{
    ···············cUsuario objUsuario = new cUsuario();
    ···············/*
    ···············
    ···············*/
    ···············Session["cUsuario"] = objUsuario;
    ·········   ·}
    ·········}

    ···}
    }


    Em seguida, altere o codebehind de todas as páginas a  declaração da classe
    public class NomePagina: System.Web.UI.Page
    para
    public class NomePagina: pagebase

    O que eu fiz? Lembram aquela aula de orientação à objeto onde o professor falava sobre herança? Foi isso que fiz. Basicamente, criei uma nova classe que herdava do System.Web.UI.Page e incrementei algumas novas funcionalidades que serão herdadas pelas outras páginas que pertencerem à nova classe (pagebase). O override On_Load vai executar a rotina da autenticação antes de executar as rotinas que forem inseridas dentro do handler PageLoad. Todos os métodos públicos, constantes, enumeradores que você colocar no pagebase estarão disponíveis para as páginas que herdarem dela.

    Sabe aqueles montes de métodos que bolamos para contornar os probleminhas mais comuns, tipo formatar ou validar um valor, retornar zero em vez de nulo ou aquele javascript que é embutido na página via codebehind? Pois é, você pode coloca-los  dessa classe. Pode também colocar as constantes e enumeradores mais comuns nela. Dá para resolver muitos problemas e não precisa editar as 60 páginas toda vez que houver manutenção em alguns desses itens compartilhados.

    Pensar antes de fazer qualquer coisa custa pouco e beneficia muito. O preço pago pelo comodismo e preguiça mental é altíssimo, para os outros e para você. Da próxima vez que for escrever uma aplicação, planeje um pouco. Porque depois ou você vai refazê-lo ou suas orelhas vão ficar vermelhas por causa dos comentários de quem está limpando sua bunda...

    January 08

    Reestruturando

    Parece brincadeira, mas neste momento estou com blog aqui, no MSN Live Space e também no Blogger. Cada um tem suas vantagens e desvantagens. Sendo assim, acabei reestruturando os assuntos nesses blogs da seguinte forma: FuryousCoder Satori (Designsense): onde continuarei relatando meu aprendizado com Aikido e soltando os verbos no que acho que está cagado. FuryousCoder Pro (MSN): onde vou colocar coisas de geek, artigos de tech relacionados à MS, gerenciamento de projetos, cotidiano profissional. FuryousCoder a vida em si (Blogger): fatos que acontecem no meu dia a dia exceto o lado profissional. A integração com o Picassa foi um bom motivo para abrir uma conta neste site.
    August 22

    Congelando em definitivo

    Preciso desabafar um pouco. Minha empresa é parceira da MS, mas nem por isso sou obrigado a elogiar este Live Space aqui. É lento de carregar, mais lento ainda de editar e configurar. Queria saber quem foi o bêbado de cú ardido que botou este monte de recursos inúteis que mais atrapalham do que ajudam.
     
    Já desisti do meu espaço no The Spoke, por motivos parecidos. De agora em diante, vai ser apenas o blog que hospedei no Designsense.
     
    Mr. Ballmer, mande a cavalaria arrumar esta joça. Pra mim, chega de Live! Misericórdia!!!
    January 15

    Finalmente, placa decente

    Bom... após um tempo considerável, acabei trocando a placa Asus por uma FoxConn Winfast, que apesar de ser onboard, é infinitamente melhor que a anterior. Se sua idéia de placa onboard é algo do tipo PcChips, Gygabyte... esquece! A FoxConn realmente é uma exceção.
     
    Eu tb não conhecia essa empresa, até descobrir depois que ela é a fornecedora das placas da propria Intel. Se olhar de perto a placa, percebe-se que foi usado capacitores de altissima qualidade. Segundo o guiadohardware, a placa tem desempenho melhor que muitos offboards decentes que existem por aí.
     
    Peguei um pf nesses dias que me fizeram voltar ao velho asp e COM+. Shooooow de horror! O duro foi desenterrar essas coisas da memória. Alguem se lembra do tipo Variant? Pois é... Postback, ViewState? Esquece!
     
    Mas o que não fazemos por um dinheiro a mais, né?
    January 02

    La la la la... Um novo ano chegando...

    Feliz 2006 para voce, fiel leitor, pois pra mim ja comecou mal.
    Caso tenha notado, a acentuacao aqui esta algo lastimavel, embora os erros gramaticais e ortograficos possam estar piores. O motivo disso: Ubuntu.

    Sim, mergulhei no lado negro, mas espero que seja so por um curto periodo. A razao pela qual fui levado a fazer algo tao desesperado foi um piripaque que deu na minha A7V8X-X(Asus as vezes e' uma merda!) e a maquina reserva tem menos de 200MB e o processador e' um P3-550Mhz. Rodar Windows? Esquece. Com essa configuracao so' se for 98, e me recuso a usar aquele lixo.

    Engracado que estou gostando de usar o Ubuntu. A interface e mais agradavel. E apesar de nao fazer a placa de som funcionar direito (e nem a p*rr@ do teclado) o resto esta funcionando bem. Nem precisei configurar a rede.

    Fui mexer nas pastas de diretorios. Cara... tomara que a MS se cuide. Os concorrentes estao chegando perto em termo de facilidade de uso. No momento que atingirem a compatibilidade, o bicho vai pegar. Ubuntu pode nao ser o mais parrudo dos Linux, mas funciona bem, obrigado...

    Mas apesar de tudo, vou esperar sabado (quem sabe antes) para pegar uma motherboard decente e voltar para o vulneravel Windows. Ainda ha bastantes coisas para aprender no VS2006.

    Vamos aguardar, vamos aguardar...
    December 05

    Lá vamos nós!

    Terça passada participei do lançamento do VS2005/SQL2005/Biztalk2006. Infelizmente o bolso não me permitiu continuar com uma fuçada na TechEd. Mas tudo bem, valeu a pena mesmo assim.
     
    Chegamos bem cedo, pra nossa sorte, pois a fila para pegar o VS2005 Standard estava enorme 3 horas antes do evento começar. As apresentações em si foram bem aborrecentes pelo menos pra mim. Durante o coffee break, acabei encontrando com alguns velhos colegas, alguns da época do BT.
     
    Fim do evento, resolvi sair mais cedo. E pra minha sorte novamente, consegui ser um dos ultimos a pegar o livro de SQL do Ramalho, que apesar de ser um lixo, era gratuito.
     
    Em casa, instalei a jaca no dia seguinte e importei algumas aplicações do trabalho para testar. Para minha alegria, tudo ocorreu bem. Não vejo justificativas para não usar isso no trabalho. Infelizmente isso não depende de um peãozinho como eu. Paciência.
     
    Só para constar: minha aplicação tinha o skmenu e ajax. Ambas foram importadas sem problemas e funcionam. Alegria, alegria.
    November 09

    yeees...

    Finalmente. Consegui botar o bendito pocket pc funcionando no wi-fi. Mas e esquisito acessar a web pelo dito cujo. Ate p/escrever e engracado... rs Bom. Ultimamente andei bastante ocupado no trampo mas consegui estudar algumas coisas legais, tipo dotnetnuke, bugtracker, alguns macetes legais do .Net 1.0 e novos recursos do beta 2 do VS2005, a ser lancado em breve. Que gloria! Vou ver se bolo uns artigos novos em breve (ta mais do que na hora ne) apos meu curso de sushi. Ate la, paciencia...
    May 21

    Touchdown!

    Não, não vou falar sobre futebol americano. Esta semana participei do Visual Studio 2005 Beta 1 Touchdown Training Program, no Centro XML, IPT-USP, tendo como instrutor o José Antonio Neves, da ITGroup.

    Devo dizer que o produto está, no mínimo, interessante. Muito interessante mesmo, ainda que tenha uns bugs, mas vamos dar um crédito, pois é o beta 1.

    Entre os novos recursos, alguns que me chamaram atenção foram as ferramentas de refactoring. Éeeee... a tal refatoração tão pregada no Extreme Programming. Definitivamente, a MS abraçou várias idéias do XP. Prova disso são o MSF Agile e os recursos do VS Team System. Suporte total ao XP mesmo.

    Estes últimos meses estudei muitas coisas, acho que nem na época de estudante me esforcei tanto assim. Investi muito em livros relacionados a metodologia Agile, instalei e estou fuçando o VS2005 e o SQL Server 2005 beta, VS Express Edition e o melhor: um Pocket PC para começar a aprender a desenvolver aplicações Mobile. Sinto que é um momento que estou absorvendo informações com muita facilidade, e vou aproveitar disso enquanto essa bença durar.

    Semana que vem vai ser curta. Vou estudar um pouco mais e escrever alguns artigos esclarecendo algumas facilidades que o refactoring fornece. É algo que vai aumentar muito a produtividade e a qualidade dos códigos. Até lá!

    March 23

    Estréia

    Bom, blog divulgado, mas somente 3 meses após a inauguração que estou podendo botar alguma coisa útil por aqui. Valeu Zé Luís, essa puxada na minha orelha me estimulou a dar este pontapé inicial.

    Parece brincadeira. Mais de 3 anos de total envolvimento com .Net, mas conto com os dedos os webforms que tive que desenvolver. É nisso que dá em ficar bitolado apenas em desenvolvimento de componentes, serviços ou os malditos AICs do Biztalk, mas isso não vem para o caso discutido agora. Aí na primeira vez que pinta uma zica que era para ser algo corriqueira, eu ganho um transtorno por não conhecer o asp.net do jeito que eu gostaria.

    DropDownList: quem já mexeu num webform sabe que ela pode gerar um combo tendo sua carga feita via um DataSet. É algo ridiculamente fácil de usar. Aí você pode me perguntar: porra, então para quê esse alvoroço todo?

    Bom, lá estava eu montando meu form com alguns desses ditos cujos. Elas carregaram direitinho na página, atualizavam os outros componentes quando mudava seu SelectIndex, até que deparei com um pequeno problema: a lista continha exatamente o que tem dentro do DataSet, e se você precisa de uma primeira opção com valor nulo, daqueles que a maioria dos desenvolvedores escrevem "Selecione uma opção", teria que inseri-la no codebehind. É mole?

    A preguiça sempre fala mais alto. Eu não queria tratar disso no codebehind e muito menos fazer um union dentro do stored procedure só para isso. Para falar a verdade, não aceitei bem o fato de não ter uma opção que permita mostrar uma opção nula.

    Aí cometi a burrada número um: incluí um ListItem no dito cujo dentro do aspx. Desnecessário dizer que não rolou, pois durante a geração da página o codebehind renderiza o dito cujo de novo e matou o item que incluí. Sucks!

    Opção número 2: pensei em incluir um javascript para fazer essa inclusão. Mas como tinha uma quantidade de combo considerável, descartei essa opção.

    Aí o jeito foi trabalhar com o codebehind mesmo. E para minha surpresa, foi a maior babada.

    O código final ficou algo assim:

    //Aqui efetua-se a carga do combo, do jeito arroz com feijão
    lstTeste.DataSource = objDataSourceTeste;
    lstTeste.DataMember = "dsTeste";
    lstTeste.DataValueFiels = "ID_TESTE";
    lstTeste.DataTextField = "DSC_TESTE";
    lstTeste.DataBind();

    //Aqui mostro o texto que vou colocar no indice zero
    string txtOptionZero = "Selecione um campo";

    //O trabalho começa: crio o item que vou adicionar
    ListItem OpcaoZero = new ListItem(txtOptionZero ,"");

    //E aqui adiciono o item no combo:
    lstTeste.Items.Insert(0, OpcaoZero);

    Iinclusão feita, de forma ridiculamente simples. Descobrindo o jeito de fazer isso, acabei bolando um WebComponent do tipo DropDownList, mas adicionando um flag do tipo bool, que oferece a opção de carregar a opção zero. Adicionei tambêm um string que permite configurar a descrição do texto nessa classe. Daí em diante era só usar o dito cujo no lugar do DropDownList original. Fácil, fácil.

    Acho que a MS devia disponibilizar algo desse naipe, e caso já exista, devia ser algo mais explícito. Quanto a mim, concluí que cachorro velho pode aprender truques novos e que sou capaz de elaborar coisas decentes em webforms.

    Por hoje é só. Abraços.

    January 28

    Start up

    Em primeiro lugar, digo e afirmo: blog é coisa de viado. Mas antes de querer montar em cima de mim para me sacanear seria interessante entender meus motivos.

    As razões pelas quais estou montando este treco:
    1) Estou abismado em ver muita gente que codifica muito pior do que eu, sendo que eu já me considero um programador mediocre.
    2) É um desafio para mim mesmo, pois escrever artigos técnicos não é a coisa mais fácil do mundo. Fazer a manutenção então...
    3) Vão poder acompanhar o dia a dia de um cidadão tentando se certificar como MCSD e ver as coisas novas que estou aprendendo.
    4) Não é para ser um blog. Entenda isto como um jornalzinho técnico. Infelizmente meu bolso não me permite montar algo decente com um Sharepoint ou um CMS da vida, então vale o velho ditado: quem não tem cão caça com rato. Isso mesmo, rato!!!

    Sendo assim, acho interessante passar os tips & tricks e alguns best practices que adquiri nos últimos tempos, seja por aprendizagem própria, seja nos projetos que desenvolvi com o povo da MS. É uma pequena contribuição para tentar melhorar o nível dos profissionais do mercado.

    Espero que possa aproveitar bastante com os artigos. Se ainda quer me sacanear, vou pedir para os deuses que você tenha que configurar Linux gratuitamente pelo resto da sua miserável vida.

    Marco Chen

     

    Marco Chen

    View spaceSend a message
    Occupation:
    Age:
    Location:
    Interests:
    Meu trabalho: resolver problemas. Sou pago para isso e faço isso desde 1994.

    Meu credo: TI é apenas parte de uma solução. Quem resolve os problemas são pessoas como o cidadão aqui.
    No list items have been added yet.