30 de março de 2010

Java vs .NET

 Meio velinho esse texto mas vale apena ler!

Escrito por Paulo Krieser:

Prosseguindo com a sequência de colunas sobre as comparações entre linguagens de programação, neste artigo vamos comparar o Java ao .NET.

Antes que sigam as críticas, cabe esclarecer que o .NET não é uma linguagem, e sim uma plataforma da Microsoft que permite a utilização de diversas linguagens, como C#, Visual Basic, J# e ASP. Vamos focar então a comparação na construção de aplicações web, utilizando J2EE e o framework ASP NET da Microsoft, que é onde as duas linguagens mais competem.

Comecemos pela questão das licenças de uso, que influenciam diretamente no TCO (para referência aos fatores sendo comparados, consultar na minha coluna Fatores para Escolha da Linguagem de Programação). Apesar da Sun deter a marca Java, a mesma tornou a linguagem open source, permitindo aos usuários efetuar alterações convenientes. Para a plataforma .NET, existem algumas iniciativas free, como os projetos Mono e DotGNU. Porém, para se aproveitar todo o potencial da plataforma, é praticamente necessário se adquirir o servidor Microsoft juntamente com o ambiente de desenvolvimento Visual Studio. Sem estas ferramentas, além de não se aproveitar tudo o que se tem, a velocidade de desenvolvimento fica fortemente prejudicada. Além disto, nada na Microsoft é open source.

No item escalabilidade, as implementações das duas plataformas provêem mecanismos de balanceamento de carga, permitindo habilitar um cluster de máquinas para servir às cargas dos usuários que forem aumentando ao longo do tempo. A grande diferença entre o J2EE e o .NET é que desde que o .NET suporta apenas Win32, um número maior de máquinas se faz necessário, comparando ao J2EE, devido às limitações dos processadores.

Em um fator de extrema importância, como velocidade de desenvolvimento, o .NET leva grande vantagem. A sua IDE proprietária, o Visual Studio, é baseado em RAD (Rapid Application Development), aumentando a agilidade na construção de aplicações. O Visual Studio .NET inclui várias ferramentas interessantes em termos de produtividade, como por exemplo o Web Forms. Estima-se que um projeto criado do zero, leve-se de 10% a 20% menos tempo para entrar em produção quando desenvolvido em .NET.

O Microsoft .NET oferece independência de linguagem, permitindo os componentes serem escritos em VB.NET, C# e J#, por exemplo. Para fazer isto funcionar, o código-fonte nestas diferentes linguagens é traduzido para um código intermediário (análogo aos bytecodes do Java) chamado Microsoft Intermediate Language, abreviado IL. O Common Language Runtime (CLR), análogo ao JRE (Java Runtime Enviroment) do Java, interpreta o IL e traduz em código de máquina.

Com um conjunto de linguagens rodando sobre a plataforma .NET, os desenvolvedores diminuem a habilidade de compartilhar as melhores práticas, diminuindo a assertividade do compartilhamento de informações. Assim, especula-se que um conjunto de linguagens rodando em CLR pode levar a uma combinação de código espaguete que fica difícil de manter. Com a liberdade para se utilizar diversas linguagens, a aplicação torna-se mais complexa, necessitando de experts em diferentes linguagens, o que também faz aumentar o TCO e a entropia do sistema.

As duas tecnologias apresentam uma curva de aprendizado parecida, com a diferença de que o Java possui mais material para aprendizado na internet do que o .NET, que é proprietário e a principal fonte de conteúdo é o MSDN.

Analisando o último quesito, portabilidade, praticamente não há o que comparar. Como já dito na coluna anterior, o Java segue o princípio write once, run anywhere, permitindo executar as aplicações na virtual machine em praticamente qualquer ambiente. O .NET roda apenas no Windows, no seu hardware suportado, e no ambiente .NET. Há algumas implementações adicionais do .NET que rodam em outras plataformas, porém que não permitem o uso de todo o potencial do framework.

Concluindo a análise, a plataforma J2EE, possuindo uma interoperabilidade melhor, permite mais facilmente integrações com o legado através de web services e JCA (Java Connector Architecture) e uma maior facilidade de portabilidade, podendo rodar em qualquer sistema operacional. A grande vantagem do .NET é a sua incrível ferramenta de desenvolvimento, que incrementa bastante a velocidade na construção de aplicações. Porém, esta vantagem apresenta o custo das licenças de uso e de se ter uma plataforma proprietária e fechada, seguindo a iniciativa monopolística da Microsoft.

