Image Image Image Image Image
Scroll to Top

Topo

desenvolvedores

11

maio
2012

Sem Comentários

Em Blog
PHP

Por Allison

Equipe do PHP libera nova correção para falha de segurança na linguagem

Em 11, maio 2012 | Sem Comentários | Em Blog, PHP | Por Allison

Fonte: IMasters

Com informações de The H

A equipe de desenvolvimento do PHP fez outra tentativa para corrigir a vulnerabilidade crítica que afeta servidores rodando o PHP em modo CGI. O problema é que, no modo CGI, é possível chamar parâmetros do PHP direto pela URL.

Por exemplo, ao acessar o endereço http://localhost/index.php?-s, o servidor executaria o PHP com o parâmetro -s, que exibe o código-fonte do arquivo, e não o HTML gerado por ele. Só isso já seria problema suficiente (afinal, é comum inserir dados como senhas do banco de dados no código fonte), mas o time que descobriu a falha também percebeu que ela permite inserir código malicioso no arquivo e executá-lo.

Os detalhes da vulnerabilidade foram revelados publicamente por engano. Originalmente, o problema teria sido corrigido nas versões 5.3.12 e 5.4.2 do PHP, que foram liberadas na semana passada. Mas logo foi descoberto que as atualizações forneciam uma solução incompleta e outras maneiras de explorar a falha apareceram.

Agora, os desenvolvedores liberaram as versões 5.3.13 e 5.4.3, que, segundo eles, corrige o problema. Os primeiros testes realizados pelo especialista em PHP Christopher Kunz indicam que a solução deu certo desta vez.

Além disso, um buffer overflow na função apache_request_headers também foi corrigido no branch 5.4.

Tags | , , ,

27

abr
2012

Sem Comentários

Em Blog
Dados

Por Allison

Versão 5.5.23 do MariaDB é liberada e traz melhorias de desempenho

Em 27, abr 2012 | Sem Comentários | Em Blog, Dados | Por Allison

Fonte: IMasters

Com informações de The H

A versão 5.5.12 do MariaDB, um substituto drop-in para o MySQL, foi publicada pelos desenvolvedores no Monty Program. O primeiro release estável para o banco de dados open source inclui melhorias de desempenho e a adição de novas funcionalidades em relação ao MySQL 5.5.23, no qual foi baseado.

De acordo com os desenvolvedores, a funcionalidade thread pool agora está significativamente mais eficiente, tornando-se comparável à mesma funcionalidade de fonte fechada no MySQL Enterprise. Outras mudanças incluem uma opção @@skip_replication e atualizações para o mysql_real_connect(), assim como a adição de um novo argumento INSTALL SONAME e otimizações em LIMIT ROWS EXAMINED.

Os desenvolvedores ressaltaram que, como o MariaDB 5.5.23 inclui o MariaDB 5.3.6, a atualização corrige um problema sério de segurança que poderia permitir que um usuário se conectasse com uma senha inválida em certas circunstâncias. Usuários com versões mais antigas são alertados para realizarem a atualização o mais rápido possível.

Mais detalhes sobre a nova versão, incluindo uma lista completa de mudanças, podem ser encontrados neste link, nas notas de lançamento e no change log. O MariaDB 5.5.23 está disponível para download para sistemas de 32 e de 64 bits.

Tags | , , , ,

10

abr
2012

Sem Comentários

Em Blog

Por Allison

Como será o futuro dos desenvolvedores?

Em 10, abr 2012 | Sem Comentários | Em Blog | Por Allison

Fonte: Cezar Taurion

Outro dia recebi um e-mail muito interessante de um desenvolvedor recém-formado, que se questionava sobre quais tecnologias deveria se dedicar nos próximos anos. Debatemos o assunto e creio que um pequeno resumo do debate pode ser de interesse para outros desenvolvedores que estejam diante da mesma dúvida: como será o futuro do desenvolvedor?

Bem, minha bola de cristal dá “tela azul” toda vez que tento fazer previsões, mas podemos discutir alguns cenários que já estão claramente delineados.

Os desenvolvedores estão as voltas com uma verdadeira convergência tecnológica, na qual cloud computing, mobilidade, social business, Big Data e Internet of Things requerem novas habilidades para o desenvolvimento de aplicações inovadoras. As empresas esperam que sejam desenvolvidas novas aplicações para novos dispositivos, com a finalidade de resolver novos tipos de problemas.

O desafio das empresas e de seus desenvolvedores é de criar estas novas aplicações, ao mesmo tempo que devem manter as atuais funcionando sem interrupções. Em muitas organizações, isso significa manter programas Cobol e escrever aplicações PHP ou Ruby simultaneamente.

As aplicações que farão diferença em um mercado altamente competitivo criam grandes oportunidades, mas ao mesmo tempo, geram novos desafios. Desenvolver uma aplicação usando interfaces touch-screen, ou de reconhecimento de voz, que interaja com tecnologias de midia social, como Facebook ou Twitter, demandam habilidade, métodos e processos diferentes. Por exemplo, a computação social demanda habilidades sociológicas e antropológicas para criar novos processos que atendam à demanda das interações sociais que os usuários desejam. Não espero que os desenvolvedores estudem a fundo antropologia, mas as equipes de desenvolvimento deverão ter uma multidisciplinaridade de habilidades que trabalharão em conjunto. Assim, métodos e práticas de desenvolvimento colaborativo serão fundamentais para a criação destas novas aplicações.

