Arquivo da tag: Web

VBA – Obtendo dados da Web e Serviços Web usando WinHTTP

Estendendo a série de artigos VBA + Web, lembrando que liberei tem pouco tempo um tutoria de Selenium VBA para o quase-mesmo propósito, este tutorial trata de como extrair informações da páginas web e principalmente serviços web, ou web services, como são mais conhecidos.

Para promover a façanha, faremos uso da biblioteca WinHTTP. Em resumo, é ela quem fornece funções para que através de nossos aplicativos no Windows, possamos acessar conteúdo através do protocolo HTTP. Isso significa tudo, ou seja, GET, POST, PUT, DELETE e tudo mais que o protocolo oferecer. Como o mais comum é o GET, vamos começar por ele.

Se você não está familiarizado com estas opções que são chamadas de “verbos”, toda vez que você trafega alpo pela internet, um deste verbos é utilizado. O GET, que na tradução literal do inglês significa “obter”, é exatamente o que acontece quando você digita um endereço de uma página na internet no seu navegador, não importa o qual e clica em Enter.

Vamos fazer isso acontencendo via código:

Sub http()
    Dim MyRequest As Object
 
    'coloca a instância do WinHTTP na memória
    Set MyRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
    MyRequest.Open "GET", "http://www.tomasvasquez.com.br"
 
    'Faz a requisição
    MyRequest.Send
 
    'obtém o conteúdo da resposta e coloca na janela de verificação imediata 
    Debug.Print MyRequest.ResponseText
 
End Sub

O que vai acontecer aqui é a obtenção (verbo GET) de todo o conteúdo que o endereço informado, no caso, o www.tomasvaquez.com.br. Como estamos fazendo uma requisição ao documento padrão, que no caso é um HTML, é isto que veremos na janela do VBA, como mostrado abaixo:

vba_winhttp_tomasvasquez

Como mostrado acima, o resultado é um longo texto que representa o código HTML da página. Você verá a mesma coisa caso acesse o mesmo endereço no seu navegador e mandar exibir o código fonte.

Com isso, podemos começar a imaginar o que é possível fazer a partir desta biblioteca. Apesar de ser possível simular uma navegação em determinados sites, este não é o uso mais indicado para esta biblioteca. O mais adequado é fazer seu uso quando for preciso integrar com serviços REST, o que está mais do que na moda atualmente.

Para deixar o exemplo mais completo, vou usar o RSS do fórum e a partir dele, extrair quais foram as últimas postagens:

Sub UltimasDoForum()
    Dim MyRequest As Object, _
    resposta As String, _
    respostaParcial As String, _
    retorno As Long, _
    stringTitulo As String, _
    fimTitulo As Long
 
    'coloca a instância do WinHTTP na memória
    Set MyRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
    MyRequest.Open "GET", "http://www.tomasvasquez.com.br/forum/feed.php"
 
    'Faz a requisição
    MyRequest.Send
 
    'obtém o conteúdo da resposta
    resposta = MyRequest.ResponseText
 
    stringTitulo = ""
    'procura pelo título do post, se houver
    retorno = InStr(1, resposta, stringTitulo, vbTextCompare)
 
    'itera até o próximo e até não encontrar mais
    While retorno > 0
        fimTitulo = InStr(retorno, resposta, "", vbTextCompare)
        respostaParcial = Left(resposta, fimTitulo)
        Debug.Print Right(respostaParcial, Len(respostaParcial) - retorno - Len(stringTitulo))
        resposta = Right(resposta, Len(resposta) - fimTitulo)
        retorno = InStr(retorno, resposta, stringTitulo, vbTextCompare)
    Wend
End Sub

Não é preciso dar atenção ao código que extrai o texto pois é apenas um tratamento de strings para limpar o código XML. O resultado pode ser visto na figura abaixo:

Macro Ultimas do Forum executada

Ainda haveria que limpar um pouco as strings, mas já é possível ter uma ideia do que é possível começar a fazer com essa biblioteca.

Agora, é com vocês. Bom proveito!

Download do arquivo:

WinHTTP.zip (13.18 KiB)

Referências:

WinHTTP: https://msdn.microsoft.com/pt-br/library/windows/desktop/aa382925%28v=vs.85%29.aspx

Web – É um Desenvolvedor Web? Então use o Visual Studio!

Visual Studio

É possivel prever o quanto posso ser alvo de relataliações, mas isto é a internet, este é meu blog e não fosse a liberdade que este meio oferece, não teria sentido ele existir.

Contexto

Acredito ser justo contextualizar o que me levou a fazer este texto e minha trajetória do mundo web. Se você não estiver a fim de ler tudo isso, pode ir direto para a próxima tópico onde falarei diretamente do assunto relacionado ao título do artigo.

