tag:blogger.com,1999:blog-74466813221139137262024-03-12T19:34:28.749-07:00SOA? Soa bem...Um local para discutir idéias sobre SOA, BPM, BPEL, tecnologias em geral (Java, JavaEE, JavaME, Linux, Windows,...) e outros assuntos relacionados (ou não) :-)Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.comBlogger152125tag:blogger.com,1999:blog-7446681322113913726.post-25748441427653243232010-08-30T17:06:00.000-07:002010-08-30T17:07:54.187-07:00Inception - O filmeTirando a péssima tradução do nome ("A origem"? Nada a ver..), o filme é muito bom! É uma VM, rodando dentro de outra VM, rodando dentro de outra VM, rodando dentro... :-)Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com2tag:blogger.com,1999:blog-7446681322113913726.post-64850906361326960052010-03-04T15:27:00.001-08:002010-04-07T08:56:15.436-07:00Groovy & Grails – Tutorial – Parte 5<p>Ontem falei de Strings. Hoje falarei sobre números. O GDK (Groovy Developers Kit – O equivalente ao JDK) fornece alguns métodos bem legais nos objetos que representam números. Como por exemplo os operadores <em>plus</em>, <em>minus</em>, <em>abs</em>, <em>round</em>… E mais alguns métodos bem mais interessantes:</p> <ul> <li><em>times:</em> para repetições </li> <li><em>upTo:</em> para uma sequência crescente de valores </li> <li><em>downTo:</em> para uma sequência decrescente de valores </li> <li><em>step</em>: para uma sequência crescente ou decrescente de valores. </li> </ul> <p>Exemplo:</p> <p><strong>times:</strong></p> <blockquote> <p><span style="font-family:Courier New;">def sequencia = ''</span></p> <p><span style="font-family:Courier New;">5.times{ //vai repetir o código abaixo 5 vezes</span></p> <p><span style="font-family:Courier New;"> sequencia += 'x'</span></p> <p><span style="font-family:Courier New;">}</span></p> <p><span style="font-family:Courier New;">assert sequencia = 'xxxxx'</span></p> </blockquote> <p><strong>upTo:</strong></p> <blockquote> <p>def sequencia = ''</p> <p>1.upTo(5) { numero –> //passa o valor como parâmetro</p> <p> sequencia += numero</p> <p>}</p> <p>assert sequencia == '12345'</p> </blockquote> <p><strong>downTo:</strong></p> <blockquote> <p>def sequencia = ''</p> <p>5.downTo(-2) { numero –> //passa o valor como parâmetro</p> <p> sequencia += numero + ', '</p> <p>}</p> <p>assert sequencia == '5, 4, 3, 2, 1, 0, -1, -2, '</p> </blockquote> <p><strong>step:</strong></p> <blockquote> <p>def sequencia = ''</p> <p>2.step(4, 0.5) { numero –> //passa o valor como parâmetro</p> <p> sequencia += numero + ', '</p> <p>}</p> <p>assert sequencia == '2, 2.5, 3, 3.5, '</p> </blockquote> <p>É… a princípio, é estranho você colocar uma chamada de método a partir de um número, como 2.upTo… Mas lembre-se que em Groovy todos elementos são objetos..</p>Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com0tag:blogger.com,1999:blog-7446681322113913726.post-33897905327399964042010-03-03T16:21:00.001-08:002010-03-03T16:21:06.555-08:00Groovy & Grails – Tutorial – Parte 4<p>1) Mais exemplos. Seguem abaixo alguns exemplos de manipulação de Strings em Groovy. Todos são verdadeiros (os <em>asserts</em> retornam <em>true</em>) e auto-explicativos:</p> <p><font size="2" face="Courier New">saudacao = "Alo Groovy"</font></p> <p><font size="2" face="Courier New">assert saudacao.startsWith('Alo')</font></p> <p><font size="2" face="Courier New">assert saudacao.getAt(0) == 'A'</font></p> <p><font size="2" face="Courier New">assert saudacao[0] == 'A'</font></p> <p><font size="2" face="Courier New">assert saudacao.indexOf('Groovy') > 0</font></p> <p><font size="2" face="Courier New">assert saudacao.contains('Groovy')</font></p> <p><font size="2" face="Courier New">assert saudacao[4..9] == 'Groovy'</font></p> <p><font size="2" face="Courier New">assert 'E ai? ' + saudacao – 'Alo ' == 'E ai? Groovy' <strong>//Este aqui é muito legal!!!</strong></font></p> <p><font size="2" face="Courier New">assert saudacao.count('o') == 3</font></p> <p><font size="2">Reparou que algumas Strings estão entre aspas simples, ao invés de aspas duplas, como estamos normalmente acostumados? As Strings com aspas simples não recebem tratamento de conteúdo por parte do Groovy. Explicando melhor (através de exemplo, de novo):</font></p> <p><font size="2">def nome = 'Groovy'</font></p> <p><font size="2">String oie = "Tutorial ${nome}" // resultado = "Tutorial Groovy”</font></p> <p><font size="2">String oie = 'Tutorial ${nome}' // resultado = "Tutorial ${nome}"</font></p> <p><font size="2">Entendeu? :-)</font></p> Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com0tag:blogger.com,1999:blog-7446681322113913726.post-51598034201377006702010-03-01T16:34:00.000-08:002010-03-01T16:46:50.840-08:00Groovy & Grails – Tutorial – parte 3.5Mais Groovy:<div><br /></div><div><b>1) Objetos, objetos, objetos...</b></div><div>Em Groovy, todas as variáveis são instâncias de java.lang.Object. Ou seja: mesmo os tipos primitivos são representados pelos seus Objects equivalentes (int -> Integer, etc...). </div><div><br /></div><div>Em Java, se você tiver uma variável <i>int x</i>, você não pode fazer algo como <i>x.toString();</i>, pois o <i>x </i>não é um objeto. Em contrapartida, você não pode pegar a variável <i>Integer y </i>e utilizar um operador numérico sobre ela, como por exemplo <i>y * 2</i>. Em Groovy você pode fazer as duas coisas.</div><div><br /></div><div>Isto traz alguns comportamentos bem interessantes. Por exemplo:</div><div><br /></div><div>def x = 1</div><div>def y = 2</div><div>assert x + y == 3</div><div>assert x.plus(y) == 3</div><div>assert x instanceof Integer</div><div><br /></div><div>As variáveis <i>x </i> e <i>y</i> são instâncias da classe <i>Integer, </i>mas em Groovy eu posso utilizá-las como se fossem do tipo <i>int</i> diretamente, sem precisar nenhum cast (ou <i>unboxing</i>). Todos os asserts acima são verdadeiros.</div><div><br /></div><div>Hoje estou sem tempo, não deu para fazer um post maior... Fica para amanhã. :-)</div>Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com0tag:blogger.com,1999:blog-7446681322113913726.post-36170812879427161032010-02-28T05:31:00.001-08:002010-02-28T05:37:49.492-08:00Groovy & Grails – tutorial – parte 3<p>Vamos continuar vendo as principais características do Groovy:</p> <p><b>1) Tratamento de Strings:</b></p> <p>As strings do Groovy se comportam como as strings do Java, podendo ser utilizadas da mesma forma se você quiser. Mas elas têm algumas facilidades, que auxiliam a vida do desenvolvedor. As concatenações, por exemplo:</p> <p>Em Java:</p> <p>String anoModelo = carro.getAno() + “ modelo “ + carro.getModelo();</p> <p>Em Groovy:</p> <p>String anoModelo = “${carro.ano} modelo ${carro.modelo}”</p> <p>Repare que aqui já se começa a fazer uso dos <em>getters </em>dinâmicos, que falei na parte 2 do tutorial. O Groovy interpreta o conteúdo entre ${ e } e obtém o valor da variável ali explícita. Se ela não for do tipo String, o Groovy vai chamar o método <strong>toString()</strong> da variável.</p> <p>Outra funcionalidade das Strings em Groovy é o suporte a múltiplas linhas, como no Java, mas de uma forma mais facilmente visível para o desenvolvedor. Por exemplo:</p> <p>Em Java:</p> <p>String mensagem = “Tipo de dado inválido.\nO valor deve ser númerico.\nVocê deve preencher novamente o campo Ano de Fabricação.\n”;</p> <p>Em Groovy:</p> <p>String mensagem = """Tipo de dado inválido.</p> <p>O valor deve ser numérico.</p> <p>Você deve preencher novamente o campo Ano de Fabricação."""</p> <p>Ou seja: Utilizando aspas triplas, o Groovy obedece a formatação que você faz no texto.</p> <p><b>2) Construtores dinâmicos:</b></p> <p>Volte lá na parte 2 do tutorial e veja a classe Veiculo que está lá definida. Ela não tem nenhum constructor declarado, apenas o padrão, sem parâmetros.</p> <p>Mas a classe Veiculo pode ser chamada desta forma:</p> <p>Veiculo veiculo = new Veiculo(fabricante:"Ferrari", anoFabricacao:2010)</p> <p>O Groovy vai chamar automaticamente os <em>setters</em> dos atributos passados como parâmetro.</p> <p>Esta funcionalidade é muito utilizada no <strong>Grails</strong>.</p> <p>Bacana, não?</p>Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com0tag:blogger.com,1999:blog-7446681322113913726.post-7501312087065971302010-02-22T16:34:00.001-08:002010-02-23T02:41:45.550-08:00Groovy & Grails – Tutorial – parte 2<p>Antes de falar no Grails, vamos primeiro ver como funciona a linguagem Groovy, na qual o Grails foi escrito.</p> <p>As principais diferenças do Groovy em relação ao Java são:</p> <p><strong>1) Ponto e vírgula opcional:</strong></p> <p>Não é mais obrigatório colocar um ponto-e-vírgula no final de cada comando do Groovy. As duas linhas a seguir são válidas:</p> <p>String nome = "Groovy";</p> <p>String nome = "Groovy"</p> <p><strong>2) Palavra-chave "return" opcional:</strong></p> <p>O Groovy assume o valor do último comando de uma função como sendo o valor a ser retornado, quando não é utilizada palavra-chave <em>return</em>. Por exemplo, a seguinte função em Java:</p> <p>String getNomeCompleto() {</p> <p> return nome + " " + sobrenome;</p> <p>}</p> <p>Em Groovy fica:</p> <p>String getNomeCompleto() {</p> <p> nome + " " + sobrenome</p> <p>}</p> <p><strong>3) Valor booleano True:</strong></p> <p>Além das expressões booleanas que o Java já tem, o Groovy assume qualquer valor diferente de null como sendo verdadeiro. Por exemplo:</p> <p>Em Java:</p> <p>if (valor != null) {</p> <p>}</p> <p>Em Groovy:</p> <p>if (valor) {</p> <p>}</p> <p>4) <strong>Java Beans/Groovy Beans:</strong></p> <p>O Groovy possui uma forma simplificada de representação de Beans. Não é necessário criar os <em>getters</em> e <em>setters</em> para cada atributo do Bean. Por exemplo:</p> <p>Em Java:</p> <p>public class Veículo {</p><p><span> </span><span>String fabricante;</span></p> <p> <span>Integer anoFabricacao;</span></p> <p> <span>public void setFabricante(String fabricante) {</span></p> <blockquote> <p><span> this.fabricante = fabricante;</span></p> <p><span>}</span></p> </blockquote> <p> public String geFabricante() {</p> <p> return this.fabricante;</p> <p> }</p> <p> public void setAnoFabricacao(Integer anoFabricacao) {</p> <p> this.anoFabricacao = anoFabricacao;</p> <p> }</p> <p> public Integer getAnoFabricacao() {</p> <p> return this.anoFabricacao;</p> <p> }</p> <p>Em Groovy:</p> <p>public class Veiculo {</p> <p> String fabricante</p> <p> Integer anoFabricacao</p> <p>}</p> <p>Os <em>getters</em> e <em>setters</em> são dinamicamente gerados pelo Groovy, em tempo de execução. Se você quiser um comportamento específico para algum destes métodos que não seja o padrão (apenas setar ou retornar valores), pode escrever o método normalmente:</p> <p>public class Veiculo {</p> <p> String fabricante</p> <p> Integer anoFabricacao</p> <p> public void setFabricante(String fabricante) {</p> <p> fabricante = "Fabricado por: " + fabricante</p> <p> }</p> <p>}</p> <p>Na próxima parte veremos as demais características do Groovy. Até lá!</p>Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com0tag:blogger.com,1999:blog-7446681322113913726.post-26651692243819663532010-02-21T15:49:00.001-08:002010-02-21T15:49:12.606-08:00Groovy & Grails - Tutorial<p>Lá vou eu de novo… depois daquele tutorial de BPMN que postei aqui, resolvi fazer mais um. Estou aprendendo Groovy & Grails e, enquanto for aprendendo, vou repassando para vocês ao mesmo tempo. Então, é bem provável que eu acabe escrevendo algumas besteiras, mas fiquem à vontade para me corrigir sempre que necessário, ok?</p> <p>A linguagem <a href="http://groovy.codehaus.org/">Groovy</a> é uma linguagem script para a JVM, desenvolvida e patrocinada pela <a href="http://codehaus.org/">codehaus</a>. “Linguagem script para JVM” quer dizer que ela gera arquivos .class como os arquivos Java geram e estes arquivos são executados diretamente pela JVM padrão da Sun (ou seria Oracle agora?). </p> <p>O <a href="http://www.grails.org">Grails</a> é um framework para desenvolvimento web que segue a mesma filosofia do <a href="http://rubyonrails.org/">Ruby on Rails</a>, mas ao invés de utilizar a linguagem <a href="http://www.ruby-lang.org/pt/">Ruby</a>, utiliza Groovy. Como já estou acostumado com o Java, achei o Grails muito mais fácil de ser utilizado, já que não preciso aprender mais uma linguagem, apenas me adaptar ao Groovy.</p> <p>Recentemente o Grails foi assumido pela <a href="http://www.springsource.com">SpringSource</a>, responsável pelo framework Spring, entre outros. </p> <p>O Grails é um framework que utiliza vários componentes que são padrões de mercado, como:</p> <ul> <li><a href="http://www.hibernate.org">Hibernate</a> para acesso às bases de dados;</li> <li><a href="http://logging.apache.org/log4j/1.2/index.html">Log4j</a> para tratamento de logs;</li> <li><a href="http://www.springsource.com">Spring</a> container para injeção de dependências e gerenciamento dos controllers;</li> <li><a href="http://tomcat.apache.org">Tomcat</a> como servlet container;</li> </ul> <p>Além deste citados, utiliza o <em>Groovy Server Pages </em>(GSP) como visualização padrão (outros podem ser utilizados).</p> <p>Através da utilização de plugins, ele é muito extensível. Já são mais de 350 plugins existentes para as mais diversas funcionalidades (segurança, ajax, JSF, Workflow, etc..). A lista completa pode ser vista <a href="http://www.grails.org/plugin/category/all">aqui</a>.</p> <p>Na próxima parte, vou começar com as funcionalidades básicas do Groovy, para depois falar do Grails. </p> Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com0tag:blogger.com,1999:blog-7446681322113913726.post-65727846579309011822010-01-28T14:57:00.001-08:002010-01-28T14:57:07.546-08:00IPad<p>Ok, ok, você já deve ter visto e/ou lido sobre o novo lançamento da Apple em algum lugar. Todos os sites sobre tecnologia estão falando sobre isto. E alguns sites de notícias em geral também. Não vou ficar aqui dando detalhes sobre ele, especificações, etc.. Só vou passar minhas impressões.</p> <p>Tenho um iPod Touch e acho ele fantástico. A tela de toque é imbatível. É pequeno, bonito, etc… O iPad me pareceu um iPod touch grandão. Mas aí começam os problemas ou questionamentos, justamente por ser tão parecido com o iPod touch…</p> <ul> <li>Não suporta multi-tarefa. Ok, em um aparelho pequeno como o iPod faz falta, mas dá para passar sem. Mas em um aparelho que tenta substituir em parte um netbook, faz muita falta!!! Quer dizer que não dá para escutar música enquanto digita um texto no editor de textos novo dele? Não dá para deixar um IM executando ali no canto, enquanto vejo um vídeo? Xiiii </li> <li>Uma câmera vinha bem, né? </li> <li>Já vi gente reclamando do teclado virtual. Ah, coloca ele em modo paisagem que daí fica um teclado grande.. fica. Mas a parte de trás dele não é lisa, é meio arrendondada. Daí ele fica balançando enquanto você digita. A não ser que você faça isto no colo… </li> <li>Achei meio caro. No final do ano passado, lembro que vi uns macbooks brancos (aqueles com tela de 13”) para vender por R$ 2.400,00. Este iPad aqui no Brasil acho que não vai ficar por menos de R$ 1.700,00. Poxa.. por esta diferença eu compro uma máquina com tela maior, teclado de verdade, multitarefa, que faz muito mais coisas que o iPad. E ainda é um Mac. Se comparar com netbooks/notebooks não-Macs, daí a diferença de preço praticamente inexiste. </li> </ul> <p>Não sei o que vai acontecer. A Apple é historicamente competente em pegar alguma coisa e transformar em sucesso. Já existiam MP3 players quando saiu o 1o. iPod, mas ele revolucionou. Já existiam smartphones melhores que o iPhone quando ele saiu, mas até hoje é objeto de desejo de muita gente, mesmo existindo aparelhos muito melhores do que ele.</p> <p>É esperar para ver…</p> Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com1tag:blogger.com,1999:blog-7446681322113913726.post-40564297016237703832010-01-03T14:27:00.001-08:002010-01-03T14:27:45.788-08:00Antes tarde…<p>…do que muito tarde: Sendo bem direto, mas sincero, um feliz 2010 a todos! Saúde, felicidades e sucesso. :-)</p> Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com0tag:blogger.com,1999:blog-7446681322113913726.post-37546275770065427172009-11-09T15:30:00.001-08:002009-11-10T01:21:24.549-08:00Seniortec<p>Nos dias 23 e 24 de outubro ocorreu o 1o. Seniortec, congresso para desenvolvedores da <a href="http://www.senior.com.br">Senior Sistemas S/A</a>. Foi um evento para mais de 300 profissionais, entre desenvolvedores, pessoal de qualidade e convidados (líderes, gerentes, diretores, etc…).</p> <p>Tive a honra de ser convidado para, junto com o Roque (companheiro de trabalho aqui na Senior), darmos uma palestra sobre SOA & Workflow.</p> <p>Fui muito legal para nós.. e acho que a platéia também gostou. Seguem algumas fotos do evento.</p> <p>Foto 1: Começando a palestra.</p> <p><a href="http://lh4.ggpht.com/_8b3rDW7Bb8Y/SvilpytodmI/AAAAAAAAANg/xIop7Z8AorI/s1600-h/image%5B10%5D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_8b3rDW7Bb8Y/SvilsjjdzbI/AAAAAAAAANk/tFWmNamTyZ8/image_thumb%5B6%5D.png?imgmax=800" width="408" height="256" /></a> </p> <p>Foto 2: Mostrando o “Magic SOA” e o “Workflow Perfect” :-)</p> <p><a href="http://lh4.ggpht.com/_8b3rDW7Bb8Y/SviluP_zPuI/AAAAAAAAANo/KZo10Fc0LYQ/s1600-h/image%5B9%5D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_8b3rDW7Bb8Y/Svilv-lkBeI/AAAAAAAAANs/0Hb86ToVJtw/image_thumb%5B5%5D.png?imgmax=800" width="415" height="253" /></a></p> <p>Foto 3: Roque virando o balde de Lego, aliás, o repositório de serviços.</p> <p><a href="http://lh4.ggpht.com/_8b3rDW7Bb8Y/Svilx6wkEpI/AAAAAAAAANw/5t1Qnske6OM/s1600-h/image%5B21%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_8b3rDW7Bb8Y/Svilz8FZMII/AAAAAAAAAN0/7FHzosw7jug/image_thumb%5B13%5D.png?imgmax=800" width="418" height="263" /></a> </p> <p>Foto 4: Roque montando um sistema, juntando os Legos, ops, os serviços. E eu falando alguma besteira… :-)</p> <p><a href="http://lh3.ggpht.com/_8b3rDW7Bb8Y/Svil2ABCWoI/AAAAAAAAAN4/ZwLYvhVZwgA/s1600-h/image%5B20%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_8b3rDW7Bb8Y/Svil4TnRefI/AAAAAAAAAN8/Q3MxJSG-hPY/image_thumb%5B12%5D.png?imgmax=800" width="415" height="246" /></a> </p> <p>Foto 5: Pronto, já falei uma boa parte, agora estou só assistindo</p> <p><a href="http://lh5.ggpht.com/_8b3rDW7Bb8Y/Svil6hfSXrI/AAAAAAAAAOA/MpWEdHZdgiE/s1600-h/image%5B26%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_8b3rDW7Bb8Y/Svil8yYqdiI/AAAAAAAAAOE/O1QatR6JzWo/image_thumb%5B16%5D.png?imgmax=800" width="416" height="255" /></a> </p> <p>Foto 6: Todo o pessoal que estava assistindo</p> <p><a href="http://lh6.ggpht.com/_8b3rDW7Bb8Y/Svil_tfjTTI/AAAAAAAAAOI/HMJfSu59Cfs/s1600-h/image%5B31%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_8b3rDW7Bb8Y/SvimCtmTOTI/AAAAAAAAAOM/cb78tsbAhoc/image_thumb%5B19%5D.png?imgmax=800" width="411" height="255" /></a></p>Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com0tag:blogger.com,1999:blog-7446681322113913726.post-29090145097809617772009-08-18T16:32:00.001-07:002009-08-18T16:32:10.128-07:00Paixões<p>Se você acompanha este blog há um tempo, sabe que comecei a programar para iPhone há alguns meses. Como nunca tinha utilizado um Mac, fui correr atrás de informações, tutoriais, etc… Passei na banca e vi uma revista chamada Mac+. Humm.. iPhone na capa, falando sobre programação para ele, análises de programas, tutoriais for dummies como eu, etc.. vou levar. :-)</p> <p>Cheguei em casa e fui lê-la. A revista é ótima, mas tem uma coisa ali que me incomodou muito: frases do tipo: “Isto funciona, não é como aquele sistema feito por aquela empresa de Redmond”, ou “O pessoal da MS vem tentando copiar isto faz tempo”, etc, etc..</p> <p>Pra quê isto? Não bastaria falar o que o Mac OS X tem de bom, sem precisar xingar a MS? Veja bem, não estou defendo a MS, estou criticando o comportamento “apaixonado” de certos meios de comunicação.</p> <p>O Mac OS é fantástico! A facilidade de uso e ergonomia são realmente impressionantes. Mas o Windows XP é um excelente sistema operacional, sim! Ele tem seus defeitos, mas, no geral, funciona muito bem! Basta ver a quantidade absurda de hardware que ele é compatível, a quantidade de programas disponíveis, trava pouquíssimo, etc… </p> <p>O Linux também tem suas qualidades. Usei Linux no meu notebook direto, por seis meses e não tive problema algum.. Muito pelo contrário, a máquina ficou ótima. Mas, por motivos profissionais, tive que voltar ao Windows. Acabei instalando o Windows Seven RC. Não tenho do que reclamar dele. Performance praticamente igual ao XP, com um visual do Vista, melhorado. :-)</p> <p>Eu entendo que cada um deles tem as suas qualidades e seus defeitos. E todos eles podem co-existir, até na mesma máquina, por que não?</p> <p>O mesmo raciocínio vale para as linguagens de programação. Há muitos anos atrás havia uma briga forte entre Delphi x Visual Basic. Mais recentemente, temos Java x .Net, ou Eclipse x Netbeans, etc... Eu programo em Java direto e acho ótimo. Mas estou lendo e aprendendo .Net e ali também tem muita coisa boa! Coisas que não existem nem perto em Java. “Ah, mas só funciona no Windows! É mais um produto proprietário da empresa-maligna-Microsoft!”, dizem os mais xiitas por Java. E daí que só funciona no Windows? Se eu precisar fazer alguma coisa que só vá ser executada em Windows mesmo e for fácil fazer em .Net, por que não utilizá-la?</p> <p>Sem contar que nunca se sabe como será o dia de amanhã… Vai que aparece alguma oportunidade boa em .Net? Ou em Objective C (Mac Os e iPhone)? Ou Linux? Ou, ou, ou…?</p> <p>Enfim, sou contra qualquer “radicalismo profissional”. Acho que existem várias linguagens e Sistemas Operacionais e procuro aprender e utilizar o máximo que consigo.  Acho que um bom profissional deve utilizar a ferramenta certa para resolver o problema da forma mais eficiente possível, sem paixões. Claro que existe o gosto pessoal, suas preferências. Mas sempre devemos manter a mente aberta para não fechar os olhos para o mundo.</p> <p>Deixe estas paixões avassaladoras para as outras coisas da vida, como seu amor, seus filhos, família, hobby, etc.. Estas coisas sim valem a pena serem vividas apaixonadamente.</p> Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com4tag:blogger.com,1999:blog-7446681322113913726.post-60377871646955822412009-08-17T18:01:00.001-07:002009-08-17T18:01:46.394-07:00Mensagem Beta<p>Instalei o <a href="http://windowslivewriter.spaces.live.com/">Windows Live Writer</a> aqui na minha máquina (aliás, instalei o Windows 7 RC aqui, estou achando muito bom, estável, rápido, mas isto é assunto para outro post) e este post aqui é o meu primeiro com esta ferramenta.. Então, se ficar meio estranho, a culpa é do Live Writer, não é minha :-)</p> <p>Mas o editor é bacana. Já buscou o estilo que utilizo automaticamente (fontes, cores, formatação) e com isto a edição do texto fica bem fiel ao que vai ser publicado. </p> <p>Também publica imagens automaticamente, como esta tela abaixo:</p> <p><a href="http://lh3.ggpht.com/_8b3rDW7Bb8Y/Son9bwm2oKI/AAAAAAAAANY/n2nfH2xZy_4/s1600-h/BlogPost3%5B3%5D.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="BlogPost3" border="0" alt="BlogPost3" src="http://lh4.ggpht.com/_8b3rDW7Bb8Y/Son9eDEasdI/AAAAAAAAANc/RbibintHXGk/BlogPost3_thumb%5B1%5D.png?imgmax=800" width="403" height="387" /></a> </p> <p>Vou continuar utilizando ele, para ter uma melhor avaliação. Depois eu conto para vocês com mais detalhes.</p> Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com0tag:blogger.com,1999:blog-7446681322113913726.post-34831202275001160992009-08-11T17:26:00.000-07:002009-08-11T17:30:05.240-07:00Triste realidade<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBdHrU5GvbgVAGQilZtGp54niUOMoHSo646Oz7N51TFdBxadQCrPwPO4OpicoBMIMLcP3Bf8c4AY6oOkt2LkkTmkuhIFp0s5FMAKf0x66gK56Hfs__SZdqb6qscgaWEDBAXrGlD5tJDJ8/s1600-h/6a00d8341d3df553ef01157073a04e970c-800wi.jpg"><br /><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 282px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBdHrU5GvbgVAGQilZtGp54niUOMoHSo646Oz7N51TFdBxadQCrPwPO4OpicoBMIMLcP3Bf8c4AY6oOkt2LkkTmkuhIFp0s5FMAKf0x66gK56Hfs__SZdqb6qscgaWEDBAXrGlD5tJDJ8/s400/6a00d8341d3df553ef01157073a04e970c-800wi.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5368867531532041810" /></a>Isto é uma obra de ficção e qualquer semelhança com a realidade é mera coincidência. Sei.. conta outra...Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com0tag:blogger.com,1999:blog-7446681322113913726.post-6318830515561267502009-08-11T03:31:00.000-07:002009-08-11T03:32:55.225-07:00Dirigir e mandar SMS ao mesmo tempo<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7iyy5HvGWLO8dCOC16sWtHT-Rbc5ErA3MnjmMqToc93l4bUJFn8XVDHkhNHApFMzAT7KCF2tNduHH11totzb3IxpHDLti008QFi-PMXnii9xSUvg03nAGo5IhWnHSNou0QB9yF-x1a14/s1600-h/txtng_drvng.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 291px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7iyy5HvGWLO8dCOC16sWtHT-Rbc5ErA3MnjmMqToc93l4bUJFn8XVDHkhNHApFMzAT7KCF2tNduHH11totzb3IxpHDLti008QFi-PMXnii9xSUvg03nAGo5IhWnHSNou0QB9yF-x1a14/s400/txtng_drvng.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5368652279247641330" /></a>Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com0tag:blogger.com,1999:blog-7446681322113913726.post-15476254646027544682009-08-10T03:29:00.000-07:002009-08-10T03:40:28.030-07:00Metendo a mão II - a missãoHá um tempo atrás, falei sobre o netbook Acer Aspire One <a href="http://soasoabem.blogspot.com/2008/11/metendo-mo-acer-aspire-one.html">aqui</a>. O linux padrão dele é uma versão customizada do Fedora 8 (Werewolf), feita pela própria Acer. É bacana, vem com o Open Office 2.x, o Firefox 2, alguns jogos, messenger, etc...<div><br /></div><div>Mas ela é meio pobre visualmente, não tem nada pronto para se fazer um update dos programas, baixar e instalar novos programas (não dá para adicionar nada no desktop e não tem menu Iniciar), etc.. Ou seja: basicamente é o que vem junto e fim de papo. Você só pode adicionar os teus arquivos de dados ali (documentos, fotos, músicas, etc...).</div><div><br /></div><div>Com um "jeitinho", dá para habilitar um menu, que libera acesso a outras funções e, principalmente, ao terminal! :-) Mas, de qualquer forma, muito enrolado.</div><div><br /></div><div>Neste final de semana eu baixei e instalei o <a href="http://www.canonical.com/projects/ubuntu/unr">Ubuntu Netbook Remix 9.04</a>. Fantástico! Parece que troquei de máquina! A interface dele é muito boa, vem completo, com Firefox 3, OpenOffice 3, Pidgin Messenger, Evolution Mail, Jogos, etc..</div><div><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyf3ZvSC1N-p3hMwCyQOO9sUXqxKhxQoKP16DS8uuiqK8hTLe2qsRXbNVcfJwRp5ROHv7HI1moqOazTtnUV1RdMld9bLV71HhjAH9RRp1PxNMjdZB_zM8BKvRtuHFGrWzyjXt3EN85RKw/s1600-h/netbook-screencast-img.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyf3ZvSC1N-p3hMwCyQOO9sUXqxKhxQoKP16DS8uuiqK8hTLe2qsRXbNVcfJwRp5ROHv7HI1moqOazTtnUV1RdMld9bLV71HhjAH9RRp1PxNMjdZB_zM8BKvRtuHFGrWzyjXt3EN85RKw/s320/netbook-screencast-img.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5368282536697962818" /></a><br /></div><div>Você pode conferir o vídeo de demonstração dele <a href="http://www.canonical.com/files/video/netbook-screencast.mp4">aqui</a>.<br /><br /></div><div>E além disto, tem tudo o que o irmão mais velho tem: configurações completas da máquina, terminal, gerenciador de pacotes.. Enfim, outro mundo, vida nova para a máquina.</div><div><br /></div><div>Altamente recomendado!</div>Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com0tag:blogger.com,1999:blog-7446681322113913726.post-24004018737447149972009-08-02T17:20:00.000-07:002009-08-02T17:44:49.135-07:00Cúmulo da preguiçaBom, tinha que fazer uma coisa para testar a minha Arduino + Ethernet. A primeira coisa que me veio à mente foi fazer uma automação das luzes aqui da minha casa. Tá.. é o cúmulo da preguiça comandar todas as luzes sentadão no sofá, mas que é legal, é! <div><br /></div><div>Mãos à obra, então! Primeiro o trabalho, depois o descanso. Para começar, o protótipo vai comandar apenas 4 leds, ligados nos pinos 2, 3, 4 e 5 da placa. Depois, com todo o software funcionando, é só colocar um acoplador ótico, ligado a um DIAC/TRIAC para controlar as luzes de verdade...</div><div><br /></div><div>O programa vai atender aos seguintes comandos:</div><div><ul><li>Status: Retorna o status das lâmpadas (quais estão acesas e quais estão apagadas)</li><li>Acender lâmpada</li><li>Apagar lâmpada</li></ul><div>Deve ser acessível via browser (interface web). A comunicação com a placa é toda via TCP/IP. Antes de fazer a parte web, fiz um cliente nativo para windows, em delphi, para fazer e testar a parte de comunicação com a Arduino.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsLC_ms2vu6B-6raA_o1udAOfYTXQ9Q-vWV1jLK9olSGvjeN3tRZltX4X3-CmJqfv3rnB4PEK6giYoz0x4iFZEXOgWrBvYBx2sLQriyd_aNaN5trOa6-Acxt7CWDk6brHjoe-lKGFe9as/s1600-h/luz1.PNG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 309px; height: 241px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsLC_ms2vu6B-6raA_o1udAOfYTXQ9Q-vWV1jLK9olSGvjeN3tRZltX4X3-CmJqfv3rnB4PEK6giYoz0x4iFZEXOgWrBvYBx2sLQriyd_aNaN5trOa6-Acxt7CWDk6brHjoe-lKGFe9as/s320/luz1.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5365528707358779138" /></a><br />Quando este cliente funcionou ok, fiz uma interface web beeeem simples (visual bonito pra site não é meu forte.. e é só um protótipo, por enquanto):</div><div><br /></div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDl_7wsZFZKr9UCC0_hetxZIv1tp_RxP5GLa4VHH4ujBh5eFhREGqU12UlPrPGYj3I9aACZ3HUQsM9JwqfD6uXzab1sp_hnKM_qzxOEjQGRicROu3QJaxTDNqMjd5fb-5i5AVAKpsTBtg/s1600-h/luz2.PNG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 288px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDl_7wsZFZKr9UCC0_hetxZIv1tp_RxP5GLa4VHH4ujBh5eFhREGqU12UlPrPGYj3I9aACZ3HUQsM9JwqfD6uXzab1sp_hnKM_qzxOEjQGRicROu3QJaxTDNqMjd5fb-5i5AVAKpsTBtg/s320/luz2.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5365530510892077794" /></a>Esta página é enviada para um servlet, que abre uma conexão TCP/IP com a Arduino e envia os comandos correspondentes aos radio-buttons da página (acende e apaga as luzes conforme o preenchido na página).<br /><div><br /></div><div>E aí está.. Dá para acessar esta página direto pelo iPod Touch, sentadão no sofá. E comandar todas as luzes da casa quando o hardware final estiver pronto, com o controle de potência. Por enquanto, dá para acender ou apagar 4 leds remotamente :-)</div><div><br /></div><div>Mas toda a parte do software está pronta. Se tiver tempo, faço um vídeo disto funcionando e posto aqui.</div></div>Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com5tag:blogger.com,1999:blog-7446681322113913726.post-47197687523719785952009-08-02T17:06:00.000-07:002009-08-02T17:20:14.939-07:00Brincando com eletrônica<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuXnEfYh5S_GfUqNNVEeHPyXlcK1QFsFpsTztdZOGCA4vJiSbU23EaqfTgQo0lujyexytnVZJo9D0UOEyOCMfmT9M2a9fC1AsIYNdurv-sgOP-bbVJ6QYlVt5VRhqeTCTVfUK0Nas-mkY/s1600-h/arduino316.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 316px; height: 220px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuXnEfYh5S_GfUqNNVEeHPyXlcK1QFsFpsTztdZOGCA4vJiSbU23EaqfTgQo0lujyexytnVZJo9D0UOEyOCMfmT9M2a9fC1AsIYNdurv-sgOP-bbVJ6QYlVt5VRhqeTCTVfUK0Nas-mkY/s320/arduino316.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5365524285532937138" /></a><br />Pois é.. como falei ali no meu perfil, gosto muito de eletrônica.. e a junção de eletrônica com programação é muito bacana, dá para fazer umas coisas muito legais. Neste final de semana (chuvoso, por sinal.. mais um susto aqui pra região) acabei mexendo com minha placa <a href="http://www.arduino.cc/">arduino</a>.<div><br /></div><div><div>Resumidamente, a Arduino é uma placa open-source (o projeto do circuito da placa e o boot dela são totalmente free), baseada no PIC Atmega e programada em Java! Isto mesmo: Java! Ela não executa Java, ela executa Assembly nativo do processador, mas quem faz o trabalho sujo de converter Java para Assembly é a IDE.</div><div><br /></div><div>A placa possui 13 saídas, sendo 5 PWM e 6 entradas analógicas, com conversor A/D, ou digitais.</div><div>Além da placa básica, existem vários módulos que podem ser acoplados a ela, como Ethernet (TCP/IP), Bluetooth, GPS, Saída de áudio, sensores de temperatura, luminosidade, etc..</div><div><br /></div><div>Fantástica. Muito boa. Funciona de primeira. Foi só espetar a placa (que é conectada via USB), configurar os drivers e sair utilizando a IDE. A IDE é baseada na Processing, que eu já havia comentado <a href="http://soasoabem.blogspot.com/2009/04/ambiente-para-aprendizado-de.html">aqui</a>. Fizeram uma extensão para programação das placas Arduino.</div><div><br /></div><div>Você escreve o programa, faz o upload pra placa e sai rodando. Uma vez na placa, não precisa mais do PC. </div><div><br /></div><div>É um brinquedinho legal.</div><div><br /></div></div>Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com3tag:blogger.com,1999:blog-7446681322113913726.post-86067739672391331232009-07-26T07:23:00.000-07:002009-07-26T07:25:43.681-07:00Fórmula da Lei de MurphySegundo a Companhia de Gás Inglesa, eles descobriram a fórmula matemática da Lei de Murphy!! Se quiser dar uma olhada, o endereço é este: <a href="http://andrew.triumf.ca/cgi-bin/murphy.html">http://andrew.triumf.ca/cgi-bin/murphy.html</a>.<div><br /></div><div>Finalmente descobriram a fórmula da cagada! :-)</div><div><br /></div><div>Fonte: <a href="http://www.ovelho.com">OVelho</a></div>Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com0tag:blogger.com,1999:blog-7446681322113913726.post-46024292370259482042009-07-26T05:26:00.000-07:002009-07-26T05:32:06.408-07:00Soa como música aos meus ouvidos<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaYEgIdsjGFBGYz0j0x0vmqAUR5f1rvukkODVcHhyGcdWGuZFrN5RSX4wbDRTgPvfiIBJeC36YjCN99hac37ctyirFPkek2DgjvTSe9rWob1OY7u0clK0py4sLNFIkIG5NlMCcRQL4O3U/s1600-h/vladv.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 248px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaYEgIdsjGFBGYz0j0x0vmqAUR5f1rvukkODVcHhyGcdWGuZFrN5RSX4wbDRTgPvfiIBJeC36YjCN99hac37ctyirFPkek2DgjvTSe9rWob1OY7u0clK0py4sLNFIkIG5NlMCcRQL4O3U/s400/vladv.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5362745594438042674" /></a><br />Falando um pouco de música agora: Se você gosta de Jethro Tull, Led Zeppelin, Rush, Deep Purple e outros desta turma, não pode deixar de visitar o site da banda Vlad V: <a href="http://www.vladv.com.br/">http://www.vladv.com.br</a>. No site, você encontra para download <b>completo </b>vários álbuns da banda. Se você não conhece, recomendo fortemente os álbuns "Vol IV" e "Viagens acústicas". <div><br /></div><div>Banda aqui da região, extremamente competente e recomendada.</div>Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com0tag:blogger.com,1999:blog-7446681322113913726.post-15431957166002967102009-07-25T16:35:00.000-07:002009-07-25T16:59:44.256-07:00Me lembrou o SennaEstava assistindo ao treino da Fórmula-1 hoje de manhã e vi o acidente do Massa ao vivo. Na hora me lembrei do acidente do Senna. Ainda bem que não foi tão grave. Mas foi uma infelicidade muito grande, uma série de pequenos acidentes que têm que acontecer na hora exata para dar tão errado...<div><br /></div><div>Por falar em Senna, eu também estava assistindo à corrida na qual o Senna morreu. Naquele domingo à noite eu embarquei para SP, para um curso (época dos Developer Days da MS). O hotel no qual eu estava hospedado ficava no caminho do "cortejo" do carro de bombeiros que passou com o caixão do Senna até o velório. Nunca fui muito fã do Senna. Era um grande piloto, sem dúvida, mas eu sempre fui mais o Piquet (o pai, não o filho), mas a comoção popular era algo realmente impressionante. Uma tristeza geral. Impossível ficar indiferente àquela sensação.</div><div><br /></div><div>Claro que sempre tem umas situações pitorescas. O principal assunto na cidade era a morte/enterro do Senna. Lembro que uma noite eu peguei um táxi do curso para o hotel que eu estava. O táxi era uma Elba, a gás. Gás mesmo, de cozinha! O Butijão estava no porta-malas. O taxista era um cara alto, bermudão, toalha de rosto na mão para enxugar o suor... Imagine a cena... E ele era daqueles que dirigia como um louco, xingava todo mundo (xingava mesmo, não era light, tipo "pamonha! anta!", ele atacava a progenitora e/ou a sexualidade dos outros motoristas). Para tentar quebrar um pouco a série de palavrões junto com as barbaridades de trânsito que ele fazia, começamos a falar sobre o Senna. Daí então ele soltou esta pérola (vou transcrever literalmente o que me lembro que ele disse, então me desculpem o linguajar):</div><div><br /></div><div>- Ontem a noite eu estava vendo o Jornal Nacional. Porra, a Globo é foda. Mostraram um monte de cenas com ele, ele com a bandeira comemorando, no pódio.. e botaram aquela música dele (tan-tan-tan! tan-tan-tan!) só com um piano, bem triste. Cara, chorei pra caralho!</div><div><br /></div><div>Me segurei para não rir. Imaginei aquele cara, sentado no sofá, vendo TV sozinho e chorando... O conteúdo da história até pode ser triste, mas a imagem daquele doido do trânsito chorando, vendo TV, realmente é meio fora da casinha..</div><div><br /></div><div>Tomara que o Massa fique bom logo e volte às pistas. Boa sorte!</div>Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com0tag:blogger.com,1999:blog-7446681322113913726.post-87468811091376095392009-07-20T16:37:00.000-07:002009-07-20T16:42:15.059-07:0040 anos e contando...<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjr0VUiRbqw12b9j4hwD1SzUkvRfXYu3rR2FNWwS7JAitKfrnJf0CzClNTFG1Up7D88pY92ZDwDYQL6OlJkg0Wog5LIJUuy_ZHeJ0NjnvPRUt_zSvgNMR5KqwBHYrJ4lH6rP0-lpcMHMlI/s1600-h/apollo1140years.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 226px; height: 209px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjr0VUiRbqw12b9j4hwD1SzUkvRfXYu3rR2FNWwS7JAitKfrnJf0CzClNTFG1Up7D88pY92ZDwDYQL6OlJkg0Wog5LIJUuy_ZHeJ0NjnvPRUt_zSvgNMR5KqwBHYrJ4lH6rP0-lpcMHMlI/s320/apollo1140years.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5360691302054399202" /></a><br />Há exatos 40 anos o homem (supostamente ou não) pisava na Lua. Há quem acredite e há que esteja totalmente descrente sobre este fato... Mas, de qualquer forma, é uma data histórica para a humanidade. E amanhã (21/07), fazem exatos 4o anos que eu nasci (Eeeeee!). Um passo minúsculo para a humanidade mas enorme para mim. :-)Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com2tag:blogger.com,1999:blog-7446681322113913726.post-58000383892084593602009-07-14T03:33:00.000-07:002009-07-14T03:35:46.211-07:00LiveCD do AndroidCom o anúncio do Chrome OS e sua chegada prevista para o final do ano, a Google já disponibilizou um LiveCD com o Android. Assim já dá para ir sentindo como vai ser o novo operacional.. Ou mesmo para matar a curiosidade de ver o Android sendo executado. É só baixar o ISO e gravar um CD ou copiá-lo para um pen-drive e dar o boot na máquina por ele.<div><br /></div><div>O link é <a href="http://code.google.com/p/live-android/">http://code.google.com/p/live-android/</a></div>Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com0tag:blogger.com,1999:blog-7446681322113913726.post-69103608189489416452009-07-13T18:05:00.000-07:002009-07-13T18:35:01.388-07:00Why so serious?Por quê tudo tem que ser tão complicado? Por quê fazer um processo (ou um fluxo) é tão complexo? Em 1o. lugar, parece que o BPEL não foi desenvolvido levando-se em consideração que um ser humano poderia tentar escrever um processo nele... Do BPMN para ele tem um abismo. Se as ferramentas fossem evoluídas o suficiente para gerar um BPEL a partir do BPMN até que seria aceitável, mas nem isto funciona direito.<div><br /></div><div>Existem até discussões antigas em fóruns, sobre as diferenças entre as linguagens (já começando por uma ser estruturada (BPEL) e outra não - só isto já complica um monte a geração de fontes, pois transformar uma não-estruturada em uma estruturada automaticamente não é tarefa nada fácil).</div><div><br /></div><div>Não é fácil fazer um processo.. tem que conhecer BPMN (a linguagem em si é simples, mas utilizá-la da forma correta é que não é tão fácil quanto parece), BPEL (fazer ele direto, no braço, é coisa para poucos), webservices, xml e, se tiver iteração humana, provavelmente vai ter que conhecer HTML, Javascript e/ou algum framework para desenvolvimento de páginas web... E por aí vai...</div>Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com0tag:blogger.com,1999:blog-7446681322113913726.post-46392249049909723432009-06-23T16:15:00.000-07:002009-06-23T16:18:26.778-07:00twittando e andandoTá, tá... acabei criando minha conta no Twitter também.. não sei bem pra quê, nem qual uso vou dar para ela direito.. Vamos ver o que posto lá. Talvez, por ser mais ágil que um blog, eu acabe postando mais lá (até porque aqui tá difícil manter o ritmo, né? :-)).<div><br /></div><div>Para quem quiser acompanhar, a minha conta é <a href="http://www.twitter.com/cgrahl">http://www.twitter.com/cgrahl</a>.</div><div><br /></div><div>Falou!</div>Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com1tag:blogger.com,1999:blog-7446681322113913726.post-15298412733353972712009-05-31T11:27:00.000-07:002009-05-31T16:59:57.299-07:00Google apresenta o seu novo (futuro) serviçoA Google apresentou o <b>Google Waves</b>. É até difícil descrever o que ele é. É um misto de e-mail, chat, blog, wiki, ferramenta social, compartilhamento de arquivos e (Ufa!) ferramenta de colaboração. <div><br />Totalmente feito utilizando o <a href="http://code.google.com/webtoolkit/">Google Web Toolkit</a>, o que me fez rever os meus conceitos sobre esta ferramenta.</div><div><br /></div><div>Achei absolutamente fantástico. Impressionante. Ah, e foi feito na filial australiana da Google pelo mesmo pessoal que fez o Google Maps. A equipe é boa. :-)</div><div><br /></div><div>A Google disponibilizou um vídeo com a apresentação sobre o Waves que foi feita no evento Google I/O 2009 (para desenvolvedores). Você pode conferir o vídeo <a href="http://www.youtube.com/watch?v=v_UyVmITiYQ&eurl=http://code.google.com/intl/pt-BR/events/io/&feature=player_embedded">aqui</a>. O vídeo é relativamente extenso (1:20 hrs) mas vale a pena. </div><div><br /></div><div>O site do Waves é este: <a href="http://wave.google.com/">http://wave.google.com</a></div><div><br /></div><div>Agora é esperar o lançamento oficial. Vai fazer muuuito sucesso, sem a menor dúvida.</div><div><br /></div><div><br /></div><div><br /></div><div><br /></div>Carlos A C Grahlhttp://www.blogger.com/profile/10722577421775661107noreply@blogger.com0