Monthly Archive for janeiro, 2009

KDE 4.2

Desktop do KDE 4.2

Ao algum tempo foi lançado o novo KDE 4, anciosamente aguardado pelos usuários de KDE, que queriam utilizar as inovações sobre o desktop, e até mesmo por usuários de outros desktops.
Um novo modelo de efeitos, modo de uso, acessibilidades, inovações visuais e tal …
Mas quando foi lançado, eu mesmo acabei testando a versão final .. fiquei decepcionado !
Não funcionava legal, não consegui utilizar as coisas prometidas pelo kde team, muitos bugs… não me deixou contente.
Mas eu sei que isto acaba acontecendo com muitos softwares 1.0 ( que pode-se dizer que este kde é a versão 1.0 da 4 ! hehe ), então, o kde foi amadurecendo, foram corrigidos muitos bugs, alteradas algumas coisas no ambiente, e hoje, depois de algum tempo de testes e peciência, foi lançada a versão 4.2 do mesmo.
Me pareceu bem interessante, e acho que o kde, hoje, está muito legal, pelo menos o ss do desktop me passou esta impressão! Apesar de estar meio pesado, mas quando se tem uma boa placa de video, e uma memoriazinha a mais ( que convenhamos é muito barato ) vale a pena instalar uma distro que venha com o KDE ou instalar manualmente o 4.2.

Aqui tem as novidades da desta versão

Ainda não testei a 4.2, mas assim que voltar minha internet, gostaria muito de atualizar meu Arch com esta novidade.

Desenvolver… mas com quê ?

Sou programador, atualmente de Java EE, e gosto muito de desenvolver em java. Tanto Web quanto Swing.
Já programei Visual Basic, já me aventurei, de leve, no C/C++, Ruby (on Rails), Python, e até mesmo a antiga PL1 e Cobol….
Cada linguagem me levou a um estilo de programar diferente. Cada linguagem com suas caratrísticas, prós e contras…
Por exemplo:
VB: Programação visual, de janelas, orientado a eventos e somente Windows, cheio de DLLs para cá, ActiveX para lá, milhares de OCX.. etc…
PL1/Cobol: Programação estrutural, onde o programa começa e termina e deu. Você controla tudo o que deve ser feito, e da maneira como deve ser feito… deve ser bem escrito e formatado para que possa ser compilado.
C/C++: Nao preciso falar muito neh, bela linguagem de alto nivel, mas que pode nos levar à imensidão dos 0/1 da nossa maquina …
Ruby/Python: Linguagens mais novas, e de mais alto nivel, com muitos facilitadores para tudo, python ainda tem escopo definido por identação de código (Pode?). Pode ser feito muita coisa boa com elas também… São Orientadas a Objeto.
Java: Linguagem que nos dá segurança, está fortemente ativa no mercado de Web e é fraca para programação visual, tem muitos frameworks prontos, e acho ela bem flexivel, é Orientada a Objetos.

Mas diferenças entra linguagens não é o foco do post, mas sim como escolher com o que programar para resolver o meu problema.

Acho que cada um sabe do seu problema melhor do que ninguém. Por exemplo, no foco da web ( que é onde estou neste momento ): devo utilizar uma linguagem/framework que me dê mais agilidade mas que me deixe muito fixo em uma linha de programação, ou uma linguagem/framework que me deixe livre para criar da maneira que quero, mas porém isto vai custar um tempo…

Bom, o que eu gosto de fazer, é seguir alguns padrões de desenvolvimento, que sempre é muito bom, pois facilita o entendimento da infraestrutura do aplicativo, e depois do ponta-pé inicial, torna-se mais fácil a manutenção do software, justamente popr seguir um padrão. Gosto de utilizar frameworks, pois também seguem algum tipo de padrão, assim , procuro definir com que frameworks meu software será desenvolvido, antes mesmo de iniciar a produzí-lo, e traçar uma linha de raciocínio, desenvolvendo-a até criar uma gama de processos mais maduros.

