Postagens populares

domingo, 12 de setembro de 2010

Open SSL e Certificados no Apache: autenticação mútua

O melhor guia que encontrei para autenticação mútua entre Apache e Cliente.

Contém um tutorial para gerar: CA, chaves, certificados e tudo que você precisa para um ambiente de desenvolvimento com certificados digitais para web:

http://www.cafesoft.com/products/cams/ps/docs30/admin/ConfiguringApache2ForSSLTLSMutualAuthentication.html



Isso aí!

sábado, 11 de setembro de 2010

Recriações de jogos dos anos 80!

http://www1.folha.uol.com.br/multimidia/videocasts/796802-pac-man-humano-usa-111-pessoas-para-recriar-jogo-classico.shtml

quarta-feira, 25 de agosto de 2010

Utilizando a mesma sessão do browser em Applets Java

Ao surgir a necessidade de auntenticar um e-token no navegador, utilizei o Java. Porém não imaginava como seria difícil manter a sessão do ususário através do plugin.

Pesquisei na documentação e outras fontes, mas estava difícil. Aparentemente se você faz uma chamada detro do Applet, utilizando a classe URLConnection, é uma chamada totalmente diferente.

Mas existe uma solução simples, e que pode evoluir até para algo mais elegante, mas me atenho ao básico que é minha necessidade no momento.

Ao chamar a tag (embed, object ou applet) passe como parametro o nome e o valor do cookie que controla sua sessão. Em PHP fica assim:
<param name="cookie_name" value="nome-do-cookie >
<param name="cookie_value" value="" >

Capture dentro do Applet o valor:
String cookie_name = getParameter('cookie_name');
String cookie_value = getParameter('cookie_value');

 E ao realizar a chamada para a url que deseja, passe o cookie:
URLConnection conn = new URLConnection(url);
conn.setRequestProperty('Cookie', cookie_name + "=" + cookie_value);

Pronto.

Existe uma maneira de pegar os sent headers, dentre eles os cookies enviados, automaticamente e em um laço, repassá-los adiante, mas como eu comentei antes, não foi minha necessidade algo tão elegante.


Keep it simple!

quinta-feira, 5 de agosto de 2010

Dica: Remover o cache de applets da máquina virtual JAVA

Essa é para quem já se bateu muito (que nem eu hehe) - como remover o "maldito" cache de applets JAVA no navegador.

Existe um diretório que armazena o cache dos applets e não existe uma forma de remove-lo, a não ser manualmente.

Para fazer isto, procure por um diretório com um nome parecido:
/home/usuario/.java/deployment/cache

Dentro deste diretório "cache" ele cria o diretório 6.0 (meu JDK é a versão 6, imagino que na 7 ele criará 7.0 e assim por diante) e dentro deste, um diretório com nome numérico começando pelo 0 e daí para a frente para cada execução.

Após a limpeza, é necessário fechar o browser e abri-lo novamente, caso contrário ele não encontrará nenhuma classe de nenhum applet que você tentar carregar.

That's it.


Há!


P.S.: JAVA SUCKS!

quarta-feira, 21 de julho de 2010

Dica: como carregar helpers do Symfony além dos templates

Quem trabalha com Symfony pode aproveitar esta dica muito útil: carregar helpers em qualquer outro lugar além dos templates, como dentro de uma action por exemplo.

Para isso, digite:

sfLoader::loadHelpers(array ('HelperName1', 'HelperName2'));

Pronto!



Há!

sexta-feira, 16 de julho de 2010

Como criar um Certificate Store e assinar um JAR

Quande se trabalha com applets, tem-se alguns recursos limitados devido a segurança, entre eles, o acesso a arquivos do disco. Mas em alguns casos ou aplicações, você precisa deste acesso.

É possível ter este acesso, desde que você assine seu applet e o cliente declare que confia no emissor do certificado (uma janela do navegador se abre para tal).

Para criar o Certificate Store que é onde seu "certificado" vai estar. O correto é utilizar certificados digitais reais, mas para fins de desenvolvimento utiliza-se um próprio gerado no seu computador mesmo.

Os comandos são executáveis que vem com o JDK.


