quarta-feira, 31 de dezembro de 2008

Mudanças nesse blog

Olá!


Primeiramente gostaria de desejar um Feliz ano novo!
Que em 2009 todos os sonhos se realizem, com muita saúde, paz e felicidade.


Gostaria de informar também que esse blog no Blogger vai ser desativado, eu vou passar a postar em apenas um blog, o endereço vai continuar www.furutani.com.br e vou migrar o conteúdo do outro blog para esse. Essa mudança é necessária pois vou usar um outro serviço de hosting de site.


Até mais,
Roberto

quinta-feira, 4 de dezembro de 2008

Google Reader com novo visual

Olá

Confira abaixo o novo visual do Google Reader, meu leitor de feeds favorito.


Até mais,
Roberto

quarta-feira, 19 de novembro de 2008

Gmail com suporte a temas

Olá

Uma ótima notícia para quem gosta de coisas enfeitas. O GMail agora tem vários temas disponíveis para escolha.


Até mais,
Roberto

terça-feira, 18 de novembro de 2008

Falta um dia para o lançamento

Olá!

Parece que amanhã o mistério do Sr. Ping vai ser revelado.


http://www.viagemdosrping.com.br/

Até mais,
Roberto

Onde dia 20/11 é feriado?

Olá!

Abaixo a lista das cidades onde será feriado dia 20/11. Para quem não sabe nesse dia é comemorado o dia da Consciência Negra.

AL União dos Palmares
AL Alagoas
AL Maceio
AM Manaus
BA Itaparica
CE Ceará
GO Flores de Goiás
GO Santo Antonio do Descoberto
GO Goiânia
MG Alem Paraiba
MG Itapecerica
MG Parauba
MG Juiz de Fora
MG Montes Claros
MS Mato Grosso do Sul
MT Mato Grosso
MT Acorizal
MT Água Boa
MT Alta Floresta
MT Alto araguaia
MT Alto da Boa Vista
MT Alto Garças
MT Alto Paraguai
MT Alto Taquari
MT Apiacas
MT Araguaiana
MT Araguainha
MT Araputanga
MT Arenápolis
MT Aripuana
MT Barão de Melgaco
MT Barra do Bugres
MT Barra dos Garças
MT Bom Jesus do Araguaia
MT Brasnorte
MT Cáceres
MT Campinápolis
MT Campo Novo do Parecis
MT Campo Verde
MT Campos de Júlio
MT Cana Brava do Norte
MT Canarana
MT Carlinda
MT Castanheira
MT Chapada dos Guimarães
MT Claudia
MT Cocalinho
MT Colider
MT Colniza
MT Comodoro
MT Confresa
MT Conquista D'Oeste
MT Cotriguaçu
MT Cuiabá
MT Curvelândia
MT Denise
MT Diamantino
MT Dom Aquino
MT Feliz Natal
MT Figueirópolis d´Oeste
MT Gaúcha do Norte
MT General Carneiro
MT Glória D'Oeste
MT Guarantã do Norte
MT Guirantã
MT Guiratinga
MT Indiavaí
MT Ipiranga do Norte
MT Itanhangá
MT Itaúba
MT Itiquira
MT Jaciara
MT Jangada
MT Jauru
MT Juara
MT Juína
MT Juruena
MT Juscimeira
MT Lambari d´Oeste
MT Lucas do Rio Verde
MT Luciara
MT Marcelândia
MT Matupá
MT Mirassol d´Oeste
MT Nobres
MT Nortelândia
MT Nossa Senhora do Livramento
MT Nova Bandeirantes
MT Nova Brasilândia
MT Nova Canaã do Norte
MT Nova Guarita
MT Nova Lacerda
MT Nova Marilândia
MT Nova Maringá
MT Nova Monte Verde
MT Nova Mutum
MT Nova Nazaré
MT Nova Olímpia
MT Nova Ubiratã
MT Nova Xavantina
MT Novo Horizonte do Norte
MT Novo Mundo
MT Novo Santo Antônio
MT Novo São Joaquim
MT Paranaitá
MT Paranatinga
MT Pedra Preta
MT Peixoto de Azevedo
MT Planalto da Serra
MT Poconé
MT Pontal do Araguaia
MT Ponte Branca
MT Pontes e Lacerda
MT Porto Alegre do Norte
MT Porto dos Gaúchos
MT Porto Esperidião
MT Porto Estrela
MT Poxoréo
MT Primavera do Leste
MT Querência
MT Reserva do Cabacal
MT Ribeirão Cascalheira
MT Ribeirãozinho
MT Rio Branco
MT Rondolândia
MT Rondonópolis
MT Rosário Oeste
MT Salto do Céu
MT Santa Carmem
MT Santa Cruz do Xingu
MT Santa Rita do Trivelato
MT Santa Terezinha
MT Santo Afonso
MT Santo Antônio do Leste
MT Santo Antônio do Leverger
MT São Félix do Araguaia
MT São José do Povo
MT São José do Rio Claro
MT São José do Xingu
MT São José dos Quatro Marcos
MT São Pedro da Cipa
MT Sapezal
MT Serra Nova Dourada
MT Sinop
MT Sorriso
MT Tabaporã
MT Tangará da Serra
MT Tapurah
MT Terra Nova do Norte
MT Tesouro
MT Torixoreu
MT União do Sul
MT Vale de São Domingos
MT Várzea Grande
MT Vera
MT Vila Bela da Santíssima Trindade
MT Vila Rica
PA Marabá
PA Nova Ipixuna
PA São Félix do Xingu
PB João Pessoa
PB Dona Inês
PE Macaparaná
RJ Rio de Janeiro
RJ Angra dos Reis
RJ Aperibe
RJ Araruama
RJ Areal
RJ Armação dos Búzios
RJ Arraial do Cabo
RJ Barra do Piraí
RJ Barra Mansa
RJ Belford Roxo
RJ Bom Jardim
RJ Bom Jesus do Itabapoana
RJ Cabo Frio
RJ Cachoeiras de Macacu
RJ Cachoeiras de Macau
RJ Cambuci
RJ Campos dos Goytacazes
RJ Cantagalo
RJ Carapebus
RJ Cardoso Moreira
RJ Carmo
RJ Casimiro de Abreu
RJ Comendados Levy Gasparian
RJ Conceição de Macabu
RJ Cordeiro
RJ Duas Barras
RJ Duque de Caxias
RJ Engenheiro Paulo de Frontin
RJ Guapimirim
RJ Iguaba Grande
RJ Itaboraí
RJ Itaguaí
RJ Italva
RJ Itaocara
RJ Itaperuna
RJ Itatiaia
RJ Japeri
RJ Laje do Muriaé
RJ Macaé
RJ Macuco
RJ Magé
RJ Mangaratiba
RJ Maricá
RJ Mendes
RJ Mesquita
RJ Miguel Pereira
RJ Miracema
RJ Natividade
RJ Nilópolis
RJ Niterói
RJ Nova Friburgo
RJ Nova Iguaçu
RJ Paracambi
RJ Paraíba do Sul
RJ Parati
RJ Paty dos Alferes
RJ Petrópolis
RJ Pinheiral
RJ Piraí
RJ Porciuncula
RJ Porto Real
RJ Quatis
RJ Queimados
RJ Quissama
RJ Resende
RJ Rio Bonito
RJ Rio Claro
RJ Rio das Flores
RJ Rio das Ostras
RJ Rio de Janeiro
RJ Santa Maria Madalena
RJ Santo Antônio de Pádua
RJ São Fidélis
RJ São Francisco de Itabapoana
RJ São Gonçalo
RJ São João da Barra
RJ São João de Meriti
RJ São José de Ubá
RJ São José do Vale do Rio Preto
RJ São Pedro da Aldeia
RJ São Sebastião do Alto
RJ Sapucaia
RJ Saquarema
RJ Seropédica
RJ Silva Jardim
RJ Sumidouro
RJ Tanguá
RJ Teresópolis
RJ Trajano de Morais
RJ Três Rios
RJ Valença
RJ Varre-Sai
RJ Vassouras
RO Vilhena
RS Porto Alegre
RS Pelotas
SC Florianópolis
SE Pacatuba
SE Jáparatuba
SP Altinópolis
SP Americo Brasiliense
SP Amparo
SP Araçatuba
SP Araraquara
SP Assis
SP Aruja
SP Auriflama
SP Barrinha
SP Barueri
SP Bento de Abreu
SP Borborema
SP Brauna
SP Buri
SP Cabreúva
SP Cachoeira Paulista
SP Campinas
SP Candido Mota
SP Campos do Jordão
SP Caraguatetuba
SP Colômbia
SP Cordeiropois
SP Diadema
SP Embu
SP Embu das Artes
SP Embu-Guaçu
SP Florida Paulista
SP Franca
SP Francisco Morato
SP Franco da Rocha
SP Guaira
SP Guapiara
SP Guarani D'Oeste
SP Guariba
SP Guarulhos
SP Hortolândia
SP Iaras
SP Icem
SP Ilhabela
SP Ipeuna
SP Itapacerica da Serra
SP Itapeva
SP Itapevi
SP Itirapina
SP Itararé
SP Itu
SP Jandira
SP Jaguariúna
SP Judiaí
SP Juquitiba
SP Lajes
SP Leme
SP Limeira
SP Maririnque
SP Mauá
SP Mococa
SP Nipoa
SP Nova Guaraporanga
SP Palmital
SP Paraiso
SP Pedregulho
SP Pedreira
SP Porto Feliz
SP Pirapora do Bom Jesus
SP Pradopólis
SP Queiroz
SP Restinga
SP Riberião Branco
SP Piracicaba
SP Ribeirão Pires
SP Ribeirão Preto
SP Rincão
SP Rio Claro
SP Rio das Pedras
SP Rio Grande da Serra
SP Riolândia
SP Riversul
SP Roseira
SP Santa Rosa de Viterbo
SP Santa Barbara d' Oeste
SP Santo André
SP Santopolis do Aguapei
SP Santos
SP São Joao da Boa Vista
SP São Lourenço da Serra
SP São Jose da Bela Vista
SP São Caetano do Sul
SP São Paulo
SP São Roque
SP São Simão
SP São Vicente
SP Serra Negra
SP Sorocaba
SP Sud Menucci
SP Sumaré
SP Tapirai
SP Valinhos
TO Miracema do Tocatins