Mas qual framework utilizar ?
Escolha o fm que lhe dê as features necessárias, sem degringolar demais seu aplicativo. Ou seja, um fm que não tenha milhões de coisas a mais do que você precisa, honerando assim o poder de processamente, nem um fm que tenha somente a metade das coisas ou que gere muito trabalho a mais para conseguir montar o processo que você necessita. Ou seja, você deve avaliar os vários fm que tem para cada tipo de software e para cada tipo de atividade, e ver qual mais se encaixa ajustadamente eu seu propósito. Lembre-se: A melhor ferramenta é aquela que faz o que você precisa !

Aqui cito alguns frameworks que conheço, tanto de ter trabalhado já ou só de ouvir falar pela internet, e aqui, estou falando somente os poucos que conheço para desenvolvimento web, mas existem milhares de fm para todos os fins.
PS: Caso queiram citar mais alguns, de qq linguagem, por favor, comemtem abaixo que completo o post…
Java:
Spring Framework – Framework Completo para uma aplicação Web e não Web. Todo modular.
Struts – Framwork MVC para web somente.
Ruby:
Ruby on Rails – Conhecidíssimo pela sua agilidade para desenvolver, e média curva de aprendizado.
Python
Django – Não sei se é somente um framework, acho que na realidade é mais do que isto, é todo um ambiente de desenvolvimento de execução que também gera muita agilidade.

Mas qual padrão seguir ?
Padrões de tracegp.com.br”target=”_blank”rel=”external”title=”Sistema executivo de governança e gestão de projetos” >projeto e de desenvolvimento são somente definições que nos ajudam a organizar melhor nosso projeto e nosso software ( neste caso ), sendo assim, se você for trabalhar com uma equipe média ou grande, e for desenvolver um software que vai ser necessário uma manutenção posterior, ou um contínuo desenvolvimento, é sempre bom seguir os padrões de dedsenvolvimento do mercado, onde temos muitos que são já bastante extressados e assim possuem uma maturidade importante em seus processos e definições. Agora, se você vai fazer um software pequeno, curto, com poucos pessoas ( você mais 2 ou 3 ) e que não tem tanta complexididade, talvez seja mais demorado aplicar todo um padrão de desenvolvimento de mercado emcima deste software, do que apenas definí-lo de uma forma clara, e desenvolve-lo assim que possivel, gerando assim mais produtividade.

Todas estas são opiniões pessoais.

The Balloon Priest

“Named in honor of Charles Darwin, the father of evolution, the Darwin Awards commemorate those who improve our gene pool by removing themselves from it.”

Nem preciso falar mais nada…

… and the Oscar goes to: The Balloon Priest !

Brazil .. tãnãnã… Brazil .. tãnãnã…

http://darwinawards.com/darwin/darwin2008-16.html

ORA-12519

ORA-12519 – TNS:listener could not find available handler with matching protocol

Quando está ocorrendo este erro, intermitentemente ao se conectar no Oracle, provalmente foi o número de PROCESSES/SESSIONS/TRANSACTIONS que estourou.
Para verificar se foi isto mesmo, você pode ver os limites do seu banco com o SQL abaixo:

select RESOURCE_NAME, CURRENT_UTILIZATION, MAX_UTILIZATION from v$resource_limit;

Caso sim, então altere seu banco , aumentando o nro de PROCESSES possíveis, lembrando sempre que o numero de SESSIONS e TRANSACTIONS são derivados de PROCESSES, desta forma:

Sessions = (1.1 * Processes)+5
Transactions = (1.1 * Sessions)

Veja na documentação da Oracle:
PROCESSES
SESSIONS
TRANSACTIONS

Para alterar faça o seguinte:
. conecte como sys
. ALTER SYSTEM SET PROCESSES=300 SCOPE=SPFILE;
. ALTER SYSTEM SET SESSIONS=335 SCOPE=SPFILE;
. ALTER SYSTEM SET TRANSACTIONS=369 SCOPE=SPFILE;
. reiniciar o banco
. Validar novamente se as alterações sustiram efeito com o SQL acima.

