Como completar com zeros à esquerda (zero-padding) um número em Java?

Completar um número com zeros à esquerda em Java, o chamado zero-padding, é simples e pode ser feito em apenas uma linha. Para isso deve-se usar o método estático format da classe String.

int numero = 5;

String.format("%06d", numero); // retorna 000005

O primeiro parâmetro do método é relacionado com o tamanho da String de saída. No exemplo acima é de até 6 zeros, dependendo do número de entrada.

Como adicionar exFat no seu Ubuntu

exFat é uma opção de sistema de arquivos para quem quer formatar uma partição, como por exemplo uma chave USB, e poder ler e escrever em vários sistemas operacionais (Linux, MacOs e Windows).

No MacOs e Windows ela vem por default porém no Ubuntu é necessário instalar e mesmo depois de instalada não é possível criar partições, o driver suporta apenas leitura e gravação, ou seja, pra formatar você deverá fazer em Windows ou MacOs.

Para instalar o suporte a exFat no Ubuntu execute os seguintes comandos (encontrados nesse link) em um Terminal:

sudo -s
 apt-add-repository ppa:relan/exfat
 apt-get update
 apt-get install fuse-exfat

Como passar dados de uma activity a outra em Android

Quando trabalhamos com mais de uma activity no desenvolvimento de uma aplicação Android, é comum a necessidade de enviar informações entre activities.

A forma mais fácil que encontrei foi dessa solução aqui. Ao criar o intent para trocar de activity existe uma função que permite adicionar informações extras para a intent criada.

Intent myIntent = new Intent(this, NovaActivity.class);
myIntent.putExtra("EXTRA_INFO", "infomação extra");
this.startActivity(myIntent);

Essas informações podem ser acessadas no onCreate da activity criada pelo intent (no exemplo NovaActivity).

if(getIntent().hasExtra("EXTRA_INFO")){
 Bundle extras = getIntent().getExtras();
 Log.w(extras.getString("EXTRA_INFO"));
}

Existem várias opções de get, desde estruturas simples como inteiros e strings até vetores.

 

Instalando SQLite para PHP no Ubuntu

Ao tentar utilizar SQLite no PHP do Ubuntu eu encontrei o seguinte erro:

Fatal error: Class 'SQLite3' not found in /var/www/comofaz/arquivo.php on line 2.

E mesmo instalando os pacotes necessários com o comando:

sudo apt-get install php5-sqlite php5-slite3

O erro continuava. Foi então que achei esta solução aqui que finalmente resolveu meu problema.

Mesmo com os pacotes instalados ainda é possível que seja necessário modificar os arquivos de configuração do PHP para que a biblioteca do SQLite seja devidamente carregada.

Para isso você deverá incluir um arquivo em /etc/php5/conf.d para carregar a biblioteca.

cd /etc/php5/conf.d
sudo vi sqlite3.ini

Esta parte vai dentro do arquivo que você abriu anteriormente:

# configuration for php SQLite3 module
extension=sqlite3.so

Depois do arquivo salvo, reinicie o Apache para que as novas configurações tenham efeito.

sudo /etc/init.d/apache2 restart

Como fazer backup no MySQL por linha de comando?

Fazer backup no MySQL por linha de comando usando o mysqldump é mais fácil que muitos administradores imaginam.

O comando básico para backup é:
mysqldump -h HOST-u LOGIN -pSENHA NOME_DO_BANCO > ARQUIVO_DE_SAIDA.sql

Importante notar que a senha deve ser escrita junto com -p, conforme exemplo abaixo:
mysqldump -h localhost -u usuario -psenha clientes > clientes.sql

Para fazer a compactação em ambiente linux, é possível com o utilitário gzip por exemplo. Ficaria assim:

mysqldump -h localhost -u usuario -psenha clientes > clientes.sql | gzip clientes.sql

Será gerado o arquivo clientes.sql.gz.

Como substituir (REPLACE) um texto no MySQL?

Para substituir texto pelo MySQL é relativamente simples. É necessário utilizar a função nativa do próprio MySQL chamada REPLACE.

Os parâmetros para essa função são:

REPLACE('String a ser substituída','Trecho procurado','Novo trecho')

No lugar da “String a ser substituída” pode ser alterado por um campo. Por exemplo:

UPDATE clientes SET nome = REPLACE(nome,'Silva','Souza')

Qual a diferença entre os eventos onkeypress, onkeyup e onkeydown?

Muitas vezes os eventos onkeypress, onkeyup e onkeydown são utilizados para o mesmo fim: receber os eventos do teclado. Entretanto existem algumas diferenças básicas no funcionamento deles.

A diferença primordial entre eles é relacionado a quando os eventos são disparados. O onkeydown é disparado assim que a tecla é pressionada, sendo assim o primeiro entre os eventos a ser disparado. Em seguida é a vez do onkeypress e por último, quando a tecla é solta, o evento onkeyup é executado.

Outra diferença fundamental é que nem todas as teclas são tratadas em todos os navegadores no onkeypress. Em geral ele se limita apenas em disparar eventos quando a tecla, única, gerar algum caractere ASCII, fazendo com que ALT, CTRL e Backspace por exemplo, não disparem eventos. Por outro lado, qualquer tecla gera evento tanto em onkeypress quanto em onkeydown, desde que respeitados sua definição, conforme parágrafo anterior.

Há ainda a possibilidade de o teclado ficar com uma mesma tecla pressionada pelo usuário. Nesse caso, o evento onkeyup, seguindo sua própria definição, só será disparado na hora em que houver o evento de soltar a tecla, ao contrário de onkeypress e onkeydown, a cada novo caractere que for gerado num campo texto será disparado o evento – se essa tecla gerar algum caractere ASCII. Caso contrário, apenas o evento onkeydown será chamado.

Evento Ordem de disparo Caractreres ASCII Teclas não-ascii Tecla mantida pressionada
onkeydown 1 Sim Sim N ocorrências
onkeypress 2 Sim Não N ocorrências
onkeyup 3 Sim Sim 1 ocorrência

Como plotar intervalos de confiança em um gráfico no R

No post anterior vimos como calcular os intervalos de confiança para um conjunto de dados. Irei utilizar nos exemplos os mesmos conjuntos de dados e funções do post anterior.

Para construir um gráfico com essas informações no R segue uma função adaptada da solução que encontrei aqui:

plot_inter_conf <- function(x, y, upper, lower=upper, length=0.1,...){
 if(length(x) != length(y) | length(y) !=length(lower) | length(lower) != length(upper))
 stop("vectors must be same length")
 arrows(x,upper, x, lower, angle=90, code=3, length=length, ...)
}

grafico <- barplot(mean(lista), names.arg=c(1),ylim=c(0,6), col="blue", axis.lty=1, xlab="", ylab="")

plot_inter_conf(grafico, mean(lista), inter_conf(lista)[2], inter_conf(lista)[1])

Como calcular intervalos de confiança de um conjunto de dados em R

Para encontrar os valores do intervalo de confiança de um determinado conjunto de dados vamos utilizar funções da biblioteca boot e para tal precisamos carregá-la no R:

> library(boot)

Agora definimos uma lista qualquer de valores para fazer os teste:

> lista = c(1,2,3,4,5,6)
> mean(lista)
[1] 3.5

Executamos a função boot pois o retorno dela é necessário para o passo seguinte que contém os valores do intervalo de confiança.

Estamos aqui utilizando a operação de média, que é definida na função boot.

> boot_resultado = boot(lista, function(x,j) mean(x[j]), R=1000) 
> boot_resultado

ORDINARY NONPARAMETRIC BOOTSTRAP

Call:

boot(data = lista, statistic = function(x, j) mean(x[j]), R = 1000)

Bootstrap Statistics :
 original bias std. error
t1* 3.5 0.0035 0.6858388

A função boot.ci utiliza os valores do resultado da função boot e nos retorna os valores do intervalo de confiança.

> boot.ci(boot_resultado)
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 1000 bootstrap replicates

CALL : 
boot.ci(boot.out = boot_resultado)

Intervals : 
Level Normal Basic 
95% ( 2.152, 4.841 ) ( 2.167, 4.833 )

Level Percentile BCa 
95% ( 2.167, 4.833 ) ( 2.133, 4.667 ) 
Calculations and Intervals on Original Scale
Warning message:
In boot.ci(boot_resultado) :
 bootstrap variances needed for studentized intervals

Aqui segue uma função que retorna uma lista com os valores do intervalo de confiança para tornar mais prática a utilização das funções nas execuções que você desejar:

> inter_conf <- function(i){ 
   boot_value <- boot(i, function(x,j) mean(x[j]), R=1000)
   if(apply(boot_value$t, 2, sd) == 0) {
     return(c(boot_value$t0,boot_value$t0))
   }else {
     return((boot.ci(
       boot_value,
       type=c("perc")
      )
     )$percent[4:5])
   }
 }
> inter_conf(lista)
[1] 2.000000 4.833333