terça-feira, 10 de maio de 2016

Advpl Web Service - Parte 1




Fala galera!

Hoje vou compartilhar com vocês algo que estou aprofundando nesses últimos dias chamado web service. A princípio estou fazendo voltado a tecnologia que trabalho atualmente, ou seja, a linguagem Advpl.

O que é Web Service?

Web service é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes. Com esta tecnologia é possível que novas aplicações possam interagir com aquelas que já existem e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis. Fonte

Pois bem, para iniciarmos o desenvolvimento de um web service, é necessário que você tenha tudo devidamente configurado e para isso vamos dar uma passada rápida na configuração do Protheus.

Configuração do Ambiente

APWEBWIZARD: esta rotina será utilizada para que possamos configurar o Protheus para disponibilizar o nosso web service.


Acesso à configuração de web service



No menu lateral, acesse a opção "Módulos Web" e clique em adicionar.



Menu lateral


Na primeira tela onde iniciaremos a configuração do web service, vamos definir o nome de instância, o ambiente de execução e o diretório de arquivos.



Configurações iniciais



Próximo passo, vamos vincular o nome do host com a empresa/filial. Neste caso, estou utilizando o localhost ou 127.0.0.1, se preferirem.



Vincular host com a empresa



Após isto vamos definir o número mínimo e máximo de usuários que acessarão o sistema.

Configure de acordo com a sua necessidade.


Definindo quantidade mínima e máxima de acesso


Após todos esses passos seguidos corretamente, basta confirmar e reiniciar o servidor do Protheus para que o web service esteja disponível. Assim que reiniciado, você poderá digitar no seu navegador o endereço configurado.


sexta-feira, 6 de maio de 2016

Links Interessantes #3

Pessoal, mais uma lista com os posts mais bacanas da semana.

Links Interessantes #3

  1. Pode ficar tranquilo que, ao baixar esses álbuns gratuitos, nada será cobrado em seu cartão de crédito nem de qualquer outra maneira. Confira a lista

  2. Entenda porque no dia 04 de maio é comemorado o dia do Star Wars.

  3. Pessoal vale a pena conferir esse post! É muito bacana como uma ideia pode se tornar um "produto".

  4. Entenda como essa maravilha facilita sua vida, na forma em que você acessa páginas web. E aprenda como uma configuração simples pode deixar sua internet mais rápida.

  5. A OASIS GAMES anunciou oficialmente a aquisição dos direitos para publicar o MMORPG “Naruto Online” no Brasil e o beta aberto chega em breve por aqui.

  6. Mais um post da nossa sequência sobre como e onde voce pode estudar/aprimorar seu inglês

quinta-feira, 5 de maio de 2016

Debug #6 - Recuperar o ultimo valor com split

O método split é utilizado quando é necessário quebrar uma String em várias substrings.

Veja o seguinte código:
public static void main(String[] args) {
        
        // Como entrada temos um diretorio separado por / barra
        String entrada = "C:/Users/Faguinho/Videos/Seriados/Vikings";
                
        // Vamos quebrar nossa entrada em várias substrings
        // usando / para identificar onde nossa string deverá ser quebrada
        // e armaze-las em um vetor de String
        String[] saida = entrada.split("/");
        
        // Esse laço de repetição está pegando cada nova string gerada
        // a partir da nossa string de entrada, e varrendo todo vetor
        // escrevendo na tela a substring armazenada
        for (String substring : saida) {
            System.out.println(substring);
        }
    }

E teremos a seguinte saida:
C:
Users
Faguinho
Videos
Seriados
Vikings
Acabamos de pegar um determinado diretório e separa-lo em várias pastas até chegar na nossa pasta final que é "Vikings" (uma série muito boa, assistam rs).


Debug 6 - Recuperar o ultimo valor com split


