Oportunidade

A LightComm está a procura de dois profissionais ColdFusion. O local de trabalho é no bairro do Campo Belo, em São Paulo – SP. O salário será de acordo com a experiência.

Interessador encaminhem currículo diretamente para wendell AT lightcomm.com.br


Dreamweaver 8.01 (updater) disponível

Corrige alguns bugs e melhora a performance no MacOS

http://www.macromedia.com/support/dreamweaver/downloads_updaters.html


No U2 for you!

E alguns minutos depois…

Isso porque a capacidade anunciada era de 10.000 visitantes simultâneos. O mais curioso, contudo, é que se são 73 mil ingressos para o show, e a primeira imagem mostra um limite de, ahãhn, 25.000 acessos simultâneos, quer dizer que os ingressos acabariam em poucos minutos, não?

Ora, contem outra…


Adobe Developer Community

Shantanu Narayen, Presidente da Adobe e COO fez uma apresentação em Breeze sobre o comprometimento da Adobe com a comunidade de desenvolvedores.

Assista o Breezo em http://adobe.breezecentral.com/drupdate0106/.


Frase do dia

“Segurança M&M: dura por fora, mas muito mole e fácil de mastigar por dentro!”
— Do Livro “A Arte de Enganar”, de Kevin Mitnick


Defaults

Recentemente tive a oportunidade de aprender um pouco mais sobre o que a Microsoft chama de Computação Confiável. Resumidamente, esse programa e filosofia visa obedecer os princípios básicos de segurança (Disponibilidade, Integridade e Confidencialidade), e para tal eles visam melhorias em quatro áreas, o chamado SD3+C:

  • Security by Design
  • Security by Default
  • Security by Deployment
  • Communications

Não vou discorrer sobre todos nesse momento, mas gostaria de compartilhar alguns pensamentos sobre os “defaults”. Nesse âmbito, a Microsoft pretente mudar as configurações padrões dos softwares de modo que, por padrão (ou seja: na instalação “next-next-finish” e sem nenhuma grau de parametrização), o software esteja o mais seguro possível, com o mínimo de serviços necessários atividos, possibilitando ao usuário habilita-los, passo-a-passo, explicando os níveis de segurança envolvidos em cada novo recurso ativo.

Parece uma daquelas: “Por que não pensei nisso antes?”, afinal, é um tanto quanto óbvio, não? Mas não é o que ocorre na maioria dos softwares por aí.

Os parâmetros default não estão presentes apenas na segurança, mas em todo o aspecto de um software. É frequente escutarmos coisas do tipo:

“Meu serviço x está ocupando 100Mb de RAM.”
“Ah, o meu está ocupando 500Mb! Que absurdo!”

ou…

“Se você instalou no Windows, ele estará rodando na porta 80, não na 8500!”

E depois ouvir reclamações sobre o software ou o mal gerenciamento de memória do sistema operacional. Em inúmeras vezes que escutei alguns dos diálogos acima, tinha certeza de que o software relacionado oferecia meios para configurar o recurso em questão, seja a memória ou a porta.

Desenvolvedores experientes, que têm mais confiança em seu trabalho e sua habilidade, podem freqüentemente achar e questionar por que o compilador está compilando errado, enquanto eles estavam digitando o código que fazia do modo certo. Bastam alguns minutos de revisão para ver que o compilador não está tão errado assim.

Ou justamente o contrário, desenvolvedores menos experientes ficarem contentes por suporem que acharam um bug no software. Afinal, “desse jeito não funciona. Então é um bug!!”, enquanto na verdade é um mal uso da ferramenta, da função de programação, ou algum parâmetro mal configurado.

Portanto, é importante conhecer o software e linguagem de programação que se está utilizando, seja através do hábito de ler APIs e documentações sobre o software e da humildade de poder estar errado, e o software agindo corretamente, de acordo com os parâmetros configurados. Infelizmente, nem sempre estes vêm de uma forma segura e funcional, muito menos oferecem meios simples e evidentes de configura-los (nada de arquivos em texto puro com nomes de variáveis que só os programadores daquele produto entendem), o que também nos lembra de também construirmos nossos softwares dessa maneira, facilitando a parametrização e configurando-o da melhor maneira possível para um “default”.


ColdFusion 8: codinome Mystic

A nova versão do ColdFusion server, anteriormente chamada de “Scorpio” agora tem um novo codinome: “Mystic”. Com a mudança (motivada pela introdução de várias novas funcionalidades – algumas como incorporação do produto Adobe LiveCycle e outras ainda em segredo), espero que a Macromedia mude também o esquema do programa beta, que sempre foi muito restrito no passado, para algo mais aberto, nos mesmos moldes do que vêm sido feito com os produtos da linha Flex e Flash.

[via Damon Cooper]


Frase do dia

“Memória RAM é mais barata que bons programadores”…

Especialmente válido para servidores de empresas que costumam culpar o ColdFusion por ter “baixa performance” e consumir todos os recursos disponíveis.


Sonho de consumo

Sony Reader.

Mal posso esperar começar a ser vendido. Eu sempre quis algo assim e agora será comercializado de forma ampla.


Quebra de linha no Flex

As quebras de linhas em aplicações em Flex são tratadas de dois modos distintos. Um é a quebra de linha em códigos ActionScript, já conhecidas do pessoal que trabalhava com Flash, utilizando um n para criar as quebras de linha (tal como em outras linguagens de programação).

<mx:Script>
<![CDATA[
function setDataToolTip(date1:String, date2:String):Void {
  cbDatas.toolTip = date1 + 'n' + date2;
}
]]>
</mx:Script>

O newline também pode ser utilizada para gerar quebras de linha, contudo, ao passo que o n é interpretado como um “texto” (escaped character; note as aspas no exemplo acima), o newline é como uma variável.

cbDatas.toolTip = date1 + newline + date2;

O segundo modo é quando estamos em uma tag do Flex. Ora, uma tag em Flex, e mais do que isso, um arquivo MXML nada mais é do que um arquivo XML, e portanto, os padrões podem e devem ser seguidos. Qual é o caractere de carriage return e como ele é representado em documentos HTML, XML e afins? &#13;

<mx:Link label="link com&#13;duas linhas" />

Adicionalmente, a variável newline também pode ser utilizada em tags MXML, utilizando o recurso de binding:

<mx:Link label="link com{newline}duas linhas" />

Vale a pena também citar casos especiais, como o uso de tags HTML, e o famoso <br> para quebras de linhas, como no caso de dataTips em gráficos, em que é possível utilizar b, i e br. No exemplo abaixo, uma função a ser utilizada como dataTipFunction de um gráfico.

function formatDataTip(event:Object):String {
return '<b>' + event.hitData.item.valor1 + '</b> <br> <i>' + event.hitData.item.valor2 + '</i>';
}