É meio chato ficar escutando um beep no buzzer, cada vez que você aperta uma tecla "backspace" a mais, ou tenta salvar algo que já está salvo. Para desabilitar o buzzer no Ubuntu, basta colocar o speaker do pc na lista negra do modprobe, assim:eu@eu:~$ echo "blacklist pcspkr" | sudo tee -a /etc/modprobe.d/blacklist
...e pronto. Fim do barulho chato.
É necessário reiniciar o Ubuntu, ou recarregar o modprobe:eu@eu:~$ sudo modprobe -r pcspkr
Abraços \o/
(Fonte: Alex S.)
quarta-feira, 9 de setembro de 2009
Remover beep chato no Ubuntu
Postado por
Thiago Preco Schwartz
às
16:48
1 comentários
RT @geloemmarte: Remover beep chato no Ubuntu
quarta-feira, 1 de julho de 2009
Como encerrar sua aplicação Java
Existem diversas formar de encerrar sua aplicação. E às vezes é preciso que algo seja feito antes que isso aconteça, seja pra consistir dados, seja pra mostrar uma mensagenzinha de tchau pro usuário (Sim, isso é tosco. Não façam isso.). Muita gente usa o evento windowClosing do AWT na janela principal do programa. No entanto, existe um método mais eficiente (e garantido) de fazer isso.
A Máquina Virtual do Java (JVM) se desliga de dois jeitos diferentes: Do jeito normal e bonitinho System.exit(); (ou quando a última Thread ativa do programa termina sua execução) OU do modo abrupto (abrupto é uma palavra que dá medo), quando o usuário pressiona Ctrl+C no console (ou prompt), ou quando o usuário taca o dedo no botão Power, desligando o Sistema Operacional.
O Runtime da JVM possui um método chamado addShutdownHook(Thread t), que, resumindo, vai fazer o seguinte: A Thread t vai ser registrada no Runtime, mas não vai ser executada. Vai ficar lá, paradinha. Daí, antes de a JVM ser encerrada, ela acorda a Thread t, e a Thread t executa seu método run(), antes do juízo final :)
Para evitar que sua aplicação termine sem que determinado processamento necessário seja feito, basta fazer o seguinte:
1) Criar uma classe, herdando de Thread. Dentro dessa classe, no método run(), deverá haver o código que você quer processar anter da finalização.
private class ShutdownInterceptor extends Thread {
public void run() {
//Aqui você diz adeus.
System.out.println("Por que você me abandona? Sentirei saudades.");
}
}
2) Dentro de sua aplicação, insira o seguinte código, indicando à JVM que você quer colocar sua classe bonitinha no shutdownHook:
ShutdownInterceptor shutdownInterceptor = new ShutdownInterceptor();
Runtime.getRuntime().addShutdownHook(shutdownInterceptor); // <- Mágica
E pronto! Agora, quando seu sistema for finalizado, o sistema fará uma chantagem emocional com o usuário, obrigando-o moralmente a reiniciar sua aplicação e viver com ela pra sempre.
[]'s
Fontes:
Postado por
Thiago Preco Schwartz
às
11:25
0
comentários
RT @geloemmarte: Como encerrar sua aplicação Java
quarta-feira, 10 de setembro de 2008
Trocando caracteres especiais no Java
Oi povo.
Já vi muita gambiarra envolvendo replace e tals, pra trocar caracteres especiais no Java (fazer isso "Tralalá" virar isso "Tralala"). Daí vi esse código e achei mais bonitinho.. pelo menos não envolve 3 arrays, um vetor e um comentário do tipo /* Revisar depois */
public static String formatString(String s) {
String temp = Normalizer.normalize(s, java.text.Normalizer.Form.NFD);
return temp.replaceAll("[^\\p{ASCII}]","");
}
Abraço, povo o/
Postado por
Thiago Preco Schwartz
às
17:51
2
comentários
RT @geloemmarte: Trocando caracteres especiais no Java
quarta-feira, 3 de setembro de 2008
Disparando eventos no JTextField
Oi povo,
Muitas vezes, você precisa validar algum campo, que depende do conteúdo digitado em um JTextField (ou qualquer componente que use Document). Por exemplo: Quando você solicita ao usuário a digitação de um código para que apareça a descrição de um produto na tela.
Muita gente usa o KeyListener pra isso, mas ele é disparado antes do caracter ser colocado no JTextField, daí ele não pega o texto digitado por inteiro.
A solução pra isso é usar o bom e velho DocumentListener! \o/
Exemplo: busca produto pelo código digitado
JTextField textField = new JTextField();
textField.getDocument().addDocumentListener(new DocumentListener(){
public void changedUpdate(javax.swing.event.DocumentEvent e) {
// Anuncie aqui! Viu como funciona?
}
public void insertUpdate(DocumentEvent e) {
buscaProdutoPorCodigo(textField.getText());
}
public void removeUpdate(DocumentEvent e) {
buscaProdutoPorCodigo(textField.getText());
}
public void buscaProdutoPorCodigo(String codigoStr){
try{
int codigo = Integer.parseInt(codigoStr);
// busca o produto no banco;
// pega o produto e exibe no lugar certo;
} catch (NumberFormatException nfex) {
// exibe mensagem dizendo que o código é inválido.
}
}
});
Explicando:
O DocumentListener é um listener disparado toda vez que o texto do componente é alterado. Daí tem 3 métodos que tem q ser implementados: O insert, o changed e o remove.
O insert é disparado quando algum texto é inserido no componente.
O remove é disparado quando algum texto é removido do componente.
E o changed só é disparado quando o estilo do texto muda (isso só é aplicável com componentes que implementam StyledDocument, como o JTextPane. Não é aplicável ao JTextField, portanto ali no código ele tá só fazendo figuração =D ).
Té mais, povo o/
Postado por
Thiago Preco Schwartz
às
11:22
1 comentários
RT @geloemmarte: Disparando eventos no JTextField
Tags:
javax.swing
terça-feira, 24 de junho de 2008
Como alterar a fonte padrão do Java
Por padrão, a fonte padrão dos componentes do Java é a fonte padrão do Look and Feel que está sendo utilizado. Mas dá pra mudar isso \o/
Eis como:
public static void setUIFont (Font f){
Enumeration<Object> keys = UIManager.getDefaults().keys();
while (keys.hasMoreElements()) {
Object key = keys.nextElement();
Object value = UIManager.get (key);
if (value instanceof Font)
UIManager.put (key, f);
}
}
...
//Dentro do main...
setUIFont(new Font("Dialog", Font.BOLD, 14));
Em suma, ele vai percorrer todos os elementos do UIManager, e alterar a fonte de um por um...
Dá pra alterar a fonte de um componente em particular:
UIManager.put("Label.font", new Font("Serif",Font.ITALIC,12));
Peguei daqui Real How To
o/ Té mais!
Postado por
Thiago Preco Schwartz
às
10:36
2
comentários
RT @geloemmarte: Como alterar a fonte padrão do Java
sexta-feira, 6 de junho de 2008
Cheat Sheets
Pra quem não conhece, C. S. são guias de referência, geralmente em uma única página, que servem para o profissional ter acesso ao conteúdo de um determinado assunto sem ter que ficar fuçando manuais e internet pra ver como ele é escrito. Servem principalmente para lembrar a sintaxe de algum comando.
Um dos melhores sites para C. S. e Quick reference guides é o I Love Jack Daniels, do Dave Child. Ele tem C. S. pra diversas linguagens de programação, recomendadíssimo \o/
Aqui vai uma lista com vários Cheat Sheets para download, em formato PDF:
- Algebra - Paul Dawkins
- Apache Quick Reference Card - Andrew Ford
- ASP e VBScript - Dave Child
- Assembly (Win32) - Peter Kankowski
- C - Joseph H. Silverman
- C# e .NET - ?
- C++ - Dream in Code
- Caracteres HTML - Dave Child
- ColdFusion - Peter Freitag
- Comandos UNIX - FOSSwire
- CVS (Controle de versão) - Laurent Grégoire
- Debian - W. Borgert
- Delphi - Explain That!
- Django - Mercury Tide
- Eclipse (IDE) - Carsten Ullrich
- Expressões regulares - Dave Child
- HTML - Dave Child
- Java - Janeg.ca
- Java 2 - Pinnacle Software Solutions
- Java 3 - Jialong He
- JavaScript - Dave Child
- JSP - Sun
- JSTL - Bill Siggelkow
- LUA - SoulKiller
- Microformats - Dave Child
- MySQL - Dave Child
- Oracle - Michael Eliasz
- Perl - John Bokma
- Perl (variáveis predefinidas) - Peteris Krumins
- PHP - Dave Child
- PHP PEAR MDB2 - codeschmie.de
- PostgreSQL - Alberton.info
- Python - Laurent Pointal
- Ruby - Cenophobie
- SEO (Search Engine Optimization) - SeoMoz
- Serviços Google - Adelaider
- Shell script - Michael Oliveri
- Smalltalk - Bern University
- Solaris - Jialong He
- STL - Yotam Medini
- SVN (controle de versão) - Lucas Baltes
- UML (Linguagem de modelagem) - Laurent Grégoire
- VI (editor de texto) - HP
- XML - Mulberry Technologies
Se alguém quiser mais algum Cheat Sheet, ou não entender alguma coisa, só entrar em contato, que tamos aê o/
Todos os Cheat Sheets daqui são gratuitos e estão hospedados no mesmo lugar, pra não depender de servidores alheios para disponibilidade... Se você gostou e quer hospedar no seu blog/site, link-me, por favor ;)
Té mais o/
Postado por
Thiago Preco Schwartz
às
13:24
1 comentários
RT @geloemmarte: Cheat Sheets
quarta-feira, 2 de abril de 2008
Emoticons para Blogger e Blogspot
Tá, passei um trabalhinho pra fazer isso, mas desenvolvi um JavaScript pra colocar emoticons em blogs do Blogger/Blogspot \o/***
Edit: Pra quem quiser usar o emoticon no próprio blog, tem que fazer assim:
- Vá em Layout/Editar HTML, e cole o seguinte trecho de código antes de </head>:
<script language='javascript' src='http://perereco.googlepages.com/emoticons.js' type='text/javascript' />
<script language="javascript" type="text/javascript">
${document}.ready(function(){
emoticon();
return false;
});
</script>
***
Pra usar um emoticon, basta colocar o sinal desejado entre colchetes duplos:
[[sinal]]
Vamos à lista:
- relogio : [[relogio]]
- paleta : [[paleta]]
- som: [[som]]
- voltar: [[voltar]]
- estrela: [[estrela]]
- mundo: [[mundo]]
- cancelar: [[cancelar]]
- ok : [[ok]]
- 8) : [[8)]]
- $) : [[$)]]
- ;P : [[;P]]
- ideia : [[ideia]]
- casa : [[casa]]
- baixo : [[baixo]]
- taca : [[taca]]
- foto : [[foto]]
- zangado : [[zangado]]
- ^^ : [[^^]]
- :O : [[:O]]
- D: : [[D:]]
- ;) : [[;)]]
- :S : [[:S]]
- :I : [[:I]]
- :P : [[:P]]
- 8 : [[8]]
- L : [[L]]
- :D : [[:D]]
- espantado : [[espantado]]
- :( : [[:(]]
- :) : [[:)]]
- raio : [[raio]]
- chave: [[chave]]
- msn: [[msn]]
- msn2: [[msn2]]
- telefone: [[telefone]]
- pizza: [[pizza]]
- presente: [[presente]]
- U : [[U]]
- cima: [[cima]]
- banana [[banana]]
Por fim, só pra constar, os ícones usados foram feitos pelos membros da equipe CrystalXp, e podem ser utilizados em qualquer blog, desde que não tenha fins lucrativos. [[:)]]
Postado por
Thiago Preco Schwartz
às
15:50
21
comentários
RT @geloemmarte: Emoticons para Blogger e Blogspot
Tags:
emoticons para blogger,
javascript
segunda-feira, 31 de março de 2008
Trocar senha do SYSDBA no Firebird
Isso serve pra todos os usuários, mas o SYSDBA é o mais fodão e tals..
Então vamo lá. Primeiro, a gente vai na pasta "bin" do firebird:
C:> cd C:\Arquivos de programas\Firebird\Firebird_2_0\bin
Agora a gente executa o arquivo gsec.exe, passando como parâmetro o nome de usuário e a senha atual:
C:\Arquivos de programas\Firebird\Firebird_2_0\bin> gsec -user SYSDBA -password masterkey
Daí, dentro do gsec, é só mudar a senha, com o comando:
GSEC> modi sysdba -pw senha_nova
E sair:
GSEC>quit
\o/ Té mais
Obs.: Peguei daqui.
Postado por
Thiago Preco Schwartz
às
10:45
1 comentários
RT @geloemmarte: Trocar senha do SYSDBA no Firebird
segunda-feira, 17 de dezembro de 2007
Combos dinâmicos no JSP
Depois de muito penar, descobri como fazer combobox dinâmicas para JSP.
No exemplo, eu quero que um combo, chamado 'cidade' exiba as cidades contidas no banco, de acordo com o estado que eu selecionar na combo 'uf'.
1º passo: Criar uma página jsp, que faça uma busca na tabela 'cidade', passando como parâmetro (preferencialmente via get) o código da uf:
try{
int codigoUf = Integer.parseInt(request.getParameter("codigo").toString());
List lista = Busca.listaCidades(codigoUf);
out.print("[");
for(int i = 0; i < lista.size(); i++){
if (i != 0) out.print(", ");
out.print("'" + lista.get(i).getNome() + "'");
}
out.print("]");
conexao.close();
} catch (NumberFormatException e){}
obs.: Se o java imprimisse a lista diretamente, ficaria no formato "[ item, item, item ]". Mas o javascript, pelo menos aqui, não reconheceu esse formato. Por isso, eu fiz essa mini gambiarra, para que a saída seja "[ 'item', 'item', 'item' ]", como no PHP.
2º passo: Agora, no HTML, basta colocar o seguinte atributo na tag select:
onchange="buscaCidade(this.options[this.selectedIndex].value)"
3º passo: Criar o javascript:
function buscaCidade(tuf){
try{
xmlhttp = new XMLHttpRequest();
} catch(e1) {
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e2){
try{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e3){
xmlhttp = false; //Viva a padronização dos browsers
}
}
}
//limpa a combobox
var c = document.getElementById("cidade")
while( c.options.length > 0) c.options[0] = null
c.options[0] = new Option(" -- Aguarde ... -- "," -- Aguarde ... -- ")
//Monta a url com a uf
xmlhttp.open("GET", "buscacidade.jsp?codigo=" + tuf, true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4){
var c = document.getElementById("cidade")
while(c.options.length > 0) c.options[0] = null
//Transforma a lista de cidades JSON em Javascript
var aCidades = eval((xmlhttp.responseText))
//popula o select com a lista de cidades obtida
for(var i = 0; i < aCidades.length; i++){
aCidades[i] = unescape(aCidades[i])
c.options[c.options.length] = new Option(aCidades[i], aCidades[i])
}
}
}
xmlhttp.send(null)
}
Segundo meus cálculos, agora deve funcionar... Para testar, crie dois combos (uf e cidade), e popule um banco =]
Observações:
1) De repente, você pode precisar utilizar o código da cidade juntamente com o nome, para efetuar cadastros e tals. No exemplo de cima, o jsp só busca o nome da cidade. Pra fazer ele buscar também o código, concatene ele com o nome da cidade, utilizando um caracter bem estranho para separá-los:
out.print("'" + lista.get(i).getCodigo() + "#" + lista.get(i).getNome() + "'");
Daí no .js você coloca:
var str = aCidades[i].split("#");
c.options[c.options.length] = new Option(str[1], str[0])
Onde str[0] (código) será o value do select, e str[1] (nome) será o valor exibido na combo.
2) De repente também, você precise utilizar este javascript em mais de uma combo. Para isso, é só passar o nome do combo que você quer carregar via parâmetro:
onchange="doBusca(this.options[this.selectedIndex].value, 'cidade')"
E alterar o javascript pra receber esse parâmetro.
3) Peguei esse código daqui, e adaptei um pouco =D.
É isso, té mais o/
Postado por
Thiago Preco Schwartz
às
13:22
11
comentários
RT @geloemmarte: Combos dinâmicos no JSP
Tags:
Java,
javascript,
jsp
sexta-feira, 7 de dezembro de 2007
Arredondando valores double
Tava dando uma olhada aqui, achei um codigozinho bem legal pra arredondar doubles...
É bem simples, só informar o double e o número de casas decimais que se quer arredondar:
public static double arredondaValor(double valor, int nrCasasDecimais) {
BigDecimal bd = new BigDecimal(valor);
bd = bd.setScale(nrCasasDecimais,BigDecimal.ROUND_HALF_UP);
return bd.doubleValue();
}
Roubei o código do Charbel =]
Té mais o/
Postado por
Thiago Preco Schwartz
às
14:15
0
comentários
RT @geloemmarte: Arredondando valores double
Tags:
Java