Gerando o Certificate Store

keytool -genkey -keyalg rsa -alias nome-do-cert-store

Ao digitar o comando acima, ele requisitará algumas informações como nome, nome da organização, etc. Digite todas as informações, incluindo a senha do Certificate Store.


Assinando o applet


jarsigner -storepass senha-do-cert-store-que-vc-digitou arquivo.jar nome-do-cert-store


Comentem!



Há!

quarta-feira, 7 de julho de 2010

Life in a Day

Mais um projeto colaborativo via internet, com o apoio do grande diretor Ridley Scott: http://www.youtube.com/lifeinaday

Filme o seu dia e poderá ter um trecho dele incluso.

Legal!

WITH CLAUSE

Lendo o manual do postgreSQL (8.4) descobri algo muito útil: a cláusula WITH.

Com ela você pode selecionar dados a partir de um outro select, algo como uma view "on the fly" ou uma tabela temporária, só se auto "destrói" após o uso. Já imaginei mil aplicações para isto, você consegue? Comentem...

Exemplo basicão:

WITH regional_sales AS (
        SELECT region, SUM(amount) AS total_sales
        FROM orders
        GROUP BY region
     ), top_regions AS (
        SELECT region
        FROM regional_sales
        WHERE total_sales > (SELECT SUM(total_sales)/10 FROM regional_sales)
     )
SELECT region,
       product,
       SUM(quantity) AS product_units,
       SUM(amount) AS product_sales
FROM orders
WHERE region IN (SELECT region FROM top_regions)
GROUP BY region, product;
 
 
Isto poderia ser escrito sem WITH, mas seria mais custoso pois precisaria de mais níveis de sub-selects.
Referência postgreSQL

sábado, 3 de julho de 2010

Foto publicada no Google Street View mostra criança em sua casa, SEM ROUPAS

Uma imagem publicada no Google Street View agitou as discussões em torno do serviço novamente: uma mãe achou a foto da sua rua no serviço, o único problema é que ele estava completamente nu.

Segundo ela, a empresa deveria se preocupar mais em verificar as fotos antes de publicá-las. Ela teme que um pedófilo possa achar a foto e algo possa acontecer. rs

Ela tem medo de pedófilo, mas deixa o filho correndo solto, nu, nos EUA, onde tá cheio de pedófilo e Serial Killer? Claro que o Google pode retirar a imagem, e existem ferramentas para reportar estas situações e assim sanar rapidamente, e o faz!

Por favor minha senhora!

Reclamar por reclamar, algumas pessoas perdem a noção...

Alguém aí acha que ela está certa? Eu não...

via geek.com.br

terça-feira, 22 de junho de 2010

Sony lança notebook com AMD

Depois de muito tempo, esta ninguém esperava: a Sony voltou a lançar um notebook com processador da AMD.

Os processadores são baseados no AMD Athlon II X2, contando ainda com drive Blu-ray, 4GB de RAM e HD de 320 ou 500. As telas poderão ser de 15 ou 17 respectivamente.

Inicialmente serão vendidos pela SmartBuy.

Desde 2005 a Sony não lançava um notebook com AMD.

Bem vinda de volta!

segunda-feira, 21 de junho de 2010

O poder da colaboração

O dono do site MP3Tunes, Michael Robertson, está sendo processado pela gravadora EMI com a alegação de que ele distribui MP3 da gravadora ilegalmente. Isto tudo porque no site dele, tem um mecanismo de busca que alega buscar músicas distribuídas "gratuitamente" pela gravadora.

Após o episódio, ele inseriu um botão para os usuários postarem links com músicas distribuídas pela EMI gratuitamente, que existem, mesmo eles alegando que não.

O que acontece é que estes dados serão adicionados ao processo, pois consta nos autos, que a EMI alegou categoricamente que não distribui arquivos gratuitamente on-line.

Esta será a primeira prova legal baseada em crowdsourcing (foram coletados 1.400 arquivos) e tudo graças as pessoas com um computador e disposição para ajudar.

Tomara que o tiro da EMI saia pela culatra, está na hora da indústria da música admitir a mudança e alterar seu modelo de negócio.

