Seleção de Dicas PHP

Posted on novembro 13, 2012. Filed under: PHP, Tips | Tags:, |

Reuni aqui pequenas dicas de programação em PHP que foram-me úteis nessa semana. Em algum momento podem ser úteis para você também.

  1. Navegando em uma estrutura de diretórios usando DirectoryIterator
  2. É uma alternativa ao conjunto opendir()/readdir(), usando Orientação à Objetos:

    <?php
    $it = new DirectoryIterator("/caminho");
    foreach($it as $file) {
    
    	if(!$it->isDot()) { // diferente de .. ou .
    		
    		if($it->isFile()) { // elemento atual é um arquivo
    			echo "Arquivo: $file" . PHP_EOL;
    		}	
    		
    		if($it->isDir()) { // elemento atual
    			echo "Diretório: $file" . PHP_EOL;
    		}
    	}
    }
    

    Mais métodos da classe DirectoryIterator:
    http://php.net/manual/pt_BR/class.directoryiterator.php

  3. Obtendo valores repetidos dentro de um array
  4. Função útil para obter valores repetidos dentro de um array, independente do valor da chave.

    <?php
    $a = array("morango", "laranja", "pera", "beterraba", "banana", "morango");
    
    $repetidos = array_diff_assoc($a, array_unique($a));
    $repetidos = array_unique($repetidos);
    var_dump($repetidos);
    

    A função acima irá obter os elementos com valores repetidos. No caso do exemplo, somente o elemento com o valor “morango” se repete no array:

    array(1) {
    [5] =>
    string(7) "morango"
    }

  5. Obtendo as chaves de um array, especificando um valor do elemento
  6. Complementando a dica anterior, vamos obter o valor da chave de cada elemento repetido encontrado no array:

    $a = array("morango", "laranja", "pera", "beterraba", "banana", "morango");
    $repetidos = array_diff_assoc($a, array_unique($a));
    $repetidos = array_unique($repetidos);
    
    foreach($repetidos as $valor_repetido) {
    	echo "Elemento Repetido: $valor_repetido" . PHP_EOL;
    	$keys = array_keys($a, $valor_repetido);
    	var_dump($keys);
    }
    

    No caso do código acima, o elemento morango esta repetido nos índices 0 e 5 do array $a:

    Elemento Repetido: morango
    array(2) {
    [0] =>
    int(0)
    [1] =>
    int(5)
    }

  7. Removendo os últimos N Bytes de um arquivo
  8. Esta dica é para caso precise remover alguns bytes do final de um arquivo sem a necessidade de duplicá-lo. Isso pode ser facilmente realizado através da função ftruncate:

    (No caso abaixo, serão removidos os últimos 512bytes do arquivo)

    <?php
    
    $filename = "/caminho/para/o/arquivo";
    
    $handle = fopen($filename, 'r+');
    ftruncate($handle, filesize($filename) - 512);
    fclose($handle);
    
Ler Post Completo | Make a Comment ( None so far )

Java Tips: Operações com JTable

Posted on fevereiro 4, 2012. Filed under: Java, Tips | Tags:, , , |

Neste artigo reuni algumas operações úteis realizadas com o componente JTable do Java. Vamos à elas:

  • Instanciando um JTable, já inserindo dentro de um JScroll, que desabilita o usuário poder editar suas células:
int linhas = 10;
int colunas = 2;
JTable table = new JTable(linhas, colunas) {
    public boolean isCellEditable(int rowIndex, int vColIndex) {
             return false;
    }
};
JScrollPane scrollPane = new JScrollPane(table);
  • Bloqueia o usuário de redimensionar as colunas da tabela:
table.getTableHeader().setResizingAllowed(false);
  • Bloqueia o usuário de trocar a posição das colunas via drap and drop.
table.getTableHeader().setReorderingAllowed(false);
  • Alterando o nome das duas primeiras colunas da tabela dinâmicamente:
table.getColumnModel().getColumn(0).setHeaderValue("Coluna 1");
table.getColumnModel().getColumn(1).setHeaderValue("Coluna 2");
  • Definindo um tamanho fixo para largura das duas primeiras colunas:
table.getColumnModel().getColumn(0).setPreferredWidth(115);
table.getColumnModel().getColumn(1).setPreferredWidth(661);
  • Desativando o auto redimensionamento da tabela:
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
  • Permite apenas seleção simples (somente 1 linha):
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  • Tratando evento de dois clicks do mouse em cima de uma linha da abela:
table.addMouseListener(new MouseAdapter() {
	   public void mouseClicked(MouseEvent e) {
	       if (e.getClickCount() == 2) {
	           JTable target = (JTable)e.getSource();
	           int linha = target.getSelectedRow(); // linha selecionada
	           int coluna = target.getSelectedColumn(); // coluna selecionada

	           System.out.println("Linha: " + linha);
	           System.out.println("Coluna: " + coluna);
	       }
	   } 
});

Espero que essas dicas possam ajudar você de alguma forma. Todas elas foram úteis para mim em algum momento, portanto achei importante compartilhar.

Mais dicas

Java Tips: Operações com JTable parte 2
Java Tips: Operações com JTable parte 3

Ler Post Completo | Make a Comment ( None so far )

Liked it here?
Why not try sites on the blogroll...

%d blogueiros gostam disto: