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 só 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 só 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 de métodos 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 ;-)


terça-feira, 30 de março de 2010

Mulheres também presentes no mundo da tecnologia

Nesse mês de Março, foi comemorado o dia internacional das mulheres, com muitos movimentos em prol da defesa dos seus direitos e igualdade, principalmente se tratando do mercado de trabalho. Mesmo com o grande avanço na conquista por seu espaço, as mulheres ainda “trabalham mais e ganham menos”, ainda que tenham mais ou o mesmo grau de formação profissional que os homens.
Ao longo da história, muitas mulheres fizeram à diferença no progresso da tecnologia, mesmo que tenham sido omitidas da história, pois como afirma Light, “A omissão da mulher na história da computação perpetua o mau entendimento da mulher como desinteressadas ou incapazes nesta área”. - Light, estereótipo desenvolvido devido às características femininas como cooperação, empatia e sentimento.
A primeira pessoa a desenvolver um programa foi uma mulher. Augusta Ada King, Condessa de Lovelace é principalmente conhecida por ter escrito um programa que poderia utilizar a máquina analítica de Charles Babbage, ela desenvolveu os algoritmos que permitiriam à máquina computar os valores de funções matemáticas, além de publicar uma coleção de notas sobre a máquina analítica.
Outra mulher cujo trabalho foi muito importante para o progresso foi Grace Murray Hopper, que criou a linguagem de programação Flow-Matic, hoje extinta. Esta linguagem serviu como base para a criação do COBOL. E há muitas outras mulheres que fizeram a diferença exercendo papéis importantes ao longo da história.
Atualmente, as áreas que envolvem tecnologia e informática continuam sendo predominada por homens, embora a participação feminina sempre foi muito importante.
De acordo com Lubar, quando os primeiros computadores começaram a ser utilizados parecia óbvio que esta seria uma área feminina, uma vez que as mulheres tradicionalmente realizavam a atividade de “computar”, realização de cálculos para os cientistas. Assim, seria natural que elas continuassem a realizar essa atividade, agora com a ajuda dos computadores. Por isso, muitas das pioneiras, além de serem mulheres, eram formadas em matemática e ciências, com doutorado em matemática, e participação ativa nas ciências exatas.
Muito já foi conquistado, mas há muito ainda a se fazer, homens e mulheres podem e devem trabalhar lado a lado, as características e personalidades de cada um complementam um bom trabalho e um bom ambiente de trabalho.

Revista Espírito Livre - Ed. nº 12 - Março 2010


Olá galera, novamente venho indicar o lançamento da edição de Março da Revista Espírito Livre. É incrível como vontade realmente move barreiras, e com essa edição, a revista completa 1 ano de vida, transmitindo muita informação, de forma interessante, agradável, moderna e com muita, muita qualidade.
O tema da capa já chama a atenção, é algo que envolve todos nós, a liberdade na internet. Recentemente foi divulgada a notícia de o google deixar de prestar serviços diretos a China justamente por não aceitarem mais os bloqueios impostos pelo governo Chinês. Polêmicas relacionadas a esse assunto são constantes, discussões acaloradas acontecem, mas definições reais estão longe de serem elaboradas e implantadas.
Outros assuntos me chamaram a atenção, como "Desenvolvimento do OpenSource. Por que alguns softwares despertam interesse e outros não?". Matérias que tratam diretamente sobre educação também são muito atrativas.
Enfim, da pra perceber que novamente a equipe da revista caprixou, e quão bom é sabermos disso. A revista está disponível para download aqui.

Boa leitura ;-)

quarta-feira, 3 de março de 2010

Revista Espírito Livre - Ed. nº 011 - Fevereiro 2010


"Carnaval. Um período que agrada a alguns e desagrada a outros. São momentos de alegria, descontração e até bastante culturais, desde que vividos com sabedoria e responsabilidade. Nessa edição do mês da folia, praticamente não traremos muita coisa referente a festividades, aliás, nada. Entretanto, para alegria da galera, esta edição está recheada de muita informação em matérias inéditas e exclusivas."
A matéria de capa é referente a computação gráfica, e dentro há vários assuntos envolvendo softwares relacionados, muito interessante. As entrevistas também estão demais. Uma matéria que achei interessante foi a visão do Cesar Taurion sobre a (des)Organização do modelo de desenvolvimento Open Source, vale a pena conferir. Também, Carnavalesco, de Roberto Salomon é uma auto análise bem interessante, expondo muito o dilema que vários desenvolvedores enfrentam, conciliar os projetos de Software Livre com soluções proprietárias fornecidas pelas empresas onde trabalham.


Download

Enfim, uma porção de matérias interessantes, boa leitura a todos ;-)