Para a escolha de qual tecnologia utilizar, deve-se analisar o que já se tem de legado e os skills da equipe que irá trabalhar no projeto, aproveitando os conhecimentos já existentes nas linguagens.

Não perca a próxima coluna, onde vamos comparar Ruby on Rails com PHP (vamos deixar o Java um pouco de lado).

Fonte : JavaFree.org

Tricampeão de concurso de hackers "detona" Apple e Microsoft


Tricampeão de concurso de hackers "detona" Apple e Microsoft

Segundo Charlie Miller, único a vencer três vezes o desafio Pwn2Own, as empresas não fazem coisas básicas na área da segurança.

Ele é capaz de, em alguns segundos, invadir computadores explorando as mais diversas plataformas. E não entende como empresas como Apple, Microsoft e Adobe, com muito mais dinheiro e equipe, não conseguem achar tantos bugs e fazer melhores produtos na área da segurança.

Único hacker a vencer três vezes a competição Pwn2Own, Charlie Miller descobriu, recentemente, 20 falhas no Mac OS, Office e Adobe Reader, com o uso de uma ferramenta simples (utilizada por desenvolvedores para testar bugs), que procura vulnerabilidades nos sistemas.

E afirma estar cansado da defasagem na área de proteção de sistemas.  “Nós encontramos um bug, eles corrigem. Isso não melhora a segurança do produto. Eles precisam investir direito na melhoria de seus programas”, afirma.
Algumas dessas brechas ele usou para invadir um MacBook com o Snow Leopard e navegador Safari e faturar 10 mil dólares na edição 2010 da competição de hackers.
Ele afirma que seu processo de busca de vulnerabilidades não tem nada de inovador. “Não precisa ser muito esperto. Faço  o trabalho básico e continuo achando problemas de segurança”, afirma.

Durante a conferência CanSecWest (na qual acontece o concurso de hackers), no Canadá, ele fez uma apresentação demonstrando como encontrar vulnerabilidades. E convidou Apple, Microsoft e outras empresas a ouvirem e usarem o que ele tinha a dizer.

Miller tomou a decisão de não compartilhar as informações sobre as vulnerabilidades que descobriu. Ele afirma que faz mais sentido ensinar as empresas a acharem essas brechas do que continuar a dar a eles o serviço pronto.

Fonte : MacWorldBrasil

25 de março de 2010

[Urgente] Apresentação, sábado agora do pradooo!

Para entregar no moodle até dia 27 às 12h

Preparar uma apresentação sobre métricas, considerando os pontos:
  1. O que são métricas de processo, projeto e produto?
  2. Quem são os responsáveis pela obtenção das métricas?
  3. Qual é a importância de se obter métricas?
  4. Como calcular algumas métricas?
  5. Qual é o produto do tabalho de obtenção de métricas?
  6. Como garantir que se tenha obtido métricas utilizáveis?
O contexto do trabalho é gerência de projeto de software. Portanto estude os capítulo 1 e 2 do material disponibilizado no AVA. O trabalho deve ser apresentado em sala de aula pela dupla. Cuidado com copie e cole. Posso utilizar o farejador de plágios.

22 de março de 2010

Petrobras inicia instalação do BrOffice neste mês e BB começa implantar software livre no banco Nossa Caixa

Petrobras inicia instalação do BrOffice neste mês

A Petrobras iniciou neste mês a instalação em todos seus computadores do pacote para escritório baseado em software livre BrOffice.org. Segundo informações da estatal, a instalação será feita em 90 mil computadores, atingindo cerca de 100 mil pessoas, e a previsão é que seja concluída em dois meses.

Segundo a coordenadora de projetos de tecnologia da informação da Petrobras, Márcia Novaes, além da economia que o software de código aberto trará para a empresa, o programa foi escolhido por já ter maturidade tecnológica suficiente para se adequar às necessidades da empresa. Ela conta ainda que também foi decidida a mudança do padrão interno de documentos para ODF, também baseado em padrão aberto e suportado pelo BrOffice.org.

