segunda-feira, 13 de janeiro de 2020

Comandos GIT para novos repositórios

    Nesse post trago apenas dicas básicas sobre o GIT que estão disponíveis geralmente nos próprios repositórios (GitHub, GitLab, Bitbucket, etc).
Configuração global do GIT 
 
git config --global user.name "seu_nome"
git config --global user.email "seu_email" 
Criando um novo repositório
git clone url_do_seu_projeto (git@blablabla)
cd pasta_projeto
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master 
Criando um repositório para um projeto existente
cd pasta_projeto
git init
git remote add origin url_do_seu_projeto (git@blablabla)
git add .
git commit -m "Initial commit"
git push -u origin master
 Migrando um projeto de um repositório para outro
cd pasta_projeto
git remote rename origin old-origin
git remote add origin url_do_seu_projeto (git@blablabla)
git push -u origin --all
git push -u origin --tags 
 
     Caso não queira Guardar o histórico de branchs, tags, comites, etc, pode-se 
apagar a pasta .git no projeto e fazer como se o projeto nunca tivesse sido 
gerenciado pelo GIT.
 

segunda-feira, 9 de dezembro de 2019

Inicializando e parando o Tomcat no Linux com o comando "service"

    Nesse post vou mostrar como configurar o Tomcat para ser inicializado e parado através do comando "service", e como colocar o servidor de aplicação para ser startado juntamente com a máquina.

    Vamos a configuração: Crie um arquivo em /etc/init.d/ chamado tomcat (não precisa de extensão) com o seguinte conteúdo:

#config tomcat
 

export CATALINA_HOME="/opt/apache-tomcat-7.0.69"

ERROR=0

case "$1" in
  start)
    echo $"Iniciando o Tomcat"
    sh $CATALINA_HOME/bin/startup.sh
    ;;

  stop)
    echo $"Parando servidor Tomcat"
        sh $CATALINA_HOME/bin/shutdown.sh
    ;;

  restart)
    echo $"Parando servidor Tomcat"
    sh $CATALINA_HOME/bin/shutdown.sh
    echo $"Iniciando servidor Tomcat"
    sh $CATALINA_HOME/bin/startup.sh
    ;;

  *)
    echo $"Uso: $0 {start|stop|restar}"

 exit 1
 ;;

esac

exit $ERROR


    Na parte destacada em amarelo, lembrar de colocar o caminho e versão do Tomcat do seu servidor. Agora vamos dar a permisão de leitura e execução:

chmod +rx /etc/init.d/tomcat

   Pronto, agora para inicializar o Tomcat bastausar o comando:

service tomcat start 
   
   E para parar:

service tomcat stop

   O restart por sua vez executa os dois comandos. Agora vamos configurar para iniciar o script no start do servidor. Basta executar este comando:

update-rc.d tomcat defaults

   Através deste comando é criado o link simbólico para a execução na inicialização do Linux. Para remover ele basta executar o seguinte:

update-rc.d tomcat remove

   Para esse post é só! Como sempre, espero ter ajudado...
 

sábado, 7 de dezembro de 2019

Debug remoto no Tomcat com o Eclipse

    Nesse post vou mostrar como preparar o Tomcat para Debug remoto com o Eclipse.

    Primeiro precisamos criar um arquivo na pasta raiz do Tomcat, e esse arquivo muda de extensão e de conteúdo de acordo com o S.O..

    Vamos primeiro ao do Windows: pode chamá-lo de startupDebug.bat e o conteúdo básico deve ser o seguinte:

set JPDA_ADDRESS=8000
set JPDA_TRANSPORT=dt_socket
bin/catalina.bat jpda start


    No ambiente linux o arquivo pode ser chamado de startupDebug.sh e deve ter permissão de leitura e execução (+rx). O conteúdo básico é o seguinte:

export JPDA_ADDRESS=8000
export JPDA_TRANSPORT=dt_socket
bin/catalina.sh jpda start


    Feito isso, quando quisermos debugar o Tomcat pelo eclipse, basta executar o Tomcat a partir desse script, ao invés do startup.bat (ou startup.sh em ambientes Linux) que executamos de costume. A porta de acesso ao sistema via browser continua a mesma de antes, a nova porta configurada foi para o debug. Será necessário liberação da porta no firewall em caso de acesso a servidores protegidos.

    Tendo feito isso e com a aplicação já startada, vamos ao eclipse configurar o debug remoto.

    No eclipse, no menu Run vá em Debug Configurations, a seguinte janela abrirá:


    Clique com o botão direito do mouse na opção Remote Java Aplication e escolha a opção New Configuration.  A imagem abaixo mostra em realce cada ponto de configuração, que são bem intuitivos. Após escolher a aplicação e dizer o endereço da aplicação onde está o localhost, no campo Port coloque a porta que configuramos no arquivo e clieque em Debug.








    Pronto, se todas as configurações estiverem corretas, o eclipse vai se conectar com a aplicação e você poderá debugar normalmente o código. Abraços!

quinta-feira, 14 de novembro de 2019

Criando DataSource no Tomcat 7 e usando com persistence.xml e/ou hibernate.cfg.xml

     Quando criamos uma aplicação, é comum termos ambientes diferentes e/ou clientes diferentes, e isso nos traz a necessidade de fazer a nossa aplicação se conectar com bases de dados diferentes para cada ambiente/cliente. Para resolver isso de forma elegante, tiramos a responsabilidade de conhecer a URL, Usuário e Senha do Banco da aplicação e passamos para o servidor. Nesse post mostro como montar o DataSource no Tomcat. (Foi feito no Tomcat 7 que é o que uso no trabalho).


1 - Copiar as libs referentes ao Driver JDBC e c3p0 para o TomCat



Ex:

- Driver JDBC

postgresql-8.4-702.jdbc3.jar



-Lib c3p0

c3p0-0.9.1.jar



- Dependências da lib c3p0

antlr-2.7.6.jar

commons-collections-3.2.jar

dom4j-1.6.1.jar

jta-1.0.1B.jar



2 - Adicione o seguinte trecho ao arquivo web.xml (Note que o <res-ref-name> contém o mesmo nome que vamos dar a configuração do DataSource no Tomcat)



<resource-ref>

<description>DB Connection</description>

<res-ref-name>jdbc/nome_datasource</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>



Para quem usa hibernate.cfg.xml



3 - No hibernate.cfg.xml remova as informações de conexão (url, usuário e senha) e de pool, e acrescente apenas a seguinte linha:



<property name="hibernate.connection.datasource">java:/comp/env/jdbc/nome_datasource</property>



Para quem usa JPA



4 - No persistence.xml remova as informações de conexão (url, usuário e senha) e de pool, e acrescente apenas a seguinte linha:



<non-jta-data-source>java:comp/env/jdbc/nome_datasource</non-jta-data-source>



5 - Configurar o context.xml (apache-tomcat-7.0.96/conf/context.xml) do Tomcat adicionando o trecho de código abaixo



(Alterando endereço, senha e usuário do banco de acordo com o ambiente/cliente que o Tomcat está alocado)



<Resource name="jdbc/nome_datasource" auth="Container"

factory="org.apache.naming.factory.BeanFactory"

type="com.mchange.v2.c3p0.ComboPooledDataSource"

driverClass="org.postgresql.Driver"

jdbcUrl="jdbc:postgresql://x.x.x.x:5432/nome_banco"

user="usuario_bd"

password="senha_bd"

minPoolSize="10"

maxPoolSize="160" />







Fonte:



Trabalhando com Datas no PostgrSQL

Operações com datas:
timestamp '2001-09-28 01:00' + interval '23 hours' -> timestamp '2001-09-29 00:00'
date '2001-09-28' + interval '1 hour' -> timestamp '2001-09-28 01:00'
date '01/01/2006' – date '31/01/2006'
time '01:00' + interval '3 hours'time -> '04:00'
interval '2 hours' - time '05:00' -> time '03:00:00'

Função age (retorna Interval) - Diferença entre datas
age(timestamp)interval (Subtrai de hoje)
age(timestamp '1957-06-13') -> 43 years 8 mons 3 days
age(timestamp, timestamp)interval Subtrai os argumentos
age('2001-04-10', timestamp '1957-06-13') -> 43 years 9 mons 27 days

