preload

mai 28

Python para desenvolvedores. Este é o nome do livro recém lançado por Luiz Eduardo Borges sobre a licença da Creative Commons, ou seja, o livro é free (gratuito).

O livro é ótimo! Como o proprio título do livro diz, o mesmo foi feito para pessoas que já programam e querem conhecer a linguagem python. Com uma didatica leve e objetiva, é uma ótima escolha para você que se encaixa no público alvo do livro.

Parabéns, Luiz Eduardo Borges. Iniciativas como esta fortalecem cada vez mais o software livre como um todo!

Marcadores:
fev 11

Hiow,

Recebi recentemente um e-mail sobe o JBoleto. Um componente Java para geração de boletos. Visitando o site do projeto, vi que se trata de algo realmente sério e funcional. Bem documentado e organizado. Vale a pena dar uma olhada, uma vez na vida você precisará gerar boletos. Espero que não usando Java…

Acesse: http://www.jboleto.org

Marcadores:
jan 31


clique para ampliar…

Hi,

Dizem que “quem não tem o que fazer: procura“. Estes dias de termino de férias dos estudos, conclui o jvelha. Meu mais novo projeto (uahua), um simples, básico e rápido jogo da velha em C.


clique para ampliar…

Em sua primeira versão, o jvelha v0.1 beta, foi codado em ASCII C no Ubuntu 8.10, compilador usando gcc 4.2.4. Baseado em um exemplo do livro “C Completo e Total” do Herbert Schildt. Nada de I.A. ou coisa do tipo, simples matriz bidimensional ([3][3]) e verificações simples das coordenadas (linha e coluna).

*** Pacote
jvelha-0.1b.tar.gz

*** Extraindo…
~$
~$ gzip -d jvelha-0.1b.tar.gz
~$ tar -xvzf jvelha-0.1b.tar

*** Compilando…
~$
~$ gcc jvelha-0.1b.c -o jvelha

*** Executando…
~$
~$ ./jvelha

Simples não?!?! ;)


clique para ampliar…

Marcadores:
dez 21

Woway…

Em um post anterior falei que estava estudando java nestas férias do curso. Enfim, sai então o primeiro exemplo! No melhor do estilo: Agenda Simples. Depois de “brincar” com java, vejo que OO (Orientação a Objetos) é realmente “foderoso” (mistura de foda + poderoso). Estou fascinado com o poder do Java. Lembrando: este exemplo é ridículo :P

*** Download dos arquivos

- Clique aqui para baixar o ex5.java
- Clique aqui para baixar o ModuloAgenda.java

O ex5.java tem os métodos principais e o ModuloAgenda.java a classe de mesmo nome, com os construtores e demais métodos. Veja abaixo os dois arquivos, divirta-se ;)

