MeuMySQL Blog is now at http://blog.mdnsolutions.com/.

Thursday, October 13, 2011

Quiz de MySQL - Por que não testar o que sabe?

Olá à todos. Neste post teremos um pequeno quiz para checar o quanto sabemos sobre MySQL. Estas questões não são oficiais ou fazem parte de nenhuma certificação, mas nos dão uma dica de como anda nosso conhecimento sobre esse banco de dados. Ao final das questões vocês podem encontrar as respostas e caso desejem comentem sobre seu score. Abraços e espero que se divirtam.
                       
1) MySQL roda em que sistemas operacionais?
a) Linux e Mac OS-X apenas
b) Qualquer um
c) Unix, Linux, Windows e outros
d) Unix e Linux apenas

2) Para remover registros duplicados de um result set de um SELECT use a palavra-chave abaixo:
a) NO DUPLICATE
b) UNIQUE
c) DISTINCT
d) Nenhuma das respostas anteriores

3) Qual das respostas abaixo podem adicionar uma linha na tabela?
a) Add
b) Insert
c) Update
d) Alter

4) Para usar MySQL no seu computador você precisará?
a) FTP e Telnet
b) Algum tipo de client programa para acessar os banco de dados
c) Um Browser
d) Perl, PHP ou Java

5) Qual declaração SQL é usada para inserir um novo dado no banco de dados?
a) INSERT INTO
b) UPDATE
c) ADD
d) INSERT NEW

6) Em uma cláusula LIKE você poderia pedir por qualquer valur terminado em 'qpt' escrevendo:
a) LIKE %qpt
b) LIKE *ton
c) LIKE ton$
d) LIKE ^.*ton$

7) Um valor NULL é tratado como blank ou 0.
a) Verdadeiro
b) Falso
c) Nenhuma das respostas acima

8) MySQL é
a) Uma linguagem de Programação
b) Uma tecnica para escrever programs confiáveis
c) Um Sistema de Gerenciamento de Banco de dados Relacionais

9) Em uma cláusula LIKE você pode solicitar por qualquer valor de 6 digitos digitando?
a) LIKE ??????
b) LIKE .{6} Answer 5: LIKE ^.{6}$
c) LIKE ...... (6 pontos)
d) LIKE ______ (6 underscore characters)

10) O resultado de um SELECT pode comter linhas duplicadas.
a) Falso
b) Verdadeiro
c) Nenhuma das respostas acima

11) Qual função é usada para pegar o tempo corrente no MySQL?
a) getTime()
b) Time()
c) NOW()

12) Uma tabela pode fazer um JOIN nela mesma.
a) Verdadeiro
b) false
c) Nenhuma das respostas acima

13) Qual valor abaixo não é uma função de agregação?
a) COUNT
b) MIN
c) MAX
d) COMPUTE

14) mysql_pconnect() é usada para fazer a persistência com o banco de dados, o que significa um link SQL que não fecha quando a execução do seu script acaba. 
a) Verdadeiro
b) Falso

15) O que uma cláusula SQL usa para restringir o numero de linhas retornadas?
a) AND
b) WHERE
c) HAVING
d) FROM

16) Qual valor abaixo é usado para remover um banco de dados MySQL?
a) mysql_drop_database
b) mysql_drop_entiredb
c) mysql_drop_db
d) mysql_drop_dbase

17) MySQL suporta o padrao SQL99
a) Falso
b) Verdadeiro

18) Primary Key permite valores NULL, e UNIQUE KEY não aceita valores NULL.
a) Falso
b) Verdadeiro

19) Quantos caracteres são permitidos no nome de um banco de dados?
a) 55
b) 72
c) 64
d) 40

20) Qual comando abaixo deveria ser usado para criar um banco de dados chamado “student”?
a) CREATE ?I student
b) CREATE DATABASE student
c) DATABASE /student
d) DATABSE student

21) Qual comando irá deletar a estrutura da tabela e seus dados?
a) TRUNCATE
b) DROP

22) O que faz o comando USE?
a) É usado para carregar código de outro arquivo
b) tornou-se obsoleta e deve ser evitado por razões de segurança
c) É um pseudônimo para o comando SELECT
d) No caso de ser utilizado para escolher o banco de dados que deseja usar, uma vez que você tenha conectado ao MySQL

23) Data a tabela employees abaixo:  

emp_idemp_name
1Brush
2Jerrin

Que valor vai retornar com a query SELECT COUNT(*) FROM employees?
a) 3
b) 2
c) 1
d) Nenhuma das respostas acima

24) O principal programa MySQL que faz todo o tratamento dos dados é chamado?
a) mysql.exe
b) mysql
c) mysqld
d) httpd

25) Um comando SELECT sem uma cláusula WHERE retorna?
a) Todos os registros de uma tabela que correspondem à anterior cláusula WHERE
b) Todos os registros de uma tabela ou de informações sobre todos os registros
c) SELECT é inválido sem uma cláusula WHERE
d) Nada


26) O acesso de segurança do MySQL é controlado através de?
a) O ID que o usuário conectado ao servidor através e privilégios criados para essa conta
b) As contas de login MySQL e privilégios estabelecidos para cada conta
c) A segurança login normal é suficiente para MySQL, e ele não tem qualquer controle extra de seu próprio.
d) Uma tabela de endereços IP válidos, e os privilégios criados para cada endereço IP

27) Em um SELECT com uma cláusula GROUP BY, a cláusula WHERE e uma cláusula HAVING, as condições WHERE são aplicados antes que as condições HAVING.
a) Verdadeiro
b) Falso
c) Ambos Verdadeiro ou Falso
d) Nenhuma das respostas acima



Respostas:


(1) c(2) c(3) b(4) b(5) a
(6) a(7) b(8) c(9) d(10) b
(11) c(12) a(13) d(14) a(15) b
(16) c(17) a(18) a(19) c(20) b
(21) b(22) d(23) b(24) c(25) b
(26) b(27) a

Tuesday, September 20, 2011

Instalando distribuição binária do MySQL no CentOS