Fonte: Site da Presidência da República

quarta-feira, 12 de novembro de 2008

Alguém conhece o Sr Ping?

Olá

Olha só o email que recebi da revista Mundo Java


http://www.viagemdosrping.com.br/

Fiquei curioso para saber o que tem por tras dessa propaganda.

Até mais,
Roberto

sexta-feira, 31 de outubro de 2008

Problema na atualização do WordPress

Olá!

Hoje fui atualizar o meu WordPress 2.6.1 para 2.6.3 e não deu muito certo. Depois de fazer upload dos arquivos da versão nova, acessei o wp-admin e fiz o login com o usuário administrador e tomei a mensagem "“Você não tem permissão para acessar essa página" na minha face.

Mas antes fiz um backup básico de todo o diretório do WordPress e da base de dados que ele usa. Sempre faça backup!

Oras bolas, no site a promessa é essa:

Atualizando de qualquer versão do WordPress para a 2.6:

Antes de atualizar qualquer coisa, tenha certeza de ter feito uma cópia de segurança de todos os arquivos que você modificou como o index.php.

  1. Apague seus arquivos antigos do WordPress, salvando os que você modificou.
  2. Faça o upload dos novos arquivos.
  3. Acesse a página /wp-admin/upgrade.php com seu navegador.

Você queria mais? É só isso!

Pra corrigir fiz o seguinte:
  1. Alterei as permissões do arquivo wp-config.php para 755;
  2. Depois abri esse arquivo e altere as linhas abaixo colocando meu frase única.
    define('AUTH_KEY', 'robertojundi_1'); // Change this to a unique phrase.
    define('SECURE_AUTH_KEY', 'robertojundi_2'); // Change this to a unique phrase.
    define('LOGGED_IN_KEY', 'robertojundi_3'); // Change this to a unique phrase.
  3. Após isso acessei a URL da administração e não é que fazendo sóóó isso funcionou?!
Dá próxima vou arriscar usar o plugin InstantUpgrade.

Até mais

sábado, 11 de outubro de 2008

Novo site do Submarino usa Java

Olá

É impressão minha ou o Submarino está usando Java no seu site que até pouco tempo era em asp?

Analisando o HTTP header parece que sim:

http://www.submarino.com.br/menu/1061/administracao+e+negocios

GET /menu/1061/administracao+e+negocios HTTP/1.1
Host: www.submarino.com.br
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Referer: http://www.submarino.com.br/menu/1061/administracao+e+negocios
Cookie: SubmarinoPartnerId=PartnerId=102414; Track=CI%3D999848%20P%201%26Department%3DAdministra%E7%E3o%20e%20Neg%F3cios%3A1061%2CLivros%20Nacionais%3A1060%2CFerramentas%3A546%2C%26Search%3Dcamiseta%3A%21%21%5E%26Product%3D21365867%7C1%2C21313131%7C31%2C21393951%7C2; SequenceID=0=556089118OVF444199477; SubmarinoPPCat=SequenceID=556089118OVF444199477; SubmarinoP=Nick=; sbBeta=http://www.submarino.com.br/; JSESSIONID=7LyHLwwpnR02sZG2bVjbrpdHmM5TDyJT1WsknLbsrxT2znf92nFq!406043704; SubmarinoPCat=PartnerId=102414&CI=999848%20P%201&Nick=; SubmarinoS=CI=999848%20P%201&OrderIdDigipix=0&DigipixSessionId=&CustomerEmail=; .ASPXAUTH=

HTTP/1.x 200 OK
Server: Apache
X-Powered-By: Servlet/2.5 JSP/2.1
Content-Type: text/html; charset=UTF-8
Content-Encoding: gzip
Content-Length: 15850
Expires: Sat, 11 Oct 2008 18:53:58 GMT
Cache-Control: max-age=0, no-cache, no-store
Pragma: no-cache
Date: Sat, 11 Oct 2008 18:53:58 GMT
Vary: Accept-Encoding
Set-Cookie: sbBeta=http://www.submarino.com.br/; path=/; domain=.submarino.com.br
X-Cache: MISS from powerlinux.localhost.localdomain
X-Cache-Lookup: MISS from powerlinux.localhost.localdomain:3128
Via: 1.0 powerlinux.localhost.localdomain:3128 (squid/2.6.STABLE13)
Proxy-Connection: keep-alive
Algumas partes ainda estão em ASPX, como por exemplo o login e o carrinho.
Bom independente da tecnologia, o site ficou mais interessante de navegar e mais bonito. Parabéns pro pessoal que desenvolveu.