Função extract (retorna double) Extrai parte da data: ano, mês, dia, hora, minuto, segundo.
select extract(year from age('2001-04-10', timestamp '1957-06-13'))
select extract(month from age('2001-04-10', timestamp '1957-06-13'))
select extract(day from age('2001-04-10', timestamp '1957-06-13'))

Data e Hora atuais (retornam data ou hora)
SELECT CURRENT_DATE;
SELECT CURRENT_TIME;
SELECT CURRENT_TIME(0);
SELECT CURRENT_TIMESTAMP;
SELECT CURRENT_TIMESTAMP(0);

Somar dias e horas a uma data:
SELECT CAST('06/04/2006' AS DATE) + INTERVAL '27 DAYS' AS Data;

Função now (retorna timestamp with zone)
now() - Data e hora corrente (timestamp with zone);
Não usar em campos somente timestamp.

Função date_part (retorna double)
SELECT date_part('day', TIMESTAMP '2001-02-16 20:38:40');
Resultado: 16 (day é uma string, diferente de extract)

Obtendo o dia da data atual:
SELECT DATE_PART('DAY', CURRENT_TIMESTAMP) AS dia;

Obtendo o mês da data atual:
SELECT DATE_PART('MONTH', CURRENT_TIMESTAMP) AS mes;

Obtendo o ano da data atual:
SELECT DATE_PART('YEAR', CURRENT_TIMESTAMP) AS ano;

Função date_trunc (retorna timestamp)
SELECT date_trunc('year', TIMESTAMP '2001-02-16 20:38:40');
Retorna 2001-02-16 00:00:00

Convertendo (CAST)
select to_date('1983-07-18', 'YYYY-MM-DD')
select to_date('19830718', 'YYYYMMDD')

Função timeofday (retorna texto)
select timeofday() -> Fri Feb 24 10:07:32.000126 2006 BRT

Interval
interval [ (p) ]
to_char(interval '15h 2m 12s', 'HH24:MI:SS')
date '2001-09-28' + interval '1 hour'
interval '1 day' + interval '1 hour'
interval '1 day' - interval '1 hour'
900 * interval '1 second'
Interval trabalha com as unidades: second, minute, hour, day, week, month, year, decade, century, millenium ou abreviaturas ou plurais destas unidades.
Se informado sem unidades '13 10:38:14' será devidamente interpretado '13 days 10 hours 38 minutes 14 seconds'.

CURRENTE_DATE - INTERVAL '1' day;
TO_TIMESTAMP('2006-01-05 17:56:03', 'YYYY-MM-DD HH24:MI:SS')


Fonte:
https://pt.wikibooks.org/wiki/PostgreSQL_Pr%C3%A1tico/Fun%C3%A7%C3%B5es_Internas/Data_e_Hora

sábado, 2 de novembro de 2019

SED (Stream EDitor)

O SED é um editor de texto para usarmos em scripts de configuração para automatizarmos algumas tarefas.
Esse artigo não é de minha autoria e o link do conteúdo original está no final.
1 - Troca todas as palavras em um arquivo por outra

sed -i 's/palavra/outra/' arquivo.txt

2 - Imprime só a nona linha

sed -n '9p' arquivo.txt

3 - Imprime da sexta linha até a nona linha

sed -n '6,9p' arquivo.txt

4 - Deleta todas as linhas que contém a palavra desejada no arquivo

sed -i '/palavra_desejada/d' arquivo.txt

5 - Coloca uma palavra no INÍCIO de cada linha

sed 's/^/palavra/' arquivo.txt

6 - Coloca uma palavra no final de cada linha

sed 's/$/palavra/' arquivo.txt

7 - Imprime só as linhas que COMEÇAM com a string ‘http’

sed -n '/^http/p' arquivo.txt

8 - Deleta só as linhas que COMEÇAM com a string ‘http’

sed -n '/^http/d' arquivo.txt

9 - Troca TODAS ocorrências da palavra “marcos”, “eric”, “camila” pela palavra “pinguim”

