Pesquisa personalizada

2004/12/13

ASP.NET: Chegou a hora

Parece que finalmente chegou a hora de eu aprender um pouco de ASP.NET. Alguns eventuais leitores poderão se assustar ao lerem isto... afinal, já ministrei pelo menos uma palestra sobre ASP.NET, se não me engano, em 2001. Logo, se torna inevitável para quem assistiu a palestra perguntar:
- Esse cara não sabia ASP.NET?
Eu respondo:
- Na época estudei um pouco. Tive três dias para me preparar para a palestra. O que explica porque cheguei quarenta minutos atrasado. Estava terminando a apresentação do Powerpoint.

Agora ao me recordar, vejo que foi engraçado. Tudo começou com um telefonema de uma coordenadora de cursos de uma emergente empresa de treinamento em TI:
- Alô, Marcio?
- Sim. Quem fala?
- Aqui é Fulana, da empresa YYY. Eu queria saber se está confirmada a palestra de segunda-feira e se você precisará de algo.
- Palestra?!
- Sim, a palestra que combinamos. Não se lembra?

Nesse momento pensei um pouco. Afinal não sabia de nenhuma palestra e estou certo de que nunca chegamos a combinar qualquer palestra, mas vi que poderia ser uma boa oportunidade. Então disse:
- Eu não me lembro do tema da palestra.
- É sobre .NET.
- Ah sim, claro! Pode confirmar!
- Se precisar de algo me diga. Conseguimos um projetor que poderá ser usado.
- Ok, obrigado. Onde será?
- Será no endereço tal, tal, tal às 20h00.
- Ok, Fulana. Obrigado e até lá.
- Até lá, Marcio e bom fim-de-semana.

Bem, eu me vi com o problema de estudar e elaborar uma apresentação de um assunto que até então não conhecia, em três dias. E, claro, apresentar a palestra sem passar por patético. Com pouco tempo disponível, me pus a estudar .NET. Li um bocado da documentação do framework, na época ainda beta. Assisti alguns vídeos da Microsoft. Vi algumas apresentações sobre a arquitetura. Conheci um pouco sobre as ferramentas e as novas linguagens de desenvolvimento.

Domingo rapidamente chegou. Como o tempo voa quando a corda está no pescoço... Vejo que chegou ao Outlook um e-mail do boletim da empresa YYY. Leio o boletim e vejo que fala, dentre outras coisas, sobre a palestra que iria ministrar. Ao ver o programa da palestra, tomo um susto! Explico: o programa dizia que a palestra seria especificamente sobre ASP.NET. Basicamente teria que fazer um comparativo entre ASP clássico e ASP.NET. Resultado: Tempo perdido... Boa parte da apresentação que estava montando foi jogada fora, pois se tratava do Framework .NET como um todo e mal fazia menção a ASP.NET.

Lá vou eu, um profundo ignorante em ASP.NET (não sabia nada!), estudar ASP.NET. Tempo corrido, só me restava metade do domingo e a segunda-feira. Estudo, brinco um pouco, leio um pouco mais, baixo alguns exemplos, faço testes e já chegou a segunda-feira, 18h00 da tarde! A palestra iria começar às 20h00. Sou forçado a montar a apresentação no Powerpoint às pressas. O tempo corre, deu 20h00 e ainda estou em casa montando a apresentação. Encerro a apresentação. Corro para o Sudoeste, onde seria a apresentação. Só soube o endereço exato pelo boletim da empresa YYY. Mas como não conheço nada de Sudoeste, fico rodando como uma barata. Já perto do local, mas sem saber ao certo onde era, paro ao lado de uma moto e pergunto ao cara se ele sabia onde ficava o endereço. Sem ele me dar muita bola e para minha surpresa ele diz estar indo para o mesmo lugar, mas também não sabia como chegar. Eu agradeço e resolvo perguntar a um transeunte. Este me diz que bastava seguir em frente e prestar atenção, pois estaria a minha esquerda e que já estava quase lá.

Chegando lá vejo meu público, já impaciente, todo apertado em uma sala quente. Chego procurando a coordenadora que me encaminha a sala onde seria a palestra. Insiro o CD-ROM com a apresentação na máquina, ligo o projetor e espero o pessoal terminar de entrar.
Sou obrigado a me desculpar e prossigo com a palestra.