Também é desafiadora a criação de aplicativos que interajam com tecnologias de Big Data, como o Hadoop e o MapReduce. Juntamente com mobilidade e social business, teremos aplicações socialytics (social business + business analytics) sendo acessadas por dispositivos móveis, como smartphones e tablets.

O Hadoop é um desafio à parte, pois é um conjunto de diversos projetos open source desenvolvidos para trabalhar com grandes volumes de dados, de forma paralela. Para termos uma ideia do Hadoop, pense que ele contém projetos como o Hadoop e MapReduce, que são um framework Java para processamento paralelo, HDFS, que é um sistema de arquivos distribuídos, Pig (linguagem de programação), Hive (linguagem similar ao SQL, chamado de HiveSQL), e diversos outros. Uma visita ao site mostra os diversos projetos associados ao Hadoop.

Cada projeto não se integra, necessariamente, com os demais e portanto é necessário um exaustivo trabalho de integração. Surgem, então, as distribuições Hadoop, que atuam mais ou menos de forma similar às distribuições Linux. Existem várias distribuições – cada uma com caracteristicas diferentes. Entre as mais conhecidas temos a Cloudera, a InfoSphere BigInsight da IBM (que usa GPFS ou General Parallel File System) como alternativa ao HDFS e DataStax, que usa Cassandra ao invés do HDFS. Portanto, muito estudo e trabalho pela frente!

O recente CES 2012 (Consumer Electronics Show) mostrou mais alguns futuros desafios para os desenvolvedores. As interfaces estão saindo rapidamente do tradicional contexto teclado+mouse para multitouch, voz, gestos, reconhecimento facial e até mesmo “eye tracking”. Já temos casos de sucesso: o Siri do iPhone 4S sinaliza que os usuarios começarão a interagir com seus dispositivos através de comandos de voz. A Samsung anunciou um conjunto de APIs abertas e um SDK (Software Development Kit) para desenvolvimento de aplicações para sua Smart TV. A empresa realizou recentemente uma competição para desenvolvedores criarem aplicativos para esta plataforma e coisas muito interessantes foram geradas. Vejam em aqui. A LG anunciou o Gesture Cam, que permite o controle da TV através de gestos; de forma similar ao Kinect do Xbox360. Provavelmente, em breve as diferenças entre PCs, TVs, smartphones e tablets serão apenas o tamanho da tela, uma vez que todos usarão as mesmas interfaces.

A Internet das Coisas (Internet of Things, ou IoT) também abre novas frentes. Estamos falando de coisas como eletrodomésticos, automóveis, ativos da empresas (edifícios inteligentes, por exemplo) e infraestrutura das cidades conectadas à Interrnet e interagindo entre si e com os aplicativos corporativos. Quando adicionamos inteligência (leia-se software) aos objetos e eles começam a interagir e a negociar entre si, isso nos abre inúmeras oportunidades de novos negócios. Claro que as empresas vão olhar esta possibilidade de obter vantagens competitivas com atenção. Um exemplo é a criação de uma logistica muito mais inteligente que a maioria das empresas tem hoje. Imaginem uma “self-controlled logistics”!

Bem, o que os executivos demandarão? Novos aplicativos que explorem a IoT e que, por sua vez, demandam novas habilidades dos desenvolvedores como EDA (event-driven architecture). Um texto basico sobre EDA pode ser encontrado na Wikipedia.

Claro, .NET e Java continuarão a dominar o cenário das linguagens usadas nas empresas, pelo menos no horizonte previsível. Mas começa a surgir espaço para novas linguagens, como Perl, Ruby ou PHP. Por brincadeira consultei algumas vagas de desenvolvedores para o Facebook e encontrei de maneira geral demandas por profissionais que conheçam Java e/ou C++ e tenham conhecimento de PHP, Perl ou Python, além, é claro, de Hadoop.

Este cenário leva a uma outra discussão: até que ponto os métodos ágeis de desenvolvimento substituirão ou complementarão os métodos de desenvolvimento mais tradicionais? Me parece que os métodos ágeis estarão mais próximos da velocidade de resposta que os negócios demandam dos desenvolvedores. Além disso, está claro que os desenvolvedores nunca terão todas as respostas para as inumeras demandas dos seus usuários. Aí é que entra o conceito das aplicações mashup. Os usuários passarão a também desenvolver pequenas aplicações em cima das APIs geradas pelos desenvolvedores. Veremos os desenvolvedores-cidadãos! E isso tende a se acelerar à medida que a geração digital se insere no mercado de trabalho. Eles entram nas empresas já com vários anos de prática na criação de apps para smartphones e tablets (são verdadeiros app entrepreneurs) e vão querer usar suas habilidades para desenvolver apps para interagirem com as aplicações corporativas.

Na minha opinião, as aplicações serão cada vez mais heterogêneas em tecnologias, misturando diversas linguagens no mesmo sistema. Além disso, novas funcionalidades deverão ser incorporadas de um dia para o outro. O SOA (service-oriented architecture) e os métodos SODA (service-oriented development of applications) são a resposta.

Por tudo que debatemos, nosso amigo ficou mais preocupado ainda… Por outro lado, enxergou que terá, como desenvolvedor, uma longa carreira pela frente!

Tags | , ,

10

abr
2012

Sem Comentários

Em Agile
Blog

Por Allison

Precisamos de uma metodologia mais ágil

Em 10, abr 2012 | Sem Comentários | Em Agile, Blog | Por Allison

Fonte: Fabio Camera/IMasters