Até mais,

quinta-feira, 9 de outubro de 2008

Tartarugas feitas em Java!

Olá!

Se o papai e a mamãe dessa tartaruga a fizeram em Java não sei, mas que elas nasceram lá a reportagem deixa claro.

:)

terça-feira, 2 de setembro de 2008

Google Chrome - Estatísticas para nerds

Olá!

Como muita gente no mundo, estou testando o navegador do Google.
Uma tela que achei muito interessante é a mostrada abaixo. Ela é aberta quando digitamos about:memory no campo da URL.

Nessa tela você pode acompanhar quanto cada navegador está ocupando na memória.

Até mais,
Roberto

sábado, 30 de agosto de 2008

Palestras SOA

Olá!

Abaixo dois videos de palestras sobre SOA

1. SOA e Reúso na Prática



2. SOA - Erros Comuns (Anti-Patterns) e Boas Práticas



Até mais,
Roberto

Sites sobre SOA

Olá!

Fazem mais de 6 meses que entrei no mundo SOA, encarando uma pós-graduação no IBTA com ênfase nessa buzzword do momento todo sábado das 8:30h até as 17:00h. Posso dizer que estou muito satisfeito com o curso e com os professores do IBTA, alias esse curso é o melhor momento da semana toda, por incrível que pareça eu torço para que sábado chegue logo para ir estudar.
Não é nerdisse não, é por que é na pós que a gente aprende coisas novas, troca experiências e se atualiza em assuntos aleatórios. Por exemplo, eu não sabia quem era Donatella e Flora :)

Mas escrevi esse post para deixar 3 blogs de SOA escritos por brasileiros como dica para quem quer ficar atualizado nesse assunto. Lá vai.

  1. Aquele blog de SOA
  2. SOA Corporativa
  3. SOA, Simples Assim!
Até mais,
Roberto

* Eu não coloquei no título Blog sobre SOA, por que tem muito proxy por ai que barra acessos a URL com a palavra blog no meio, é sacanagem pois nem todo blog é de sacanagem.

segunda-feira, 28 de julho de 2008

Resposta da GM para um comentário de Bill Gates

Olá!

Recebi o texto abaixo por email.

Para um comentário de Bill Gates, uma resposta inteligente.

Vale a pena ler.

Numa recente feira de informática (Comdex), Bill Gates fez uma infeliz comparação da indústria de computadores com a automobilística declarando:

'Se a GM tivesse evoluído tecnologicamente, tanto quanto a indústria de computadores evoluiu, estaríamos dirigindo carros que custariam 25 dólares e que fariam 1000 milhas por galão (algo como 420 km/l)'.

A General Motors, respondendo 'na bucha':

Se a Microsoft fabricasse carros:

01 - Toda vez que eles repintassem as linhas das estradas, você teria que comprar um carro novo.

02 - Ocasionalmente, dirigindo a 100 km/h , seu carro morreria na Auto-estrada sem nenhuma razão aparente, e você teria apenas que aceitar isso, sem compreender o porque! Depois, deveria religá-lo (desligando o carro, tirando a chave do contato, fechando o vidro saindo do carro, fechando e trancando a porta, abrindo e entrando novamente... Em seguida sentar se no banco, abrir o vidro, colocar a chave no contato e ligar novamente). Depois, bastaria ir em frente.

03 - Ocasionalmente a execução de uma manobra a esquerda poderia fazer com que seu carro parasse e falhasse... Você teria então que reinstalar o motor! Por alguma estranha razão você aceitaria isso como 'normal'.

04 - A Linux faria um carro em parceria com a Apple, extremamente confiável. Cinco vezes mais rápido e dez vezes mais fácil de dirigir. Mas apenas poderia rodar em 5% das estradas.

05 - Os indicadores luminosos de falta de óleo, gasolina e bateria seriam substituídas por um simples 'Falha Geral ou Defeito Genérico' (permitindo que sua imaginação identifique o erro!).

06 - Os novos assentos obrigariam todos a terem o mesmo tamanho de bunda.

07 - Em um acidente, o sistema de air bag perguntaria: 'Você tem certeza que quer usar o air bag?'.

08 - No meio de uma descida pronunciada, quando você ligasse o ar-condicionado o radio e as luzes ao mesmo tempo, ao pisar no freio apareceria uma mensagem do tipo 'Este carro realizou uma operação ilegal e será desligado!'

09 - Se desligasse o seu carro utilizando a chave, sem antes ter desligado o radio ou o pisca-alerta, ao ligá-lo novamente, ele checaria todas as funções do carro durante meia hora, e ainda lhe daria uma bronca para não fazer isto novamente. (ÓTIMA).

10 - A cada novo lançamento de carro, você teria de reaprender a dirigir. Coisa fácil! Você voltaria a auto-escola para tirar uma nova carteira de Motorista.

11 - Para desligar o carro, você teria de apertar o botão 'Iniciar'

12- A única vantagem: Seus netos saberiam dirigir muito melhor do que você!

MEXE COM QUEM ESTÁ QUIETO!!!!!!

quinta-feira, 24 de julho de 2008

Minhas "extensions" do Firefox

Olá!

Eu já acho o Firefox sozinho um ótimo produto, mas quando adicionamos complementos (extensions) ele fica muito melhor.
Vou postar os 7 complementos que não posso mais ficar sem.

1. Screengrab!

Esse complemento converta a página exibida em imagens png/jpg, pode ser apenas a parte da página visivel na tela, toda a página ou um frame.



2. Firebug

O Firebug é um complemento para desenvolvedores de sites, ele mostrado todos as requisições feitas pelo browser, você consegue inspecionar o código HTML, CSS, DOM e debugar Javascript.

3. Fast Video Download


Com esse complemento você consegue salvar o video do youtube mostrado na tela com apenas um clique.

4. Fast Dial

O Fast Dial monta um mosáico com vários sites no lugar do about:blank.


5. Gspace

O Gspace permite fazer downloads e uploads de arquivos em uma conta do GMail.
Muito útil para quem usa o GMail como backup de arquivos importantes.

6. Del.icio.us

Com a extensão do del.icio.us fica mais fácil acessar e taggear (existe esse verbo??) os links cadastrados no del.icio.us.

7. Web Developer

Esse eu deixei por último por que é o melhor e o mais útil para que desenvolve para web.



Até mais,

segunda-feira, 21 de julho de 2008

Acessando Internet Banking da Caixa Econômica Federal pelo Firefox 3

Olá!

Depois que instalei o Firefox 3 não consegui mais acessar o Internet Banking da Caixa.
Eu tinha adicionado o site do Internet Banking da Caixa como exceção já que o FF3 dava erro de conexão segura, mas mesmo assim eu não conseguia instalar extensão que liberava o acesso.
Googlando um pouco achei esse link Firefox 3 e o site da Caixa que me ajudou a contornar o problema.