[ ex5.java ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
/*
 * ex5.java
 * --------
 *
 * Simples exemplo de "Agenda" em Java.
 * Só a merito de apredizado :P
 */
 
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
 
public class ex5 {
	private static int MAX = 10;		// maximo de registros :D
	private static int registros = 0;	// controle de registros na agenda!
	private ModuloAgenda[] dadosAgenda;
 
	public static void main(String args[]) {
		boolean ctrl = true;
		String escolha = "";
		ex5 regDadosAgenda = new ex5();
		BufferedReader dadosMenu = new BufferedReader(new InputStreamReader(System.in));
 
		while(ctrl) {
			System.out.println("--- MENU ---");
			System.out.println("------------\n");
			System.out.println("[A] Adiciona dados");
			System.out.println("[B] Excluir dados");
			System.out.println("[C] Visualizar dados");
			System.out.println("[Z] Sair\n");
 
			System.out.print("Opção: ");
			try {
				escolha = dadosMenu.readLine();
			} catch(IOException e) {
				System.out.println("\nErro: Caractere de escolha inválido!\n");
			}
 
			switch (escolha.charAt(0)) {
				case 'A' : case 'a' : regDadosAgenda.incluirDados(); break;
				case 'B' : case 'b' : regDadosAgenda.excluirDados(); break;
				case 'C' : case 'c' : regDadosAgenda.exibeDados(); break;
				case 'Z' : case 'z' : System.out.println("\nflw ;)"); System.exit(0);
			}
		}
	}
 
	/*
	 * Construtor default...
	 * Ao iniciar o programa, cria a agenda... :P
	 *
	 */
 
	public ex5() {
		dadosAgenda = new ModuloAgenda[MAX];
	}
 
	/*
	 * public void incluirDados();
	 * ---------------------------
	 *
	 * Receber dados do usuario e incluir os mesmos
	 * na classe ModuloAgenda() via construtor...
	 *
	 */
 
	public void incluirDados() {
		String nome		= "";
		String endereco = "";
		String tel		= "";
		String email	= "";
		BufferedReader dadosIn = new BufferedReader(new InputStreamReader(System.in));
 
		if (registros == MAX) {
			System.out.println("\nErro: Agenda está cheia!\n");
			return;
		}
 
		try {
			System.out.print("Informe o nome: ");
			nome = dadosIn.readLine();
 
			System.out.print("Informe o endereço: ");
			endereco = dadosIn.readLine();
 
			System.out.print("Informe o telefone: ");
			tel = dadosIn.readLine();
 
			System.out.print("Informe o e-mail: ");
			email = dadosIn.readLine();
		} catch (IOException e) {
			System.out.println("\nErro ao capturar dados!\n");
		}
 
		ModuloAgenda volumeDados = new ModuloAgenda(nome, endereco, tel, email);
		dadosAgenda[registros] = volumeDados;
		registros++;
	}
 
	/*
	 * public void excluirDados();
	 * ---------------------------
	 *
	 * Exclui dados do vetor "dadosAgenda" :D
	 */
 
	public void excluirDados() {
		int regNum = 0;
		BufferedReader dadosIn = new BufferedReader(new InputStreamReader(System.in));
 
		if (registros == 0) {
			System.out.println("\nErro: Agenda está vazia =/\n");
			return;
		}
 
		try {
			exibeDados();
			System.out.print("Numero do registro: ");
			regNum = Integer.parseInt(dadosIn.readLine()) - 1;
		} catch (IOException e) {
			System.out.println("\nErro ao capturar dados!\n");
		}
 
		if ((regNum < 0) || (regNum >= registros)) {
			System.out.println("\nErro: Registro fora do limite da Agenda!\n");
			return;
		} else {
			for (int i = regNum; i < registros; i++) {
				dadosAgenda[i] = dadosAgenda[i + 1];
			}
			dadosAgenda[registros] = null;
			registros--;
		}
	}
 
	/*
	 * public void exibeDados();
	 * -------------------------
	 *
	 * ...
	 */
 
	public void exibeDados() {
		if (registros == 0) {
			System.out.println("\nErro: agenda está vazia!\n");
		} else {
			for (int i = 0; i < registros; i++) {
				System.out.println("Registro: " + (i + 1));
				System.out.println("Nome	: "	+ dadosAgenda[i].getNome());
				System.out.println("Endereço: "	+ dadosAgenda[i].getEndereco());
				System.out.println("Telefone: "	+ dadosAgenda[i].getTel());
				System.out.println("E-mail	: " + dadosAgenda[i].getEmail() + "\n");
			}
		}
	}
}

[ ModuloAgenda.java ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/*
 * ModuloAgenda.java
 * -----------------
 *
 * Simples classe para ser usando no exemplo "Agenda" :P
 */
 
public class ModuloAgenda {
	private String nome;
	private String endereco;
	private String tel;
	private String email;
 
	private static int numCadastros;
 
	// construtor default...
	public ModuloAgenda() {
		numCadastros++;
	}
 
	// construtor para inserir volume de dados...
	public ModuloAgenda(String nome, String endereco, String tel, String email) {
		this.setName(nome);
		this.setEndereco(endereco);
		this.setTelefone(tel);
		this.setEmail(email);
	}
 
	// assessor para nome...
	public String getNome() {
		return nome;
	}
 
	// assessor para endereço...
	public String getEndereco() {
		return endereco;
	}
 
	// assessor para telefone...
	public String getTel() {
		return tel;
	}
 
	// assessor para email...
	public String getEmail() {
		return email;
	}
 
	// modificador para nome...
	public void setName(String nome) {
		this.nome = nome;
	}
 
	// modificador para endereço...
	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}
 
	// modificador para telefone...
	public void setTelefone(String tel) {
		this.tel = tel;
	}
 
	// modificador para e-mail...
	public void setEmail(String email) {
		this.email = email;
	}
}

Inté +…

Marcadores:
dez 15

Que começe o show :P

1
2
3
4
5
public class ex1 {
	public static void main(String args[]) {
		System.out.println("Alô Java!");
	}
}
Marcadores:
dez 13

Caelum é uma empresa que presta cursos e consultoria Java e Scrum. Considerada uma das melhores “escolas” de Java do Brasil, ela está liberando para o público geral algumas apostilas usadas em seus cursos. Vale a pena dar uma olhada, material de altíssima qualidade. Baixe já:

http://www.caelum.com.br/apostilas/

Inté +…

Marcadores:
dez 13

Hi,

férias do curso chegando e o interesse de estudar Java vem a tona. Realmente o poder da linguagem é extraordinário. A quantidade de pacotes de funções é incrível, unindo a idéia da máquina virtual (VM) tornando assim a linguagem multi-plataforma. Show!

Sempre tive um pé atrás com java, sempre achei a linguagem muito prolixa… puro preconceito de quem não a conhece. Realmente existem linguagens que com poucas linhas de código simples fazem coisas incríveis (exemplo do python), mas vejo que Java é tão “detalhista” para prover ao programador a maneabilidade da “arte de programar”, ou seja, ter o controle total da situação.

Bem, como tudo no Ubuntu (e na família Debian), o fato de se instalar um aplicativo se torna uma tarefa simples. Vejamos a instalação o JDK:

~$
~$ sudo apt-get install sun-java6-jdk
~$ sudo apt-get install sun-java6-doc

Simples, o apt-get faz o restante do trabalho. É opcional a instalação do sun-java6-doc, mas extremamente necessário, já que você estará sempre usado-o.

Depois de instalado o Java Development Kit (JDK) e seus derivados que o apt-get instala junto, vamos instalar o eclipse. O eclipse é uma IDE de desenvolvimento que suporta várias linguagens e – na minha opinião -, a melhor IDE para desenvolvimento Java. Simples como a descrição, faz-se a instalação:

~$
~$ sudo apt-get install eclipse

Pronto, tem-se – então – um ambiente de desenvolvimento Java no seu Ubuntu, como sempre, de forma rapida e simples.

Em breve, mais sobre Java!

Marcadores:
nov 27

Hi povo!

Depois de “séculos” sem postar algo, venho trazer um link de uma apostila bacana para quem se interessa em Desenvolvimento de Jogos. Esta apostila foi desenvolvida pelo Silveira quando ele ministrou um curso sobre o assunto na UECE. A apostila é voltada para linguagem C usando a bilbioteca SDL (libSDL). Se tem interesse no assunto, vale a pena dá uma olhada. Clique abaixo:

Clique aqui para acessar o blog do Silveira!

Inté +…

Marcadores:
out 29

How,

esta coisa de blog é interessante. Recebi um e-mail mostrando que a versão do ccesar 0.1b tinha alguns bugs. Um dos bugs era que quando se cifrava frases usando as letra “X”, “Y” e “Z” elas se tornavam os caracteres “[", "" e "]“. Tudo bem… a ídeia é realmente cifrar. Mas no momento de decifrar estes caracteres ([, e ]) o ccesar 0.2b não fazia!!!

Simples, veja este versão 0.2a. Foi somente tratar os caracteres “[", "", "]” no momento da decifragem e atribuir os caracteres que representam os mesmos, neste caso “X”, “Y” e “Z”. Então…

1. Baixe o código-fonte e compile-o:

~$
~$ wget http://www.bleno.org/blog/bin/ccesar-0.2a.pas
~$ fpc ccesar-0.2a.pas

2. Cifrando e decifrando:

~$
~$ ./ccesar-0.2a
[ informe a opção para cifrar ]

x. Digite a frase: bleno foi para o parque ziroky
x. Frase cifrada: EOHQR IRL SDUD R SDUTXH ]LURN

