Mostrando postagens com marcador tutorial. Mostrar todas as postagens
Mostrando postagens com marcador tutorial. Mostrar todas as postagens

terça-feira, abril 26, 2011

Dicas Rápidas de Grails para quem vem do Java - Controllers




Segue abaixo exemplo contendo várias informações sobre controllers.
Para ver documentação oficial, visite grails.org.

Se lhe foi útil, deixe um comentário (pode ser anônimo).


1. Basico de actions
class ToperaController {
def teste = {
render "Hello World"
}
}

Acessado via: http://localhost/minha-app/topera/teste


2. Tipos de encerramento de actions

class ToperaController {

// retornar HTML cru
def html = {
render "Hello World"
}

// requestDispatcher pra view gsp (traducao: manda os dados prum html externo)
// o gsp que será procurado pelo server é o views/topera/html2.gsp
def html2 = {
[msg: "Hello Crazy World!!"]
}
// e o gsp poderia ser "A mensagem recebida foi ${msg}"

// renderiza JSON, criando obj na hora
def json1 = {
render(contentType:"text/json") {
[nome: "rafael", idade:29]
}
}

// renderiza JSON, usando objeto pre-existente
def json2 = {
def pessoa = new Pessoa([nome: "rafael", idade:29])
render(contentType:"text/json") {pessoa}
}

// renderiza JSON (outra forma)
def json3 = {
render new Pessoa([nome: "rafael", idade:29]) as JSON
}  

/*
* Obs: os retornos em JSON podem ser lidos direto pelo javascript. Com jQuery seria assim:
* 
* $.getJSON("http://localhost/minha-app/topera/b2", function(pessoa){
*    alert("Nome pego no servidor foi " + pessoa.nome);
* });   
*/

// renderiza de acordo com tipo de url
// "topera/varios.json" pega json e "topera/varios.html" pega html
def varios = {
def pessoa = new Pessoa([nome: "rafael", idade: 29]);
withFormat {
html {render "Nome:  $pessoa.nome
Idade:  $pessoa.idade"}
json {render pessoa as JSON}
}
}

// monta html via objeto
def htmlObj = {
render {
div(id:"meuId"){
b ("Mensagem")
}
}
}

// retorna stream de arquivo binario
def figura = {
response.setContentType("image/jpeg")
response.outputStream << new File("D:/foto.jpg").readBytes()
}

// redireciona pra ToperaController.html() (dá um sendRedirect, isto é, browser recebe informacao para redirecionar)
def redirect1 = {
redirect controller: 'topera', action: 'html'
}

// redireciona pra action a, no mesmo controller
def redirect2 = {
redirect action: 'html'
}

// encaminha para outra action, SEM envolver client (browser)
def forward = {
forward action: 'html'
}

}

class Pessoa {def nome, idade}

sábado, abril 16, 2011

Configurando modem Thomson Gateway TG508 Speedy

Contratou speedy e te falam:
"Desculpe senhor, não damos suporte ao linux"
ou
"Desculpe senhor, não damos suporte a modem roteado"

Segue abaixo algumas dicas que podem ajudar:


Modelo do modem: Thomson Gateway TG508

1. Ligar tudo.

2. Acessar o painel de controle do modem, abrindo a página http://192.168.1.1 no seu navegador.

3. Ir em Thomson Gateway > Configuracao > Escolha uma tarefa > Configuracao


4. Vá em PVC1 e mude para disabled. Clique em aplicar.

5. Refaça o caminho, só que agora para mudar o PVC0.


6. Troque isso:


  • Descrição ATM: PVC0
  • Protocolo ATM: 1483 Bridging
  • VPI/VCI: 8/35
  • DHCP: Marcado

Por isso:


  • Descrição ATM: PVC0
  • Protocolo ATM: PPPoE
  • VPI/VCI: 8/35
  • Nome de usuário: cadastro@cadastrotelefonica.com.br
  • Senha: cadastro
  • Confirmar Senha: cadastro

7. Dê aplicar.

Se tudo deu certo, a internet já estará funcionando.



quinta-feira, abril 10, 2008

Simulando Ajax em browsers sem Ajax

É possível implementar Ajax sem utilizar Microsoft.XMLHTTP, Msxml2.XMLHTTP ou XMLHttpRequest (o título deste artigo é apenas para polemizar). Se você tiver que implementar sites que funcionem em IEs antigos (5.55 em windows antigos), esse artigo pode lhe interessar. Uma possível solução é:

  1. Criar um iframe dinamicamente
  2. Criar um form dentro deste iframe
  3. Preencher um campo deste form com os dados a serem enviados
  4. Dar submit no form
  5. Fazer um "loop" com setTimeout para verificar quando os dados voltaram do servidor.
Segue abaixo alguns exemplos de como fazer isso.

Criar iframe dinamicamente:
document.body.innerHTML += '<iframe name="meuframe"> </iframe>;

ou (solução menos bugada)

var f = document.createElement("iframe");
f.setAttribute("name", "meuframe");
document.body.appendChild(f);
Deixar o iframe invisível:
// Aplique o seguinte estilo no iframe
visiblility:hidden; // com display:none não funfa no FF
width:0px; height:0px; // para ele não ocupar espaço
border:0px; // se ficar com a borda, o FF exibe um bloquinho cinza
Criar form no iframe e preencher campo:
var html = '';
html += '<form name="meuform" method="post" action="minhaurl" >';
html += '
<textarea name="dados">' +mensagem + '</textarea >';
html += '</form>';
// NÃO use document.body.innerHTML, pois o FF não conseguirá dar submit()!
frames['meuframe'].document.write(html);

Dar submit no form:
frames['meuframe'].document.forms[0].submit();
Loop que aguarda retorno dos dados:
function etapa4 () {
// se ainda houver um form é o pq os dados ainda não chegaram
if (frames['meuframe'].document.forms.length == 1) {
window.setTimeout("etapa4()", 100);
return;
} else {
var r =
frames['meuframe'].document.body.innerHTML;
eval("meucallback(" + r + ");");
}
}

Esta solução verifica a cada 1/10 de segundo se os dados voltaram do servidor. Assim que os dados voltarem, a função meucallback() é chamada, sendo passado como parâmetro o resultado.

Obs importante:
É preciso dar um intervalo de tempo entre as etapas para que o navegador "perceba" os novos objetos. Para isso, acrescente no final de cada função (cada etapa deve estar em uma função diferente) um temporizador:
// ex de código a ser colocado no final da etapa2
window.setTimeout("chama_etapa_3()", 10);


Solução Testada em:
  • Windows XP (SP2)
  • FF: Firefox 2.0.0.7
  • IE: Internet Explorer 7 e Internet Explorer 5.55
Deixe um comentário!
:)

segunda-feira, janeiro 21, 2008

Como criar uma conta no MSN usando linux

Jogo rápido: para criar um MSN você não precisa do Windows Live Messenger instalado. É só ir na URL http://get.live.com/getlive/overview e se cadastrar. Pronto! Dá pra criar numa boa, sem aquele vírus chamado Windows por perto...

E para usar você tem várias opções como o Kopete e o Gaim.

Fim!

terça-feira, janeiro 15, 2008

Configurando modem SpeedStream

HowTo de como configurar um modem SpeedStream no braço, para usar o speedy da Telefônica SEM provedor maldito...

1)
Por segurança, dê reset para voltar os valores de fábrica (aperte o pininho atrás do modem, usando um lápis).

2) Ganhe um IP local do modem, via DHCP.
$ sudo dhclient
(no caso do linux)
3) Acesse o modem através da URL http://192.168.254.254. Se não funcionar, descubra qual o IP do modem, lendo o IP fornecido pelo dhclient. Deve aparecer algo como:
DHCPACK from 192.168.254.254
4) Vá em Configuração -> Interface WAN (clique na conexão 2684 e altere o tipo para PPPoE)

5) Coloque os logins que a Telefônica está dando para quem não quer mais pagar provedor. Só não sei quanto tempo isso vai durar...
Login: internet@speedy.com.br
Senha: internet
(deixe tudo no default...ligue apenas "o conectar automaticamente")
6) Reinicie o modem

Se você for em Início verá a conexão com o status de "não habilitado"...não esquente a cabeça....aguarde até aparecer o botão de conectar, que deve levar uns 2 minutos.

Pronto!

Obs: imprima isso né? Como vai ler se não tem Internet?

Obs2: se lhe foi útil, deixe um comentário!! Não precisa autenticar...

Obs3: o DNS da Telefônica é 200.204.0.10, caso não venha de fábrica no modem.

quarta-feira, dezembro 05, 2007

Editor HTML para linux


Suponha que você quer fazer um formulário web rapidamente, mas agora não tem mais o FrontPage nem o Dreamweaver pra te ajudar. O que fazer?

