quarta-feira, 9 de junho de 2010

Progress - Uma oportunidade de carreira

Progress é uma linguagem de programação que foi desenvolvida pela empresa Progress Software Corporation em 1984, e que permanece até hoje sendo uma linguagem estável, de fácil entendimento e desenvolvimento.

A Progress Corporation tem sua sede em Bedford, Massachusetts USA, com filiais em diversos países. No Brasil sua representante é a Progress do Brasil/SP.

Uma das maiores atrativos do Progress é sua portabilidade e independência de plataforma. Ele funciona em praticamente todos os sistemas operacionais existentes como DOS, Windows, UNIX, OS/2, Novell, VMS, Motif, Xenix, CTOS entre diversos outros, isso utilizando o mesmo código fonte.

Seu Banco de Dados Relacional é de altíssima performance e extrema segurança, igual ou até mesmo superior ao bancos mais populares do mercado como Oracle, DB/2 IBM, Sybase, MS-SQL Server, entre outros.

A perfeita integração entre linguagem e banco de dados fazem do Progress uma excelente ferramenta para construção de qualquer aplicação comercial. Isso porque

as camadas de desenvolvimento - regras de negócios, dados e interface estão totalmente interligadas, o que evita qualquer redundância ou retrabalho em qualquer camada da aplicação.

A atualização e distribuição dos aplicativos em Progress também é bastante simplificada. Um sistema pode ser totalmente centralizado para acesso de vários

clientes simultâneos e atualizado a qualquer tempo, parcialmente ou completamente sem gerar qualquer erro ou necessitar de uma parada momentânea do sistema.

O funcionamento do Progress é bastante simples. A configuração típica e mais comum é a instalação e armazenamento centralizado do Progress servidor e cliente, bancos de dados e aplicações em um servidor disponível para acesso de diversos clientes em rede.

Há também diversas outras configurações possíveis para uma aplicação Progress: múltiplos servidores, bancos de dados distribuídos entre servidores e/ou plataformas

distintas, como será visto no capítulo Arquiteturas de aplicação. A figura a seguir exemplifica melhor uma configuração mais simples.

O mercado de trabalho oferece várias oportunidades, um exemplo de sistema que usa essa linguagem é o EMS da antiga Datasul, hoje Totvs, este é um sistema ERP completo e estável, usado por diversas empresas, em todas as regiões brasileiras.

Sendo uma linguagem proprietária, não é tão fácil encontrar informações na internet, mas caso tenha interesse, recomendo o fórum 4EACH, onde é possível encontrar várias dicas sobre a linguagem e sobre sistemas que a usam, também há uma versão em espanhol, o 4EACH Foro, onde proporciona conhecer outros sistemas relacionados.



Fonte: Dominando o Progress – de Márcio Brener

sexta-feira, 4 de junho de 2010

Quem é o cara da TI ?

Essa eu vi no Desaforo.com e achei um barato.

Observando a imagem, você consegue descobrir quem é o consultor de TI, ou seja, o cara que manja de computadores na empresa?



Como se ninguém imaginasse, aí vai a resposta.

segunda-feira, 31 de maio de 2010

Revista Espírito Livre - nº 14

Olá galera, novamente tenho o prazer de compartilhar e recomendar a Revista Espírito Livre, que na sua edição nº 14, vem trazendo um assunto polêmico e interessante: As redes P2P .
Empresas, gravadoras, gráficas e outros querem nos fazer acreditar que ao compartilharmos livros, músicas, filmes e outras coisas, nos equiparamos ao mesmo nível de criminosos. Mas será que é realmente assim? Muito interessante conhecer a opinião de profissionais sobre o assunto.
Também, traz um pouco de como foi o FLISOL em várias cidades, um outro assunto interessante, é o exemplo do apache como "gestão" e em como manter um projeto livre de sucesso. Enfim, são muitas e muitas novidades, assuntos que valem a pena serem absorvidos, boa leitura à todos. Aqui o compartilhamento é essencial e muito bem vindo, baixe a sua já.

quarta-feira, 5 de maio de 2010