Atualmente sou desenvolvedor web com quase uma década de experiência no ramo. Passei um tempo programando para desktop e serviços, mas não demorou muito para me apaixonar por redes, daí para sockets, daí para protocolos e então cheguei no HTTP.

O problema é que aprendi web errado. Fiz curso de HTML e estático quando escrevendo as primeiras linhas de PHP, fui apresentado ao .NET (lá em 2002). Tudo começou no console, passou para o Windows e logo estava no ASP.NET. Na época, só tinha o Web Forms. Como o conhecimento de web era pouco, não tive muito como julgar o “crime” que o Web Forms cometia ao tentar simular um gerenciamento de estado em um protocolo sem estado.  A sacada era genial, mas o custo era demasiado alto. Simplesmente aceitei em fui em frente. Afinal de contas, o que contava era produzir, e nisso o Web Forms era bom.

Passado um tempo, me vi obrigado a encarar outras tecnologias web. Passei pelo até pelo ColdFusion (ouch!), que apesar de mal quisto, era muito bem feito. A Adobe, antes Macromedia tinha feito um ótimo trabalho. A adaptação foi terrível. Cadé os controles? Cadê a ferramenta? Os Adobe Builders da vida não ajudavam.  Cadê o vento click do lado server? Porque os dados dos controles são perdidos depois do click? Cadê o postback?

Estava perdido. Nascia a necessidade de entender o que era web de fato. Ter programado 4 anos de sistemas web sem saber o que era um POST ou um GET me deu um nó na cabeça. Quando a ficha caiu, o respeito pelo ColdFusion cresceu e pelo ASP.NET, bem…

Não tive escolha. Tive que voltar aos projetos ASP.NET pois era o meu “metiêr” e o C# já era a linguagem das linguagens. Mas claro, olhei o Web Forms de um jeito diferente, querendo mudar tudo. Já namorava intensamente o Castle Project, na época, um alívio para desenvolvedores Web que se viam obrigados a trabalhar com ASP.NET. Mas não havia espaço. Nenhum desenvolvedor .NET fazia ideia do que era tudo isso Eram raros os que se interessavam. Passou a ser um suplício. Na época, frameworks Java como o brasileiríssimo VRaptor me enchiam os olhos, o Ruby on Rails me encantava e o Javascript já era uma linguagem do coração. No Web Forms, era quase anti-produtivo utilizá-lo. Gurus da Microsoft tiveram a coragem de dizer que o Javascript estava com os dias contados.

Em dezembro de 2007, a Microsoft deu os primeiros sinais do ASP.NET MVC. Os esboços eram estupidamente animadores. Qualquer coisa que fizesse não mais pensar em postbacks e viewstates, além das rotas, eram um alívio. Nascia um mundo web de verdade para desenvolvedores .NET.

Há que tenha entrado em pânico. Afinal, quem quer jogar fora anos de experiência e conhecimento? Meu pensamento sobre isso é o seguinte. Nos dias de hoje, se você passa mais de uma semana sem ouvir falar de um novo framework ou biblioteca, você já está quase desatualizado. Se você gosta de um bloco de código que escreveu há mais de um ano, provavelmente você não aprendeu muito.

Bem vindo ao mundo do desenvolvimento web.

A imersão

No meio da aventura citada acima, a imersão em HTML, CSS e Javascript foram inevitáveis. No meu caso, foi amor à “primeiras vistas”. Adorei cada pedaço do que vi e me envolvi totalmente com o mundo front-end.

Comia Tableless no café da manhã, seletores eram fichinha e as novidades do HTML5 foram um bálsamo. Nessa época, lia sobre frameworks Javascript, CSS e afins na mesma intensidade que acompanhava a evolução do .NET.

Era muito bom ver o mundo web crescer e notar como o Single Page Apps vieram para ficar, tendo no server side algo tão poderoso como o que o ASP.NET e outros frameworks faziam. Tinha tudo o que precisava para criar soluções profissionais baseadas em web de ponta a ponta, sem deixar pontas soltas.

As ferramentas (enfim)

Era difícil fazer qualquer coisa fora do Visual Studio, pois ele estava ali, quase sempre aberto. O editor é confortável e o autocomplete (intellisense para os fanáticos) era essencial e inteligente, mesmo para htmls simples e javascript. Estava feliz.

Mas a pulga, aquela que fica atrás da orelha, não parava de incomodar quando, ao ler artigos e assistir tutoriais em vídeo, me deparava com o uso de outros editores como o Sublime Text e o WebStorm. Alguns mais atrevidos usavam o Atom e os corajosos me faziam sentir um newbie quando criavam seus exemplos direto no vim ou emacs.

