Editorial - theclub.com.br · Antes de iniciarmos é necessário ter certeza que você está com o...

15

Transcript of Editorial - theclub.com.br · Antes de iniciarmos é necessário ter certeza que você está com o...

Page 1: Editorial - theclub.com.br · Antes de iniciarmos é necessário ter certeza que você está com o Python e o pip instalados. Para isso execute o seu ... usuário Linux você precisará
Page 2: Editorial - theclub.com.br · Antes de iniciarmos é necessário ter certeza que você está com o Python e o pip instalados. Para isso execute o seu ... usuário Linux você precisará

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

Page 3: Editorial - theclub.com.br · Antes de iniciarmos é necessário ter certeza que você está com o Python e o pip instalados. Para isso execute o seu ... usuário Linux você precisará

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:

Page 4: Editorial - theclub.com.br · Antes de iniciarmos é necessário ter certeza que você está com o Python e o pip instalados. Para isso execute o seu ... usuário Linux você precisará

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…

Page 5: Editorial - theclub.com.br · Antes de iniciarmos é necessário ter certeza que você está com o Python e o pip instalados. Para isso execute o seu ... usuário Linux você precisará

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 = "*"

Page 6: Editorial - theclub.com.br · Antes de iniciarmos é necessário ter certeza que você está com o Python e o pip instalados. Para isso execute o seu ... usuário Linux você precisará

[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

Page 7: Editorial - theclub.com.br · Antes de iniciarmos é necessário ter certeza que você está com o Python e o pip instalados. Para isso execute o seu ... usuário Linux você precisará

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.

Page 8: Editorial - theclub.com.br · Antes de iniciarmos é necessário ter certeza que você está com o Python e o pip instalados. Para isso execute o seu ... usuário Linux você precisará

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]

Page 9: Editorial - theclub.com.br · Antes de iniciarmos é necessário ter certeza que você está com o Python e o pip instalados. Para isso execute o seu ... usuário Linux você precisará

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.

Page 10: Editorial - theclub.com.br · Antes de iniciarmos é necessário ter certeza que você está com o Python e o pip instalados. Para isso execute o seu ... usuário Linux você precisará

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.

Page 11: Editorial - theclub.com.br · Antes de iniciarmos é necessário ter certeza que você está com o Python e o pip instalados. Para isso execute o seu ... usuário Linux você precisará

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.

Page 12: Editorial - theclub.com.br · Antes de iniciarmos é necessário ter certeza que você está com o Python e o pip instalados. Para isso execute o seu ... usuário Linux você precisará

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.

Page 13: Editorial - theclub.com.br · Antes de iniciarmos é necessário ter certeza que você está com o Python e o pip instalados. Para isso execute o seu ... usuário Linux você precisará

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 {

Page 14: Editorial - theclub.com.br · Antes de iniciarmos é necessário ter certeza que você está com o Python e o pip instalados. Para isso execute o seu ... usuário Linux você precisará

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.

Page 15: Editorial - theclub.com.br · Antes de iniciarmos é necessário ter certeza que você está com o Python e o pip instalados. Para isso execute o seu ... usuário Linux você precisará

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]