Chronosbox

Author Archive

Mudar charset e quebra de linha recursivamente no Linux

by on 15:50, under Dicas, Linux

Nota: Olá meus caros leitores, apesar do ChronosBox ser um ótimo Blog, eu estou focando meus esforços em um blog conjunto com meu amigo Handrus Nogueira, portanto não deixem de visitar o Dev With Passion! Todos os posts do ChronosBox estarão no Dev With Passion, exceto por alguns comentários novos. Abraços!

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:

1
2
3
4
5
6
7
8
9
10
#!/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!

Leave a Comment more...

Compilando fácil com Debian/Ubuntu

by 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 utilize apt-build install

Exemplo: sudo apt-build install xchat emesene

Tutorial rápido sobre apt-build:

apt-build install –reinstall para reinstalar
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.

4 Comments more...

Pensamento rápido – “ilike” SQL

by on 12:18, under Dicas, Django, Multi Database, MySQL

Nota: Olá meus caros leitores, apesar do ChronosBox ser um ótimo Blog, eu estou focando meus esforços em um blog conjunto com meu amigo Handrus Nogueira, portanto não deixem de visitar o Dev With Passion! Todos os posts do ChronosBox estarão no Dev With Passion, exceto por alguns comentários novos. Abraços!

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!

1 Comment more...

Escritório Portátil do Desenvolvedor Web

by 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

WinScp, FileZilla, Putty

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

1 Comment more...

Comparação de Frameworks Javascript

by 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á!

  1. 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

    Fonte: http://handrus.chronosbox.org/slickspeed/

  2. 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.

  3. Tamanho
    YUI – 43Kb (Core + Selector)
    Moochikit – 51Kb
    Jquery – 56Kb
    Mootools – 65Kb
    Dojo -  79Kb
    Prototype – 126Kb
    Extjs – 131Kb
  4. 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
  5. 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:

  1. Jquery
  2. Mootols
  3. Prototype/ YUI
  4. ExtJS/Dojo
  5. MochiKit

Um aviso especial para o ExtJS sua liçensa é dual: Comercial e GNU portanto você deve pagar para usa-la em projetos comercias!!

2 Comments :, , more...

StatPress

Visits today: 70 Visits since 6 de abril de 2009: 60221 Visitors now: %visitoronline%