Desde o princípio, em qualquer relação humana, o indivíduo organizado serve de exemplo, estimula e ensina ao indivíduo menos organizado. É assim com as crianças em relação aos adultos. É assim nas corporações quando inicia um novo funcionário inexperiente. Quem está aberto para crescer sempre busca aprender um método mais eficiente com alguém qualificado.

Dessa afirmação já se justifica a utilidade funcional de uma metodologia. De forma simplista, podemos traduzir metodologia como uma proposta particular de organização de métodos úteis e funcionais a mais de um indivíduo para uma determinada situação.

Nesse contexto, qualquer metodologia é perfeita. Se já funcionou para uma situação específica, depois foi documentada e agora pode ser utilizada por mais pessoas – é uma metodologia perfeita. É uma experiência similar ao princípio do método científico em sua finalidade.

Porém, muitas corporações, muitas equipes falham em atingir resultados satisfatórios com a utilização de uma metodologia. Onde está o problema? Nas pessoas? Na corporação? Na cultura? Muitas iniciativas frustradas têm uma explicação muito simples para o insucesso: quando não se tem a menor ideia daquilo que se está procurando, fica difícil encontrar.

Por que precisamos de um método ágil?

Recentemente, abordei esse assunto com um competente gestor de projetos que veio trabalhar em nossa empresa. Eu sabia que ele havia implantado na empresa anterior e eu precisava descobrir a motivação e os problemas para os quais ele buscava soluções.

Ele citou que o maior problema é que todos faziam a mesma coisa todos os dias, e o problema se tornava maior, ao invés de diminuir. Imagine uma rotina diária: cansativa – aquela ferramenta, aquela linguagem para o mesmo sistema, quase sempre entediante, certamente monótona pela ausência de oportunidades. O mesmo trabalho, as mesmas pessoas, e o que era antes uma vocação tornou-se somente um trabalho como outro qualquer.

Antes de tentar um método ágil, esse gestor acreditava que o problema estava no controle – ou melhor – na falta de controle. Com isso, aumentava a “pressão” por resultados no time, de vez em quando aumentava o time, frequentemente aumentava a quantidade de horas de trabalho diária, entretanto os resultados não se mostravam muito diferentes do que já eram.

Eu o questionei a respeito desta compreensão: se ele entendia que precisava fazer algo diferente, se esperava por resultados diferentes, por que havia resistência à proposta da metodologia ágil?

Resposta do gestor:

Nas iniciativas de implantação de Agile que presenciei ou das quais participei, a maior resistência era o medo de “perder o controle” sobre a qualidade do resultado do projeto. De alguma forma, alguns envolvidos acreditavam que o uso de metodologias ágeis resulta em um produto de baixa qualidade ou que não atende às expectativas.

Por fim, essa falsa crença foi justamente um dos motivadores para encarar o desafio na empresa que implantei. Ter a oportunidade de mostrar que o resultado seria justamente o oposto fazia o esforço mais compensador.

Ao analisar um ambiente que adotou uma metodologia ágil, após longos períodos de utilização de uma metodologia convencional, é possível observar diversos ganhos, dentre os quais destaco:

  • Maior produtividade: Entregar mais em menos tempo. Evitar desperdiçar o tempo com o que não é importante. Em ambientes mais engessados, perdemos muito tempo com um processo burocrático e por vezes ineficiente;
  • Entregas constantes: Proporcionar feedback de todos, dos clientes, dos usuários, dos contratantes e etc., com frequência;
  • Mais qualidade: Menor número de retrabalho e defeitos. Código com melhor “manutenibilidade” e escalabilidade;
  • Maior envolvimento do time: As reuniões diárias e as outras interações sugeridas pela metodologia ágil fizeram o time funcionar como time. Todos se conheciam, sabiam aonde podiam chegar.

Fazendo o mesmo comparativo com um ambiente que antes não seguia metodologia alguma, os ganhos também são expressivos: maior visibilidade, melhor comunicação e enorme incremento de qualidade.

Dessa forma, encontrei a resposta para a minha intenção com esse gestor. Com essas informações, concluí que sem novidade de meios (ferramenta ou linguagem), somente ordenando de uma forma diferente o “como” você faz diariamente, somente utilizando uma técnica diversa ao seu cotidiano, possivelmente podemos alcançar um fim novo.

O hábito que o sujeito carrega dentro de si para o trabalho, com o tempo, torna-se o seu maior algoz, o seu maior limitante. Impede-o de verificar novas opções, alternativas diversas. Implantar mais controle para mudar os resultados é automatizar um ser humano. É como se transformássemos um desenvolvedor em um robô. E como se medíssemos um programador como um atleta, buscando fazer cada vez mais rápido a mesma coisa.

A proposta de uma metodologia deve melhorar a comunicação, a interação entre os partícipes, a sinergia entre expectativas e os resultados. Afinal, processos fabris no universo da informática não deveriam ser “uma linha de montagem” em que pessoas ficam isoladas em suas mesas e computadores conectadas à internet, e ao mesmo tempo desconectadas com o projeto.

Infelizmente, nossos desenvolvedores são formados à margem dessa proposta de comunicação e interação. Um desenvolvedor nunca é estimulado a ser comunicativo ou a trabalhar em equipe de verdade. Na escola superior de ciência da computação, recebe uma educação matemática robótica que o estimula a se tornar um introspectivo cientista lógico.

O que esperar de uma metodologia ágil?

Um critério, válido, que podemos utilizar para definir se uma metodologia nos ajuda ou nos atrapalha em nosso dia-a-dia é a visibilidade que os problemas alcançam. Se somente o time do trabalho sabe/soube dos problemas e para os clientes ficou imperceptível, certamente a metodologia usada está sendo funcional.

