Dicas para Wiki em Meteorologia

POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

O Grupo de Estudos, Prognósticos e Análises de Clima da UFRJ (GePaC) me pediu para desenvolver um portal de conteúdo na internet, que não só disponibilizasse produtos mas também trabalhos e artigos. Para isso eu logo pensei que a saída correta era apostar em uma página de Wiki, ou seja, um site onde cada aluno, professor e colaborador ficaria responsável por atualizar o que lhe compete.

Instalei o MediaWiki em poucos minutos e recomendo! O help do sistema está em http://meta.wikimedia.org/wiki/Help:Contents

Coloco abaixo algumas dicas e trechos de códigos que para mim foram bem úteis:

PS.: o site do GePaC ainda está em endereço e com cara provisórios, mas em breve será lançado oficialmente.

Inserir figuras como links externos usando Clickpic
Uso:
{{clickpic|LINK|ENDEREÇODAFIGURA}}
{{clickpic|Clima|http://www.algo.com/clima.jpg}}
Conteúdo da Predefinição:Clickpic
[{{SERVER}}{{localurl:{{{1}}}}} {{{2}}}]


Tabela em WIKI com formatação de HTML e CSS
{| valign="top" class="wikitable"
style="margin: 1em auto 1em auto"
|-
| A 1
| B 1
| C 1
|-
| A 2
| B 2
| C 2
|-
|}


Usando iframe em Wiki
Uso:
< websiteFrame >
website=http://www.paginaasermostrada.com.br
height=400
width=100%
border=0
scroll=yes
< / websiteFrame >

Instalação desta tag de Wiki:
Website in iFrame


POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Workshop Latino Americano de Dados - UNIDATA

No dia 21 de agosto de 2008 teve início o Latin American Data Workshop (Workshop Latino Americano de Dados) do Unidata Program Center / UCAR e com apoio do Instituto de Astronomia, Geofísica e Ciências Atmosféricas da USP (onde também foi realizado o workshop).

O programa foi dividido em 3 dias com muitas apresentações e exemplos práticos de como o mundo científico da nossa área de meteorologia está se adaptando à nova realidade de gerar toneladas de informações e compartilhá-las em tempo real, para aplicações também em tempo real.

A responsabilidade do workshop ficou a cargo de pessoas que já têm um longo histórico em lidar com dados geofísicos, como Tom Yoksas (UNIDATA/EUA), Waldenio Gambi (CPTEC/INPE), Tom Whittaker (University of Wisconsin/EUA) e Guilherme Chagas (UA/Portugal).

O workshop cobriu vários aspectos, como:
  • o uso do sistema LDM de distribuição de informação para compartilhar dados meteorológicos

  • o papel do Brasil no IDD

  • o uso de programas de visualização desses dados (McIDAS, IDV, Google Earth, etc)

  • ferramentas de ensino e colaboração online


Muita gente sequer conhece muitas dessas siglas e tópicos aí em cima. Nos próximos posts vou dar um enfoque a cada um desses temas e explicar cada uma dessas siglas e serviços!

Para maiores informações sobre o workshop, visite o site http://www.unidata.ucar.edu/events/2008LatinAmericanDataWorkshop/, que tem várias fotos, apresentações e material do curso.

OpenGrADS Cookbook

Veja Também:
- OpenGrADS: uma nova versão do GrADS com grandes melhorias


Eu comentei num post anterior (OpenGrADS: uma nova versão do GrADS com grandes melhorias) que a comunidade científica tem se esforçado para manter um projeto de código livre chamado OpenGrADS, que contém uma série de melhorias para o GrADS. Para quem não sabe GrADS significa Grid Analysis and Display System e é um programa de visualização de dados georeferenciados geofísicos muito (muito) utilizado na área de meteorologia. Ele foi desenvolvido no começo da década de 90 e é mantido até hoje por um grupo de desenvolvedores no IGES (Institute of Global Environment and Society/COLA).

O projeto OpenGrADS veio para dinamizar o processo de atualização do GrADS, em função das necessidades da própria comunidade e não necessariamente do IGES.

Tem muita coisa legal rolando nesse projeto e uma das mais interessantes para o usuário final é o OpenGrADS Cookbook. Traduzindo ao pé da letra seria "Caderno de receitas do OpenGrads".

No caderno de receitas, a comunidade pode postar (seguindo algumas regras) códigos, dicas e tutoriais sobre como fazer determinadas coisas no GrADS. Têm tópicos como "
Saving GrADS variable data to a text file", "Creating GrADS binary station data from ASCII", "Scatter plot with linear fit and basic statistics" e eu mesmo já escrevi uma receita: Gridding and plotting station data.

Acredito que esse seja o meio mais facil de dividir conhecimento sobre o GrADS e seu irmão mais novo (e mais esperto) OpenGrADS.

Nas próximas semanas vou escrever aqui com mais calma algumas das melhorias do OpenGrADS, como figuras mais bem acabadas, suporte a shape file e várias interfaces.

Em tempo: qualquer um pode contribuir no OpenGrADS Cookbook. Basta se cadastrar, confirmar o cadastro, escrever uma prévia da receita (em inglês, claro) e submeter para o administrador ver se a receita é boa. Se for aprovada, basta fechar a receita!



Veja Também:
- OpenGrADS: uma nova versão do GrADS com grandes melhorias

Previsão do Tempo no orkut

Veja Também:
- Widgets de Previsão do Tempo para Blogs e Sites
- Gadgets de Previsão do Tempo para iGoogle
- Complemento de Firefox para Previsão do Tempo
- Opensocial e Previsão do Tempo


Finalmente começam a aparecer os primeiros aplicativos sociais de meteorologia no orkut.

Na realidade até agora só foi a público um aplicativo: o Tempo Amigo, da Tempo Agora (Somar).

A idéia do aplicativo é muito boa. Na descrição do aplicativo: "Localize seus amigos pelo mapa, veja onde eles moram, e tambem confira a previsão do tempo para a sua cidade, e para as cidades dos seus amigos com as informações do TempoAgora."

O aplicativo é essencialmente um mapa com a sua foto de orkut e a de seus amigos num mapa e na lateral uma previsão simples para o próprio dia e para o dia seguinte.


A minha opinião faltou um pouco mais de cuidado ao desenvolver esse aplicativo, por vários detalhes.

Primeiro que ao iniciar o aplicativo a foto de orkut sempre aparece num lugar diferente. Nas duas imagens (aqui em cima e aqui embaixo) a minha foto apareceu primeiro na favela do Borel e depois boiando na Baia de Guanabara! Ué? Não poderiam pegar o CEP do perfil de orkut e colocar a minha foto na minha rua? Ou mesmo usar o esquema do aplicativo Vizinhança, que pergunta para você seu endereço e tem até balões com informações e Google Earth embutido.



Segundo que o aplicativo explora muito pouco a interatividade do orkut e também a interface do mapa do google maps. Têm infinitas possibilidades de coisas para fazer e a unica coisa que fazem é um mapa e uma previsao estática fora do mapa?

Entenderia algo assim no Orkut Sandbox, em fase de testes, mas para algo lançado oficialmente e até com hotsite no Tempo Agora, achei muito pobre.

Bem, já é pelo menos um começo. É esperar para ver se vão lançar aplicativos melhores no futuro!

Veja Também:
- Widgets de Previsão do Tempo para Blogs e Sites
- Gadgets de Previsão do Tempo para iGoogle
- Complemento de Firefox para Previsão do Tempo
- Opensocial e Previsão do Tempo

Exemplo de consultas para MySQL

POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Eu coloquei abaixo alguns exemplos de consultas para bancos de dados MySQL em meteorologia...

CONSULTAS SIMPLES DA TABELA WRF
select * from WRF;
select Tempo_Início, Tempo_Previsão, Localidade, T2M from WRF;
select T2M from WRF where Localidade="Palmas" and
Tempo_Previsão="1993-05-02 03:00:00";
select T2M from WRF where (Localidade="Palmas" or
Localidade="Abreulandia") and
Tempo_Previsão<"1993-05-02 03:00:00";

USANDO GROUP
select Localidade,max(PREC_CONV)-min(PREC_CONV) from WRF
where Tempo_Inicio="2007-03-20 00:00:00" and
(Tempo_Previsao>="2007-03-21 09:00:00" and
Tempo_Previsao<="2007-03-22 15:00:00") and
(Localidade="Itaperuna" or
Localidade="Rio de Janeiro") group by Localidade;

CONTAGEM
select count(*) from WRF
where Tempo_Início="2007-03-13 00:00:00" and
Localidade="Paraty";

UPDATE
update WRF set PREC_CONV=PREC_CONV*10;

DELETE
delete from WRF
where Localidade!="Rio de Janeiro" and
Localidade!="Palmas";

MULTIPLAS TABELAS
select Localidade from WRF9km,Localidade
where Tempo_Inicio='2007-05-14 00:00:00' and
Tempo_Inicio=Tempo_Previsao and
Localidade=Localidade.Nome limit 20;

PREC DIARIA USANDO CALCULO DE DATAS E GROUP BY
Pega so as 24h apesar de consultar tudo, 24 em 24h

select * from
(select Tempo_Inicio as t0,
(1+floor((Tempo_Previsao-Tempo_Inicio-30000)/1000000))*24 as dia,
max(Tempo_Previsao) as t1,max((PREC_CONV+PREC_NCONV)*1) as p
from MM5
where Localidade='Rio de Janeiro' and
Tempo_Inicio>='2003-05-02 00:00:00' and
Tempo_Inicio<='2003-05-05 00:00:00' and
Tempo_Previsao>='2003-05-02 03:00:00' and
Tempo_Previsao<'2003-05-10 03:00:00'
group by 2,1 order by 1,2) as a where a.dia=24;

Junta a precipitação de uma tabela com a lat lon em outra
SELECT description,lat,lon,Prec FROM GeorioDia
INNER JOIN GeorioLatLon ON
GeorioLatLon.description = GeorioDia.Localidade
where GeorioDia.Data = '2007-09-09 00:00:00'
order by description asc;

PEGA WRF EM ALGUMAS CIDADES SO AS PRIMEIRAS 48 HORAS
SELECT Localidade,Tempo_Inicio,Tempo_Previsao,
FORMAT((UNIX_TIMESTAMP(Tempo_Previsao)-
UNIX_TIMESTAMP(Tempo_Inicio))/(60*60),0) as hprev,
U10M, V10M FROM `WRF`
WHERE (Localidade='Itaperuna' or
Localidade='Campos dos Goytacazes' or
Localidade='Resende' or
Localidade='Arraial do Cabo' or
Localidade='Macae' or
Localidade='Niteroi' or
Localidade='Parati' or
Localidade='Petropolis' or
Localidade='Teresopolis' or
Localidade='Duque de Caxias' or
Localidade='Mage')
and
((UNIX_TIMESTAMP(Tempo_Previsao)-
UNIX_TIMESTAMP(Tempo_Inicio))/(60*60)) <= 48 and
Tempo_Inicio>='2006-01-01 00:00:00' and
Tempo_Inicio<'2007-01-01 00:00:00';



POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Tabelas de exemplo para MySQL

Esses são exemplos de como criar tabelas em MySQL para determinadas aplicações em Meteorologia

TABELA DE MODELO - PREVISÕES EM SUPERFÍCIE

use modelos ;
CREATE TABLE `WRF` (
`Tempo_Início` datetime NOT NULL default '0000-00-00 00:00:00',
`Tempo_Previsão` datetime NOT NULL default '0000-00-00 00:00:00',
`Localidade` varchar(50) NOT NULL default '',
`PNMM` float NOT NULL default '0',
`PSUP` float NOT NULL default '0',
`T2M` float NOT NULL default '0',
`Q2M` float NOT NULL default '0',
`NEBB` float NOT NULL default '0',
`NEBM` float NOT NULL default '0',
`NEBA` float NOT NULL default '0',
`U10M` float NOT NULL default '0',
`V10M` float NOT NULL default '0',
`PREC_CONV` float NOT NULL default '0',
`PREC_NCONV` float NOT NULL default '0',
PRIMARY KEY (`Tempo_Início`,`Tempo_Previsão
`,`Localidade`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
show tables;

ou

CREATE TABLE `WRFClima` (
`Tempo` datetime NOT NULL default '0000-00-00 00:00:00',
`Lat` float NOT NULL default '0',
`Lon` float NOT NULL default '0',
`PNMM` float NOT NULL default '0',
`PSUP` float NOT NULL default '0',
`T2M` float NOT NULL default '0',
`Q2M` float NOT NULL default '0',
`NEBB` float NOT NULL default '0',
`NEBM` float NOT NULL default '0',
`NEBA` float NOT NULL default '0',
`U10M` float NOT NULL default '0',
`V10M` float NOT NULL default '0',
`PREC_CONV` float NOT NULL default '0',
`PREC_NCONV` float NOT NULL default '0',
PRIMARY KEY (`Tempo`,`Lat`,`Lon`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;



TABELA DE MODELO - PREVISÕES EM ALTITUDE
use modelos ;
CREATE TABLE `MM5alt` (
`Tempo_Inicio` datetime NOT NULL default '0000-00-00 00:00:00',
`Tempo_Previsao` datetime NOT NULL default '0000-00-00 00:00:00',
`Localidade` varchar(50) NOT NULL default '',
`P` float NOT NULL default '0',
`T` float NOT NULL default '0',
`Td` float NOT NULL default '0',
`U` float NOT NULL default '0',
`V` float NOT NULL default '0',
PRIMARY KEY (`Tempo_Inicio`,`Tempo_Previsao`,`Localidade`,`P`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
show tables;



TABELA DE MODELO - LOCALIDADES
use modelos ;
CREATE TABLE `Localidade` (
`Nome` varchar(50) NOT NULL default '',
`NomeOK` varchar(50) NOT NULL default '',
`Indice` float NOT NULL default '0',
`lat` float NOT NULL default '0',
`lon` float NOT NULL default '0',
PRIMARY KEY (`Nome`,`Indice`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
show tables;

Dicas para KSH

POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

FOREACH (que na realidade é for heheh) NUM LS COM HIDE
for item in `ls -lrt --hide=*ksh | head -3 | awk '{print $9}'`
do
echo $item
head -2 $item
head -2 $item | awk '{print "'$item' "$1" "$5"\n'$item' "$9}'
done

IDEM USANDO SUBSTRING E TABULAÇÃO
head -2 $item | awk '{print "'$item'\t
"substr($1,7,4)"-"substr($1,1,2)"-"substr($1,4,2)" 00:00:00\t
"$2" "$3" "$4" "$5}'

PASSAR VARIAVEL SHELL PARA O AWK
awk -v dd="20$ano $mes $dia 00 " '{print dd $1}' dados.txt

CRIA UM VETOR
set -A prev td t2m t rh pslv nt nm nb na k dvpt chuva w

OBTEM DATAS DO SISTEMA
d=`date +'%d'`
m=`date +'%m'`
y=`date +'%Y'`

LOOP DE HORÁRIOS E VARIÁVEIS PEGANDO O TAMANHO DO VETOR
i=0
while (( $i < 170 )) do
ii=0
while (( $ii < ${#prev[*]} )) do
if ((i<10)) then
echo "Gerando ${prev[$ii]}0${i}.png"
else
echo "Gerando ${prev[$ii]}${i}.png"
fi
let ii=$ii+1
done
let i=$i+3
done

VENDO O TAMANHO DO TERCEIRO ARGUMENTO (E SE EXISTE)
if (( "${#3}"!="1")) then
echo "Terceiro argumento existe e so tem um caracter"
fi


- Vários tipos de IF

IF BEM SIMPLES
if (($1>=24)) then
echo "oi"
else
echo "tchau"
fi

IF ESTILO NUMÉRICO
if [ $count -lt 10 ] ; then
echo "oi"
else
echo "tchau"
fi

IF ESTILO CARACTER
if [ "$answer" != "y" ] ; then
echo "oi"
else
echo "tchau"
fi

IF DIRETÓRIO EXISTE
if [ -d RCS ] ; then
echo "oi"
else
echo "tchau"
fi

IF ARQUIVO EXISTE
if [ -f ${datfile}ctl ] ; then
echo "oi"
else
echo "tchau"
fi


POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Dicas para administrar um MySQL

POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

- Na linha de comando do linux:

ENTRANDO NO MySQL
mysql --user=USUARIO --password=SENHA

HABILITANDO O SERVIÇO AUTOMATICAMENTE
ntsysv

CHECANDO SE O MYSQLD ESTÁ RODANDO
service mysqld status

INICIANDO NA MÃO O MYSQLD
/etc/init.d/mysqld restart

EDITAR CONFIG, REINICIAR O DAEMON E DEFINIR AS SENHAS DE ROOT
vi /etc/my.cnf
/etc/init.d/mysqld restart
/usr/bin/mysqladmin -u root password 'SENHA'
/usr/bin/mysqladmin -u root -h MAQUINA.DOMINIO.BR password 'SENHA'
mysql -v --user=root --password=SENHA


- Na linha de comando do MySQL:

CRIANDO UMA BD
create database if not exists modelos ;
create database `ciclones` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;

CRIA UM USUÁRIO
create user 'USUARIO'@'localhost'

TROCAR SENHAS (INCLUSIVE ROOT)
update user set password=PASSWORD("NEWPASSWORD") where User='USER';
flush privileges;

VENDO AS DBs DISPONÍVEIS
show databases;

DESCREVENDO UMA TABELA
desc WRF;

EVITAR REGISTROS DUPLICADOS
ALTER IGNORE TABLE dupTest ADD UNIQUE INDEX(a,b);

MUDAR O NOME DE UMA TABELA
RENAME TABLE first TO second;

MANUTENÇÃO
OPTIMIZE TABLE `WRFClima`
ANALYZE TABLE `WRFClima`
CHECK TABLE `WRFClima`

ACESSAR SERVIDOR ATRAVÉS DE CLIENTE
- no SERVIDOR:
GRANT ALL PRIVILEGES ON *.* TO USER_CLIENTE@IP_CLIENTE IDENTIFIED BY "PWD_CLIENTE";
FLUSH PRIVILEGES;
(garantir que a porta 3306 no IPTABLES está aberta!)

- no CLIENTE:
mysql --host=IP_SERVIDOR --port=3306 --user=USER_CLIENTE--password=PWD_CLIENTE modelos
(para testar, dar um telnet -l root IP_SERVIDOR 3306 e ver se a porta ta aberta!)

OBS.: USER_CLIENTE e PWD_CLIENTE podem ser quaisquer, contanto q estejam tanto na consulta do cliente quanto nos privilégios do servidor!


- Procedimentos para backup

* Backup de todos os bancos existentes com conteúdo e estrutura
mysqldump -u usuario --password=senha --A > arquivo_saida

* Backup só das estruturas de todos os bancos
mysqldump -u usuario --password=senha -A -d > arquivo_saida

* Backup só dos dados de todos os bancos
mysqldump -u usuario --password=senha -c -t -e -A > arquivo_saida

* Backup só dos dados da BD modelos e clima
mysqldump -u usuario --password=senha -c -t -e --databases modelos clima > arquivo_saida

* Backup só dos dados da BD modelos, tabela WRF, criando tabelas se necessário
mysqldump -u usuario --password=senha -c -e modelos WRF > arquivo_saida


POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Dicas para CVS

POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Raiz do CVS
$ echo $CVSROOT
/usr/local/cvs-rep

Inicia um repositorio AQUI (sem variavel ambiente)
cvs -d $CVSROOT co -l .

Adiciona um diretório ao repositorio
cvs add DIR

Incluir um diretório todo e prepará-lo
cd lpm_op
cvs import -m "Operacional do LPM" lpm_op lpm_op start
cd ..
mv lpm_op lpm_op.orig
cvs checkout lpm_op
diff -r lpm_op.orig lpm_op
rm -r lpm_op.orig

Criando .keepme (útil para cvs)
find DIRWORK -type d -ls | awk '{print "touch "$11"/.keepme"}' > criakeepme.exe
chmod u+x criakeepme.exe


POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Administrando o Fedora

POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Reiniciar o servidor web apache
/etc/rc.d/init.d/httpd restart


POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Dicas rápidas para R

POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

O ambiente de software estatístico R é muito difundido em várias áreas de ciêncie, indo de biologia até geofísica. A linguagem a princípio é bem dificil de se lidar por ser basicamente toda vetorial, mas eu gosto sempre de ter uma "colinha" para me ajudar.

Coloquei abaixo algumas dessas dicas, algumas bobas e outras que vivo esquecendo...

EXECUTAR UM SCRIPT NO PROMPT DO R
source(paste(dir,"/batchGRADE.R",sep=""))

QUEBRA UM VETOR CHARACTER EM VARIAS COMPONENTES
strsplit("ola tudo bem"," ")
resultado: um vetor de 3 posições: "ola", "tudo" e "bem"

PARA ACESSAR APENAS UMA PARTE DE UM MAPA E REESCREVER O SHP
shape0=c("0.shp")
library(maps)
library(maptools)
mapa0=readShapeLines(shape0)
writeLinesShape(mapa0[mapa0[[3]]=="RJ",],"testeRJ")

#MOSTRA APENAS AS RODOVIAS DO SHAPE
plot(mapa2[mapa2[[1]]=="Rodovia",])

#MOSTRA APENAS UM SUB-OBJETO DO SHAPE
plot((mapa2[1,]@lines[[1]])@Lines[[1]]@coords,type="l")

PARA RODAR UM SCRIPT NO R (tabajara version)
#!/bin/ksh
/usr/bin/time R --no-save --no-restore --no-site-file --no-init-file --no-environ --no-readline < script.R

# Usando o X Virtual Frame Buffer como servidor X para rodar o R em crontab
/usr/bin/Xvfb :7 -screen 0 1152x900x24&
export DISPLAY=":7.0"

GREP TABAJARA EM R
as.real(read.table("model.ctl",skip=5,nrows=1)[2])
(o exemplo pega o valor de tdef num ctl)

APAGA TODOS OS OBJETOS
rm(list = ls())

TAMANHO DO OBJETO NA MEMÓRIA
object.size(temp)

MEMÓRIA
memory.size()
gc()

EXEMPLO DE IF VETORIAL
sqrt(ifelse(x > 0, x, NA))

SEQUÊNCIAS E CLASSIFICAÇÃO
b1=rep(a1,length(a2))
b2=rep(a2,length(a1))
b2=sort(b2)
lon=seq(-45,,length.out=5)
llon=length(lon)
lon=rep(lon,llon)
dim(lon)=c(llon,llon)
lon=t(lon)

VIEWPORTS E ARROWS
plot.new()
plot(lon, lat, type="n",xlab="latitude", ylab="longitude",main="China
Sea Wind Speed/Direction and Temperature")
vps <- baseViewports()
par(new=TRUE)
pushViewport(vps$inner, vps$figure, vps$plot)
length <- 0.5 # "cm"
x1 <- unit(lon, "native") - unit(0.5*length*bu, "cm")
y1 <- unit(lat, "native") - unit(0.5*length*bv, "cm")
x2 <- unit(lon, "native") + unit(0.5*length*bu, "cm")
y2 <- unit(lat, "native") + unit(0.5*length*bv, "cm")
grid.arrows(grob=grid.segments(x1, y1, x2, y2),length=unit(1.5, "mm"),gp=gpar(col="red"))
popViewport(3)
plot(mapa_estado,lwd=2,xlim=c(a2[1],a2[5]),ylim=c(a1[1],a1[8]))
#plot(mapa_estado,lwd=2,xlim=c(-25,-18),ylim=c(-45,-41))



POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Dicas para PHP

POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

PHP é uma linguagem de programação que utiliza scripts e foi muito difundida em desenvolvimento de sistemas web. Hoje, mesmo com novos recursos na internet, o PHP ainda sobre vive bem devido à sua flexibilidade e rapidez em se adaptar.

Esse post contém algumas coisas bem básicas da estrutura do PHP, seja para refrescar a memória ou tirar alguma dúvida boba.



APRESENTAÇÃO BÁSICA
#!/usr/bin/php (se for usar em linha de comando)

<\?php (sem a barra...)
echo $var;
?>


DEFINIÇÃO DE FUNÇÕES
function InsTxt ($img,$text,$size,$cor,$x1,$y1,$fonte,$align) {
global $vermescuro;
...
echo $resposta;
}


IF ELSE
if ($pos === false) { ... }
else { ... }


SWITCH CASE
switch ($align) {

case "center":
...
break;

case "left":
...
break;
}


ARGUMENTOS VIA LINHA DE COMANDO
$var = $argv[1];
(o "0" do vetor é o nome do comando)


ARGUMENTOS VIA BROWSER (FORMULÁRIO HTML) E QUEBRA DE STRING

$Tdata = $_REQUEST["Tdata"]; // a data vem de um formulário HTML com um objeto de nome "Tdata"
$TdataY = substr($Tdata, 0, 4);
$TdataM = substr($Tdata, 5, 2);
$TdataD = substr($Tdata, 8, 2);


GERANDO DATAS
if ($varJ=="0024") { $Tok=mktime(0,0,0,$TdataM,$TdataD,$TdataY)+(24*60*60); $prev = date("H\Z d/m/Y", $Tok); }
if ($varJ=="2448") { $Tok=mktime(0,0,0,$TdataM,$TdataD,$TdataY)+(48*60*60); $prev = date("H\Z d/m/Y", $Tok); }


JUNTANDO / AGREGANDO / CONCATENANDO VARIÁVEIS

$Tinteg = $Tdata.' 00:00:00';


LOOP DE FOR
for ( $tempo = 0; $tempo <= sizeof($prev); $tempo += 1) { $e=6.112*exp(17.67*($temp[$tempo])); $ee=log($q1[$tempo]/0.622); $eee=sqrt(pow($u10[$tempo],2)); }



POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Dicas para usar MySQL em PHP

POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Quem mexe com grande volume de dados (como o profissional de Meteorologia) tem que aprender a mexer com banco de dados. O banco de dados que tenho mais contato atualmente é o MySQL e costumo usar aplicações em PHP para acessar e manipular esses dados.

Coloquei abaixo algumas dicas para facilitar essa comunicação.



ABRINDO A CONEXÃO

$db = mysql_connect("SERVIDOR", "USUARIO","SENHA") or die ("Erro1");

CONECTANDO NO BANCO DE DADOS
mysql_select_db("BANCODEDADOS") or die ("Erro2");

ESCREVENDO A CONSULTA
$consulta1 = "select VAR1,VAR2 from TABELA where Localidade='".$cidade."' AND Tempo_Inicio='".$Tinteg."' ";

EXECUTANDO A CONSULTA
$consulta = mysql_query($consulta1,$db) or die ("Erro3");

OBTENDO DADOS DA CONSULTA
if ($myrow=mysql_fetch_array($consulta)) {
do {
$var1[] = $myrow["VAR2"];
$var2[] = $myrow["VAR2"];
}while ($myrow=mysql_fetch_array($consulta));
}


POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Usando máscaras em GrADS

Usar máscaras em GrADS é algo que enrola muita gente. Já vi muita gente boa não saber usar, ou pior: nem entender como funciona.

O problema não é bem da função MASKOUT do GrADS, mas da fusão (quase sempre necessária) entre as funções MASKOUT e CONST. O ideal é ler os exemplos abaixo com o manual de cada uma das duas funções (manual do MASKOUT e manual do CONST).

Só para lembrar: maskout(#1,#2) plota #1 quando #2 é positivo e undef quando #2 é negativo


Mask simples
d maskout(maskout(var,var-50),-var+60)
(mostra a var entre 50 e 60)


Mask confuso com MASKOUT e CONST
d maskout(maskout(maskout(1, ( const(maskout(maskout(var1*10,var1*10-3.9),-var1*10+5.1),6)-6 ) ), ( const(maskout(maskout(var2,var2-50),-var2+70),9)-9 ) ), ( const(maskout(maskout(var2,var2-50),-var2+70),9)-9 ) )
(mostra o valor 1 onde var1 esta entre 4 e 5 e var2entre 50 e 70. o restante mostra undef)


Confuso, né? Mas bem útil!

Dicas rápidas para GrADS

POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Apesar de mexer em meteorologia quase 100% do tempo do meu trabalho, mexo em tantas linguagens de programação que é sempre bom manter um lembrete de algumas estruturas e pedaços de código.


Usa um LS para pegar parâmetros e usar em variáveis (versão DUMB)
'!ls -l u_niveis1000_*dat | tail -1 | awk "{print substr(\$9,14,12)}" > prefixo.txt'
prefixo=read('./prefixo.txt')
prefixo=sublin(prefixo,2)
say prefixo


Pega argumentos direto da linha de comando (versão SMART)
no começo do script
function main(args)

dentro do script
cidade=subwrd(args,1)
say cidade

uso
gradsc -lc "script.gs Rio_de_Janeiro"


POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Dicas para administrar o R

POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

O ambiente de software estatístico R é muito difundido em várias áreas de ciêncie, indo de biologia até geofísica. A linguagem a princípio é bem dificil de se lidar por ser basicamente toda vetorial, mas eu gosto sempre de ter uma "colinha" para me ajudar.

Coloquei abaixo algumas dessas colas, voltadas para a administração do ambiente, como por exemplo a instalação e manutenção de pacotes e a comunicação entre R e banco de dados MySQL.

INSTALAÇÃO DO R + MySQL NUM FEDORA
yum install R.x86_64
yum install mysql-devel.x86_64 mysqlclient14*_64

INSTALAÇÃO DE PACOTES ÚTEIS
install.packages(c("sp","maps","maptools","gridBase","pixmap","RadioSonde"))

ATUALIZAÇÃO DOS PACOTES
update.packages()
chooseCRANmirror() [bem útil no terminal]

INSTALAÇÃO DO PACOTE RMySQL NUM FEDORA
export PKG_LIBS='-L/usr/lib64/mysql -lmysqlclient'
export PKG_CPPFLAGS='-I/usr/include/mysql'
install.packages (c("DBI","RMySQL")


POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Transformações de variáveis meteorológicas

POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Uma das coisas sempre presentes em Meteorologia é a transformação de variáveis meteorológicas. Às vezes temos umidade específica mas queríamos umidade relativa, outras vezes temos a variável certa, mas na unidade errada...

Vou colar aqui alguns códigos de programação em PHP e GrADS com as transformações que eu mais uso.

* UMIDADE ESPECÍFICA (q) PARA UMIDADE RELATIVA (UR) E TEMPERATURA DO PONTO DE ORVALHO (Td) - PHP

*dados originais:

vetores de 169 posições (7 dias horários)

* código:
for ( $tempo = 0; $tempo <= 168; $tempo += 1) {
$e1=( $q1[$tempo]*$pressao[$tempo])/($q1[$tempo]+0.622);
$es1=6.112*exp(17.67*($temp[$tempo])/($temp[$tempo]+243.5));
$e2=log($q1[$tempo]/0.622*$pressao[$tempo]/(1.0+$q1[$tempo]/0.622));
$tempd[$tempo]=(243.5*( $e2 )-440.8)/(19.48-( $e2 ) );
$ur[$tempo]=($e1/$es1)*100;
}


POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Plotando vento como no meteograma

Muita gente não sabe dar display do vento para ficar como nos meteogramas (como nos meteogramas do ETA20 do CPTEC).

Vou colar aqui embaixo um código comentado para isso:

* abre o arquivo, prepara a tela e da as coordenadas do ponto
'open arquivo.ctl'
'set display color white'
'clear'
lat=-22
lon=-42
'set lat 'lat
'set lon 'lon

* prepara o ambiente do GrADS
'set z 1'
'set dfile 1'
'set t 1 169'
'set parea .4 8.25 .2 1.9'

* busca o maximo e o intervalo dos dados
* (o minimo e o maximo de sinal trocado)

'set gxout stat'
'd mag(u,v)'
rec=sublin(result,9)
say "rec "rec
maximo=subwrd(rec,6)
say "maximo "maximo
intervalo=subwrd(rec,7)
say "intervalo "intervalo
intervalo=intervalo*2

*configuracoes da magnitude do vento
'set gxout line'
'set vrange 0 ' maximo
'set cmark 0'
'set cthick 10'
'set cstyle 1'
'set ccolor 1'
'set ylint 'intervalo

*da display da magnitude do vento
'set grads off'
'd mag(u,v)'

* aqui que eh importante! detalhe no set lev abaixo.
* com este set lev variando em torno de 1, o GrADS
* acha que existem 3 pontos: o lev .99, 1 e 1.01. com
* esses tres pontos ja e possivel plotar vetores para
* cima e para baixo na tela.

'set lev .99 1.01'
* o exemplo acima esta em coordenadas de massa (WRF,
* por exemplo). se fosse em coordenada de pressão,
* ficaria algo como 'set lev 950 1050',
* deixando 1000hPa no centro


*configuracoes do vetor
'set cthick 10'
'set ylab off'
'set xlab off'
'set frame off'
'set gxout vector'
'set ccolor 12'
'set arrlab off'

*display do vetor
'set grads off'
'd u;v'

*processos finais e geracao de um arquivo PNG
'set ylab on'
'set xlab on'
'set frame on'
'printim meteo.png'
'quit'

Atenção, pois sem o set lev variando, o GrADS entende o problema como unidimensional e não plota o vetor.

Dicas para SED e AWK

POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Manipular bem arquivos e linhas de texto é muito importante, especialmente ao lidar com dados brutos.

ATENÇÃO: dependendo da versão de linux os comandos abaixo podem variar. Foram testados em um FEDORA 7 em diante.


SED mudando a ultima virgula de cada linha mas limitado a ultima linha ($)
sed '$ s:,$:;:g' arquivo.txt

o que era:
4 5 6 7 8 9 1 2 5,
5 8 7 4 5 6 9 5 4,
7 5 8 4 1 2 3 6 8,

vira:
4 5 6 7 8 9 1 2 5,
5 8 7 4 5 6 9 5 4,
7 5 8 4 1 2 3 6 8;

Criando arquivos .keepme (útil para cvs) usando AWK
find DIRWORK -type d -ls | awk '{print "touch "$11"/.keepme"}' > criakeepme.exe

Usando LS e AWK para pegar parametros externos e escrever no GrADS
'!ls -l u_niveis1000_*dat | tail -1 | awk "{print substr(\$9,14,12)}" > prefixo.txt'
prefixo=read('./prefixo.txt')
prefixo=sublin(prefixo,2)
say prefixo
(existem formas melhores, mas dependendo do tipo e tamanho do parâmetro isto é bem útil)

Usando HEAD e AWK para formatar um arquivo usando tabulações (\t), pedaços de strings (substr) e quebras de linha (\n)
head -2 arquivo.txt | awk '{print "X\t"substr($1,7,4)"-"substr($1,1,2)"-"substr($1,4,2)" 00:00:00\n"$2" "$3" "$4" "$5}'

Forma fácil de passar variáveis shell para o AWK
Passando $ano, $mes e $dia
awk -v datafull="20$ano $mes $dia 00 " '{print datafull $1" "$2" "$3" "$4}' arquivo.txt

Somando colunas usando AWK
awk '{for (i=1; i<=NF; i++) { sum[i]+= $i } } END { for (i=1; i<=NF; i++ ) { print "Col[", i, "] =", sum[i] } }'

passa de:
32 0
6 0
21 11
para...
Col[ 1 ] = 59
Col[ 2 ] = 11



awk '{ sum1+=$1; sum2+=$2; } END { print sum1" "sum2 }'

passa de:
32 0
6 0
21 11
para...
59 11




POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Dicas para usar bem o ImageMagick

POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Tem momentos em que nós que nós temos muitos arquivos de imagem que precisam ser tratados e formas que apenas um bom programa gráfico faz, mas estamos na linha de comando...

Para isso existe o pacote de comandos gráficos ImageMagick e o comando mais útil para mim é o convert.


Gerando thumbnails com o convert
convert -quality 40 -depth 8 -resize 100x75 entrada.png saida.jpg


POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Dicas para lidar com datas no linux

POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Em meteorologia nós temos sempre
que ter o cuidado de pegar o dado certo, no local certo, do tempo certo.

Lidar com as datas é fundamental pois no caso de previsão de tempo e clima, temos duas datas em jogo: de onde a previsão parte (data de integração ou data inicial) e para qual data ela é válida
.

Para organizar grandes discos também é imporatnte saber lidar com datas e horas.


Andando no tempo com o comando de linux date

date +%Y%m%d%h -d "12:12:12 2005-08-20 7 days"

Apagando os últimos dois arquivos de uma data (USANDO RM)
rm -f `ls -lrt ${htmlpath}s*$((${e}-3)).png | tail -2 | awk '{print $9}'`

Apagando por data (USANDO FIND)
find -mtime +40 -exec rm -Rf {} \;

Listando por data (USANDO FIND)
find -mtime +40 -exec ls -o {} \;


POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Dicas para o comando FIND do linux

POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Essas dicas eu peguei na época que eu era funcionário lá do CPTEC e guardei até hoje!

Busca simples usando find
find . -name libjasper.so

Somatória de tamanhos de arquivos usando find
find dataout/T213L42 -name "???????????200503151*.gif" -ls | awk '{s=s+$7}END{print s}'

Criando .keepme (útil para cvs)
find DIRWORK -type d -ls | awk '{print "touch "$11"/.keepme"}' > criakeepme.exe
chmod u+x criakeepme.exe

Apagando por data usando find
find -mtime +40 -exec rm -Rf {} \;

Listando por data usando find
find -mtime +40 -exec ls -o {} \;


POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Dicas para SSH e SCP

POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

SSH e SCP significa "secure shell" e "secure copy" e os comandos abaixo servem para praticamente todos os sistemas linux que usei.


LINHA DE COMANDO DE LINUX

Cópia de TUDO ACIMA usando SCP
scp -r * CONTA@MAQUINA:PATH
(ex.: scp -r * fulano@server1.blabla.br:/home/beltrano)

Cópia de UM ARQUIVO usando SCP e especificando a porta
scp FILE -oPort=PORTA CONTA@MAQUINA:PATH
(ex.: scp arquivi.txt -oPort=1111 fulano@server1.blabla.br:/home/beltrano)

Especificar a porta ao entrar em uma máquina usando SSH
ssh -p PORTA CONTA@MAQUINA
(ex.: ssh -p 1111 fulano@server1.blabla.br)

Gerando uma chave para SCP e SSH
cd .ssh
ssh-keygen -t dsa
scp -p id_dsa.pub CONTA@MAQUINA:PATHDOHOME/.ssh
(ex.: scp -p id_dsa.pub fulano@server1:/home/fulano/.ssh)
cd .ssh
cat id_dsa.pub >> authorized_keys


PROGRAMAS PARA WINDOWS

Para instalar em Windows eu recomendo o Secure Shell Client, da SSH Comunications Security. Ele já vem com SSH e SCP em janelas à lá explorer.

Para quem trabalha usando vários computadores e/ou não pode instalar programas no Windows do trabalho ou da faculdade, uma ótima solução é usar os aplicativos portáteis PuTTY Portable (cliente SSH) e WinSCP (cliente SCP). Os dois são instalados direto no seu pendrive e carregam consigo todas as informações de login e sessões antigas. Há a possibilidade também de salvar senhas, apesar de ser meio perigoso no caso de perda do pendrive!

Eu fiz um post aqui no blog ensinando a instalar o WinSCP, confira: Usando o WinSCP a partir do pendrive



POST EM CONSTANTE ATUALIZAÇÃO
PARA VER MAIS DICAS, ASSUNTOS E COMANDOS
BUSQUE NA BARRA ACIMA, À ESQUERDA

Programa para evitar a fadiga no computador

Ultimamente devido ao trabalho e aos estudos eu não tenho mais saído da frente do micro. Só quem passa mais de 10, 14 horas direto sentado na frente de um monitor sabe o quão exaustivo e cansativo isso é para o corpo e para a mente de uma pessoa.

Pois eu achei um programa bem legal para me ajudar a lembrar de dar uns intervalos de vez em quando. O programa se chama Workrave e pode ser baixado aqui.

Esse programa fica residente ali perto do relógio da barra de tarefas contando o tempo de atividade do computador e em intervalos pré estabelecidos ele avisa que é hora de dar uma parada.

Existem três tipos de pausa (mini-pausa, pausa para descanso e limite de uso diário) e é possivel personalizar os intervalos. Eu por exemplo uso uma micro pausa de 30 segundos a cada 45 minutos, um descanso de 10 minutos a cada 4 horas e não ligo o limite diário.

Durante os intervalos ou ele te expulsa do micro pedindo para ir andar e fazer outra coisa ou indicar alguns exercícios na tela. O exercício da figura, por exemplo, é para evitar a fadiga ocular, mudando o foco do monitor para um objeto mais distante.



Apesar das figuras estarem em inglês, grande parte da interface está em português. Vale a pena conferir, especialmente para quem é "heavy user" e não tem um irmão mais velho ou um pai chato para "ajudar" a controlar o uso do computador.

Usando o WinSCP a partir do pendrive

Nesse post ensinaremos a instalar e usar o WinSCP a partir do pendrive. A maior vantagem de fazer isso é que, independente de que máquina você use, suas configurações são sempre as mesmas, tudo sempre igual.

INSTALAÇÃO

O primeiro passo é baixar o WinSCP a partir da página http://portableapps.com/apps/internet/winscp_portable, clicando no link DOWNLOAD. O arquivo tem em torno de 1,5 Mb.

O segundo passo é instalar. Deve-se abrir o arquivo que foi baixado. Talvez o Windows dê um alerta por ser um executável, mas clique em EXECUTAR.



Depois dê "Next".



Nesta janela deve-se clicar em "Browse..."



e escolher o drive do seu pendrive, no meu caso ele é o "F: (PENTOZZI)".



Clique OK e o endereço dessa janela deve se atualizar para [DRIVE]:\WinSCPPortable. Clique em "INSTALL".



Espere um pouco até aparecer a janela abaixo:



Clique "Finish" e o programa já está instalado!



USANDO O PROGRAMA


Para abrir o programa deve-se ir até o Windows Explorer e entrar no pendrive



e depois entrar no diretório WinSCPPortable e executar o programa WinSCPPortable.



O programa irá carregar e abrir a seguinte janela:



Nessa janela deve-se configurar a máquina (host name), o nome de usuário e a senha. Uma vez preenchido tudo é só clicar em "Login" e aguardar.

Se for sua primeira conexão a essa máquina pode ser que o Windows pule algumas janelas de aviso, como essa abaixo. É só clicar SIM para todas elas.



Uma vez feito tudo isso aparece a tela do WinSCP, onde a listagem da esquerda é referente ao computador local e a da direita, o computador remoto.



Para o caso de precisar de um cliente SSH para pendrive, eu recomendo o PuTTY Portable, de instalação e uso bem parecido.

Para dicas de como usar o SCP e SSH em linux, eu recomendo ler meu post sobre Dicas para SSH e SCP.

Opensocial e Previsão do Tempo

Veja Também:
- Widgets de Previsão do Tempo para Blogs e Sites
- Gadgets de Previsão do Tempo para iGoogle
- Complemento de Firefox para Previsão do Tempo
- Previsão do Tempo no Orkut


Já tem alguns meses que o Orkut tem aceitado a inclusão de aplicativos no perfil das pessoas, mas era um processo ainda fechado para desenvolvedores, chamado Orkut Sandbox. Agora que aos poucos o Orkut vai migrando totalmente para o suporte a aplicativos sociais, vem a pergunta: SERÁ QUE OS APLICATIVOS DE METEOROLOGIA FARÃO SUCESSO? Só o tempo dirá, mas que há um potencial enorme, não há dúvida.

Na época que o Sandbox do Orkut foi liberado, eu fiz um rascunho de algo que eu gostaria de ter no meu perfil. Claro que não era nada "lindo" nem "vendável", mas apenas uma aplicação simples com três abas: "LPM", "LPM Pro" e "CPTEC".

Em "LPM" eu coloquei alguns produtos de previsão do tempo para o Rio de Janeiro, gerados pelo Laboratório de Prognósticos em Mesoescala da UFRJ, onde eu sou colaborador.

Em "LPM Pro" eu coloquei figuras mais técnicas, como imagens de satélite, meteogramas, diagramas termodinâmicos e dados observados, descaradamente extraídos da página inicial do LPM.

Em "CPTEC" eu coloquei algumas figuras que eu acho muito interessante do site do CPTEC, todas com link para o site deles, onde pode-se obter maiores detalhes e interpretações das previsões. Eu incluí, além das previsões de praxe, as cartas sinóticas e uma imagem de radar da cooperação CPTEC-IPMET.

Sabe quanto tempo eu levei para fazer isso? Apenas umas 2 horas, indo de tutorial em tutorial.

Quem quiser testar o aplicativo e tem uma conta no Orkut Sandbox pode testá-lo copiando o link http://luizrodrigotozzi.googlepages.com/lpm2.xml na seção de aplicativos do SandBox ou simplesmente indo no meu perfil de Sandbox.

Quem tem a conta regular de Orkut tem que esperar o Google botar esse aplicativo no diretório de aplicações do Orkut, o que ainda não sei quanto tempo vai demorar...

Até o dia de hoje (13/7/2008) nenhuma das grandes empresas de previsão de tempo do Brasil incluíram seus gadgets no Orkut. Será que é "incompetência" (ler "atraso") ou elas estão preparando algo realmente bom e interativo para lançar? Lembrando que o OpenSocial gera aplicativos sociais, ou seja, que permitem interação entre pessoas da mesma comunidade (no caso o Orkut).

É esperar e ver, pois muitos estão ganhando muito dinheiro com aplicativos sociais no exterior, especialmente no MySpace e no Facebook.


Veja Também:
- Widgets de Previsão do Tempo para Blogs e Sites
- Gadgets de Previsão do Tempo para iGoogle
- Complemento de Firefox para Previsão do Tempo
- Previsão do Tempo no Orkut

Canal Fox: um ano de desrespeito


Hoje vi no BlogNaTV que o pessoal da Sociedade dos Blogs de Séries, mais especificamente o TeleSéries, está começando uma campanha anunciando o aniversário de um ano da decisão arbitrária da FOX, que há exatamente um ano atrás passou a exibir todas as suas séries do horário nobre dubladas, sem aviso nenhum. O canal ainda ignora solenemente a imprensa e os telespectadores quando questionada sobre o porquê de ter feito isso. Agora, série legendada só com o serviço de algumas TV por assinatura (o que não é meu caso).

Infelizmente a Sony e a Warner também não têm ficado para trás no que diz respeito a motivos para desagradar os usuários. A Warner parece falida, importando a maioria das séries que não fazem sucesso nos EUA, problemas sérios nas legendas e às vezes misturando o conteúdo em espanhol na programação em português! Já a Sony tem importado séries cada vez mais falidas fora do "prime time" e as legendas também estão cada vez mais a desejar.

É a hora de quem paga ser ouvido. Que tal começar espalhando essa campanha em sites, comunidades e entre os amigos? Se alguém tiver idéias boas sobre como reclamar ou divulgar, compartilhe conosco!

Computação Científica destrinchada

Eu acabei de fechar meu período do mestrado e uma das matérias mais complicadas em termos de cálculos foi Computação Científica (COC757), ministradas pelos professores Breno Jacob, Álvaro Coutinho e Danilo Machado. A matéria aborda temas de álgebra linear aplicados a computação científica, tais como:

- aritmética de ponto flutuante
- overflow e underflow
- análises de sensibilidade e condicionamento
- sistema de equações lineares
- eliminação de Gauss e fatoração LU
- eliminação de Gauss-Jordan
- método dos mínimos quadrados
- fatorização QR
- transformação Householder
- rotação de Givens
- ortogonalização de Gram-Schmidt
- cálculo de autovalores e autovetores
- polinômio característico
- método de Jacobi
- iteração QR
- método de potência e método de iteração inversa
- iteração com coeficiente de Rayleigh
- método de Lanczos
- equações não lineares
- método de Newton
- método da secante

Os professores decidiram usar o livro Scientific Computing: An Introductory Survey, de Michael T. Heath (ISBN 9780072399103), que é bem completo e tem um site com notas de aula e exercícios interativos.

Apesar do livro ter uma grande quantidade de material extra no site, eu tentei buscar na internet material para complementar meu estudo e devo reconhecer que tive bastante dificuldade para achar bons sites ou boas explicações e demonstrações.

Isso me inspirou a listar nesse post alguns arquivos, códigos, provas antigas e sites que me ajudaram a passar nessa matéria e aprender a utilidade desses métodos.


- Exercícios em Matlab - Householder

- Exercícios em Matlab - Householder

- Apostila sobre Fatoração LU

- Exercícios em Matlab - Método de Newton

- Exercícios em Matlab - Polinômio característico

- Exercícios em Matlab - Método de potência

- Exercícios em Matlab - Método de potência inverso com shift

- Exercícios em Matlab - Método de potência inverso

- Exercícios em Matlab - Rayleigh

- Livro de Álgebra Linear com exercícios e resoluções

- Implementação do método QR em Matlab

- Implementação do método de Lanczos em Matlab

- Capítulo 9 de um ótimo livro falando sobre autovalores e autovetores

- Listagem de provas e suas respostas (Illinois Institute of Technology)

- Povas e Gabaritos de Álgebra Linear 1 da PUCRIO

- Prova antiga COPPE - Parte 1

- Prova antiga COPPE - Parte 2


Eu ainda vou publicar aqui nossas listas desse período quando tiver tempo.

Gostaria de agradecer aos professores e aos colegas de disciplina, que ajudaram a compilar esse material que foi fundamental para todos nós.

Ciência 2.0 é uma experiência válida?

A edição americana de abril de 2008 da Scientific American trouxe um artigo bem interessante entitulado "Science 2.0 -- Is Open Access Science the Future?" (algo como Ciência 2.0 -- A ciência do acesso público será o futuro?). Esse artigo é uma continuação natural do artigo "Science 2.0: Great New Tool, or Great Risk?" (Ciência 2.0: Grande ferramenta ou grande risco?) da edição de janeiro e ambos discutem como a web 2.0 pode impactar a forma como fazemos ciência na nossa sociedade.

Se formos parar para pensar, a divulgação dos avanços científicos foi a parte que menos mudou na ciência até hoje. A séculos que temos pessoas isoladas em seus laboratórios, escondendo o trabalho uma das outras, aguardando a liberação de verbas ou a aceitação de seu artigo numa publicação para tornar público o grande avanço que está fechado a sete chaves. Quem trabalha como ciência sabe que até hoje ainda é assim, com a diferença que os artigos que eram feitos à pena, passaram a serem feitos a caneta, a serem datilografados e hoje são enviados em PDF atachado num email. Só isso mudou.

A Ciência 2.0 é, na prática, uma tentativa de trazer ao conhecimento científico as ferramentas colaborativas da web 2.0. Eu mesmo já comecei a experimentar um pouco disso num projeto que participei aqui na UFRJ. Eu e mais outra pessoa estávamos desenvolvendo um sistema de meteorologia que continha várias etapas e uma tarefa minha dependia de uma tarefa da outra pessoa e vice versa. Tentamos fazer por email uma espécie de checklist ("Já fiz minha parte, é sua vez","Já pode fazer isso", "Estou aguardando aquilo"...) mas foi muito pouco prático. Acabamos acelerando o trabalho criando uma planilha simples no Google Docs, onde separaramos as tarefas entre os participantes e, a medida que a tarefa era sendo concluída, ela ficava em vermelho. Habilitamos a planilha para ser editada pelos participantes e visualizada (sem edição) por nossos chefes. Desse jeito nos organizamos e ainda mostramos serviço.

Esse é um exemplo muito simples perto do que está sendo proposto. O artigo cita comunidades científicas que usam ferramentas colaborativas como wiki para desenvolvimento de pesquisa. Na área de meteorologia, um exemplo muito bom é o do OpenGrads. Sua proposta se baseia exatamente na Ciência 2.0 colaborativa para fazer um visualizador de dados que atenda as reais necessidades do publico alvo, melhorando o GrADS. Já escrevemos um post sobre esse projeto aqui no blog, entitulado OpenGrADS: uma nova versão do GrADS com grandes melhorias.

Outro ponto abrodado nos dois artigos é a chamada Blogophobia, uma aversão ao uso de blogs para manter e difundir a atualização profissional. Esse blog mesmo é um exemplo de como essa nova mídia pode ser interessante. Desde minha última busca no Google, esse é o único blog em português brasileiro a tratar de meteorologia operacional e tendências na área. Todos os outros ou falam de nuvens ou de meio ambiente. O mais próximo é o blog do pessoal da MetSul, que comenta quase em tempo real a previsão do tempo para o Sul do Brasil.

Esse texto da Scientific American é leitura obrigatória para aqueles que querem entender como o mundo de hoje, com seus códigos livres e sistemas colaborativos, pode transformar a forma como fazemos ciência.

Ou não.

Complemento de Firefox para Previsão do Tempo

Veja Também:
- Widgets de Previsão do Tempo para Blogs e Sites
- Gadgets de Previsão do Tempo para iGoogle
- Opensocial e Previsão do Tempo
- Previsão do Tempo no Orkut


Continuando a série iniciada pelos posts Widgets de Previsão do Tempo para Blogs e Sites e Gadgets de Previsão do Tempo para iGoogle, chegou a vez de falar sobre Previsão do Tempo no Firefox, com os tão úteis complementos.

Para quem não sabe, os complementos do Firefox são uma grande coleção de mini ferramentas que podem ser instaladas com poucos cliques e que ficam disponíveis para o usuário ao abrir o navegador de internet. Existem complementos de tudo hoje em dia, de leitores RSS a tocadores de música e inclusive complementos de Previsão de Tempo.

São vários os complementos sobre meteorologia, mas o mais usado é com certeza o Forecastfox. Ele fica escondido ali na barra de baixo do navegador (onde normalmente tem bastante espaço vazio) ou em qualquer outro lugar do browser e indica a condição atual de tempo e a previsão para os próximos dias para a cidade que você quiser.

Algo bem interessante desse complemento é que ele é leve e fácil de configurar. Ele está em português (apesar da figura estar em chinês!), tem várias cidades do mundo no banco de dados, se atualiza sozinho, pode ser programado para avisar a previsão do tempo periodicamente com janelinhas de aviso tipo as do MSN e do Skype, e o melhor: você pode escolher os ícones de sol, chuva e etc. Nada mais de ter que ver aqueles ícones feios que ninguém sabe porque foram escolhidos!

Para instalar, o único pré-requisito (óbvio) é usar o navegador Firefox (parece que funciona com todas as versões) e clicar AQUI PARA INSTALAR (será necessário reiniciar o navegador).

A fonte da previsão é o AccuWeather.com e a lista com temas de ícones para trocar no ForecastFox está AQUI.

Ótima pedida para quem acha que não tem tempo de correr atrás da previsão do tempo. Agora ela estará ali embaixo, na tela, a uma olhada de distância.


Veja Também:
- Widgets de Previsão do Tempo para Blogs e Sites
- Gadgets de Previsão do Tempo para iGoogle
- Opensocial e Previsão do Tempo
- Previsão do Tempo no Orkut

Transcrição de entrevistas em MP3 até 5 vezes mais rápida

Nesses últimos meses caiu nas mãos da Mari um trabalho longo e árduo de transcrição de entrevistas em MP3.
Quem é da área de comunicação ou de humanas em geral sabe muito bem do que eu estou falando. Você faz uma entrevista ou grava uma aula em fita ou MP3 e quer passar o conteúdo falado de áudio para texto. Ela até achou que seria simples. Ledo engano!
A vi penando as primeiras horas de transcrição e tomei para mim a tarefa de otimizar esse processo (a minha veia de desenvolvedor de sistemas bateu mais alto nessa hora!). Acabei conseguindo acelerar em quase 5 vezes o tempo de transcrição da Mari e achei legal compartilhar esse truque.


PROGRAMA UTILIZADO

Inicialmente tentei fazer o que ela estava fazendo, de usar o media player mesmo, mas ficar indo e vindo de janelas fazia o trabalho ficar muito muito lento. Decidi então por usar um MP3 player ou um CD player, mas toda hora eu tinha que ficar voltando e sempre me confundia nos botões e na prática acabou sendo tão confuso quanto.

De repente achei um programa gratuito na internet chamado Express Scribe, que é específico para transcrição profissional de entrevistas e áudio em geral. Com ele você não precisa ficar trocando de telas para parar, voltar, dar play nem nada disso. Ele tambêm tem um método para diminuir a velocidade da gravação sem distorcer muito o que está sendo dito. Ele é realmente fantástico!

Já achei muitos sites falando sobre esse programa, mas nenhum falava sobre a melhor coisa dele: a opção PEDAL.


PEDAL

O transcritor profissional tem o fone de ouvido na cabeça, o teclado nas mãos E UM PEDAL NOS PÉS, controlando o andamento da fita. Com isso não é necessário tirar as mãos do texto para voltar e tentar ouvir aquele trecho que não ficou tão claro. No site do programa Express Scribe tem à venda um pedal para transcritores por "apenas" 80 dólares (e ainda deve ter o frete!). Mas eu conegui uma forma caseira de fazer um pedal e foi isso que acelerou meu trabalho.


PEDAL "CASEIRO"

Na prática o que chamam de "pedal" é apenas uma caixa com um, dois ou três grandes botões, para acelerar, retroceder ou dar play com o pé. Quando entendi isso, pensei em algo meio absurdo mas que deu certo: pluguei um desses joysticks de 20 reais da Clone/Leadership na porta USB, botei ele no chão, falei para o programa que ele era o pedal, apertei o botão e.... FUNCIONOU. Até hoje lembro que a Mari não acreditou quando falei da minha idéia, mas acabou a adotando e deu certo!

Eu configurei o pedal como se fosse um pedal de apenas um botão, dessa forma eu aperto o botão 2 do meu joystick com o meu pé e ele toca o audio. Quando eu solto o botão, a transcrição pára. Existem formas de configurar ainda para voltar e avançar usando o pedal-joystick, mas aí acabava me confundindo. Aqui embaixo botei um exemplo da minha configuração, mas vale a pena testar e ver com qual você se sente mais a vontade.


Com essa solução caseira, consegui acelerar muito o processo sem sequer tirar a mão do teclado para pausar ou despausar.

Espero que esse post ajude quem precisa fazer esse tipo de serviço e gasta horas e horas para fazer uma hora de áudio. A Mari mesmo já estava ficando de cabelo em pé de tanto transcrever e sei que esse esquema de pedal foi fundamental para ela fazer melhor o trabalho dela.

Os Produtores - filme e torrent

Quem acompanha o circuito de teatro aqui do Brasil tem ouvido falar muito na peça "Os Produtores", com Miguel Falabela (como ator e diretor), Vladimir Brichta e Juliana Paes. Esta peça já tinha passado por São Paulo no ano passado e finalmente chegou ao Rio de Janeiro neste mês de abril.

Falabella, que também adaptou a peça da Broadway para o Brasil, traz um texto de Mel Brooks com pitadas bem brasileiras. Mas o próprio Mel Brooks em 2005 lançou a peça original ao cinema, fazendo o filme homônimo "Os Produtores - O Filme".

No filme, o papel de Falabella é do ator Nathan Lane (conhecido pelo filme "A Gaiola das Loucas"), que interpreta o diretor teatral Max Bialystock, o papel de Brichta é de Matthew Broderick e Uma Thurman faz o papel que Juliana Paes faz na versão brasileira da peça. O filme tem a participação também de Will Ferrell no papel de um nazista louco!

Eu vi e gostei muito! Deu vontade de conferir também no teatro. Pena que seja tão cara a entrada...

Quem quiser conferir o filme, os links para o arquivo torrent, para as legendas e para a descrição do filme no IMDB estão aqui embaixo:

imdb: http://www.imdb.com/title/tt0395251/
torrent: http://www.mininova.org/get/288971
legenda: http://www.legendando.com.br/modules/rmdp/down.php?id=309&sw=now&auto=1

Para quem prefirir comprar, é só buscar no buscapé que se acha fácil a partir de 35 reais!

Le Brants - O rodízio mais completo do RJ

Há alguns anos atrás eu fui a um restaurante bem legal no Flamengo, aqui no Rio de Janeiro. O restaurante era um rodízio de pizzas e de crepes muito bom, com um ótimo atendimento e um preço igual ao dos concorrentes (que só tinham pizza). Gostei tanto do lugar que voltei lá com alguns amigos 2 meses depois mas infelizmente o restaurante estava fechado.

Há poucos meses um amigo da Mary fez aniversário em um rodízio também no Flamengo. Fiquei muito feliz em saber que era o mesmo restaurante, em um endereço diferente mas com a mesma qualidade.

O restaurante é o Le Brants (o site às vezes tem problemas em abrir), que fica na Travessa dos Tamoios, 40 - tel: 21 2558-6145. Ele é bem espaçoso e com um clima bem agradável. Atualmente eu considero ele o rodizio mais completo do RJ, com pizzas, crepes, massas, quiches e sorvetes à disposição do cliente. Os crepes e sorvetes são pedidos para o garçom, enquanto que o restante vai passando de mesa em mesa. O cardápio de pizzas e crepes incluem vários sabores salgados e doces, indo de strogonoff até nutella com morango e sorvete (eu recomedo o quiche de espinafre e o crepe de cajuzinho, duas pedidas obrigatórias). Tem também bebidas por refil ou 2 litros, à parte.

Se não bastasse isso tudo, o atendimento ainda é muito bom (nada de ficar mofando esperando o garçom passar...), o preço é igual ao da concorrência (em fevereiro de 2008 isso tudo saía por 16 ou 18 reais, dependendo do horário) e eles ainda têm um esquema de fidelidade, onde 10 rodízios dão direito a um grátis.



Para não dizer que tudo é perfeito, apenas o delivery do restaurante que ainda tem o preço meio salgado, mas para quem procura um rodízio muito bom para uma festa de aniversário ou para juntar os amigos, aqui é o lugar!

Quem quiser delivery que vá ao Boomerang Mix!

O paraíso frio de Montreal

Desde minha última viagem a Montreal (Canadá) que eu fico com vontade de escrever sobre lá. Tenho vontade de falar sobre o cuidado com a natureza, os subterrâneos, as pessoas, o transporte, etc, etc...

Bem, como não tenho tempo de escrever à altura, vou aproveitar que uma imagem vale mais que 1000 palavras e colocar aqui dois vídeos de um especial do Jornal Nacional sobre os subterrâneos de Montreal e também sobre um hotel de gelo ali das redondezas.

Taí um lugar bom e barato de se visitar no primeiro mundo!

Subterrâneos


Hotel de gelo

OpenGrADS: uma nova versão do GrADS com grandes melhorias

Veja Também:
- OpenGrADS Cookbook


Com toda certa quem trabalha com meteorologia já usou o GrADS. É o programa mais manjado e utilizado de visualização de dados em formato de grade da nossa área. Mas é também o que mais recebe reclamações, tanto pela dificuldade em fazer as coisas mais simples (importar um mapa de bacias, por exemplo, era mais artístico do que científico!) quanto pelas poucas atualizações que vinha tendo (a versão 1.9b4 que a maioria usa foi lançada no começo de 2005!).

Felizmente agora no final do mês foi criado um projeto de código livre chamado Open GrADS, que "busca desenvolver interfaces avançadas e extensões baseadas na base do GrADS." A idéia é muito boa, com um conceito bem mais atual de desenvolvimento de software. É possível baixar um pacote e instalar no seu micro (ainda em TAR, mas deixa pra lá!) ou mesmo usar o CVS para estar sempre em dia com as atualizações do OpenGrADS.

Na prática serão os mesmos comandos já manjados ("set gxout shaded", "d temp", "set lev 500", etc...) só que acrescidos de mais opções à medida que as extensões vão evoluindo e novos pacotes são criados.

Outra frequênte reclamação contra o GrADS era a sua dificuldade em conversar com outras linguagens e plataformas de desenvolvimento. Esta é uma das prioridades deste OpenGrADS, que está habilitando extensões de compatibilidade do programa com Python, Perl, MatLab, etc. Os desenvolvedores do projeto criaram também uma página de Wiki para que a comunidade não só consulte, mas também colabore na construção do novo projeto.

Finalmente uma ótima notícia para quem desenvolve produtos de meteorologia. Tinha muita gente ganhando dinheiro montando complexos sistemas que faziam exatamente o que o GrADS fazia mas de uma forma bonita, eficiente e com uma "cara" mais atual de web 2.0. Agora finalmente poderemos voltar a usar o GrADS sem reclamar!

Bem, mas como reclamar faz parte da natureza humana, alguém me explica por que o símbolo do projeto é uma tartaruga? É um sinal que as coisas não serão tão mais rápidas que antigamente?


Veja Também:
- OpenGrADS Cookbook

Aquecimento global liderando o Prêmio iBest

Semana passada eu estava curioso em votar no Prêmio iBest depois de muita insistência de um site que eu sempre visito. Fiquei bem surpreso em ver na categoria Vídeos / Documentários um vídeo sobre aquecimento global liderando a competição com mais de 30% dos votos (hoje, dia 21/1, já está com 38% dos votos!). O nome do vídeo é "Greenpeace Brasil - Mudanças do clima, mudanças de vidas" e foi produzido pelo Greenpeace Brasil no final de 2006.

Logo atrás, na quarta posição e disputando acirradamente o terceiro lugar está também o vídeo "Nós sabíamos", que é uma obra de ficção de menos de 10 minutos mostrando "o que pode acontecer com a Terra caso nada seja feito para combater o aquecimento global".

Na minha opinião isso é ótimo para nossa área ter ainda mais visibilidade no mercado e para que a questão não seja discutida apenas como mais um modismo, mas como uma necessidade.

O vídeo que está em primeiro lugar tem quase uma hora de duração mas quem quiser ver uma prévia de 6 minutos, o "trailer" está aqui em baixo.



Esta produção conta com a participação de vários especialistas, entre eles Carlos Nobre (INPE), José Antônio Marengo (INPE), Francisco Aquino (UFRGS), Luiz Pinguelli Rosa (Fórum Brasileiro de Mudanças Climáticas) e Carlos Rittl (Campanha de Clima do Greenpeace). Para votar em um dos vídeos é só clicar aqui (será necessário fazer um cadastro rápido no Prêmio iBest, se você já não for cadastrado).

UPDATE: Pois não é que o vídeo ganhou o iBest?

Boomerang Mix - Lanchonete no RJ

O Boomerang Mix é uma cadeia carioca de lanchonetes que tem lojas no Humaitá e em Laranjeiras (os mapas estão aqui embaixo!). Eu já conhecia a loja do Humaitá a alguns anos e frequentava sempre que eu podia. Agora eles abriram a loja em Laranjeiras e ficou melhor ainda pois é aqui perto de casa!

LOJA HUMAITÁ

Exibir mapa ampliado

LOJA LARANJEIRAS

Exibir mapa ampliado

Dizem que o Boomerang Mix é mais do que um fast food, menos do que um restaurante, mas com um cardápio tão extenso que permite agradar gregos e troianos e é verdade!

O cardápio deles é muito bom, o atendimento também e eles têm um site e atendem a delivery aqui por perto (só R$ 2,50 a mais).

Eu pessoalmente recomendo os crepes e sanduíches, além dos sucos que são muito bons! Nas últimas visitas nós pedimos crepe doce de chocolate com sorvete e crocante (o da foto com a bola de sorvete!), crepe de mussarela de búfala com tomate e manjericão (delicioso!) e o tal hambúrguer de picanha (a monstruosa foto abaixo! é um prato para duas pessoas e sobra!!). De bebida tem desde sucos "comuns" até alguns exóticos, como figo com água de coco ou pêra com tâmara.

Vale a pena conferir e não é muito caro para a qualidade e diversidade da comida. Duas pessoas comendo um crepe salgado e um crepe doce, ainda com bebida, fica em torno de 30 reais.

Eu recomendo!