Ola galera! Ultimamente venho estudando para tentar passar na primeira prova de certificação da Oracle MySQL DBA I e vou contar um coisa: é bem complicado, contudo é muito prazeroso. O primeiro caso se dá pelo fato de eu como desenvolvedor que sempre esteve sob plataforma Windows (desculpe, não tenho orgulho disso) quando cheguei em um nível onde o Linux é fundamental tive algumas dificuldades.

Neste novo ambiente tive que instalar e configurar o MySQL (MySQL Community Server 5.5.16)  no Linux (CentOS Linux release 6.0 Final) e para isso precisei entender melhor como essa plataforma, comandos e recursos funcionam uma vez que diferem bastante do Windows. Enfim, vamos ao que interessa, fazer o nosso servidor rodar.


Escolha da distribuição e instalação do MySQL

Assim como consta no manual podemos fazer a instalação de várias formas, optei por utilizar a distribuição binária Linux - Generic 2.6 (x86, 64-bit), Compressed TAR Archive disponivel no próprio site da MySQL  (link direto para essa distribuição aqui). Bem, uma vez feita o download temos que antes de mais nada criar um usuário e grupo para trabalhar com o servidor MySQL. Logue no seu Linux como root e rode os comandos abaixo. Eles criam um grupo para o MySQL e adicionam um usuário que vai servir apenas para fins administrativos sem direitos de login.

shell> groupadd mysql
shell> useradd -r -g mysql mysql

Alteramos nosso diretório para o local onde instalaremos nosso server. Suponho neste ponto que você também tenha feito o download aqui, então vamos extrair a distribuição e alterar o nome da pasta atual "full-path-to-mysql-VERSION-OS" para algo mais simbolico como "mysql".

shell> cd /usr/local
shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
shell> ln -s mysql-5.1.59-linux-i686-glibc23 mysql

Vamos agora acessar o novo diretorio criado e dar para ele as permissões do grupo mysql que criamos anteriormente.

shell> cd mysql
shell> chown -R mysql .
shell> chgrp -R mysql .

Feito isso, a instalação pode ser executada. Abaixo o comando faz a criação das pastas iniciais da sua base de dados MySQL. Eles serão criados em /var/lib/mysql, recomendo que você crie esse diretorio antes e dê também as mesmas permissões como feito no passo anterior.

shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data

Os próximos comandos são opcionais, mas recomendo que sejam executados também. Neles criamos um my.cnf no diretório etc, atribuimos um usuário para o servidor mysqld_safe e criamos uma copia do mysql.server na pasta de inicialização do Linux. Observer neste ultimo passo que também mudamos o nome do arquivo ao fazer a copia de mysql.server para mysql. Assim o servidor será carregado automaticamente quando o linux iniciado.

shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> bin/mysqld_safe --user=mysql &
shell> cp support-files/mysql.server /etc/init.d/mysql


Configuração e teste do servidor

Uma vez instalado o seu servidor temos que agora alterar alguns parametros no nosso arquivo my.cnf para que o servidor rode corretamente. A propósito essa foi uma pequena dor de cabeça pra mim ao instalar pela primeira vez deste modo já que na documentação oficial o passo a passo solicita você testar antes de checar essas informações. Enfim, abaixo segue aproximadamente como seu my.cnf deve ficar para o servidor rodar, eu usei o vi do Linux para edita-lo.

[mysqld]
datadir=/var/lib/mysql/
socket=/tmp/mysql.sock
port=3306
user=mysql

[mysql.server]
basedir=/usr/local/mysql


Desta forma seu servidor está pronto para rodar. Basta executar o comando abaixo e você receberá a mensagem de sucesso.

shell>> /etc/init.d/mysql start
Starting MySQL.. SUCCESS!

Agora vamos finalmente configurar uma variável de ambiente com o caminho da pasta bin adicionando um PATH no sistema. Crie um arquivo chamado mysql.sh como mostrado abaixo e adicione dentro dele o caminho PATH=${PATH}:/usr/local/mysql/bin (necessário reiniciar para essa alteração funcionar). Feito isso, basta apenas rodar o mysql client no seu shell e pode comecar a trabalhar em sua nova base de dados.

shell>> touch /etc/profile.d/mysql.sh
shell>> mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.59 MySQL Community Server (GPL)
mysql>


Bem, basicamente isso galera. Lembrando ainda que temos que implementar ainda a seguranca do nosso banco de dados que você encontra referências em inglês aqui. Espero em breve estar escrevendo sobre isso também visto que é mais um conhecimento também requerido na certificação ORACLE SCMDBA. Obrigado à todos e qualquer dúvida deixe um comentário.

Referências:

Wednesday, September 14, 2011

Bancos Relacionais: 13 regras de Ted Codd


Olá galera, hoje vamos falar sobre uma importante figura na história dos banco de dados relacionais, Ted Codd. Ele realizou avanços na área que norteiam até hoje a estrutura desse modelo. Enjoy!

Os  bancos  de  dados  relacionais  foram  idealizados  por  Edgar  Frank  "Ted"  Codd, um  cientista  de  computação  britânico  que,  enquanto  trabalhava  para  a  IBM,  inventou  o modelo relacional para a gestão de banco de dados, a base teórica para bancos de dados relacionais.