Outro critério é a versatilidade das técnicas. Se há baixa aderência com a cultura existente e não há espaço para adaptações, a imposição da disciplina rígida nos proporcionará resultados comportamentais indesejados, como a resistência a mudanças pelas pessoas. O segredo nesse ponto é nunca perder de vista a razão de ser do trabalho, da empresa e de sua cultura. A metodologia deve propor técnicas para incrementar isso, não trazer razões contrárias. Numa metodologia inflexível, com restrições em excesso, você para de pensar no que pode fazer para se preocupar com o que não pode fazer. Se há uma imposição de seguir tudo o que está em manuais para o seu projeto, muita coisa escapará do que está escrito e ninguém saberá o que fazer.

Mais um critério que considero muito válido é o da análise do resultado. Os métodos sugeridos pela proposta metodológica devem trazer uma compreensão real sobre a capacidade de realizar e a capacidade de coordenar um grupo a um único escopo. É conduzir um projeto através de técnicas que não permitam dúvidas sobre o valor, o mérito e a expectativa de sucesso. No fim, sucesso é uma convenção social do grupo que definiu o escopo. O que é inicialmente pensado como sucesso para o time pode não ser sucesso para os contratantes ou para os clientes. A metodologia ágil ensina técnicas para se obter o critério de sucesso de um projeto.

Para não alongar demais com sugestões de critérios, concluindo de forma mais generalista, entretanto muito completa, podemos nos utilizar dos valores do Manifesto Ágil. Ele foi escrito por Kent Beck, James Grenning, Robert C. Martin, Mike Beedle, Jim Highsmith, Steve Mellor, Arie Van Bennekun, Andrew Hunt, Ken Schwaber, Alistair Cockburn, Ron Jeffries, Jeff Sutherland, Ward Cunninghan, John Kern, Dave Thomas, Martin Fowler e Brian Marick

O Manifesto Agil contém quatro valores fundamentais:

  • Os indivíduos e as suas interações acima de procedimentos e ferramentas;
  • O funcionamento do software acima de documentação abrangente;
  • A colaboração dos clientes acima da negociação de contratos;
  • A capacidade de resposta a mudanças acima de um plano pré-estabelecido.

Referência Bibliográfica:

  • MENEGHETTI, A. A Psicologia do Líder. 4ª. Edição. Recanto Maestro, RS: Ontopsicologica Editrice, 2008.
  • MENEGHETTI, A. Sistema e Personalidade. 3ª. Edição. Recanto Maestro, RS: Ontopsicologica Editrice, 2004
  • HEWARD, L. Cirque Du Soleil – A Reinvenção do Espetáculo. 8ª. Edição. São Paulo, SP: Elsevier Editora, 2006
  • ANDERSON, D. Agile Management for Software Engineering. 2ª. Edição. New York, NY: Prentice Hall Editora, 2004

Tags | , , ,

10

abr
2012

Sem Comentários

Em Blog
C#
Código

Por Allison

Microsoft abre código de ASP.NET Web API e ASP.NET Web Pages

Em 10, abr 2012 | Sem Comentários | Em Blog, C#, Código | Por Allison

Fonte: IMasters

Com informações de The H

A Microsoft abriu o código da ASP.NET Web API e da ASP.NET Web Pages sob a licença Apache 2.0. A Web API e a Web Pages, também conhecida como Razor, encontraram um novo lar na plataforma de hospedagem CodePlex da Microsoft.

Agora, desenvolvedores que não são da Microsoft podem contribuir com pacotes e com código nos utilitários de desenvolvimento web – entretanto, isso ainda será avaliado pelos desenvolvedores da Microsoft.

De acordo com Scott Guthrie, vice-presidente da divisão de desenvolvimento da Microsoft, a empresa tomou um caminho semelhante com o Windows Azure SDK e afirma ter sido uma experiência positiva. A iniciativa não muda o status das três ferramentas como sendo totalmente suportadas pelos projetos da Microsoft.

A ASP.NET Web API é um framework para escrever aplicações RESTful usando a plataforma .NET, que teve sua origem na Windows Communication Foundation. A Razor/ASP.NET Web Pages é uma linguagem de template baseada em C# que pode ser usada para combinar código de servidor com HTML para criar páginas geradas dinamicamente.

Tags | , , , , ,

27

mar
2012

Sem Comentários

Em Blog
SQL

Por Allison

SQL Server 2012: Grandes melhorias no T-SQL

Em 27, mar 2012 | Sem Comentários | Em Blog, SQL | Por Allison

Fonte: Jonathan Allen , traduzido por Mário Henrique/InfoQ

O dialeto SQL do SQL Server 2012, o Transact-SQL, vem com melhorias importantes, incluindo suporte para funções ANSI FIRST_VALUE e LAST_VALUE, paginação de resultados de alto nível usando FETCH e OFFSET e suporte a funções de parsing e de formatação do .NET.

Fetch e Offset

Atualmente, muitos desenvolvedores de SQL Server que desejam implementar paginação de resultados no lado do servidor precisam utilizar técnicas “imperativas” de programação, como carregar os resultados em uma tabela temporária, numerar as linhas e então selecionar o intervalo de interesse. Há também desenvolvedores que utilizam ROW NUMBER e OVER; outros utilizam cursores.