Para que os funcionários se adaptem de forma mais rápida ao novo software, o analista líder do projeto na empresa, Gil Brasileiro, conta que a implantação será feita em três fases: a primeira será a instalação do BrOffice.org em todas as máquinas e avisar os funcionários da mudança, depois haverá uma campanha de estímulo ao uso do novo software e um treinamento dos usuários. Por fim, será feita a adequação das licenças dos outros programas instalados nos computadores da Petrobras, para que o programa de código aberto possa ser usado por todas as áreas da petrolífera.

Outro passo importante para a adoção do código aberto na empresa foi a escolha do navegador de internet Firefox, cuja implantação foi iniciada em 2008. Os computadores da Petrobras também já rodam o sistema operacional Linux.


Fonte: TI INSIDE


BB começa implantar software livre no banco Nossa Caixa


Com uma política de TI voltada para o uso preferencial de software livre, o Banco do Brasil anunciou que iniciou a implantação de software de código aberto no Banco Nossa Caixa, o qual adquiriu em 2008. Segundo a instituição financeira, o primeiro software a equipar as máquinas da Nossa Caixa será o pacote de escritório BrOffice.org, que possui funções equivalentes ao Office, da Microsoft. A suíte já foi instalada em mais de 16 mil estações da Nossa Caixa, o que possibilita também a edição de documentos no padrão aberto ODF (open document format).

O Banco do Brasil afirma que economia gerada com a adoção de software livre desde 2003 já ultrapassa R$ 100 milhões. A instituição usa Linux em mais de 80 mil estações de trabalho e 6 mil servidores de agências, enquanto o BrOffice.org está instalado em mais de 100 mil computadores.

Em comunicado, a companhia informa ainda que está equipando todo o parque de caixas eletrônicos com o sistema operacional Linux. O processo ainda está em andamento e no total irá equipar mais de 40 mil terminais. "Atualmente, mais de mil caixas eletrônicos híbridos – que atendem clientes do BB e da Nossa Caixa – operam com o sistema Linux", diz o Banco do Brasil.


Fonte
: TI INSIDE

15 de março de 2010

Kit do Brasileiro

KIT DO  BRASILEIRO
 
*Vai  transar?*
O governo dá  camisinha.







 


*Já transou?*
O  governo dá a pílula do dia  seguinte.



 
 
 

 




O*Teve  filho?*
O governo dá o Bolsa  Família.




 




*Tá  desempregado?*
O governo  dá Bolsa Desemprego.






 


*Não tem terra?*
O governo dá o Bolsa Invasão e ainda te  aposenta.
  

 







 








*Fez merda e foi preso?*

O governo dá o Auxílio Reclusão de $798,30 "por filho" para sustentar a família, já que vc não pode trabalhar para sustentar os filhos por estar preso.
Esse é  o maior dos absurdos !!!!





*Mas experimenta  estudar e andar na linha pra ver o que é que te  acontece!*
 









 










"Trabalhe  duro, pois milhões de pessoas que vivem do  Fome-Zero e do Bolsa-Família,  sem  trabalhar, dependem de  você" 

12 de março de 2010

Presentes

Este problema envolve determinar, de um grupo de amigos que estão se presenteando, quanto a mais cada pessoa dá do que recebe (ou vice-versa para aqueles que vêem presentear com cinismo).

Neste problema cada pessoa coloca de lado algum dinheiro para presentear alguns de seus amigos no grupo. Este dinheiro é dividido de forma igual entre todos os presentes que a pessoa dará.

Entretanto, em qualquer grupo de amigos, algumas pessoas são mais generosas que outras e algumas pessoas têm mais dinheiro que outras.

Dado um grupo de amigos, o dinheiro que cada um do grupo gastou com presentes, e uma (sub)lista de amigos que cada um presenteará, você deve escrever um programa que determina quanto a mais (ou a menos) cada pessoa do grupo deu do que recebeu. Note que o valor de todos os presentes dados são inteiros. Cada pessoa dá a mesma quantidade inteira de dinheiro a cada amigo que presenteia, e dá o máximo possível.

Entrada

A entrada é uma seqüência de grupos de pessoas. Cada grupo consiste de muitas linhas:

o número de pessoas no grupo,
a lista de nomes das pessoas do grupo,
uma linha para cada pessoa do grupo, com o nome desta pessoa, a quantidade de dinheiro que ela tem para presentear, o número de pessoas que ela presenteou e o nome dos amigos que ela presenteou.
Todo nome é formado por uma única palavra, só usa letras minúsculas e não possui mais que 12 letras. Dinheiro é um inteiro positivo menor que 2000. Todo grupo tem pelo menos uma pessoa. A entrada consiste de um ou mais grupos e é terminada por um 0.

Saída

Para cada grupo de amigos, deve ser impressa uma linha para cada pessoa do grupo. Cada linha deve conter o nome desta pessoa, seguido do ganho (ou perda) líquida da pessoa, ou seja, a diferença entre o que ela recebeu e o que deu. Os nomes em um grupo devem ser impressos na mesma ordem em que apareceram pela primeira vez na entrada.

A saída para cada grupo deverá ser separada do próximo grupo por uma linha em branco.

Exemplo

Entrada

5 dave laura owen vick amr dave 200 3 laura owen vick owen 500 1 dave amr 150 2 vick owen laura 0 2 amr vick vick 0 0 3 liz steve dave liz 30 1 steve steve 55 2 liz dave dave 0 2 steve liz 0

Saída

dave 302 laura 66 owen -359 vick 141 amr -150 liz -3 steve -24 dave 27

import java.util.Scanner;
import java.util.ArrayList;

/* Membros do Grupo
* Alberto Felipe Dias Rodrigues
* Leandro Hossaki Mielli
* Fernando Costa
*/

public class Presentes {
public static void main(String Args[]){

// Instancia Variáveis
int numPessoas;
ArrayList<Pessoa> Pessoas = new ArrayList<Pessoa>();
Scanner input = new Scanner(System.in);

// Solicita o número de pessoas
System.out.printf("\nDigite o número de pessoas: ");
numPessoas = Integer.parseInt(input.next());

// Laço para solicitar o nome das pessoas e instanciar seus objetos
for(int i=0;i<numPessoas;i++){
System.out.printf("\nDigite o nome da %d pessoa: ", i);
String nome = input.next();
Pessoa pessoa = new Pessoa(nome);
Pessoas.add(pessoa);
}

// Laço para percorrer a lista de pessoas
for(Pessoa pessoa: Pessoas){
// Imprime o nome da pessoa corrente do laço
System.out.printf("\n%s", pessoa.getNome());

// Solicita o valor dado pela pessoa
System.out.printf("\nDigite o valor a ser presenteado: ");
int valor = Integer.parseInt(input.next());
// Atualiza o valor dado no objeto
pessoa.setValorDado(valor);

// Solicita o número de pessoas presenteadas
System.out.printf("\nDigite o número de pessoas que serão presenteadas: ");
int numPessoasPre = Integer.parseInt(input.next());

// Laço para solicitar o nome das pessoas presenteadas
for(int i=0;i<numPessoasPre;i++){

// Solicita o nome da pessoa presenteada
System.out.printf("\nDigite o nome da %d pessoa: ", i);
String nomePre = input.next();

// Laço para percorrer a lista de pessoas a procura da pessoa presenteada solicitada
for(Pessoa pessoaPre: Pessoas){
// Verifica se a pessoa corrente é a pessoa solicitada
if(pessoaPre.verificaIgualdade(nomePre)){
// Adiciona a pessoa aos presenteados
pessoa.addPresenteado(pessoaPre);
// Sai do laço
break;
}
}
}
}

// Laço para percorrer a lista de pessoas atualizando o valor recebido
for(Pessoa pessoa: Pessoas){
// Recupera a lista de presenteados da pessoa corrente
ArrayList<Pessoa> Presenteados = pessoa.getPresenteados();
// Recupera o valor do presente
int valorPre = pessoa.getValorPresente();
// Percorre a lista de presenteados atualizando o valor recebido de cada um
for(Pessoa presenteado: Presenteados){
// Atualiza o valor recebido da pessoa corrente
presenteado.ValorRecebido(valorPre);
}
}

// Laçp para percorrer a lista de pessoas imprimindo o seu saldo
for(Pessoa pessoa: Pessoas)
System.out.printf("\n%s = %d", pessoa.getNome(), pessoa.getSaldo());
}
}