Ele  fez  outras  contribuições  valiosas  para  a  ciência  da  computação,  mas  o modelo  relacional,  uma  teoria  muito  influente  sobre  gestão  de  dados  gerais,  continua sendo seu feito mais citado. Em 1970 ele apareceu com 13 leis (numeradas de 0 a 12) que descreveriam o que é um banco de dados relacional e o que é um Sistema Gerenciador de Banco  de  Dados  Relacionais  faz  e,  várias  leis  de  normalização  que  descrevem  as propriedades  de  dados  relacionais.  Apenas  os  dados  que  haviam  sido  normalizados poderiam ser considerados relacionais.
  1. Regra  Fundamental:  Um  SGBD  relacional  deve  gerenciar  seus  dados usando apenas suas capacidades relacionais. 
  2. Regra  da  informação:  Toda  informação  deve  ser  representada  de  uma única forma, como dados em uma tabela. 
  3. Regra da garantia de acesso: Todo dado (valor atômico) pode ser acessado logicamente  (e  unicamente)  usando  o  nome  da  tabela,  o  valor  da  chave primária da linha e o nome da coluna. 
  4. Tratamento  sistemático  de  valores  nulos:  Os  valores  nulos  (diferente  do zero,  da  string  vazia,  da  string  de  caracteres  em  brancos  e  outros  valores não  nulos)  existem  para  representar  dados  não  existentes  de  forma sistemática e independente do tipo de dado. 
  5. Catálogo dinâmico on-line baseado no modelo  relacional: A descrição do banco de dados é representada no nível lógico como dados comuns (isso é, em  tabelas),  permitindo  que  usuários  autorizados  apliquem  as  mesmas formas de manipular dados aplicados aos dados comuns ao consultá-los. 
  6. Regra  da  sub-linguagem  compreensiva:  Um  sistema  relacional  pode suportar várias linguagens e formas de uso, porém deve possuir ao menos uma  linguagem  com  sintaxe  bem  definida  e  expressa  por  cadeia  de caracteres e com habilidade de apoiar a definição de dados, a definição de visões, a manipulação de dados, as restrições de integridade, a autorização e a fronteira de transações. 
  7. Regra  da  atualização  de  visões:  Toda  visão  que  for  teoricamente atualizável será também atualizável pelo sistema. 
  8. Inserção,  atualização  e  eliminação  de  alto  nível:  A  capacidade  de manipular  a  relação  base  ou  relações  derivadas  como  um  operador  único não  se  aplica  apenas  a  recuperação  de  dados,  mas  também  a  inserção, alteração e eliminação de dados. 
  9. Independência dos dados físicos: Programas de aplicação ou atividades de terminal  permanecem  logicamente  inalteradas  quaisquer  que  sejam  as modificações  na  representação  de  armazenagem  ou  métodos  de  acesso internos. 
  10. Independência  lógica  de  dados:  Programas  de  aplicação  ou  atividades  de terminal  permanecem  logicamente  inalteradas  quaisquer  que  sejam  as mudanças  de  informação  que  permitam  teoricamente  a  não  alteração  das tabelas base. 
  11. Independência  de  integridade:  As  relações  de  integridade  específicas  de um banco de dados relacional devem ser definidas em uma sub-linguagem de dados e armazenadas no catálogo (e não em programas). 
  12. Independência  de  distribuição:  A  linguagem  de  manipulação  de  dados deve  possibilitar  que  as  aplicações  permaneçam  inalteradas  estejam  os dados centralizados ou distribuídos fisicamente. 
  13. Regra da Não-subversão: Se o sistema relacional possui uma linguagem de baixo  nível  (um  registro  por  vez),  não  deve  ser  possível  subverter  ou ignorar as regras de integridade e restrições definidas no alto nível (muitos registros por vez). 

Artigo extraído parcialmente de http://www.scribd.com/doc/50553904/Apostila-de-SQL.

Friday, August 19, 2011

MySQL 5.5 - Razões para Escolher MySQL: Performance e Escalabilidade

Olá galera hoje estou fazendo uma tradução livre do whitepaper Top 10 Reasons to Choose MySQL for Web-based Applications da Oracle http://www.mysql.com/why-mysql/white-papers/mysql-wp-top10-webbased-apps.php. Neste artigo a performance e escalabilidade da ferramenta é abordada em vários aspectos que fazem toda a diferença ao escolher o seu banco de dados ou mesmo a versão,  espero que gostem.


Em nosso mundo online, competição esta sempre a um click (ou toque na tela) de distância, e respostas rápidas para requisições e atividades de clientes são portanto cruciais. O banco de dados de uma aplicação web precisa oferecer performance extrema para operações de leituras (query simples ou complexa) e escrita.

Outro fator de performance é que este mesmo tipo de performance extrema deve exibir problemas de sobrecarga de dados (ex.: milhares de conexões simutâneas) ou volumes de dados (GB para TB).

Aplicações web precisam estar preparadas para rápidas mudanças em uma crescente quantidade de clientes, sem experimentar nenhuma interrupção nos seus serviços ao cliente.

Uma marca do MySQL é sua excepcional performance e escalabilidade, o qual faz tantas empresas na web utilizarem esta ferramenta. O MySQL utiliza de vários mecanismos para entregar uma boa performance em seu uso, tais quais:

InnoDB como novo Storage Engine padrão no MySQL 5.5

InnoDB é o mais largamente usado storage engine na Web/Web 2.0, eCommerce, mídias em geral e aplicações de entretenimento construídas com MySQL, e por boas razões; InnoDB fornece alta eficiência ACID com seus controles transacionais e sua arquitetura única que garante uma excelente performance e escalabilidade. Mais, InnoDB é estruturalmente desenhado para manipular aplicações transacionais que requerem recuperação em suas paradas, integridade referencial, e altos leveis de concorrência entre usuários.

Uma das mais notáveis melhorias no MySQL 5.5 é que o InnoDB é agora o storage engine padrão para novas tabelas criadas, permitindo usuários desenvolver aplicações transacionais sem necessidade de alterar as configurações do serviço. Para MySQL 5.5 InnoDb foi reestruturado de forma que ele foi otimizado para tirar o máximo de vantagens das capacidades de processadores, hardwares e do sistema operacional.

Em testes usando o MySQL 5.5 release candidate comparado com o MySQL 5.1, resultados demonstraram claramente as melhorias em performance obtidas:
  • No Windows: até 1500% de ganhos em performance para operações de Leitura/Escrita e 500% em apenas Leitura.
  • No Linux: até 360% de ganhos em performance em Leitura/Escrita e outros 200% em apenas Leitura.
Mais informações estão disponíveis em "What's New in MySQL 5.5" whitepaper em:
http://www.mysql.com/why-mysql/white-papers/mysql-wp-whatsnew-mysql-55.php

Replicação MySQL