Eu usei esse método:

  • Acesse o site do ICP-Brasil.
  • Clique em Download/Instalação. O Firefox pedirá confirmação.
  • Marque a opção Considerar confiável esta CA para identificar sites.
  • Clique em OK.
  • A partir de agora, o site da Caixa deve abrir sem erros.
Segundo esse site o problema ocorre por que o ICP-Brasil não requisitou sua presença na lista de órgãos certificadores no Firefox.

O problema ocorre não apenas com a Caixa, mas com qualquer site seguro que use um certificado expedido pelo ICP-Brasil, uma Autoridade Certificadora (CA) pertencente ao governo brasileiro.

Para que uma conexão segura seja efetuada com êxito, é necessário que a Autoridade Certificadora responsável pelo certificado do site esteja presente no Firefox. Isso não ocorre com o ICP-Brasil.

Até mais,

quarta-feira, 16 de julho de 2008

3G avançando interior a dentro

Olá!

A Claro está implantando a rede 3G bem mais rápido que eu esperava no interior de SP, numa consulta rápida no site da Claro as cidades de Campinas, São José dos Campos, Riberão Preto e Campos do Jordão já tem 3G em 850Mhz oficialmente.
E já há boatos que nas cidades Marilia e Bauru já exitem estações rádio base 3G em testes.


Até mais,

terça-feira, 15 de julho de 2008

Quadrinhos sobre engenharia de software atualizado!

Olá!

Criaram uma versão mais nova do cartoon das árvores que representa as etapas da construção de um software.

A versão velha é a seguinte:



A versão nova você confere clicando na miniatura abaixo.


Se você não conseguir ver no site oficial, clique aqui.

Veja mais dois cartoons sobre construção de software clicando aqui.
Até mais,

Comparativo de performance entre Java, C++, Ruby, PHP, Groovy e Python

Olá!

Hoje eu recebi um link muito interessante do Thiago Vespa na lista de emails da comunidade Java Noroeste, é um comparativo de desempenho entre várias linguagens.

Language Version Lines of Code Time per iteration (microseconds)
Java Sun JDK 1.6.0.03 101 1.6
C++ 4.1.3 20070929 (prerelease)
(Ubuntu 4.1.2-16ubuntu2)
Compiled with optimisation -O3
86 3
Ruby ruby 1.9.0 (2008-04-14 revision 16006) [i686-linux] 63 114 89
ruby 1.8.6 (2007-06-07 patchlevel 36) [i486-linux] 372 380
jruby : ruby 1.8.6 (2008-05-28 rev 6586) [i386-jruby1.1.2] 84 80
Python 2.5.1 41 225
Jython 2.2.1 on JRE 1.6.0.03 884
Groovy Groovy Version: 1.5.6 JVM: 1.6.0_03-b05 uncompiled 81 363
Compiled to bytecode and run using java 360
UpdateGroovy Version: 1.6-beta-1 JVM: 1.6.0_03 104
PHP PHP 5.2.3-1ubuntu6.3 (cli) 85 593

O mais legal é que essas comparações sempre geram muita polêmica, vide os comentários no link abaixo.

Leia na íntegra no link Performance Comparison - C++ / Java / Python / Ruby/ Jython / JRuby / Groovy

Até mais,

quarta-feira, 2 de julho de 2008

Parabéns Firefox!!

Olá!

Novo recorde de downloads confirmado!
Parabéns!

Conseguimos!

Estabelecemos um novo Recorde Mundial no Livro dos Recordes Guinness para o software mais baixado em 24 horas. Com sua ajuda atingimos a marca de 8.002.530 de downloads.

Você agora faz parte de um novo Recorde Mundial e possui a melhor versão do Firefox já desenvolvida até o momento!

Não esqueça de baixar o seu certificado personalizado de participação no Recorde Mundial do Livro dos Recordes Guinness.

domingo, 29 de junho de 2008

Seja educado no trabalho

Olá!
Até mais,

quinta-feira, 26 de junho de 2008

Trabalho

Se a oportunidade não bater à sua porta, crie uma!



sábado, 21 de junho de 2008

10 Mandamentos do Arquiteto de Software

Olá!

Não sei se vocês já viram esses 10 Mandamentos do Arquiteto de Software pela Internet, eles são bem bacana pra quem está aprendendo a ser um arquiteto de software.

  1. 1.Se não for simples, não vale a pena.
  2. 2.Se não for estável, não vale a pena.
  3. 3.Se não for suportável, não vale a pena.
  4. 4.Jamais justifique a tecnologia pela tecnologia.
  5. 5.Seja flexível.
  6. 6.Questione tudo.
  7. 7.Não culpe o fabricante da tecnologia pelos erros que você cometeu.
  8. 8.O ótimo é inimigo do bom.
  9. 9.Faça uma trégua com a equipe de infra-estrutura.
  10. 10.Não reinvente a roda.

Eu retirei de um slide do extraordinário Prof. Daniel Viveiros. Gostei muito da aula dele hoje no IBTA Campinas.O diferencial é realmente a troca de experiências do dia-a-dia feitas nessas aulas do IBTA, não são como as aulas de uma faculdade qualquer onde a teoria linda e maravilhosa da literatura prevalece.

até mais,

segunda-feira, 16 de junho de 2008

De quem é a culpa?

Olá!

Olha só a saia justa que a falta de atenção pode causa!


Fonte: Não sei, recebi por email sem a fonte.

Até mais,

quinta-feira, 5 de junho de 2008

Site no ar novamente!!!

Olá!

Depois de ser atacado por crackers, depois de pegar fogo no data center e assim ficar 3 dias fora do ar, o www.furutani.eti.br está no ar novamente.
Se notarem qualquer falta de conteúdo por favor me avisem.

Obrigado

terça-feira, 3 de junho de 2008

Oracle Magazine

Olá!

A Oracle Magazine, revista voltada para os produtos Oracle principalmente o banco de dados, você pode receber ela impressa em casa no Brasil e sem pagar nada, para isso basta fazer a inscrição clicando nesse link.
Apesar da revista ser voltada para desenvolvedores Oracle, as vezes ela traz ótimos artigos sobre Java e .NET.


Até mais,

segunda-feira, 2 de junho de 2008

Não creio!!!

Olá!

Na revista Veja desta semana foi apresentado uma lista de 100 coisas boas que os imigrantes japoneses deram ao Brasil.
E entre shoyou, mangá, origami, sabrina sato, está a cidade de Bastos/SP, a capital nacional do ovo.


Se vocês verem no mapa ao lado, Bastos/SP fica bem pertinho da minha cidade natal.

Até mais,

Portal do Adobe Acrobat oferece editor de textos online e ferramenta para compartilhar dados

Olá

Saiu na info online

O portal Acrobat.com, ainda restrito para convidados, vem com cinco opções para trabalho colaborativo via internet, incluindo uma ferramenta para compartilhar arquivos, um conversor para PDF, um espaço para armazenamento e um ferramenta para conferências.

A estrela do portal, porém, será o editor de texto online Buzzword, que tem uma interface bastante avançada e contém opções como histórico de alterações e elementos gráficos para o texto. Apesar de um pouco pesado, o Buzzword traz inúmeras vantagens sobre o Google Docs, que tem aparência bem mais simples.