PS. 300 é um bom número para processos, que é o dobro do padrão. Mas caso necessário ainda mais, e se você tem bastante maquina disponivel, pode até colocar mais …

Carregar Arquivo JavsScript

Como, se tem utilizado muito esta historia de ajax, acho interessante não deixar todos os scripts JS carregados em nossa pagina quando a carregamos a primeira vez…

E se você nao quer ficar recarregando a pagina todas as vezes que precisa buscar um novo JS ou algum dado novo, pode se utilizar de uma tatica, um tanto interessante: carregar os arquivos JavaScript “on-demand”, ou seja, somente quando necessário.

Assim você pode muito bem repartir e organizar mais ainda suas funcoes JS e, deixar a pagina principal beeeemmm mais rapida para carregar, do que se estivesse com muitas tags scripts no inicio…

Segue, abaixo, uma funçãozinha JavaScript que montei juntando dados de scripts da internet.
A moral é que ela recebe o caminho de um arquivo JS para carregar na pagina, mas porém, retira a tag onde o mesmo JS já foi carregado anteriormente, assim não deixando ficar tags apontadoras para o mesmo arquivo repetidas, e não deixa ficar um monte de lixo desnecessário na pagina, o que pode ocasionar uma lentidão demasiada do browser…

function dhtmlLoadScript(url){
    var e = document.createElement("script"); //Cria o objeto para inserir na pagina..
    e.language = 'JavsScript';
    e.src = url;
    e.type="text/javascript";
    var hdEl = document.getElementsByTagName("head")[0];
    if (hdEl.childNodes.length > 1) { //Se tem filhos..
        for ( var i = 0; i -1 ){
                    hdEl.removeChild(ch);
                }
            }
        }
    }
    hdEl.appendChild(e);
}

Um exemplo completo segue no meu wiki…

Servidor JBoss local, ubuntu não acessa

Eu trabalho como desenvolvedor java, desenvolvendo aplicações web, e ontem, eu levei o note, com Ubuntu 8.10 atualizado de uma 8.04, a um estabelecimento onde existe uma rede wireless habilitada e funcionando. Até aí tudo bem, pois o ubuntu, logo depois de logado com meu usuário, me avisou que tinha duas redes wireless na área e tal… só que decidi que não era necessário estar conectado a este rede para o que eu iria fazer, então não conectei…
O que eu fiz foi subir meu servidor jboss, na porta 8080 padrão, para acessar o aplicativo que eu estava desenvolvendo, então me deparei com um problema do browser, aparentemente: ele estava acessando somente o cache do aplicativo, e não estava acessando o servidor que estava no ar, pois nada aparecia no log do JBoss.. puxa.. então comecei a fuçar para ver o que seria.. apertei CTRL+F5 umas tantas vezes, fechei a abri o ff várias vezes.. baixei e subi o jboss… olhei o /etc/hosts para ver se havia algo de errado que pudesse estar afetando o acesso.. e nada .. nadica de nada aconteceu diferente.. até que pensei, de repente vou conectar a esta rede disponivel.. pois dito e feito !
Conectei à rede wireless disponivel, e para minha surpresa: o browser começou a acessar, normalmente, meu servidor JBoss local …
Puxa.. será que o ubuntu se perdeu ? Não sei …
Vou postar o problema no Launchpad do Ubuntu e aguardar .. vamos ver o que ocorrerá !
Se você tiver alguma dica, por favor, comente abaixo …

Um abraço a todos…

Atualize seu navegador

Lendo a noticia do br-linux, resolvi entrar nesta campanha também.

Desenvolvedores ainda perdem muito em produtividade devido a navegadores desatualizados, sem suporte às funcionalidades e tecnologias atuais para alcançar seus clientes, limitando soluções e criando dores de cabeça desnecessárias.

Link: http://imasters.uol.com.br/crossbrowser


Atualize seu Navegador

web.xml – o que é ? o que tem ?

Estava eu pesquisando sobre alguns itens de configuração do arquivo web.xml, e achei um post bem interessante explicando resumidamente cada item existente neste arquivo. Resolvi postar o pedaço que importa aqui também. A fonte está logo abaixo …