MySQL tem sido amplamente posicionado por alguns dos principais websites para alcançar níveis extremos de escalabilidade. DBAs podem simples e rapidamente criar várias réplicas de seus bancos de dados em alta escala bem além das limitações de capacidade de uma instância simples, habilitando eles manipularem uma crescente carga no banco de dados.

Rápida manipulação de Conexões

MySQL oferece uma excelente manipulação de thread/connection cache onde rapidamente estabelece solicitações de novas conexões e finaliza outras já existentes. O pool de conexões do MySQL sempre tem novos threads prontos para servir requisições de seus clientes fazendo com que não haja criação de novas conexões do zero. Isso significa que conectando e desconectando de uma base MySQL não prejudica sua performance.

Utilizando o poder da memória

MySQL explora os avanços na abundância de memória dos servidores atuais para garantir a máxima performance. Além de utilizar padrões da industria em dados e indíces para manter a referencia da informação na memória para rápido acesso, ele também possui caracteristicas próprias tais como:

Primeiramente, tabelas em memória para respostas extremamente rápidas. O MySQL Cluster fornece ainda a opção de uso de tabelas em memórias como parte do schema do banco de dados. Essas mesmas tabelas mantém sua alta performance mesmo que o discos se encontrem na situação "warm".

Adicionalmente, MySQL fornece um query cache que é especialmente desenhado para aplicações web modernas onde a repetição de das mesmas querys é elevada. O MySQL não armazena somente a query enviada pela aplicação mas também o result set da mesma. Notamos que isso é  completamente diferente da situação de reconstrução de um result set a partir da memória - neste caso este result set não é recalculado. Esta forma de cache se mostra extremamente útil para aplicações web onde há necessidade de prover a mesma e a mesma informação novamente.

Outras propriedades relacionadas com a performance MySQL

MySQL contém várias outras configurações de performance que ajudam aplicações web a garantir suas necessidades de demanda atual. Por exemplo, a partição de dados esta disponível para aplicações que necessitam horizontalmente separar seus dados em uma tabela e índices associados. O MySQL optimazer é inteligente o suficiente para escanear apenas as partições necessárias para satisfazer a query do usuário final, no qual vai reduzir drasticamente o tempo de resposta do banco. Completo suporte a range, hash, list e composite/sub partitioning está disponível entre várias colunas, assim como tipos de dados texto e númericos.

Finalmente, MySQL contém todas as funções e utilitários para ajudar profissionais Web a desenhar suas aplicações fornecendo altos indices de performance. Inúmeros tipos de índices (clustered, full-text, hash, spatial, b-tree), ilimitado row-level locking coupled com MVCC (no qual resulta em um pequeno lock da tabela, caso haja) e muito mais fazem do MySQL uma excelente opção para esses esperados bancos de dados de alta performance.


Bem, por hoje é isso, em breve estarei postando mais novidades sobre esse excelente SGDB. Abraços e bom MySQL Timing!



Thursday, June 30, 2011

O que é um Banco de dados em Cluster?

Um cluster é uma coleção de produtos componentes para prover escalabilidade e disponibilidade a baixos custos. Com isso em mente, é possível criar um banco de dados em cluster para aplicações empresariais de alta qualidade armazenando e processando informações por nós entre os produtos. A arquitetura para um banco de dados em cluster é distinguido por como as responsábilidades com os dados são compartilhadas entre os computadores em rede (nós).

Em uma arquitetura shared-nothing (nada compartilhado), o particionamento é de forma que cada nó (computador) possua uma parcela dos dados. Isto é, um nó irá operar exclusivamente em uma porção de dados. Escalabilidade, obviamente, depende de um bom particionamento. Em uma partição física pode ser que um computador coloque sua porção de dados em seu disco local com todos os nós conectados via rede de alta velocidade (tal como Myrinet ou InfiniBand). Tal esquema - pelo qual se assemelha a uma rede de área de armazenamento - reduz a tolerância à erros mas um nó com problemas ainda pode tornar o dado inacessível. No entando, a partição física normalmente compartilha os discos, sendo que desta forma outro nó pode tomar pra si a responsabilidade de finalizar o processo.

Esta arquitetura é de longe a mais popular; IBM DB2, Microsoft SQL Server, MySQL Cluster, e Bizgres MPP (based on PostgreSQL) todos seguem este esquema. O lado ruim deste tipo de configuração é a dificuldade na instalação e manutenção.

Em uma arquitetura de shared-everything ou shared-disk (tudo compartilhado ou disco compartilhado) qualquer nó pode operar em qualquer porção do banco de dados. O modelo físico normalmente envolve armazenamento vinculado à rede (network-attached storage), no qual todos os nós se comunicam com um separador, disco compartilhado (frequentemente um RAID) via uma interconexão de alta velocidade (tradicionamente Fibre Channel). Novamente a partição lógica é a chave da escalabilidade. O lado ruim da arquitetura de compartilhar tudo é que possa haver um enorme tráfego quando vários nós tentam se comunicar com um específico disco simutaneamente.

Neste caso, o uníco grande banco de dados que oferece uma arquitetura de compartilhamento de tudo (shared-everything architecture) é o Oracle, cujo o produto RAC (Real Application Cluster) constroi um cache compartilhado em cada um dos seus nós por meio de "Cache Fusion". Esta tecnologia usa redes de alta velocidade para manter o cache coerênte.

Ambas arquiteturas podem requerer diferentes interconexões : Ethernet para gerenciamento, InfiniBand ou Myrinet para a comunicação entre nós e Fibre Channel para comunicação entre blocos de armazenagem. Dada as tendências de comotidização é possivel que iWARP ou Myri-10G irão emergir como simples interconexões para banco de dados em cluster.

Abaixo um video sobre o MySQL Cluster para exemplificar.




Thursday, February 3, 2011

Ambiente LAMP no Ubuntu para Iniciantes

Bom dia Galera,

Como dito no artigo anterior vou agora mostrar os comandos para configurar seu ambiente LAMP no Ubuntu. LAMP significa para o Linux, Apache, MySQL, PHP. O guia destina-se a ajudar aqueles que têm muito pouca experiência do uso do Linux.