Passei, um pouco do horário. A palestra levou quase duas horas. Ao final foi sorteado alguns brindes e pedido aos ouvintes que preenchessem um questionário sobre a palestra. O objetivo era averiguar o nível de satisfação do público. Ao conferir o questionário, nova surpresa. O palestrante, eu no caso, foi avaliado com uma nota média de 8 em 0 a 10.

Fico pensando se sou o único cara que se mete a palestrar sem dominar um dado assunto...
Concluo achando que logro bem...

Um Outro Dia

Fugindo um pouco do assunto, me lembrei de um outro incidente que me ocorreu com a referida empresa. Conto-o em seguida:

Minha parceria com a empresa YYY não parou por aí. Juntos, participamos de algumas licitações, planejamos cursos e ao final nada se concretizou, para nossa infelicidade. Como uma espécie de retribuição, a empresa YYY me oferece gratuitamente qualquer treinamento que desejasse. Quem me conhece, sabe que sou prioritariamente autodidata. Não sei o porquê, mas naquele momento optei por fazer um cursinho de Java básico aos sábados que era oferecido pela empresa YYY. Seriam quatro horas de curso, todos os sábados. Teria que fazer um puta esforço para ir a estas aulas, pois normalmente prefiro ficar em casa estudando e não gosto de acordar cedo. O professor dizia ter escrito uns tantos livros e ter mais uns tantos anos de experiência. Eu pensei:
-Vou gostar do curso.

No primeiro dia de aula, recebo o material, fico feliz com o livro. Sabe aquele das formiguinhas? Dos Deitel? Acho difícil quem não ouviu falar dele. Java Como Programar - O livro é muito bom. Eu gostei. É para quem não conhece nada, nadinha de Java. O melhor dele são os exercícios. Se você fizer todos eles, duvido que não aprenda. O mais difícil é fazê-los, pois alguns são muito complicados, ao menos eu achei. Como exemplo, cito a simulação do cavalo que deve percorrer todo o tabuleiro de xadrez sem repetir nenhuma das casas. São exercícios inteligentes. Alguns, até passei a adotar nas aulas que ministro. O livro que estudei era da terceira edição, mas atualmente tenho o da quarta edição. Este último que é o da imagem ao lado, traz como novidade uma introdução a UML. Recomendo. Nota: não se deixe impressionar pelo site dos Deitel, o site é horrível, mas o livro é realmente bom. Peço desculpas, eu me deixei levar e acabei me desviando. Volto ao assunto. Ao entrar na sala de aula, vejo a turma de alguns poucos alunos - havia máquina de sobra - e o professor - um senhor já de certa idade. Escolho uma cadeira bem a frente do professor. Fico meio desconfiado, mas atento à aula.

Em um dado momento o professor explica sobre os operadores lógicos, relacionais, atribuição e aritméticos da linguagem Java. Ele passa por toda a extensa lista de operadores explicando um-a-um, até que chega a vez do operador ~ (complemento de bit), este ele havia deixado por último, e diz:
-Este operador não tem nenhuma função útil. Vocês não precisaram dele. Por isso eu nem vou explicar.

Eu que já conhecia C, percebi que se tratava do operador de complemento de bit e indaguei:
- Professor, este operador não seria o de complemento de bit? Se for, é claro que ele é útil. Ele realiza uma operação elementar da matemática binária. E isso é extensivamente usado. Não vejo porque você deveria deixar de explicá-lo.

O professor retruca:
- Olha, eu tenho mais de n (não sei quantos anos ele disse) anos de experiência e posso te afirmar que eu nunca usei esse operador e que vocês nunca precisarão usá-lo.

Uma garota da Politec que também assistia ao curso, diz:
- Professor, você não acha que talvez pesquisadores ou programadores que programem em baixo nível utilizem esse operador? Eu acredito que sim. Acho que a gente que desenvolve aplicações comerciais é que não tem necessidade de usar isso. Mas acho que pesquisadores o utilizam - diz ela, como se fosse algo de difícil utilidade prática, mas ainda sim, ela prevê o uso fora do seu âmbito de trabalho.
Eu disse:
- Sim, mas eu já utilizei esse operador diversas vezes e posso sustentar que ainda o uso. Não vejo o porquê de categorizar isto como sendo de pouco utilidade. Já utilizei, inclusive, em diversos tipos de aplicações e é normal utilizá-lo.
O professor querendo dar um fim a conversa, diz:"
- Como já disse, eu nunca usei esse operador e acredito que mesmo nesse tipo de aplicação que você (a garota) mencionou não há necessidade de usá-lo, pois eu já desenvolvi diversos tipos de sistema e nunca o usei.