sed 's/marcos\|eric\|camila/pinguim/g' arquivo.txt

10 - Troca tudo que estiver ENTRE as palavras “Marcos” e “Eric” pela palavra “eles”, exemplo, o texto é:

“No sábado Marcos saiu de pra brincar de bicicleta com o Eric, mas não ficaram até tarde.” e ficará assim: “No sábado eles, mas não ficaram até tarde.”

sed 's/Marcos.*Eric/eles/' arquivo.txt

11 - Deleta linha em branco e altera o arquivo

sed -i '/^$/d' arquivo.txt

12 - Substitui “foo” por “bar” somente as linhas que contém “plop”

sed '/plop/ s/foo/bar/g' arquivo.txt

13 - Substitui “foo” por “bar” exceto as linhas que contém “plop”

sed '/plop/! s/foo/bar/g' arquivo.txt

14 - Insere da Linha 2 a linha 7 o “#” no início de cada linha

sed '2,7s/^/#/' arquivo.txt

15 - Insere a palavra ‘NEW’ no início de cada linha, da linha 21 até a linha 28:

sed -i '21,28s/^/NEW/' arquivo.txt

16 - Troca tudo entre as tags “<” e “>” pela palavra “CODIGO”:

sed 's/<[^>]*>/CODIGO/g' arquivo.txt

17 - Imprime somente a primeira ocorrência da linha com determinada palavra:

sed -n '/dia/{p;q;}' arquivo.txt

18 - Inclue texto no final da linha 9:

sed '9s/$/final da linha/' arquivo.txt

19 - Coloca todas as linhas em uma só:

sed ':a;$!N;s/\n//;ta;' arquivo.txt

20 - Substitui a palavra “BELEZA” por “SIM” somente entre determinadas linhas:

sed '3,6s/BELEZA/SIM/' arquivo.txt

21 - Apaga o que está entre a palavra “falou” e “segundo” ( delimitadores )

sed '/segundo/{/falou/{s/segundo.*falou//;t};:a;/falou/!{N;s/\n//;ta;};s/segundo.*falou/\n/;}' arquivo.txt

22 - Retira comandos HTML (tudo entre < e > )

sed 's/<[^>]*>//g' arquivo.txt

23 - Apaga o 1° caracter da frase

sed 's/.//' arquivo.txt

24 - Apaga o 4° caractere da frase

sed 's/.//4' arquivo.txt

25 - Apaga os 4 primeiros caracteres

sed 's/.\{4\}//' arquivo.txt

26 - Apaga no mínimo 4 caracteres

sed 's/.\{4,\}//' arquivo.txt

27 - Apaga de 2 a 4 caracteres (o máx. que tiver)

sed 's/.\{2,4\}//' arquivo.txt

28 - Exemplos de intervalo

echo "aáeéiíoóuú" | sed "s/[a-u]//g"

saída: áéíóú

echo "aáeéiíoóuú" | sed "s/[á-ú]//g"

saída: aeiou

29 - Transforma texto (URL) em tags HTML de links.

Era : http://www.com

Fica: <a href=”http://www.com”>http://www.com</a>

sed 's_\<\(ht\|f\)tp://[^ ]*_<a href="&">&</a>_' arquivo.txt



O link abaixo ainda traz o uso de REGEX:

https://terminalroot.com.br/2015/07/30-exemplos-do-comando-sed-com-regex.html

segunda-feira, 28 de outubro de 2019

Gerenciador de pacotes do .Net


Assim como temos o Maven para Java e NPM para JavaScript, também temos um Gerenciador de pacotes para a plataforma .Net, que é o NuGet(https://www.nuget.org/).

É possível hospedar seu próprio servidor NuGet internamente na empresa. A Microsoft disponibilizou uma documentação para isto.

https://docs.microsoft.com/pt-br/nuget/hosting-packages/nuget-server

Após você ou outra pessoa configurar um NuGet interno na empresa, basta configurar o Visual Studio para buscar pacotes neste novo servidor, através do menu Ferramentas > Gerenciador de pacotes NuGet > Configurações de Gerenciador de Pacotes e alterando o item Fonte de pacotes (Package Sources) com o endereço do novo serviço.