Instalar o Apache

Para começar, vamos instalar o Apache.

1. Abra o Terminal (Aplicações Acessórios>> Terminal).

2. Copiar / Colar pressione a seguinte linha de código no terminal e digite:

sudo apt-get install apache2

3. O terminal vai pedir que você que você é a senha, digite-o e pressione enter.


Teste Apache

Para se certificar que tudo instalado corretamente, vamos agora testar o Apache para garantir que ele está funcionando corretamente.

1. Abra qualquer navegador e digite o seguinte endereço na web:

http://localhost/

Você deverá ver uma pasta chamada apache2-default /. Abra-a e você verá uma mensagem dizendo "It works!", funciona!


Instalar o PHP

Nesta parte vamos instalar o PHP 5.

Passo 1. Novamente abra o Terminal (Aplicações> Acessórios> Terminal).

Etapa 2. Copiar / Colar a seguinte linha no terminal e pressione enter:

sudo apt-get install php5 libapache2-mod-php5

Etapa 3. Para que o PHP para funcionar e ser compatível com Apache devemos reiniciá-lo. Digite o seguinte código no terminal para fazer isso:

sudo / etc/init.d/apache2 restart


Teste de PHP

Para garantir que não haja problemas com o PHP, vamos fazer um teste rápido.

Passo 1. Na cópia do terminal / cole a seguinte linha:

sudo gedit / var / testphp.php / www

Isto irá abrir um arquivo chamado phptest.php.

Etapa 2. Copiar / colar essa linha no arquivo phptest:



Etapa 3. Salve e feche o arquivo.

Etapa 4. Agora abra seu navegador e digite o seguinte endereço web:

http://localhost/testphp.php

A página deverá ficar assim:

Página de teste PHP

Você tem agora instalado Apache e PHP!


Instale o MySQL

Para terminar este guia até vamos instalar o MySQL. (Nota - Fora de Apache e PHP, MySQL é o mais difícil de configurar, vou dar alguns grandes recursos para qualquer pessoa a ter problemas no final deste guia..)

Passo 1. Mais uma vez abrir o Terminal surpreendente e, em seguida, copiar / colar essa linha:

sudo apt-get install mysql-server

Passo 2 (opcional). Para que outros computadores em sua rede para exibir o servidor que você criou, primeiro você deve editar o "Endereço de ligação". Comece abrindo o terminal para editar o arquivo my.cnf.

sudo gedit / etc / mysql / my.cnf

Altere a linha

bind-address = 127.0.0.1

E mudar o 127.0.0.1 para o seu endereço IP.

Etapa 3. Isto é onde as coisas podem começar a ficar complicado. Comece digitando o seguinte no terminal:

mysql-u root

Na sequência desta copiar / colar essa linha:

'localhost','root' mysql> SET PASSWORD FOR @ = PASSWORD ('yourpassword');

(Não esqueça de mudar yourpassword para uma senha de sua escolha.)

sudo gedit / etc/php5/apache2/php.ini

Agora vamos ter que descomentar a seguinte linha, retirando o ponto e vírgula (;).

Altere esta linha, ou caso ela não exista crie ela:

extension = mysql.so

Para ficar assim:

extension = mysql.so

Agora, basta reiniciar o Apache e está tudo pronto!

sudo / etc/init.d/apache2 restart

Espero que essas dicas tenham sido úteis. Abraços para todos e até a próxima.

Iniciando no Ubuntu


Bom dia Galera,

Hoje começo minha jornada no Ubuntu 10.10 e parece que vai ser bem interessante. Tenho um HP e como ele esquenta muito se rodar o Linux diretamente optei por criar uma virtual machine utilizando o VMware sobre o Windows Vista Home Edition. Bem, no final gostei da solução: Windows para entretenimento e Linux como estação de trabalho.

Bem, não vou falar da instalação do VMware mesmo porque é muito simples, basta fazer o download do programa no site deles e seguir os passos.

Logo após baixar a última versão do Ubuntu gravá-lo em um cd ou usar o daemon tools como fiz e instalar em sua nova máquina virtual.

Bem, uma vez instalado o Ubuntu você estará com o ambiente pronto para configurar seu ambiente de trabalho.

Como fazer o ambiente LAMP falarei no próximo artigo.

Abraços à todos e até a próxima.

Friday, November 28, 2008

A grande roda da tecnologia da informação


'É, as coisas não são mais como antes.", diria qualquer empresário qüinquagenário. E de fato ele tem razão. As mudanças que tanto ele, quanto todos nós acompanhamos nesses últimos anos alteraram drasticamente todas as formas de interação entre as pessoas. Sejam elas no dia a dia, nas relações sociais, no mercado de trabalho ou nos negócios. Hoje em dia já temos uma visão clara do que já está estabelecido e do que está por vir quando falamos de tecnologia.

A matéria-prima, os fornecedores, os equipamentos ou qualquer coisa que seja necessário para uma empresa produzir esta ao alcance de todos, e ter uma fonte "ultra secreta" de qualquer material ou serviço já não proporciona grandes vantagens competitivas. Afinal, os preços, produtos, embalagens e qualidade são muito semelhantes, e apesar variar entre uma empresa e outra ainda assim se mantem em um alto padrão. Então o que faz o cliente optar por uma empresa ou outra? Uma empresa conseguir cumprir prazos e metas e outra não?

Para conquistar clientes, melhorar processos e obter um ganho maior em uma margem de lucros tão apertada a empresa tem que recorrer a softwares para promover melhorias em sua organização e modelo de trabalho. Neste projeto analisamos como uma empresa utilizou da tecnologia, leia-se software, para melhorar desde o seu almoxarifado, passando pelo controle da produção dos seus funcionários e otimizando sua contabilidade e folha de pagamento. Obtendo com tudo isso justamente uma margem de lucros maior, e um controle maior sobre seus processos e prazos.

