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}]", "");