quinta-feira, 8 de dezembro de 2011

Como configurar o postgres linux ubuntu 10.04

PostgreSQL 8.2 version will be installed in Ubuntu 7.10 (Gutsy Gibbon)
sudo apt-get install postgresql-8.2 postgresql-client-8.2 postgresql-contrib-8.2
sudo apt-get install pgadmin3
This will install the database server/client, some extra utility scripts and the pgAdmin GUI application for working with the database.
Configuring postgresql in Ubuntu
Now we need to reset the password for the ‘postgres’ admin account for the server
sudo su postgres -c psql template1
template1=# ALTER USER postgres WITH PASSWORD ‘password’;
template1=# \q
That alters the password for within the database, now we need to do the same for the unix user ‘postgres’:
sudo passwd -d postgres
sudo su postgres -c passwd
Now enter the same password that you used previously.
from here on in we can use both pgAdmin and command-line access (as the postgres user) to run the database server. But before you jump into pgAdmin we should set-up the PostgreSQL admin pack that enables better logging and monitoring within pgAdmin. Run the following at the command-line
we need to open up the server so that we can access and use it remotely - unless you only want to access the database on the local machine. To do this, first, we need to edit the postgresql.conf file:
sudo gedit /etc/postgresql/8.2/main/postgresql.conf
Now, to edit a couple of lines in the ‘Connections and Authentication’ section
Change the line
#listen_addresses = ‘localhost’
to
listen_addresses = ‘*’
and also change the line
#password_encryption = on
to
password_encryption = on
Then save the file and close gedit.
Now for the final step, we must define who can access the server. This is all done using the pg_hba.conf file.
sudo gedit /etc/postgresql/8.2/main/pg_hba.conf
Comment out, or delete the current contents of the file, then add this text to the bottom of the file
DO NOT DISABLE!
# If you change this first entry you will need to make sure that the
# database
# super user can access the database using some other method.
# Noninteractive
# access to all databases is required during automatic maintenance
# (autovacuum, daily cronjob, replication, and similar tasks).
#
# Database administrative login by UNIX sockets
local all postgres ident sameuser
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# “local” is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
# Connections for all PCs on the subnet
#
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
host all all [ip address] [subnet mask] md5
and in the last line, add in your subnet mask (i.e. 255.255.255.0) and the IP address of the machine that you would like to access your server (i.e. 138.250.192.115). However, if you would like to enable access to a range of IP addresses, just substitute the last number for a zero and all machines within that range will be allowed access (i.e. 138.250.192.0 would allow all machines with an IP address 138.250.192.x to use the database server).
That’s it, now all you have to do is restart the server
sudo /etc/init.d/postgresql-8.2 restart
That’s it you can start using postgresql in Ubuntu
Create a Database from command line
You can also use pgadmin3 for all postgresql related
To create a database with a user that have full rights on the database, use the following command
sudo -u postgres createuser -D -A -P mynewuser
sudo -u postgres createdb -O mynewuser mydatabase

fonte: http://www.ubuntugeek.com/howto-setup-database-server-with-postgresql-and-pgadmin3.html

Configurar o usuário postgres instalado pelo synaptic

Entre no diretório /etc/init.d

cd /etc/init.d/

Logue no postgresql usando a conta root:

sudo -u postgres psql template1

Depois quando estiver no psql digite o seguinte comando SQL:

ALTER USER postgres WITH PASSWORD ‘***password***’;

onde ***password*** é a sua nova senha.

Saia do console do postgresql digitando \q


fonte: http://public-void-main.blogspot.com/2008/03/alterar-senha-do-postgresql-no-ubuntu.html

Como configurar o proxy no ubuntu 10.04

Configure o proxy normalmente no modo gráfico e mude os seguintes arquivos:

/etc/apt/apt.conf


Acquire::http::proxy "http://usuario:senha@ipproxy:port/";
Acquire::ftp::proxy "ftp://usuario:senha@ipproxy:port/";
Acquire::https::proxy "usuario:senha@ipproxy:port/";



e adicione as seguintes linhas no arquivo

/etc/profile


export http_proxy="http://usuario:senha@ipproxy:port"
export ftp_proxy="ftp://usuario:senha@ipproxy:port"

terça-feira, 6 de dezembro de 2011

Uma lição para vida - placa de rede !

Espero que ninguém passe pelo o que passei.

Quando você tem um computador que quando você pluga na rede de seu trabalho  ele funciona normalmente mas quando ele é plugado em qualquer switch ou roteador ele não funciona (aparece cabo não conectado) um dos possíveis problemas é configuração da velocidade da sua placa. 

Para resolver isso vetifique:


