quarta-feira, 23 de agosto de 2017

Criação de Serviços no Windows com nssm

nssm é uma excelente ferramenta que permite gerenciamento de serviços no windows. 

nssm monitora a execução do serviço e tentará reinicia-lo mediante alguma falha.

A promessa é que, com nssm, existe a certeza de que se um serviço está marcado como 'Em Execução', então ele realmente estará. 

nssm registra logs no sistema de eventos do Windows, de tal forma que é possível acompanhar o comportamento de uma aplicação.

Para facilitar a configuração do serviço, nssm também possui uma interface gráfica. 

Exclusão de serviço também é bem simples com nssm.

Instalação

Não é necessário instalar o nssm. Apenas, descompacte o arquivo e adicione uma chave no PATH.

A versão utilizada foi a 2.24.

Instalando um serviço

Para instalação de um serviço, use o comando:

nssm install

Uma janela contendo várias abas será exibida. Cada aba possui diversos parâmetros, sendo que a maioria já possui valores padrão. De tal forma, que é possível instalar um serviço apenas configurando a aba Aplicação (Application).

O exemplo a seguir é de um serviço que executa uma aplicação java. Ainda é possível verificar a passagem de parâmetros para a VM.



Após instalar o serviço com sucesso, confirme na ferramenta de controle de Serviços do Windows.




O comando equivalente para instalar o serviço é:

nssm install service-example "C:\Program Files\Java\jdk1.8.0_131\bin\java.exe" "-DBASE_LOG_PATH=C:\logs -jar C:\service-example.jar"

nssm set service-example AppDirectory "C:\PASTA_DO_APP"

#Melhor especificar uma pasta diferente de C:\Program Files\Java\jdk1.8.0_131\bin\

terça-feira, 27 de junho de 2017

Configuração do Redmine no Windows com SQLServer

OBS: Instalei no Windows 10

1. Instalação do Ruby (versão 2.3.3) para o Windows através do rubyinstaller 2.3.3


2. Instalação do DevKit para Ruby 2.0 to 2.3
Site: 'http://rubyinstaller.org/downloads'
Intruções: 'http://github.com/oneclick/rubyinstaller/wiki/Development-Kit'

Quick start

. Descompactar o arquivo em algum local permanente
. Abrir o terminal no diretório
. executar ruby dk.rb init e ruby dk.rb install para configurar o ruby no ambiente


3. Instalação do sql server 2016 SP1 developer EDITION

Habilitar Modo de Autenticação do SQL Server e Windows

4. Instalação do Redmine

4.1 Baixar a aplicação com o pacote da versão 3.3.3

4.2 Criação da base de dados e do usuário da aplicação

USE [master]
GO

-- Very basic DB creation
CREATE DATABASE [REDMINE]
GO

-- Creation of a login with SQL Server login/password authentication and no password expiration policy
CREATE LOGIN [REDMINE] WITH PASSWORD=N'redminepassword', DEFAULT_DATABASE=[REDMINE], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO

-- User creation using previously created login authentication
USE [REDMINE]
GO
CREATE USER [REDMINE] FOR LOGIN [REDMINE]
GO
-- User permissions set via roles
EXEC sp_addrolemember N'db_datareader', N'REDMINE'
GO
EXEC sp_addrolemember N'db_datawriter', N'REDMINE'
GO

OBS: Adicionalmente, configure permissões para execução das migrações de banco de dados para o Redmine

4.3 Configuração da conexão do banco de dados

Copiar o arquivo config/database.yml.example para config/database.yml
Editar as propriedades deste arquivo de acordo com o valores de conexão do usuário redmine

Exemplo para localhost, porta 1433:

production:
  adapter: sqlserver
  database: redmine
  username: redmine
  password: redminepassword


4.4 Instalação das dependencias

Redmine utiliza o Bundler para gerenciar as dependencias do projeto.

Comando para instalar o Bundler:

(Use Start Command Prompt with Ruby)
gem install bundler

Com o bundler instalado, você pode baixar as dependencias do projeto do Redmine:

(Use Start Command Prompt with Ruby)
bundle install --without development test


5. Instalação da gem rmagick

Pre-requisito:
Necessário ter o DevKit instalado (Neste caso, foi instalado pelo RubyInstaller)

Instalar o ImageMagick versão 6.7.9.9 baixando e executando o pacote daqui(https://www.imagemagick.org/download/windows/releases/)

Para instalar a gem, execute:

set CPATH=C:\Program Files\ImageMagick-6.7.9-Q16\include
set LIBRARY_PATH=C:\Program Files\ImageMagick-6.7.9-Q16\lib
bundle install


6. Troquei a versao da gem para o adaptador do SQLServer

gem "tiny_tds", "~> 1.1.0", :platforms => [:mri, :mingw, :x64_mingw]


7. Proteção de sessão

bundle exec rake generate_secret_token


8. Criação das objetos do banco de dados

Na pasta do redmine, executar o seguinte comando:

set RAILS_ENV=production
bundle exec rake db:migrate

As migrações criarão todas as tabelas, o conjunto de permissões e a conta de administrador da aplicação com o usuário admin.


9. Massa de dados default

Para persistir a configuração padrão na base de dados execute o seguinte comando:

set RAILS_ENV=production
set REDMINE_LANG=fr
bundle exec rake redmine:load_default_data

10. Testando a aplicação

Apenas para finalidade de teste, vamos adotar o servidor WEBrick:

bundle exec rails server webrick -e production

Com o WEBrick iniciado, abra o browser e digite http://localhost:3000/. Se tudo der certo, você verá a página inicial do Redmine.

Em produção, pode ser configurado um apache.


11. Logando na aplicação

Os valores default de acesso para o administrador são:

login: admin
password: admin

-------------------------------------------------------------------------------
Informações adicionais em:

http://www.redmine.org/projects/redmine/wiki/redmineinstall

quinta-feira, 16 de fevereiro de 2017

Procurando textos em arquivos pelo Terminal

É possível pesquisar conteúdos de arquivos utilizando o comando grep


grep -l  [texto da pesquisa] [arquivos da pesquisa]

Exemplo: 

cd ~/
grep -l  "futebol" *

ou usando recursividade:
grep -lr  "futebol" *

sexta-feira, 3 de fevereiro de 2017

Gerando classes a partir de um WSDL

No próprio jdk existe uma ferramenta chamada wsimport que é utilizada para traduzir um arquivo Web Services Description Language (WSDL) file, gerando os arquivos necessários (JAX-WS portable artifacts) para um cliente de web service, e permitindo que o cliente acesse este web service publicado.

A ferramenta wsimport está disponível em $JDK/bin.

Como exemplo, vamos usar o endereço do web service dos correios.

Para gerar as classes, o comando ficaria:

wsimport -keep -verbose https://apps.correios.com.br/SigepMasterJPA/AtendeClienteService/AtendeCliente?wsdl

sexta-feira, 23 de setembro de 2016

Recuperando a versão do jdk que gerou o class

Utilize o seguinte comando no terminal:

javap -verbose NomeDoArquivoClass | grep "major"

Normalmente, o que se deseja é a major version. Dos quais os possíveis valores são:

Java 1.2 - version46
Java 1.3 - version 47
Java 1.4 - version 48
Java 5 - version 49
Java 6 - version 50
Java 7 - version 51
Java 8 - version 52

quinta-feira, 15 de setembro de 2016

Redimensionando imagens em background no terminal do OS X

Existe um comando bem simples que permite redimensionar todas as imagens de uma pasta no terminal do OS X:

sips -Z 640 *.jpg

. sips é o comando 
. -Z informa para manter a proporção de largura e altura da imagem. 
. 640 é o valor máximo para altura e largura
. *.jpg informa para reduzir todas as imagens com  extensão .jpg


Link original: Batch Resize Images Quickly in the OS X Terminal

quarta-feira, 27 de abril de 2016

Retirando acentos e caracteres especiais de uma string

Para isso é preciso utilizar a classe Normalizer antes de realizar o replace dos caracteres:

    String string = "ÚÇÁºT";

    string = Normalizer.normalize(string, Normalizer.Form.NFD);

    string = string.replaceAll("[^\\p{ASCII}]", "");

terça-feira, 25 de agosto de 2015

Configurar Vagrant para passar por proxy

Primeiramente, tente apenas configurar duas variáveis de ambiente com configurações de proxy:

export http_proxy=http://user:password@host:port
export https_proxy=http://user:password@host:port

Também pode ser necessário instalar um plugin:

vagrant plugin install vagrant-proxyconf

E configurar o seu Vagrantfile:

config.proxy.http     = "http://proxy:port"
config.proxy.https    = "http://proxy:port"
config.proxy.no_proxy = "localhost,127.0.0.1"

quinta-feira, 20 de agosto de 2015

Editando arquivo de hosts

Os arquivos hosts são usados para resolver nomes internamente na máquina antes de acessar o DNS.

Independentemente da plataforma, o arquivo hosts possuem a mesma sintaxe.

Cada registro do arquivo possui três partes:
. A primeira parte é o endereço de redirecionamento
. A segunda é o endereço que será redirecionado
. A terceira é apenas para comentário e pode ser omitida

Muitos registros são usados para prover entradas para loopback.

Exemplos:

127.0.0.1 localhosts #loopback
127.0.1.1 endereco.com.br

Segue a localização do arquivo nos sistemas operacionais:
. Windows: c:\windows\system32\drivers\etc\hosts
. linux ou MacOS: /etc/hosts

quarta-feira, 19 de agosto de 2015

Configuração de proxy no git

Use o seguinte comando para configurar proxy no git.

Detalhe para o [s] quando se trata de HTTPS

git config --global http.proxy http[s]://userName:password@proxyaddress:port

terça-feira, 14 de abril de 2015

Como configurar o Wildfly como serviço

Redirecionado para  o GitHub

segunda-feira, 11 de novembro de 2013

Instalar e empacotar uma lib pelo maven

Pode acontecer de precisarmos distribuir uma lib na aplicação.

Para isso, precisamos definir as propriedades do plug-in maven-install-plugin.

E além disso, é preciso criar uma pasta lib na raiz do projeto maven contendo o arquivo que será empacotado.



  org.apache.maven.plugins
  maven-install-plugin
  
    
      false
      installNomeDaLib
      package
      
        install-file
        
          lib/nomeDaLib.jar
          com.caminhoDaLib
          nome
          jar
          true
        
      
    
  

sexta-feira, 30 de agosto de 2013

Configuração de log no JBoss 7

Usando o JBoss 7.1.1, configuro o log da aplicação assim:
  • editando o standalone.xml;
  • usando a api de log do próprio JBoss.

Editando o arquivo standalone.xml

No subsytem urn:jboss:domain:logging:1.1, coloque um handler e um logger para sua aplicação:

    
        
    
    
    
    


    
    
        
    

Importante ressaltar o atributo use-parent-handlers para que os logs não sejam misturados.

Api de log do JBoss

Para escrever suas linhas de log, use a própria API de log do JBoss:
package br.com.company;

import org.jboss.logging.Logger;

public class UseLogger {

    private final static Logger LOGGER = Logger.getLogger(UseLogger.class);

    public void doCall() {
        try {
        } catch (Exception e) {
            LOGGER.error("Info Log", e);
        }
        LOGGER.info("Info Log");
        LOGGER.debug("Really not important");
    }
}

segunda-feira, 26 de agosto de 2013

Execução de arquivos shell script no MacOS


Arquivos .sh  são aqueles utilizados para instalar alguma aplicação ou executar alguma operação no sistema operacional.

  Forma simples de execução:
    sh arquivo.sh
    ou  
    bash arquivo.sh

  Execução como usuário root (será solicitada senha)
    sudo bash arquivo.sh

terça-feira, 20 de agosto de 2013

Comandos úteis no MacOS

mkdir
  Cria um novo diretório

touch
  Cria um novo arquivo

cp
  Copiar arquivo

scp
  Copia de arquivos usando ssh
  ex: scp -P porta arquivo user@host:/dir

mv
  Mover arquivo

rm
  Remover arquivo ou diretório

less
  Exibir o conteúdo de um arquivo usando scroll

pwd
  Exibe o caminho completo do diretório

echo
  Uso, principalmente, para exibir o conteúdo de uma variável de ambiente (echo $PATH)

tail
  Exibir a parte final de um arquivo. Eu uso bastante para acompanhar log.
  Com a opção -f, é possível checar por novos dados adicionados no fim do arquivo.
  tail -f arquivo

tail com ssh

sftp
  Para transferência de arquivo.
  -o para comandos extras, ex: -oPort=6546
 sftp -oPort user@host
  
  Uma vez conectado, usam-se os comandos get e put para copiar arquivo de/para a máquina remota.
  get remote_path [local_path]
  put local_path [remote_path]

Para maiores informações sobre o comando, podemos usar o comando man, como em, man mkdir.

terça-feira, 20 de novembro de 2012

Lendo parâmetros da máquina virtual Java com Spring

Para esta tarefa, usei a versão 2.5 do spring.

Primeiramente, para passar um parâmetro para a JVM onde a aplicação será executada, use, por exemplo:
-Denvironment=dev

Na aplicação, vamos atentar para o cabeçalho do applicationContext:



Como exemplo de leitura, vamos usar o caso de ambientes de execução da aplicação. Onde temos valores de conexão distintos para uma base de dados.

Então, temos um database.properties para cada tipo de ambiente.

Guardei estes arquivos com pastas nomeadas pelo ambiente em uso, que foram criadas no diretório WEB-INF. Para a pasta dev, temos:

jdbc.url=jdbc:oracle:thin:@localhost:1521:base
jdbc.usernme=admin
jdbc.password=admin
Para ler este arquivo pelo spring, teremos que criar um bean:


    
        /WEB-INF/config/${environment}/database.properties
    


Depois disso, para usar o valor da propriedade no arquivo, basta usar a notação ${propriedade}:

    
    
    
    

segunda-feira, 23 de janeiro de 2012

Tag @autor do Eclipse no MacOS

Ao escrever os JavaDocs, podemos utilizar a tag @autor para indicar um dos autores do código.

O Eclipse utiliza suas configurações ou as do sistema para completar o nome do autor.

Podemos estipular um nome no arquivo de configuração eclipse.ini.

No MacOS, este arquivo é encontrado abrindo o executável Eclipse.app clicando com o botão direito e selecionando a opção "Show Package Contents".

Edite o arquivo eclipse.ini inserindo a seguinte linha:

-Duser.name=Nome do usuario

quarta-feira, 26 de outubro de 2011

Executando mais de uma instância do Dropbox


Se você possui mais de uma conta do Dropbox para sincronizar, você pode fazer um script no MacOS usando o automator. O comando seria assim:

Isto deve criar uma nova instância do Dropbox e encerrar o processo da execução do script.

terça-feira, 20 de setembro de 2011

Paginação no Oracle

Retirei o trecho de código de http://www.mhavila.com.br/topicos/bd/ora_rownum.html

Este código serve para realizar paginação de consulta, mas também serve para recuperar uma determinada linha se existir.

select *
from
(select topn.*, ROWNUM rnum
from
(select *
from tabela
order by criterio, ROWID )
topn
where ROWNUM <= :LINHA_FINAL )
where rnum > :LINHA_INICIAL

terça-feira, 26 de julho de 2011

JSF carregando um ManagedBean de um arquivo JAR

Em algumas situações, onde agente possui ManagedBeans que são utilizados por mais de um projeto, é válido empacotá-los em jar para reutilização de código.

Para que o JSF faça o carregamento (load) desses ManagedBeans é preciso inserir um arquivo faces-config.xml na pasta META-INF do jar.

O faces-config.xml só precisa ter mesmo o cabeçalho padrão do JSF:





Em um projeto Maven a pasta META-INF fica dentro de src/main/resources