// Para pegar a representação binária de um
// tipo long em java, use o código abaixo:
long x = "10"
String str = Long.toString(x, 2);
System.out.println(str);
// O mesmo código pode ser usado para inteiro.
terça-feira, 16 de dezembro de 2008
quinta-feira, 4 de dezembro de 2008
Convertendo String Binária Para Inteiro em C#
// Abaixo metodo que pega um valor binario em
// uma string e devolve o inteiro correspondente.
// Exemplo:
// string str = "00001001";
// metodo retorna 9
public int ToDecimal(string bin)
{
long l = Convert.ToInt64(bin,2);
int i = (int)l;
return i;
}
// uma string e devolve o inteiro correspondente.
// Exemplo:
// string str = "00001001";
// metodo retorna 9
public int ToDecimal(string bin)
{
long l = Convert.ToInt64(bin,2);
int i = (int)l;
return i;
}
segunda-feira, 1 de dezembro de 2008
Como funciona o SSL
Basicamente:
Digamos que uma mensagem é transmitida de A para B. Neste caso A usa a chave pública de B para criptografar a mensagem, tornando B a única pessoa que pode decodificar a mensagem, usando a sua chave privada. Nós não podemos entretanto ter certeza quanto a identidade de A.
Para resolver este problema utiliza-se os certificados digitais. O certificado é assinado usando a chave privada do emissor do certificado. Certificados são um meio padrão de ligar uma chave pública a um nome.
Por meio dessa tecnologia de certificado, todos podem examinar o certificado de A para ver se está sendo forjado. Assumindo que A tenha rígido controle sobre sua chave privada, e que seja realmente A quem obteve o certificado, então tudo está bem.

Referências:
www.gta.ufrj.br/grad/00_2/ssl/ssl.htm
publib.boulder.ibm.com/tividd/td/TRM/GC32-1323-00/pt_BR/HTML/admin231.htm
Digamos que uma mensagem é transmitida de A para B. Neste caso A usa a chave pública de B para criptografar a mensagem, tornando B a única pessoa que pode decodificar a mensagem, usando a sua chave privada. Nós não podemos entretanto ter certeza quanto a identidade de A.
Para resolver este problema utiliza-se os certificados digitais. O certificado é assinado usando a chave privada do emissor do certificado. Certificados são um meio padrão de ligar uma chave pública a um nome.
Por meio dessa tecnologia de certificado, todos podem examinar o certificado de A para ver se está sendo forjado. Assumindo que A tenha rígido controle sobre sua chave privada, e que seja realmente A quem obteve o certificado, então tudo está bem.