Isto mostra o poder da colaboração pela internet, muito maior do que podemos imaginar...

via techDirt.com

Há!

quarta-feira, 16 de junho de 2010

10 maneiras para resolver problemas com hardware no Linux

Ótimo artigo do site techrepublic.com sobre como resolver  problemas com hardware no Linux, algo que acontece com frequencia.

Apenas não concordei com uma coisa que o autor escreveu: o suporte "bleeding edge" que ele alega não exister, ao meu ver, não é tão precário assim, já que fabricantes como NVidia e ATI lançam sim drivers com suporte aos últimos lançamentos, assim como LexMark e Samsung na parte de impressoras.

A maioria dos fabricantes já pulou sim na "carruagem do Linux" e ela está a mil por hora!

Há!

quarta-feira, 9 de junho de 2010

10 programas no limbo tecnológico

Matéria da INFO sobre programas que antes eram indispensáveis em qualquer computador, agora são raros de encontrar. Quem conhecer todos é NERD level 20!

http://info.abril.com.br/noticias/blogs/geek-list/software/10-programas-no-limbo-tecnologico/

Novo algorítmo de índice do Google

A empresa Google anunciou ontem, terça feira, que finalizou o desenvolvimento do novo algoritmo de índice do buscador.

Mas o que isto influencia na sua vida? Tudo, afinal, google virou até verbo de tão presente em nossa vidas.

Um novo algoritmo de índice, significa mais chances de achar o que se quer, mais rápido e com mais precisão.

Segundo a engenheira Carrie Grimes, o algoritmo antigo trabalhava em camadas, e ao atualizar uma era necessário buscar toda a web novamente. O problema era que a lacuna de tempo entre o pedido e a atualização podiam acarretar em uma informação desatualizada (isto sem falar que o indice não espelha o que existe em tempo real). E muitas vezes é isto o que acontece.

No modelo novo, as camadas são atualizadas ao mesmo tempo e ligadas a um indice global.

O novo algoritmo é muito bem vindo, já que o grande problema dos Sistemas de Informação na atualidade é o que fazer com tanta informação disponível e como organizar e filtrar tudo que é útil, já que a internet está cheia de lixo!

Parabéns ao google, que, seja seu propósito nobre ou não, está sempre melhorando seus sistemas e a maneira como os vemos e utilizamos.

terça-feira, 8 de junho de 2010

Loja da Angel

Começarei aqui uma nova prática: indicar um sistema desenvolvido por minha empresa.

Um dos trabalhos mais legais que fizemos em minha humilde opinião é a loja da marca Angel.


Desenvolvida em framework PHP profissional, o site esbanja jQuery para criar efeitos DHTML e conta com a última tecnologia em programação web e segurança.

Confira e boa compra!

http://comprasegura.angel.com.br

sábado, 5 de junho de 2010

MimeType no Java: no pain!

Quando houve necessidade de verificar o MimeType de um arquivo no Java, pensei que seria tranquilo. Engano!

Muitas pessosa tem  dificuldade com isto, logo descobri ao pesquisar o assunto. Muitos utilizam bibliotecas de terceiros, para fazer algo, pensava eu, tão trivial. Bem, já devia saber, Java e Trivial são antonimos!

Bem, depende, na verdade é fácil, eu não sei se existe algum problema com a implementação (não sei porque até onde pesquisei, quase ninguém conhecia a solução desta maneira) ou se é por falta de informação do pessoal, mas é simples sim:

MimetypesFileTypeMap m = new MimetypesFileTypeMap();
String mimeType = m.getContentType(file);

onde file = instancia de java.io.File

É isto aí: para os mimes que utilizei até agora, ele detecta certinho.

Há!

Dica: Habilitar overlay do jQuery Block UI no Firefox

Dica rápida: para habilitar o overlay do jQuery Block UI, após incluir o script, atribua:

$.blockUI.defaults.applyPlatformOpacityRules = false;

E pronto!

Há!

sábado, 29 de maio de 2010

HTML 5 versus Flash e Apple SEM Flash?


