Impressões sobre o exame 70-463: Implementing a Data Warehouse with Microsoft SQL Server 2012

Nova seção de scripts!

Boa noite,

Fechando a trilogia MCSA, posto aqui minhas impressões sobre o assunto:

Opinião geral

Consegui aprovação no último exame da trilogia MCSA SQL Server 2012, que é a prova de “BI” , onde seus conhecimentos sobre ETL (principalmente) e Data Quality serão avaliados. A impressão que tive do exame, é que a MS testou um profissional que trabalha ostensivamente com SSIS, usando boa parte dos recursos disponíveis na ferramenta Data Tools. Um pouco de MDS  e DQS também, mas SSIS principalmente.

Sinceramente… Eu já li em vários lugares sobre a decisão da MS de incluir um exame de BI pra MCSA e na teoria é interessante, o profissional fica mais generalista no sentido de lidar com quase toda a plataforma SQL Server principalmente o BI da Microsoft que sofre um pouco de preconceito, mas….na prática, eu atualmente não mexo com SSIS e foi legal aprender uns truques novos (e reforçar uns velhos) mas, na boa, achei bola fora por parte da MS tirar o foco dos tios que trabalham com DEV e ADM, pra estudar como se depura um pacote, loga execuções ou configurar o DQS. O assunto é legal, mas definitivamente não devia ser obrigatório.

Opinião sobre o exame

Foram 79 questões, muitas delas cansativas pois falar de SSIS de modo textual. Teve uma quantidade boa de questões de clicar em interface, de arrastar a task correta pra criar um ETL, tais questões foram bem legais, e acredito que poderiam ter sido aplicado em maior quantidade.

Passei dificuldades por não fazer deploy de pacotes e nem logging ao longo da vida de ETL e sofri bastante com várias destas questões textuais.

Achei a prova difícil, pois o que sei de BI/ETL foi algum tempo trabalhando com o BIDS e um pouco de estudo. Inclusive passei por pouco =p

Pra material de estudo, usei o Training Kit (70-463) cobre muito bem a prova e o Introducing SQL Server 2012, a parte que fala  de DQS e de SSIS é sensacional. Esse livro me ajudou mais que o próprio Training, já que DQS é uma novidade do 2012  e tem um capítulo só pra isso e a parte de deploy de SSIS é bem explicada neste livro. Sem contar que o livro é Free, você pode conferi-lo aqui. Aliás, recomendo esse livro também pra 70-462 (cobre muito bem as novidades).

Sobre o exame

Falar um pouco sobre o que lembro (e posso passar por aqui):

Design and implement a data warehouse

As questões mais legais da prova e a única parte que fui bem, hehe:

A visão que a MS tem sobre BI é importante em várias questões de design;

Columnstore Index: Saber quantos você pode criar por tabela, suas restrições (no 2012!!!) e como criar da melhor forma (ocupando menos espaço…);

– Conceitos de Slow Changing Dimension voltando ao banco (estrutura) com SSIS (Tipos 1, 2 e 3)

– Conceito de FK na tabela Fato é cobrada em algumas questões;

Extract and transform data +  (Load Data)

Tasks que caem na prova (control e data flow): Fuzzy Lookup, Derived Column, Merge, Merge Join, Union All, Sort (atenção), Script Tasks e Expressions Tasks. Dê uma olhada que cai na certa.

– Paralelismo ao rodar pacote de carga se baseando em um modelo Snow Flake (essa questão é bem legal);

– Fluxos de erro e event handler são de importância extrema;

– Task de Container aqui vale ouro. Dê uma olhada no que ela realmente pode fazer em critérios de organização e seu uso + EventHandler;

– Surpresinha: Cai uma questão de MERGE no T-SQL. Cai também de tasks Merge, Merge ALL e Union ALL. Mas eu tô dizendo é sobre o MERGE em T-SQL mesmo.

Configure and deploy SSIS Solutions

A maioria das questões é drag in drop ou de múltipla resposta:

– Estude logging, com carinho. Todas as configurações, todas as formas possíveis de log. Inclusive usando SSIS catalog;

– O conceito de SSIS Catalog, variáveis e parâmetros é fundamental e isso é essencial pra passar na prova;

– Falando em SSIS Catalog, dê uma olhada nas views mais importantes;

– Saiba onde os pacotes .dtsx podem ser implantados (TODOS os meios de armazenamento, desde file system até SSISDB);

Build Data Quality Solutions

Parte surpresa da prova! Caiu muito sobre MDS, inclusive plugins de Excel, assim como caiu algumas questões sobre como configura-se o Data Quality Server e Client (saber os pré-requisitos é fundamental em várias questões). Saber sobre as roles do DQS é importante também.

—-

Conclusão + Offtopic

É isso. Feliz por ter passado no exame porque queria estudar ADM de novo e o ETL não tava deixando. Pensa na felicidade!  Agora, vou estudar o que gosto (e quero) e blogar um pouco mais que o normal (pois, finalmente, não estou focado em um exame em específico). Uma felicidade, também particular, foi de saber que o tempo dedicado aos estudos (e uns finais de semana com ssms) deu certo! Aprendi muita coisa desde que comecei a estudar pra certificações, e, de novo, recomendo que seu principal foco seja para aprendizado.

Next Step: MCSE, os dois exames (Design e Developing). Mas até lá, tenho outros objetivos. Tem uns livros de SQL Server aí no meio, além de muito estudo e laboratório (fora uns projetos meio doidos que eu tô tendo, talvez dê certo, só o futuro dirá). Enfim, me preparar por mais tempo o/

Roles do SQL Server – Bulkadmin

Cavaleiros

Bom dia. Continuando a série sobre Roles, atualmente falando sobre as Fixed Server Roles, vamos falar um pouco sobre o Bulk Admin. O artigo ficou um pouco extenso devido aos exemplos, que achei interessante aplicar pra fixar a informação passada.

O que é  o Bulkadmin?

O que o BOL (Books Online) diz sobre a role:

Members of the bulkadmin fixed server role can run the BULK INSERT statement.

Em português simples traduzido no popular:

Membros da função fixa bulkadmin podem executar comandos BULK INSERT

Sem muito segredo. Significa que ele pode rodar comandos BULK INSERT.

Por definição, BULK INSERT permite a inserção de arquivos que contenham dados externos ao SQL Server. Com o intuito de reforçar a segurança, o SQL Server insiste que não basta apenas ter insert na tabela, para inserir arquivos externos, é necessário ter permissão exclusiva pra tal. Aqui entra uma observação importante: ter permissão de BULK INSERT não significa que o login ciclano pode realizar inserção de arquivos externos onde quiser: ele ainda precisa da permissão de INSERT nas tabelas normalmente. No final das contas, figurativamente falando, o usuário precisa de Permissão pra Inserir + Permissão pra Inserir arquivos externos.

Aplicação

É uma permissão interessante e necessária apenas para o uso do comando BULK INSERT e mais nada. Para cargas de ETL que usam arquivos externo, por exemplo, é uma situação recorrente e que demanda o uso da permissão, geralmente para uma conta de aplicação. Fora o Bulkadmin, a única permissão que pode realizar este tipo de inserção externa é o sysadmin (que tem permissão total na instância).

Testes

Vamos ver na prática como funciona?

Primeiramente, vamos ver o que a role pode fazer:

Retorna: “O bulkadmin pode fazer BULK INSERT e  Conceder privilégio de BulkAdmin”

OBS: Os testes foram feitos em uma instância local.

1) Crie um arquivo de texto com o seguinte conteúdo:

1,BULKADMIN,Pode realizar comandos BULK INSERT
2,BULKADMIN,Pode propagar a role de BULK INSERT para outros logins

2) Salve o arquivo em C:tempcarga.txt. Esse é o tal do arquivo externo que vamos usar nos nossos testes.

3) Logue em uma instância na qual você possa testar. Use um login com permissão sysadmin para tal.

4) Vamos criar a estrutura para testes

5) Agora vamos criar os logins/usuários para as bases. Atenção aos comentários dos scripts abaixo:

Pronto! Chegamos onde queríamos chegar. Agora, vamos testar os logins! Se você tiver experiência para usar impersonação, fique a vontade para usar EXECUTE AS LOGIN. Porém, em nosso teste, vamos logar com o usuário via ssms mesmo. Alguns detalhes pra evitar ter que fazer troubleshooting:

a) Verifique se o modo de autenticação está como misto (mixed mode)

b) Verifique se o caminho do arquivo está no mesmo servidor  que a instância.

Simbora 🙂

6) Logue com o login CarinhaDoInsert via Management Studio. Execute o seguinte comando:

Primeiro insert funciona, pois ele tem permissão para tal. Mas e o bulk insert?

Uma mensagem vermelha vai emergir sobre as profundezas da engine do SQL Server, direto da sua máquina.

Msg 4834, Level 16, State 4, Line 7

You do not have permission to use the bulk load statement.

Erro extremamente óbvio. “Você não tem permissão pra usar comandos de carregamento BULK.

Agora vamos ver o outro lado da moeda… Quem realmente tem permissão.

7) Logue com o login CarinhaBulkAdmin via Management Studio. Execute o seguinte comando:

Sinta a surpresa (só que não):

Msg 229, Level 14, State 5, Line 1
The INSERT permission was denied on the object ‘Roles’, database ‘RoleTest’, schema ‘dbo’.

Ok. Mas ele tem permissão de realizar um BULK INSERT, então, se ele não tem permissão de INSERT, ah, de BULK tem que ter…certo? Certo? Are you sure?

Adivinha qual mensagem aparece?

Msg 229, Level 14, State 5, Line 6

The INSERT permission was denied on the object ‘Roles’, database ‘RoleTest’, schema ‘dbo’.

Note que independente do comando, ele acusou falta de permissão de INSERT. Simples assim…

Logue como sysadmin novamente e conceda a seguinte permissão:

Agora sim, o BulkAdmin vai conseguir realizar tanto o BulkInsert como o Insert normal.  O exemplo ficou longo (e óbvio pra muitas pessoas) mas agora creio que deu como comprovar de fato pra o BULK INSERT e permissionamento na prática. Ainda logado como CarinhaBulkAdmin, vamos fazer o último teste

8) Lembram lá no começo que qualquer membro de uma server role pode passar permissões (da mesma role) para outro login? Então, vamos ver isso na prática:

Pronto. Agora o CarinhaDoInsert também é bulkadmin. Outro exemplo do porquê se deve ter bastante cuidado ao concender roles de servidor… Não vou entrar em detalhes aqui, mas imagine no milagre da multiplicação…

Bônus/curiosidade:  Não falei ainda sobre o DbOwner, que é uma role de banco, mas aqui vai uma curiosidade interessante: o dbOwner ele tem privilégios extremos no banco de dados na qual ele é dono. Ele pode fazer qualquer coisa praticamente em sua base. Note que eu disse “praticamente”. O BULK LOAD é considerado algo tão importante na parte de segurança que ainda assim, o dbowner precisaria ter explicitamente bulkadmin pra poder usar o bulk insert, pois caso tente uma operação deste tipo sem devida permissão, ocorrerá um erro (e olha que ele é dono da base).

Considerações finais

Pra reforçar o entendimento, sugiro ler novamente [Aplicação], tópico escrito acima. Finish!

É isso. Estou estudando para exames (70-463) então pode demorar um pouco para os post sairem. Mas saem. Dbcreator ficaria pra esse post mas infelizmente não deu tempo. Prometo. Em paralelo, posso prometer que vem um pouco de BI e SSIS por aí (assunto que estou estudando).

Qualquer dúvida, sugestão, etc, entre em contato.

[]’s

Script – Informações do Tamanho das Bases

Espaço em Disco Olá, O codigo a seguir tem a finalidade de capturar o tamanho atual das bases (levando em conta apenas os arquivos de dado). Uma ótima utilidade para o script é persistir essas informações em um repositório pra depois fazer outras análises (Capacity Plan, por exemplo), por isso adicionalmente, existe um campo de data na saída da variável. Segue script:

Exemplo de saída

: espacoBranco

Roles do SQL Server – Vida e Obra

s12

(Esse artigo faz parte da série Roles do SQL Server – Vida e Obra)

Bom dia!

Este post inicia o começo de uma série sobre as Server-roles:  Roles no SQL Server.

Entendo que é um assunto importante tanto pra DBA’s (essencial aqui) quanto pra Desenvolvedores, que por vezes que precisam gerenciar o SQL Server por motivo ou outro.

1 – Básico sobre Segurança

Tem um artigo legal do Laurentiu que trata dos aspectos básicos de segurança no SQL Server. Em resumo:

  • Existem dois escopos principais no SQL Server quando o assunto é segurança: Server (Instância) e Databases (Bancos de Dados);
  • Logins são relacionados à Instância (Server) e Usuários, aos bancos de dados;
  • Cada login é um principal. Principal é tudo aquilo que pode sofrer uma ação chamada permissionamento;
  • Existem “principals” que possuem permissões já pré-definidas, embora você também possa criá-los. Tais principals são chamados de Role (Papel, função)

Mas…o que é uma role?

2- Roles: Analogia 

Maria Queren é uma analista de sistemas pela manhã, trabalhando em uma multinacional. De tarde, ela vai para sua empresa, onde é dona, a fim de tomar decisões gerenciais. No final da tarde, vai para o curso de inglês, onde é aluna. De noite, vai pra casa, onde é esposa e mãe. Nos finais de semana, passa o tempo na casa dos pais.

Notou o que seriam “roles”? Observe a variedade de papéis que a Maria possui. Analistas de Sistema, proprietária de negócio, estudante, mãe, esposa, filha… Cada papel deste traz uma série de poderes e possui uma determinada atuação em determinado contexto (ambiente). Maria pode dar gerenciar pessoas em sua empresa, mas não na instituição onde tem curso de inglês.

3 – Voltando ao SQL Server

Então, o SQL Server possui também alguns papéis de servidor, tanto em contexto de servidor como em contexto de banco de dados. É importante associar o contexto de servidor aos logins (autenticação) do que usuários (estes estão no escopo de banco de dados).  Cada papel possui uma série de privilégios, e garante ao principal associado X permissões. No caso em específico do assunto atual, que são roles de servidor, garante algumas permissões à nível de instância.

4-   Mas o que são mesmo Server Roles?

Se dividem em duas categorias: Fixed Server Roles (Leia-se Funções fixas, pré-definidas) e as Custom Server Roles (referenciadas oficialmente como User Defined Server Roles, que é uma novidade trazida pelo SQL Server 2012). Vamos começar da raíz, conhecendo cada uma das roles fixas.

As nove Roles Fixas de Servidor, linkadas neste tópico, são:

5 – Mas porque falar sobre Server Roles em outros posts? “Faz um resumão aê”

Pode parecer simples resumir poucas linhas sobre cada role acima (como é comumente visto pela internet). Porém, algumas roles são  extremamente peculiares, pois, possuem mais privilégios do que se comumente acredita que tenham e é difícil fixar isso sem teste. Algumas são irrelevantes no dia de hoje (em linhas gerais), outras fáceis de entender e outras bastante delicadas e que escondem um canhão (por exemplo, dbcreator) se mal utilizados.

Nas próximas postagens, vou seguir a ordem da lista acima e conversamos sobre as roles bulkadmin e dbcreator.
De antemão, caso tenha alguma pergunta ou queira dar uma sugestão sobre o assunto (e quiser fazer perguntas sobre as roles), não hesite em comentar ou entrar em contato. Todo e qualquer feedback é bem vindo, ok?

[]’s

SQL Saturday #253 – Sessões publicadas, ajude o planejamento

Chamado No.2 do Sat

Bom dia pessoal,

Recentemente fiz um post sobre o SQL Saturday #253, e hoje recebi um e-mail sobre o evento.

Replicando o comunicado adicionando imagens de guia:

—————————————————————————————————–

Em poucos dias teremos o SQL Saturday #253 em Brasília! Dia 28/09/2013 estaremos juntos para um grande evento de SQL Server, grande mesmo, no momento temos mais de 560 pessoas entre confirmados e lista de espera.

Abaixo mais informações sobre o evento:

  • A programação completa do SQLSat #253 está no ar: http://sqlsaturday.com/253/schedule.aspx

Imagem

Imagem

  • Esta informação é importante, pois nos ajuda a entender a distribuição entre as sessões.
  • Se sua empresa tem interesse em patrocinar o evento, ainda há tempo, entre em contato com luciano.moreira@srnimbus.com.br

IMPORTANTE: Se por algum motivo você não vai poder participar do evento, faça o cancelamento da sua inscrição (http://sqlsaturday.com/253/changestatusrequest.aspx). Isso vai possibilitar que outros participem do evento.

Atenciosamente,
Luciano Moreira – SQLSat #253
———————————————————————————————————————-
É isso. Maiores novidades serão postadas aqui quando sair.
[]’s

Impressões sobre o exame 70-462: Administering SQL Server 2012 Databases

Exame 70-462

Boa tarde!

Feliz por ter tido êxito no exame 70-462 da Microsoft, segundo capítulo da trilogia de certificações rumo ao MCSA. De cara devo dizer que foi uma prova, no mínimo, emocionante.

Preparação

Os estudos anteriores me ajudaram bastante (muito, mesmo), principalmente  do 70-432. A experiência do dia a dia foi fundamental pra acertar algumas questões, principalmente de backup. Estudei novamente me baseando no Training Kit (Material Oficial do exame) assim como o Prep-kit que vem junto pra revisão (que é bem legal). O guia de todo o momento foi novamente o Skills Measured.

Impressões Gerais

Setenta questões. SETENTA. Duas horas (fiz em inglês, o tempo então é maior que em pt-br). Faltando nove minutos consegui finalizar a prova.  Por isso disse que foi emocionante. Nem deu tempo de revisar praticamente. Achei a prova com uma dificuldade interessante (ela está um meio termo entre a 70-432 e 70-450, comparativamente falando, na minha opinião) .

Assuntos que caíram

  •  Bastante sobre Recovery Model e Backup/Restore. Saiba as limitações de cada um e as possibilidades de restauração. Foi o assunto mais recorrente no exame inteiro, inclusive quando se falava de migração (por consequência). Foram questões bem interessantes, embora discorde fortemente de duas delas que continham mais de uma resposta (uma que tinha mais de um modelo de recuperação).
  • Migração caiu em peso. Algumas perguntas sobre como adaptar uma base SQL Server 2005/2008 para 2012. Atenção para alguns termos caso não esteja habituado: Side-by-side e In-Place;
  • Alta Disponibilidade vai cair ao rodo. Leia (e pratique!) sobre Always On, Failover Cluster e saiba o que cada tipo de replicação faz, vantagens e desvantagens. As configurações das réplicas no Always On (preferência de backups, leitura…) marcam presença;
  • Entender um pouco de RAID (principalmente 0,1,5 e 10)  e como mensurar IO é algo que ajudará com certeza;
  • Outras tecnologias: Algumas questões sobre  SQL Azure, SSRS (uma envolvendo permissionamento) e duas de SSIS;
  • Atualização: Saber qual o melhor procedimento para atualizar nodes e instâncias em mirror garante algumas questões;
  • Contained Database: Algumas questões. Saber quais os modos de habilitar e como se autenticar foi o suficiente para estas questões;
  • Menor privilégio possível. GRANT, DENY e REVOKE. Umas três questões e todas elas tranquilas, mas com alguns peguinhas. Sabendo da prevalência do DENY, fica mais fácil… Server Roles cairam também, e algumas questões sobre Server Roles customizadas;

Tem muito mais coisas, porém algumas não me lembro e outras, de tão intuitivas, não posso dizer pra não quebrar o sigilo do exame (NDA).

E agora?

Vou estudar logo o Training Kit 70-463 (BI) e sofrer um pouquinho estudando algo que não uso atualmente 😀

Claro, é necessário conhecer mais sobre a suíte SQL Server no geral e nenhum conhecimento é perdido. Estranhamente estou animado Deve ser porque eu gosto do SSIS e na minha mente ingênua penso que maior parte da prova será sobre isso (rindo).

Em compensação, estou lendo um livro de Administração também, então, vai rolar uma concorrência aí.

Vigilância nos estudos: validar informação é fundamental

Web

Boa tarde.
Queria ter postado isso antes (na época que estava estudando pra 70-461) mas acabei esquecendo, hehe.

Bem, a lição de hoje é:

Preste bem atenção na sua fonte de estudo e não confie sem validar.

Sendo óbvio e redundante, convenhamos  que o ser humano erra, pois não é perfeito. Quem nunca errou que atire a primeira transação.

Mas enfim, o que ia postar na época era esta questão que veio junto com o prep-kit do Training Kit 70-461 (Microsoft SQL Server 2012 Querying).

Clique na imagem para melhor visualização, por gentileza:

Observe

Resumindo…

SCRIPT de CREATE de duas tabelas.

Uma procedure.

A procedure supostamente tem como objetivo inserir os dados de uma tabela em outra.

Sabe qual é a opção correta para fazer o script inserir sem nenhum problema os dados da Tabela A pra B?

Nenhuma

A resposta

Explicando melhor, é possível ver qual seria a resposta do simulado detalhando em um botão.

Não vamos entrar no mérito do assunto IDENTITY (porque o assunto merecia mais algum texto) , então decidi deixar aqui a resposta oficial do Prep-kit (destacada de amarelo) e um questionamento destacado de vermelho.

ping

A resposta proposta parece estar correta, se levarmos em conta a ordem das colunas e apenas isso. Mas, vale lembrar que ambas as tabelas possuem o campo orderid como identity…  Tentar inserir valores explicitamente sem o uso de um SET apropriado para isso (como por exemplo, o SET IDENTITY_INSERT ) dará erro, e infelizmente tal configuração sequer foi mencionada na questão, então podemos desconsiderá-la. Portanto, no mundo sem treino, da teoria, a alternativa C estaria correta. No mundo real, não, inclusive é um erro bem recorrente em projetos de ETL inserções invalidas deste tipo.

Mas o que você quer dizer com isso tudo?

Que não importa a fonte, valide informações técnicas, testando e lendo de outras fontes.

E por mais que a fonte possa parecer impecável, erros podem acontecer. Note que a questão veio do Training Kit. É o material oficial de preparatório para o exame. E deixando claro aqui, é um bom material em linhas gerais, não venho aqui no artigo reclamar do mesmo. A minha intenção foi outra (de alertar sobre a validação de informação) e transmitir uma informação incorreta (ou questionável) é um ato passível pra qualquer ser humano (inclusive, se eu tiver passado algo assim, me alertem sem dó).

Resumindo, não confie em ninguém (recomendação de leitura fortíssima).

Teste. Valide SEMPRE.  Seja curioso. Repita alguns testes pra aumentar a certeza.

Pode parecer besteira, mas este tipo de cilada em exames de certificação significa alguns pontos perdidos, e na vida real, pode significar alguns minutos perdidos enfrentando troubleshootings de qualquer tipo pra depois falar “pô mas eu não tinha entendido assim”.  E isso é uma realidade bem palpável.

Fique à vontade para comentar, dar sua impressão sobre o assunto.

[]’s

Chamado: SQL Saturday #253 em Brasília!

SQL Saturday. Imagem provisória, quando puder edito, rs

O que é o SQL Saturday?

Está perfeitamente descrito aqui: http://sqlsaturday.com/253/eventhome.aspx e recomendo que você consulte para maiores informações.

Um sábado só com palestras sobre SQL Server. Conhecimento, networking, rever e fazer amizades, perto de casa, que coisa boa, que beleza, etc.

Resumindo:

  • É um evento sobre SQL Server;
  • Se você gosta ou tem interesse em aprender (cada vez) mais sobre plataforma deveria ir. Mesmo! ;
  • É gratuito e a localização é muito boa.
  • Se inscreva no site oficial do evento pra garantir sua vaga o quanto antes!

Marque no seu calendário:

Local:  Faculdade Projeção , Brasília-DF (Taguatinga Norte)

Endereço:  A.E.n.5 e 6 Setor C Norte

Link no Google Maps: https://maps.google.com.br/maps/ms?msid=209644132187367731803.0004e6319015717ce7a52&msa=0

Horário: 08h às 18h

Agenda do evento (Provisório)

Agenda Sat253

Eu sei que ninguém perguntou, mas minha impressão..

Estou muito animado pra ir, pois será meu primeiro Sat e melhor ainda, não é muito longe de onde moro. E é também uma oportunidade ímpar de ver colegas DBA palestrando pela primeira vez. A única parte negativa da história é que algumas palestras do meu interesse conflitaram no mesmo horário, mas, nada é perfeito =p

É isso, recado dado conforme pedido, missão cumprida e espero que tenha sido útil.

Depois edito o post com outras referências sobre o evento.

[]’s

Script – Informações de espaço em disco

Espaço em Disco

Olá,

O código a seguir tem a finalidade de capturar o espaço atual em disco. É uma mão na roda principalmente quando se usa o Central Management Servers pra disparar a mesma consulta para várias bases diferentes (possibilitando assim uma verificação rotineira mais rápida e prática).

Código

Saída:

Resultado

<Clique na imagem>

Área de Scripts

Nova seção de scripts!

Bom dia,

A partir de hoje, vou postar alguns scripts de uso pessoal por dois motivos:

1) Talvez ajude alguém;

2) Abandonar a preguiça de usar o blog;

A categoria SCRIPTS na parte superior do blog  também será atualizada conforme as postagens!