Páginas

Wednesday, December 1, 2010

Reciclagem de monitor CRT

Visto nesta quarta no Grêmio da COPPE, restaurante na UFRJ.




E tinham mais 2 ou  3 desses.... O que será que vão fazer com monitores LCD?
E o que será que fizeram com os tubos de raios catódicos? Será um novo mega acelerador de partículas?

Saturday, November 27, 2010

Paralelismo em Clojure: Threadpool produtor - consumidor

Ontem fiz uma pequena implementação rascunho de uma fila consumida por threads de processamento em Clojure.
Eu havia feito algo similar em Python para encontrar nomes de usuário disponíveis no Twitter.
Tive dificuldade em encontrar uma forma canônica de fazer isso, sem querer me meter muito no mundo Java.

Por fim deixo o código aqui como lembrança do meu feito.

(def *mul* 1)
    
(defn slow-task [v] (Thread/sleep (* @#'*mul* v)) v)

(def history (ref []))

(defn init-items [stream]
    (let [items-stream (ref stream)]
        (fn get-item []
            (dosync
                (let [f (first @items-stream)]
                        (alter history conj [(count @items-stream) f])
                        (alter items-stream rest)
                        f)))))

(defn worker []
    (doall
        (for [x (repeatedly get-item) :while x]
            (try
                (slow-task x)
                (catch Exception _ :put-item-back-to-queue)))))
    
(defn process-all [n-workers]
    (doall
        (for [x (range n-workers)]
            (future (worker)))))
    
(defn main [n-tasks n-workers time-mult]
    ; set multiplier for sleep
    (def *mul* time-mult)
  
    ; clear history
    (dosync (alter history empty))
  
    ; set number of tasks to process
    (def get-item (init-items (take n-tasks (cycle [1 7 2 3]))))
    (sort-by (fn [[k v]] k) (doall (into [] (map (fn [T] [(reduce + T) T]) (time (doall (map deref (process-all n-workers)))))))))

(main 100 20 100)


;------ alternativa ainda não explorada --------
(def producer (seque 1 (cycle (range 10))))

(doseq [o (take 10 producer)]
  (println "consumer:" o)
  (Thread/sleep 1000))

O código acima foi fruto de uma experimentação no REPL. Acabei usando a ideia depois num de nossos projetos na Intelie.
Agradeço ao pessoal que postou nesta thread do grupo de usuários de Clojure e este post no guj.

Friday, November 26, 2010

Linguagens usadas no DojoRio

Fiz uma pequena lista das linguagens que usamos em cada dojo de 2010.


-- javascript (8) ------------------------------------------------------------
20100210: proxima vitima
20100505: romanos
20100519: pedra papel tesoura
20100602: caminho
20100707: reais por extenso
20100721: 3n+1
20100804: ascii
20100818: url rewrite


-- perl (1) ------------------------------------------------------------------
20101124: inteiros para romanos


-- php (4) -------------------------------------------------------------------
20100714: espiral
20100728: palindromos
20100811: game of life
20100908: cheque o xeque


-- python (14) ----------------------------------------------------------------
20100106: sql
20100203: tennis
20100224: metadojo
20100324: jogo da velha
20100428: reversi
20100512: automato
20100623: roleta romana
20100825: datas
20100929: espiral
20101006: espiral
20101013: fizzbuzz
20101027: espiral
20101103: forca
20101117: forca


-- ruby (10) ------------------------------------------------------------------
20100113: gols
20100127: abastecimento dagua
20100303: detetive
20100414: HomeRange
20100526: saving time
20100609: cheque o xeque
20100616: jokenpo
20100630: validador
20100915: encaixotar
20101020: Espiral


-- shell (2) -----------------------------------------------------------------
20100901: fizzbuzz
20100922: url

E aí, o que acham?

Estou no rumo certo do TDD e Baby Steps?

Costumamos falar destes termos toda semana no DojoRio, mas imagino que nem todos de fato compreendem os termos para além das traduções pro português e mais alguma idéia superficial ou distorcida do que seja.

Isto não é um ataque, e sim um convite a reflexão para que cada um faça um "self-check"...

E aí, será que posso melhorar a qualidade do meu código? Será que faço TDD de verdade, ou só estou enrolando ou me enganando? Esses tais passos de bebê são úteis pra mim? Estou fazendo a coisa certa?

Graças ao link que o Berrondo mandou pra lista de emails recentemente (numa retrospectiva do que rolou na última quarta), vi que o Aniche fez boas considerações sobre este ponto:

http://www.aniche.com.br/2010/11/cuidado-com-seus-baby-steps/

Na quarta, depois do nosso randori normal de toda quarta, tivemos um kata do Juan Bernabó mostrando como ele ataca o problema de transformar números arábicos em romanos sem pensar! Isso mesmo, sem pensar. Sem parar de fazer o simples processo de escrever testes, identificar padrões e refatorar.

Confira o resultado do kata:
http://code.google.com/p/dojo-rio/source/browse/#svn/trunk/2010/20101124 - inteiros para romanos - perl

Thursday, November 25, 2010

Vendo netbook HP Mini 210-1000EW


Pessoal,

No meado de dezembro viajo para a Europa para tirar umas longas férias. Vou visitar minha namorada (que conheci no intercâmbio que fiz em Lisboa no último ano), e aproveitar para visitar o máximo de cidades que for possível. Será Strasbourg, Frankfurt, Cracóvia, Dortmund, Bratislavia, Olomouc, etc.

Vou precisar investir uma grana nessa empreitada. Com isso, meu netbook HP Mini 210-1000EW terá pouca utilidade (largar ele aqui em casa na poeira?!). Não tenho uma lojinha que nem o Vinícius, mas também quero passar pra frente esse netbook que tem menos de 3 meses de muito pouco uso.

Ele é um pouco melhor do que os modelos HP Mini encontrados aqui no Brasil. Tem HD de 250 GB, 1 GB DDR2 (facilmente pode virar 2GB), bastante compacto com tela de 10.1" e resolução 1024x600, bluetooth, wifi, leitor de cartões 5x1, câmera, e o melhor é a bateria de 6 células que dura de verdade entre 5 e 6 horas.
O teclado é US (não tem ç), e é com as teclas espaçadas como nos Macs. Tem também um leitor de SIM card que permite usar para conectar à Internet com 3G.

Além de ser pequeno e fácil de carregar, sua autonomia permite até que você saia de casa e não leve o carregador! Mas se quiser levar, ele também é bem pequeno e leve.


Este netbook tem um mini sistema operacional chamado HP Quick Web que boota em poucos segundos e permite ouvir músicas, ver fotos, navegar na internet, ler email, tudo sem esperar o boot do Windows ou outro sistema operacional.

Veja as fotos do HP Mini que pode ser seu
HP Mini 210-1000EW


Dê sua oferta em netbook.rodolfocarvalho.net.
Para qualquer dúvida, envie um email para netbook-arroba-rodolfocarvalho.net