Diante dos avanços tecnológicos, os empreendedores aliaram-se à informática para suprir suas necessidades e expandirem seus negócios, customizando tarefas e acelerando processos. Ao longo do tempo, com os softwares cada vez mais integrados às empresas, facilitar o acesso às informações relevantes é uma necessidade fundamental.

Há mais de 50 anos foi dado o primeiro passo, e é impossível parar de girar essa grande roda tecnológica. Estejam todos à postos para correr, porque não tem hora nem local para parar.
Boa sorte a todos.

Tuesday, April 15, 2008

Internet: Novo Ambiente, Novas Fraudes.

Infelizmente, o mundo virtual imita o mundo real e não demorou muito para que aparecessem as fraudes e golpes na Internet. Com o advento do comércio eletrônico e a realidade do Internet Banking, tem-se notado a proliferação e a diversificação das fraudes e golpes via rede, muitas vezes usando o e-mail como ferramenta.


O que é uma FRALDE?

Segundo o Aurélio, dicionário da língua portuguesa:

Fraude. (Do lat. fraude) S. f. 1. V. logro (2). 2. Abuso de confiança; ação praticada de má-fé. 3. Contrabando, clandestinidade. 4. Falsificação, adulteração. Golpe. ... 10. Manobra desonesta, com o fim de enganar, prejudicar, roubar outrem.


Como se dá a fraude na Web?

  • Correio eletrônico;

  • Links em sites de conteúdo duvidoso;

  • Programas maliciosos instalados na máquina do usuário.


Tipos de Fraudes

  • Boatos (hoaxes)

  • Correntes (chain letters)

  • Propagandas

  • Golpes (scam)

  • Estelionato (phishing)

  • Programas maliciosos

    • Vírus

    • Worms

    • Cavalos de Tróia

    • Ofensivos


Boatos (hoaxes)

Histórias falsas, escritas com o intuito de alarmar ou iludir.

Instigar sua divulgação o mais rapidamente e para o maior número de pessoas possível.

Um exemplo é as escolas americanas ensinando que a Amazônia é território internacional em seus livros de geografia.


Correntes (chain letters)

Prometem sorte, riqueza ou algum outro tipo de benefício a quem repassar a um número mínimo de pessoas em um tempo pré-determinado;

Aqueles que interromperem a corrente sofrerão muitos infortúnios. Com esse mecanismo, atingem um número exponencial de pessoas em curtos períodos de tempo.


Propagandas

Divulgam desde produtos e serviços até propaganda política. É um dos mais comuns e antigos já registrados.

Mensagens comerciais legítimas, enviadas por empresas licenciadas e conhecidas, mas também por spammer com alguma característica ilegal.

Exemplo mais conhecido do público é o spam que oferece Viagra a baixo custo.


Golpes (scam)

Tratam de oportunidades enganosas e ofertas de produtos que prometem falsos resultados.

Entre as ofertas mais comuns estão as oportunidades miraculosas de negócios ou emprego, propostas para trabalhar em casa, empréstimos facilitados ou 'pirâmides' para multiplicar lucros.


Estelionato (phishing)

Mensagens que assumem o disfarce de spam comercial ou títulos simulam mensagens comuns, como comunicados transmitidos dentro de uma organização ou mensagens pessoais oriundas de pessoas/empresas conhecidas.

Essas armadilhas obtem dados pessoais e senhas para ser usadas em fraudes ou transferências bancárias e compras pela Internet.


Programas maliciosos

Semelhante ao spam de estelionato, este tipo apresenta-se sob disfarce e induz o destinatário a executar um programa de computador malicioso.

Dentre os programas usualmente enviados desta forma estão principalmente os vírus, os worms e os trojans.


Vírus

Capazes de atingir arquivos e programas de um computador que tenha sido "infectado" através de sua execução.

Após infectado, esses arquivos ou programas passam a transmitir o vírus também.

Agem pertubando, corrompendo ou apagando arquivos e desconfigurando o sistema.


Worms

Worms também são programas que se replicam e tentam atingir outros computadores, mas diferentemente dos vírus, não precisam de um arquivo para transportá-los.

Um dos mais conhecidos foi o Sasser, cujo alvo eram computadores rodando os sistemas Windows XP e Windows 2000.


Cavalos de Tróia

Trojans desativam as medidas de segurança comuns de um computador em rede;

Permitem que um programa sendo executado em outro computador adquira controle sobre a máquina hospedeira.

Exemplos: copiar, alterar e remover os arquivos e registros do computador em que o trojan está instalado.


Ofensivos

Divulgam conteúdo agressivo e violento, como por exemplo acusações infundadas contra indivíduos específicos, defesa de ideologias extremistas, apologia à violência contra minorias, racismo, xenofobia e pedofilia.


Motivação dos Golpistas

  • Dinheiro Fácil;

  • Baixo custo associado ao envio de mensagens eletrônicas;

  • 0,005% dos destinatários respondem da maneira que o spammer deseja;

  • Anonimato garantido.


Como se Proteger?

  • Sabendo como os golpistas agem e ficando atento a todo tipo de mensagem recebida;
  • Duvidar de qualquer benefício, vantagem ou premiação. Quanto mais fácil, maiores as chances de golpe;
  • Não clicar diretamente em links de e-mails, sempre copiar o endereço e colar diretamente na url.
  • Não aceitar arquivos de pessoas desconhecidas ou executá-los sem ter a certeza que se trata de um arquivo seguro;
  • Não fornecer qualquer tipo de informação pessoal ou dados bancários para pessoas/páginas que lhe solicitarem de forma duvidosa.


Como denunciar spam e fraudes no Brasil


Informações no site http://antispam.br;

Resumidamente, faz-se o seguinte:

  • Responder o email de spam, incluindo o conteúdo original e o cabeçalho de e-mail na mensagem;

  • No campo 'Para:' digitar o endereço mail-abuse@cert.br;

  • Enviar o email.


Baixe essa matéria em PDF clicando aqui.

Saturday, April 12, 2008

[Off-Topic] Mercado de Trabalho na Informática