A lista a seguir apresenta todos os elementos legais que são permitidos dentro do elemento web-app, na ordem padronizada:

  • icon – O elemento icon designa o local de um ou mais arquivos de imagem que uma ferramenta GUI ou IDE podem usar para representar a aplicação Web.
  • display-name – O elemento display-name fornece um nome que as ferramentas GUI podem usar para rotular a aplicação Web.
  • description – O elemento description apresenta um texto explicativo sobre a aplicação Web.
  • distributable – O elemento distributable fala ao sistema que é seguro distribuir a aplicação Web através de múltiplos servidores.
  • context-param – O elemento context-param declara parâmetros de inicialização para a aplicação.
  • filter – O elemento filter associa um nome com uma classe que implementa a interface javax.servlet.Filter.
  • filter-mapping – Após dar um nome para um filter, você o associa com um ou mais servlets ou páginas JSP por meio do elemento filter-mapping.
  • listener – O elemento listener designa a classe que capturará e tratará eventos. Adicionado na versão 2.3 da API de servlets. Os listeners são notificados quando a sessão ou o contexto do servlet é criado, modificado ou destruído.
  • servlet – Antes de atribuir os parâmetros de inicialização ou URLs personalizadas para os servlets ou páginas JSP, você deve primeiro dar um nome para o o servlet ou página JSP. Você usa o elemento servlet para este propósito.
  • servlet-mapping – Os servidores geralmente fornecem uma URL default para servlets: http://host/prefixoAplicacaoWeb/servlet/ServletName. Contudo, você geralmente pode alterar esta URL de forma que o servlte possa acessar parâmetros de inicialização ou tratar URLs relativas mais facilmente.
  • session-config – Se uma sessão não tiver sido acessada por um certo período de tempo, o servidor pode eliminá-la para economizar memória. Você pode explicitamente ajustar o timeout para objetos de sessão individuais usando o método setMaxInactiveInterval de HttpSession, ou você pode usar o elemento session-config para designar um timeout default.
  • mime-mapping – Se sua aplicação web tem arquivos incomuns que você quer garantir que serão atribuídos a certos tipos MIME, o elemento mime-mapping pode fornecer esta garantia.
  • welcome-file-list – O elemento welcome-file-list instruí o servidor qual arquivo usar quando o servidor receber URLs que referem-se a um nome de diretório mas não a um nome de arquivo.
  • error-page – O elemento error-page permite que você indique as páginas que serão exibidas quando certos códigos de status HTTp são retornados ou quando certos tipos de exceções são lançadas.
  • taglib – O elemento taglib atribuí aliases para os arquivos descritores de Tags. Esta capacidade permite que você altere o local dos arquivos TLD sem editar as páginas JSP que usam aqueles arquivos.
  • resource-env-ref – O elemento resource-env-ref declara um objeto administrado associado com um recurso.
  • resource-ref – O elemento resource-ref declara um recurso externo usado com uma fábrica de recursos.
  • security-constraint – O elemento security-constraint permite que você determine quais URLs devem ser protegidas. Ele trabalha em parceria com o elemento login-config.
  • login-config – Você ua o elemento login-config para especificar como o servidor deve autorizar usuários que tentam acessar as páginas protegidas. Trabalha em conjunto com o elemento security-constraint.
  • security-role – O elemento security-role dá uma lista de cargos de funções que aparecerão nos sub-elementos role-name do elemento security-role-ref dentro do elemento servlet. Declarar as funções separadamente poderia tornar mais fácil para IDEs avançadas manipularem informações de segurança.
  • env-entry – O elemento env-entry declara as entradas de ambiente da aplicação web.
  • ejb-ref – O elemento ejb-ref declara uma referência para a home de um enterprise bean.
  • ejb-local-ref – O elemento ejb-local-ref declara uma referência para a local home de um enterprise bean

Fonte: http://www.fundao.wiki.br/articles.asp?cod=188




Better Tag Cloud