Painel de Controle\Rede e Internet\Conexões de Rede-> Propriedades da Conexão de rede -> Configurar -> Avançado -> Duplex  e Velocidade de Conexão ->



e no campo valor coloque  "negociação automático".

Boa Sorte!
Obrigado Sergio pela dica !






terça-feira, 4 de outubro de 2011

Ler xml dom java 6 exemplo


import
java.util.Vector;
import
javax.xml.parsers.*;
import
org.w3c.dom.*;
 
public
class LerXMLDOM {
// caminho (path) do arquivo XML
private String xmlPathname;
// construtor que seta o caminho do XML
public LerXMLDOM( ) throws Exception {
xmlPathname = "CadastroCRAS.xml";
Vector x = LerCRAS();
System.
out.println("dddd" + x.size());
for( int i=0; i < x.size(); i++ ) {
CRAS cras = (CRAS)x.get( i );
System.
out.println( "CRAS id: " + cras.id );
System.
out.println( " nomeCRAS: " + cras.nomeCRAS );
System.
out.println( " enderecoCRAS: " + cras.enderecoCRAS );
System.
out.println( " codIBGE_municipio: " + cras.codIBGE_municipio );
System.
out.println( " coordenadorCRAS: " + cras.coordenadorCRAS );
System.
out.println( " CPFcoordenadorCRAS: " + cras.CPFcoordenadorCRAS );
}
}
private String getChildTagValue( Element elem, String tagName ) throws Exception {
NodeList children = elem.getElementsByTagName( tagName );
if( children == null ) return null;
Element child = (Element) children.item(0);
if( child == null ) return null;
return child.getFirstChild().getNodeValue();
}
public Vector LerCRAS() throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(
xmlPathname );
Element elem = doc.getDocumentElement();
// pega todos os elementos usuario do XML
NodeList nl = elem.getElementsByTagName(
"cras" );
// prepara o vetor
Vector crases =
new Vector();
// percorre cada elemento usuario encontrado
for( int i=0; i<nl.getLength(); i++ ) {
Element tagUsuario = (Element) nl.item( i );
// pega os dados cadastrado para o usuario atual
int id = Integer.parseInt( tagUsuario.getAttribute( "id" ) );
String nomeCRAS = getChildTagValue( tagUsuario,
"nomeCRAS" );
String enderecoCRAS = getChildTagValue( tagUsuario,
"enderecoCRAS" );
Integer codIBGE_municipio =
new Integer( getChildTagValue( tagUsuario, "codIBGE_municipio" ) );
String coordenadorCRAS = getChildTagValue( tagUsuario,
"coordenadorCRAS" );
String CPFcoordenadorCRAS = getChildTagValue( tagUsuario,
"CPFcoordenadorCRAS" );
// cria uma nova instancia do UsuarioGuj com os dados do xml
CRAS novo_cras =
new CRAS( id, nomeCRAS, enderecoCRAS,codIBGE_municipio, coordenadorCRAS, CPFcoordenadorCRAS );
// adiciona o usuario na coleção (vector) de usuários do guj
crases.addElement( novo_cras );
}
return crases;
}
/**
*
@param args
*
@throws Exception
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
new LerXMLDOM();
}
}
class
CRAS {
public int id;
public String nomeCRAS;
public String enderecoCRAS;
public int codIBGE_municipio;
public String coordenadorCRAS;
public String CPFcoordenadorCRAS;
// construtor da classe
public CRAS( int id, String nomeCRAS, String enderecoCRAS, int codIBGE_municipio, String coordenadorCRAS, String CPFcoordenadorCRAS) {
this.id = id;
this.nomeCRAS = nomeCRAS;
this.enderecoCRAS = enderecoCRAS;
this.codIBGE_municipio = codIBGE_municipio;
this.coordenadorCRAS = coordenadorCRAS;
this.CPFcoordenadorCRAS = CPFcoordenadorCRAS;
}


}


------------------------------------------------

<?
xml version="1.0" encoding="UTF-8"?>

<
lista_cras>


<cras id="1">


<nomeCRAS>CRAS de Samambaia</nomeCRAS>

<enderecoCRAS>Samambaia Norte</enderecoCRAS>

<codIBGE_municipio>530001</codIBGE_municipio>

<coordenadorCRAS>Meu Coordenador preferico</coordenadorCRAS>

<CPFcoordenadorCRAS>111.111.111-11</CPFcoordenadorCRAS>


</cras>

<cras id="2">


<nomeCRAS>CRAS de São Sebastião</nomeCRAS>

<enderecoCRAS>São Sebastião Norte</enderecoCRAS>

<codIBGE_municipio>530001</codIBGE_municipio>

<coordenadorCRAS>Meu Coordenador de Sebastião</coordenadorCRAS>

<CPFcoordenadorCRAS>222.222.222-22</CPFcoordenadorCRAS>


</cras>


</
lista_cras>
 



---------------------------------------

dddd2

CRAS id: 1

nomeCRAS: CRAS de Samambaia

enderecoCRAS: Samambaia Norte

codIBGE_municipio: 530001

coordenadorCRAS: Meu Coordenador preferico

CPFcoordenadorCRAS: 111.111.111-11

CRAS id: 2

nomeCRAS: CRAS de São Sebastião

enderecoCRAS: São Sebastião Norte

codIBGE_municipio: 530001

coordenadorCRAS: Meu Coordenador de Sebastião

CPFcoordenadorCRAS: 222.222.222-22

Windows Phone MarketPlace do Brasil lançado

O windows marketplace brasil parece está funcionando finalmente, contudo com muitas limitações

Tinha uma conta com um usuário americano do xbox. Fiz a transferência para o Brasil depois de atualizar para o Mango.

O MarketPlace abriu com tranquilidade. Contudo, ficaram somente os links para compra de aplicativos e games. O  Zune  que comercializa video e música desapareceu.

Outro problema que deve ser resolvido em breve foi a pouca quantidade de aplicativos disponíveis para brasileiros. Um número extremamente inferior ao do mercado americano.

Abraços.

segunda-feira, 3 de outubro de 2011

Ler XML JAVA 6 com SAX


Este código foi implementado utilizando: http://www.guj.com.br/articles/15
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class LerXMLDOM {
 /**
  * @param args
  * @throws SAXException
  * @throws ParserConfigurationException
  * @throws IOException
  */
 public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
  // TODO Auto-generated method stub
  SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
  InputSource input = new InputSource("RelatorioCrasMensal.xml");
  parser.parse(input, new XMLHandler()); 
 
 }
}
class XMLHandler extends DefaultHandler {  
  