Instale o Kompozer! (versão do NVU)
$ sudo apt-get install kompozer
$ kompozer
Fácil né?

obs: testado no Ubuntu Feisty

segunda-feira, dezembro 03, 2007

Converter todas imagens X em Y de um diretório

Intale o imagemagick:
apt-get install imagemagick

Crie o script megaultra-conversor.sh:
pico megaultra-conversor.sh

digite no arquivo, isso:
for arq in *.$1; do convert $arq $(echo $(echo $arq | cut -d. -f1).$2); done;

ou, se quiser converter sempre para RGB, como p. ex. de bmp8bits para bmp24bits:
for arq in *.$1; do convert $arq -depth 8 -type TrueColor $(echo $(echo $arq | cut -d. -f1).$2); done;


Grave, saia e transforme ele em executável:
chmod a+x megaultra-conversor.sh

pronto. basta entrar num diretrório chei de imagens bmp, copiar o script pra lá e mandar ver:
./megaultra-conversor.sh bmp jpg


vai converter todos os .bmp do diretorio em .jpg.

terça-feira, novembro 27, 2007

Logar no modo gráfico remotamente (xdmcp)

Na máquina servidora (vulgo remota):

1. Edite o arquivo kdmrc (dica: use locate kdmrc):
[Xdmcp] Enable=false

Basta alterá-la para:
[Xdmcp]
Enable=true
2. Dentro do arquivo "Xaccess", descomente a linha:
# * #any host can get a login window


Na máquina cliente (vulgo local):

1. Digitar no konsole:
X :2 -query ip.do.servidor
2. Ou, para abrir já no boot, edite o arquivo "/etc/rc.d/rc.4 ou 5", pondo a linha no final e boa sorte:
/usr/X11/bin/X -query ip.do.servidor

Fonte: Guia do Hardware

Brincando com o XO


Estes são os meus primeiros dias brincando com o XO, famoso laptop de 100 dólares, que tem fins educativos. A primeira impressão é muito boa: apesar de lento, vem com um Linux prontinho pra usar (Fedora). E é bem leve e bonitinho.... :)

Para os computeiros de plantão, seguem algumas coisas legais pra fazer com os "brinquedinhos"...



HABILITAR TERMINAL
Como em qualquer distribuição Linux, dê Ctrl+Alt+F1 para abrir um terminal. Ah, o F1 não existe né? Bom, o F1 virou o indicador de vizinhança (muitas bolinhas formando um círculo), próximo ao "ESC" (que virou um "X").
Usuário: root
Senha: apenas de enter
CONVERSAR 2 XOs POR SSH
Sim! Misteriosamente eles vêm com um servidor e um cliente de ssh. Até imagino a professora dizendo: "Joãozinho! Já falei mil vezes que não é pra hackear o laptop do amiguinho...".

UPDATE: os passos abaixo não precisam ser feitos se a rede mesh (automática) já funcionar. Aí, vc apenas digita ifconfig para saber qual seu IP (inet addr do msh0), põe senha no root e faz o ssh.

Para habilitar a comunicação wireless entre duas máquinas, digite em ambas:
# iwconfig eth0 essid teste channel 7 mode ad-hoc

# ifconfig eth0 10.0.0.1 netmask 255.255.255.0 up
(ok, varie o IP para cada máquina...10.0.0.2, 10.0.0.3, etc)

#iwlist scanning
(apenas para acompanhar se as redes estão sendo criadas)

# passwd
(o root vem sem senha, coloque alguma para poder fazer o ssh)

# ssh 10.0.0.1

Obs: as vezes nao deu certo

ATUALIZAR FIRMWARE E BUILD
Vá na wiki do projeto OLPC e baixe os releases mais recentes, compatíveis com seu hardware.

No meu caso, utilizo um B2, então irei colocar o firmware Q2D03. Ah, estas atualizações irão apagar tudo o que estiver gravado no laptop. Então tenha cuidado...
$ wget http://dev.laptop.org/pub/firmware/q2d03/q2d03.rom
(baixando a ROM, para atualizar o firmware posteriormente...copie para o pendrive)
Agora vamos copiar o build. Iremos escolher a versão devel, por ser a mais atual (e deve ser jffs2, pois estamos instalando num XO e não num emulador)

Bom, decidi baixar o build 625 (jffs2), que não é estável, mas é o mais recente...

$ wget http://..../olpc-redhat-stream-development-devel_jffs2.img
(renomeie para qualquercoisa.img e copie para /boot, no pendrive)

$ wget http://..../olpc-redhat-stream-development-devel_jffs2.img.crc
(renomeie para qualquercoisa.crc e copie para /boot, no pendrive)
Pronto! Ao listar os arquivos do pendrive, você deverá ter algo como:
/q2d03.rom
/boot/imagem.img
/boot/imagem.crc
Ok, remova o pendrive do seu computador e vamos colocá-lo no XO.

Siga os passos:

a) Com o XO desligado, plugue o pendrive.

b) Segurando o "X" (p/ baixo, no teclado de jogos), ligue o XO. Ou apenas tecle "esc" durante a inicialização, caso seu firmware seja mais recente. Após aparecer a mensagem "Release", solte o X. Digite 'help', ele é auto-explicativo.

ok flash u:/q2d03.rom
(para sobregravar a nova firmware)

ok copy-nand u:/boot/imagem.img

(para sobregravar o sistema operacional)
Pronto! É só rebootar!

LINKS RELEVANTES
- Wiki da OLPC

sexta-feira, setembro 07, 2007

Reinstalando apache e php no kubuntu 7.04

Bom, antes de tudo: é uma reinstalação que apaga todas as configurações que você fez. Serve pra quando vc quer voltar ao apache que "vem de fábrica".

Para remover:
$ sudo apt-get remove --purge apache2 apache2-common php5
$ sudo apt-get clean
(o --purge que irá apagar os arquivos de configuração)
Para colocar tudo de novo:
$ sudo apt-get install apache2 php5
Por fim, informamos o apache que ele deve processar os arquivos .php, ao invés de fazer a burrice de dar o nosso código-fonte php de bandeja pra quem visita o site, através do download de arquivos .phtml!
$ sudo ln /etc/apache2/mods-available/php5.* /etc/apache2/mods-enabled -s
$ sudo /etc/init.d/apache2 restart
Ah, não esqueça de limpar o cache do firefox ao fazer os testes....o reload irá continuar te enviado o .php caso o cache não seja limpo.

É isso.

Criando e matando um processo em background

Suponha que vc tenha um script que execute um programa e deixa-o em background, o que é muito comum quando se quer deixar um processo rodando eternamente em um servidor.

Para executar o programa, crie um arquivo texto assim:

1 meu_programa &
2 echo "$!" > pid.txt;
Bom, a primeira linha executa o programa chamado "meu_programa" e libera o terminal, indicado pelo caracter "&". Sem esse símbolo, assim que vc fechar o terminal (ou ssh) o processo também morrerá.

A segunda linha é mais interessante: o comando echo irá criar um arquivo chamado "pid.txt" e colocará dentro dele o pid do último processo que foi para o background. Isso é indicado pelos sinais "$!". Assim, temos armazenado qual o pid do processo que executamos na linha 1.

Bom, agora basta criar um segundo script, que irá matar aquele processo específico, caso esteja rodando. Abra um novo arquivo em um editor de texto e ponha isso:
1 if [ -f pid.txt ]; then
2 echo Matando processo com PID $(cat pid.txt)...
3 kill $(cat pid.txt)
4 rm pid.txt
5 fi
A linha 1 verifica se o arquivo "pid.txt" existe. Caso isso ocorra, significa que o processo deve estar rodando. O comando "$(cat pid.txt)" irá ler o conteúdo do arquivo, pelo comando cat. O resultado, que é o número do processo, é enviado para o "comando de fora", o kill, que irá encerrar o processo. Por fim, o rm apaga o arquivo, já que o processo foi encerrado.

É isso.

quarta-feira, setembro 05, 2007

Instanciando uma classe que está num .jar

Mais uma dica que pode poupar-lhe algum tempo: suponha que vc tem um .jar, cheio de classes lá dentro e quer usá-las. O que fazer?

Primeiro vc precisa saber o caminho das classes, então digite isso, na pasta do arquivo.jar
$ jar -tvf arquivo.jar
(irá mostrar os caminhos para os .class)
Depois, vá no seu HelloWorld.java (seu código-fonte), e dê um import, tipo esse:
import org.jivesoftware.smack.*;
(coloque o caminho retornado pelo comando anterior, trocando as "/" por ".")
Como nem tudo é perfeito nesse mundo, e vc não pode simplesmente dar include, como quem usa php, então vc deve falar sobre o .jar na hora de compilar e na hora de executar...