[ informe a opção para decifrar ]

x. Digite a frase: EOHQR IRL SDUD R SDUTXH ]LURN
x. Frase decifrada: bleno foi para o parque ziroky

Simples não? oO

Enfim, nas próximas versões o ccesar terá suporte a acentos e a mais alguns caracteres “não alfabeticos” e tratamento de letras maiusculas e minusculas. Mas, nas próximas versões.

Espero que tenha gostado ;)

Marcadores:
out 25

Hi,

estava lendo sobre Júlio César, quando vi que ele havia usado um tipo de criptografia em sua época. Chamada atualmente de Cifra de César, consistia em trocar cada letra de uma palavra pela terceira próxima letra do alfabeto. Interessante não? oO

Surgiu a ídeia de fazer um programa que colocasse esta técnica em prática. Então, surgiu o ccesar v0.1b (não se engane, realmente todos os meus projetos ainda estão na versão 0.1b, rsrsrs). Codei a ídea em pascal, usando o compilador Free Pascal no ubuntu. Enfim, teste você mesmo:

1. Baixe o código-fonte e compile-o

~$
~$ wget http://www.bleno.org/blog/bin/ccesar.pas
~$ fpc ccesar.pas

2. Cifrando e decifrando…

~$
~$ ./ccesar

O ccsar é muito simples! Informe a opção para cifrar, digite a palavra ou frase, veja o resultado. Legal não? Agora, informe a opção para decifrar, coloca o resultado da cifra e veja o resultado. Vejamos um exemplo simples…

~$
~$ ./ccesar
[ informe a opção para cifrar... ]

x. Digite a frase: bleno foi pro mato
x. Frase cifrada: EOHQR IRL SUR PDWR

[ informe a opção para decifrar... ]

x. Digite a frase: EOHQR IRL SUR PDWR
x. Frase decifrada: bleno foi pro mato

Interessante não? rsrsrs. É obvio que a Cifra de César é muito simples, não oferece nenhuma segurança realmente relevante nos dias atuais, mas é um exemplo interessante de comunicação comumente utilizado antigamente. Existe outros tipos de “criptografias” simples utilizadas pelos povos mais antigos, estou pesquisando e implementando no crypt, que em breve virá uma nova versão, bem mais interessante.

Espero que tenha gostado ;)

Marcadores:

2006 - 2009 (c) bleno.org
100% Compatível com Mozilla Firefox