Linux Day - FATEC Jundiaí

Atenção galera!!!

No dia 29 de Maio (sábado) estará acontecendo o Linux Day na FATEC de Jundiaí. Teremos várias palestras interessantes, Install fest e a participação de vários integrantes da comunidade de Software Livre de Jundiaí e região.

Mais informações no site do evento.

O evento será aberto à comunidade, e contamos com a participação de todos.


terça-feira, 4 de maio de 2010

4 de Maio - Dia contra o DRM

O DRM (Digital Restrictions Management) consiste em restringir a difusão por cópia de conteúdos digitais ao mesmo tempo em que se assegura e administra os direitos autorais e suas marcas registradas, pelo ângulo do proprietário dos direitos autorais.

O objetivo do DRM é poder parametrizar e controlar um determinado conteúdo de maneira mais restrita.

Atualmente é possível personalizar o varejo da difusão de um determinado arquivo comercializado, como por exemplo o número de vezes em que esse arquivo pode ser aberto ou a duração da validade desse arquivo.

Essa gestão aplica-se somente aos meios digitais. O conteúdo digital tem ganhado popularidade sobre o conteúdo analógico por dois motivos; o primeiro deve-se ao fato das vantagens técnicas associadas com sua produção, reprodução e manipulação e o segundo porque na maioria das vezes a qualidade é superior em relação ao analógico. Desde o nascimento dos computadores pessoais, os arquivos de conteúdo digital tornaram-se um meio fácil de fazer cópias de modo ilimitado sem aparecer qualquer perda na qualidade das cópias subseqüentes. Muito conteúdo analógico perde qualidade com cada geração copiada e freqüentemente durante seu uso normal. A popularidade da Internet e das ferramentas para compartilhar arquivos simplificou a distribuição de conteúdo digital.

A disponibilidade de múltiplas cópias perfeitas de material abrangido por direitos de autor foi percebido pela indústria como um golpe a sua viabilidade e custeio, em especial dentro da indústria fonográfica, cinematográfica e dos jogos eletrônicos. Aqueles que publicam material digital têm típicos modelos de negócios que recaem na habilidade de obter lucro por cada cópia feita do trabalho digital, e algumas vezes por cada execução daquele material. O DRM foi criado e planejado por essas empresas e indivíduos, ainda oferecendo o conteúdo digital, mas com medidas para permitir o controle da duplicação e disseminação de seu conteúdo.

Existem diferentes mecanismos de DRM, planejados por empresas diferentes, mas, no geral, todos têm em comum algumas características: detectam quem acessa cada obra, quando e sob quais condições, e reportam essa informação ao provedor da obra; autorizam ou negam da maneira irrefutável o acesso a obra, de acordo com as condições que podem ser alteradas unilateralmente pelo provedor da obra; quando autorizam o acesso, fazem-no sob condições restritivas que são fixadas unilateralmente pelo provedor da obra, independentemente dos direitos que a lei fornece ao autor ou ao público.

Um exemplo dessa tecnologia é a Microsoft, que possui em seu Windows Media um verificador de direito de uso. Assim, se você tentar ouvir uma música não registrada, o player não consegue executá-lo. Além disso, os arquivos baixados através dele não podem ser usados em outro lugar. É como se fosse um muro: nada entra e nada sai. A indústria do cinema também utiliza esse bloqueio. Quem já tentou fazer uma cópia de segurança (backup) de seus DVDs já deve ter notado que é impossível fazê-lo como se faz com outros tipos de discos. Isso acontece porque essas mídias possuem um tipo de restrição chamada Content Scrambling System (sistema de embaralhamento de conteúdo, em tradução livre), ou simplesmente CSS.

Portanto, o DRM é o maior risco a liberdade da atualidade. Por isso, no dia 4 de maio, levante-se e combata o DRM!




"DRM ataca sua liberdade em dois níveis. Seu propósito é atacar sua liberdade restringindo o uso de suas cópias de trabalhos publicados. Isso significa forçar você a usar software proprietário, o que significa que você não controla o que isso faz. Quando companhias se organizam para criar produtos que nos restringem, nós temos que nos organizar derrota-los."

