quarta-feira, 27 de julho de 2016

O que são arquivos batch?

Fala galera que acompanha o blog...


Nesse post estarei explicando o que são arquivos Batch, os famosos arquivos .bat, como criar um rotina simples, como executar seu arquivo e como adicionar seu arquivo nas variáveis de ambiente.
Um arquivo com extensão .bat pode ser definido como um conjunto de comandos executados em lote (sequencialmente). Criado para MS-DOS tem a função de automatizar tarefas rotineiras e muitas vezes trabalhosas. (Wikipédia)
O que são arquivos batch?


Arquivos Batch são famosos pelo ganho de produtividade, quando se converte uma atividade rotineira que era realizada manualmente, para um bloco de códigos com vários passos. Automatizando o processo e gerando o mesmo resultado.


Um exemplo clássico para quem trabalha com Maven, é executar o comando "mvn clean install", ou "mvn clean install -DskipTests".
Não se preocupem caso não conheçam o maven, esse post é sobre arquivos batch, estou apenas usando o maven de exemplo.

Para conhecer mais sobre Maven, acompanhe nossa sequência de posts sobre, clicando aqui.

Ambos são utilizados para limpar todas as dependências (.jars) e gerar o pacote de deploy do projeto. A diferença entre os dois comandos é que enquanto um roda os testes implementados o outro não (-DskipTests).

Para evitar de digitar esses comandos cria-se um arquivo Batch, que vou chamar de bld.bat (nome qualquer, sigla de build), com a seguinte instrução:
O nome dos arquivos devem ser nomes fáceis e intuitivos.

mvn clean install

e um outro arquivo .bat, que vou chamar de bldst.bat,(sigla de build skip test), para não executar os testes implementados:

mvn clean install -DskipTests

O "texto" mvn clean install será escrito no seu console pressione enter e o comando será executado sobre o seu projeto maven que deve estar na mesma pasta do arquivo .bat, ou é claro salve o arquivo.bat dentro do seu projeto maven.


Nossa mas eu preciso fazer isso tudo só para escrever uma simples linha?
Sim, no primeiro momento! No entanto, seu arquivo batch poderá ser executado diversas vezes. O trabalho é só no momento de criar o arquivo, depois fica tudo mais fácil e o ganho de produtividade aumenta. Esse exemplo foi apenas para exemplificar e ensinar como podemos utilizar arquivos batch no nosso dia a dia e como ele facilita tarefas rotineiras.

Continuando...

Um site que eu uso bastante é o WikiBooks. E nesse link aqui você encontra uma boa quantidade de comandos que podem ser utilizados.

De exemplo, vamos utilizar o seguinte trecho de código:
@echo off
echo Computador: %computername%   Usuario: %username%
pause
start www.deviscoming.com

Esse trecho, oculta o comando no prompt de comando exibindo apenas resultados, escreve o nome da nossa máquina seguido do usuário logado, demos uma pausa, nesse momento o console aguarda que alguma tecla seja pressionada e posteriormente o site configurado é exibido no seu navegador padrão. Siga os passos abaixo para criar o seu arquivo:
  1. Abra um editor de texto de sua preferência. Aqui estou usando o Notepad++;
  2. Escreva as suas instruções dentro do arquivo (utilize o código de exemplo);
  3. Clique em salvar e selecione um local onde serão armazenados todos os seus arquivos .bat. Adiante explico o motivo de manter todos em um mesmo diretório;
  4. De um nome para seu arquivo.
PASSO 4 - Normalmente os arquivos são salvos com extensão .txt. Para não ser necessário procurar pela extensão .bat, escreva o nome do seu arquivo circundado por apóstrofos "". No meu exemplo utilizarei "info.bat".
O arquivo que criamos não tem muita utilidade. Como explicado no inicio do post, arquivos de lote servem para automatizar atividades rotineiras e muitas vezes trabalhosas. Aqui apenas aprendemos como criar um arquivo de lote.