// Classe Pessoa
// Guarda dados como nome da pessoa, valor dado, valor recebido e uma lista dos presenteados por ela
class Pessoa{

// Propriedades
private String Nome;
private int ValorDado;
private int ValorRecebido;
private ArrayList<Pessoa> Presenteados = new ArrayList<Pessoa>();

// Construtores
protected Pessoa(){
this.Nome = null;
this.ValorDado = 0;
this.ValorRecebido = 0;
}
protected Pessoa(String Nome){
this.Nome = Nome;
this.ValorDado = 0;
this.ValorRecebido = 0;
}
protected Pessoa(String Nome, int ValorDado){
this.Nome = Nome;
this.ValorDado = ValorDado;
this.ValorRecebido = 0;
}
protected Pessoa(String Nome, int ValorDado, ArrayList<Pessoa> Presenteados){
this.Nome = Nome;
this.ValorDado = ValorDado;
this.ValorRecebido = 0;
this.Presenteados = Presenteados;
}

// Métodos SET
protected void setNome(String Nome){
this.Nome = Nome;
}
protected void setValorDado(int ValorDado){
this.ValorDado = ValorDado;
}
protected void setPresenteados(ArrayList<Pessoa> Presenteados){
this.Presenteados = Presenteados;
}

// Métodos GET
protected String getNome(){
return this.Nome;
}
protected int getValorDado(){
return this.ValorDado;
}
protected ArrayList<Pessoa> getPresenteados(){
return this.Presenteados;
}

// Adiciona um novo presenteado na lista
protected void addPresenteado(Pessoa Presenteado){
Presenteados.add(Presenteado);
}

// Atualiza(Incrementa) o valor recebido pela pessoa
protected void ValorRecebido(int ValorRecebido){
this.ValorRecebido += ValorRecebido;
}

// Retorna o valor dado como presente para cada pessoa de sua lista
protected int getValorPresente(){
return ValorDado / Presenteados.size();
}

// Retorna o saldo da pessoa
protected int getSaldo(){
return ValorRecebido - ValorDado;
}

// Verifica igualdade de nome da pessoa
protected boolean verificaIgualdade(String Nome){
if(this.Nome.equals(Nome))
return true;
return false;
}
}

Números Piramidais

Os segredos das pirâmides vêm instigando cientistas e místicos há séculos, dando asas à imaginação das pessoas. Uma dessas curiosidades são os chamados números piramidais. Dizemos que um número inteiro é piramidal se for igual à soma de três números primos consecutivos. Assim, por exemplo, o número 15 é piramidal, pois 15 = 3 + 5 + 7 . O número 10 também é piramidal, já que 10 =2 + 3+ 5 . O número 23 é piramidal, pois 23 = 5 + 7 + 11 .

Neste programa você deverá receber uma seqüência de números inteiros maiores que 0, terminada por um zero, e deverá verificar se cada um dos números da seqüência é ou não piramidal.

Entrada

A entrada é composta por uma seqüência de números inteiros positivos, cada um maior que 0 e menor que 10000, cada um deles em uma linha. Na última linha haverá um zero.

Saída

Para cada linha da entrada você deverá imprimir uma linha na saída, colocando a mensagem O numero ... e piramidal ou O numero ... nao e piramidal. A linha com o número 0 não deve causar nenhuma impressão.

Exemplo:

Entrada:

15 7 6 97 0

Saída:

O numero 15 é piramidal O numero 7 não é piramidal O numero 6 não é piramidal O numero 97 é piramidal

/* Membros do Grupo
* Alberto Felipe Dias Rodrigues
* Leandro Hossaki Mielli
* Fernando Costa
*/
package NumerosPiramidais;

import java.util.ArrayList;
import java.util.Scanner;