Nos usamos o separador "/" para quebras nossa String, mas poderíamos estar usando qualquer marcador para identificar onde nossa String deveria ser quebrada.
Muitas vezes se faz necessários resgatar o ultimo valor de uma String, e para isso existem inúmeras formas de faze-lo um exemplo clássico é o seguinte código:
public static void main(String[] args) {

        String entrada = "C:/Users/Faguinho/Videos/Seriados/Vikings";
        String[] saida = entrada.split("/");
        
        // Criamos uma variavel do tipo String e a inicializamos com null
        String resultado = null;

        // Nesse laço estamos inicializando nossa variavel em 1
        // iremos ficar repetindo esse código enquanto i for menor que a quantidade
        // de substring armazenadas em nosso vetor saida
        // e estamos informando que nosso laço deve somar 1 a cada execução
        for (int i = 1; i < saida.length; i++) {
            resultado = saida[i];
        }
        
        // E aqui escrevemos o nosso resultado
        System.out.println(resultado);
    }

E teremos a saída: "Vikings"

Mas esse exemplo deixa o código extenso, processando todo um vetor para recuperar o último valor, não é nada bom.

Para resolver esse tipo de problema podemos usar o seguinte código:
public static void main(String[] args) {

        String entrada = "C:/Users/Faguinho/Videos/Seriados/Vikings";
        String resultado = entrada.split( "/" )[entrada.split( "/" ).length - 1];
        
        System.out.println(resultado);
    }

Ficou bonito não? rs
Com apenas uma linha resolvemos todos o nosso problema. Vamos a explicação!

Estamos usando matemática para resolver o nosso problema, então primeiro começaremos pelas [], ou seja nosso segundo split: [entrada.split( "/" ).length - 1], estamos simplesmente verificando a quantidade de substrings geradas menos um.
No nosso exemplo teremos o resultado = 5

A expressão ficou igual a entrada.split( "/" )[5], dessa forma o método split remove todos os valores anteriores e recupera apenas o valor que fica logo após a quinta barra.

Execute esse trecho: entrada.split( "/" )[5], e teremos a nossa saída = Vikings
Execute esse trecho: entrada.split( "/" )[4], e teremos a nossa saída = Seriados
Execute esse trecho: entrada.split( "/" )[2], e teremos a nossa saída = Users

Bom, como eu disse existem várias formas de resolver esse problema, e essa é uma das formas que eu uso nos meus códigos.

Até a próxima.

quarta-feira, 4 de maio de 2016

Uowww 1000 visualizações

Pessoal, vocês são demais! rsrs

Gostaria de agradecer muito a todos vocês que tem acessado nosso blog, acompanhado nossos post e todo nosso trabalho.

O motivo!?!?


Uowww 1000 visualizações


HOJE completamos 1000 visualizações um pouco mais enquanto redigia o post rs em nosso blog uhuuulllll.

Obrigado também por estarem acompanhando a nossa página no Facebook, que a cada dia cresce um pouquinho. Você que  ainda não curtiu corre lá e acompanhe todos os nossos posts.

No entanto, na verdade hoje temos 3 coisas para comemorar:
  • As 1000 visualizações do blog (de novo obrigado!);
  • Adquirimos um domínio personalizado muahaha, nosso blog agora pode ser acessado usando o endereço www.deviscoming.com;
  • Eee por último e não menos importante STAR WARS DAY! rsrs



"Que a força esteja com você"

Star Wars Day!

Fala galera!

Hoje é um dia muito especial para os fãs de Star Wars! Celebramos hoje, dia 04 de Maio, o Star Wars Day!

Esta data foi criada por George Lucas (diretor e criador dos filmes) que determinou que este dia seria um feriado para os que celebram a cultura de Star Wars. Esse dia é destinado a comemoração de Star Wars, poque existe um trocadilho com a famosa frase do filme "May the force be with you" (Que a força esteja com você), onde é citada em todos os filmes da saga. 

O trocadilho existente entre os fãs refere-se a substituição de force por fourth, cuja pronuncia é um pouco semelhante e dá origem ao tema do dia de hoje: "May the fourth be with you". Logicamente, em inglês o trocadilho funciona 100% rsrsrsr

