Blog do TreinaWeb!

Blog do TreinaWeb

Dicas, notícias e informações sobre cursos, programação, webstandards e desenvolvimento web.

Arquivo de abril de 2009



  • Criando miniaturas em C#


    30 de abril de 2009

    Hoje mostraremos um exemplo simples e muito útil para criar miniaturas de imagens, conhecidas também como Thumbnails.

    A função abaixo é responsável por todo este processo de miniaturização das imagens, ela recebe como parâmetro, o caminho da imagem, a largura e o tamanho.

            public void thumbnail(String img, int width, int height)
            {
                // O caminho da imagem virá da variavel img
                // As medidas p/ miniatura virão da variavel width e height
     
                // cria o object imagem com o nome e camimho completo do arquivo
                System.Drawing.Image image = System.Drawing.Image.FromFile(img);
     
                // cria o thumbnail do object image, definindo sua altura e largura de acordo com os parâmetros
                System.Drawing.Image thumbnailImage = image.GetThumbnailImage(width, height, new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero);
     
                // cria a memory stream dos bytes da imagem
                MemoryStream imageStream = new MemoryStream();
     
                // coloca a imagem na memory stream
                thumbnailImage.Save(imageStream, System.Drawing.Imaging.ImageFormat.Jpeg);
     
                // cria um array de bytes com o tamanho da imagem
                byte[] imageContent = new Byte[imageStream.Length];
     
                // rebobina a memory stream
                imageStream.Position = 0;
     
                // carrega o array de bytes com a imagem
                imageStream.Read(imageContent, 0, (int)imageStream.Length);
     
                // modifica o cabeçalho "content-type" da página para "image/jpeg" e imprime a imagem.
                Response.ContentType = "image/jpeg";
                Response.BinaryWrite(imageContent);
     
            }
            //função complementar
            public bool ThumbnailCallback()
            {
                return true;
            }

    Note que você pode definir a largura e a altura da imagem, então também é possível ampliar as imagens, mas lembre-se que nestes casos a imagem pode perder qualidade.

    Por hoje é isso, até a próxima.

  • Gerar PDF em Javascript!


    29 de abril de 2009

    Apesar de conhecemos pessoas que “odeiam” o Javascript, não podemos negar que foi o tempo, onde ele servia apenas para efeitos bobos, abrir “popups”, alertas e validação de formulários. Nos já mostramos funções em Javascript, que há tempos era impensável de se fazer na linguagem.

    Se você se surpreendeu com o Chrome Experiments, se prepare porque agora você irá cair pra atrás, pois surgiu uma função para gerar PDFs, isto mesmo, você não ouviu errado. A biblioteca chama-se jsPDF (que original!) e gera PDF em Javascript puro. É um projeto open source, e atualmente só funciona no Firefox 3, Safari (até o do Iphone) e Opera, mas o suporte ao IE está a caminho.

    Por enquanto ele gera PDF só com texto, mas o suporte a imagens, links e fontes está previsto nas próximas versões.

    Até a próxima!

  • Insert ou update no Mysql


    28 de abril de 2009

    Hoje daremos uma dica do MySql, para aqueles que precisam fazer um insert, caso o registro não exista, e um update caso exista.

    Para estes casos, o Mysql nos permite trabalhar de duas formas:

    1 – Para fazer um insert caso o registro não exista, você utiliza o comando REPLACE. Por exemplo:

    REPLACE tb_treinaweb (tb_id, nome, id_user) VALUES (1,’Bruno’, 152);

    Neste caso, se já existir um registro com a chave ’1′, o REPLACE apaga a linha e insere um novo registro com a chave ’1′.

    2 – Para fazer somente um UPDATE, obviamente caso o registro exista, utilizamos o comando ON DUPLICATE KEY UPDATE. Por exemplo:

    INSERT tb_top (tb_id, name, id_user) VALUES (1, ‘Bruno’, 152) ON DUPLICATE KEY UPDATE name =’Bruno’, id_user = 152;

    Neste caso, o comando não irá apagar a linha antes de incluir o registro, ele fará apenas o UPDATE dos campos especificados.

    Os dois comandos então, tem basicamente a mesma função. O uso do REPLACE é mais simples, mas como ele elimina as linhas para inserir novos registros, caso você não informe algum campo, ele ficará vazio. Já o ON DUPLICATE KEY UPDATE, ele só afetará os campos informados.

    Outro fator importante, é que no REPLACE, para saber se foi efetuado apenas o insert, ou se ele excluiu antes de inserir, é só notar o número de ROWS afetados, se for 1 será apenas o insert, se for 2 ele excluiu depois inseriu o registro.

    Por hoje é só. Até a próxima!

  • Quer ser programador Cobol?


    27 de abril de 2009

    Continuando a nossa série de artigos para quem quer se tornar um programador, hoje falaremos de uma linguagem antiga (existe desde o início dos anos sessenta), mas que ainda não morreu. Para quem ainda não percebeu (você não leu o título do post?) hoje falaremos do Cobol.

    Mas então, o que é Cobol?

    Cobol é a sigla de Common Business Oriented Language (Linguagem Orientada aos Negócios) que foi criada em 1959, durante o CODASYL (Conference on Data Systems Languagem), um comitê que foi criado para recomendar as diretrizes de uma linguagem para negócios. Este comitê era composto de seis fabricantes de computadores e três órgãos governamentais dos EUA.

    O Cobol foi baseado nas linguagens FLOW-MATIC e COMTRAN e a versão final da linguagem saiu em janeiro de 1960 com o nome de Cobol 60.

    O Cobol foi desenvolvido num período de seis meses e continua ainda em uso depois de mais de 40 anos, vai completar 5 décadas no próximo ano. Quase na hora de se aposentar, ou não!

    Mas por que Cobol?

    O Cobol é uma linguagem que nasceu para ser utilizada por empresas, isto é notado até no significado do nome, além disso foi criado para ser estável, onde é principalmente aplicado em aplicações críticas, ou seja, que necessitam funcionar 99,9999…% do tempo.  Agora pense, se você tem uma aplicação que funciona perfeitamente, quase sem pausa, por que você vai mudar? E este é o principal motivo que o Cobol ainda existe até hoje.

    Vamos a outro pensamento: Se você tem uma linguagem de quase 50 anos, qual é a idade dos programadores desta linguagem? Quem pensou em pessoas de idade, acertou. Atualmente um bom programador de Cobol está em falta, porque todos estão se aposentando, ou já se aposentaram. Já ouvimos dizer que o programador Cobol é o único que começa e se aposenta trabalhando com a mesma linguagem. Inclusive, algumas empresas buscaram profissionais aposentados, nos últimos anos, para suprir a falta de mão de obra.

    Se você ainda está em duvida se quer ou não ser um programador Cobol, então está faltando, mais uma dica: Pelo simples fato de que os profissionais Mainframe estão ou em breve estarão em falta, as empresas dificilmente deixam um bom funcionário sair da empresa. Por este motivo, os bons programadores/analistas Cobol são muito bem remunerados e disputadíssimos entre as empresas.

    Agora vamos a parte chata, é muito difícil aprender Cobol, para ficar com mesmo é necessário aprender todo o ambiente de um Mainframe, como sistema operacional, CICSJCL, etc, pois a maioria das aplicações rodam nestes sistemas. Além disso, é necessário conhecer o banco de dados DB2 que é o banco de dados mais utilizado nos MainFrames (ou os arquivos seqüenciais, como o VSAM, por exemplo).

    Mas o sacrifício compensa no final.

    Por onde começar?

    Curso de Cobol do TreinaWeb.

    Outra dica para aprender e se familiarizar com a linguagem, é pegando dicas com colegas de trabalho.

    Além disso, a técnica de desenvolvimento em Cobol é um pouco diferente da que um programador de C#, Delphi, PHP, etc está acostumado. De qualquer forma, é interessante que saiba uma destas linguagens antes do Cobol, e depois disto, estude algum bando de dados, pode ser qualquer um, mas de preferência ao DB2. Por ultimo e mais importante, estude o ambiente Mainframe (CICS, VSAM, SO, etc). Só então, depois de aprender tudo isto, vem a parte fácil: Aprender a linguagem Cobol.

    Links úteis:

    - http://ibmmainframes.com/index.php
    - http://www.cobug.com/cobug/docs/manuals0010.html
    - http://www.cobug.com/cobug/docs/tutorials0032.html
    - http://www.cobolstandards.com/
    - http://www.infogoal.com/cbd/cobol.htm
    - http://www.csis.ul.ie/cobol/default.htm

  • Conficker voltou a atacar!


    24 de abril de 2009

    Você deve ter ouvido falar no Conficker, que supostamente começaria a atacar os computadores no dia 1º de abril, e segundo especialistas informaram nesta sexta-feira(24/04), ele está sendo ativado lentamente nas máquinas em que se instalou.

    Também conhecida como Downadup ou Kido, essa praga está aos poucos transformando os computadores de um número desconhecido de pessoas em emissores de spams.

    O Conficker começou a se disseminar no ano passado, infectando milhões de computadores e criando uma rede de máquinas “zumbis”, que respondem a comandos enviados por um servidor remoto que efetivamente controla um exército de PCs apelidado de botnet.

    Sugerimos a todos que mantenham seus antivírus atualizados para não ser infectado por esta e por outras pragas. Até a próxima.

    Fonte: Info Exame

  • Você sabe o que é CMMI?


    23 de abril de 2009

    CMMI (Capability Maturity Model Integration) é um conjunto de práticas de gerenciamento e de melhoria de qualidade a serem aplicadas no processo de desenvolvimento de software.

    Ele foi criado em 1997, por Watts Humphrey, do SEI (Software Engineering Intitute) da Universidade Carnegie Mellon, para garantir maturidade na capacidade de desenvolver software.

    O CMMI ajuda a empresa a aprimorar seus processos e se tornar mais madura e eficiente. O CMMI tem cinco níveis.. na verdade seriam 6, porém o nível 0 (incompleto), praticamente não é contado, por que uma empresa neste nível é uma empresa totalmente desorganizada. Os demais níveis são atingidos conforme a empresa vai se organizando e tenho maturidade no desenvolvimento dos seus projetos. O nível 5 (optimizado) é alcançado quando a organização, sabe prever o comportamento de um determinado processo diante do cenário ao qual o processo se encontra.

    No Brasil a primeira empresa a atingir o nível 5, foi a multinacional Tata Consultancy Services, em 2004, e isto foi possivel, pois a empresa adotou no Brasil o mesmo modelo utilizado em todas as suas outras filiais.

    Em resumo, o CMMI é um modelo para a melhoria contínua de processos que “amadurece” as organizações e torna-as mais competitivas, e atualmente um diferencial no currículo dos desenvolvedores ou analistas, que desejam trabalhar em empresas de médio e grande porte.

  • Diretrizes de programação


    22 de abril de 2009

    Hoje falaremos de um item muito importante para quem é programador ou para quem quer ser um programador, que é Guidelines ou simplesmente diretrizes de programação.

    As diretrizes de programação são regras que você deve seguir quando está desenvolvendo para deixar seu código mais legível e facilitar a vida de quem futuramente for dar manutenção no seu código.

    PascalCasing
    Propriedades e métodos devem seguir a convenção PascalCasing, onde a primeira letra de cada palavra é maiúscula.

    Exemplo:

    diretrizes-exemplo11

    CamelCasing
    Já os parâmetros e variáveis deve seguir a convenção CamelCasing, onde a primeira letra da primeira palavra deve ser minúscula e das demais palavras devem ser maiúsculas.

    Exemplo:

    diretrizes-exemplo2

    Veja que tanto as variáveis e o parâmetro da função estão seguindo as regras do CamelCasing.

    Verbos
    Segundo as diretrizes de programação todos os métodos devem iniciar com verbos, por exemplo: use Add, se o método for adicionar algo; Set, se for atribuir; e Get, se for pegar algo.

    Exemplo:

    diretrizes-exemplo3

    Também é indicado que propriedades booleanas devem ser iniciadas com Has, Can ou Is.

    Exemplo:

    diretrizes-exemplo4

    Uma coisa que vocês devem ter reparado é outra indicação, ou seja, sempre renomeie os métodos, propriedades, variáveis, enfim todos os nomes devem estar em inglês, por que se um nerd chinês outro funcionário ver o seu código, conseguirá dar manutenção nele.

    Estas são apenas algumas diretrizes de nomenclatura que devem ser aplicadas para qualquer linguagem. E estas regrinhas simples deixam um código mais legível e fácil de entender.

    Sempre utilizem estas regras, quem for dar manutenção no seu código agradece. Até a próxima!

  • Você sabe o que é Micro-blog?


    20 de abril de 2009

    Micro-blog é a nova febre da internet, grandes empresas já viram seu potencial e mais de 9 milhões de pessoas utilizam suas funcionalidades.

    Você pode postar uma palavra, dez palavras, 140 caracteres, uma foto, um vídeo, um link e às vezes, apenas uma letra ou um emoticon. Ainda não sabe do que estamos falando? Talvez se eu lhe dermos uma dica: Você pode “microblogar” ou “twittar” de qualquer computador ou aparelho celular.

    Simplificando, para aqueles que estavam em Marte no último ano, estamos falando do Twitter, não apenas dele, apesar de ser o precursor e ser o mais utilizado, não é o único neste seguimento de “blogs para preguiçosos”.

    Quando o Twitter foi criado em 2006, por Jack Dorsey da start-up Obvius Corp., se tornou referencia neste seguimento e foi copiado por outras empresas, tem até um site brasileiro, o GoZub que é muito parecido com o Twitter. Os outros microblogs, ao contrário do Twitter, não se limitaram apenas a texto. Existem mecanismos onde é possível postar vídeos (SEESMIC), fotos (BRIGHT KITE) e até de áudio, com é o caso do brasileiro Gengibre.

  • Jogo Chronon


    17 de abril de 2009

    Hoje não iremos colocar um texto ou uma notícia, como ninguém é de ferro, vou falar de um jogo que é necessário muita paciência lógica para completa-lo.

    O jogo usa as teorias de viajem no tempo para solucionar seus puzzles. Seu papel é manipular o tempo e os objetos em cena para no fim libertar o pobre Anão de sua prisão.

    O jogo se inicia as 6:00 horas, quando o grande monstro malvado sai de casa, sabe-se lá porque, e vai retornar às 19:00. Com seu poder de manipular o tempo em períodos fixos, o jogador deve colocar os objetos em certos lugares e observar o seu comportamento ao longo do tempo e usar isso para libertar (de uma maneira ou outra) o Anão prisioneiro. Então click na imagem e bom jogo!

    chronon

  • Google Java App Engine


    16 de abril de 2009

    ae_gwt_java

    Aproveitando o tema do post anterior. Se você estiver interessado em aprender Java, esta notícia vai lhe interessar. Esta semana o Google ouviu os desenvolvedores java e lançou o Google App Engine com suporte a Java.

    Para quem não conhecia (ou não sabia) o AppEngine tinha somente suporte ao Python, mas agora qualquer javeiro pode fazer deploy de servlets nos servidores do Google. Falando rapidamente sobre o que o Google disponibilizou:

    * Plugin de desenvolvimento para eclipse: o Google disponibilizou um plugin com suporte a criação de projetos do GWT e já com todas as bibliotecas (e interfaces dos serviços) que pode-se utilizar no AppEngine. Também existe um botão no estilo “one-click-deploy” que permite a publicação da app direto nos servidores do Google.
    * Bibliotecas de serviços: como o ambiente do app engine tem uma série de limitações (como várias restrições na lib IO) para garantir o uso partilhado dos servidores, o google disponibilizou algumas bibliotecas para fazer coisas bem comuns em app web, como mandar email, editar imagens, pegar conteúdo de urls, uso servidores de cache, etc.
    * Suporte a agendamento de tarefas: para aquelas tarefas básicas como atualizar a base de dados, limpar o cache, mandar emails diários, etc. Funciona assim: você cria e cadastra um servlet que deverá fazer a tarefa desejada; depois você edita um arquivo que vai ficar no diretório da sua app com as configurações de tempo, intervalos, prazo, etc…
    * JDO e JPA como interface do BigTable: parece que ficou fácil guardar e mapear os dados do BigTable (sistema de arquivos e base de dados do Google). Agora basta colocar uma anotação no seu POJO que ele pode ser persistido na base do Google, com direito a sharding automático e sem se preocupar com questão de espaço.

    Então faça seu cadastro e começe a desenvolver suas aplicações. Até a próxima!

    Fonte: Google App Engine Blog