Para isso compile, acrescentando o -cp (que sobrepõe o classpath atual)
$ javac -cp ".:arquivo.jar" HelloWorld.java
(neste caso, tudo deve estar na mesma pasta)
E para rodar, faça isso:
$ java -cp ".:arquivo.jar" HelloWorld
Importante notar: na hora do "-cp" não troque o ":" por ";"...vc perderá duas horas com os paths definidos de maneira errada...

sexta-feira, agosto 17, 2007

Converter pdf em jpg

O comando convert, do linux (ubuntu), converte facilmente uma figura para outro formato.

Ex: você quer que figura.pdf vire figura.jpg ? Faça isso:
$ convert figura.pdf figura.jpg
Fácil não?

Outro exemplo: sua foto tá muito grande! Faça isso:
$ convert eu.jpg -resize 50% eu_menor.jpg

Obs: se quiser baixar a versão pra windows vá em http://tinyurl.com/2gxogu (mas eu não testei)

sexta-feira, julho 20, 2007

Histograma no Excel

Bom, lá vou eu com programas estatísticos...como estou com pressa e o programa R, do post abaixo, está me deixando doido, vou fazer no Excel mesmo. Aliás, excelente programa criado pela Microsoft, que eu não curto....

[não há como negar, oras bolas!]

Ok, para criar um histograma no Excel (testado no 2000) faça:
  1. Vá no menu Ferramentas -> Suplementos
  2. Marque a opção Ferramentas de análise
  3. Vá em Ferramentas -> Análise de dados
  4. Escolha histograma
Em intervalo de entrada indique a coluna que contém os dados.

Em intervalo do bloco indique uma coluna, que vc deverá ter criada antes,
que contém o tamanho de cada classe...tipo, para agrupar de 2 em 2, ponha
os valores 2, 4, 6, 8, etc....

Bom, aí vc dá ok e monta um gráfico em cima dos valores criados pelo Excel.
(ah, não são atualizados dinamicamente, cuidado)

É isso

sexta-feira, junho 09, 2006

Usando o microtorrent no linux

[Testado no Mepis (Debian)]

Para quem acha que o utorrent (microtorrent) é o melhor programa para baixar torrents que existe,
e quer continuar usando no linux, siga os seguintes passos:

1) Baixe o microtorrent http://www.utorrent.com/download.php (menos de 200KB!!! incrível)

(baixe a versão stand alone)

2) Baixe o wine, se não tiver (o wine serve para rodar programas do windows no linux)

apt-get install wine

3) Execute o utorrent.exe NORMALMENTE (duplo clique nele ou ./utorrent, em algum terminal)

Pronto, se tudo der certo, o programa estará rodando.....

Para testar, faça o download de alguma coisa......
(Vá em http://www.mininova.org/ e procure algo)

--
Tops

quinta-feira, junho 01, 2006

Fazendo seu computador receber comandos de voz no Linux

Antes de tudo saiba que esse tutorial só funciona para Linux baseados no Debian (Ubuntu, Kubuntu, Mepis, Kurumin)

1. Instale o PerlBox ( http://perlbox.sourceforge.net/)

https://sourceforge.net/project/showfiles.php?group_id=44421
(baixe o .deb e instale clicando nele ou use o dpkg -i)

2. Instale o Sphinx-2 ( http://cmusphinx.sourceforge.net)

apt-get install sphinx2-bin

3. Instale o Festival

apt-get install festival

Pronto!

Agora vá em um terminal e execute o perlbox, e clique em iniciar (não lembro o nome do botão, já desistalei tudo!...bom, quando aparecer listening, na janela aberta, é só falar)

Comigo funcionou os seguintes comandos:

Diga "home" (no microfone, é claro), e o konqueror irá abrir!
Diga "music", e o XMMS irá abrir.
Diga "terminal" e o xterm irá abrir.

Se não está funcionando faça duas coisas:

1) Regule melhor o microfone...pode estar muito baixo ou muito alto (gerando ruído)

2) Arraste uma barrinha para esquerda (que está nas opções dessa janela)...assim, o computador
fica menos "fresco" ao que está sendo dito, e entende mais facilmente.....o único problema é
que se ficar muito tolerante, qualquer conversa no microfone irá abrir algum aplicativo...(isso aconteceu comigo! O kate abriu do nada!)

Bom, na verdade eu já desistalei tudo isso por que encheu minha paciência ficar falando quatro vezes até ele me obedecer.....mas é uma boa experiência....dá pra ter uma noção do que nos aguarda no futuro......postarei aqui futuramente um possível diálogo

--
Tops