Nosso arquivo esta pronto para ser executado.Temos 2 formas de faze-lo:
  • Double click sobre os arquivos;
  • Ou via prompt de comando:
    • Clique em "Iniciar" pesquise por cmd, abra o arquivo cmd.exe
      • Windows + r e pesquise por cmd e pressione a tecla enter;
    • Navegue até a pasta onde você salvou seu arquivo:
      • copie o caminho onde seu arquivo foi salvo, digite cd, cole o caminho do arquivo no console e pressione enter;
      • ou via comando utilize cd para abrir pastas e cd.. para voltar pastas;
    • Escreva o nome do seu arquivo, no meu caso info, pressione enter.
No entanto é muito trabalhoso navegar pelos diretório para executar o nosso arquivo. Uma forma de resolver isso, é adicionando nosso arquivo na variável de ambiente, dessa forma em qualquer diretório que estiver será possível chamar o seu arquivo Batch.

Sugiro que caso não saiba o que são as variáveis de ambiente, leia este post onde ensinamos a criar uma variável de ambiente.

Criado a sua variável de ambiente para o arquivo info, abra o prompt de comando navegue para um diretório qualquer, digite o nome da sua variável (que não precisa ser o mesmo nome do arquivo) e pressione enter. Pronto, seu arquivo batch foi executado sem a necessidade de navegar para o diretório onde o arquivo está salvo. Fica mais fácil não?

O mesmo poderia estar sendo feito com o primeiro exemplo sobre maven utilizando o arquivo bld e bldst. Ao invés de salvar o arquivo dentro do meu projeto, salvaria na pasta onde estão todos os arquivos do tipo batch e a executaria sempre que necessário de qualquer diretório e projeto que estiver trabalhando.

Bom, agora que conhecem os arquivos batch e sabem como cria-los e executa-los, explore as possibilidades, pense nas atividades que realiza diariamente no seu trabalho, desenvolva um fluxo e automatize essas tarefas e quem sabe compartilhar os arquivos para seus amigos na empresa para que todos possam se beneficiar do seu arquivo.

É isso ai pessoal, até a próxima.

terça-feira, 26 de julho de 2016

Debug #9 - Função strTran() - Advpl

Fala galera!

Hoje falaremos um pouco sobre a função strTran(). Essa função é muito útil para quem precisa alterar uma string, onde precisa retirar ou substituir caracteres específicos.



A função possui 5 parâmetros, porém somente 2 são obrigatórios. Vamos analisá-lo:

TDN Totvs - StrTran

O retorno é uma nova string com os caracteres substituídos. Antes de utilizar, é preciso atentar-se a algumas observações:
  • a função é case sensitive;
  • se o campo cReplace não for informado, os caracteres ficarão vazios;
  • se omitido o campo nStart, o valor padrão (1) será utilizado;
  • se omitido o campo nCount, todos os caracteres encontrados serão substituídos.
Veja um exemplo:

user function strTran
      
private cString := "123 123 123 123"
private cNovaString := ""                      

cNovaString := strTran(cString, "1"  , "4")

msgInfo("String original: " + cString + CHR(10) + CHR(13) +;
  "String nova: "+ cNovaString)

return           

E abaixo está o resultado:


Simples, não? Espero que seja útil esta dica.

Fonte: TDN Totvs

Até mais!

;)

domingo, 24 de julho de 2016

GO GO! Hangout - Workshop certificações

Fala galera que acompanha o blog...

Anunciando aqui um Hangout muito importante para qualquer profissional que queira obter certificações. O Hangout é voltado para certificação Oracle, no entanto em vários pontos é tratado de maneira geral a importância do certificado para profissionais de TI. Vale muito a pena conferir!

GO GO! Hangout - Workshop certificações


Nesse evento, Willian Miranda tratará dos seguintes assuntos:

1) As diferentes certificações Oracle; 

2) O porque dos Altos Salários; 

3) Como você pode se tornar esse profissional diferenciado e muito bem pago;

4) Tirar todas as suas dúvidas (Respondendo ao vivo as perguntas)

5) Tudo Sobre Nossos Cursos, Bônus Especiais, Garantias Incríveis Oferecidas; 

6) Sobre as  vagas para a formação SQL Expert 2.0 (Certificação OCE);

7) E como o próprio Willian disse: "E mais, muito mais “Surpresas"!!"

