Skip to content

Category: Uncategorized

Configurando GPRS para celulares Oi

Eu testei essas configurações com um Nokia 3300 e com Nokia 6610i.

Configurações

O lugar onde você tem que entrar com essas configurações varia de aparelho para aparelho, mas nos Nokia elas ficam em geral na seção chamada Serviços, geralmente identificada por um globo. Geralmente há várias Configurações de Conexão, o que você faz é criar uma nova e utiliza-la.

Aqui estão todos os dados que você vai precisar. Não se assuste, aqui tem mais dados do que você realmente vai precisar:

Nome: Oi WAP GPRS
Página principal: http://wap.oi.com.br
Tipo de Serviço: WAP Seguro
Gateway: 200.222.108.241
Porta 1: 9203
Domínio 1:
Tipo de Serviço 2: WAP Seguro
Gateway: 200.222.108.241
Porta 2: 9203
Domínio 2:
DNS 1: 000.000.000.000
DNS 2: 000.000.000.000
Tempo Expirado: 10 minutos
CSD No. 1:
Nome Usuário 1:
Senha 1:
Velocidade(Bps) 1: 9600
Linha Tipo 1: ISDN
CSD No. 2:
Nome Usuário 2:
Senha 2:
Velocidade(Bps) 2: 9600
Linha Tipo 2: ISDN
GPRS APN: wapgprs.oi.com.br
Nome do Usuário: oiwap
Senha: oioioi

Provavelmente o que você vai precisar é do APN, gateway (que no celular pode estar escrito IP), login e senha.

Preços e Tarifas

A Oi cobra R$ 0,008 por kb, mais ou menos um centavo por byte. Nos testes que eu fiz, entrar na versão móvel do twitter, me logar, postar um texto e sair custou 8 centavos. Nada mal.

Periquitos camuflados

Quase chegando onde eu tinha estacionado o carro eu escuto um barulho estranho, como que centenas de cacarejos.

Eu olho pra cima, pros lados e nada. Só uma rua deserta da cidade num dia ensolarado de sábado. Aí eu olho mais atentamente as árvores, cajueiros pra ser mais exato, e no meio das folhas eu vejo um pássaro verde, quase invisível no meio das folhas. Mas ele sozinho não poderia produzir tanto barulho. Aí eu me dou conta que eram dezenas, talvez até centenas de pássaros igualmente verdes e igualmente camuflados na impossibilidade de haver tantos pássaros tão bonitos assim no meio da cidade.

Se ao menos eu estivesse com uma câmera. Mas pera aí. Eu estou com uma câmera digital no carro, e bem perto de onde eu estou. Minha curiosidade venceu o medo de ser assaltado numa rua onde todo mundo que eu conheço já foi assaltado.

O pássaro verde

Não entendo muito de pássaros, mas como todos eram desse mesmo tamanho, acho que eram periquitos. Infelizmente na foto só aparece um deles.

Deu até pra medir o quão minha curiosidade foi maior que meu medo, exatas duas fotos. Não mais do que isso, sob a pena de não tirar outras fotos tão cedo.

Periquitos no cajueiro Periquitos no cajueiro

JavaScript: Vetores

Um tutorial básico orientado a exemplos de como funcionam os vetores em JavaScript.

Criando e acessando um vetor

var planetas = new Array()
planetas[0] = "Mercúrio"
planetas[1] = "Vênus"
planetas[2] = "Terra"
planetas[3] = "Marte"
planetas[4] = "Júpiter"
planetas[5] = "Saturno"
planetas[6] = "Urano"
planetas[7] = "Neptuno"