Outro serviço oferecido pelo portal Acrobat.com é o ConnectNow, para compartilhar o desktop criando conexões remotas entre duas máquinas, com direito a chat e videoconferência.

Link: http://info.abril.com.br/aberto/infonews/062008/02062008-5.shl

Muito legal o visual da aplicação, vamos ver se funciona.

Até mais,

quinta-feira, 29 de maio de 2008

FF 3 - Download Day 2008

Olá!

Vamos ajudar a fundação Mozilla a bater o recorde mundial de downloads em 24 horas.
Acesse o link http://www.spreadfirefox.com/pt-BR/worldrecord e confirme sua participação.
Neste momento 21:59h tem 11.832 participantes no Brasil

terça-feira, 27 de maio de 2008

Detector de colas

Olá!

Já não dá para fazer mais uma colinha básica tranquilamente.

Japonês cria software que facilita a identificação de alunos que colam da internet

Cansado de ver alunos enganando professores, o docente do Instituto de Tecnologia de Kanazawa, no Japão, Kazunari Sugimitsu, criou um software de computador para identificar os textos copiados.

Sugimitsu começou a desenvolver o software após comprovar que os trabalhos de dois de seus alunos tinham partes muito parecidas. Após dar uma busca na internet, o professor percebeu que as passagens similares tinham sido copiadas de um mesmo site.


Fonte: InfoMoney

Novo domínio

Olá!

Estou trocando o domínio do blog para www.furutani.com.br, o domínio antigo não funciona mais.

Quem lê o blog pelo feedburner não precisa se preocupar, pois já fiz a configuração necessária para o feedburner ler do endereço correto.

Obrigado

Até mais,
Roberto

sábado, 17 de maio de 2008

Pirocóptero

Olá!

O menor helicóptero desenvolvido para levar apenas uma pessoa vai realizar uma homenagem ao artista Leonardo da Vinci, voando sobre sua cidade natal, na Itália. Segundo Gennai Yanagisawa, 75, responsável pela engenhoca, da Vinci receberá a homenagem por ter sido a primeira pessoa a pensar em uma máquina que faz vôos verticais.

Tinha que ter um japonês na parada!


Fonte: G1

sexta-feira, 16 de maio de 2008

Nova tela de loading... do GMail

Olá!

Olha a nova tela de loading do GMail.

Até mais,

quarta-feira, 7 de maio de 2008

Oracle - PIPELINED Table Function

Olá!


Este é um pequeno artigo sobre o uso de um recurso do banco de dados Oracle que poucas pessoas conhecem, o nome desse recurso é PIPELINED Table Function ou simplesmente PIPELINED Function.
As ferramentas utilizadas nas implementações foram o Oracle SQL Developer e o Oracle 10g Express Edition rodam em Windows Vista.

Smartphone VoIP Livros de Java Apartamentos

###############
1. INTRODUÇÃO

Uma PIPELINED Table Function é uma função capaz de devolver várias linhas de resultados e são chamadas na cláusula FROM de uma instrução SELECT como se fosse uma tabela.
Nada melhor para aprender um novo recurso do que um exemplo bem simples.

O exemplo abaixo implementa um PIPELINED function que devolve a quantidade de linhas informada no parametro qtd_num.


CREATE OR REPLACE PACKAGE pac_fun_PIPELINED AS

type numeros IS TABLE OF NUMBER;

FUNCTION fun_gera_numeros(qtd_num number) RETURN numeros PIPELINED;

END pac_fun_PIPELINED;

CREATE OR REPLACE PACKAGE BODY pac_fun_PIPELINED AS

FUNCTION fun_gera_numeros(qtd_num NUMBER) RETURN numeros PIPELINED IS
BEGIN
FOR cont IN 1 .. qtd_num
LOOP
pipe ROW(cont * cont); -- Eleva ao quadrado
END LOOP;

RETURN;

END fun_gera_numeros;

END pac_fun_PIPELINED;


Para executar a function use a instrução SELECT abaixo:

SELECT * FROM TABLE(pac_fun_PIPELINED.fun_gera_numeros(9));


O resultado é exibido na figura abaixo.

Viu porque essa function pode ser chamada de "virtual table"?


Três itens nesse exemplo são caracteristicas de uma PIPELINED function:
1. A palavra-chave PIPELINED;
2. O comando PIPE ROW que joga o registro no result set;
3. E o comando RETURN; em "branco" apesar do tipo de retorno da function indicar numeros.

Geralmente os types e as functions são implementadas dentra de uma package, nada impede que você as crie fora. Só a titulo de curiosidade, quando uma package é solicitada, tudo o que foi implementada dentro dela sobe para a memória. Então, dependendo das suas necessidades não é interessante implementar uma package.

Apesar de ser permitido, no exemplo não foi indicado se o paramêtro da function é de entrada (IN) ou de saída (OUT).

A vantagem entre uma função PIPELINED e outra não PIPELINED é que a função PIPELINED processa os dados e joga os resultados imediatamente para o result set do SELECT, assim o chamador pode usar os dados mais rapidamente sem ter que esperar todo o processamento.
por outro lado a função que não é PIPELINED processa os dados e vai acumulando os resultados para depois devolver(usando a cláusula RETURN ou usando paramêtro de OUT) os resultados para chamador da função, só então ele poderá usar os dados.

###############
2. USANDO TIPOS DEFINIDOS

Agora será implementado um exemplo usando tipos definidos pelo programador.
Neste exemplo será criado uma function que calcula a tabuada de um número (num_tabuada).

create or replace
PACKAGE pac_fun_PIPELINED AS

type registro is record (
indice number,
multiplicador number,
resultado number
);

type tabuada IS TABLE OF registro;

FUNCTION fun_tabuada(num_tabuada number,
qtd_resultados number)
RETURN tabuada PIPELINED;

END pac_fun_PIPELINED;

create or replace
PACKAGE BODY pac_fun_PIPELINED AS

FUNCTION fun_tabuada(num_tabuada number,
qtd_resultados number)
RETURN tabuada PIPELINED IS
aux registro;
BEGIN

FOR cont IN 1 .. qtd_resultados
LOOP
aux.indice := cont;
aux.multiplicador := num_tabuada;
aux.resultado := cont * num_tabuada;
pipe ROW(aux);
END LOOP;

RETURN;

END fun_tabuada;

END pac_fun_PIPELINED;


Para calcular a tabuada do 7, a function será executada com o comando abaixo:
SELECT * FROM TABLE(pac_fun_PIPELINED.fun_tabuada(7, 10));

O resultado é exibido na figura abaixo.


#############################
3. USANDO JUNTO COM TABELAS DE VERDADE

Para este exemplo será necessário criar uma tabela, dois tipo, uma função e uma package