Acompanhe tudo sobre o evento na página do Facebook. E para se inscrever clique aqui, preencha o formulário e receba todas as informações no seu email. 

Então não perca! O evento será amanhã (25/07), as 20 horas. Evento totalmente GRÁTIS e online. 

É isso pessoal, fica o convite e até a próxima!

Variáveis de Ambiente

Fala galera que acompanha o blog...


Um post rápido, direto e com imagens detalhadas de cada passo sobre como gerenciar (CRUD) uma variável de ambiente.



Variáveis de Ambiente

É um assunto antigo e muito falado em vários posts pela internet, por ser muito importante na hora de realizar a configuração do ambiente de desenvolvimento. Mas vamos deixar aqui a nossa contribuição para o pessoal que está iniciando como desenvolvedor e precisa configurar seu ambiente.


  1. Clique no botão Iniciar;
  2. Clique com o botão direito do mouse na opção "Computador" e selecione propriedades;
Outra opção:
  1. Clique no botão Iniciar;
  2. Clique em Painel de Controle;
  3. Clique em Sistema.

Clique em "Configuração avançadas do sistema".



Clique em "Variáveis de Ambiente..."




Nessa tela é que criamos ou uma variável de sistema ou uma variável de usuário, a diferença de um tipo para outro já fica implícito no nome.
Nesse tutorial estarei criando uma variável de sistema. Mas os mesmos passos são seguidos caso deseje criar a variável de usuário.

Perceba que a lista de variáveis é definida por chave e valor, onde a chave é o nome da sua variavel e o valor o caminho onde se encontra o seu serviço.


Clique no nome da variável de usuário ou de sistema que você deseja alterar ou excluir. 

  • Clique em Novo para adicionar um novo valor e nome de variável.
  • Clique em Editar para alterar o valor e o nome da variável atual.
  • Clique em Excluir para remover um valor e nome de variável.

Para esse exemplo vamos criar a variavel de ambiente JAVA_HOME.


Definimos o nome da variavel como JAVA_HOME e o valor da variavel é o caminho onde foi instalado a JDK. Clique em "OK" para confirmar a criação da variavel e "OK" novamente na tela de variáveis de ambiente para atualizar todas as variáveis configuradas.

Um teste simples, abra o prompt de comando e escreva echo %JAVA_HOME".
Ao informar a chave o console de prompt nos apresenta o valor configurado: C:\Program Files\Java\jdk1.7.0_79

Agora precisamo adicionar nossa variavel dentro da variavel PATH. Siga os passos:
  1. Localize a variavel PATH, selecione e clique em editar;
  2. Em valor da variavel, vá até o final da string e adicione um ponto e virgula ";", caso não tenha, e adicione a sua variavel %JAVA_HOME%.
Observe que após a variavel eu adicionei /bin isso foi necessário pois o conteúdo da minha JAVA_HOME termina com a versão da JDK, mas o executável do JAVA fica dentro de bin.
Resultado:

Clique em "OK" para confirmar a edição da variavel e "OK" novamente na tela de variáveis de ambiente para atualizar todas as variáveis configuradas.

Vamos realizar o mesmo teste anteriormente no prompt de comando, mas dessa vez passando o comando echo %PATH" e o resultado será uma string com todas as suas variáveis definida e ao final o valor da sua variavel JAVA_HOME.

Pessoal é isso, espero que tenha ajudado, que tenha ficado claro, qualquer dúvida mande-nos uma mensagem.

Até a próxima!

sábado, 23 de julho de 2016

Maven #1 - O que é o Maven?

Fala galera que acompanha o blog...

Hoje começamos uma série de posts sobre Maven ou Apache Maven.
Vamos estar explicando o que é, como configurar, como utilizar, porque utilizar, comandos utilizados, as fases do build, resolução de dependências e vários outros pontos importantes sobre esse "gerenciador de dependências".


Maven #1 - O que é o Maven?


Estou bastante animado com essa série de post, mesmo o Maven já estando no mercado a algum tempo, muita gente ainda não utiliza e logo vão perceber como essa ferramenta é muito poderosa e produtiva.

Quando estamos falando em desenvolvimento de sistemas, nos deparamos com um problema muito comum que é fazer com que toda a equipe construa o artefato final da mesma maneira com as bibliotecas e configurações corretas. Existem várias maneiras de tratar esse problema e a mais comum é utilizar alguma ferramenta que copie as dependências e configurações para lugares corretos e dessa forma esses arquivos sejam um pacote junto da aplicação.
A ferramenta muito utilizada para esse propósito no mundo Java é o Ant (http://ant.apache.org/). O Ant possibilita escrever scripts de "build" para copiar as bibliotecas, arquivos de configuração e qualquer outro arquivo necessário para o artefato da aplicação. Dessa forma garante-se que qualquer desenvolvedor possua os arquivos certos para gerar o artefato da aplicação localmente, garantindo que o artefato gerado é o mesmo que qualquer outro membro do time irá usar.

Mas onde será armazenado as bibliotecas externas para que o Ant as encontre?
A resposta mais óbvia e comum é guardá-las no repositório juntamente com o fonte, dessa forma a equipe compartilharão as mesmas dependências e os caminhos das pastas são mantidos.

Funciona muito bem! Para projetos pequenos e equipes pequenas. No entanto ao estender o tempo de vida do projeto notamos que o overhead de manutenção interfere diretamente no andamento do desenvolvimento. Isso porque novas versões das dependências são lançadas, o número de dependências começam a aumentar.

Sem dúvida essa é uma das motivações para a Apache ter criado o Maven (http://maven.apache.org/).
Maven é muito mais que um gerenciador de dependências, é uma ferramenta de integração, controle de versão dos artefatos.
Ao utilizar o Maven, conseguimos isolar as bibliotecas utilizadas no projeto em um "repósitorio" compartilhado na internet, ao utilizar o repositório central do Maven, ou apenas com a sua equipe. Dessa forma não é necessário se preocupar com a disponibilidade das mesmas no repositório do código e muito menos com  duplicidade de dependências entre os módulos do projeto. E em relação a versão, que foi um dos problemas citados ao utilizar o Ant, ficam centralizadas em arquivos de configuração dos projetos de forma hierarquizada e explícita pelos módulos (POM).

Caso queiram saber mais a fundo sobre a história de como surgiu o Maven, no site da Apache é possível acompanhar toda a trajetória, History of Maven by Jason van Zyl.

Aguardem nossos próximos posts sobre Maven.
Até a próxima!

quinta-feira, 21 de julho de 2016

Splash Screen no Android

Fala galera!

Este post será uma dica rápida e simples para aqueles que, assim como eu, estão iniciando no mundo do desenvolvimento Android. 




Vocês já perceberam que a maioria dos aplicativos - se não todos - possuem uma tela de apresentação ou também conhecida como splash screen. O splash screen é um recurso muito utilizado em desenvolvimento, não só de aplicativos, mas também em jogos e softwares diversos. 

Essa funcionalidade é extremamente útil, pois permite que, antes de iniciar o aplicativo, seja possível realizar validações de diversos recursos para o perfeito funcionamento da aplicação. Tais recursos podem ser conectividade com banco de dados, internet, GPS, etc.

Em outro post, falamos um pouco sobre o teste de conexão de internet que seu aplicativo possa verificar antes de continuar a execução normalmente. Você poderia adicionar essa tela splash screen durante a verificação, por exemplo.

Vamos lá então!

Para iniciarmos, precisamos modificar nosso AndroidManifest. Vamos deixá-lo dessa forma:

<manifest 
android:versioncode="1" 
android:versionname="1.0" 
package="com.deviscoming.splashscreen" 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools">

    <uses-sdk 
          android:minsdkversion="9" 
          android:targetsdkversion="18"/>

    <application 
          android:allowbackup="true" 
          android:icon="@drawable/logo_app" 
          android:label="@string/app_name" 
          android:supportsrtl="true" 
          android:theme="@style/AppTheme">

        <!-- Splash Screen -->
        <activity 
            android:icon="@drawable/logo_app" 
            android:label="@string/app_name" 
            android:name=".SplashScreenActivity" 
            android:nohistory="false" 
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN">
                    <category android:name="android.intent.category.LAUNCHER">
                    </category>
                </action>
            </intent-filter>
        </activity>      
        <!-- fim Splash Screen -->

        <!-- activity principal -->
        <activity 
               android:icon="@drawable/logo_app" 
               android:label="@string/app_name" 
               android:name=".MainActivity" 
               android:theme="@style/AppTheme.NoActionBar">        
       </activity>
       <!-- fim activity principal -->
    </application>

</manifest>

Assim, definimos que a primeira activity a ser executada será a nossa SplashScreenActivity. Esta classe será executada ao iniciar o aplicativo. Nela iremos codificar, conforme o código abaixo.

package com.deviscoming.splashscreen;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;

/**
 * Created by Renan Rodrigues Ramos on 15/07/2016.
 */
public class SplashScreenActivity extends Activity {

    private final int TIME_SPLASH_DISPLAY = 4000;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash_screen);

        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                   Intent i = new Intent(SplashScreenActivity.this, MainActivity.class);
                   startActivity(i);
                   finish();
            }
        }, TIME_SPLASH_DISPLAY);
    }

}

