Utilizando melhor o comando TOP no Linux/Unix/Solaris

Utilizo muito o comando TOP (dentre outros) para medir a “saúde” de nossos servidores. Duas opções que gosto muito são o “1” e o “I” (maiusculo).

Apertando 1, o TOP mostra todos os cores de seu processador, o que ajuda a ver sua utilização como um todo.

selection_070

Utilizando o I (letra í maiuscula), você desabilita o “Irix mode”, apertando novamente você o habilita. Basicamente desabilitando o Irix mode, você mostra a utilização da CPU levando em conta sua capacidade real em %. Dando um exemplo, no Irix mode que é o padrão, você pode observar que alguns processos podem consumir mais que 100% de utilização. Isso acontece pois nesse modo ele considera o total de cores que você tem * 100%. Desabilitando o mesmo, o TOP divide a utilização do processo pelo numero todal de CPUs que você tem, levando a um numero mais realista e que não vai passar de 100%. As imagens abaixo mostram primeiro o TOP com a opção padrão (Irix Mode) e logo após, desabilitando o Irix Mode, note que os processos marcados tiveram sua utilização de CPU “diminuída”, porém, não é o caso, ele simplesmente está mostrando a utilização da CPU como um todo.

selection_071selection_072

Enjoy!

Discovering Red Hat version using command line

If you need to check your Red Hat version from command line, here is 2 simple ways:

[root@dstvm601g10 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.7 (Santiago)

or

[root@dstvm601g10 ~]# lsb_release -rd
Description:    Red Hat Enterprise Linux Server release 6.7 (Santiago)
Release:    6.7

I always need this, and always forget!

Enjoy!

Categorias:Linux Tags:, , ,

Solução para o teste EQUI no Codility

Muitas pessoas estão fazendo testes / provas online no Codility como parte de entrevistas de emprego, principalmente, para vagas no exterior. Eu recomendo fazer os tutorias antes de tentar fazer qualquer teste oficial lá, pois somente assim, você vai ver como realmente é a prova, como rodar, testar, e dessa forma, sentir-se confortável com a mesma.

Eu efetuei o teste EQUI, que tem a solução em C aqui. Resolvi em JAVA. Recomendo tentar fazer antes de olhar a solução. Ai vai:


package br.com.ibm.tests;

public class Solution {

public static void main(String[] args) throws Exception {
Solution s = new Solution();
// int[] A = {2, 2, 2, 2, 2, 2, 2, 2, 2};
int[] A = { -7, 1, 5, 2, -4, 3, 0 };
System.out.print(s.solution(A));
}

public int solution(int[] A) {
int sub = 0;
int sum = 0;
int left = 0;
int right = 0;

if (A.length != -1) {
for (int i = 0; i < A.length; i++) {
sum = sum + A[i];
}
}

for (int i = 0; i < A.length; i++) {
sub = sub + A[i];
left = sub - A[i];
right = sum - sub;

if (left == right) {
return i;
}
}
return -1;
}

}

Uma solução mais performática e menos propensa a estouros utilizando BigInteger é:

package br.com.ibm.tests;

import java.math.BigInteger;

public class Solution {

public static void main(String[] args) throws Exception {
Solution s = new Solution();
// int[] A = {2, 2, 2, 2, 2, 2, 2, 2, 2};
int[] A = { -7, 1, 5, 2, -4, 3, 0 };
System.out.print(s.solution(A));
}

public int solution(int[] A) {
BigInteger sub = BigInteger.ZERO;
BigInteger sum = BigInteger.ZERO;
BigInteger left = BigInteger.ZERO;
BigInteger right = BigInteger.ZERO;

if (A.length != -1) {
for (int i = 0; i < A.length; i++) {
sum = sum.add(BigInteger.valueOf(A[i]));
}
}

for (int i = 0; i < A.length; i++) {
sub = sub.add(BigInteger.valueOf(A[i]));
left = sub.subtract(BigInteger.valueOf(A[i]));
right = sum.subtract(sub);

if (left.equals(right)) {
return i;
}
}
return -1;
}

}

Boa sorte.

Categorias:JAVA Tags:, , , ,

Improve programmer Skills

As a programmer, I’m always looking for challenges. Solving “random” problems can always make us learn more and being more smart, knowing more structures and patterns.

For those who want to improve your skills as a programmer, I found a good list, with explanations and challenges at https://codility.com/programmers/

It’s free. You can play a lot!

Enjoy!

Introdução a Big Data e Apache Solr

Para quem está interessado em Big Data e além disso quer algo prático utilizando Apache Solr, disponibilizo um conjunto de slides que podem ser utilizados por Estudantes, Professores e profissionais. Usem e distribuam a vontade!

Palestra FLISOL na FEMA em Assis – SP / Slides

Pessoal, aqui estão os slides que fiquei de compartilhar da palestra ministrada na FEMA/ASSIS – SP, no evento FLISOL, no ultimo dia 16 de abril. Enjoy!

Gostaria de agradecer a organização pelo convite e parabenizar a todos pela iniciativa e participação. Em tempo de crise, o melhor que temos a fazer é continuar dando duro e compartilhar conhecimento para que todos crescam juntos!

Categorias:Academic Initiative

Utilizando o Startup Order no WebSphere

Muitas vezes vamos fazer o deploy de um novo release de uma aplicação em um servidor de aplicações, e para fazer isso, simplesmente sobrescrevemos a aplicação anterior (update). Isso não é muito interessante do ponto de vista de um rollback. Se você precisar voltar para a antiga versão, pode demorar um pouco mais.

Uma forma interessante para contornar isso é utilizar o Startup Order.

Eu sugiro uma boa prática em nossos processos de deploy: Ao fazer o deploy de um novo release para sua aplicação, você deve dar um nome diferente a ela, por exemplo: “Aplicacao_X_release_2”, e setar o Startup Order (stating weight em versões antigas) para 1, como na figura (screen de versão Antiga do WAX – 7):

Utilizando o Starting Weight no WebSphere

Versão mais recente (8 e 8.5):

Selection_385

Após isso, devemos ir no release anterior, e setar o starting weight/startup order para algo maior que um.

Assim, reiniciamos o servidor de aplicação, e quando ele iniciar, vai levantar a aplicação com o menor peso, pois ao tentar levantar a aplicação com o peso maior, o servidor vai verificar que o context root já está em uso por outra aplicação.

Esta é uma ótima prática para evitarmos operações de rollback demoradas. Se tivermos algum problema no novo release, podemos simplesmente fazer a troca de pesos, ou seja, colocar 1 no release mais antigo e 100 no novo release, assim, reiniciar o servidor de aplicação, e o mesmo, iniciará o antigo release, sem problemas!

Enjoy!