Neste POST, parto do princípio de que o leitor já conhece um pouco do HTML5, se não conhece, google antes!

Bem, alguns imbecis (desculpe se estou sendo grosso, mas isso me deixa nervoso) estão espalhando e comentando pela internet que o HTML5 vai acabar com o Flash. Isso não é verdade, e se tem alguém falando, bem, é porque não entende bem do assunto.

O HTML5 antes de mais nada, é somente uma especificação. Esse pessoal precisa pegar um dicionário pois não deve entender bem isto.

O HTML5 é muito bem vindo, claro, e com certeza muito bom, não estou discutindo isto. Mas como Tecnologo em Sistemas para Internet, sei bem do que falo. Como uma especificação, o HTML5 é muito sujeito a interpretações, como bem conhecemos as diversas implementações de uma especificação pelos  browsers.

Tags como video ou audio, melhor suporte a SVG com certeza farão  DHTML reinar na web. Mas o Flash continua por aí. Recursos como tweening e o grandioso Action Script, não tem equivalente somente em HTML5.

Por mais que o Javascript tenha evoluído, muito do que é feito no AS não pode ser feito no Javascript, e mesmo que possa, cada browser implementa uma engine de Javascript.



Também não podemos esquecer do Flex, que é muito bom também, prático e proporciona soluções muito profissionais, com apenas uma dependencia: o "moribundo" plugin do Flash,  que, veja que coisa, hoje em dia é praticamente Universal, qualquer computador tem, muitos dispositivos embutidos ou smaptphones também o possuem.

Além disto, qualquer desenvolvedor web sabe bem como é problemático manter uma versão de um site ou sistema web crossbowser. Imagine uma animação vetorial? Já imagino todo tipo de loucuras, já que para um browser o posicionamento a partir de uma borda pode sair de um canto completamente diferente de outro e vice-versa. As vezes, até no próprio Flash é difícil.

Maravilha! (sarcasmo)

Neste mesmo assunto, a Apple não suporta o Flash no iPhone e no iPad.

Porque ignorar o trabalho já  feito por tantos desenvolvedores ao redor do mundo, a favor de uma ESPECIFICAÇÃO? Isto se este realmente for o motivo da Apple (sim, falo Apple porque a empresa não é só o Steve Jobs, e com certeza ele não tomou esta decisão sozinho, se participou dela) boicotar o Flash em seu smartphone, o que na minha opinião, é um tiro no próprio pé.

O fato é: o HTML5 é ainda imaturo (aí Pedro!) e o Flash vai estar por aí um bom tempo ainda.

Quem viver, verá!

Há!

quinta-feira, 27 de maio de 2010

Upload via FTP em um Applet Java

Em um projeto da empresa, foi necessário  implementar envio de arquivos via FTP, devido ao tamanho destes. A primeira coisa que surgiu foi: deve ser em JAVA.

Pesquisei as opções e o que teria que implementar, e me deparei com dois projetos muito bons:
  1. zUpload;
  2. jFtp


O zUpload é uma implementação em forma de Applet, muito genial, simples e que pode ser bem adaptada para sua necessidade, mas que functiona out-of-the-box se você tem urgencia.

O jFtp é a biblioteca que o próprio zUpload utiliza para manipular o FTP, que você pode utilizar para ter uma maior personalização.

Os dois são grandes projetos, e suprem a necessidade de enviar arquivos via FTP pela web totalmente.


Há!

terça-feira, 11 de maio de 2010

Java: ame ou ao menos finja

O Java realmente é tão bom como se diz?

Nunca tive muito contato com a linguagem, apesar de aprender a utilizá-la, até precisar implementar um sistema complexo e sem documentação: autenticação com e-token USB contendo um certificado digital.

Java é aclamado no mercado, mas acredito que isto vem da época que não existiam linguagens de programação multiplataforma, onde a máquina virtual do Java estava por todo lugar.

Mas Java é tão bom quanto se diz ou se espera?

Para mim e alguns outros colegas de profissão, não, a começar pelo aspecto que, para mim, é uma dos principais recursos dos programadores: Array!

Isso mesmo, tente criar um Array em Java (e compare com outra linguagem mais recente) para entender o que estou falando.