Bom galera, espero que tenham curtido essa curiosidade e não deixem esse dia passar em branco, você que também curte esse clássico do cinema, publique em suas redes sociais uma foto ou algo que mostre a sua relação com Star Wars e utilize a hashtag #maythefourthbewithyou.







terça-feira, 3 de maio de 2016

Upgrade na sua internet! Como descobrir qual melhor DNS?

Pessoal em um post anterior eu expliquei sobre o que é DNS e agora vou ensinar como achar o servidor de DSN que melhor atenda a sua conexão de internet, uma vez que a escolha do servidor tem impacto direto na velocidade do carregamento dos sites no seu navegador.


Como descobrir qual é o melhor DNS?


Para descobrir qual é o melhor DSN, a Google desenvolveu um aplicativo que ajuda o usuário na escolha do melhor servidor DNS de acordo com a sua conexão, possui licença gratuita e está disponível para Windows, Mac e Linux, chamando Namebench.


Namebench possui uma interface simples que com apenas um click "Start Benchmark" o software começa a efetuar os testes para trazer o resultado das pesquisas de DNS.



Ao finalizar, o aplicativo gera um arquivo HTML com os resultados. Neste documento estão alguns gráficos que mostram os servidores com o melhor tempo de resposta e também revela o quanto a sua conexão ficará mais rápida se optar por utilizar os servidores primários e secundários revelados no teste.

O grande problema do aplicativo é a demora para concluir os testes. Após dar inicio minha máquina demorou cerca de 15 a 20 minutos para finalizar. Outro problema é que só possui o idioma inglês, mas nada que atrapalhe a usabilidade ou a interpretação dos gráficos.

Nos meus testes usando o DNS informado a internet ficou 8.6% mais rápida.
Confesso que da uma impressão de veracidade em relação a velocidade.

WampServer #2 - Configurações (parte 1)

Continuando nossos post sobre WampServer, agora vamos fazer algumas configurações no nosso servidor.


A primeira delas é alterar o idioma para português, claro que, caso você prefira configurar pra uma linguagem diferente é com você rs
Vamos clicar com botão direito no ícone wamp, localizado na barra de tarefas e selecionar o idioma "Português".
A próxima alteração será realizada no arquivo "php.ini" que fica localizado no caminho "iconeWamp/php/php.ini". Por padrão os arquivos ".ini" serão abertos com o bloco de notas do Windows, o que particularmente eu acho muito ruim, então eu sugiro instalar, caso ainda não tenha instalado, o Notepad++, que além de ser leve, possui uma interface muito bacana e é bastante utilizado para edições rápidas de várias extensões de arquivos.

Para localizar o arquivo "php.ini" você pode seguir este caminho "iconeWamp/diretorio www", nesse momento você será redirecionado para a pasta onde ficaram salvos todos os seus projetos, mas agora precisamos localizar o arquivo php.ini "..\bin\apache\apache\bin\php.ini", botão direito sobre o arquivo e selecione o seu editor de preferencia.

Com o arquivo aberto, vamos pesquisar pela chave "post_max_size", por padrão esse valor vem com apenas 3Megas, eu sempre mantenho o valor de 70Megas que é um valor bom para o tamanho máximo da quantidade de imagens permitidas, caso não queria definir um limite (o que é um pouco arriscado) coloque o valor "0".

[...]

Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
post_max_size = 3M

[...]
A próxima configuração é em relação ao envio de arquivos, vamos pesquisar a chave "File Uploads" e verificar se as configurações estão da seguinte forma:

[...]

;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;

; Whether to allow HTTP file uploads.
; http://php.net/file-uploads
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; http://php.net/upload-tmp-dir
upload_tmp_dir = "c:/wamp/tmp"

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 64M

; Maximum number of files that can be uploaded via a single request
max_file_uploads = 20

[...]