    /** o galho atual */ 
    private StringBuffer galhoAtual = new StringBuffer(200);  
 
    /** o valor da tag atual */ 
    private StringBuffer valorAtual = new StringBuffer(100);  
    /** comeca um documento novo */ 
  
     
    /** termina o documento */ 
    public void endElement(String uri, String localName, String tag)  
         {  
      
         // mostra o valor  
         System.out.print(valorAtual.toString().trim());  
         // e limpa  
         valorAtual.delete(0, valorAtual.length());  
      
         // seta o galho atual  
         galhoAtual.delete(  
             galhoAtual.length() - tag.length() - 1,  
             galhoAtual.length());  
      
     } 
   
    public void startElement(  
         String uri,  
         String localName,  
         String tag,  
         Attributes atributos)  
         {  
      
         // seta o galho atual  
         galhoAtual.append("/" + tag);  
      
         // mostra a tag  
         System.out.print(  
             "\n<" 
                 + galhoAtual.substring(1)  
                 + (atributos.getLength() != 0 ? " +ATRIBUTOS" : "")  
                 + ">");  
      
         // limpa a tag atual  
         valorAtual.delete(0, valorAtual.length());  
      
     }
   
    /** recebe os dados de uma tag */ 
    public void characters(char[] ch, int start, int length) {  
     
        // adiciona ao valor atual  
        valorAtual.append(ch, start, length);  
     
    } 
}

----------------------------------------------------------------------------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<relatorio_mensal_cras_v1>

 <hora_geracao>11</hora_geracao>
 <minuto_geracao>15</minuto_geracao>
 <segundo_geracao>55</segundo_geracao>

 <dia_geracao>03</dia_geracao>
 <mes_geracao>10</mes_geracao>
 <ano_geracao>2011</ano_geracao>

 <mes_referencia>04</mes_referencia>
 <ano_referencia>2011</ano_referencia>

 <numero_unidade>1234</numero_unidade>
 
 <a1>100</a1>
 <a2>200</a2>

 <b1>300</b1>
 <b2>400</b2>
 <b3>500</b3>
 <b4>600</b4>
 <b5>700</b5>
 <b6>800</b6>

 <c1>900</c1>
 <c2>1000</c2>
 <c3>1100</c3>
 <c4>1200</c4>
 <c5>1300</c5>

 <d1>1400</d1>
 <d2>1500</d2>
 <d3>1600</d3>
 <d4>1700</d4>
 <d5>1800</d5>
 <d6>1900</d6>
 <d7>2000</d7>
 
</relatorio_mensal_cras_v1>

-----------------------------------------------------------------------------------------------------------------------------------------------
Resultado