Como diz um amigo meu, o Pedro, Java é uma mer**, mas todo mundo diz que é bom porque é um inferno pra aprender e desenvolver, e depois que você passou todo aquele trabalho aprendendo e se acostumando, você não vai dizer para os outros que é ruim.

Claro que ele tem suas vantagens e pontos bons, mas no geral, existem coisas mais eficientes, a não ser que sua intenção seja aprender OO, aí o Java é tudo de bom, mesmo assim, vai gerar os trabalhos mais custosos e pesados (agora vão me atirar mil pedras, dizer que dá pra fazer tweak, mas veja bem, não é assim out-of-box).

Voltando ao Array, tente utilizar um índice que não existe no Java. Exception?!?

Você tem a execução do seu programa parada ou é obrigado a tratar uma exceção para uma coisa trivial como um índice não existente. Se você precisar calcular uma matriz tridimensional então...

Uma String nula não é considerada vazia, tudo bem, do ponto de vista filosófico, iremos concordar que é assim, mas para fins práticos, para testar se uma String é vazia existe um método chamado String.isEmpty(). Muito bom, pena que se ela for nula, é lançada uma exceção! Logo, para utilizar este método e testar se ela é vazia, eu preciso pelo menos atribuir vazio?! para ela. Hummm, que eficiente não? rs

O mercado também exige e valoriza bastante o Java, pelos mesmos motivos que citei acima. Não tem problema, já que só depende de nós mesmos mudar o mercado (não me venha com baboseiras de que é difícil) pois nós somos os profissionais e responsáves por escolher e adotar teconolgias ou não, incitar um cliente a desistir de algo que não lhe é realmente valioso tecnicamente.

Eu poderia falar muito, mas para encurtar, vou ter coragem de escrever o que ninguém teve a decência, ou coragem mesmo, de escrever: Java é uma mer**! Pronto, falei...


P.S.: Quando eu falo que Java é uma mer** é modo de falar pessoal!

P.S2.: Se alguém estiver imaginando, eu consegui sim implementar o e-token USB mesmo sem documentação e o Java sendo assim tão chato!

Há!

terça-feira, 23 de março de 2010

Dica: Função TRIM no Javascript

 Javascript é uma linguagem muito boa, com vários best practices e funções nativas muito boas.

Mas uma função muito útil não existe: a função TRIM (cortar espaços de uma String).

Para adicionar a função TRIM ao objeto String diretamente (e assim, utilizar o método como se fosse nativo) faça o seguinte:

String.prototype.trim = function() {
        return this.replace(/^\s+|\s+$/g, '');
      }

Assim, ela poderá ser chamada diretamente de qualquer objeto String, como no exemplo abaixo:

var s = '    teste ';
s.trim();

alert(s);

Resultado: 'teste'

Fácil!

quinta-feira, 18 de março de 2010

Dica: criar Array sem complicação no JAVA

Para criar um array com dados rapidamente no JAVA, faça a seguinte:

Object[] o = { obj1, obj2 };

No exemplo criei um Array de Objects mas mas poderia ser qualquer Array teoricamente, como:

String[] o = { "Teste", "Teste2" };

Fácil?

Há!

sábado, 13 de março de 2010

PHP SOAP: problema com o cache

A extensão SOAP do PHP para lidar com WebServices é muito boa, mas tem um grande problema: ao adicionar um novo método ou mudar sua assinatura causam um problema irritante: o SOAP client retorna uma exception informando que o método não existe!

Ao realizar uma chamada, pode -se passar como parâmetro uma opção chamada "wsdl_cache" e passar uma constante para dizer ao PHP como lidar com o cache do WebService. Até aí tudo bem, se esta opção funcionasse.

Não é o caso. Muita incomodação depois, a única alternativa encontrada foi mudar o nome da Action toda vez que uma assinatura era modificada ou um método adicionado.

O que você precisar fazer, é realizar uma chamada para ajustar a configuração do PHP em runtime ou no php.ini: ini_set('soap.wsdl_cache_enabled', '0');

Desta maneira o cache é definitivamente desabilitado, e você pode desenvolver tranquilamente.