Bem galera, como dei uma parada em java vou postando outros conteúdos que estou produzindo. Fiz um trabalho pra meu curso de Licenciatura em Computação com o tema Mercado de Trabalho na Infomática, o que você espera do mercado, o que o mercado espera de você.

Abaixo segue o conteúdo. Estou disponibilizando os links para download do conteúdo em PDF. Espero que gostem.

Dúvidas e (in)certezas sobre o mercado de trabalho

Junto com a informática e o desenvolvimento de novas tecnologias surgiu uma gama de áreas para se trabalhar. A quantidade de profissões é enorme, assim como a quantidade de programas e equipamentos existentes no mercado, isto é, as possibilidades ligadas à areá de informática hoje em dia são inúmeras e estão aumentando cada vez mais. No início da era da computação as profissões eram basicamente 4: analista, programador, operador e digitador. Hoje em dia para cada software há uma especialização, um certificado. Esse mar de oportunidades gera uma certa ansiedade no profissional da área, que acaba confuso se deve se especializar, em que se aprofundar, ou mesmo qual área ele realmente quer atuar.

Após formado, o profissional tem uma extensa lista de possibilidades e pode ter dificuldades em decidir com o que quer de fato lidar. Levar em consideração o próprio perfil pode auxiliar muito na escolha, assim como o que lhe é mais fácil de lidar e a aprender. Mas seria muito simplório levar em consideração apenas esses fatores. É inegável que observar as atuais e futuras necessidades do mercado de trabalho são essenciais para não ficar “na mão” de uma hora para a outra. A tecnologia avança em passos largos e o que hoje é atrativo, interessante ou promissor, pode ser rapidamente substituído por algo que faça mais rápido, fácil e melhor.


O segmento de serviços na área de informática

Ao contrário do que pode parecer, não é fácil definir uma área que se deseja trabalhar, além de conhecimento, um perfil específico é fundamental. Temos as seguintes atividades compondo o segmento de Serviços em Informática atualmente:

  • Consultoria em Sistemas de Informática – reúne atividades de assessoria ou consultoria em sistemas e programas de informática, help desk, serviços de apoio na configuração de equipamentos (hadwares), de aplicativos e instalações de sistemas de informática (softwares).

  • Desenvolvimento de Programas de Informática – refere-se ao desenvolvimento, produção, fornecimento de documentação e edição de programas de informática, softwares e serviços de desenho de páginas para Internet (web design).

  • Processamento de Dados – comporta os serviços de entrada e processamento de dados, CPD; digitação; gestão e operação de equipamentos de processamento de dados pertencentes a terceiros; aluguel de hora em computador, serviços de escaneamento de documentos; serviços de hospedagem de páginas (web hosting).

  • Atividades de Banco de Dados – reúne serviços de editoração eletrônica para produtos on line e serviços de portal de busca da web.

  • Manutenção e reparação de máquinas de escritório e de informática – refere-se a manutenção e reparação de computadores de pequeno porte e outros equipamentos de informática, tais como impressoras e periféricos.

  • Outras atividades de informática, não especificadas anteriormente – referem-se às atividades de recuperação de panes informáticas e serviços de instalação de programas de informática.

No caso das atividades de Serviços em Informática, as microempresas empregaram 27,5% de trabalhadores formalmente registrados, enquanto as grandes empresas (com mais de 500 trabalhadores), significaram 32,4%. Esses dados demonstram, portanto, um equilíbrio da capacidade de geração de empregos formais entre as grandes e as microempresas nas atividades de Serviços em Informática, consideradas características da “Nova Economia” a partir do crescimento do setor de Serviços e da penetração das tecnologias da informação.

Em outros casos o profissional da área pode ter interesse em se tornar um profissional liberal e controlar seus serviços e clientes. Nada se compara ao setor de informática quando a questão é a prestação de serviços. Onde houver um computador certamente haverá várias necessidades, sejam em manutenção, seja redes, softwares de automação comercial ou uma simples conexão com internet. E novamente nos deparamos com o dilema: Que tipo de serviço prestar para os clientes da minha região? Me especializar ou atender todos os tipos de solicitações?


Em que profissão eu vou?