Nesta classe, como podemos ver, temos um objeto Handler() e utilizaremos o método postDelayed() que será responsável por fazer o delay na inicialização de nossa aplicação.

O método postDelayed() possui dois argumentos:
  • a thread que será responsável pela execução em segundo plano. Em nosso caso teremos o método run() da interface Runnable que é a responsável por iniciar a activity para o usuário;
  • uma constante que definimos com 4000 milissegundos, ou seja, 4 segundos.


Veja que dentro do método run() temos um objeto Intent que inicia a classe MainActivity após o término do delay.

   Intent i = new Intent(SplashScreenActivity.this, MainActivity.class);
   startActivity(i);

Aqui está o layout da tela splash screen. A nomeamos como activity_splash_screen:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/branco">

  <ImageView
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:src="@drawable/splash_screen_imagem"
      android:paddingBottom="@dimen/padding_img_splascreen_bottom"
      android:paddingLeft="@dimen/padding_img_splascreen_left"
      android:paddingRight="@dimen/padding_img_splascreen_right"
      android:paddingTop="@dimen/padding_img_splascreen_top"/>

</LinearLayout>

Depois de fazer essas configurações, você precisará desenvolver a classe MainActivity e seu layout. Com isso sua tela de apresentação já está funcionando.

Deixe seus comentários e dicas!

Até mais!

;)

terça-feira, 19 de julho de 2016

Uowww 4000 visualizações

Fala galera que acompanha o blog...

E mais uma vez, vocês são demais! rsrs
Com esse titulo digno de um episódio de Dragão Ball Z, onde o titulo é um puta spoiler, gostaria de agradecer muito a todos vocês que tem acompanhado o blog, nossos posts, nossa página no Facebook e acompanhado todo nosso trabalho...

E é claro agradecer as 4000 visualizações. UHUUUU!


Uowww 4000 visualizações


Estamos com quase 100 posts, e você que ainda não leu esse post ou é novo por aqui, clique aqui e entenda como o blog está organizado, dessa forma facilita sua busca aqui dentro do blog e assim consegue selecionar os assuntos que mais lhe interessam.

É isso ai, um forte abraço a todos e até a próxima!


segunda-feira, 18 de julho de 2016

GO GO! 1º Oficina de Spring Framework

Fala galera que acompanha o blog...

Estamos anunciando aqui mais um evento super interessante que a Algaworks vai promover. O evento acontecerá entre os dias 01/08 à 10/08 e o o assunto será Spring Framework. Serão videoaulas, online e grátis! 

GO GO! 1º Oficina de Spring Framework


Mas, para participar você precisa preencher um cadastro, informando seu nome e email para garantir a vaga nos dias do evento.

Como vai funcionar essas videoaulas e o que você precisa saber:
  • Será apresentado a arquitetura de um projeto com Spring Framework, Thymeleaf, JPA, Bootstrap, JavaScript e outros;
  • Desenvolvimento de um projeto do 0 com os instrutores;
  • Troca de ideias com a comunidade, perguntar e respostas...
  • Será possível realizar o download do código fonte, mas pessoal nem por isso deixem de participar, esperando apenas o fonte ao final do evento hein!
  • Livreto digital gratuito sobre Spring.