<relatorio_mensal_cras_v1>
<relatorio_mensal_cras_v1/hora_geracao>11
<relatorio_mensal_cras_v1/minuto_geracao>15
<relatorio_mensal_cras_v1/segundo_geracao>55
<relatorio_mensal_cras_v1/dia_geracao>03
<relatorio_mensal_cras_v1/mes_geracao>10
<relatorio_mensal_cras_v1/ano_geracao>2011
<relatorio_mensal_cras_v1/mes_referencia>04
<relatorio_mensal_cras_v1/ano_referencia>2011
<relatorio_mensal_cras_v1/numero_unidade>1234
<relatorio_mensal_cras_v1/a1>100
<relatorio_mensal_cras_v1/a2>200
<relatorio_mensal_cras_v1/b1>300
<relatorio_mensal_cras_v1/b2>400
<relatorio_mensal_cras_v1/b3>500
<relatorio_mensal_cras_v1/b4>600
<relatorio_mensal_cras_v1/b5>700
<relatorio_mensal_cras_v1/b6>800
<relatorio_mensal_cras_v1/c1>900
<relatorio_mensal_cras_v1/c2>1000
<relatorio_mensal_cras_v1/c3>1100
<relatorio_mensal_cras_v1/c4>1200
<relatorio_mensal_cras_v1/c5>1300
<relatorio_mensal_cras_v1/d1>1400
<relatorio_mensal_cras_v1/d2>1500
<relatorio_mensal_cras_v1/d3>1600
<relatorio_mensal_cras_v1/d4>1700
<relatorio_mensal_cras_v1/d5>1800
<relatorio_mensal_cras_v1/d6>1900
<relatorio_mensal_cras_v1/d7>2000

segunda-feira, 26 de setembro de 2011

Algoritmo do Soundex

1. Separe as 4 primeiras letras da string de consulta da string a ser consultada

hermman herman

herm herm

2. Separe a primeira letra da consulta e da string a ser pesquisada

mantenha a primera letra e substitua as letras seguintes por:

a, e, i, o, u, h, w e y por 0

b, f, p, v por 1

c, g, j, k, q, s, x, z por 2

d, t por 3

l por 4

m, n por 5

r por 6

continuando o exemplo

herm herm

h655 h655

então eles devem ser a mesma palavra.

quarta-feira, 21 de setembro de 2011

Redes sociais com perfis livres é o futuro?

Chegou mais um convite no meu email para mais uma rede social. Olho para ele e penso se devo entrar em mais uma rede social e deixar mais um perfil fantasma?

Bem, imagino que muitos passem por este dilema.

A questão é que novas redes sociais vão surgir a cada dia. Algumas das mais famosas hoje são Facebook, Orkut, MSN Live, Linkedin, Flicker, LastFM, MySpace, Twitter e cia. Bem, cada uma faz alguma coisa que a outra não faz. E você quer estar em todas e interagir com todas. Inventaram até o conceito de HUB de redes sociais que você publica um post em várias redes e recebe as informações de várias redes em um só lugar.

A cada dia as redes sociais tentam ganhar mais usuários e fazer com que as outras redes utilizem os perfis armazenados através de OpenId. OpenId é uma forma de se logar em sistema utilizando um perfil de outro site. Por exemplo, publicar um comentário em um site de notícias utilizando o perfil do facebook ou do Twitter. Elas fazem isso para tentar cativar os usuários a manterem somente seu perfil e evitar que outras redes ganhem um novo usuário.

Bem, aparentemente, uma das formas para amenizar estas brigas seria criar um login de rede ao qual seria independente de serviços. Gosto muito de lembrar do modelo de domínios na Internet. Imagine que você poderia comprar algo como seu domínio e armazenar em algum servidor seguro que lhe poderia te autenticar em qualquer serviço ou rede social disponível na Internet. Seria algo como um token com sua assinatura digital e senha armazenada em um servidor autorizado por você. Daí qualquer site poderia ir lá e te autenticar e recuperar seu perfil.

Bem, vamos ter que esperar um pouco para uma das grandes empresas abraçar essa idéia.

------

Social networking with open profiles is the future?

Another invitation arrived in my email to another social network. I look at him and wonder if I should go into in other social network and let another ghost profile?

Well, I suppose that many have this dilemma.

The point is that new social networks will emerge every day. Some of the most famous today are Facebook, Orkut, MSN Live, LinkedIn, Flicker, LastFM, MySpace and Twitter. Well, each does something the other does not. And all you want to be and interact with all. Even invented the concept of social networking hub you publish a post on various networks and receives information from multiple networks in one place.

