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

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

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

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))

sexta-feira, 14 de novembro de 2008

Número de cartões de crédito para testes

Abaixo alguns número de cartões de crédito para testes em sistemas:

Credit Card Test Number
Visa 4111 1111 1111 1111
MasterCard 5500 0000 0000 0004
5424 0000 0000 0015
American Express 3782 8224 6310 005
3400 0000 0000 009
3700 0000 0000 002
Discover 6011 1111 1111 1117
6011 0000 0000 0004
6011 0000 0000 0012
Diner's Club / Carte Blanche 3000 0000 0000 04
en Route 2014 0000 0000 009
JCB 3088 0000 0000 0009
Special SendSafe Test Visa number 0111-1111-1111-1111

terça-feira, 11 de novembro de 2008

Instalando LuaSocket e LuaSQL

Para instalar o LuaSocket ou o LuaSQL no fedora,
abra uma conexão SSH como root e digite no console:

# yum install lua-sql
# yum install lua-socket

Depois confirme os pacotes e aguarde a instalação.

segunda-feira, 3 de novembro de 2008

Date para String em java

// Date para String em java.

DateFormat df = new SimpleDateFormat("dd/MM/yyyy");

Date today = new Date();

String stringDate = df.format(today);

System.out.println("Data em String: " + stringDate);