Referências:
www.gta.ufrj.br/grad/00_2/ssl/ssl.htm
publib.boulder.ibm.com/tividd/td/TRM/GC32-1323-00/pt_BR/HTML/admin231.htm
sábado, 29 de novembro de 2008
Software para Controle de Vendas e Estoque
Controle de Vendas & Estoque (Freeware em java)
Este é um programa para controle de vendas e estoque em um estabelecimento comercial. É feito em Java e todo o código está dísponível. O programa está em desenvolvimento e novas funcionalidades estão sendo criadas. O código é facilmente adaptável à outras aplicações, para importar o código use Ecliple IDE 3.2 ou posterior.
Download:
https://sourceforge.net/projects/vendasestoquedl
Este é um programa para controle de vendas e estoque em um estabelecimento comercial. É feito em Java e todo o código está dísponível. O programa está em desenvolvimento e novas funcionalidades estão sendo criadas. O código é facilmente adaptável à outras aplicações, para importar o código use Ecliple IDE 3.2 ou posterior.
https://sourceforge.net/projects/vendasestoquedl
terça-feira, 25 de novembro de 2008
Exemplo de gráfico de barras com JFreeChart
//Requerido a Api JFreeChart
import java.awt.Dimension;
import javax.swing.JFrame;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
public class BarsGraphic extends JFrame{
public BarsGraphic(String title) {
super(title);
CategoryDataset dataset = BarsGraphic.createDataset();
JFreeChart chart = BarsGraphic.createBarChart(dataset);
ChartPanel panel = new ChartPanel(chart);
panel.setPreferredSize(new Dimension(400, 300));
setContentPane(panel);
}
private static CategoryDataset createDataset() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(6, "Preto", "Corsa");
dataset.addValue(4, "Preto", "Fiesta");
dataset.addValue(3, "Preto", "Gol");
dataset.addValue(5, "Vermelho", "Corsa");
dataset.addValue(2, "Vermelho", "Fiesta");
dataset.addValue(3, "Vermelho", "Gol");
dataset.addValue(2, "Azul", "Corsa");
dataset.addValue(8, "Azul", "Fiesta");
dataset.addValue(1, "Azul", "Gol");
return dataset;
}
private static JFreeChart createBarChart(CategoryDataset dataset) {
JFreeChart chart = ChartFactory.createBarChart(
"Escolha de cor por veículo", //Titulo
"Veículo", // Eixo X
"Quantidade", //Eixo Y
dataset, // Dados para o grafico
PlotOrientation.VERTICAL, //Orientacao do grafico
true, false, false); // exibir: legendas, tooltips, url
return chart;
}
public static void main( String[] args ) {
BarsGraphic chart = new BarsGraphic("Teste Bar Chart");
chart.pack();
chart.setVisible(true);
}
}
// outra ferramenta mais leve pode ser encontrada em:
// http://www.java2s.com/Code/Java/Chart/CatalogChart.htm
import java.awt.Dimension;
import javax.swing.JFrame;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
public class BarsGraphic extends JFrame{
public BarsGraphic(String title) {
super(title);
CategoryDataset dataset = BarsGraphic.createDataset();
JFreeChart chart = BarsGraphic.createBarChart(dataset);
ChartPanel panel = new ChartPanel(chart);
panel.setPreferredSize(new Dimension(400, 300));
setContentPane(panel);
}
private static CategoryDataset createDataset() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(6, "Preto", "Corsa");
dataset.addValue(4, "Preto", "Fiesta");
dataset.addValue(3, "Preto", "Gol");
dataset.addValue(5, "Vermelho", "Corsa");
dataset.addValue(2, "Vermelho", "Fiesta");
dataset.addValue(3, "Vermelho", "Gol");
dataset.addValue(2, "Azul", "Corsa");
dataset.addValue(8, "Azul", "Fiesta");
dataset.addValue(1, "Azul", "Gol");
return dataset;
}
private static JFreeChart createBarChart(CategoryDataset dataset) {
JFreeChart chart = ChartFactory.createBarChart(
"Escolha de cor por veículo", //Titulo
"Veículo", // Eixo X
"Quantidade", //Eixo Y
dataset, // Dados para o grafico
PlotOrientation.VERTICAL, //Orientacao do grafico
true, false, false); // exibir: legendas, tooltips, url
return chart;
}
public static void main( String[] args ) {
BarsGraphic chart = new BarsGraphic("Teste Bar Chart");
chart.pack();
chart.setVisible(true);
}
}
// outra ferramenta mais leve pode ser encontrada em:
// http://www.java2s.com/Code/Java/Chart/CatalogChart.htm
Instalando e configurando o Archiva no Tomcat
Primeiramente você terá que fazer o download do Apache Tomcat e do Archiva e do Java. A versões usadas nesse tutorial foram:
- Java 1.6;
- Tomcat 5.27;
- Archiva 1.2-M1.
Faça o download do War e do Standalone do Archiva pois iremos precisar dos dois.
- Java: http://java.sun.com/javase/downloads/index.jsp
- Tomcat: http://tomcat.apache.org/download-55.cgi
- Archiva: http://archiva.apache.org/download.html
Agora vamos as instalações:
• Instale o Java em sua máquina e crie uma variável de ambiente chamada JAVA_HOME, e aponte ela para o local que foi instalado o Java;
• Depois descompacte o Tomcat no C:\ da sua máquina e crie uma variável de ambiente chamada CATALINA_HOME, e aponte para o local que você descompactou o Tomcat;
• Agora crie uma pasta chamada ‘archiva’ dentro do Tomcat, no mesmo nível que as pastas bin, conf, logs e outras;
• Copie o arquivo War do Archiva para dentro desta pasta que você acabou de criar;
• Crie um arquivo chamado ‘archiva.xml’ e coloque dentro da pasta
tomcat_home/conf/Catalina/localhost/ com o seguinte conteúdo:
link para o contéudo
Observação: Na tag Resource, a propriedade url é o caminho do banco de dados que o Archiva irá usar. Você pode definir qualquer caminho.
• Agora descompacte o Archiva Standalone que você baixou. Acesse a pasta descompactada e abra a pasta lib. Dentro desta pasta copie esses 3 arquivos:
- derby-10.1.3.1.jar (or later);
- activation-1.1.jar;
- mail-1.4.jar.
Abra a pasta tomcat_home\common\lib e cole esses 3 arquivos.
• Agora crie mais uma variável de ambiente chamada CATALINA_OPTS com o seguinte valor:
CATALINA_OPTS="-Dappserver.home=$CATALINA_HOME -Dappserver.base=$CATALINA_HOME"
Pronto! Agora é só acessar http://localhost:8080/archiva e começar a usar. A primeira página que o Archiva irá lhe mostrar será uma página pedindo para você cadastrar um Administrador.
Configurando o Maven com o Archiva
Para usar o Archiva como repositório para o Maven você precisa criar um arquivo chamado settings.xml e colocar dentro da pasta user_home/.m2. O conteúdo desse arquivo será:
link para conteúdo
Para que você consiga fazer o deploy de sua aplicação você precisa inserir o seguinte código no seu pom.xml:
link para conteúdo
Agora é só usar!
Tutorial elaborado por Rodrigo Luís de Faria.
Email: rodrigolfsi@gmail.com
- Java 1.6;
- Tomcat 5.27;
- Archiva 1.2-M1.
Faça o download do War e do Standalone do Archiva pois iremos precisar dos dois.
- Java: http://java.sun.com/javase/downloads/index.jsp
- Tomcat: http://tomcat.apache.org/download-55.cgi
- Archiva: http://archiva.apache.org/download.html
Agora vamos as instalações:
• Instale o Java em sua máquina e crie uma variável de ambiente chamada JAVA_HOME, e aponte ela para o local que foi instalado o Java;
• Depois descompacte o Tomcat no C:\ da sua máquina e crie uma variável de ambiente chamada CATALINA_HOME, e aponte para o local que você descompactou o Tomcat;
• Agora crie uma pasta chamada ‘archiva’ dentro do Tomcat, no mesmo nível que as pastas bin, conf, logs e outras;
• Copie o arquivo War do Archiva para dentro desta pasta que você acabou de criar;
• Crie um arquivo chamado ‘archiva.xml’ e coloque dentro da pasta
tomcat_home/conf/Catalina/localhost/ com o seguinte conteúdo:
link para o contéudo
Observação: Na tag Resource, a propriedade url é o caminho do banco de dados que o Archiva irá usar. Você pode definir qualquer caminho.
• Agora descompacte o Archiva Standalone que você baixou. Acesse a pasta descompactada e abra a pasta lib. Dentro desta pasta copie esses 3 arquivos:
- derby-10.1.3.1.jar (or later);
- activation-1.1.jar;
- mail-1.4.jar.
Abra a pasta tomcat_home\common\lib e cole esses 3 arquivos.
• Agora crie mais uma variável de ambiente chamada CATALINA_OPTS com o seguinte valor:
CATALINA_OPTS="-Dappserver.home=$CATALINA_HOME -Dappserver.base=$CATALINA_HOME"
Pronto! Agora é só acessar http://localhost:8080/archiva e começar a usar. A primeira página que o Archiva irá lhe mostrar será uma página pedindo para você cadastrar um Administrador.
Configurando o Maven com o Archiva
Para usar o Archiva como repositório para o Maven você precisa criar um arquivo chamado settings.xml e colocar dentro da pasta user_home/.m2. O conteúdo desse arquivo será:
link para conteúdo
Para que você consiga fazer o deploy de sua aplicação você precisa inserir o seguinte código no seu pom.xml:
link para conteúdo
Agora é só usar!
Tutorial elaborado por Rodrigo Luís de Faria.
Email: rodrigolfsi@gma
domingo, 16 de novembro de 2008
Criptografia Base64 em Lua
--implementacao de criptografia Base64 em linguagem Lua.
local bin = { }
function bin.imod(a, b)
return a - math.floor(a / b) * b
end
function bin.rshift(a, b)
if (a < 0) then
a = 4294967296 + a
end
if (b < 0) then
b = 4294967296 + b
end
a = bin.imod(a, 4294967296)
b = bin.imod(b, 4294967296)
return math.floor(a / (2 ^ b))
end
function bin.lshift(a, b)
if (a < 0) then
a = 4294967296 + a
end
if (b < 0) then
b = 4294967296 + b
end
a = bin.imod(a, 4294967296)
b = bin.imod(b, 4294967296)
return math.floor(a * (2 ^ b))
end
function bin.band(a, b)
local i, v, r, b1, b2
if (a < 0) then
a = 4294967296 + a
end
if (b < 0) then
b = 4294967296 + b
end
a = bin.imod(a, 4294967296)
b = bin.imod(b, 4294967296)
r = 0
for i = 31, 0, -1 do
v = 2 ^ i
b1 = a >= v
b2 = b >= v
if (b1) and (b2) then
r = r + v
end
if (b1) then
a = a - v
end
if (b2) then
b = b - v
end
end
return r
end
function bin.bor(a, b)
local i, v, r, b1, b2
if (a < 0) then
a = 4294967296 + a
end
if (b < 0) then
b = 4294967296 + b
end
a = bin.imod(a, 4294967296)
b = bin.imod(b, 4294967296)
r = 0
for i = 31, 0, -1 do
v = 2 ^ i
b1 = a >= v
b2 = b >= v
if (b1) or (b2) then
r = r + v
end
if (b1) then
a = a - v
end
if (b2) then
b = b - v
end
end
return r
end
function bin.bxor(a, b)
local i, v, r, b1, b2
if (a < 0) then
a = 4294967296 + a
end
if (b < 0) then
b = 4294967296 + b
end
a = bin.imod(a, 4294967296)
b = bin.imod(b, 4294967296)
r = 0
for i = 31, 0, -1 do
v = 2 ^ i
b1 = a >= v
b2 = b >= v
if (b1 ~= b2) then
r = r + v
end
if (b1) then
a = a - v
end
if (b2) then
b = b - v
end
end
return r
end
function bin.bnot(a)
local i, v, r, b
if (a < 0) then
a = 4294967296 + a
end
a = bin.imod(a, 4294967296)
r = 0
for i = 31, 0, -1 do
v = 2 ^ i
b = a >= v
if (b) then
a = a - v
else
r = r + v
end
end
return r
end
local cb64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
b64 = {}
local function istr(p)
return string.sub(cb64, p + 1, p + 1)
end
function b64.encodeblock(in_tab, len)
local s1, s2, s3, s4
in_tab[0] = in_tab[1] or 0
in_tab[1] = in_tab[2] or 0
in_tab[2] = in_tab[3] or 0
s1 = istr(bin.rshift(in_tab[0], 2))
s2 = istr(bin.bor(bin.lshift(bin.band(in_tab[0], 3), 4), bin.rshift(bin.band(in_tab[1], 240), 4)))
s3 = (len > 1 and istr(bin.bor(bin.lshift(bin.band(in_tab[1], 15), 2), bin.rshift(bin.band(in_tab[2], 192), 6))) or "=")
s4 = (len > 2 and istr( bin.band(in_tab[2], 63)) or "=")
return s1..s2..s3..s4
end
function b64.encode(stream, stream_size)
local encoded = ""
local e_block
local in_tab, len, i, s_pos
s_pos = 0
while stream_size > 0 do
in_tab = {}
len = stream_size >= 3 and 3 or stream_size
for i = 1, len do
in_tab[i] = stream[s_pos + i]
end
e_block = b64.encodeblock(in_tab, len)
encoded = encoded .. e_block
s_pos = s_pos + 3
stream_size = stream_size - 3
end
return encoded
end
local function stri(s)
return s == "=" and -1 or (string.find(cb64, s) - 1)
end
function b64.decodeblock(s1, s2, s3, s4)
local b1, b2, b3, len
len = s3 == "=" and 1 or s4 == "=" and 2 or 3
s3 = s3 == "=" and "A" or s3
s4 = s4 == "=" and "A" or s4
s1 = stri(s1)
s2 = stri(s2)
s3 = stri(s3)
s4 = stri(s4)
b1 = bin.bor(bin.lshift(s1, 2), bin.rshift(s2, 4))
b2 = bin.bor(bin.band(bin.lshift(s2, 4), 255), bin.rshift(s3, 2))
b3 = bin.bor(bin.band(bin.lshift(s3, 6), 240), s4)
return {b1, b2, b3}, len
end
function b64.decode(str_in)
local s_len = string.len(str_in) / 4
local out, len, i, j, t_out, s1, s2, s3, s4, t_len = {}, 0
for i = 1, s_len do
s1 = string.sub(str_in, i * 4 - 3, i * 4 - 3)
s2 = string.sub(str_in, i * 4 - 2, i * 4 - 2)
s3 = string.sub(str_in, i * 4 - 1, i * 4 - 1)
s4 = string.sub(str_in, i * 4 - 0, i * 4 - 0)
t_out, t_len = b64.decodeblock(s1, s2, s3, s4)
for j = 1, t_len do
out[i * 3 - 3 + j] = t_out[j]
end
len = len + t_len
end
return out, len
end
b64_test_in = {
48, 49, 50, 51, 52, 53, 54, 55, 56, 57
}
b64_test_enc = "MDEyMzQ1Njc4OQ=="
function test_b64()
local enc, dec, i, len
enc = b64.encode(b64_test_in, 10)
assert(enc == b64_test_enc)
dec, len = b64.decode(enc)
assert(len == 10)
for i = 1, len do
assert(b64_test_in[i] == dec[i])
end
end
test_b64()
print(b64.encode(b64_test_in, 10))
local bin = { }
function bin.imod(a, b)
return a - math.floor(a / b) * b
end
function bin.rshift(a, b)
if (a < 0) then
a = 4294967296 + a
end
if (b < 0) then
b = 4294967296 + b
end
a = bin.imod(a, 4294967296)
b = bin.imod(b, 4294967296)
return math.floor(a / (2 ^ b))
end
function bin.lshift(a, b)
if (a < 0) then
a = 4294967296 + a
end
if (b < 0) then
b = 4294967296 + b
end
a = bin.imod(a, 4294967296)
b = bin.imod(b, 4294967296)
return math.floor(a * (2 ^ b))
end
function bin.band(a, b)
local i, v, r, b1, b2
if (a < 0) then
a = 4294967296 + a
end
if (b < 0) then
b = 4294967296 + b
end
a = bin.imod(a, 4294967296)
b = bin.imod(b, 4294967296)
r = 0
for i = 31, 0, -1 do
v = 2 ^ i
b1 = a >= v
b2 = b >= v
if (b1) and (b2) then
r = r + v
end
if (b1) then
a = a - v
end
if (b2) then
b = b - v
end
end
return r
end
function bin.bor(a, b)
local i, v, r, b1, b2
if (a < 0) then
a = 4294967296 + a
end
if (b < 0) then
b = 4294967296 + b
end
a = bin.imod(a, 4294967296)
b = bin.imod(b, 4294967296)
r = 0
for i = 31, 0, -1 do
v = 2 ^ i
b1 = a >= v
b2 = b >= v
if (b1) or (b2) then
r = r + v
end
if (b1) then
a = a - v
end
if (b2) then
b = b - v
end
end
return r
end
function bin.bxor(a, b)
local i, v, r, b1, b2
if (a < 0) then
a = 4294967296 + a
end
if (b < 0) then
b = 4294967296 + b
end
a = bin.imod(a, 4294967296)
b = bin.imod(b, 4294967296)
r = 0
for i = 31, 0, -1 do
v = 2 ^ i
b1 = a >= v
b2 = b >= v
if (b1 ~= b2) then
r = r + v
end
if (b1) then
a = a - v
end
if (b2) then
b = b - v
end
end
return r
end
function bin.bnot(a)
local i, v, r, b
if (a < 0) then
a = 4294967296 + a
end
a = bin.imod(a, 4294967296)
r = 0
for i = 31, 0, -1 do
v = 2 ^ i
b = a >= v
if (b) then
a = a - v
else
r = r + v
end
end
return r
end
local cb64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
b64 = {}
local function istr(p)
return string.sub(cb64, p + 1, p + 1)
end
function b64.encodeblock(in_tab, len)
local s1, s2, s3, s4
in_tab[0] = in_tab[1] or 0
in_tab[1] = in_tab[2] or 0
in_tab[2] = in_tab[3] or 0
s1 = istr(bin.rshift(in_tab[0], 2))
s2 = istr(bin.bor(bin.lshift(bin.band(in_tab[0], 3), 4), bin.rshift(bin.band(in_tab[1], 240), 4)))
s3 = (len > 1 and istr(bin.bor(bin.lshift(bin.band(in_tab[1], 15), 2), bin.rshift(bin.band(in_tab[2], 192), 6))) or "=")
s4 = (len > 2 and istr( bin.band(in_tab[2], 63)) or "=")
return s1..s2..s3..s4
end
function b64.encode(stream, stream_size)
local encoded = ""
local e_block
local in_tab, len, i, s_pos
s_pos = 0
while stream_size > 0 do
in_tab = {}
len = stream_size >= 3 and 3 or stream_size
for i = 1, len do
in_tab[i] = stream[s_pos + i]
end
e_block = b64.encodeblock(in_tab, len)
encoded = encoded .. e_block
s_pos = s_pos + 3
stream_size = stream_size - 3
end
return encoded
end
local function stri(s)
return s == "=" and -1 or (string.find(cb64, s) - 1)
end
function b64.decodeblock(s1, s2, s3, s4)
local b1, b2, b3, len
len = s3 == "=" and 1 or s4 == "=" and 2 or 3
s3 = s3 == "=" and "A" or s3
s4 = s4 == "=" and "A" or s4
s1 = stri(s1)
s2 = stri(s2)
s3 = stri(s3)
s4 = stri(s4)
b1 = bin.bor(bin.lshift(s1, 2), bin.rshift(s2, 4))
b2 = bin.bor(bin.band(bin.lshift(s2, 4), 255), bin.rshift(s3, 2))
b3 = bin.bor(bin.band(bin.lshift(s3, 6), 240), s4)
return {b1, b2, b3}, len
end
function b64.decode(str_in)
local s_len = string.len(str_in) / 4
local out, len, i, j, t_out, s1, s2, s3, s4, t_len = {}, 0
for i = 1, s_len do
s1 = string.sub(str_in, i * 4 - 3, i * 4 - 3)
s2 = string.sub(str_in, i * 4 - 2, i * 4 - 2)
s3 = string.sub(str_in, i * 4 - 1, i * 4 - 1)
s4 = string.sub(str_in, i * 4 - 0, i * 4 - 0)
t_out, t_len = b64.decodeblock(s1, s2, s3, s4)
for j = 1, t_len do
out[i * 3 - 3 + j] = t_out[j]
end
len = len + t_len
end
return out, len
end
b64_test_in = {
48, 49, 50, 51, 52, 53, 54, 55, 56, 57
}
b64_test_enc = "MDEyMzQ1Njc4OQ=="
function test_b64()
local enc, dec, i, len
enc = b64.encode(b64_test_in, 10)
assert(enc == b64_test_enc)
dec, len = b64.decode(enc)
assert(len == 10)
for i = 1, len do
assert(b64_test_in[i] == dec[i])
end
end
test_b64()
print(b64.encode(b64_test_in, 10))
Assinar:
Postagens (Atom)