Every day social networks tries to get more users and make the other networks use the profiles stored using OpenId. OpenID is a way to log into the system using a profile of another site. For example, post a comment on a news site using facebook profile or Twitter. They do this to try to attract users to keep only your profile and prevent other networks to gain a new user.

Well, apparently one of the ways to mitigate these arguments would be to create a network login that would be independent of services. I like to remember the model of internet domain. Imagine you could buy something like your domain and store in a secure server which you could authenticate in any service or social network on the Internet. It would be something like a token with your digital signature and password stored on a server authorized by you. Therefore any site you could go and authenticate and retrieve your profile.

Well, we'll have to wait a while for a large enterprise embrace this idea.

domingo, 18 de setembro de 2011

SmartPhones um câncer para o modelo atual de telefonia

 

O modelo de telefonia hoje é baseado em telefones que não tinham as mínimas condições de acesso a Internet onde os aplicativos mais sofisticados eram calendário, despertador e calculadora. As empresas de telefonia tinham como principal receita tarifição por ligações, tarifação por SMS e  venda de aplicativos em Java Micro Edition.

O modelo de Smartphones adotados hoje utilizam quase que obrigatoriamente a Internet através da rede 3g, 2g ou via rede wifi. Estes telefones trouxeram um novo paradigma, pois serviços que eram ofertados diretamente pelas companias telefonicas podem ser criadas por terceiros.

A venda de aplicativos em Java Micro Edition praticamente foi extinta para esta nova geração de celulares. Tanto Apple, Google e Microsoft se negaram a utilizar a tecnologia da Oracle. Ou seja, elas querem ficar com a receita da venda de aplicações para celulares, por meio de seus marketplaces.

Os famosos SMS vem sendo substituídos aos poucos por aplicações que utilizam a internet do celular para enviar mensagens. WhatsApp, Gtalk, Facebook e outros oferecem para seus usuários ferramentas que substituem o SMS.

E por fim, as chamadas telefonicas. Quando vi pela primeira vez um Skype instalado em um Smartphone soube que o modelo de telefonia vai mudar nos próximos anos. O Skype permite realização de ligações via Internet (Voz sobre IP) não obrigando o usuário a utilizar a tarifação da companhia telefonica.

As companhias telefonicas provavelmente terão que se adaptar a este novo paradigma nos próximos anos. Ainda fico me perguntando se um dia o celular somente terá acesso Internet. Talvez ainda demore anos ou mesmo décadas para isso acontecer. Visto que ainda existe o modelo de telefone fixo que não evoluiu em nada nas últimas décadas.

segunda-feira, 12 de setembro de 2011

dica

Em um jogo não importa se você ganha ou perde, mas como você joga.

Matriz de Informação Social

A Matriz de Informação Social é um conjunto e módulos de software que permite a consulta e visualização de tabelas, mapas e gráficos de vários programas/ações sociais do Governo Federal entre eles estão o Bolsa Família, o BPC e o programa de aquisição de alimentos o sistema pode ser acessado em:

http://aplicacoes.mds.gov.br/sagi/mi2007/

Constituição e a política social

No ano de 1988 o Brasil discutiu e implantou uma nova constituição, após um 
longo  período  não  democrático.  A  nova  constituição  garantia  ao  cidadão  brasileiro 
moradia, educação, saúde, lazer, vestuário, higiene, transporte e previdência social. 
Este  fato  demonstra  muitos  traços  da  política  do  Welfare  State,  assim  como,  uma 
forte  ligação  com  a  Declaração  Universal  dos  Direitos  Humanos.  A  seguir  os  pará-
grafos 6°, 7° e 23° artigos da Constituição.

Art. 6. São direitos sociais a educação, a saúde, o trabalho, a moradia, o la-
zer, a segurança, a previdência social, a proteção à maternidade e à infân-
cia, a assistência aos desamparados, na forma desta Constituição.
Art. 7. São direitos dos trabalhadores urbanos e rurais, além de outros que
visem à melhoria de sua condição social:
...
IV  -  salário  mínimo, fixado  em  lei,  nacionalmente  unificado,  capaz  de  aten-
der a suas necessidades vitais básicas e às de sua família com moradia,
alimentação,  educação,  saúde,  lazer,  vestuário,  higiene,  transporte  e
previdência  social,  com reajustes  periódicos  que  lhe  preservem  o  poder
aquisitivo, sendo vedada sua vinculação para qualquer fim;
...
XXV - assistência gratuita aos filhos e dependentes desde o nascimento até
5 (cinco) anos de idade em creches e pré-escolas
...
Art. 23. É competência comum da União, dos Estados, do Distrito Federal e
dos Municípios:
...
II  -  cuidar  da  saúde  e  assistência  pública,  da  proteção  e  garantia  das
pessoas portadoras de deficiência. 

 
A  Constituição,  no  seu  Artigo  194,  dividiu  a  seguridade  social  em  direitos  à 
saúde, à previdência e à assistência social.  