for (i=0;i

Que vai escrever isso:

Mercúrio
Vênus
Terra
Marte
Júpiter
Saturno
Urano
Neptuno

Iterando no vetor

var planetas = new Array()
planetas[0] = "Mercúrio"
planetas[1] = "Vênus"
planetas[2] = "Terra"
planetas[3] = "Marte"
planetas[4] = "Júpiter"
planetas[5] = "Saturno"
planetas[6] = "Urano"
planetas[7] = "Neptuno"

for (i in planetas){
    document.write(planetas[i] + "")
}

vai retornar a mesma saída do primeiro programa:

Que vai escrever isso:

Mercúrio
Vênus
Terra
Marte
Júpiter
Saturno
Urano
Neptuno

Concatenando dois vetores

var litoral = new Array()
litoral[0] = "Jericoacoara"
litoral[1] = "Paracuru"
litoral[2] = "Tabuba"

var sertao = new Array()
sertao[0] = "Itapipoca"
sertao[1] = "Ubajara"
sertao[2] = "Juazeiro"

var ceara = litoral.concat(sertao)

document.write(litoral+"
")
document.write(sertao+"
")
document.write(ceara+"
")

Jericoacoara,Paracuru,Tabuba
Itapipoca,Ubajara,Juazeiro
Jericoacoara,Paracuru,Tabuba,Itapipoca,Ubajara,Juazeiro

Unindo os elementos de um vetor

var letras = new Array(3)
letras[0] = "A"
letras[1] = "B"
letras[2] = "C"
document.write(letras.join() + "")
document.write(letras.join("@"))

A,B,C
A@B@C

Ordenação Literal

Essa ordenação é feita sem usar nenhum parâmetro, então a ordem lexicográfica, a do dicionário.

var coisas = new Array(4)
coisas[0] = "casa"
coisas[1] = "bonde"
coisas[2] = "alvo"
coisas[3] = "dado"

document.write(coisas + "")
document.write(coisas.sort()+ "")
document.write(coisas + "")

Note que depois do .sort() o vetor é alterado.

casa,bonde,alvo,dado
alvo,bonde,casa,dado
alvo,bonde,casa,dado

Ordenação usando uma função de ordenação

A ordenação literal não vai funcionar bem nesse caso, então nos definimos uma função para ordenação. Ela deve retornar zero se ambos forem iguais, um número positivo se o primeiro for maior que o segundo e um número negativo se o segundo for maior que o primeiro.

function sortNumber(a, b){
return a - b
}

var arr = new Array(6)
arr[0] = "10"
arr[1] = "5"
arr[2] = "40"
arr[3] = "25"
arr[4] = "1000"
arr[5] = "1"

document.write(arr + "")
document.write(arr.sort()+"
")
document.write(arr.sort(sortNumber))

10,5,40,25,1000,1
1,10,1000,25,40,5
1,5,10,25,40,1000

Retirando o último elemento

O pop retorna o último elemento do vetor e o retira.

var gatos = new Array(3)
gatos[0] = "Frida"
gatos[1] = "Sauber"
gatos[2] = "Boris"
document.write(gatos + "")
document.write(gatos.pop() + "")
document.write(gatos)

Frida,Sauber,Boris
Boris
Frida,Sauber

Inserindo elementos no final do vetor

O push insere um elemento no final do vetor e retorna seu novo tamanho.

var animais = new Array(3)
animais[0] = "Frida"
animais[1] = "Sauber"
animais[2] = "Frida"
document.write(animais + "")
document.write(animais.push("Vida")+ "")
document.write(animais)

Frida,Sauber,Frida
4
Frida,Sauber,Frida,Vida

Inserindo elementos no inicio do vetor

var inst = new Array(3)
inst[0] = "Baixo"
inst[1] = "Guitarra"
inst[2] = "Piano"
document.write(inst + "")
document.write(inst.unshift("Flauta") + "")
document.write(inst)

Baixo,Guitarra,Piano
4
Flauta,Baixo,Guitarra,Piano

Retirando elemento no inicio do vetor

var inst = new Array(3)
inst[0] = "Baixo"
inst[1] = "Guitarra"
inst[2] = "Piano"

document.write(inst + "")
document.write(inst.shift() + "")
document.write(inst)

Baixo,Guitarra,Piano
Baixo
Guitarra,Piano

JavaScript: Informações sobre o Navegador do Usuário


Você deve estar vendo na caixinha de cima várias informações sobre o seu navegador.
O trecho do código JavaScript que gerou isso foi:



Cada um das variáveis lidas de navigator contém algum tipo de informação útil sobre as características do navegador.

É a Vida, é Bonita e é Bonita

A cachorrinha nova da Ana Paula, o nome dela é Vida. Ela ainda é uma filhotinha e é da raça Pug.

Vida, a pug

É uma raça muito carinho, sociável, obediente e leal. Como eles tem vias nasais bem pequenas, eles tem jeito estranho de respirar. Para quem nunca esteve perto de um Pug antes, como eu, a impressão que se tem é que ele está doente ou sem conseguir respirar.

Fotos:

Deborah e Vida, cachorra, cadela Deborah e Vida Deborah e Vida beijando-se Vida cabisbaixa Vida de cachorro Vida dormindo Vida Olhando a Vida Vida olhando para a c Vida Olhando para cima na grama Pug sentado na mesa Pug olhando para trás Pug pensando pug olhando pra trás pug pensando Pug tristonha

Conclusão: até o Mickey que é um rato tem um cachorro. Só eu que não tenho 🙁

Javascript dentro do WordPress

Vamos fazer um teste:

O código-fonte:


Se você clicou no botão e apareceu uma janelinha chata, então a coisa deu certo.

Para escrever códigos dentro do WordPress você precisa desligar o editor rico nas configurações. Além disso é necessário escrever códigos de uma só linha. Para códigos mais violentos, você precisa invocar o código de um arquivo .js externo.


Se você escrever o código dentro do editor o WordPress vai esculhambar seu código com tags html de fim de linha e parágrafo. Então você vai precisar realmente de um arquivo externo.

Decimal para Binário

Código em C para converter um inteiro positivo em uma representação em string binária.

#include
#include
#include

char * decpbin(unsigned int n){
   int i, r, c;
   char * bin;
   bin = calloc(16,sizeof(char));
   memcpy(bin, "0000000000000000", 16);
   i = n;
   c = 0;
   while(i>0){
      r = i % 2;
      i = i/2;
      bin[15-c] = '0'+r;
      c++;
   }
   return bin;
}

int main(){
   char * dec;
   dec = decpbin(1985);
   printf("%s\n", dec);
   free(dec);
}

Compilando e Testando:

$ gcc decbin.c -o decbin
$ ./decbin
0000011111000001

No caso, ele foi feito para inteiros não sinalizados. Como um inteiro ocupa 16 bits, e não estamos gastando um bit para o sinal, o maior número que pode ser convertido é 65535. Por isso criamos a string bin com 16 casas de tamanho.

Basicamente é o algoritmo que se usa para transformar um inteiro em binário. Você pega o número, pega o resto da divisão por 2, que vai ser 0 ou 1 e usa isso para representar o bit menos significativo, ou seja, o mais a direita. Depois pega o número e divide por dois e pega novamente o resto. Fica fazendo isso até que o número dividido por 2 seja 0.

Exemplos de Prolog

Prolog é uma linguagem de programação geralmente usada para inteligência artificial e linguística computacional.

Grafo em árvore
Faz um tempo que eu não uso Prolog então esse é meio um tutorial relâmpago para eu relembrar um pouco. São um apanhado de exemplos básicos e um guia de instalação e uso do swi-prolog no Ubuntu.

Qual o Tamanho da Wikipédia?

Se a Wikipédia em inglês fosse impressa ela teria esse tamanho:

Tamanho estimado da Wikipédia em inglês impressa
Ilustração original de Nikola Smolenski.

Usando livros de 25 centímetros por 5 centímetros, com mais ou menos 400 páginas, cada página contendo duas colunas, cada coluna contendo 80 linhas e cada linha contendo 50 caracteres, dá aproximadamente 6MB por volume. Como a versão da Wikipédia em inglês tem 4.4 GB de texto (isso em Outubro de 2006) temos então 750 volumes. E isso é uma medida conservadora visto que não estamos incluindo imagens e tabelas, que consomem muito mais espaço nas folhas.

E pelo crescimento da Wikipédia desde esse período, o tamanho da prateleira deve ter dobrado! E olhe que isso é só a Wikipédia em inglês.

Olá Mundo em Java

Esse post faz parte de uma série de posts com pequenos códigos que mostram certas funcionalidades de linguagens como Java. A vantagem do Java é ser uma linguagem bem estabelecida, madura e portável. Há diversos excelentes ambiente para desenvolvimento e um imenso framework padrão da linguagem, além de vários outros frameworks e bibliotecas adicionais.

Para fazer seu primeiro programa em Java, crie um arquivo chamado OlaMundo.java com esse conteúdo:

public class OlaMundo {
    public static void main(String[] args) {
        System.out.println("Olá Mundo!");
    }
}

O que você está fazendo é criar uma classe chamada OlaMundo. A linguagem exige que o nome do arquivo e o nome da classe sejam o mesmo, sendo o arquivo acrescido da extensão java, no nosso caso fica OlaMundo.java. Depois nós declaramos um método padrão chamado main, o que significa public, static, void, String args não é muito importante para quem está começando. A chamada System.out.println com um parâmetro “Olá Mundo” vai escrever na tela a mensagem “Olá Mundo”.

É necessário compilar esse código para a máquina virtual Java. Isso pode ser feito através do comando no prompt:

javac OlaMundo.java

Se tudo deu certo, nenhuma mensagem deverá aparecer. Se algo der errado, dê uma olhada se o seu código está mesmo igual ao que eu mostrei, e verifique se você realmente salvou o arquivo como OlaMundo.java (esse é um erro muito comum).

Para ver o programa funcionando, você vai invocar a máquina virtual Java e passar como parâmetro a classe OlaMundo. Isso é feito em linha de comando assim:

javac OlaMundo

Que vai retornar:

Olá Mundo!

Cuido para não colocar a extensão .java depois do parâmetro do comando java, esse é um erro muito comum.

Um bom exercício para esse programa é variar a mensagem exibida na tela. Experimente colocar outra mensagem, como o seu nome. 😀