Apenas um hack para mostrar como Ruby é legal!
Tem uma biblioteca legal também chamada Functor: http://github.com/dyoder/functor.
Claro que se você, assim como eu, gosta mesmo desse tipo de feature, busque mais sobre Erlang ou Haskell.
Apenas um hack para mostrar como Ruby é legal!
Tem uma biblioteca legal também chamada Functor: http://github.com/dyoder/functor.
Claro que se você, assim como eu, gosta mesmo desse tipo de feature, busque mais sobre Erlang ou Haskell.
→ No CommentsTags: erlang · hacks · haskell · ruby
Estou lendo o Programming Erlang, sempre tive vontade de aprender uma linguagem funcional e Erlang é funcional, mas com um plus que me interessa muito, concorrência! Além de outra coisa que eu sempre quis em Ruby ou Python, pattern matching, o que faz meus olhos geeks brilharem!
→ 2 CommentsTags: erlang
Lançado 1.0rc1, Wooohoooo! E veja a nova documentação, que sempre foi um ponto muito forte no Django.
O Google lançou o Chrome! Subprocessos, threads, webkit, V8, opensource! Em um teste de 2 minutos numa VM com Windows posso dizer que ele é lindo!
Por falar em subprocessos, Python 2.6 foi lançado tem suporte a eles, quer dizer, uma ótima alternativa as threads e o GIL!
Essa semana começou ótima!
→ 4 CommentsTags: chrome · django · google · python
Lendo esse post aqui onde ele fala que alguma coisa deu errado com o Linux eu só tenho a falar uma coisa, graças a Deus. Ele não tem essa fatia de mercado por causas que vão bem além do KDE ou do GNOME. A usabilidade de um Gnome é muito boa na verdade! De fato um grande problema são drivers. Drivers (ATI…) e especificações fechadas da Microsoft (SMB…) e outras são grandes problemas! Mas o Linux é seguro, é confiável e tem inúmeras vantagens que o Windows nem pensa em ter…
A briga também não é só para quem tem um rosto bonito não, fique atento no desenvolvimento do Kernel, do Wine, do Gnome. Não é só concurso de quem tem a melhor cara, e sim de quem tem a melhor interface e o melhor desempenho.
Os desenvolvedores de SO não se esquecem da web2.0 não, web2.0 é algo novo, onde o contexto realmente relevante é conteúdo, leva tempo os aplicativos de um SO se adaptarem a essa nova realidade, mas muitos já estão como Photoshop, Firefox ou F-spot.
Outro problema grande é que boa parte dessas aplicações usam flash ou muito javascript, para isso nossos browsers tem que ser bastante rápidos e as equipes do Firefox ou Webkit por exemplo já estão correndo atrás para prover a tecnologia que aplicativos com base na web precisam.
Web é realmente a plataforma que vai vingar para boa parte dos softwares mas os SOs vão sim tem um papel importante, não quero usar meu banco online e um vírus entrar no meu pc, pegar minha senhas e tirar dinheiro da minha conta.
Sou desenvolvedor, uso Linux, e não sou xiita não, OSX é massa
Sou 1% feliz em não ter que me preocupar com segurança, estabilidade e ter na minha mão algo que realmente posso utilizar e tirar proveito da melhor maneira possível!
ps: FreeBSD não é Linux!
*Esse post foi escrito em um Laptop HP, usando Archlinux (sem dual boot), Firefox e Awesome, ah, Windows XP não instala com o SATA habilitado, não tem driver…
→ 1 CommentTags: archlinux · flames · linux · windows
Bem, minhas experiências com o Solaris 10 não foram das melhores, Linux é user friendly ![]()
Mas hoje tive boas horas com ele, instalei o Dtrace e vi que realmente é uma ferramenta bastante legal, pensando até em instalar o Open Solaris na máquina, mesmo que seja no virtual-box.
→ 3 CommentsTags: dtrace · solaris
Bem, um código vale mais que mil palavras:
$array = array(1, 2, 3, 4, 5);
array_map(function($text) { echo $text, PHP_EOL; }, $array);
Via http://gist.github.com/4646 e http://wiki.php.net/rfc/closures
→ 2 CommentsTags: php
Para quem detesta a interface do classificados do Diário do Nordeste (Fortaleza):
#!ruby
require 'rubygems'
require 'hpricot'
require 'open-uri'
doc = Hpricot(open("http://diariodonordeste.globo.com/classif/consultando.asp?Filtro=#{$*[0]}&Operador=OU&Filtro2="))
doc.search(".anuncio").each do | anuncio |
puts '****'
puts anuncio.inner_text.strip
puts anuncio.inner_text.scan(/[0-9]{4}+\.[0-9]{4}+/)
end
Para usar:
ruby diario.rb notebook
→ 1 CommentTags: hack · ruby
Eu queria ver as estatísticas do memcached, então resolvi procurar na internet e achei isso: http://lists.danga.com/pipermail/memcached/2003-October/000354.html, mas ai resolvi mudar um pouco para pegar todos os dados e virou:
#!/usr/bin/perl
use IO::Socket;
my $socket = IO::Socket::INET->new( PeerAddr => $ARGV[0],
PeerPort => $ARGV[1],
Proto => "tcp",
Type => SOCK_STREAM)
or die($@);
print $socket "stats\n";
$out = <$socket>
while ($out ne "END\r\n") {
if ($out =~ m/STAT (\w+) ([0-9.]+)/) {
print "$1 $2\n";
}
$out = <$socket>
}
close($socket);
*Para usa: ./memcachecheck.pl IP PORTA
Mas ai um colega de trabalho (Rudy Matela) me falou que podia ser feito em shell script:
#!/bin/sh echo -e 'stats\nquit' | netcat $1 $2 | grep STAT | sed -e "s/STAT //" -e "s/ /\\t/"
* Para usa: ./memcachecheck.sh IP PORTA
Muito mais legal! Porém resolvi também fazer em Ruby:
#!/usr/bin/ruby
require 'socket'
out = TCPSocket.open($*[0],$*[1]) do |socket|
socket.puts 'stats'
socket.puts 'quit'
socket.read
end
out.each { |line| print line.gsub(/STAT /,"") if line =~ /STAT (\w+) ([0-9.]+)/ }
* Para usa: ./memcachecheck.rb IP PORTA
→ No CommentsTags: bash · memcached · perl · ruby · sockets
Um colega estava com um problema, algo como isso aqui não funcionava como ele desejava:
def g
x = Proc.new { return 'ok' }
x.call
puts "Não irá mostrar isso"
end
Depois da chamada do pro x não se conseguia mais executar o resto da função. Ai tentando com lambda:
def g
x = lambda { return 'ok' }
x.call
puts "Irá mostrar isso"
end
Depois da chamada de x a função continuava a ser executada, procurando a diferença, bem é o seguinte, todo o centexto externo é passado para o Proc e assim se é chamado return ele não só executa return no escopo dele, ele executa um return no escopo externo! O mesmo não acontece com o lambda, que apesar de ver o contexto externo ele não “pega” para si esse contexto e usa como se fosse o dele.
Olhe esse exemplo:
def x
y = 1
f = Proc.new{ return y + 1 }
f.call
puts y
end
def z
h = 1
f = lambda { return h + 1 }
f.call
puts h
end
puts 'x:'
x()
puts 'z:'
z()
Vai imprimir:
x: z: 1
Olhem esse outro:
def x
y = 1
puts Proc.new{ y = y + 1 }.call
puts y
end
def z
h = 1
puts lambda { h = h + 1; return h }.call
puts h
end
puts 'call x'
x()
puts 'call z'
z()
No proc ele muda o valor e sem o return dentro ele não saí do contexto de x, já o lambda altera o valor e mesmo com return não sai do contexto de z.
call x 2 2 call z 2 2
→ No CommentsTags: ruby · tips
Quando forem colocar o gitweb em um servidor para sevir repositórios sem working copy e com working copy, lembre-se de colocar o usuário do servidor no grupo que tenha acesso a pasta do repositório, aparentemente se ele não estiver no grupo os repositórios criados com a opção “–bare” não aparecem listados.
→ No CommentsTags: apache · cgi · git · tips
Instalando da fonte:
# export PATH=/opt/csw/bin:/usr/ccs/bin:/usr/local/bin:$PATH
# export LD_LIBRARY_PATH=/usr/local/lib
# pkgrm CSWimagemagick
# mkdir /usr/local/src
# cd /usr/local/src
# wget ftp://ftp.imagemagick.org/pub/ImageMagick/legacy/ImageMagick-6.3.9-10.tar.bz2
# bunzip2 -dc ImageMagick-6.3.9-10.tar.bz2 | tar xf -
# cd ImageMagick-6.3.9
# ./configure –disable-static –with-modules –without-perl –without-magick-plus-plus –with-quantum-depth=8
# make
# make install
Agora a gem rmagick
# export CFLAGS=-I/opt/csw/include
# gem install rmagick
* Via http://kete.net.nz/documentation/topics/show/160-solaris-installing-required-software
→ No CommentsTags: imagemagick · rails · ruby · solaris
Para você que quer ou precisa instalar Rails no Solaris, aqui vai a dica: CoolStack. CoolStack são pacotes do SunSource.net que serve para instalar Ruby, Rails, memcached dentre outras coisas que são uma mão na roda na hora de configurar um ambiente em Solaris 10.
→ No CommentsTags: rails · ruby · solaris · sun · tips
Sem muitos traumas (apenas uma babaquice minha) um ambiente rails rodando com apache.
<VirtualHost *:80> ServerName www.railstest.com ServerAlias railstest.com DocumentRoot /home/tiago/apps/testrails/public RailsEnv development <Directory "/home/tiago/apps/testrails/public"> Options FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> RailsBaseURI / </VirtualHost>
Vou mencionar a babaquice, o DocumentRoot tem que estar apontado para o public como diz o manual.
Para mais leiam a ótima cobertura do Akita sobre o Passenger na RailsConf e outros posts dele sobre o Passenger.
→ No CommentsTags: mod_rails · rails
Fundamos ( Eu e Landro Gualter, também da Zusee.com) o grupo Ruby-CE! Ainda falta fazer um site e tal mas o grupo está criado, esperamos também até o fim do ano quem sabe fazer uma “Ruby Conference” aqui no Ceará ![]()
→ 1 CommentTags: ruby
Fazem 2 meses mais ou menos que mudei de emprego e fui trabalhar no Atlântico/Secrel Internacional com Rails e afins. Bem estou bastante satisfeito, Rails me deixou mais contente ainda com minha profissão, Ruby faz programadores felizes!
Bem de fato é uma verdade, claro que a alguns contrapontos como o que Ruby 1.8 é lento, mas isso não chega a ser de fato um problema e para isso várias outras tecnologias estão vindo ou já vieram para resolver o problema como o próprio Mongrel ou a nova VM do Rails (YARV). Mas além dessas VMs estão sendo criadas várias novas como a MagLev e Rubinius.
Temos também o jRuby um port de Ruby para JVM que anda a passos largos todos os dias. Rubinius é baseada na arquitetura do Smalltalk-80 e a MagLev em uma outra VM de smalltalk. E pelo que parece todos vão estar com a mesma especificação!
Como se não bastasse tudo isso, surgiu o mod_rails ou Phusion Passenger que tornou o deployment de aplicações Rails peace of cake no Apache. O Dreamhost já suporta o Passenger, a LocaWeb está começando, isso me cheira a standard como é o mod_php, quem sabe um dia teremos o Passenger como o php nos shared hosts do mundo…
Viva o Ruby que em pouco tempo junto com Rails e outras tecnologias anda crescendo bastante, todo dia surgem novidades e gente querendo melhorar a plataforma, Ruby tem um futuro promissor e fico feliz em fazer parte disso.
→ No CommentsTags: passenger · rails · ruby · smalltalk · vm