Art.  194.  A  seguridade  social  compreende  um  conjunto  integrado  de  ações
de iniciativa  dos Poderes Públicos e  da sociedade,  destinadas  a assegurar
os direitos relativos à saúde, à previdência e à assistência social.
Os Artigos 203 e 204, da seção IV da Constituição, regem a assistência social
no Brasil (BRASIL, 2009f):
Art.  203.  A  assistência  social  será  prestada  a  quem  dela  necessitar,  inde-
pendentemente de contribuição à seguridade social, e tem por objetivos:
I -  a proteção à família, à maternidade, à infância, à adolescência e à velhi-
ce;
II - o amparo às crianças e adolescentes carentes;
III - a promoção da integração ao mercado de trabalho;
IV  -  a  habilitação  e  reabilitação  das  pessoas  portadoras  de  deficiência  e  a
promoção de sua integração à vida comunitária;
V - a garantia de um salário mínimo de benefício mensal à pessoa portadora
de deficiência e ao idoso que comprovem não possuir meios de prover à
própria manutenção ou de tê-la provida por sua família, conforme dispu-
ser a lei.
Art. 204. As ações governamentais na área da assistência social serão rea-
lizadas  com  recursos  do  orçamento  da  seguridade  social,  previstos  no  art.
195,  além  de  outras  fontes,  e  organizadas  com  base  nas  seguintes  diretri-
zes:
I -  descentralização  político-administrativa,  cabendo  a  coordenação  e  as
normas  gerais  à  esfera  federal  e  a  coordenação  e  a  execução  dos  res-
pectivos  programas  às  esferas  estadual  e  municipal,  bem  como  a  enti-
dades beneficentes e de assistência social;
II - participação da população, por meio de organizações representativas, na
formulação das políticas e no controle das ações em todos os níveis. 

quinta-feira, 8 de setembro de 2011

Notebook, netbook, tablet ou smartphone

Muitas pessoas me perguntam qual desses equipamentos comprar.
Aqui está minha opinião.

A primeira pergunta que faço é:
É para trabalhar? Se a resposta for sim quase sempre a pessoa precisa de um notebook ou um netbook.
As ferramentas de escritórios ainda não tem concorrentes de peso no mundo dos tablets e smatphones.
Se for utilizar por muitas horas, precisar de alto desempenho ou você só quer comprar um único equipamento eletrônico  prefira um notebook.
Caso você já tenha um bom desktop em casa eu recomendo um netbook porque ele ganha em mobilidade mas perde em desempenho que você tem no seu desktop.

Os smartphones e tablets não substituem os pcs e apesar de milhares de aplicaçōes disponíveis ainda os notes e nets executam muito mais aplicativos e possuem sistemas em navegadores mais confiáveis. Sempre entro em  páginas no meu smartphone ou no meu tablet que não funcionam bem ou são extremamente difíceis de usar, pois  foram desenhadas para serem usadas com um teclado e mouse.

Quando você tiver seu primeiro pc (um net, note ou mesmo um desk) recomendo comprar um smartphone. Eles são muito práticos, cabem no seu bolso :-) e fazem quase tudo que um tablet faz . Os tablets somente recomendo para quem gosta de ler ou ficar vendo tv grudado na internet. Eles também são muito bons para levar pra cama e para se divertir em um avião sem a comissária de bordo pegar no seu pé dizendo que você está com um celular.  Mas a maioria dos tablets não vem com celular, por isso você vai precisar também de um celular baratinho.

Agora se você gostar muito de tecnologia e tenha uma graninha sobrando compre os quatro e seja feliz! :-)

Internet 3G brasileira

Quando a internet via celular 3g foi lançada era possível escolher planos com velocidades entre 300k, 600k, 1mb e mesmo 7mb de velocidade. Sem limite de download ou tempo de conexão. Desde seu lançamento os planos para este tipo de acesso a internet vem somente piorando.

O grande problema foi que parte dos usuários que utilizavam este tipo de internet não conseguiam atingir a velocidade vendida e colocavam as operadoras na justiça. E claro as operadoras se juntaram para dificultar a vida dos usuários ao invés de resolver os problemas técnicos. E claro que a ANATEL concordou com as exigências delas. Ou SEJA, os planos hoje são cheios de pagadinhas e surpresas no final do mês.

No Brasil internet ilimitada significa:

1.Não existe velocidade estabelecida para download, se a internet estiver lenta a operadora não é responsabilizada. O problema é seu companheiro. Quem manda morar longe da estação rádio base.