public class piramide {

public static boolean VerifPrimo(int n){
for (int i=2; i<n; i++) {
if (n%i == 0)
return false;
}
return true;
}

public static void main(String arg[]){

ArrayList<Integer> num = new ArrayList();
Scanner input = new Scanner(System.in);

int i=-1;
while (i!=0){
i=input.nextInt();
if (i<0)
System.out.println("Numero Invalido, Menor que Zero");
else
if (i>0)
num.add(i);
}

int [] tresPrimos = new int[3];
for (i=0;i<num.size();i++){
int numAtual = num.get(i);

tresPrimos[0]=tresPrimos[1]=tresPrimos[2]=0;

boolean piramidal=false;
int n=numAtual;
while (n>0){
if (VerifPrimo(n)){
tresPrimos[2]=tresPrimos[1];
tresPrimos[1]=tresPrimos[0];
tresPrimos[0]=n;

//Só verifica se é piramidal Se existir valores nos tresPrimos
if ((tresPrimos[0]>0)&&(tresPrimos[1]>0)&&(tresPrimos[2]>0)){
if ((tresPrimos[0]+tresPrimos[1]+tresPrimos[2])==numAtual){
n=0;
piramidal=true;
}
else
//se a soma dos 3 numeros for menor que o Numero então já para
if ((tresPrimos[0]+tresPrimos[1]+tresPrimos[2])<numAtual)
n=0;
}
}
n--;
}
if (piramidal)
System.out.println("O numero "+numAtual+" e piramidal");
else
System.out.println("O numero "+numAtual+" nao e piramidal");
}

}
}

Atividade 3 - Strings

Utilizando linguagem C, resolva os problemas abaixo.
Cadastre e armazene em uma matriz o NOME, CURSO e IDADE de 10 alunos.
Ordene crescentemente a matriz de acordo com os nomes.


#include <string.h>
#include <stdio.h>
#include <conio.h>

void main(void){

int i,j,k;
char matriz[3][10][30];
char temp[3][30];

for(i = 0; i < 3; i++)
{
printf("\nNome: ");
gets(matriz[0][i]);
printf("\nCurso: ");
gets(matriz[1][i]);
printf("\nIdade: ");
gets(matriz[2][i]);
}

for(i = 0; i < 3; i++)
{
for(j = 0; j < 2; j++)
{
if(strcmp(matriz[0][j], matriz[0][j+1]) > 0)
{
strcpy(temp[0], matriz[0][j]);
strcpy(temp[1], matriz[1][j]);
strcpy(temp[2], matriz[2][j]);

strcpy(matriz[0][j], matriz[0][j+1]);
strcpy(matriz[1][j], matriz[1][j+1]);
strcpy(matriz[2][j], matriz[2][j+1]);

strcpy(matriz[0][j+1], temp[0]);
strcpy(matriz[1][j+1], temp[1]);
strcpy(matriz[2][j+1], temp[2]);
}
}
}

for(i = 0; i < 3; i++)
{
printf("\n\tNome: %s", matriz[0][i]);
printf("\tCurso: %s", matriz[1][i]);
printf("\tIdade: %s", matriz[2][i]);
}

getch();

}

3 de março de 2010

PHP ARTE

PHP ARTE seu curso de PHP online completamente gratuito passo a passo. Semanalmente estaremos colocando aulas para vocês seguindo o conteúdo programático para que você não se perca. Nossa intenção não é corrigir seu script ou criar um script para você, mas sim fazer com que você aprenda a criar e corrigir seus próprios scripts.

2 de março de 2010

Os Fulanos no Programa do Jô

Os Fulanos no Programa do Jô

Para descontrair.
=p




kkkkkkkkkkkkkkkkkkkkk

Reportagem sobre segurança na rede WiFi doméstica

Reportagem sobre segurança na rede WiFi doméstica

 

Estava vendo uns blogs com assuntos relacionados a Segurança, e achei esse vídeo da globo, que explica usn pontos importantes para você ter sua rede Wi-Fi segura, para que não haja intrusos vendo e lendo seus assuntos particulares. 

Espero que gostem.






Fonte: http://anchisesbr.blogspot.com/2010/02/seguranca-reportagem-sobre-seguranca-na.html

A Escala do Universo!

Aê pessoal!
Hoje de manha recebi um e-mail com esse conteudo de uma comunidade de astrônomos amadores que eu participo, muito interessante, espero que apreciem.

"Entre outras mil coisas da para ver a escala de 0,0000001 mm que é a que a precisão limite para se polir e ajustar espelhos de telescopios."
(To pensando se ainda vo fazer o meu. xD)

Segue o link:

http://www.newgrounds.com/portal/view/525347

Flw até a proxima.