Banco de Dados               D6, em homenagem ao Felipe               Simões e ao Mairon Luz ;-)               ... E ao Pa...
Banco de DadosO que são?Em informática, resumidamente, são coleções de informações armazenadas,que relacionadas dão valor ...
Banco de DadosVamos tentar mostrar toda a estrutura que envolve um Banco de Dados eseu desenvolvimento.KISS: Keep It Simpl...
Banco de DadosPrimeiro, retomando nossa definição de Banco de Dados, nos primeiríssimossistemas informatizados (antes da d...
Banco de DadosEm suma, existem várias tecnologias de bancos de dados, cada uma com umacaracterística própria (simples e pe...
Banco de DadosE a seguir uma breve apresentação da linguagem SQL. Ela serve para criar astabelas, as colunas / campos, ins...
Banco de DadosSQL, resumo / palavras - chaveComandos de Criação       Comandos de Controle     Comandos de Transação(DDL) ...
Banco de DadosSQL, resumo / palavras - chaveComandos de Manipulação Comandos de Consulta(DML)                   (DQL)INSER...
Banco de DadosO comando de consulta SELECT é o mais utilizado, nele temos as cláusulas:FROM, WHERE, HAVING, GROUP BY, ORDE...
Banco de DadosPequenos exemplos de comandos SQL:CREATE TABLE Players(    id INT NOT NULL AUTO_INCREMENT,    name VARCHAR (...
Banco de DadosPequenos exemplos de comandos SQL:INSERT INTO Players VALUES (1, ‘Clever Tavares Jr., 1900-08-19,’’);Players...
Banco de DadosPequenos exemplos de comandos SQL:INSERT INTO Players VALUES (3, ‘, 19/08/1900,26667070);Playersid          ...
Banco de DadosPequenos exemplos de comandos SQL:SELECT * FROM Players;Playersid                   name                 bir...
Banco de DadosPequenos exemplos de comandos SQL:SELECT name, birth FROM Players WHERE name LIKE ‘Cleber‘;Playersname      ...
Banco de DadosMas não temos apenas nosso banco de dados no processo. Para este ser acessadoremotamente, via web, precisamo...
Banco de DadosNosso esquema fica assim:                            Cleber @ Tavares Junior .com
Banco de DadosClaro que eu posso ter vários clientes:                                          Cleber @ Tavares Junior .com
Banco de DadosEstes clientes podem gerar uma carga / volume de acesso muito grande de talmodo que eu precise fazer o balan...
Banco de DadosNormalmente a base de dados é compartilhada, mas às vezes não! E é preciso termuito cuidado para manter os d...
Banco de DadosE às vezes, as máquinas / computadores que são responsáveis pela aplicaçãoservidora e os SGBD´s nem são as m...
Banco de DadosTá, então quais tecnologias vamos escolher para nosso exemplo?1- Um computador rodando Windows 7 comum.ATENÇ...
Banco de Dados1- Sobre o sistema operacional, vale ressaltar aqui que uma vez que vocêdesenvolva no Windows, o processo de...
Banco de Dados2- Banco de dados MySQL;http://www.mysql.com/downloads/mysql/Gratuito na versão Community, com código fonte ...
Banco de Dados         Cleber @ Tavares Junior .com
Banco de Dados         Cleber @ Tavares Junior .com
Banco de Dados         Cleber @ Tavares Junior .com
Banco de Dados         Cleber @ Tavares Junior .com
Banco de Dados         Cleber @ Tavares Junior .com
Banco de Dados         Cleber @ Tavares Junior .com
Banco de Dados         Cleber @ Tavares Junior .com
Banco de DadosPodemos testar como acima para saber se tudo está ok.Podemos fazer tudo via linha de comando (cmd).Mas també...
Banco de Dados         Cleber @ Tavares Junior .com
Banco de Dados         Cleber @ Tavares Junior .com
Banco de Dados         Cleber @ Tavares Junior .com
Banco de Dados         Cleber @ Tavares Junior .com
Banco de Dados         Cleber @ Tavares Junior .com
Banco de Dados         Cleber @ Tavares Junior .com
Banco de DadosTemos agora o banco de dados MySQL funcionando com um editor visual noWindows, vamos ao próximo passo:3- A l...
Banco de Dados         Cleber @ Tavares Junior .com
Banco de Dados         Cleber @ Tavares Junior .com
Banco de Dados         Cleber @ Tavares Junior .com
Banco de DadosNão esquecer de na mesma página baixar o Ruby Development Kit, que permitiráinstalar extensões nativas como ...
Banco de DadosNão acabou :-/ Nós ainda precisamos configurar o Ruby para suporte ao MySQL.Para fazer isso, acesse a página...
Banco de Dadoshttp://www.mysql.com/downloads/connector/                                            Cleber @ Tavares Junior...
Banco de DadosATENÇÃO! Os passos acima são os mais problemáticos. Se não conseguir rodar seuservidor, veja solução mais ab...
Banco de DadosLembrando que:“Nada é totalmente fácil ou difícil, esta é a beleza do mundo. Cabe à pessoa julgaras ferramen...
Banco de DadosO comando acima instala as classes sem a documentação, que é demorada…                                      ...
Banco de DadosAproveitando que estamos falando sobre isso tudo, não poderia deixar de chamar aatenção para se verificar se...
Banco de DadosAlternativa para tanta atualização: http://railsftw.bryanbibat.net/MUITO BOM!!!                             ...
Banco de DadosAgora podemos dar o comando para criar nossa aplicação / app rails:Rails new teste –d mysqlCom este comando ...
Banco de Dadoshttp://netbeans.org/downloads/6.9.1                                      Cleber @ Tavares Junior .com
Banco de Dados         Cleber @ Tavares Junior .com
Banco de Dados         Cleber @ Tavares Junior .com
Banco de Dados         Cleber @ Tavares Junior .com
Banco de DadosVeja como o Rails organiza nossos arquivos  (lembrando esta pasta foi importada, nenhum arquivo foi  criado ...
Banco de DadosAs migrations tem a ver com nosso banco de dados, são as mudanças nele ao longodo desenvolvimento de nossa a...
Banco de Dadosrails generate scaffold Player name:string birth:date phone:string                                          ...
Banco de DadosScaffold = arcabouço = migration (mudança no BD) + Model (representação do BDno servidor) + Controller (flux...
Banco de Dados         Cleber @ Tavares Junior .com
Banco de DadosEste é nosso arquivo de configuração do acesso do servidor na base de dados, todatecnologia de servidor tem ...
Banco de Dados         Cleber @ Tavares Junior .com
Banco de DadosUma vez com isso salvo vamos rodar nossa migração:Ok. Vamos rodar nosso servidor e ver isso?Como assim rodar...
Banco de Dadosrails serverRepare que ele está “ouvindo” (atendendo requisições) em http://localhost:3000                  ...
Banco de DadosTcharam! Temos uma página rodando, “Hello World” (antes mesmo da migration)                                 ...
Banco de DadosE olhando direto no SQLyog nossa base de dados, vemos que ela já está com atabela correta (lembre, um comand...
Banco de DadosSe olharmos no NetBeans nossas pastas e arquivos, vemos que temos já controllerse views para Player:        ...
Banco de DadosLembrando que os controllers direcionam o fluxo de nossa aplicação, ou seja, quepágina mostrar. Sabe uma pág...
Banco de DadosRepare que eu estou na verdade mapeando um método de acesso à página dopróprio protocolo http, o GET. O GET ...
Banco de DadosRepare como funciona bem como uma camada de visualização, sem interferir nosdados e podendo ser mudada à von...
Banco de DadosO que temos aqui é aquela lista de @players sendo mostrada. Repare no “for each”.Epa, peraí… eu não escrevi ...
Banco de DadosUau! Eu tenho uma página com uma listagem dos jogadores e um cadastro!1- Vamos ver seu código fonte, o html?...
Banco de Dados         Cleber @ Tavares Junior .com
Banco de DadosRepare que eu tenho um código “limpo” no cliente, com a importação automática dealguns javascripts padrões (...
Banco de DadosRepare que ele não deu erro! Apenas mostrou o XML vazio, afinal, ainda não temosjogadores. Ou recordes, ou i...
Banco de Dados2- Muito bonito, mas a bagaça funciona?Vamos tentar cadastrar um novo jogador:                              ...
Banco de Dados2- Muito bonito, mas a bagaça funciona?Vamos tentar cadastrar um novo jogador:                              ...
Banco de Dados2- Muito bonito, mas a bagaça funciona?Vamos tentar cadastrar um novo jogador:                              ...
Banco de Dados2- Muito bonito, mas a bagaça funciona?Vamos tentar cadastrar um novo jogador:Definitivamente funciona.     ...
Banco de DadosMostrando um pouco de testes:                                Cleber @ Tavares Junior .com
Banco de DadosUma vez com o banco populado, como fica o xml:                                           Cleber @ Tavares Ju...
Banco de DadosDe um player só:                            Cleber @ Tavares Junior .com
Banco de DadosÉ possível ver o dump da database                                    Cleber @ Tavares Junior .com
Banco de DadosNão satisfeito com os testes e a lógica de “negócio”, quer mais facilidade paracriar a aplicação?Lembra no i...
Banco de DadosSe eu tentasse cadastrar em branco antes poderia…                                          Cleber @ Tavares ...
Banco de DadosAgora não mais…                            Ah, as mensagens de erro são                            personali...
Banco de DadosQuais validates exitem?validates :terms_of_service, :acceptance => truevalidates :email, :confirmation => tr...
Banco de DadosRails pode trabalhar com sistemas de arquivos, anexos, o que você quiser, de formafácil, basta usar a imagni...
Banco de DadosUma ótima dica de documentação, não apenas de Ruby ou Rails, mas de dezenas delinguagens e frameworks:      ...
Banco de DadosUma ótima dica de documentação, não apenas de Ruby ou Rails, mas de dezenas delinguagens e frameworks:      ...
Upcoming SlideShare
Loading in …5
×

Seven_Palestra_Banco_Dados_Servidores

529 views
493 views

Published on

Palestra sobre banco de dados e servidores na Seven

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
529
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
16
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Seven_Palestra_Banco_Dados_Servidores

  1. 1. Banco de Dados D6, em homenagem ao Felipe Simões e ao Mairon Luz ;-) ... E ao Paulo Store o/ Cleber @ Tavares Junior .com
  2. 2. Banco de DadosO que são?Em informática, resumidamente, são coleções de informações armazenadas,que relacionadas dão valor de negócio à um sistema / empresa.(Traduzindo em jogos: são o login do jogador e sua senha, seus pontos eníveis de personagem, seu equipamento e suas informaçõe$ de crédito)Dito isto, nós NÃO vamos falar sobre banco de dados...... apenas. Cleber @ Tavares Junior .com
  3. 3. Banco de DadosVamos tentar mostrar toda a estrutura que envolve um Banco de Dados eseu desenvolvimento.KISS: Keep It Simple, Student.Mas existem muito mais coisas escondidas entre seu servidor nas nuvens eseu cliente / jogo no seu computador, Student... Cleber @ Tavares Junior .com
  4. 4. Banco de DadosPrimeiro, retomando nossa definição de Banco de Dados, nos primeiríssimossistemas informatizados (antes da década de 70), estas informações eramguardadas no próprio sistema de arquivos do S.O.E isso gerava uma série de problemas...A partir daí surgiram os SGBD – Sistemas Gerenciadores de Banco deDados. Na década de 80 surgiram os SGBD relacionais, que estão emdomínio até hoje. Ou seja, tabelas. (MySQL, SQLite, PostgreSQL, Oracle$)Em tempos recentes vem surgindo com cada vez mais força os SGBDOrientados à Objetos, ou não-relacionais, com o movimento NoSQL (jávamos falar do SQL), como os MongoDB, CouchDB, e os da Google e Amazon Cleber @ Tavares Junior .com
  5. 5. Banco de DadosEm suma, existem várias tecnologias de bancos de dados, cada uma com umacaracterística própria (simples e pequenos, simples, simples e escalável,robustos e caros), alguns gratuitos, outros pagos por diversos valores... Oprofissional que deseja trabalhar com isso precisa saber avaliar.Para lidar com todas estas diferenças, nos bancos de dados relacionais, foicriada uma linguagem padrão para manipulação das tabelas, a SQL(Structured Query Language, Linguagem de Consulta Estruturada), pelaIBM no início dos anos 70.Esta linguagem, assim como todas as outras linguagens de computador,evolui (estamos no SQL:2003). Infelizmente nem todos os SGBD seguem opadrão da linguagem à risca.Isto é uma típica representação esquemática de um SGBD: Cleber @ Tavares Junior .com
  6. 6. Banco de DadosE a seguir uma breve apresentação da linguagem SQL. Ela serve para criar astabelas, as colunas / campos, inserir os dados, fazer a busca e o relacionamentoentre eles: Cleber @ Tavares Junior .com
  7. 7. Banco de DadosSQL, resumo / palavras - chaveComandos de Criação Comandos de Controle Comandos de Transação(DDL) (DCL) (DTL)CREATE TABLE GRANT ROLLBACKALTER INDEX REVOKEDROP VIEW Cleber @ Tavares Junior .com
  8. 8. Banco de DadosSQL, resumo / palavras - chaveComandos de Manipulação Comandos de Consulta(DML) (DQL)INSERT SELECTSELECTUPDATEDELETECRUD! Cleber @ Tavares Junior .com
  9. 9. Banco de DadosO comando de consulta SELECT é o mais utilizado, nele temos as cláusulas:FROM, WHERE, HAVING, GROUP BY, ORDER BY, DISTINCT, JOINOs operadores lógicos:AND, OR, NOTOs operadores relacionais (muitas características do SQL foram baseadasna álgebra relacional):<, >, <=, >=., =, <>, BETWEEN, LIKE, INAs funções de agregação:AVG, COUNT, SUM, MAX, MIN Cleber @ Tavares Junior .com
  10. 10. Banco de DadosPequenos exemplos de comandos SQL:CREATE TABLE Players( id INT NOT NULL AUTO_INCREMENT, name VARCHAR (60) NOT NULL, birth DATE, phone CHAR (8), PRIMARY KEY (id)) Players id name birth phone Cleber @ Tavares Junior .com
  11. 11. Banco de DadosPequenos exemplos de comandos SQL:INSERT INTO Players VALUES (1, ‘Clever Tavares Jr., 1900-08-19,’’);Playersid name birth phone1 Clever Tavares Jr. 1900-08-19 Cleber @ Tavares Junior .com
  12. 12. Banco de DadosPequenos exemplos de comandos SQL:INSERT INTO Players VALUES (3, ‘, 19/08/1900,26667070);Playersid name birth phone1 Clever Tavares Jr. 1900-08-193 19/08/1900 26667070Precisamos de uma maneira de assegurar que valores inválidos não sejaminseridos! Nossos dados tem que ser consistentes! Cleber @ Tavares Junior .com
  13. 13. Banco de DadosPequenos exemplos de comandos SQL:SELECT * FROM Players;Playersid name birth phone1 Clever Tavares Jr. 1900-08-19SELECT name AS Nick FROM Player;PlayersNickClever Tavares Jr. Cleber @ Tavares Junior .com
  14. 14. Banco de DadosPequenos exemplos de comandos SQL:SELECT name, birth FROM Players WHERE name LIKE ‘Cleber‘;Playersname birthSELECT TOP 5 name, value FROM Points ORDER BY value desc; /*;-)*/Chega! Cleber @ Tavares Junior .com
  15. 15. Banco de DadosMas não temos apenas nosso banco de dados no processo. Para este ser acessadoremotamente, via web, precisamos de uma tecnologia de servidor, algumaaplicação / serviço que fique online o tempo todo provendo esta comunicação.Importante, esta aplicação ou programa, que nós desenvolvemos com linguagens deservidor como C# / Java / PHP / Python / Ruby, deve ser criada seguindo oesquema de implementação MVC, Model-View-Controller, Modelo(Banco)-Visualização(Página, Cliente)-Controlador(Acesso), ou seja, mantendo sua lógica deimplementação independente da camada de visualização e dos dados.A “camada de visualização”, pode ser uma página no navegador do jogador, ou umjogo em Flash no navegador do jogador, ou um jogo no computador do jogador. Éali no cliente que alguns dados devem ser tratados, com tecnologias / linguagensde cliente (html –eu sei-, css, javascript, em Flash, em Unity…), e outros devemvir/ir do/para o servidor, mantendo sempre o balanceamento adequado. Cleber @ Tavares Junior .com
  16. 16. Banco de DadosNosso esquema fica assim: Cleber @ Tavares Junior .com
  17. 17. Banco de DadosClaro que eu posso ter vários clientes: Cleber @ Tavares Junior .com
  18. 18. Banco de DadosEstes clientes podem gerar uma carga / volume de acesso muito grande de talmodo que eu precise fazer o balanceamento / distribuição entre vários servidores Cleber @ Tavares Junior .com
  19. 19. Banco de DadosNormalmente a base de dados é compartilhada, mas às vezes não! E é preciso termuito cuidado para manter os dados coesos / coerentes / sincronizados! Cleber @ Tavares Junior .com
  20. 20. Banco de DadosE às vezes, as máquinas / computadores que são responsáveis pela aplicaçãoservidora e os SGBD´s nem são as mesmas, ou estão no mesmo lugar físico, e simespalhadas pelo mundo onde for mais conveniente.É o conceito “nas nuvens”. Que auxilia na escabilidade do projeto / jogo. Cleber @ Tavares Junior .com
  21. 21. Banco de DadosTá, então quais tecnologias vamos escolher para nosso exemplo?1- Um computador rodando Windows 7 comum.ATENÇÃO! A grande maioria dos servidores é Linux, e boa parte das linguagensde servidor pode ser usada tanto em um quanto no outro (Java, PHP, Python,Ruby, MySQL…)2- O banco de dados MySQL, que é fácil de instalar, configurar e rodar noWindows e é bastante suportado, tendo uma interface gráfica facilitadora.3- A linguagem de programação Ruby e o framework de aplicações web Ruby OnRails, ambos compatíveis com Windows e Linux. Existem muitas páginas famosasque usam Rails, sendo este bastante famoso (Twitter…) e ele tem uma fortecomunidade. Apesar de não ser muito fácil usar em Windows, pode facilitar odesenvolvimento com scaffold… e é diferente ;-)Vamos lá detalhar isso: Cleber @ Tavares Junior .com
  22. 22. Banco de Dados1- Sobre o sistema operacional, vale ressaltar aqui que uma vez que vocêdesenvolva no Windows, o processo de *deploy*, ou colocar em produção /funcionamento em um servidor com Linux, pode ser trabalhoso. Mas os servidoresLinux são mais baratos (e robustos e seguros…). Fica o aviso. Não veremos issoaqui hoje. Cleber @ Tavares Junior .com
  23. 23. Banco de Dados2- Banco de dados MySQL;http://www.mysql.com/downloads/mysql/Gratuito na versão Community, com código fonte se quiser, 30 megas.Esta é a versão mais nova.Você pode experimentarversões mais antigas(5.0 e 5.1) se tiverproblemas decompatibilidade Cleber @ Tavares Junior .com
  24. 24. Banco de Dados Cleber @ Tavares Junior .com
  25. 25. Banco de Dados Cleber @ Tavares Junior .com
  26. 26. Banco de Dados Cleber @ Tavares Junior .com
  27. 27. Banco de Dados Cleber @ Tavares Junior .com
  28. 28. Banco de Dados Cleber @ Tavares Junior .com
  29. 29. Banco de Dados Cleber @ Tavares Junior .com
  30. 30. Banco de Dados Cleber @ Tavares Junior .com
  31. 31. Banco de DadosPodemos testar como acima para saber se tudo está ok.Podemos fazer tudo via linha de comando (cmd).Mas também podemos ter um editor visual para ajudar.Aí entra o SQLyog:http://www.webyog.com/en/http://code.google.com/p/sqlyog/downloads/listVamos fazer o download da versão Community gratuita e instalar. Cleber @ Tavares Junior .com
  32. 32. Banco de Dados Cleber @ Tavares Junior .com
  33. 33. Banco de Dados Cleber @ Tavares Junior .com
  34. 34. Banco de Dados Cleber @ Tavares Junior .com
  35. 35. Banco de Dados Cleber @ Tavares Junior .com
  36. 36. Banco de Dados Cleber @ Tavares Junior .com
  37. 37. Banco de Dados Cleber @ Tavares Junior .com
  38. 38. Banco de DadosTemos agora o banco de dados MySQL funcionando com um editor visual noWindows, vamos ao próximo passo:3- A linguagem de programação Ruby e o framework de aplicações web Ruby OnRails, ambos compatíveis com Windows e Linux e também tendo vários editores.http://rubyinstaller.org/ Cleber @ Tavares Junior .com
  39. 39. Banco de Dados Cleber @ Tavares Junior .com
  40. 40. Banco de Dados Cleber @ Tavares Junior .com
  41. 41. Banco de Dados Cleber @ Tavares Junior .com
  42. 42. Banco de DadosNão esquecer de na mesma página baixar o Ruby Development Kit, que permitiráinstalar extensões nativas como o mysql2!Assim que terminar o download, você deverá extrair os arquivos para o diretório /pasta C:ruby193devkit, que não existe e precisa ser criado.Agora, volte ao terminal. Você precisará instalar o DevKit na instalação atual doRuby. Para isso, digite os comandos: cd C:Ruby193devkit para ir ao diretório que você acabou de extrair. Execute oscomandos:ruby dk.rb init e depois ruby dk.rb install Cleber @ Tavares Junior .com
  43. 43. Banco de DadosNão acabou :-/ Nós ainda precisamos configurar o Ruby para suporte ao MySQL.Para fazer isso, acesse a página de downloads do MySQL e clique no link MySQLConnectors. Precisaremos da versão "Connector/C (libmysql)". Na página dedownload, escolha a opção sem o instalador. Escolha a versão de 32-bits. Isso énecessário porque o Ruby é 32-bits e, mesmo que a instalação do MySQL tenhasido feita em 64-bits, o conector que será usado por ele deve ter a mesmaarquitetura. Extraia os arquivos e copie o arquivo mysql-connector-c-noinstall-6.0.2-win32/lib/libmysql.dll para o diretório C:Ruby193bin. Isso énecessário pois DLLs precisam estar no PATH do Windows e, o diretório bin doRuby no Windows está lá. Cleber @ Tavares Junior .com
  44. 44. Banco de Dadoshttp://www.mysql.com/downloads/connector/ Cleber @ Tavares Junior .com
  45. 45. Banco de DadosATENÇÃO! Os passos acima são os mais problemáticos. Se não conseguir rodar seuservidor, veja solução mais abaixo. Cleber @ Tavares Junior .com
  46. 46. Banco de DadosLembrando que:“Nada é totalmente fácil ou difícil, esta é a beleza do mundo. Cabe à pessoa julgaras ferramentas para alcançar seus objetivos.”A linguagem Ruby junto com o framework para desenvolvimento web Rails tem suasvantagens em relação ao PHP, incluindo um modelo de MVC (já discutido) embutido.Com o até aqui feito, temos esta nova linguagem em nossa máquina habilitada paratrabalhar com MySQL. Mas a linguagem não é tudo. Assim como em C# eu tenho oframework (conjunto de classes) XNA para me facilitar o desenvolvimento dejogos, em AS3 eu tenho a library / biblioteca Box2D para física, em ambienteMobile / Java eu tenho uma série de frameworks (AndEngine, Cactus2D,XNAndroid) para jogos, ou posso usar a engine (grande conjunto de ferramentas)Unity em C# ou Boo, eu preciso de um framework para direcionar meu aplicativo /ranking na web.Este framework se chama Ruby On Rails (Ruby nos trilhos). Vamos instalá-lo. Cleber @ Tavares Junior .com
  47. 47. Banco de DadosO comando acima instala as classes sem a documentação, que é demorada… Cleber @ Tavares Junior .com
  48. 48. Banco de DadosAproveitando que estamos falando sobre isso tudo, não poderia deixar de chamar aatenção para se verificar se está instalado na máquina também um sistema decontrole de versão. Isto é importantíssimo em qualquer desenvolvimento desistemas ou jogos. Sugiro o TortoiseSVN, e aos mais corajosos o Git, que já temversão estável para Windows. (TortoiseGIT…) Mas foge ao escopo deste trabalhofalar sobre isso agora.Vamos atualizar coisas que o rails precisa para criar uma app (bundle…):gem updategem install rake –v 0.9.2.2gem install coffee-script-source -v 1.3.3gem install execjs -v 1.4.0gem install coffee-script -v 2.2.0gem install coffee-rails -v 3.2.2gem install jquery-rails -v 2.0.2gem install mysql2 -v 0.3.11gem install sass –v 3.1.20gem install sass-rails -v 3.2.5gem install uglifier -v 1.2.6 Cleber @ Tavares Junior .com
  49. 49. Banco de DadosAlternativa para tanta atualização: http://railsftw.bryanbibat.net/MUITO BOM!!! Cleber @ Tavares Junior .com
  50. 50. Banco de DadosAgora podemos dar o comando para criar nossa aplicação / app rails:Rails new teste –d mysqlCom este comando (que deve ser dado em um diretório adequado) criamos umsubdiretório chamado teste, onde se cria toda a estrutura (quq já vamos ver) doRails, usando um banco de dados mysql (sqlite é o padrão)Mas espere! E para editar os arquivos? Vamos ficar na linha de comando o tempotodo? Não… Existem muitos editores (a.k.a. Flash IDE, Flash Develop, VisualStudio, Eclipse, Mono Develop) que você pode usar para Rails, que reconhecem asintaxe do Ruby, desde gratuitos até pagos de diversos valores. Sugestões temoso Notepad++, Redcar, Scite, gEdit… o próprio Eclipse…Mas vamos ficar de NetBeans. Mesmo com os problemas dele… (peso e obsolência) Cleber @ Tavares Junior .com
  51. 51. Banco de Dadoshttp://netbeans.org/downloads/6.9.1 Cleber @ Tavares Junior .com
  52. 52. Banco de Dados Cleber @ Tavares Junior .com
  53. 53. Banco de Dados Cleber @ Tavares Junior .com
  54. 54. Banco de Dados Cleber @ Tavares Junior .com
  55. 55. Banco de DadosVeja como o Rails organiza nossos arquivos (lembrando esta pasta foi importada, nenhum arquivo foi criado pelo NetBeans) Lembra do conceito de MVC para melhorar nossa lógica do servidor? Model-View-Controller? Repare que temos uma pasta de Models (para os modelos que representam justo a base de dados) Uma pasta de Views, para as visualizações/layouts E uma pasta de Controllers/lógica Além disso uma pasta com Helpers/Auxiliares, um enviador de email, Confidurações, pasta Pública, Logs de servidor, arquivos de teste e documentação (Rails te orienta a fazer os testes de lógica de servidor!), bibliotecas e… migrations! Cleber @ Tavares Junior .com
  56. 56. Banco de DadosAs migrations tem a ver com nosso banco de dados, são as mudanças nele ao longodo desenvolvimento de nossa aplicação. Pense na importância disso. Se seu bancode dados não corresponder à lógica da sua aplicação (controllers / views), vocêcorre o risco de tentar exibir algo que não existe (erro na certa) ou de guardarinformações desnecessárias (desperdício). Coerência.“Uma página é uma exibição de um banco de dados”, controverso… especialmenteem jogos.As migrations e o models nos “protegem” de ter que lidar com a linguagem SQLdiretamente…Vamos gerar no nosso banco / página as informações anteriores de Player (o inglêsé quase necessário para programar web / sistemas / rails / páginas…) Cleber @ Tavares Junior .com
  57. 57. Banco de Dadosrails generate scaffold Player name:string birth:date phone:string Cleber @ Tavares Junior .com
  58. 58. Banco de DadosScaffold = arcabouço = migration (mudança no BD) + Model (representação do BDno servidor) + Controller (fluxo de telas) + View (exibição), tudo junto.Vamos colocar nossa aplicação nesta versão: Migrar o Banco de DadosOpa, fomos negados! Que houve? Não conseguimos acesso aoBanco de Dados.Vamos editar nosso arquivo de configuração no NetBeans. Cleber @ Tavares Junior .com
  59. 59. Banco de Dados Cleber @ Tavares Junior .com
  60. 60. Banco de DadosEste é nosso arquivo de configuração do acesso do servidor na base de dados, todatecnologia de servidor tem essa configuração. Repare que Rails nos dáautomaticamente 3 tabelas (que devem ser criadas), chamadas por padrão denome_development, nome_teste, nome_production, com configurações separadaspara cada uma. Tudo para orientar o bom desenvolvimento!Vamos configurar a tabela de desenvolvimento: Cleber @ Tavares Junior .com
  61. 61. Banco de Dados Cleber @ Tavares Junior .com
  62. 62. Banco de DadosUma vez com isso salvo vamos rodar nossa migração:Ok. Vamos rodar nosso servidor e ver isso?Como assim rodar o servidor? Ah, não contei? Quando você faz o código, precisade algo para executá-lo. Um Apache Server da vida, vai ler seu código e atender àsrequisições de página.Sorte nossa que o Rails vem com um servidor embutido, o WEBrick, basta chamá-loassim: (ah, e podemos depois mudar de servidor se quisermos, inclusive paraApache) Cleber @ Tavares Junior .com
  63. 63. Banco de Dadosrails serverRepare que ele está “ouvindo” (atendendo requisições) em http://localhost:3000 Cleber @ Tavares Junior .com
  64. 64. Banco de DadosTcharam! Temos uma página rodando, “Hello World” (antes mesmo da migration) Cleber @ Tavares Junior .com
  65. 65. Banco de DadosE olhando direto no SQLyog nossa base de dados, vemos que ela já está com atabela correta (lembre, um comando para gerar os arquivos e outro para migrar) Cleber @ Tavares Junior .com
  66. 66. Banco de DadosSe olharmos no NetBeans nossas pastas e arquivos, vemos que temos já controllerse views para Player: Cleber @ Tavares Junior .com
  67. 67. Banco de DadosLembrando que os controllers direcionam o fluxo de nossa aplicação, ou seja, quepágina mostrar. Sabe uma página “index”? Pois é, olha lá o método de resposta àela ali…E começamos aqui a ver um pouco mais de perto a linguagem Ruby. Não é tãodifícil, é? AS funções/métodos são defs, com end no final (parece Basic). O@players é um conjunto de players… sim, instâncias de uma classe.Conhece o RPG Maker? Sabe sua linguagem de programação? RGSS? Ruby GameScript System! Isso aí! São a mesma. Cleber @ Tavares Junior .com
  68. 68. Banco de DadosRepare que eu estou na verdade mapeando um método de acesso à página dopróprio protocolo http, o GET. O GET sem número em um controller lê todos osobjeots correspondentes, o GET/numero retorna o objeto com aquele id, assimcomo os métodos POST, PUT e DELETE estão mapeados… isso se chama REST e éuma técnica muito eficiente.Em Rails, não saia dos “trilhos”. Mantenha seus nomes corretos e tudo fará sentidoe funcionará automaticamente. Esta é a filosofia do framework.Vamos “olhar” a view? Cleber @ Tavares Junior .com
  69. 69. Banco de DadosRepare como funciona bem como uma camada de visualização, sem interferir nosdados e podendo ser mudada à vontade. Inclusive traduzida, sem mudar a base. Cleber @ Tavares Junior .com
  70. 70. Banco de DadosO que temos aqui é aquela lista de @players sendo mostrada. Repare no “for each”.Epa, peraí… eu não escrevi código nenhum, será que eu já posso ver isso? Hum… Cleber @ Tavares Junior .com
  71. 71. Banco de DadosUau! Eu tenho uma página com uma listagem dos jogadores e um cadastro!1- Vamos ver seu código fonte, o html? Cleber @ Tavares Junior .com
  72. 72. Banco de Dados Cleber @ Tavares Junior .com
  73. 73. Banco de DadosRepare que eu tenho um código “limpo” no cliente, com a importação automática dealguns javascripts padrões (posso alterar), alguns metanames padrões (tambémposso alterar) e a tabela com um link para criar um novo jogador.É assim que funciona uma tecnologia de servidor. Gera uma página ou informaçãodinâmica e “cospe” ela para quem pedir. (perdão pelo termo, culpa do Carlos)Voltando ao controller, ele responde à requisições html e também… xml! Comoisso? Vamos acessar a mesma coisa, uma listagem dos jogadores, mas em xml: Cleber @ Tavares Junior .com
  74. 74. Banco de DadosRepare que ele não deu erro! Apenas mostrou o XML vazio, afinal, ainda não temosjogadores. Ou recordes, ou imagens, o que seja. Mas se tivéssemos estaria ali, semnenhum esforço! Qual a importância disso? Se tivéssemos acessando estasinformações pela página, mostramos o html. Mas se tivéssemos nosso cliente emUnity ou XNA ou Flash para mostrar a lsita de jogadores, por exemplo, qual amelhor maneira de fazer isso? XML! Cleber @ Tavares Junior .com
  75. 75. Banco de Dados2- Muito bonito, mas a bagaça funciona?Vamos tentar cadastrar um novo jogador: Cleber @ Tavares Junior .com
  76. 76. Banco de Dados2- Muito bonito, mas a bagaça funciona?Vamos tentar cadastrar um novo jogador: Cleber @ Tavares Junior .com
  77. 77. Banco de Dados2- Muito bonito, mas a bagaça funciona?Vamos tentar cadastrar um novo jogador: Cleber @ Tavares Junior .com
  78. 78. Banco de Dados2- Muito bonito, mas a bagaça funciona?Vamos tentar cadastrar um novo jogador:Definitivamente funciona. Cleber @ Tavares Junior .com
  79. 79. Banco de DadosMostrando um pouco de testes: Cleber @ Tavares Junior .com
  80. 80. Banco de DadosUma vez com o banco populado, como fica o xml: Cleber @ Tavares Junior .com
  81. 81. Banco de DadosDe um player só: Cleber @ Tavares Junior .com
  82. 82. Banco de DadosÉ possível ver o dump da database Cleber @ Tavares Junior .com
  83. 83. Banco de DadosNão satisfeito com os testes e a lógica de “negócio”, quer mais facilidade paracriar a aplicação?Lembra no início que nossa tabela tinha o nome do jogador como campoobrigatório? Pois é, vamos ao model do player (nosso correspondente da tabela)resolver isso:Estava assim:Ficou assim: Só isso… vamos à página… Cleber @ Tavares Junior .com
  84. 84. Banco de DadosSe eu tentasse cadastrar em branco antes poderia… Cleber @ Tavares Junior .com
  85. 85. Banco de DadosAgora não mais… Ah, as mensagens de erro são personalizáveis. Cleber @ Tavares Junior .com
  86. 86. Banco de DadosQuais validates exitem?validates :terms_of_service, :acceptance => truevalidates :email, :confirmation => truevalidates :email_confirmation, :presence => truevalidates :legacy_code, :format => { :with => /A[a-zA-Z]+z/, # expressões regulares :message => "Only letters allowed" }validates :name, :length => { :minimum => 2 }validates :bio, :length => { :maximum => 500 }validates :password, :length => { :in => 6..20 }validates :registration_number, :length => { :is => 6 }validates :email, :uniqueness => truehas_many :posts, :dependent => :destroyhas_one :image Cleber @ Tavares Junior .com
  87. 87. Banco de DadosRails pode trabalhar com sistemas de arquivos, anexos, o que você quiser, de formafácil, basta usar a imagninação e a pesquisa ;-)Usanod os validates corretos você consegue montar os relacionamentos entre osmodelos, e a busca de informações. Cleber @ Tavares Junior .com
  88. 88. Banco de DadosUma ótima dica de documentação, não apenas de Ruby ou Rails, mas de dezenas delinguagens e frameworks: Cleber @ Tavares Junior .com
  89. 89. Banco de DadosUma ótima dica de documentação, não apenas de Ruby ou Rails, mas de dezenas delinguagens e frameworks: Cleber @ Tavares Junior .com

×