2.Quando você baixar mais de uma determiada quantidade de bytes, geralmente 1 giga byte ou menos, eles reduzem a velocidade para 1/10 da velocidade max que é alcançada pela operadora, em alguns planos chega a 30k. Esta velocidade é mais lenta que utilizar um conexão discada em 1994. Fora que se sair um service pack do windows provavelmente seu plano irá acabar antes de você atualizar seu sistema operacional.

Funciona mais ou menos assim eles te dão uma ferrari, mas você só pode usar dois litros de gasolina. Depois disso você fica com um fusquinha com pneu furado. Prefiro ter um carro 1.4 o tempo todo, e você?

3. Bem, se quiser continuar utilizando a internet com velocidade normal ao invés de  reduzida você pode continuar usando sendo que é cobrado uma taxa para cada Mega baixado. Fiz uns calculos se baixar 200 MB após meu limite de1 gb  vou pagar 200 reais a mais na sua conta ou 3x o valor do plano por 1/5 de quantidade de dados.

Isso é a internet 3g ilimitada do Brasil. Parabéns ANATEL por ajudar as empresas de telefonias. Afinal elas lucram tão pouco neste país. Enfim, como elas iriam investir aqui... vou adorar ver os planos da internet 4g...

terça-feira, 6 de setembro de 2011

windows phone 7 e Andorid 3

Finalmente, tive a oportunidade de utilizar o windows phone 7 (wp7) no celular htc hd7 e o android 3 no acer iconia.

O wp7 me surpreendeu muito com uma usabilidade melhor, na minha opinião, que a do android 2.2 e arrisco a dizer no nível do ios. Realmente a Microsoft fez um trabalho digno para entrar na guerra dos smartphones. Todos os menus e navegação estão suaves e organizados. Um problema que tive foi que o marketplace ainda não estava disponível para emails brasileiros, mas resetei  o aparelho apagando todos os seus dados e consegui colocar um endereço dos estados unidos.

Já o android não me surpreendeu muito. Ficou faltando um algo novo, algo que não tivesse visto no ipad pelo menos com relação ao software. Achei os menus mal organizados. existem mais de 6 aplicativos para multimedia me lembrou a confusão das distribuiçōes do linux. Contudo o hardware parece que vai ser um diferencial dos tablets com android. Este Acer tem porta hdmi para plugar na tv, usb para plugar um teclado por exemplo, conector micro usb para plugar o tablet no pc, saída para fone de ouvido, wifi, duas câmeras e expanção para cartão de memória.

quarta-feira, 31 de agosto de 2011

A guerra dos SmartPhones

Após o lançamento do primeiro iPhone em 2007 pela Apple uma guerra teve inicio que ainda não teve fim. Finalmente uma empresa de computadores invadia o mundo dos celulares com  tanta voracidade e apetite por mercado. Parecia que ela falava:

- Agora o nível é este aqui! Quem vai encarar?

Me lembrou as bombas nucleares americanas lançadas no Japão para dar fim a segunda guerra mundial.

