Author Archive
Mudar charset e quebra de linha recursivamente no Linux
by Handrus Nogueira on 15:50, under Dicas, Linux
A algum tempo atrás precisei passar uma aplicação web que utilizava quebras de linha no formato linux e charset iso-8859-1 (US-Latin) para UTF-8 com quebra de linha no formato windows. Na época codifiquei com a ajuda do chronos este script que agora compartilho:
#!/bin/sh
#change extensions filter as you need
find -type f | egrep "\.php|\.css|\.js|\.html|\.htm" | egrep -v "\.svn" > ./charset_list.txt;
while read -r line;do
#charset change
iconv -f LATIN1 -t UTF-8 "$line" > "${line}2";
mv "${line}2" "$line";
#we adopted dos format for line breaks
unix2dos "${line}";
done < ./charset_list.txt > ./charset_after.log 2>&1 #receive list of params and send output to log
Explicações: O script gera uma lista com todos os arquivos da pasta onde ele se encontra e suas subpastas subsequentes (conforme o filtro explicado na segunda linha do código).
Depois ele lê a lista e aplica as alterações num arquivo cópia. Move o arquivo sobre o anterior e depois altera as quebras de linha. Bastante simples, I LOVE BASH!
Compilando fácil com Debian/Ubuntu
by Handrus Nogueira on 18:28, under Debian/Ubuntu, Linux, Servidores
Como usuário do bom e velho gentoo, sempre senti falta da possibilidade de compilar softwares para ganhar uma certa performance. Principalmente em se tratando e softwares de uso em servidor, como Java, PHP, apache, mysql e porstgres. Nos meus testes sempre senti diferença entre as versões pré-compiladas e compilada in loco.
No Debian/Ubuntu a descoberta do apt-build me ajudou a contornar o problema com a mesma classe e quase a mesma eficiência que o portage.
Vamos ao passo-a-passo:
Para instalar o apt-build:
sudo apt-get install apt-build auto-apt
Configure para sua máquina:
dpkg-reconfigure apt-build
Escolha sua arquitetura de processador e o nível de otimização, o indicado é o médio.
As opções ficam salvas no arquivo /etc/apt/apt-build.conf ; Vamos apenas ajustar o número de processadores na ultima linha do arquivo altere-o para
make_options = " -j4"
onde o número é igual ao número de “cores” + 1. Portanto um quadcore seria “-j5″.
Para evitar que os pacotes compilados sejam atualizados pelos pacotes oficiais vamos editar o arquivo /etc/apt/preferences adicionando:
Package: *
Pin: release o=apt-build
Pin-Priority: 990
Não se esqueça de adicionar os repositórios de código fonte (deb-src) e pronto!
Agora ao invés do tradicional apt-get install
apt-build install
Exemplo: sudo apt-build install xchat emesene
Tutorial rápido sobre apt-build:
apt-build install –reinstall
apt-build upgrade Upgrade nos softwares instalados
apt-build world Recompila todo o sistema
apt-build remove programa Remove o programa
apt-build clean-build Remove pacotes compilados
apt-build clean-sources Remove os códigos fonte baixados.
Pensamento rápido – “ilike” SQL
by Handrus Nogueira on 12:18, under Dicas, Django, Multi Database, MySQL
Hoje vi um post num dos blogs que acompanho, onde um camarada disse ter conseguido 1000% de melhora na performance de uma aplicação trocando um:
SELECT * FROM TABLE WHERE fieldname ILIKE 'abc%';
Para
SELECT * FROM TABLE WHERE lower(fieldname) LIKE 'abc%';
(diferença de ilike para lower… like)
Eu achei tosco (hehehe), óbviamente que esse ganho absurdo só pode ter ocorrido numa massa gigantesca de dados e provavelmente num campo sem índice.
Mas a minha dica é outra:
Além do ganho em performance o “ilike” não é suportado no mysql e sqlite.Portanto seu uso é extremamente desaconselhável, principalmente se você estiver trabalhando com Django, Rails ou qualquer aplicação que forneça um layer multi-db.
Claro que nos frameworks citados acima o único jeito de fazer isso é forçar o uso de “ilike”, suas ORMs conseguem lidar com situações assim muito bem.
Conclusão
Evite “ilike” em queries de sql, use o “lower()… like” ou “upper… like”; E se lembre de mudar sua variável para upper/lower!
Escritório Portátil do Desenvolvedor Web
by Handrus Nogueira on 22:26, under Dicas, Django, Editores
Seguindo as “febres” de artigos que só listam coisas úteis aqui vai minha lista de softwares portables e com licença free (alguns freeware, outros open-source) para você levar na pen-drive ou disco externo e ser capaz de lidar com qualquer situação desde que tenha um windows à mão. O foco são desenvolvedores PHP e PyWeb.
1 – Browsers
Firefox 3.5, chrome, opera, avant browser. – Não faz sentido IE se você já está num windows certo? E ainda que você precise de outras versões lembre-se que estou falando de licenças free. A microsoft ainda não liberou nenhuma versão portable.
2 – Editores/IDEs
Aptana – apenas escolha zip file na opção ” download type”, Zend, Notepad++,
Gvim
Separei o Gvim por causa de alguns plugins.
Rails, PHP, CSS, CSS Color Preview, javascript, SQL, MySQL Runner e para os que gostam do estilo IDE, tentem o Proj
No caso do Gvim, considere ver o post do wombat modificado.
Também vem vindo aí um post meu sobre vim/gvim… fiquem de olho!
3 – Editores de Imagem
Gimp, Incscape, PickPick (screenshot e color picker).
4 – Escritório / Comunicação
Open-Office, Pidgin, aMsn, Thunderbird e lightning para thunderbird para os calendários e to-do.FoxitReader para abrir pdfs
5 – FTP / SSH
6 – Utilitários
7-zip, FreeFileSync,Font Matcher, WinMerge, InfraRecorder, Wink
7 – Servidores Web
PHP: Xampp,USB Web Server
– UPDATE: pra mim nenhum dos dois servidores para Django funcionaram, se você teve sucesso, poste uma mensagem contando como
Django: IntantDjango, DjangoStack
Comparação de Frameworks Javascript
by Handrus Nogueira on 03:20, under Dicas
Eu particularmente uso JQuery e muita gente sempre me procura para compara-la à ExtJS, MooTools, Prototype, YUI e Dojo. Como também faz tempo que estou devendo um post pro Chronosbox… aqui está!
- Velocidade
Vale lembrar que os resultados mudam de navegador para navegador, meu testes:Browser Dojo ExtJS JQuery Mootools MochiKit Prototype YUI Chrome 2.0 22 66 24 90 838 409 308 Firefox 3.0 190 306 209 231 5013 298 547 IE7 647 538 800 1099 120388.16666666665 2696 2102 Safari 4.0 9 85 14 65 1005 220 238 Opera 9.64 92 135 306 212 4092 200 441 - Compatibilidade
ExtJS é o único dos frameworks acima que não aparece aqui, no entanto ele foi feito para ser compatível com JQuery e YUI, ambos com nota A.No teste de seletores somente o MochiKit apresentou problemas com os seletores, ainda assim ele aparece com nota A.Ajax/DHTML Libraries DHTML-only Libraries THE GOOD GUYS (Grade A Toolkits) Dojo Toolkit DHTML Kitchen Echo 2 DynAPI 3.0 Javascript/Ajax Toolbox How To Create Jitsu Open Cube jQuery Todd Ditchendorf’s DHTML Gallery jsLINB UIZE JavaScript API MochiKit Walter Zorn Moo.fx X Library Prototype Sardalya Script.aculo.us Spry Tacos TurboWidgets TwinHelix Wicket Yahoo! User Interface Library Zapatec Ajax Suite THE BAD GUYS (Grade D or E Toolkits) AjaxFace Bindows EBA Ajax Plex Toolkit Microsoft Atlas ThyApi Rialto TIBCO General Interface ZK Fonte: http://www.musingsfrommars.org/2006/03/ajax-dhtml-library-scorecard.html
A – IE6+, FF1+,Safari 1.2+,Other DOM | B – IE6+, FF2+,Safari + | C – IE6, FF1+ | D – IE6. - Tamanho
YUI – 43Kb (Core + Selector)
Moochikit – 51Kb
Jquery – 56Kb
Mootools – 65Kb
Dojo - 79Kb
Prototype – 126Kb
Extjs – 131Kb - Rich Internet Application
Este item eu considero um empate técnico já que todas apresentam os componentes básicos para contruir ambientes Ricos, embora o ExtJS deixe isso claro mais facilmente e o Jquery tenha muito mais opções que os concorrentes é uma questão de saber procurar. Para facilitar um pouco a busca aqui ficam 2 links:
http://theresaneil.wordpress.com/2009/02/04/30-essential-controls/
http://wiki.jqueryui.com/Essential-Controls-List - Documentação
Em termos de documentação o ExtJs dá um show de organização e visual, mas a falta de exemplos de código torna sua aprendizagem um tanto quanto lenta e difícil. A documentação do Dojo é uma lista de funções amontoadas, o Yahoo UI… alguém acredita que existe um arquiteto de usabilidade na yahoo quando vê aquele site??A mootools está indo pro caminho certo, se incluir alguns demos talvez fique uma documentação boa, já a mochikit é outra documentação básica… O Jquery pelo numero de exemplos e pela iniciativa do Visual Jquery fica com o prêmio nesse tópico.
Conclusão:
Em termos de velocidade e compatibilidade podemos considerar um empate enter Jquery, MooTools, ExtJS, Prototype e Dojo. Mas em tamanho ExtJS e Dojo são mais de 20Kb maiores, o que é considerável nuam conexão lenta.
No geral Jquery e Mootools são as vencedoras, e por detalhes minimos como tamanho e atividade da comunidade vou considerar o hanking dessa forma:
- Jquery
- Mootols
- Prototype/ YUI
- ExtJS/Dojo
- MochiKit
Um aviso especial para o ExtJS sua liçensa é dual: Comercial e GNU portanto você deve pagar para usa-la em projetos comercias!!