Vamos entender melhor o que são essas configurações:
  • file_uploads = estamos configurando que será possível realizar uploads de imagens;
  • upload_tmp_dir = pasta temporária onde ficará armazenadas as imagens;
  • upload_max_filesize = tamanho total dos uploads realizados em um único POST;
  • max_file_uploads = quantidade máxima de imagens que serão possíveis enviar em um único POST.
Anteriormente alteramos o "post_max_size" para 70M e mencionei "que é um valor bom para o tamanho máximo da quantidade de imagens permitidas", vamos entender o porque:

Consideremos que o tamanho máximo de cada imagem seja de 4Megas.
Se em único post for possível subir 20 imagens de uma vez já teremos usado: 4Megas x 20 imagens = 80Megas de imagem.

Dessa forma estouramos o valor de "upload_max_filesize" e estouramos o valor de "post_max_size" não sobrando espaço nem para realizar o post dos dados.

Essas configurações dependem totalmente da sua aplicação. Se for possível subir mais de 20 imagens em um único post, e você esta trabalhando com imagens muito pesadas, é aqui que você deverá realizar uma analise e definir os valores necessários. E não se esqueça, os valores alterados nesses campos afetam diretamente o valor configurado em "post_max_size".

Este deve ser sempre maior que o valor de "upload_max_filesize ". Considere pelo menos 6Megas para os dados e 4Megas para possíveis erros do PHP. Detalhe, não coloque por exemplo 1000Megas, pois nenhuma hospedagem permite um valor tão grande a menos que você tenha um cloud server que permita tal configuração.

A próxima alteração é referente a timezone do nosso servidor, vamos pesquisar no nosso arquivo por "date.timezone" e alteraremos o valor para "America/Sao_Paulo".
E por último, vamos pesquisar por "error_reporting", e verificar se o valor atribuído é "E_ALL".
Nosso arquivo ficará da seguinte forma:
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = America/Sao_Paulo

[...]

; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
; http://php.net/error-reporting
error_reporting = E_ALL

[...]


Após realizar essas alterações clique no botão salvar do seu editor, clique no ícone do wamp com botão esquerdo e selecione "Restart All Services". Assim que o servidor iniciar as alterações passam a funcionar.

Temos mais algumas configurações que precisam ser realizadas, mas estarei explicando em um próximo post.

Por enquanto é isso, caso tenha ficado em dúvida sobre algum passo, pode entrar em contato seja por mensagem ou email, fiquem a vontade.

Até a próxima!

segunda-feira, 2 de maio de 2016

O que é DNS?

O DNS, do inglês Domain Name System (Sistema de Nomes de Domínios), trabalha como se fosse um sistema de tradução de endereços IP para nomes de domínios.

Vamos usar como exemplo o endereço "www.google.com.br". Esse link nada mais é que o domínio do Google. Os domínios nunca se repetem, pois representam um endereço único para acessarmos o seu conteúdo, a mesma regra se aplica ao seu IP correspondente.

O que é DNS?


Imagine agora se o DNS não existisse!

Para acessarmos o Google teríamos que decorar o seguinte IP: 172.217.28.67
Copie essa sequência de códigos e cole no seu navegador e veja o resultado.

E assim seria para todos os sites que existem hoje na internet. Ficaria difícil lembrarmos de todas as páginas que acessamos todos os dias, não?
Por isso o DNS faz o serviço duro de traduzir as palavras da URL para o endereço IP do servidor.

Pois bem, existem duas formas de acessarmos as páginas na internet: usando o domínio ou IP dos servidores onde os serviços estão hospedados.

Se você digitar "www.google.com" ou "www.google.com.br" na barra de endereços a mesma página inicial do Google será exibida. Isso significa que os dois domínios apontam para o mesmo IP?

Não! Nos casos em que duas URL's levam para o mesmo site, o que acontece é que uma das páginas realiza o redirecionamento do acesso para a outra página. Ainda usando o Google como exemplo, ao acessar o site ".com" da Google "www.google.com" você automaticamente será encaminhado para o endereço ".com.br". Uma prova disso é que a URL que esta no navegador estará sempre com o "br" no final.