Eu, diante de tanta ignorância, resolvi ficar calado e dar o assunto por encerrado. Além de ser ignorância e insensatez o que o professor disse, basta percorrer o código fonte do Delphi ou do Java para ver dezenas de ocorrências do uso do operador de complemento de bit. Em C e assembly, é ainda mais comum usá-lo.

Para quem não sabe ou não se lembra o operador de complemento de bit (ou em inglês bitwise complement) é usado para inverter todos os bits de uma palavra. O resultado é que os bits que tinha valor 1 passam a ter valor 0; e os bits que tinha valor 0 passam a ter valor 1. Exemplo: Um byte de valor decimal 0 após a operação de complemento de bit passará a ter valor decimal 255. Veja: .

Nova polêmica surge quando o professor começa a explicar os modificadores Java: public, private, static, final, native. Ele diz que o modificador native é útil para indicar que um determinado método de uma classe surge ali e não está sendo herdado de uma super classe. Sim ele disse isso mesmo! Acredita? Eu achei que não estivesse entendido e pedi que ele explicasse melhor. Ele disse:

- O modificador native serve para documentar um método. Quando você deseja indicar que o método é nativo (?!) de uma determinada classe, que ele nasceu ali, naquele ponto e que não é um método que foi declarado em uma super classe, você indica isso usando esse modificador.

Eu não me deixei convencer pelo que foi dito. A idéia era demasiadamente estranha. Para quê alguem iria criar um modificador só com esse propósito? Então resolvi pesquisar na Internet sobre o modificador native. De cara o Google me remeteu ao documentação da JNI no website da Sun. Lá falava que o modificador native é usado para declarar um método que não tem implementação Java e sim é implementado em outra linguagem, por isto chama-se native. Porque é dependente da arquitetura do OS e da máquina para o qual foi compilado. Veja: "The native modifier indicates that this method is implemented in another language". Por exemplo, você pode por exemplo criar uma DLL em Delphi ou C/C++ que implementa algumas rotinas que serão usadas em Java. Para acessar essas rotinas que estão na DLL você criará uma classe Java que declarará um método native para cada uma dessas rotinas.

Estando certo que o professor estava errado, eu contra-argumentei:
- Professor, eu acessei a documentação Java no website da Sun e vi que aqui diz que o modificador native serve para declarar um método que será implementado em outra linguagem.
O professor não se dando por vencido, insiste:
- Sim, era assim até a versão 1.2. Mas agora não é mais.

Tá bom. Eu desisto. Com mula manca não há ferradura que dê jeito.

Como se não bastasse, antes do intervalo, o professor solta outra pérola:
- Como vocês devem saber, se você tem 50 transações de banco abertas e você "dá um rollback" em uma, todas as demais também são canceladas. Isto é perigoso!

Poxa, para mim isto foi demais. Eu peguei minha trouxa e fui para casa estudar Java sozinho. Ao menos assim, se errar, erro pelos meus próprios meios; Não fico dependendo que outros me ensinem errado.

Depois disso, fazer algum curso; só se for treinamento oficial e com professor credenciado pelo fabricante! E haja dinheiro para pagar Efatec, Novintec, Ka Solution e eCurso (se fizer algum, opto pela última que pelo menos estudo sozinho em casa, com material oficial, curso oficial e a um preço bacana).

A Hora do ASP.NET

Por último, vou meter o pau no livro Aprenda em 21 dias ASP.NET de Chris Payne. Que tal comprar um livro de baixo valor técnico, impreciso e mal traduzido? Pois é isso que você vai obter se comprar este livro. Eu ainda tive sorte que ganhei o livro. Mas teria ficado com muita raiva se tivesse comprado ele. Depois de ler este livro, com certeza você precisará de outro! Ele é muito básico e até atende o propósito de ensinar aos iniciantes, mas só fica nisso também. Logo, logo você terá que buscar outras fontes de referência.