O SQL Server 2012 resolve essa limitação e permite mais consistência no uso, adicionando suporte declarativo para a paginação de resultados, através das novas opções OFFSET e FETCH NEXT do Transact-SQL. Mas note que atualmente não há otimização de performance; o SQL Server está fazendo a mesma coisa que os desenvolvedores fariam manualmente.

Clause Windowing

Às vezes, os desenvolvedores precisam escrever consultas que identificam diferenças entre linhas. Por exemplo, pode-se estar interessado na quantidade de tempo entre o timestamp de uma linha e outra. Isso é fácil de fazer utilizando cursores, mas o desempenho e elegância dessa solução deixam a desejar. É possível ainda utilizar uma subquery executada linha a linha, mas isso é extremamente custoso. Pode-se ainda implementar tudo no lado do cliente mas isso não funcionaria se o cliente for uma ferramenta de geração de relatórios, por exemplo.

No SQL Server 2012, agora é possível acessar diretamente a linha anterior utilizando a função LAG. O analisador de consultas SQL retém a linha anterior na memória, de forma que não há necessidade de uma subquery. Isso resulta em melhor desempenho. A função LAG aponta para a linha anterior, mas é possível utilizar um offset para ter acesso a linhas anteriores. A função LEAD é equivalente a LAG, mas trabalha com linhas posteriores à que está sendo lida. As funções LAG e LEAD, que são parte do padrão ANSI, eram um pedidas pelos desenvolvedores desde a implementação da sintaxe OVER no SQL Server 2005. As funções FIRST VALUE e LAST VALUE também estão disponíveis no SQL Server 2012.

Reflection

Anteriormente, para testar quais os resultados seriam retornados por stored procedures ou consultas SQL, utilizava-se o comando SET FMTONLY. Esse comando permitia aos desenvolvedores visualizar as colunas retornadas, sem a necessidade de executar uma consulta SQL. Mas a informação se limitava apenas às definições das colunas resultantes da execução da consulta.

Com a nova procedure sp describe first result set, os desenvolvedores podem obter informações detalhadas a respeito de quais resultados seriam retornados pela consulta. Essas informações incluem tipos de dados, tabelas ou colunas-fonte e outras informações importantes, também disponíveis nas telas de gerenciamento dinâmico, sys.dm exec describe first result e sys.dm exec describe first result set.

Código Defensivo

Tradicionalmente, os desenvolvedores ficam à mercê de seus colegas quando utilizam stored procedures. Sem garantias em relação ao que será retornado, falhas acidentais se tornam uma preocupação. O T-SQL não oferece formas de prevenir esses erros, mas é possível minimizá-los utilizando a opção RESULT SETS.

Quando usada, a opção RESULT SETS faz com que a procedure armazenada retorne uma estrutura específica de dados. Se os resultados da procedure forem diferentes do requisitado, a opção retorna um erro. Considerando que se trata de um erro em tempo de de execução, recomenda-se aos desenvolvedores que utilizarem essa opção se assegurem de que os erros sejam depurados antes do código ir para produção.

Tratamento de Erros

O T-SQL tem suporte para TRY-CATCH desde 2005, porém o suporte THROW não existia até agora. Sem argumentos, THROW funciona da mesma maneira que em C# ou VB. Isto é, THROW retorna uma exceção e mantém o log de informação capturada sobre o erro, o que é muito útil.

Quando utilizada com argumentos, THROW é similar à RAISERROR, exceto por não suportar números de erros em sys.messages e a severidade é sempre 16. Além disso, os erros não detectados por THROW sempre terminam a execução.

Parsing e Conversões

O T-SQL agora suporta a função PARSE que inclui a opção de especificar uma “culture”. Esta deve contar com suporte pelo framework .NET. Há também uma nova função TRY_CONVERT que, assim como TRY_PARSE, retorna null quando a conversão falha. Já a função FORMAT utiliza a formatação de strings do .NET. Apesar de mais lenta que as funções nativas como STR, é mais flexível.

Funções de Data e Hora

O processamento de data e hora no T-SQL recebeu melhorias. A função EOMONTH retorna o último dia do mês, dado importante para relatórios. As funções xxxFROMPARTS permitem construir valores de data/hora utilizando um conjunto de parâmetro em vez de apenas uma string. Há suporte para os tipos de dados Date, DateTime, DateTime2, DateTimeOffset, SmallDate e Time.

Outras funções

A função Choose do Access e Visual Basic agora está presente no T-SQL. Sob determinadas circunstâncias, pode ser utilizada como uma versão simplificada de CASE. Também está presente a função IIF.

A função CONCAT pode ser utilizada para concatenar strings. Além de tornar mais fácil a portabilidade de código de outras linguagens, essa função possui um tratamento de exceção diferente do operador +. Itzik Ben-Gan escreve:

O operador + de concatenação devolve NULL para inputs NULL. A função CONCAT converte inputs NULL em strings vazias antes da concatenação. Embora esta não seja uma boa solução, é possível fazer a mesma coisa utilizando a função COLAESCE, substituindo entradas NULL por strings vazias.

Tags | , , , ,

24

mar
2012

Sem Comentários

Em Blog

Por Allison

Versão 1.7.2 do jQuery é liberada

Em 24, mar 2012 | Sem Comentários | Em Blog | Por Allison

Fonte: IMasters

A equipe de desenvolvimento do jQuery liberou hoje a versão 1.7.2 da biblioteca JavaScript. Segundo os desenvolvedores, apenas uma pequena mudança foi realizada em relação ao release candidate.

O código do jQuery CDN já está disponível nos seguintes endereços:

Aqueles que estiverem usando jQuery Mobile devem utilizar o jQuery 1.7.2 apenas com o jQuery Mobile 1.1. Para versões anteriores da versão móvel da biblioteca, é recomendável ficar com jQuery core 1.7.1 ou anteriores.

Os desenvolvedores pedem que os usuários utilizem o bug tracker para reportar bugs.

Mais detalhes sobre o jQuery 1.7.2 estão disponíveis no anúncio de lançamento.

Tags | , ,

15

mar
2012

Sem Comentários

Em Blog
Python

Por Allison

Django divulga planos para migrar para Python 3

Em 15, mar 2012 | Sem Comentários | Em Blog, Python | Por Allison

Fonte: IMasters

Com informações de The H

Os desenvolvedores do Django publicaram planos sobre como eles migrarão seu framework baseado em Python para o Python 3. Vários usuários apontaram a falta de suporte para o Python 3 no Django como a razão para não migrarem para a nova versão da linguagem. Trabalhando com a equipe do Python, eles optaram por uma migração organizada, usando o Python 2.6 como ponto de partida.

Primeiramente, os desenvolvedores pretendem diminuir o uso de versões antigas 2.x do Python, até que a versão mínima do Python pelo Django seja a 2.6. Essa versão é a base da transição, já que foi desenvolvida para ser uma ponte para o Python 3, uma vez que muitas funcionalidades do mais novo Python foram portadas novamente para ela, que inclui ferramentas para dar suporte para a migração de código para o Python 3.

O ainda não lançado Django 1.4 não terá mais suporte para Python 2.4, e o Django 1.5, por sua vez, deixará de suportar o Python 2.5 mais para frente. Além disso, o Django 1.5 vai adicionar suporte experimental para o Python 3.x, principalmente a versão 3.3. Logo, o Django 1.5 será o início do processo de portar o código base do Django para o Python 3.

Detalhes sobre essa transição ainda não estão disponíveis, mas, segundo os desenvolvedores do Django, o Python 3 é o futuro da linguagem Python e, em apoio a isso, o Django continuará comprometido em alcançar a compatibilidade com o Python.

Tags | , , ,

16

fev
2012

Sem Comentários

Em Blog

Por Allison

Desenvolvedores, designers e gerentes de projeto

Em 16, fev 2012 | Sem Comentários | Em Blog | Por Allison

Fonte: Denis Ferrari/IMasters

Uma imagem vale mais do que mil palavras, segundo a sabedoria popular. A imagem “The War Between Developers, Designers and Project Managers” resume com maestria boa parte dos sentimentos que encontramos no mercado de desenvolvimento de software atualmente.

Apesar de entender o propósito da imagem (e rir também), como desenvolvedor, tenho uma impressão diferente do que foi apresentado no primeiro bloco de imagens. Acredito que os dois últimos lugares em que trabalhei me ajudaram a entender bem o papel do desenvolvedor, do designer e do gerente de projetos, papel que desempenhei por algum tempo.

Sobre designers

Aprendi muito sobre a atividade dos designers enquanto trabalhava na Vixtime, onde entregávamos basicamente projetos web nos quais software era o “meio” e não o fim. Nesse tipo de projeto, ter um software funcional e rápido é obrigação, mas ter um layout bonito é um grande diferencial. Muitos clientes batiam à nossa porta pedindo um projeto tão bonito quanto os do no nosso portfólio. Pessoas dão importância à estética de um projeto. Quanto mais cedo você entender isso, mais cedo vai poder tirar proveito dessa característica.

Além da parte estética, os designers avaliam toda a experiência que o usuário terá interagindo com o projeto, o que resulta, na maioria das vezes, em um projeto muito mais fácil e prático de ser utilizado. Acha que estou falando bobagem? Se você for na Apple Store, perceberá que vários aplicativos de uma determinada categoria têm basicamente as mesmas funcionalidades, porém, os aplicativos que foram projetados especificamente para usuários de iPhone têm maior aceitação, e por consequência um maior número de vendas.

Atualmente, não trabalho em projetos sem um designer. Tenho uma parceria forte com o Heberson Barbosa, que vem trabalhando em projetos comigo desde a época da Vixtime. Ter um profissional com essa expertise na equipe do seu projeto (mesmo que temporariamente) vale a pena.

Sobre gerentes de projeto

Acho que essa imagem explica bem o porquê de vários programadores que conheço almejarem o cargo de gerente de projetos.

A função (não o cargo) de gerente de projetos é bem complexa. Você tem que estar ligado em vários aspectos do projeto simultaneamente, se comunicar o tempo todo e deixar todos os envolvidos cientes do cenário atual, além de muitas vezes ter que fazer tudo isso com vários projetos correndo ao mesmo tempo.

Nas vezes em que desempenhei esse papel, procurei fazer o que acredito ser a missão de todo bom gerente: deixei a equipe trabalhar e fazer o seu melhor onerando o mínimo possível sua rotina de trabalho com burocracias. Tive sorte de trabalhar com equipes competentes e responsáveis.

Tive também a sorte de ter bons gerentes de projeto, salvo uma única exceção. Depois que você sente na pele a responsabilidade de um grande orçamento, você aprende a dar valor a esse tipo de profissional. Os melhores gerentes de projeto são menos gerentes e mais líderes, ainda assim, alguns modelos de liderança são levemente desagradáveis.

Sobre desenvolvedores

Como desenvolvedor, não me vejo como um cientista, mas entendo que a imagem queira representar o ego de muitos desenvolvedores que, por serem mais experientes, se sentem dessa forma. Conhece algum desenvolvedor com ego inflado? Então.