CREATE TABLE "CAD_PEDIDO_TABUADA"
( "NUM_TABUADA" NUMBER NOT NULL ENABLE,
"DATA_PEDIDO" DATE NOT NULL ENABLE,
"QTD_LINHAS" NUMBER,
"CODIGO" NUMBER,
CONSTRAINT "PK_CAD_PEDIDO_TABUADA" PRIMARY KEY ("CODIGO")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS" ENABLE
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS" ;

Inserindo dados na tabela.

INSERT INTO "CAD_PEDIDO_TABUADA" (NUM_TABUADA, DATA_PEDIDO, QTD_LINHAS, CODIGO) VALUES ('7', TO_DATE('05/05/08', 'DD/MM/RR'), '5', '2');
INSERT INTO "CAD_PEDIDO_TABUADA" (NUM_TABUADA, DATA_PEDIDO, QTD_LINHAS, CODIGO) VALUES ('2', TO_DATE('05/05/08', 'DD/MM/RR'), '11', '1');
Abaixo a package com tudo o que foi criado até agora para os exemplos.

CREATE OR REPLACE PACKAGE pac_fun_PIPELINED AS

-- Exemplo 1
type numeros IS TABLE OF NUMBER;

-- Exemplo 2
type registro IS record(indice NUMBER, multiplicador NUMBER, resultado NUMBER);
type tabuada IS TABLE OF registro;

-- Exemplo 3
type pedido_tabuada IS TABLE OF cad_pedido_tabuada % rowtype;
TYPE tab_refcursor IS REF CURSOR RETURN cad_pedido_tabuada%ROWTYPE;

----------------------------------------------------------
-- Exemplo 1
FUNCTION fun_gera_numeros(qtd_num IN NUMBER) RETURN numeros PIPELINED;

-- Exemplo 2
FUNCTION fun_tabuada(num_tabuada NUMBER, qtd_resultados NUMBER) RETURN tabuada PIPELINED;

-- Exemplo 3
FUNCTION fun_cad_tabuada(cursor_tabuada in tab_refcursor) RETURN tabuada PIPELINED;

END pac_fun_PIPELINED;

create or replace
PACKAGE BODY pac_fun_PIPELINED AS

FUNCTION fun_gera_numeros(qtd_num in NUMBER) RETURN numeros PIPELINED IS
BEGIN
FOR cont IN 1 .. qtd_num
LOOP
pipe ROW(cont * cont); -- Eleva ao quadrado
END LOOP;

RETURN;

END fun_gera_numeros;

FUNCTION fun_tabuada(num_tabuada number,
qtd_resultados number)
RETURN tabuada PIPELINED IS
aux registro;
BEGIN

FOR cont IN 1 .. qtd_resultados
LOOP
aux.indice := cont;
aux.multiplicador := num_tabuada;
aux.resultado := cont * num_tabuada;
pipe ROW(aux);
END LOOP;

RETURN;

END fun_tabuada;

FUNCTION fun_cad_tabuada(cursor_tabuada in tab_refcursor) RETURN tabuada PIPELINED IS
temp cad_pedido_tabuada%rowtype;
aux registro;
erro varchar2(500) := 'ERRO: ';
BEGIN

loop
fetch cursor_tabuada into temp;
exit when cursor_tabuada%notfound;

-- Calcula a tabuada até a quantidade de linhas cadastradas.
for contador IN 1..temp.qtd_linhas loop
aux.indice := contador;
aux.multiplicador := temp.NUM_TABUADA;
aux.resultado := contador * temp.NUM_TABUADA;

PIPE ROW (aux);
end loop;

end loop;

EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(erro || sqlerrm);

END fun_cad_tabuada;

END pac_fun_PIPELINED;


Para executar a function use a instrução abaixo:
SELECT indice, multiplicador, resultado
FROM TABLE(pac_fun_PIPELINED.fun_cad_tabuada(
cursor(select NUM_TABUADA,DATA_PEDIDO,DATA_PROCESS,QTD_LINHAS,CODIGO
from CAD_PEDIDO_TABUADA
where codigo = 1)
))

O resultado é exibido na figura abaixo.

Não foi possível percorrer todos os registros da tabela cad_pedido_tabuada retirando a claúsula WHERE, o Oracle sempre processa o primeiro registro somente. Não descobri porque é assim e o motivo dessa limitação.
Não foi possível dar commit dentro da function, também não descobri por que razão a Oracle limitou o uso desse recurso.

###############
4. PARALLEL PIPELINED FUNCTIONS

As funções PIPELINED podem se tornar ainda mais poderosas, pois são paralelizáveis, com isso o processamento dos dados ficam mais rápidos.
Veja nesse link como funciona as PIPELINED and parallel functions.
Para utilizar os recursos de paralelização é preciso seguir algumas regras.
a) A função deve ser assinada com a palavra-chave PARALLEL_ENABLE;
b) A função tem de ser alimentada com um ref cursor.
Esse tópico é apenas para divulgação, até porque eu não possuo conhecimento sobre esse recurso do Oracle.
Para saber mais recomendo acessar o link: Parallel Table Functions.


###############
5. LINKS PARA SABER MAIS

http://www.codeguru.com/cpp/data/mfc_database/oracle/article.php/c4285/
http://download.oracle.com/docs/cd/B14117_01/appdev.101/b10800/dcitblfns.htm

http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28425/pipe_paral_tbl.htm
http://download.oracle.com/docs/cd/B14117_01/appdev.101/b10800/dcitblfnxemp.htm

Até mais,

Carro novo
Blue-ray
Monitor
Notebooks
Playstation 3
Celular
Música

terça-feira, 6 de maio de 2008

Java na veia!

Olá!

Para quem não conheçe, está aí a foto da cachaça Java tirada por mim no museu da cachaça em Tupã/SP.




Neste museu é possível achar pérolas como a cachaça "Na Bunda".


E você já tomou "Na Bunda"?

Até mais,

terça-feira, 29 de abril de 2008

Conheçe a função PIPELINED?

Olá!

Você já ouviu em pipelined functions? Não?!
Em se tratando de Oracle as funções pipelined permitem obter facilmente dados que não sejam oriundos de tabelas. Se você tem um cálculo muito complexo já implementado em procedures e não quer ter o trabalho de re-escrever em Java você pode criar um function pipelined e usar um simples select * from table(fun_calc_complexo(1)) para obter os valores necessários para sua aplicação como se fosse uma tabela.
Isso ajuda muito quando o retorno esperado de uma function ou precedure é um type of table/record, por que é muito dificil obter isso diretamente do paramêtro de out da procedure com Java.

Links em inglês para estudos:

  1. Using PIPELINED in PL/SQL
  2. Oracle Pipelined Table Functions
  3. Oracle Tips by Burleson

Em breve estarei postando aqui um pequeno tutorial em português sobre esse tema.

Até mais,

segunda-feira, 28 de abril de 2008

Desconto no IPVA

Olá!

Saiu na InfoMoney, "gastos com pedágios poderá ser abatido do IPVA".

A Assembléia Legislativa do Estado de São Paulo aprovou, por unanimidade, na última quarta-feira (23), o projeto de lei número 463/06, que prevê o abatimento de gastos com pedágios paulistas no IPVA (Imposto sobre Propriedade de Veículos Automotores).

De acordo com o projeto, o desconto será de até 30% do valor total do imposto, para pessoa física, e até 10% para pessoa jurídica. Para conseguir o abatimento, o contribuinte apresenta, no ato do pagamento do IPVA, os recibos emitidos pelas concessionárias. O crédito será totalizado no dia 31 de dezembro de cada ano.

