Ouvi de um engenheiro que trabalha com HPC que um muitas aplicações os processadores de 6-cores tem contenção de performance no acesso à memória.
Nada como um sistema paralelo para transformar um problema limitado por processamento em um problema limitado por bandwidth.
Thursday, June 24, 2010
Thursday, January 15, 2009
Copy and paste no Emacs
Para que o copy-and-paste do emacs se comporte como todo mundo espera que ele se comporte, adicione a seguinte linha no arquivo .emacs:
Origem: http://www.emacswiki.org/cgi-bin/wiki/CopyAndPaste
(setq x-select-enable-clipboard t)
(setq interprogram-paste-function 'x-cut-buffer-or-selection-value)
Origem: http://www.emacswiki.org/cgi-bin/wiki/CopyAndPaste
Sunday, January 11, 2009
Dicas para programar em java
- Crie o um projeto do Eclipse.
- Configure o classpath utilizando user libraries, assim você pode aproveitar a configuração de uma library em mais de um projeto.
- Para gerar programas CLI, export o projeto como ANT file, o eclipse irá configurar o classpath para você, além de gerar as tarefas para compilação e execução das classes que você executou alguma vez como Java Application
- Para log utilize a Simple Log Facade for Java (http://www.slf4j.org/) com o logback (http://logback.qos.ch/).
Wednesday, December 31, 2008
Perigos de cada linguagem
Cada linguagem de programação induz um tipo de comportamento no programador, por exemplo perl induz à gambiarras, já java induz over-engineered e Lisp induz a reescrita de código (Porque usar X se eu posso reimplementar isso em Y dias).
Não que esses comportamentos sejam obrigatórios nessas linguagens, mas existe uma cultura e uma facilidade de se agir segundo o esteriótipo de cada linguagem. Por exemplo, o perl permite programação OOP, mas não é fácil nem tão pouco elegante e esse é um motivo para que a maioria dos programadores em perl não use OOP. Porém o principal motivo é cultural, programadores em perl valorizam resolver o problema rapidamente, mesmo que para isso tenham que fazer um copy-and-paste do código, já programadores em Java criam soluções genéricas e complexas que precisam de 3 arquivos XML para serem configuradas porque eles ficariam com vergonha do código se fizessem de outra maneira.
Por isso é importante dominar mais de uma linguagem, para poder saber quando é necessário programar em Java como se fosse perl ou Lisp. Dizem que um programador em Fortran pode programar Fortran em qualquer linguagem, um bom programador também pode programar em Fortran em qualquer linguagem, a diferença é que ele sabe quando fazer isso.
Não que esses comportamentos sejam obrigatórios nessas linguagens, mas existe uma cultura e uma facilidade de se agir segundo o esteriótipo de cada linguagem. Por exemplo, o perl permite programação OOP, mas não é fácil nem tão pouco elegante e esse é um motivo para que a maioria dos programadores em perl não use OOP. Porém o principal motivo é cultural, programadores em perl valorizam resolver o problema rapidamente, mesmo que para isso tenham que fazer um copy-and-paste do código, já programadores em Java criam soluções genéricas e complexas que precisam de 3 arquivos XML para serem configuradas porque eles ficariam com vergonha do código se fizessem de outra maneira.
Por isso é importante dominar mais de uma linguagem, para poder saber quando é necessário programar em Java como se fosse perl ou Lisp. Dizem que um programador em Fortran pode programar Fortran em qualquer linguagem, um bom programador também pode programar em Fortran em qualquer linguagem, a diferença é que ele sabe quando fazer isso.
Tuesday, November 25, 2008
MySQL Anoyances
Descobri mais uma amolação do MySQL, o nome das tabelas é case sensitive. Até ai, nada de muito grave, muitas linguagens de programação são case sentives e as pessoas se habituam a utilizar convenções, porém, o MySQL só é case sensitive se o filesystem o for (lembrem-se que no MyISAM cada tabela é um arquivo), ou seja, o programa idiota passa para a o fopen o nome da tabela como o usuário digita no SQL.
Tive que implantar um sistema que foi desenvolvido em que uma tabela é referenciada com diferentes convencões de case em diferentes partes do sistema. Como o sistema provavelmente foi desenvolvido no windows, esse problema passou despercebido.
Por sorte o script que criava o banco não especificava o Engine a ser utilizado, por isso eu pude editar o my.cnf para que o InnoDB fosse o engine default, e neste caso a lower_case_table_names=1 faz com que o MySQL seja case insentitive [1].
Aproveitei para corrigir outra chateação, o MySQL vem configurado como latin1 (até ai tudo bem) e ordencão de palavras em Sueco (??????). Para um configuracão razoável é preciso adicionar as seguintes linhas no my.cnf:
character-set-server=utf8
collation-server=utf8_general_ci
[1] http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html
Tive que implantar um sistema que foi desenvolvido em que uma tabela é referenciada com diferentes convencões de case em diferentes partes do sistema. Como o sistema provavelmente foi desenvolvido no windows, esse problema passou despercebido.
Por sorte o script que criava o banco não especificava o Engine a ser utilizado, por isso eu pude editar o my.cnf para que o InnoDB fosse o engine default, e neste caso a lower_case_table_names=1 faz com que o MySQL seja case insentitive [1].
Aproveitei para corrigir outra chateação, o MySQL vem configurado como latin1 (até ai tudo bem) e ordencão de palavras em Sueco (??????). Para um configuracão razoável é preciso adicionar as seguintes linhas no my.cnf:
character-set-server=utf8
collation-server=utf8_general_ci
[1] http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html
Monday, November 10, 2008
Aprendendo ruby
O Akita passou hoje na minha mesa e me disse que publicou um micro tutorial pra iniciantes em ruby como eu. É um micro-tutorial-não-tão-micro em três partes.
Thursday, November 06, 2008
Subscribe to:
Posts (Atom)