Postagens

Falha no serviço de consulta do IRPF 2012 (10/07/2012)

Imagem
Pessoal, não é nada grave, com uma ou duas tentativas a mais, a consulta ocorre sem maiores problemas. Mas não deixa de ser um bom exemplo, em especial para meus alunos de Banco de Dados (TADS/UFPR).  A aplicação de consulta deve estar limitada a 1000 usuários com acesso simultâneo ao banco de dados. E os servidores de aplicação devem estar utilizando cache local. Essa suposição se deve ao fato que a mensagem abaixo ocorreu duas vezes, a primeira com meu CPF, na segunda tentativa a consulta foi realizada. Repeti com o mesmo CPF para tentar pegar a mensagem... o erro não ocorreu, mudei de browser para evitar o efeito das sessões, o resultado foi bem sucedido. Apelei, realizei a busca com o CPF da minha esposa e ... bum, para minha sorte ocorreu de novo, afinal eu queria esse fato como exemplo para as aulas de tunning (risos). Mesmo assim, a suposição de cache pode estar errada, os sucessos e falhas  podem ter sido ocasionados pelo fator sorte (risos^2). Uma ...

Da indignação à revolta - Alberto Carlos Almeida

Na última semana, o socialista Alberto Carlos Almeida, publicou sua opinião na Revista Época, sob o título “A greve remunerada dos professores universitários”. Neste artigo o autor critica o atual modelo de greve, definido em leis, dos profissionais da Educação Superior no Brasil. O sociólogo abre o artigo com a frase: Você, leitor, provavelmente nunca teve o privilégio de parar de trabalhar e, mesmo assim, continuar recebendo o salário integral na data correta. É o que acontece agora com os professores das universidades federais. Desde 17 de maio, eles estão em greve. Pararam de dar aulas e continuam recebendo seus salários. Igualmente grave é sermos nós, contribuintes, que pagamos o salário de quem não trabalha. É um absurdo em cima de outro absurdo. O termo privilégio, segundo nossos dicionários, refere-se a alguma vantagem concedida a um ou mais pessoas, em detrimento de outros e contra a regra geral. O termo qualifica a sentença “parar de trabalhar e, mesmo assim, continuar...

Manipulação de Usuários no Moodle (via SQL)

Imagem
O conceito básico da organização do moodle é apresentado pela figura a seguir. Essa ideia tem uma grande desvantagem, principalmente para quem usar um banco de dados como o MySQL (MyISAM), que não possui integridade referencial... a base pode ficar com problemas de integridade nas relações. No meu caso, a situação foi observada, seguindo a seguinte trilha: select * from mdl_role; Onde se obtém os role_ids dos perfil desejados, no meu caso, Tutor/Professor (id=3) Para verificar quem tem uma regra específica, podemo verificar na tabela _role_assignments . Nessa tabela, temos a associação dos usuários com os contextos e com as regras +--------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+---------------------+------+-----+---------+----------------+ | id | bigint(10) unsigned | NO | PRI | NULL | auto_increment | | roleid | bigint(10) unsig...

Concorrência em Java

As últimas APIs de concorrência do Java tornaram o trabalho de gerenciar a execução das tarefas muito mais fácil, mas existem alguns cuidados a serem observados. Primeiro, evite utilizar Executor e utilize ExecutorService. O problema é que a primeira interface não possui o método shutdown... o programa simplesmente não irá terminar. Para criar os executores: private ExecutorService exec; // ... int numProc = Runtime.getRuntime().availableProcessors(); exec = Executors.newFixedThreadPool(numProc); A classe que irá permitir o gerenciamento das filas e da lista de jobs é a CompletionService. E apesar de não ser fundamental, eu tenho criado uma lista de pendências para acompanhar a execução dos diversos jobs, dessa forma: CompletionService cs = new ExecutorCompletionService(exec); List > pendencias = new ArrayList >(); E a criação dos task a serem executadas: for (Fasta f : contigs) { Result res = new Result(); ...

Curso de Escrita de Artigos Científicos

Em 2010, enquanto ainda cursava o mestrado, tive a oportunidade de fazer um curso de Escrita de Artigos com o Professor Valtencir Zucolotto. Como parte do material disponibilizado foi perdido por alguns colegas, estou relacionando aqui os links de sites de dicas deixadas durante o curso: General Concepts http://www.bartleby.com/141/ (The Elements of Style) http://www.wisc.edu/writing/Handbook/index.html http://grammar.uoregon.edu/toc.html Transitional words http://writing2.richmond.edu/writing/wweb/trans1.html Strong words http://www.cmu.edu/styleguide/peeves.html#w Commonly misused words http://www.ag.iastate.edu/aginfo/checklist.html http://www.edufind.com/english/writing/easily_confused_words.cfm Common Errors in English http://www.wsu.edu/~brians/errors/errors.html Se alguém tiver algum a mais e quiser indicar, comente abaixo.

Internacionalização de aplicação Swing (Java)

O processo de internacionalização é bastante simples, porém exige alguns cuidados. Os passos que tenho utilizado são: Criar um pacote resource abaixo do pacote base da aplicação swing. Criar os arquivos de mensagens, com o sufixo do locale desejado. Exemplo: Para o inglês americano: messages_en_US.properties, e o conteúdo: key=caption fileMenu=Files ou para o português brasileiro: messages_pt_BR.properties, e o respectivo conteúdo: key=rótulo fileMenu=Arquivos Aqui temos a primeira grande possibilidade de problemas, as chaves que realmente forem utilizadas na aplicação, precisam estar em todos os arquivos. Prefiro utilizar uma classe utilitária que criar um método em cada janela, dialogo ou panel que minha aplicação tiver, portanto: import java.util.Locale; import java.util.ResourceBundle; public final class MessageI18NUtil { public static ResourceBundle text = null; private MessageI18NUtil() { } public static void init() { Locale locale = Lo...

Java e XML

Frequentemente ocorre a necessidade de trabalhar com arquivos XML em Java, e sempre vem a dúvida de qual API utilizar... e sempre me ocorre o artigo do Osvaldo Pinali Doederlein, na edição 22 da JavaMagazine. O artigo é bastante interessante, mas a idéia aqui é simplesmente, lembrar qual API usar... então vou transcrever um quadro comparativo: Parser Tempo 1 Tempo 2 Tempo 3 Tempo 4 Tempo 5 Score StAX 2,294 1,579 1,596 1,528 1,573 1,00 SAX 5,008 3,063 2,645 2,611 2,495 1,59 JAXB 5,559 3,792 3,440 3,348 3,405 2,16 DOM 16,485 6,400 5,404 5,852 5,250 3,34 Digest 70,099 26,327 25,820 25,426 26,391 16,78 Beans 96,217 70,535 64,876 71,115 64,478 41,00 C# 1,906 1,906 1,906 1,890 1,906 1,21 O StAX é a melhor solução e a documentação pode ser vista aqui: http://download.oracle.com/javaee/5/tutorial/doc/bnbem.html