Para descobrir o IP de qualquer site você pode usar esse site MeuEndereçoIP.

Espero ter esclarecido o que é DNS e como funciona.
Até a próxima!

WampServer #1 - Instalando

Pessoal, no post de hoje vou mostrar como instalar e configurar o WampServer.

O WampServer é uma aplicação que instala um ambiente de desenvolvimento web no windows, caso você esteja usando Linux, pode baixar o LampServer ou em caso de Macinstosh, pode estar baixando o MampServer.


WampServer #1 - Instalando e configurano


CURIOSIDADE: Note que a inicial de cada servidor é referente ao sistema operacional.
  • W - Windows = Wamp
  • L - Linux - Lamp
  • M - Macintosh = Map
E cada letra do servidor no caso WAMP representa o seu pacote de funcionalidades:
  • W = Windows 
  • A = Apache
  • M = MySQL
  • P = PHP, Perl e Python

Com ele você pode criar aplicações web com Apache2, PHP e banco de dados MySQL. Também é possível gerenciar facilmente seus bancos de dados com a ferramenta PhpMyAdmin que faz parte do pacote.

A aplicação instala automaticamente tudo que você precisa para iniciar o desenvolvimento de aplicações web além de ser muito intuitiva. Ela permite sintonizar o seu servidor sem alterar nada nos arquivos de configuração.

Na instalação não é necessário alterar nada, basta clicar em próximo em todas as etapas. Caso seja necessário alterar alguma coisa, poderá ser feito no menu que fica localizado na barra de tarefas do windows.

Após a instalação você notará um ícone "W" na barra de tarefas do windows, o mesmo pode ser encontrado em três cores:
  • Verde: Servidor subiu todas as ferramentas e está pronto para uso (Online).
  • Laranja: Servidor não subiu todas as ferramentas e pode apresentar erros.
  • Vermelho: Servidor não está disponível (Offline)
Se o ícone estiver na cor verde o seu servidor está operando corretamente, caso esteja em qualquer outra cor aguarde um pouco, pois o seu servidor pode estar sendo iniciado, e se mesmo aguardando algum tempo seu servidor estiver em alguma cor diferente de verde, clique no ícone na barra de tarefas do windows, com botão esquerdo, selecione "Put Online" ou "Restart All Services".

Uma forma de verificar se tudo ocorreu bem é abrir uma guia no seu navegador e acessar "http://localhost/", uma página de configuração do wampserver deve ser exibida listando todos os seus projetos e outras opções diversas.

Note que ao clicar com botão direito sobre o ícone do wampserver é possível alterar o idioma da aplicação Wamp e com o botão esquerdo você acessa o menu de configurações de todas as ferramentas instaladas.

Um problema clássico ao instalar o wampserver, é o conflito de portas com o Skype, pois ambos utilizam a mesma porta. Para resolver esse problema siga esses passos:
  • Saia do Wampserver;
  • Abra o Skype;
  • Siga o caminho: Tools » Options » Advanced » Connections;
  • Tire o check de "User port 80 and 443";
  • Reinicie o skype;
  • Inicie o WampServer.

É isso, no próximo post eu estarei passando algumas configurações básicas para preparar nosso servidor web.

Até a próxima!

sábado, 30 de abril de 2016

Reclame Aqui - O jantar da vingança



"Em comemoração ao aniversário do Reclame AQUI, nós nos vingamos de algumas empresas que desrespeitam o consumidor. 


Assista a nossa nova campanha, chamada "O Jantar da Vingança", onde chamamos os diretores de algumas empresas com péssimas reputações no nosso site e fizemos eles provarem do seu próprio veneno! O resultado ficou fantástico!"

Não pude deixar de compartilhar esse video. Em algum momento já passamos por momentos como esse e não é nada agradavel.

E o pessoal parece que o pessoal não gostou do serviço prestado rs