Desenvolvedores tocam o projeto, o fazem funcionar, mas não são capazes (na maioria dos casos) de cuidar de todos os seus aspectos, como design, usabilidade e gerência. O desenvolvedor é uma parte importante (mas ainda assim apenas uma parte) do tripé que sustenta o projeto. Adoro ser desenvolvedor, mas entendo que sozinho sou apenas parte do que um projeto precisa para ter sucesso.

Resumindo

Existem muitas falhas de comunicação na relação entre desenvolvedores, designers e gerentes de projeto. Muitas vezes, uma função é estereotipada por causa de um mal profissional com o qual esbarramos na nossa carreira. Enfim, acredito que se manter em perspectiva e procurar sempre visualizar o cenário como um todo é uma boa forma de realmente entender o meio em que estamos inseridos e as pessoas que o formam.

Tags | , ,

14

fev
2012

Sem Comentários

Em Blog

Por Allison

Testando as extensões do Chrome para desenvolvedores

Em 14, fev 2012 | Sem Comentários | Em Blog | Por Allison

Fonte: Fernando Henrique/IMasters


O Mozilla Firefox sempre foi o meu browser favorito devido a suas inúmeras extensões que me auxiliavam diariamente. Mas quem o usa sabe que, na verdade, ele é um comedor de memória RAM e, ultimamente, ele anda travando mais do que gostaríamos.

Pensando nisso e observando como o Google Chrome tem crescido nas estatísticas de acesso do Google Analytics dos sites que administro, resolvi colocá-lo à prova no meu cenário.

Me surpreendi muito ao acessar a galeria de extensões para desenvolvimento web e ver o grande número de ferramentas que estavam disponíveis. Com isso, seguem as extensões, que, ao meu ver, são mais úteis e interessantes para o meu dia a dia

  • 960 Grid System Overlay (Unofficial): É uma ferramenta não oficial para os usuários do sistema de Grid 960 GS. Com ela, você pode visualizar as colunas do site e ver se não ficou nada fora do planejado.
  • Awesome Screenshot – Capture & Annotate: Muito útil para fazer um screenshot, que pode ser feito de três maneiras: uma seleção da página, apenas a área visível do seu browser, ou a página inteira. Ele permite, ainda, que você faça pequenas modificações na imagem, como esmaecer alguma área, sinalizar algum lugar que queira dar destaque e até mesmo fazer algum recorte extra. Após editar a imagem, você pode salvá-la em seu computador ou deixa-la online.
  • Color Pick: Ferramenta usada para capturar alguma cor que está na tela. Com dois cliques, você consegue recuperar uma cor sem precisar abrir programas de edição de imagem.
  • IE Tab Classic: Sim, ainda existem sites que só abrem no Internet Explorer (principalmente os de bancos). Difícil de acreditar, mas é a mais pura verdade. Com essa ferramenta, você “pula” de um navegador para outro em um clique; sem precisar perder tempo abrindo o IE. Ela também é útil para fazer testes rápidos no IE, mas para essa função eu aconselho uma ferramenta separada, chamada IE Tester. Ela é gratuita e tem sido muito útil para mim.
  • ImagePropertiesContextMenu: Se você precisa conseguir informações, como tamanho, dimensão, ou URL de uma imagem, esta ferramenta irá lhe ajudar muito. Com um clique do botão direito do mouse em cima da imagem, você verá a opção de inspeção completa.
  • IP Addressand Domain Information: Com esta ferramenta, você consegue inspecionar o domínio que está visitando e obter informações, como IP, GeoLocalização (nem sempre muito precisa), whois, e até outros sites que possam estar hospedados no mesmo ip.
  • Mobile Resizer: Ferramenta simples, mas útil para conferir se o seu site se “encaixa” em algum dispositivo mobile. Ela basicamente redimensiona o navegador para o tamanho de tela do aparelho selecionado, entre eles temos modelos da Apple, Android e Blackberry.
  • Mozbar: Toolbar do site SEOmoz para conseguir algumas informações e métricas de SEO (Page Authority, Page Rank) da página e dos domínio visitados. Ela permite, também, conseguir informações sobre o servidor, como IP e país. Além disso, é bastante útil para fazer análise de metatags e busca de links e palavras-chave dentro do site. Existe uma versão paga, que possui mais funcionalidades.
  • Palette for Chrome: Que tal construir uma paleta de cores baseada em uma imagem em apenas alguns segundos? Com esta ferramenta, é fácil. Como não tenho muita afinidade com design e às vezes preciso desempenhar esse papel, essa ferramenta e o colorotate são minhas aliadas para algumas “gambiarras visuais”.
  • PerfectPixelbyWellDoneCode: Há certos clientes e designers que conseguem reparar no mínimo pixel fora do lugar, comparando com o layout. Esta ferramenta é para você evitar que isso aconteça. Com ela, é possível criar uma “layer” transparente, com o layout em cima do HTML. Assim, é possível fazer a comparação entre como o site está e como deve ficar.
  • ruul. Screenruler: Depois de descobrir que há algo fora do lugar, com ajuda da ferramenta anterior, que tal usar uma régua digital para medir quantos pixels será preciso mexer para que tudo fique em ordem? Ela também possui algumas medidas extras, como espessura de bordas, altura de linha e tamanho de fonte. Podem ser usadas quantas réguas for preciso em uma única página.
  • Tape: Algumas vezes, uma simples régua não ajuda a resolver os problemas de medidas em um layout e são necessárias outras ferramentas, como um grid e linhas de marcação. Para esses casos, esta ferramenta é a mais indicada. É um pouco difícil de se acostumar com ela no início, mas depois que se pega o jeito, ela vira uma ferramenta indispensável.
  • Web Developer: Esta extensão deve ser a preferida de nove entre dez desenvolvedores web. Ela é uma mão na roda para o uso diário e contínuo. As principais funções são a de manipulação de CSS, forms e imagens, redimensionar o tamanho da tela, validação de CSS e HTML, além de possuir ferramentas, como seletor de cores e uma régua.
  • YSlow: Ferramenta de análise das páginas web, para descobrir informações como a velocidade de carregamento, além de fornecer dicas de como melhorar a estrutura da página para que seja carregada mais rápido.
  • Firebug Lite for Google Chrome™: Outra ferramenta indispensável. Serve para análise e modificações em tempo real do HTML, JavaScript e CSS do site (essas alterações só duram até a página ser recarregada), além de fornecer um console de erros e monitoramento de JavaScript e uma inspeção do DOM da página.