Em algumas partes o livro chega a confundir o leitor, como exemplo, cito no capítulo 3 onde ele dá uma introdução ao leitor sobre os tipos de dados do Visual Basic .NET. Ele categoriza o tipo char como string, para imediatamente colocá-lo na categoria de números inteiros. Isto pode ocasionar certa confusão.

Quando ele fala das strings, ele diz que uma string como "Hello World" ocupará aproximadamente 10 bytes, o que é um chute muito longe do tamanho real. Se cada caracter dessa string ocupasse exatamente um byte, essa string teria um tamanho total de no mínimo 11 bytes. No entanto, essa string é armazenada como UNICODE de 16 bits, o que leva o tamanho total a ser de no mínimo 22 bytes. Levando-se em conta que a string necessitará de um armazenamento adicional para informações de controle, pode-se adicionar pelo menos mais 8 bytes para cada string. O que faz um tamanho total de 30 bytes, no mínimo. Os 8 bytes que adicionei a string foram mensuradas com base na long string do Delphi e na string padrão OLE.

A tradução não ajuda muito, pois há coisas como:

  • type-safe é traduzido para: "seguro para tipos";
  • statement é traduzido para: "orações".

Talvez você se pergunte como eu vou estudar ASP.NET, então? Eu irei estudar primeiramente pelo justo livro acima. Após eu ter passado pelo básico, começo a estudar:

Agora, só para ser contraditório, mas seguindo a um critério, eu gostaria de fazer os seguintes cursos oficiais da Microsoft:

Pena estar desempregado, sem um puto e não ter dinheiro para fazê-los. Mas se tivesse, eu faria! Será?

Labels: ,

2004/12/01

Vestibular: Somatória dos termos de uma PA

Domingo, dia 28 de novembro de 2004, prestei vestibular para o curso de Engenharia da Computação do UNICEUB para o primeiro semestre de 2005. Não achei nada difícil. Olha que não sou nenhum cabeção e dediquei todo o tempo que tinha para estudar para o vestibular, ou seja, não estudei nada! Fui bem em inglês e estudos sociais. Usei quase todo o tempo que tinha para realizar a prova, entregando-a nos últimos quinze minutos de um total de quatro horas.

A questão que despendeu mais tempo, foi um simples somatório de uma PA - progressão aritmética. Explico: eu não me recordo de como se resolve uma PA... Portanto, para resolver essa questão, demorei quase uma hora! Cara, sou burro! Mas, sou também um burro persistente... (ou seja, sou mais burro ainda?!). No final, acabei conseguindo chegar a resposta certa. Para isso tiver que fazer uma avaliação geométrica da questão. É este estudo que fiz durante a prova que pretendo expor aqui.

Neste artigo (se é que posso chamar isso de artigo...) irei utilizar MathML para representar as formúlas matemáticas. Portanto, para que você possa visualizar este artigo corretamente, será necessário o uso plugins ou o webbrowser Firefox que já tem suporte a MathML. Se não tiver, instale os seguintes plugins para o Internet Explorer:

  • MathML - é uma especificação XML da w3c para representar formulas matemáticas. Se você deseja aprender mais sobre MathML, veja este tutorial. Baixe gratuitamente o plugin do site da Design Sciense, autora do visualizadorMathML e de outras ferramentas envolvendo representação matemática. Para isso clique aqui ;

Segue o enunciado da questão original e suas possíveis respostas conforme o teste:

"Um agricultor colhe laranjas durante 12 dias, da seguinte maneira: no primeiro dia são colhidas 10 dúzias; no segundo, 16 dúzias; no terceiro, 22 dúzias, e assim por diante. Ao final dos 12 dias ele colherá, no total," a) 76 laranjas b) 516 laranjas c) 12.384 laranjas d) 6.192 laranjas c) 912 laranjas

Continuação

Leia aqui a manobra que usei para chegar ao resultado.

Conclusão...

Encontrado o valor das dúzias, marquei a resposta. Crente que tinha acertado a resposta, chego em casa, vou escrever isto e descubro que a resposta não era para ser dada em dúzias e sim em número de laranjas. O quer daria 516×12=6192. Bem, errei a questão... mas passei no vestibular!
Se conseguir arranjar dinheiro para pagar a matrícula, estarei cursando no ano que vem Engenharia da Computação.

Labels: