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 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

Operações para selecionar dados no R

Em um outro post falamos um pouco sobre como trabalhar com tabelas no R. Neste post vamos explicar, baseado nesse post em inglês, sobre como selecionar seus dados uma vez eles carregados no R.

Vamos utilizar o mesmo arquivo de dados do post anterior, chamado fumantes.csv como base dos exemplos, que contém dados fictícios de 356 pessoas. A primeiro coluna representa o estado atual da pessoa em relação ao cigarro, podendo ser: fumante, ex-fumante e não fumante. Para cada uma das pessoas existe também a informação sócio-econômica: baixa, média, alta.

> dados_fumantes <- read.csv(file='fumantes.csv',sep=',',header=T)
> head(dados_fumantes)
 Fumante SE
 1 Ex-fumante Alta
 2 Ex-fumante Alta
 3 Ex-fumante Alta
 4 Ex-fumante Alta
 5 Ex-fumante Alta
 6 Ex-fumante Alta

Para selecionar colunas pelo nome:

> dados_fumantes[,c('Fumante','SE')])
 Fumante SE
 1 Ex-fumante Alta
 2 Ex-fumante Alta
 3 Ex-fumante Alta
 4 Ex-fumante Alta
 5 Ex-fumante Alta
 6 Ex-fumante Alta
 ...

Para selecionar linhas e colunas:

> dados_fumantes[122:127,c('Fumante','SE')]
 Fumante SE
 122 Fumante Alta
 123 Fumante Alta
 124 Fumante Alta
 125 Fumante Alta
 126 Fumante Alta
 127 Fumante Alta

Para selecionar linhas que contém determinada informação, outros operadores como >, >=, < e <= também podem ser utilizados:

> dados_fumantes[dados_fumantes$SE=="Alta",]
 Fumante SE
 1 Ex-fumante Alta
 2 Ex-fumante Alta
 3 Ex-fumante Alta
 4 Ex-fumante Alta
 5 Ex-fumante Alta
 6 Ex-fumante Alta
 ...

Você pode utilizar dados a função grep para seleção:

> dados_fumantes[grep("ex",dados_fumantes$Fumante, ignore.case=T),]
 Fumante SE
 1 Ex-fumante Alta
 2 Ex-fumante Alta
 3 Ex-fumante Alta
 4 Ex-fumante Alta
 5 Ex-fumante Alta
 6 Ex-fumante Alta
 ...

O nome das linhas no R não são necessariamente únicos como nos exemplos anteriores sendo númerico de 1 a 356.
Por exemplo a matrix mat seguinte:

> mat = matrix(1:18, nrow=6, ncol=3)
 > rownames(mat) <- c('a', 'a', 'a', 'b', 'b', 'b')
 > colnames(mat) <- c('foo', 'bar', 'bat')
 > mat
 foo bar bat
 a 1 7 13
 a 2 8 14
 a 3 9 15
 b 4 10 16
 b 5 11 17
 b 6 12 18

Quando você tenta selecionar pelo nome das linhas apenas a primeira linha é retornada:

> mat['a',]
 foo bar bat
 1 7 13
> mat['b',]
 foo bar bat
 4 10 16

Mas este outro comando funciona como esperado:

> mat[rownames(mat)=='a',]
 foo bar bat
 a 1 7 13
 a 2 8 14
 a 3 9 15

Trabalhando com tabelas de dados no R

R é uma ferramenta estatística que pode ser utilizada para manipular dados e criar gráficos.

Muitas vezes trabalhar com tabelas pode ser prático para manipulação dos dados. Essa explicação é baseada nesta página, inclusive os dados e exemplos são os mesmos traduzidos.

Vamos utilizar o arquivo fumantes.csv como base dos exemplos, que contém dados fictícios de 356 pessoas. A primeiro coluna representa o estado atual da pessoa em relação ao cigarro, podendo ser: fumante, ex-fumante e não fumante. Para cada uma das pessoas existe também a informação sócio-econômica: baixa, média, alta.

Para ler os dados do arquivo e listar o sumário basta utilizar os comandos abaixo:

> dados_fumantes <- read.csv(file='fumantes.csv',sep=',',header=T)
> summary(dados_fumantes)
 Fumante SE 
 Ex-fumante :141 Alta :211 
 Fumante :116 Baixa: 93 
 Não fumante: 99 Média: 52

O comando read.csv lê um arquivo no formato csv e carrega os dados para dentro do R. O comando summary devolve o sumário dos dados informados.

Você pode criar uma tabela a partir dos dados usando o seguinte comando:

> tabela_fumantes <- table(dados_fumantes$Fumante,dados_fumantes$SE)
> tabela_fumantes

 Alta Baixa Média
 Ex-fumante 92 28 21
 Fumante 51 43 22
 Não fumante 68 22 9

Por exemplo podemos ver que existem 51 fumantes da classe socio-ecônomica alta.

Para criar uma tabela de maneira indireta fazemos primeiro uma matrix com os valores e então convertemos para tabela.

> fumantes <- matrix(c(51,43,22,92,28,21,68,22,9),ncol=3,byrow=TRUE)
> colnames(fumantes) <- c("Alta","Média","Baixa")
> rownames(fumantes) <- c("Fumante","Ex-fumante","Não-fumante")
> fumantes <- as.table(fumantes)
> fumantes
 Alta Média Baixa
Fumante 51 43 22
Ex-fumante 92 28 21
Não-fumante 68 22 9

Existem vários formatos para transformar os dados em gráficos. No exemplo seguinte o primeiro comando, barplot, cria um gráfico com barras e o segundo, plot, com caixas.

> barplot(fumantes,legend=T,beside=T,main='Estado de Fumante por Classe Socio-Ecônomica')
> plot(fumantes,main="Estado de Fumante por Classe Socio-Ecônomica")

Como fazer programas não instalados pela central de instalação do Ubuntu permanecerem no Launcher

Quando você baixa programas para o Ubuntu diretamente por uma página e não pela central de instalação, por exemplo eclipse ou sublime text, ao abrí-los a opção de deixá-los no painel de abertura não existe.

Para fazer isso acontecer você precisa configurar um arquivo que contém comando do programa e ícone. Você pode fazer isso na raça, editando na mão o arquivo, mas irei mostrar aqui uma maneira mais facilitada.

Primeiro faça o download do programa Main Menu pela central de instalação do Ubuntu.

Então abra o programa:

Adicione as informações do programa que deseje instalar, como nome, comando ou path para executável e ícone. Para selecionar o ícone basta clicar na imagem. Ao salvar o Main Menu irá criar o arquivo .desktop necessário para fazer a mágica acontecer. Abra a pasta ~/.local/share/applications e você encontrará o arquivo, execute ele e o programa irá abrir com a opção de permanecer na barra de abertura. Outra opção é arrastar o arquivo criado para a barra lateral.

Mostrando a lista de atalhos do Git

Como vimos neste post é possível criar alias para os comandos do Git.

Esses alias agilizam o trabalho com o Git e principalmente, para aqueles que como eu também alguns repositórios em SVN, fica complicado não ter os mesmos atalhos simplificados.

E existirá um momento em que você vai precisar relembrar quais os comandos você fez atalhos, o que falta, o que pode ser adicionado, ou mudar um existente. Para isso listar todos os atalhos é essencial.

O comando de Terminal para tal tarefa é o seguinte:

git config --get-regexp alias

O mais interessante ainda é criar um alias para este comando, fazendo o seguinte:

git config --global alias.alias "config --get-regexp alias"

Com este comando você simplifica a listagem dos atalhos e define para todo o sistema.