Ufa!

quinta-feira, 11 de março de 2010

Web Services Complex Types com SOAP no PHP

Se você trabalha com Web Services e precisa saber como estão estruturados seu complex types, esta dica é extremamente útil.

Aponte o navegador para http://host-do-serviço:porta/action/task?xsd=1

No meu caso, eu tenho um Web Service rodando em localhost, na porta 8080 com a action clientes e a task processos: http://localhost:8080/clientes/processos?xsd=1

Isto retorna o esquema completo dos complex types.

Há!

terça-feira, 9 de março de 2010

Avatarize-se

Muito show, descubra como vc seria se fosse um Na'vi!

http://www.avatarizeyourself.com/

Na mesma linha do simpsonize, este aplicativo web é fantástico!

Parabéns para os produtores!

terça-feira, 2 de março de 2010

Adicionar ou remover Recursos do Windows 7 carregando em branco

Dias desses me deparei com um problema estranho no Windows 7: ao tentar "adicionar ou remover recursos do Windows" uma opção do "Painel de Controle" para adicionar componentes como o IIS e outros, a janela exibia a mensagem "carregando" e simplesmente ficava em branco.

hummm...

Pesquisando o origem do problema, encontrei o que parecia ser a causa: um serviço do windows não iniciava e exibia a seguinte mensagem - "O serviço não foi carregado por falta de recursos" - algo assim.

Falta de recursos?!? Um fresh install do Windows 7, em um notebook com 4 gb de RAM e o HD sem dados?

Pesquisando, alguns artigos do Microsoft Technet depois, descobri um camarada aí de fora que descobriu qual recurso faltava: o tamanho do registro do Windows!

rs

Se você teve este problema, faça o seguinte para ajustar:

No regedit, navegue até:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control

E altere o valor RegistrySizeLimit para 41ffffff

Reinicie o computador e pronto!

Há!

quinta-feira, 4 de fevereiro de 2010

Windows 7: para onde foi minha bateria?

Existe uma notícia correndo na internet (seria surfando? rsrs) de que um problema no gerenciamento de energia do Windows 7 - o novo sistema da Microsoft - que está acabando com a bateria dos notebooks de seu usuários.

Parece que alguns usuários notaram que suas baterias passaram a durar apenas 40 min. quando duravam em média 1h e 30 min.

Como o Windows é um sistema pago, o mínimo que a MS tem que fazer, em minha opinião, mesmo com suas clausulas leoninas de seu EULA, é ressarcir os usuários, já que se paga, e BEM, para o Windows gerenciar seu hardware.

Retirado do EULA - accesse aqui o EULA do Windows 7 Home Premium:

26. LIMITAÇÃO E EXCLUSÃO DE INDENIZAÇÕES. Você poderá pleitear da Microsoft e de seus
fornecedores apenas indenizações por danos diretos limitados ao valor pago por este
software. Não será possível recuperar quaisquer outros danos, inclusive danos
conseqüenciais, especiais, indiretos, incidentais ou por lucros cessantes.
Esta limitação se aplica a:
· toda e qualquer questão relacionada ao software, aos serviços ou ao conteúdo (inclusive código)
em sites ou programas de terceiros e
· reclamações por violação de contrato, violação de garantia ou condição, responsabilidade objetiva,
negligência ou outro ato ilícito extracontratual, de acordo com os termos da lei aplicável.
A limitação em questão também se aplicará caso:
· o reparo, a substituição ou o reembolso do software não constitua compensação plena por
quaisquer prejuízos ou
· a Microsoft souber ou tiver a obrigação de saber sobre a possibilidade das indenizações.
Alguns estados não permitem a isenção ou limitação de danos incidentais ou conseqüenciais.
Portanto, a limitação ou a isenção acima poderá não se aplicar a você. Essas isenções ou limitações
podem não ser aplicáveis no seu caso pelo fato de o seu país não permitir a isenção ou a limitação
de indenizações incidentais, conseqüenciais ou a outro título.


É esperar para ver, mas acredito que a MS DEVE pagar todos os seus usuários.

Ha!

Magazine Luiza