Editorial - theclub.com.br · Antes de iniciarmos é necessário ter certeza que você está com o...
Transcript of Editorial - theclub.com.br · Antes de iniciarmos é necessário ter certeza que você está com o...
Editorial
Caro leitor,
Estamos quase na metade do ano de 2018 e é sempre com muita satisfação que nós da equipe do The Club
apresentamos mais um mês de artigos para você. Para este mês, nosso colaborador Ricardo Barbosa Crivelli redigiu o artigo “Isolando seu ambiente Python com o
virtualenv”, preparando dicas para quem trabalha com Python. O “virtualenv”, que conforme o nome sugere, cria ambientes de
desenvolvimentos virtuais, onde é possível ter a sua própria versão do Pyhton e componentes instalados de forma isolada do
restante da máquina possibilitando um desenvolvimento futuro com o “Django”.
Já o consultor técnico Thiago Cavalheiro Montebugnoli preparou o artigo “LINQPad 5 – Executando consultas LINQ”.
Esta ferramenta se torna muito útil para quem deseja executar instruções LINQ de uma forma mais fácil e rápida. Exploraremos
a sua versão 5 junto com o Framework 4.6, apresentando algumas de suas principais funcionalidades através de exemplos
práticos. Desejo a você uma ótima leitura, um abraço e até o mês que vem!
Marcos César Silva
Diretor Técnico
Isolando seu ambiente Python com o virtualenv
Introdução
Quem trabalha com Python em muitos projetos sabe que um dos maiores problemas são as inúmeras versões da
linguagem e que mantê-las todas instaladas ao mesmo tempo é um grande problema. Pensando nisso foi desenvolvido
o virtualenv, que conforme o nome sugere, cria ambientes de desenvolvimentos virtuais, onde é possível ter a sua própria
versão do Pyhton e componentes instalados de forma isolada do restante da máquina. Hoje nós iremos aprender como
instalá-lo para que possamos partir para o desenvolvimento com o Django.
Verificando sua instalação do Python
Antes de iniciarmos é necessário ter certeza que você está com o Python e o pip instalados. Para isso execute o seu
terminal e execute o comando abaixo.
python
Se ele estiver instalado uma mensagem de boas-vindas com a versão será exibida:
Python 3.6.2 |Anaconda custom (64-bit)| (default, Jun 29 2016, 11:07:13)
[MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
I7-7700k Core Load: 1% Mem. Avail: 25,8GB/31,9GB
>>>
Se você é usuário Windows ou baixou o Python através do Homebrew você já terá o pip instalado, caso você seja
usuário Linux você precisará instalar o pip separadamente. Para isso você deve baixar o instalador através do comando:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
Depois de baixado você deve executar o instalador e seguir os passos informados:
python get-pip.py
Instalando o Pipenv
O Pipenv é um gerenciador de dependências do Python muito similar ao npm do NodeJS ou do Composer para
os desenvolvedores PHP. Você pode fazer uma analogia com o pip, que você usa para instalar pacotes Python enquanto
o Pipenv gerencia as dependências em alto nível. Para instalar o Pipenv você deve utilizar o pip. É recomendado instalar
o Pipenv de forma local (apenas para o usuário que você está logado), pois a instalação dele de forma global pode
acarretar em uma quebra dos pacotes e de suas dependências em todos os usuários. O comando para instalação é o:
pip install –user pipenv
Se tudo ocorrer normalmente o seu resultado deverá ser igual à Figura 1.
Figura 1. Instalação do Pipenv
Instalando os pacotes de sua aplicação
Com o virtualenv você consegue controlar todas as dependências de forma isolada, ou seja, cada projeto tem sua
própria versão do Python e seus próprios pacotes. Para controlar os pacotes que foram instalados (e para que você possa
reinstalá-los caso troque de máquina, por exemplo) é criado um arquivo chamado Pipfile. Para instalar os pacotes acesse a
pasta de seu projeto que em nosso caso será uma pasta vazia e execute o comando abaixo para instalar o pacote Requests.
mkdir pipenv
cd pipenv/
pipenv install requests
O processo pode demorar um pouco dependendo do pacote e de sua velocidade de conexão. O resultado
deve ser semelhante ao exemplo abaixo:
PS E:\The Club\2018-05\pipenv> pipenv install requests
Creating a virtualenv for this project… Using c:\users\avell 1513\appdata\local\programs\python\python36\python.exe (3.6.5)
to create virtualenv… Already using interpreter c:\users\avell
1513\appdata\local\programs\python\python36\python.exe
Using base prefix 'c:\\users\\avell
1513\\appdata\\local\\programs\\python\\python36' New python executable in C:\Users\AVELL1~1\VIRTUA~3\PIPENV~1\Scripts\python.exe
Installing setuptools, pip, wheel...done. Virtualenv location: C:\Users\Avell 1513\.virtualenvs\pipenv-Ex4XjoVX
Creating a Pipfile for this project… Installing requests…
Collecting requests
Downloading
https://files.pythonhosted.org/packages/49/df/50aa1999ab9bde74656c2919d9c0c085
fd2b3 775fd3eca826012bef76d8c/requests-2.18.4-py2.py3-none-any.whl (88kB)
Collecting urllib3<1.23,>=1.21.1 (from requests)
Downloading https://files.pythonhosted.org/packages/63/cb/6965947c13a94236f6d4b8223e21beb4
d576d c72e8130bd7880f600839b8/urllib3-1.22-py2.py3-none-any.whl (132kB)
Collecting chardet<3.1.0,>=3.0.2 (from requests)
Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec
7ca55ec 7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
Collecting certifi>=2017.4.17 (from requests)
Using cached
https://files.pythonhosted.org/packages/7c/e6/92ad559b7192d846975fc916b65f6
67c7b8c3 a32bea7372340bfe9a15fa5/certifi-2018.4.16-py2.py3-none-any.whl
Collecting idna<2.7,>=2.5 (from requests)
Downloading
https://files.pythonhosted.org/packages/27/cc/6dd9a3869f15c2edfab863b9928382
77279ce 92663d334df9ecf5106f5c6/idna-2.6-py2.py3-none-any.whl (56kB) Installing collected packages: urllib3, chardet, certifi, idna,
requests Successfully installed certifi-2018.4.16 chardet-3.0.4 idna-
2.6 requests-2.18.4 urllib3-1.22 Adding requests to Pipfile's [packages]… Pipfile.lock not found, creating… Locking [dev-packages] dependencies…
Locking [packages] dependencies… Updated Pipfile.lock (b14837)! Installing dependencies from Pipfile.lock
(b14837)… ================================
5/5 - 00:00:03 To activate this project's virtualenv, run the following: $ pipenv shell
Note que ele já instalou todas as dependências de forma automática e criou o Pipfile e que não existe
nenhum arquivo Python dentro da pasta. Essa é uma das principais diferenças de outros gerenciadores pois ele
compartilha as bibliotecas, mas não carrega todas as instaladas. Assim se você for instalar a biblioteca Requests
novamente em outro projeto os arquivos não serão baixados novamente.
Se você abrir o arquivo Pipfile você verá que seu conteúdo é mais ou menos assim:
[[source]] url = "https://pypi.org/simple"
verify_ssl = true name = "pypi" [packages] requests = "*"
[dev-packages] [requires]
python_version = "3.6"
Veja que ele aponta que o pacote requests é necessário, assim como a versão 3.6 do Python.
Usando os pacotes instalados
Agora vamos testar se tudo está funcionando de forma correta criando um dos exemplos mais
tradicionais do pacote que é nada mais do que requisitar ao HTTPBin o ip do usuário e exibi-lo no console. Vamos criar um arquivo chamado main.py e inserir o
seguinte código nele:
import requests
response =
requests.get(‘https://httpbin.org/ip’)
prin't(‘Seu ip é
{0}’.format(response.json()[‘origin’])) Execute
o pipenv run para executar o arquivo: pipenv run
python main.py
O resultado deve ser semelhante à Figura 2.
Figura 2. Arquivo main.py em execução
Instalando o virtualenv
Assim como o pipenv, o virualenv serve para gerenciar ambientes de desenvolvimento isolados só que
ele cria uma pasta que armazena todos os executáveis necessários para seu projeto. Isso faz com que o seu
projeto tenha um tamanho maior, mas faz com que o tempo para execução seja muito menor, além de o
virtualenv ser muito mais conhecido então a possibilidade de você encontrar documentação ou até mesmo um
tutorial que utiliza os comandos específicos do virtualenv é muito maior.
Para instalar o virtualenv execute o comando:
pip install virtualenv
Testando a sua instalação
Para testarmos a instalação vamos criar um diretório vazio e criar um novo ambiente:
mkdir virtenv
cd virtenv
virtualenv virtenv
O resultado do comando se tudo ocorrer bem deve ser semelhante ao descrito abaixo:
virtualenv virtenv Using base prefix 'c:\\users\\avell
1513\\appdata\\local\\programs\\python\\python36
'
New python executable in E:\The Club\2018-05\virtenv\virtenv\Scripts\python.exe
Installing setuptools, pip, wheel...done.
Veja que ele cria um novo executável do Python e uma cópia do pip. Veja na figura 2 que agora os
arquivos estão na pasta do projeto.
Utilizando o ambiente
Para executar o ambiente e isolar as suas dependências basta executar o comando:
source virtenv/bin/activate
Voce pode instalar os pacotes como você faria normalmente:
pip install requests
E para desativar o ambiente basta executar o comando:
deactivate
E se você copiar o nosso exemplo anterior você verá que o arquivo se comportará da mesma forma.
Figura 2. Arquivo main.py em execução.
Conclusão
No artigo de hoje aprendemos a isolar o ambiente de desenvolvimento a fim de que cada aplicação tenha o seus
próprios pacotes e versões garantindo que você seja capaz de rodar mais de uma configuração na mesma máquina.
Além de ser uma boa prática é praticamente uma obrigação quando trabalhamos com Python em mais de um projeto.
Espero que tenham gostado e até a próxima!
Sobre o Autor
Ricardo Barbosa Crivelli, mais conhecido como Rico Crivelli, é formado como Bacharel em
Sistemas de Informação e Licenciado em Computação pela Universidade Estadual do Norte do Paraná e pós-graduado em Informática na Educação. Atualmente é Técnico em TI no Instituto Federal de São Paulo – Campus Avaré. Tem como especialidade a linguagem PHP e os frameworks Symfony e Laravel, apesar de adorar trabalhar com front-end e desenvolvimento mobile com Kotlin e Swift. Possui as certificações COBiT 4.1 Foundation e Delphi 2006 Developer.
E-mail: [email protected]
LINQPad 5 – Executando consultas LINQ
Introdução
Caro amigo leitor, Para relembrar, a sigla LINQ significa: “Language integrated Query” que traduzindo seria “Consulta Integrada à
Linguagem”. É uma funcionalidade introduzida a partir da versão do .NET Framework 3.5, permitindo a realização de
consultas em coleções de objetos, XML, bancos de dados, entre outros. (Não abordaremos maiores detalhes neste
artigo) Antigamente, muitos de nós programadores sofremos para aprender e executar consultas LINQs, ou seja, não
tínhamos muitos recursos disponíveis no mercado para arcar com essa responsabilidade. Para facilitar esta tarefa apresentarei neste artigo a ferramenta “LINQPad”, estando na sua versão 5. Utilizarei o
Framework 4.6 e explorarei sua instalação apresentando algumas de suas principais funcionalidades. Através de
exemplos abordarei alguns recursos para o melhor aprendizado.
Principais Funcionalidades
Suas principais funcionalidades são:
- Possibilidade de testar instantaneamente qualquer fragmento de código ou programa nas mais
diversas linguagens (C#, F#, VB, Bancos de dados de consulta LINQ, Azure, Oracle, SQLite e MySQL);
- Formatação de saída de dados com depuração integrada;
- Automatização de qualquer linguagem .NET;
- Ferramenta leve e grátis (versão Standard).
Download
Para adquirir o LINQPad acesse o endereço https://www.linqpad.net e clique no botão “Download LINQPad”.
Teremos duas opções principais, sendo:
- LINQPad 5 para .NET Framework 4.6/4.7
- LINQPad 4 para .NET Framework 4.0/4.5
É importante salientar que também existem outras opções de downloads disponíveis para versões
mais antigas do framework.
No nosso caso clicaremos na opção “Download LINQPad 5 for .NET Framework 4.6/4.7”. Ver Imagem 01.
Figura 01: Download do LINQPad
Instalação
A instalação é muito simples e objetiva. Com alguns cliques a mesma se completará com sucesso. Ver Figura 02.
Figura 02: Completando a instalação.
Apresentando a ferramenta
No primeiro impacto podemos pensar que é alguma ferramenta de gerenciamento de Banco de Dados.
1) Teremos na região superior alguns itens de menu padões como “File”, “Edit”, “Query”, “Debug”, “Help”.
File: Ao expandi-lo podemos conferir algumas opções para criar, abrir, salvar ou clonar um consulta LINQ. Outra
funcionalidade interessante é a possibilidade de realizar o upload e compartilhamento de códigos através do item
“Upload to Instant Share”.
Edit: Neste item são encontradas opções padões de selecionar, procurar e substituir, colar, cortar, copiar e
desfazer. Na versão “Pro”, “Developer” ou “Premium” podemos contar com recursos do tipo “Autocompletar”,
“Refatoração”, “Delineação” e outros recursos mais avançados.
Query: Temos a opção para executar, mostrar os resultados em diversos formatos de grade. Também
encontramos algumas opções mais específicas como “Referências e Propriedades”, “Nuget”, “Namespaces” e
configurações do App. Debug: Como o próprio nome já diz, encontraremos todas as possibilidades de Debug da
instrução LINQ. “Step Into, Step Over, Toggle BreakPoint”, etc...
Help: No menu “Ajuda” teremos todos os tutoriais, referências, novidades, exemplos, ajudas com linhas de
comando, Fórum, ou seja, tudo para auxiliar o desenvolvedor.
2) Na região superior esquerda encontramos a opção “Add Connection” para criar uma conexão do
tipo “Default (LINQ to SQL)”, “WCF Data Services” ou “Microsoft DataMarket Service”, ou seja, podemos
configurar quaisquer “Data Contexts”.
3) Logo mais abaixo podemos nos deparar com “My Queries” e “Samples”. Em “My Queries” é o local onde
devemos armazenar nossas principais instruções. Já em “Samples” temos exemplos e documentações disponíveis
para consultas.
4) Na região principal é onde iremos programar e executar nossa instrução. Na combobox “Linguagem“
podemos escolher tanto itens relacionados ao C# (“C# Expression”, “C# Statement”, “C# Program”), quanto as outras
linguagens “VB”, “F#”, ou Banco de Dados “SQL”.
Ver Imagem 03 com todas as regiões destacadas.
Figura 03: Apresentando a ferramenta.
Criando os exemplos
O exemplo será com base em um Banco de Dados SQL Server Express e a linguagem C#. Clique
no botão “Add connection” escolha a primeira opção Default (LINQ to SQL) clicando no botão “Next”
em seguida. Na próxima janela teremos opções de conexão do SQL Server, incluindo as versões CE 3.5,
CE 4.0 e Azure. Usaremos a primeira denominada “SQL Server”, a qual fará uma conexão com o banco
de dados local. Em “Server” escolha o servidor, exemplo: “THIAGO-PC\SQLExpress”, em “Log On” o tipo
de autenticação do Banco de Dados. Logo abaixo teremos algumas especificações da Base de Dados.
Cheque o item “Specify new or existing database” para criar ou selecionar o que desejar. Em “Data
Context Options” deixaremos as opções padrões. Clique no botão “OK” para finalizar este processo. Maiores detalhes na Imagem 04.
Figura 04: Conexão criada com sucesso.
Como foi dito anteriormente, em se tratando da linguagem C#, temos algumas
opções de codificação (Imagem 05). Exemplo:
Figura 05: Opções de codificação.
Usaremos a opção “C# Program”. Com o auxílio do método “Dump()” iremos listar os dados
necessários.
Exemplo 01: Consulta Simples
No exemplo abaixo iremos executar um “select” em uma tabela, no caso específico a de clientes.
Na opção “Language” deixarei como “C# Program”, para assim termos uma estrutura de programa em C#.
Ver Listagem 01.
void main() {
var cli = from cl in CLIENTEs
select cl; cli.Dump();
}
Listagem 01.
Podemos conferir o resultado abaixo. Ver Figura 06
Figura 06: Resultado da consulta.
Possuímos algumas opções interessantes como exportação, formato de dados, resultados em
grades, em instruções SQL, Expressões LAMBDA. Ver Figura 07.
Figura 07: Opções de resultados.
Exemplo 02: Consulta com “Join” entre tabelas
No exemplo a seguir montaremos uma instrução mais detalhada com “JOINS” entre tabelas e
condições.
Veremos a facilidade para testes de performance e sintaxe. Confira a listagem 02.
void Main() {
var contas = from con in RECEs join conrecdet in REC_DETs on con.COD_REC equals
conrecdet.COD_REC join cadcli in CLIs on con.COD_CLI equals
cadcli.COD_CLI join placon in PLA_CONs on con.COD_PLA equals placon.COD_PLA where (conrecdet.FLA_PAG == 0 || conrecdet.FLA_PAG == null)
orderby conrecdet.DAT_VEN select new {
con.DAT_EMI,
conrecdet.DAT_VEN, DAT_MOV = DateTime.MinValue, cadcli.RAZ_SOC, con.NUM_DOC, conrecdet.PARCELA,
conrecdet.VAL_PAR, VAL_PAG = conrecdet.VAL_PAR - conrecdet.VAL_ABE, conrecdet.VAL_ABE, con.COD_REC,
cadcli.COD_CLI, placon.COD_PLA
}; contas.Dump();
}
Listagem 02
O resultado poderá ser conferido na Imagem 08.
Figura 08: Resultado da consulta.
Conclusão
Neste artigo procurei demonstrar algumas das funcionalidades desta fantástica ferramenta para
desenvolvimento de consultas LINQ. Com alguns pequenos exemplos conferimos alguns dos inúmeros
recursos presentes na mesma. Desejo uma ótima leitura, um abraço e até o mês que vem!
Sobre o Autor
Thiago Cavalheiro Montebugnoli adora aprender novas tecnologias. Formado pela Faculdade de Tecnologia de Botucatu – SP (FATEC), já desenvolveu softwares utilizando a plataforma .NET, Delphi junto com Banco de Dados SQL Server e Firebird. Como experiências profissionais mais recentes, possui em seu currículo sua atuação no Centro de Processamento de Dados da Prefeitura Municipal de Itaí-SP e atualmente compõe a equipe da Coordenadoria Tecnologia da Informação no IFSP – Instituto Federal do Estado de São Paulo em Avaré. Além disso, é colunista mensal da Revista The Club Megazine e é consultor Técnico do The Club. Possui as seguintes certificações: MCP - Microsoft Certified Professional,MCTS - Microsoft Certified Technology Specialist, MCAD - Microsoft Certified Application Developer e MCSD - Microsoft Certified Solution Developer.
E-mail: [email protected]