Vamos ver se isso será cumprido na prática.
Os meus gastos com pedágios chegam a quase 50% do que eu gasto com combustível quando viajo de Bragança Paulista/SP para Iacri/SP. Em pouco mais de 1000Km pago R$70,00, tudo bem que a rodovia pedagiada é muito boa, tem socorro 24Hs é bem sinalizada, mas podia ser mais barato né? Na Rod. Washington Luíz em Rio Claro tem um pedágio que custa absurdos R$10 reais e eu nem ando 50KM nela.

Fonte: InfoMoney

Até Mais,

quinta-feira, 24 de abril de 2008

Dicionário da língua portuguesa

Olá

A USP digitalizou o dicionário escrito pelo padre Bluteau e disponibilizou na internet neste endereço http://www.ieb.usp.br/online/

Por ser um dicionário antigo, foi necessário pensar num sistema de busca de verbetes que englobasse tanto a grafia original da palavra no dicionário quanto sua grafia equivalente no português do Brasil atual, disse a pesquisadora.
Fonte: Estadão

Até mais,

Procurando: Carro novo? TV de LCD? monitor? scanner?

terça-feira, 8 de abril de 2008

Como fazer as coisas chatas da vida mais rapidamente?

Olá

No site Sprint Waitless tem um coleção de filminhos que ensinam a fazer as coisas do dia-a-dia mais rapidamente. Como por exemplo amarrar o tênis, tirar a camiseta do corpo, etc.



Até mais,

Prédio gera sua própria energia elétrica

Olá

Em Barhein foi inaugurado um prédio com três hélices de 29 metros de diâmetro cada, que são usados para gerar energia elétrica. Cerca de 15% da energia consumida no prédio virá desses geradores eólicos, está longe de ser auto-suficiente, mas é uma ótima iniciativa.

Fonte: invertia

Até mais

domingo, 6 de abril de 2008

Design Patterns

Olá

Rodrigo Panachi irá apresentar no seu blog alguns dos design patterns mais usados. Ele começou com o Singleton.
Eu já fiz muito singletons, tinha até template para isso no Eclipse, mas depois de um probleminha de concorrência deixei ele de lado.

Até mais,

Você reconhece o carro pelo farol?

Olá

Essa vai para quem é apaixonado por carros.
O G1 publicou um quiz sobre os faróis dos carros. Poderia ter mais um nível de dificuldade, que seria reconhecer o carro de noite com os faróis acessos, ai sim ficaria legal.

Até mais

sábado, 29 de março de 2008

Convertendo vídeos para assistir no PSP

Olá!

Vou deixar um dica de como converter vídeos (rapidamente) para serem assistidos no PSP utilizando o PSP Video Express Free. (Download)

Irei usar o filme American Pie 6-Caindo em Tentação para ilustrar o exemplo. Esse filme tem 1h28m e 379MB no formato RealVideo 4 - RMVB - 608x304 23.98fps 522Kbps. A conversão demorou 40 minutos, é bem mais rápido que outros conversores que eu tentei usar.
É muito facil usar o PSP Video Express Free.
Após a instalação, abra o programa, clique no botão Open, selecione Open File e procure pelo video no seu HD. O programa irá reproduzir o video automaticamente. Eu usei a resolução 400x192.


Para iniciar a conversão clique em Record It. Após 40 minutos ele gerou um arquivo MP4 com 131MB.


Abaixo o vídeo rodando no console.

Com a qualidade usada não ficou muito bom, em algumas cenas a imagem fica quadriculada, se fosse selecionada a terceira posição (aproximando o seletor da opção Large & High Quality) ficaria melhor.

Até mais,

sexta-feira, 28 de março de 2008

Opa! Cadê o Sistema Operacional?

Olá

Abaixo um postpublicado por Guilherme Schäffer que achei interessante, e referencia-lo aqui no meu blog.

Ainda em 2007 a BEA anunciou o lançamento de uma versão do seu servidor de aplicação Weblogic e de sua JVM JRockit que dispensa o uso de sistema operacional, e roda diretamente sobre o hypervisor da VMware. Esta é uma iniciativa muito interessante, de boa visão, e que deve marcar o início de um novo ciclo na TI.

Leia na integra.



Até mais,

quinta-feira, 27 de março de 2008

Atualizei o firmware do meu PSP

Olá

Atualizei o firmware do meu PSP. E daí?
Bom... acho que tem muita gente com o mesmo problema que eu, medo de mexer no que está funcionando e acabar quebrando (principalmente se for um PSP, que hoje está por volta de R$750).
Esse trauma deve vir de antigamente, quando era possível atualizar a BIOS da placa-mãe, mas se não o fizesse direito a placa-mãe iria pro saco. Não sei se isso é uma lenda nerd, mas assusta. Voltando ao PSP... Eu já comprei ele destravado com o Custom Firmware - CFW 3.10 OE-A, eu tinha a sensação de que a atualização me permitiria rodar jogos que não estavam funcionando na versão atual. Pois eu crie coragem em usar um software criado por cidadão conhecido por Silver Fox e atualizei para a versão 3.52M33 seguindo um tutorial disponível no Planeta PSP.
A atualização foi fácil, rápida e sem complicação. Mas o jogo não funcionou! Fiz testes com outros jogos que não funcionavam com o CFW anterior e não obtive sucesso.
Mas valeu pela experiência em atualizar o firmware com esses programas encontrados em forúns.

Por falar em nerd, vocês ouvem o nerdcast?

Até mais,

sexta-feira, 21 de março de 2008

Você sabia que combústiveis não geram créditos no Nota Fiscal Paulista?

Olá!

É isso mesmo, quando você abastece seu carro com álcool, diesel, gás ou gasolina e pede a nota fiscal com CPF você
não irá receber créditos pelo combústivel adquirido. Eu peço nota com CPF desde que começou a ser implantado o programa NFP, em outubro de 2007, e em postos de gasolina desde janeiro de 2008 mas eu fiquei sabendo que gasolina não gera créditos ontem quando coloquei coloquei gasolina no meu carro para poder vir para Iacri/SP, de onde eu escrevo esse post.

A Fazenda de São Paulo confirma que produtos sujeitos à substituição tributária, como veículos e combustíveis, não geram recolhimento de ICMS pelo varejo, pois o imposto já foi pago por outros elos da cadeia produtiva. A secretária, diz, porém, que mesmo assim o consumidor terá créditos, porque peças e acessórios vendidos por uma concessionária, ou as mercadorias de loja de conveniência de um posto de gasolina, por exemplo, geram imposto (ICMS) a recolher. "O crédito tende a ser muito pequeno, já que a venda da loja de conveniência representa pouco das operações totais de um posto de gasolina", analisa Silva. O crédito de ICMS, lembra, leva em consideração o imposto recolhido pelo varejista e a proporção da aquisição do consumidor final em relação ao total de vendas do varejista.
O trecho acima foi retirado de uma notícia publica no site planejamento.gov.br.

Será é por esse mesmo motivo que telefonia e energia não entram nesse programa?

No site Posto de Observação também tem uma matéria a respeito disso e o trabalho que os frentistas terão para explicar para os consumidores que combústiveis não geram créditos. Leia a matéria completa clicando aqui.

Um trecho interessante dessa matéria vem a seguir:

Mas, embora não possa obter créditos com o abastecimento, o consumidor terá a direito a participar de sorteios, a cada R$ 100,00, desde que registre a nota fiscal que recebeu do posto no site da Secretaria da Fazenda. Esse mais um motivo pelo qual os postos não estão isentos de emitir a Nota Fiscal Paulista.
Não encontrei nada sobre esses sorteios de R$100 no site oficial da NFP.
O pior vem abaixo:

Além disso, todos os demais produtos comercializados pelo estabelecimento ou pela loja de conveniência gerarão créditos de ICMS para o consumidor, excetuando-se aqueles que estão no regime de substituição tributária, como cigarro, refrigerante, cerveja e sorvete.


Poxa, nem com refri, cerveja e sorvete podemos contar para "ganhar" créditos.

Até mais

sábado, 15 de março de 2008

Começou a pós-graduação!

Olá!

Hoje fui a aula inaugural do curso de pós-graduação Engenharia de Software baseada em SOA, em Campinas, fiquei muito empolgado com o curso, com os professores e com a instituição. Estava entre estudar na FIAP ou na IBTA. Optei por fazer uma pós na IBTA por que ouvi falar muito bem da metodologia e da filosofia de ensinar dela.


Os professores que dão aula na IBTA geralmente são pessoas do mercado, que trabalham na área em que dão aula, não são aqueles estudantes profissionais (leia-se acadêmicos, mestres e doutores) cheios de teorias.
A ementa do curso me agradou bastante, apesar de já ter estudado RUP à algum tempo espero me aprofundar ainda mais em processos de engenharia de SW, mas não ficar só em RUP.


Espero chegar são e salvo ao fim desse curso!

Até mais

sábado, 1 de março de 2008

Cem Anos da Imigração Japonesa no Brasil

Olá!


Neste ano é comemorado o centenário da imigração japonesa no Brasil, em 18 de junho de 1908 partiu do porto da cidade de Kobe o navio Kasato Maru com 781 imigrantes rumo ao porto de Santos/SP.
Ao chegarem aqui eles fundaram vários núcleos em várias regiões do estado de São Paulo e do Paraná. Para mim o núcleo mais importante é foi o Núcleo BASTOS, que deu origem a cidade de Bastos/SP onde a minha família mora até hoje.


Localização de Bastos no Mapa Google Maps


Os imigrantes desse núcleo apostaram na avicultura, por isso hoje, Bastos é conhecido com capital nacional do ovo.

Praça do Ovo


Eu como descedente de japoneses não poderia ficar de fora e acompanho as notícias através dos sites:

Jornal Nippo-Brasil
Jornal Estadão
Jornal Folha de SP
G1

Saiba mais sobre a imigração no Wikipédia.

Até mais

sexta-feira, 22 de fevereiro de 2008

Queries hierarquicas no Oracle

Olá

O Oracle tem uma função muito interessante chamada connect by.
Com essa função você pode criar queries hierarquicas, muito útil para montar menus, principalmente os menus do tipo árvore (Tree view).

Sintaxe:

START WITH  CONNECT BY [NOCYCLE] 

ou
CONNECT BY [NOCYCLE]  START WITH 


Exemplo:
Eu tenho uma tabela com a seguinte estrutura:
create table TAB_TREE_VIEW(
COD_ITEM_TREE_VIEW NUMBER not null,
COD_ITEM_PAI_TREE_VIEW NUMBER,
DESCRICAO VARCHAR2(20),
URL VARCHAR2(100),
DATA_INCLUSAO DATE not null);

Nessa tabela existe um auto-relacionamento, para adicionar um registro o valor da coluna COD_ITEM_PAI_TREE_VIEW deve existir na coluna COD_ITEM_TREE_VIEW.

Abaixo os constraints da tabela, observe a foreign key:
alter table TAB_TREE_VIEW
add constraint PK_TAB_TREE_VIEW primary key (COD_ITEM_TREE_VIEW)
using index
...
alter table TAB_TREE_VIEW
add constraint FK_TAB_TREE_VIEW foreign key (COD_ITEM_TREE_VIEW)
references TAB_TREE_VIEW (COD_ITEM_TREE_VIEW) on delete cascade;


Depois de inserir alguns dados para testes, eu criei a seguinte consulta:
select cod_item_tree_view,
cod_item_pai_tree_view,
level,
descricao,
url,
data_inclusao
from tab_tree_view
start with cod_item_pai_tree_view is null
connect by prior cod_item_tree_view = cod_item_pai_tree_view
order by level


E ela me retornou:





















COD_ITEM_TREE_VIEWCOD_ITEM_PAI_TREE_VIEWLEVELDESCRICAOURLDATA_INCLUSAO
0
null
1
SITES FAVORITOShttp://www.furutani.eti.br21-Feb-08
13

null
1
IMPORTANTEShttp://www.furutani.eti.br21-Feb-08
1
0
2
BUSCADOREShttp://www.furutani.eti.br21-Feb-08
5
0
2
PORTAIShttp://www.furutani.eti.br21-Feb-08
15
13
2
GLOBOhttp://www.globo.com21-Feb-08
14
13
2
GOOGLEhttp://www.google.com.br21-Feb-08
9
0
2
BLOGShttp://www.furutani.eti.br/blog21-Feb-08
2
1
3
GOOGLEhttp://www.google.com.br21-Feb-08
7
5
3
TERRAhttp://www.terra.com.br21-Feb-08
11
9
3
TESTEhttp://www.TESTE.COM21-Feb-08
12
9
3
BLOGGERhttp://www.blogger.com21-Feb-08
10
9
3
MEUhttp://www.robertofurutani.com21-Feb-08
8
5
3
GLOBOhttp://www.globo.com21-Feb-08
6
5
3
UOLhttp://www.uol.com.br21-Feb-08
3
1
3
CADEhttp://www.CADE.com.br21-Feb-08
4
1
3
MSNhttp://www.MSN.com.br21-Feb-08


O que tem de diferente nessa query?

1. A coluna level - Isso é uma pseudo-coluna que indica qual o nível de hierarquia do registro;
2. A condição start with cod_item_pai_tree_view is null - Especifica a condição de inicio da hierarquia, nesse caso a hierarquica inicia-se com os registros onde cod_item_pai_tree_view é null;
3. A condição connect by prior cod_item_tree_view = cod_item_pai_tree_view - Especifica a condição de ligação entre pais e filhos. Nesse caso o cod_item_pai_tree_view indica de quem o registro é filho.

Abaixo descrevo as pseudo-colunas e operadores relacionados com connect by.


LEVEL - Retorna 1 se é raiz, 2 se é filho da raiz, 3 se é filho o filho da raiz, e assim por diante;
CONNECT_BY_ISLEAF - Retorna 1 se é a ponta da hierarquia, 0 caso contrário;
CONNECT_BY_ISCYCLE - Retorna 1 se o registro tem um filho que também é seu pai.
ORDER SIBLINGS BY - Ordena os filhos de um mesmo pai;
CONNECT_BY_ROOT - Retorna o valor da coluna do pai da linha;
SYS_CONNECT_BY_PATH - Retorna o caminho para a linha atual com o separador informado.

Mais informações acesse: Hierarchical Queries
http://www.psoug.org/reference/connectby.html

Até mais