Ferramenta do desenvolvedor

O Chrome ainda possui uma ferramenta bem semelhante ao Firebug, mas na minha opinião é um pouco inferior. É a “ferramenta do desenvolvedor”, que pode ser habilitada pelo menu Configurações (aquela chave de boca que fica no canto superior direito do navegador), Ferramentas, Ferramentas do desenvolvedor ou pelo atalho Ctrl + Shift + I.

Espero ter ajudado você a optar pelo Chrome no seu ambiente de desenvolvimento. Mas, apesar do crescimento do uso desse browser, lembre-se sempre de testá-lo em vários outros navegadores e sistemas operacionais, isso ajuda muito a não correr o risco de ir apresentar seu trabalho para o cliente e ocorrer algum problema de visualização.

Tags | , , ,

24

nov
2011

Sem Comentários

Em Blog

Por Allison

Desenvolvedores do GNOME criam o Boxes, uma nova integração para virtualização

Em 24, nov 2011 | Sem Comentários | Em Blog | Por Allison

Com o aumento do uso de máquinas virtuais e de conexões remotas, os desenvolvedores do GNOME estão trabalhando em uma nova integração para o ambiente desktop. Chamada de Boxes, a novidade oferece um único ambiente para criar executar espaços virtuais que podem vir de imagens locais, máquinas virtuais remotas ou sessões remotas do protocolo SPICE.

Os desenvolvedores vêm trabalhando em uma implementação baseada na linguagem de programação Vala, e melhorando as bibliotecas de fundação libvirt e spice-gtk, que são escritas em C. Eles anunciaram o primeiro release e já demonstraram as capacidades do aplicativo.

O desenvolvedor Zeeshan Ali Khattak explicou que, embora os desenvolvedores já utilizem o virt-manager e já tenham sanado as necessidades em nível empresarial de um administrador de sistema, havia a necessidade de uma virtualização e de uma aplicação de conexão remota para o usuário final. E essa necessidade é atendida com o Boxes.

O projeto ainda está em estágios iniciais e, por isso, há vários problemas, sendo o maior deles a falta de suporte para disquetes, quando a virtualização é feita no Qemu. Entretanto, com a nova interface de usuário, os usuários já são capazes de criar e de executar máquinas virtuais ou conexões de sistemas remotos sem esforço.

Para quem quiser contribuir com o projeto, os desenvolvedores estão procurando ajuda para trabalhar na interface de usuário e para aprimorar as bibliotecas libosinfo e libvirt-glib, nas quais o projeto é baseado.

Fonte: IMasters

Tags | , , , ,

23

nov
2011

Sem Comentários

Em Blog
Open Source
PHP

Por Allison

PHPSP incentiva desenvolvedores a contribuírem com open source

Em 23, nov 2011 | Sem Comentários | Em Blog, Open Source, PHP | Por Allison

O PHPSP, Grupo de Desenvolvedores PHP de São Paulo, quer aumentar a contribuição de desenvolvedores com projetos open source em PHP. Para isso, a organização criou o “Sou PHPSP”, que tem como objetivo atacar algumas “desculpas” de desenvolvedores que não contribuem e incentivar novos contribuidores.

Para os desenvolvedores que justificam não contribuir com “Não sei como, ou por onde começar” e “Não sou bom o bastante”, o grupo reuniu uma lista de projetos parceiros e material sobre como contribuir e quais contribuições são bem-vindas, além de disponibilizar responsáveis dentro do projeto para tirar dúvidas e afins.Também serão realizados eventos no modelo Hackathons, levando contribuidores “veteranos” para ajudar iniciantes a fazer o seu primeiro patch.

Além disso, o PHPSP vai premiar aqueles que decidirem ajudar o open source. Cada contribuição feita a um projeto pode ser cadastrada no sistema “#SouPHPSP” e ela representará uma chance de concorrer a diversos prêmios oferecidos pelos parceiros do PHPSP. Entre os prêmios estão Xbox, iPad, hospedagem, cursos, livros e camisas. Em breve, a organização iniciará uma segunda etapa da iniciativa com desafios-relâmpago.

Os interessados em contribuir precisam acessar o site http://sou.phpsp.org.br. Em seguida, basta escolher um projeto ou sugerir um novo, fazer a contribuição e cadastrá-la no sistema. São válidas quaisquer contribuições em projetos relacionados ao PHP.

Fonte: IMaster

Tags | , ,