Richard Stallman











Fonte:


http://softwarelivre.org/portal/governos/4-de-maio-dia-contra-o-drm

http://www.fsf.org/news/may-4-day-against-drm


http://pt.wikipedia.org/wiki/Gest%C3%A3o_de_direitos_digitais


http://www.youtube.com/watch?v=ryXDhXqR-SE&feature=player_embedded


http://www.baixaki.com.br/info/3023-o-que-e-drm-.htm

domingo, 4 de abril de 2010

Linguagem de Programação - Java - Aula 5

Olá olá olá galera, revendo as aulas de java, eu esqueci de postar uma delas, a referente a laços de repetição, portanto vou apresentar em resumo nesta aqui.

Nesse link postado acima, na wikipédia, há uma explicação detalhada a respeito do assunto, vale a pena conferir.

Em java, os loops são feitos da seguinte forma:

While: Enquanto i, que é uma variável inteira, for menor ou igual a 20, deve-se imprimir em tela o valor de i. O “i++” é usado para incrementar o valor, ou seja, cada vez que passar aí, fará i = i + 1;


while ( i <= 20)

{

System.out.println(i);

i++;

}

Linguagem de Programação - Java - Aula 5

For: Para i que começa valendo 1 até i ser menor ou igual a 20 deve fazer também imprimir em tela o valor de i. Note que na própria estrutura da condição, já definimos que o i deve ser incrementado.

for(i = 1; i <= 20; i++)

{

System.out.println(i);

}


Do while: O programa passará pelo menos uma vez pela estrutura e continuará até que a condição se torne falsa.


do{

System.out.println(i);

i++;

}while(i <= 20);


As estruturas de repetição são muito usados, segue um exemplo de uma tabuada feita usando o for, e é possível fazer usando qualquer tipo de loop, fica aí o desafio para tentarem de outras formas.


int valor = 0;

for (int i = 1; i <= 10; i++)

{

valor = 7 * i;

System.out.println("7 x " + i + " = " + valor);

}


Agora sim a aula 5ª aula. Nesta aula, começaremos a trabalhar realmente com o conceito de classes, atributos e métodos, usando como exemplo um cadastro. Se houver dúvidas no conceito de cada coisa, vale a pena recordar a 1ª aula onde explica claramente o que é cada detalhe.

Vamos então definir duas classe, uma classe Pessoa e a outra ExemploPessoa, na classe Pessoa vamos mostrar ao java o que é uma pessoa, que dados serão requeridos. Toda pessoa tem nome, endereço e telefone, portanto, esses serão nossos atributos. Segue então como ficará a classe Pessoa, onde o que está em itálico são os comentários de cada parte do código.

Abaixo do código, segue as imagens possibilitando um melhor entendimento e visualização da identação.

/*Essa classe não terá o método main pq a classe principal que executa e inicia o programa é que tem o main

*

* Lembrando que uma classe precisa ter atributos e métodos

*

* Atributos: nome, endereço, telefone = são privados e podem ser acessados dentro da classe

*

* Metodos: Pessoa() e Pessoa(String, String, String) = são públicos, são a forma de comunicação entre as classes */