Nada melhor do que conhecer as diversas áreas disponíveis e o que exatamente executam para definir o que melhor se encaixa aos interesses pessoais. Claro que nada substitui a experimentação, mas já é de grande avalia saber com o que se manipulará. Abaixo segue uma lista de serviços que podem ser prestados por um profissional da área, ressaltando-se é claro que as possibilidades não se esgotam por aqui.

  • Digitador: pessoa treinada em digitação de dados, num determinado sistema, com rapidez em datilografia.

  • Operador de Microcomputador, de Computador ou de Terminal: pessoa treinada para operar determinado equipamento de processamento de dados. Formação: 1º Grau.

  • Programador: pessoa habilitada em programação com uma ou mais linguagens de programação. Formação: Superior ou Técnico.

  • Analista de Sistemas: pessoa com habilitação em Análise e Programação de Computadores. Dever ter formação superior ou ser especialista em uma determinada atividade da empresa.

  • Gerente de CPD: pessoa escolhida pela diretoria da Empresa, com longa experiência em Análise de Sistemas e conhecedor das atividades principais da empresa. Deve ter aptidão para a liderança e ser profundo conhecedor dos equipamentos e das atividades do CPD - Centro de Processamento de Dados (hoje em dia poucas empresas possuem um CPD).

  • Técnico: pessoa capacitada em eletrônica que monta e conserta computadores (mexe somente com a parte de hardware).

  • Consultor: presta assessoria na área de informática.

  • Engenheiro de Software: conhece amplamente as linguagens de programação de baixo nível (código de máquina) e cria softwares aplicativos de controle e genéricos.

  • Especialista em Sistema de Informação: pessoa capaz de adquirir, organizar, desenvolver e gerenciar serviços, sistemas e recursos da tecnologia de informação para uso em processos organizacionais.

  • Web Designer: desenvolve homepages para a internet.

  • Web Master: cuida da manutenção de sites na internet (trabalha no provedor de acesso à internet).

  • Desenvolvedor de Sites: cabe-lhe desenvolver e tornar um site competitivo no mercado. Precisa ter conhecimento técnico afiado, criatividade e conhecimento profundo do negócio da empresa, deve também saber mudar de acordo com a vontade do cliente.

  • Programador de Internet: cria programas para uso na internet, mas deve ter um conhecimento a fundo das linguagens de programação para a web e também a utilização de objetos distribuídos, para compor uma tecnologia que suporte o crescente aumento de usuários da web.

  • Produtor Executivo para a Web: é também conhecido como arquiteto de soluções, projeta sites, alinha os custos e apresenta soluções para construir sistemas para a internet, além de cuidar também do back office.

  • CIO - Chief Internet Officer: nada mais é do que diretor da Web, ou executivo de e-business. Necessita entender como funciona cada tecnologia do mundo cibernético e como transformá-la em diferencial estratégico de negócios. Não precisa ser especialista em nada, mas tem que entender de marketing e planejamento estratégico.

  • Executivo de Comércio Eletrônico: pessoa com tino comercial, conhecimento de tecnologias de internet e de sistemas de ERP, supply chain, CRM, logística e métodos de relacionamento com clientes.

  • Expert em Segurança de Sites: também conhecido como Web Security (são hacker do bem), deve planejar e implantar a política de segurança que será adotada pela empresa para manter seu site longe de hackers e crackers. Precisa entender de várias tecnologias, como os programas de firewall e de criptografia, protocolos de rede, roteadores, switches e programas usados para entrar à força nos sites.

  • DBA - Administrador de Banco de Dados para a Web: pessoa especializada em banco de dados voltados para a Web, seja para o e-commerce (comércio eletrônico), como para os portais e sites de busca. Precisa conhecer as linguagens tanto do lado do servidor, quanto do lado do cliente.

  • CKO - Chief Knowledge Officer: ou seja, Diretor de Conhecimento, pessoa que administra o capital intelectual da empresa. Precisa entender de tecnologia, de internet, intranet, banco de dados e linguagem SQL, deve também conhecer completamente o negócio e o mercado que a empresa atual.

  • Especialista em Conectividade: pessoa que presta serviços em redes corporativas. Deve verificar sistemas que possam ser programados para mudar de rota ao aparecer um defeito na rede.

  • Arquiteto de Interface para Internet Móvel: cria interfaces para web móvel, ou seja, internet para celulares e palms. Há a necessidade de conhecer a fundo o hardware (no caso, os palms e celulares) e as linguagens de programação para esse equipamento, além de estar sempre por dentro das novas tecnologias.

  • Especialista em Recuperação de Desastres: pessoa capaz de colocar tudo de volta no ar, o mais rápido possível, após um ataque de vírus ou de crackers a um site.

  • Caçador de Piratas e Fraudadores: normalmente um ex-cracker, pessoa capaz de encontrar fraudadores e sites piratas. Presta serviços pra empresas de segurança, bancos entre outros orgão em empresas que necessitam de segurança em seus projetos.

  • Programador de TV Interativa: pessoa especializada em integrar conteúdo de internet e comércio eletrônico com programas de TV que sejam divertidos e que prendam a atenção do telespectador.

Tudo em um

Sendo mais objetivo em relação ao profissional (de qualquer área), ele deve ser especialista em um assunto, para se tornar referência naquele assunto. Pode se entender de um bando de coisas, mas quando alguém fala o nome do "tal profissional" no mercado a primeira coisa que vem a cabeça é "Hardware", por exemplo, e não Redes ou Negócios na Internet. Dessa forma, é importante sim ser um especialista em um determinado assunto e focar sua fonte principal de renda e de divulgação nele. As demais áreas pode-se ir explorando com o tempo, ou o que me parece mais sensato: montar uma equipe onde haverá colegas realmente especialistas nos outros assuntos, com quem pode-se passar os clientes e ir acompanhando, até mesmo para aprender mais. Assim, em vez de se concentrar todo o trabalho em uma única pessoa, será distribuído tarefas, permitindo até mesmo conseguir mais clientes e atendê-los de forma mais adequada.


O que está faltando no mercado de trabalho não são técnicos, mas sim técnicos que atendam bem seus clientes, técnicos que estejam preocupados com qualidade e ética. Conseguindo criar essa cultura dentro do negócio e usar isso como diferencial junto aos clientes, rapidamente seus eles irão divulgar os serviços para novos potenciais clientes.

Tomando sempre o cuidado de não cair na armadilha de tentar fazer tudo ao mesmo tempo e não conseguir atender ninguém bem, ou mesmo nem conseguir executar os serviços dentro do prazo. Daí a sugestão de montar uma equipe com especialistas em cada área de atuação do negócio.


Finalmente, não idealize a profissão, procure conhecê-la


Quando era criança, Christian Carbone Matos gostava de construir castelos de areia e ficava encantado com prédios altos. Quando chegou o momento de se inscrever em um curso, a escolha foi óbvia: engenharia civil. Ele entrou na Poli (USP) aos 18 anos, mas, no começo do quarto ano de faculdade, desistiu. Prestou novamente vestibular e hoje, com 25, está no terceiro ano de psicologia.


Assim como aconteceu com ele, é comum que pessoas acreditem que já sabem o "querem ser quando crescer" se decepcionem com o que estão fazendo, ou podem não se adaptar bem a uma determinada da área.

O planejamento de carreira é algo dinâmico que pode ser revisado periodicamente, permitindo mudanças e reformulações. Uma área como a informática onde um tipo de serviço e outro estão tão próximos pode confundir e induz o profissional a fazer uma escolha que futuramente se arrependa, ou simplesmente considere que há outra de maior interesse.

Finalmente faça uma analogia com um vôo. O seu vôo deve ser do tamanho dos seus sonhos, dos seus conhecimentos e da sua determinação; mas sempre é bom ter em mãos um “plano de vôo”, porque é importante saber o destino desejado, as condições de tráfego aéreo e a quantidade de combustível disponível. E por último mas não menos importante, faça o que goste.


Texto em PDF, clique aqui para fazer o download.