A Apple em 2007 lançou seu famoso iPhone com um sucesso espetacular. Ele conseguiu modificar e aperfeiçoar o conceito dos antigos Palms integrando com um telefone e uma experiência de usabilidade nunca antes tida pelos usuários de telefones. Simplesmente ela deixou um único botão algo inimaginável para smartphones com milhares de botões da época e não satisfeita jogou no lixo o conceito da canetinha de plástico da palm. Deixando a interação com o usuário através de uma tela de alta qualidade e com ótima resposta ao toque. (http://pt.wikipedia.org/wiki/IPhone)

Além de criar um telefone esplendido no conjunto de hardware e software também trouxe junto um marketplace onde milhares de desenvolvedores independentes e empresas poderiam distribuir suas aplicações. Muito baseado no conceito de venda de música do antigo iPod sendo que agora ela vendia aplicações.

Todas as empresas de celulares olhavam para o iPhone, e pelo jeito parecia impossível competir com um sistema operacional com uma ótima experiência com o usuário, uma legião de aplicações desenvolvidas  e pessoas fascinadas por ele. Os celulares da Nokia, Motorola, BlackBerry, Sony, LG, Samsung, HTC e os chings lings pareciam  defasados pelo menos uns 10 anos.

Várias tentativas foram realizadas por essas empresas em busca de chegar perto em qualidade do iPhone. Contudo, o iPhone reinava soberano e absoluto. Um dia a HTC fez um lançamento tímido chamado de o Celular do Google (http://tecnopot.com.br/htc-g1-novo-celular-google-com-android/). Na verdade era um celular com o sistema operacional Android. O Android é um sistema em código livre baseado em linux.

Após algum tempo  Motorola, Sony, Samsung e cia começaram a produzir celulares com o Android. Com exceção da Nokia que investia muito no seu sistema o Sybiam e da  BlackBerry com seu RIM.  E ficou assim  a gerra no mundo dos Smartphones. iPhone iOS, um conjunto de companhias com Android, Nokia com Symbian e Black Berry com o RIM.

Foi nesse ponto que a guerra mudou. Para mim a Google usou uma tática que a Microsoft tinha usado na época do lançamento dos primeiros PCs com DOS e Windows. Ou seja, dar o sistema operacional o Android (equivalente ao Dos/Windows) e ajudar essas empresas a construir Smartphones (PCs na época) em um nível tão bom ou similar ao  iPhone (Macs).  Enquanto isso a Nokia e a BlackBerry estavam patinando e perdendo mercado.

No final de 2010 e incio de 2011 o Android passa iOS em número de aparelhos vendidos. Nessa mesmo época a gigante Microsoft que já tinha entrado no mercado de sistemas operacionais para smartphones a muito tempo contudo sem muito sucesso finalmente começa a querer entrar nessa guerra. Junto com ela a HP que adquiriu a Palm com WebOS também quer moder parte do mercado.

A Microsoft firmou uma parceria de exclusividade com a Nokia para inserir seu novo sistema no mercado o Windows Phone 7. Essa parceria ainda não teve frutos, mas é uma grande aposta. O Windows Phone 7 tem uma vantagem sobre o Android. Quem cuida das atualizações dele é a própria Microsoft assim como ela faz com os PCs. Quem já teve um Android sabe o quanto é ruim e frustante é esperar atualizações vindas unicamente dos fabricantes e não do Google.

Enquanto isso a HP, que parecia ter entrado como uma opção, decepcionou a pouco tempo desistindo dos seus clientes e descontinuando o WebOS. Ela talvez fosse uma ótima opção,  contudo ela parece ter preferido gastar sua força em outra guerra, a da computação nas nuvens. Uma pena mesmo, pois se ela seguisse o exemplo da Microsoft com seu XBox talvez tivesse lucrado no segunda ou terceira geração de seu produto.

Vamos esperar o que acontece.
Abraços.

segunda-feira, 29 de agosto de 2011

Exemplo simples do uso do java mail

import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.io.*;
import java.util.Properties;
public class MailClient
{
 
 
     public void sendMail(String mailServer, String from, String to,
                             String subject, String messageBody,
                             String[] attachments) throws
MessagingException, AddressException
     {
         // Setup mail server
         Properties props = System.getProperties();
         props.put("mail.smtp.host", mailServer);
         
         // Get a mail session
         Session session = Session.getDefaultInstance(props, null);
         
         // Define a new mail message
         Message message = new MimeMessage(session);
         message.setFrom(new InternetAddress(from));
         message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
         message.setSubject(subject);
         
         // Create a message part to represent the body text
         BodyPart messageBodyPart = new MimeBodyPart();
         messageBodyPart.setText(messageBody);
         
         //use a MimeMultipart as we need to handle the file attachments
         Multipart multipart = new MimeMultipart();
         
         //add the message body to the mime message
         multipart.addBodyPart(messageBodyPart);
         
         // add any file attachments to the message
         addAtachments(attachments, multipart);
         
         // Put all message parts in the message
         message.setContent(multipart);
         
         // Send the message
         Transport.send(message);
 
 
     }
 
     protected void addAtachments(String[] attachments, Multipart multipart)
                     throws MessagingException, AddressException
     {
         for(int i = 0; i<= attachments.length -1; i++)
         {
             String filename = attachments[i];
             MimeBodyPart attachmentBodyPart = new MimeBodyPart();
             
             //use a JAF FileDataSource as it does MIME type detection
             DataSource source = new FileDataSource(filename);
             attachmentBodyPart.setDataHandler(new DataHandler(source));
             
             //assume that the filename you want to send is the same as the
             //actual file name - could alter this to remove the file path
             attachmentBodyPart.setFileName(filename);
             
             //add the attachment
             multipart.addBodyPart(attachmentBodyPart);
         }
     }
 
     public static void main(String[] args)
     {
         try
         {
             MailClient client = new MailClient();
             String server="pop3.mydomain.com";
             String from="myname@mydomain.com";
             String to = "someuser@somewhere.com";
             String subject="Test";
             String message="Testing";
             String[] filenames =
{"c:\somefile.txt"};
         
             client.sendMail(server,from,to,subject,message,filenames);
         }
         catch(Exception e)
         {
             e.printStackTrace(System.out);
         }
         
     }
}