public class Pessoa {

private String nome;

private String endereco;

private String telefone;

public Pessoa() //Métodos que possuem o mesmo nome da classe são chamados detodos construtores, sua função é definir como um objeto será criado, ele somente pode ser usado na criação de um objeto, pq a função é falar como o obj deve ser criado - instância)

{ //esse método cria um objeto vazio, pq o usuario vai digitar depois os dados,

//ainda não há valor definido, mas o objeto ja existe

}

public Pessoa(String _nome, String _endereco, String _telefone) //segundo metodo construtor

//nesse construtor é criado um objeto e ja sabe os dados do objeto, por isso foi passado com parâmetros, usar o anderline na frente (_nome) é convenção para identificar melhor e facilitar a manutenção

{

nome = _nome; //recebe os valores dos parâmetros e passa para os atributos

endereco = _endereco;

telefone = _telefone;

}

public void DefinirNome(String _nome) //o objetivo desse metodo: permite alterar o valor do atributo nome

{

nome = _nome;

}

public void DefinirEnd(String _endereco) //o objetivo desse metodo: permite alterar o valor do atributo endereco

{

endereco = _endereco;

}

public void DefinirTel(String _telefone) //o objetivo desse metodo: permite alterar o valor do atributo telefone

{

telefone = _telefone; //ele não retorna valor (void), apenas pega o parametro e atribui ao atributo

}

public String ObterNome() //metodos que retornam precisam mostrar o tipo de dado que retorna, no caso uma String

{

return (nome);

}

public String ObterEnd()

{

return (endereco);

}

public String ObterTel()

{

return (telefone);

}

// Demais métodos ...

}



A classe ExemploPessoa é a que realmente executará o programa, nela contém o método main, e é nela que colocaremos os dados das pessoas. Segue abaixo como ela deve ficar.


/*A classe principal, aqui é que pode usar as outras classes*/

public class ExemploPessoa {

public static void main(String[] args) throws IOException

{

BufferedReader teclado = new BufferedReader(

new InputStreamReader(System.in)); //cria o objeto teclado

Pessoa p1 = new Pessoa(); // A classe Pessoa será um modelo para mostrar o que será uma pessoa para o programa, o p1 é um objeto, o new é o operador de instancia (a partir de uma classe cria-se um objeto) e o Pessoa() é o método construtor, ele sempre vai aparecer com o new

//esse metodo é vazio, isso seria necessário pq por exemplo, num banco de dados como ele vai retornar um valor se não leu ainda o banco? Então com o metodo construtor vazio ele faz a leitura e depois ele usa um metodo

construtor para atribuir valor

System.out.println("Informe o nome: "); //obtendo valores para p1

p1.DefinirNome(teclado.readLine());

System.out.println("Informe o endereço: ");

p1.DefinirEnd(teclado.readLine());


System.out.println("Informe o telefone: ");

p1.DefinirTel(teclado.readLine());

Pessoa p2 = new Pessoa("Ana", "Rua das Flores, 100", "4532-2322"); //uma classe pode dar origem a vários objetos, cria o objeto (new) e usa o segundo construtor com os devidos parâmetros

/*Polimorfismo = uma classe pode ter vários métodos com o mesmo nome, porém, com parâmetros diferentes*/

System.out.println("Pessoa 1"); //Imprimindo os valores de p1

System.out.println("Nome: " + p1.ObterNome()); //está buscando os valores armazenados dentro do p1

System.out.println("Endereço: " + p1.ObterEnd());

System.out.println("Telefone: " + p1.ObterTel() + "\n");

System.out.println("Pessoa 2"); //Imprimindo os valores de p2

System.out.println("Nome: " + p2.ObterNome());

System.out.println("Endereço: " + p2.ObterEnd());

System.out.println("Telefone: " + p2.ObterTel());

}

}

Todos os créditos dessas aulas para o professor Claudio Luís V. Oliveira, que com muita paciência e persistência tem nos ensinado de uma forma agradável e eficiente.

Linguagem de Programação – Java – Aula 1

Linguagem de Programação – Java – Aula 2 e 3
Linguagem de Programação - Java - Vetores - Aula 4




sexta-feira, 2 de abril de 2010

Linguagem de Programação - Java - Vetores - Aula 4

Olá galera, um pouco atrasada nos posts das aulas de java, mas vamos lá, o tema de hoje é sobre vetores, também conhecidos como arrays.

Um vetor mantém uma série de elementos de dados, do mesmo tipo, cada um numa posição pré definida. Então, por exemplo, ao cadastrar 5 nomes, poderíamos usar:

  • 5 variáveis = String nome1, nome2, nome3, nome4, nome5; ou

  • 1 vetor = nome[i] , onde o meu “ i ” será incrementado determinando 5 posições distintas para cada nome


Traduzindo para java. Declaramos um vetor da seguinte forma:


String nome[] = new String[5]; = no caso de um vetor de String ou

int i[] = new int[10]; = no caso de um vetor de inteiros, o número entre colchetes [10] é onde definimos o tamanho do vetor, isso quer dizer que ele terá 10 posições.


Os elementos de um vetor podem ser inseridos no momento da criação do mesmo conforme mostrado abaixo:


int i[] = {64, 87, 32, 07, 86};


char linguagem[] = { 'J', 'a', 'v', 'a' };


e assim por diante, colocando o tipo de dado que desejar usar.


Segue abaixo exemplos de como trabalhar com vetores. Tem o código colado aqui, com os devidos comentários em itálico , também abaixo, coloquei as imagem para que entendam melhor o código e toda a identação.

Exemplo 1:

int i[] = new int[5]; //declarando vetor com o nome i sendo inteiro
i[0] = 45; //atribuindo valor as posições do vetor, ele sempre começa do zero
i[1] = 2;
i[2] = 18;
i[3] = 61;
i[4] = 94;

//exibir o elemento que está no índice 3
System.out.println("O valor da posição 3 é " + i[3]);

//exibir o tamanho do vetor
System.out.println("Tamanho: " + i.length);

//exibir tds os elementos do vetor
for(int a = 0; a < style="font-style: italic;"> //exibir tds os elementos do vetor de forma invertida
for(int b = i.length - 1; b >= 0; b--) //coloca length - 1 pq o vetor tem tamanho 5
//mas o último elemento está na posição i[4]
{
System.out.println("O valor na posição " + b + " de forma invertida é " + i[b]);
}

//exibir o maior elemento do vetor
int maior = i[0];
for(int c = 0;c <> maior)
maior = i[c];
}
System.out.println("O maior valor é " + maior);

//exibir o menor elemento do vetor
int menor = i[0];
for(int c = 0;c < menor =" i[c];" style="font-style: italic;"> //exibir a soma dos elementos do vetor
int soma = 0;
for(int d = 0;d < soma =" soma" style="font-style: italic;"> //exibir o valor da média dos elementos
int tam = i.length;
int media = soma / tam;
System.out.println("A média é " + media);

//exibir os elementos do vetor que são maiores ou iguais a média
for(int e = 0;e <>= media)
System.out.println("O valor maior ou igual a média que é " + media + " são " + i[e]);

}

Para aumentar é só clicar na imagem.


Exemplo 2 - Manipulação de Strings:

String saudacao = "Boa noite para todos";
System.out.println("Tamanho: " + saudacao.length());

//Convertendo td para Maiúsculo
System.out.println("Maiúsculas: " + saudacao.toUpperCase());

//Convertendo td para Minúsculo
System.out.println("Minúsculas: " + saudacao.toLowerCase());

//Mostrar apenas um caractere, coloca entre parenteses a posição do caractere, ex --> 5
System.out.println("Um caractere --> " + saudacao.charAt(5));

//Mostrar uma parte da String, mostrando a posição, exemplo de 4 a 9,
//ele entende que deve parar na posição 9
System.out.println("Uma parte da String --> " + saudacao.substring(4,9));

//Mostrar uma parte da String, mostrando a posição, exemplo de 10 a 14,
//ele entende que deve parar na posição 14
System.out.println("Uma parte da String --> " + saudacao.substring(10,14));


//Usando charAt exibir apenas as vogais da String
System.out.print("Apenas vogais: ");
for (int i = 0;i < letra =" saudacao.charAt(i);" letra ="=" letra ="=" letra ="=" letra ="=" letra ="=">


E a imagem:



É isso aí, espero que seja de ajuda, caso tenham alguma dúvida, deixe aqui nos comentários ou me mande por e-mail, auxilio no que for possível.


Desejo aproveitar e dar todos os créditos dessas aulas para o professor Claudio Luís V. Oliveira, que com muita paciência e persistência tem nos ensinado de uma forma agradável e eficiente.


Linguagem de Programação – Java – Aula 1

Linguagem de Programação – Java – Aula 2 e 3


Bons estudos ;-)