O evento será ministrado pelo instrutor Normandes Junior, sócio e instrutor da AlgaWorks. detentor das certificações LPIC-1, SCJP e SCWCD. Palestrante internacional, autor e co-autor de vários livros e instrutor de diversos cursos.

É isso pessoal, o evento tem alguns dias ainda pra acontecer, mas faça já sua inscrição, garanta o seu lugar e bom aprendizado a todos.

Não deixe de compartilhar com seus amigos...
Até a próxima!

sexta-feira, 15 de julho de 2016

Happy Hour #4 - Realidade aumentada

Fala galera que acompanha o blog...

Como todos sabem, Pokemon GO foi liberado oficialmente em alguns paise e tem sido um sucesso total!

A Nintendo, Google e outras grandes empresas relacionados a tecnologia, acreditam que o Pokemon GO era o ponto inicial do uso de realidade aumentada que precisava para grandes idéias surgirem e novas aplicações em vários segmentos de mercado.

Mas o Pokemon GO eu deixo pra outro post rsrs
Nesse post aqui eu queria falar sobre as possibilidade que já existem hoje no mercado, começando é claro pela caneca mais foda fantástica do mundo, que é um presente e tanto para qualquer pessoa.

A principio é apenas uma caneca, até que você baixe o aplicativo KRIATIVOS, posicione sobre a caneca e:



OLHAAA ISSO! x.x

No site da Kriativos, você encontra a loja onde pode adquirir além da caneca, camisetas e outros itens. 

Outra ideia muito bacana também, é do aplicativo Ink Hunter, atualmente disponível apenas para iOS.

Sabe aquela tatuagem que você tem muita vontade de fazer mas não sabe muito bem como ela ficaria sobre o corpo. Esse aplicativo projeta a imagem sobre a sua pele e assim é possível ter a experiência visual de como a tatuagem ficará em você.

A utilização é bastante simples: basta demarcar a área onde quer projetar a tatuagem com os traços | _ | sobre sua pele utilizando uma caneta comum, escolher a imagem e posicionar a câmera para que a imagem selecionada “apareça” em seu corpo na tela do smartphone.



Conhece algum outro aplicativo ou nicho de mercado que tem usado essa tecnologia para seus produtos, deixe ai nos comentários.

Até a próxima!


quinta-feira, 14 de julho de 2016

GO GO! Freela criativo

Fala galera que acompanha o blog...

Esse post mesmo tendo a tag GO GO!, não é um evento com data marcada. Na verdade, são vídeos e artigos exclusivos sobre tudo que você precisa saber para se tornar um freela de 5 digitos $$$.


GO GO! Freela criativo


Como descreve o idealizador do conteúdo Willian Baldan, que é consultor de marketing digital:
Enquanto alguns buscam sobreviver, tem vários freelas no mercado faturando na casa dos 10mil todo mês (5 dígitos). Eu mesmo tive o privilégio de ter esses resultados e quero te ensinar o considero mais relevante para qualquer profissional alcançar esse nível.
Para ter acesso a todo esse conteúdo basta acessar o site  preencher seu email e receba todas as aulas e artigos totalmente GRÁTIS!

Um exemplo das aulas que o Willian disponibiliza:
  • É lucrativo vender criação de logos e identidade visual?
  • 3 motivos que fazem da crise o cenário perfeito para freelas
  • 5 motivos que impedem seus clientes de voltarem

"Enquanto tem uma porção de profissionais correndo atrás de clientes, outros faturam mais de 10 salários por mês e estão até dispensando serviços. O objetivo dos vídeos é de ajudar mais freelas a mudarem a forma como conseguem clientes. De forma que eles venham até você dispostos a pagar mais e permaneçam contigo.
Retendo seus melhores clientes você nunca mais precisará correr atrás de jobs, nem gastará tanto tempo e energia com reuniões chatas, se desgastando no trânsito ou em transporte público." (Willian Baldan)

É isso ai pessoal, pode ser a sua chance de crescer no mercado, conseguindo atrair vários clientes e assim alcançar quem sabe os 5 dígitos.

Até a próxima!