Parecia mágico. Me perguntava se realmente precisava de tudo aquilo que a ferramenta da Microsoft oferecia, pois tinha um custo, monetário e de memória. Os requisitos para instalação são generosos e o grande calcanhar de Aquiles é precisar estar no Windows.

Fui aos poucos me convencendo e deixando o Visual Studio de lado para tarefas mais simples como editar CSS, HTML ou mesmo Javascript, mesmo abrindo mão do autocomplete. Aquela sensação de estar livre do Windows era muito agradável. Sendo boa parte das ferramentas para a web multiplataforma, estando num Windows, Mac ou Ubuntu, não havia entrave algum para iniciar um desenvolvimento ou fazer uma manutenção.

O git, node e ruby, ferramentas sob as quais a maioria dos pacotes e utilitários executa atualmente já são quase tão comuns de instalar ou já estarem instalados quanto o python ou mesmo o java. Desenvolver para a web havia se tornado algo quase transversal.

Então porque o Visual Studio?

Apesar do que gostei por muito tempo chamar de “liberdade”, descobri que era mais uma frescura. Mesmo! E não venha me convencer do contrário.

Se você é daqueles que não admite executar um Windows porque o tio Bill é o capiroto encarnado, e por nada deste mundo teria um “eipou” (li isso de um enrustido num fórum uma vez), colega, baixe a guarda.  A melhor coisa que descobri ao envelhecer como profissional de TI foi quando comecei a encarar o sistema operacional e qualquer outro software como commodity.

Passei muito tempo brigando contra colegas de trabalho sobre o que era melhor para chegar a conclusão que o melhor sempre era o que cada um tinha. Tinha um amigo fanático por Android, e defendia até morte, falando horrores dos concorrentes. Isso durou até ele comprar um Windows Phone, que passou a ser a oitava maravilha do mundo. Morte ao Android e iOS. Aí, veio o iPhone. Pronto, Android era um lixo cheio de vírus e Windows Phone era travado não tinha apps. O mesmo se deu com ontro colega era Windows, passou para Mac e agora é Ubuntu.

A melhor ferramenta é aquela que você usa. Pois bem, quando você desliga essa chave do orgulho exacerbado, você começa a enxergar as coisas mais claramente.

E é nisso que me baseei para chegar no título do artigo e por fim, em uma conclusão. O Visual Studio foi a ferramenta mais completa com a qual tive contato para a maior parte dos tipos de aplicativo que precisei trabalhar. Do editor poderoso, passagem pelo gerenciador de janelas, integração com controles de versão, tipos de projeto e o ápice, que são as ferramentas de depuração, o Visual Studio entrega em um pacotão só um Kit de ferramentas que abraça do que comumente é preciso alguns utilitários para alcançar. Para o povo da nova web, digamos que ele faz (e já faz um bom tempo) o que o bower, grunt e yeoman fazem hoje.

E aos que vierem com os argumentos de preço, uma novidade. A Microsoft há tempos oferece versões gratuitas e bem completas do Visual Studio para livre uso, que são as Express. São versões dedicadas a tipos de aplicativos, que no caso de vocês, basta se concentrar na versão web. Aos que acharem que a ferramenta não é suficientemente completa, coordenei com muito exito alguns projetos onde os devs utilizavam Visual Studio Ultimante e os Designers/Front End utilizavam as versões Express, sem problemas ou conflitos.

Se não bastasse tudo isso, recentemente (na verdade, parei a escrita deste artigo enquanto fiquei sabendo da notícia) a Microsoft liberou a versão completa do Visual Studio chamada Community, que é composta pela ferramenta integrada, com licença livre estudo e projetos Open Source. Quer saber mais?

https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx

E para os que ainda acham que tudo isso é balela, a Microsoft liberou o código da nova versão do .NET Framework, que já virá com versões compiladas para pronta execução em Linux e Macs. Quer saber mais?

http://blogs.msdn.com/b/dotnet/archive/2014/11/12/announcing-net-2015-preview-a-new-era-for-net.aspx

Não bastasse isso, a Microsoft também liberou uma ferramenta chamada Visual Studio Code, um editor para código .NET multiplataforma e gratuito. Quer saber mais?

https://code.visualstudio.com/

No momento da escrita deste artigo, o Visual Studio Code ainda estava em beta.

Concluindo

O fim deste artigo pode ter parecido algo como uma propaganda para a Microsoft. E não poderia ser diferente. Porém, esta não é a intenção aqui.

A intenção foi convidar aos que ainda alimentam um pouco de preconceito pelas ferramentas da Microsoft, que abram a mente e façam pelo menos um teste. Da mesma forma que fiz do mundo Microsoft para o mundo Open Source, o caminho contrário pode ser cheio de boas surpresas.

Algo que não mudará é a dependência do Windows, afinal, estamos falando de Microsoft. Caso ele não esteja à mão, é ao menos possível dar uma chance ao Visual Studio Code.

Moral da história? “Abra a mente!”

Forte abraço!

Web – Aprendendo a dominar o Chrome DevTools (e porque você precisa saber disso!)

Google Developer

O Chrome definitivamente tomou seu espaço, tanto no coração dos usuários como no dos desenvolvedores.

Depois do Firefox com seus indispensáveis plugins Firebug e Web Developer, o Chrome (e outros navegadores) correram atrás para oferecer algo no mesmo nível. O fato é que a equipe do Google conseguiu. Pelo menos da experiência que tenho no desenvolvimento Web, o Firefox com seus plugins já facilitou um mundo com essas ferramentas, permitindo edição de CSS e HTML direto na página e também depuração (ou debug) de código Javascript, com a adição de mais alguns plugins.

Pois bem, o que com o Firefox se fazia depois de alguma configuração, o Chrome trouxe nativamente, fácil de acessar e tão completo quanto! A esse conjunto de funcionalidades ele deu o nome de Chrome DevTools. Se você está num Chrome neste momento(desktop), basta ir ao menu do mesmo, Ferramentas->Ferramentas para Desenvolvedor (Tools->Developer Tools).

Seu Chrome deverá mostrar uma barra de ferramentas na parte inferior do mesmo:

Chrome Dev Tools ativado

E é aqui que a brincadeira começa. Você tem domínio absoluto do conteúdo da página e pode praticamente alterar todo seu comportamento, fazer checagens, depurar código, controlar todos os arquivos que pertencem a esta página, quais as falhas, os erros, etc. A partir daqui, não me prolongarei, deixando apenas claro que se você é um desenvolvedor web, planeja ser ou se ao menos a estrutura de páginas web lhe interessam, como no caso de profissionais de usabilidade, acessibilidade e SEO, você PRECISA conhecer do Chrome DevTools!

Ele está praticamente se tornando um padrão na internet. É claro, um desenvolvedor web quer que seu site funcione em todos os navegadores, mas quando você coloca a disposição um conjunto tão poderoso de ferramentas, você faz que com a comunidade acabe preferindo sempre produzir conteúdo para tal. Aconteceu com o Internet Explorer. Prevejo que logo acontecerá com o Chrome.

Quer conhecer mais do Chrome DevTools? Deixarei abaixo links de duas séries de vídeos ótimos que ensinam os segredos dessa funcionalidade.

Explore and MasterChrome DevTools (vídeo, inglês, gratuito)

Criado em parceria com o Google e o Code School, um de meus sites de cursos de programação favorito, essa série passa quase todos os recursos da ferramenta, incluindo testes no final de cada lição.

Pode ser acessado em: http://discover-devtools.codeschool.com/

Segredos do Chrome DevTools (vídeo, português, gratuito)

O Google Developers tem um canal específico de vídeos no Youtube. Esta semana, em parceria com o Expert Zeno Rocha, o canal publicou em português uma série chamada “Segredos do Chrome DevTools”, onde é explicado rapidamente o funcionamento da ferramenta.

Pode ser acessado em: https://www.youtube.com/watch?v=XUgfwYzv-WQ

Concluindo

Como já escrevi acima, se você tem algum envolvimento com web, mesmo que seja uma linha de uma página, conhecer as capacidades do Chrome DevTools é uma obrigatoriedade atualmente.

Bons estudos!

Android – Como ver o código fonte de uma página no Chrome

chrome-android

Desenvolvedores têm necessidades estranhas. Sério!

Algumas são até justificáveis, e espero que seja o caso dessa. Recentemente tive a necessidade de ver o código fonte de uma página durante uma reunião de trabalho. Em mãos, tinha um tablet com Android.

Fui direto ver se o Google Chrome tinha a mesma opção que no desktop. Necas! É um navegador mobile, porque teria? Mas desenvolvedor é teimoso, então, bora googlear para saber quais as opções.

Diante de algumas, até mesmo navegadores alternativos, surge uma dica no santo stackoverflow.com, que serviu como uma luva! Imagine-se acessando uma página no Chrome do Android (a do blog, claro!):

Chrome Android

Se procurar a opção visualizar código fonte, verá que ela não existe e nenhum menu. Porém, note que ao ativar essa opção no Chrome para desktop, ele produz uma nova aba como mesmo endereço do site, só que com a opção “view-source:” antes do endereço.

Pois então, basta fazer o mesmo no Chrome do Android:

Chrome Android View Source

No caso do blog, ficou: view-source:http://www.tomasvasquez.com.br/blog/

Lindo!

Fora o trabalho de digitar, é exatamente a mesma coisa que no desktop. Quem sabe não dá para ativar o devtools também? 😀

Bom proveito!