- A maneira mais simples de definir o handler do comando através da propriedade defaultHandlerId. Dessa maneira não é necessário estender org.eclipse.ui.handlers
- Caso se queira que o comando tenha label dinâmico é necessário implementar a interface org.eclipse.ui.commands.IElementUpdater:
@SuppressWarnings("rawtypes")
publicvoid updateElement(UIElement element, Map parameters) {
String text = condicao ? "Texto caso a condição seja satisfeita" : "Texto caso a condição não seja satisfeita";
element.setText(text);
element.setTooltip(text);
}
- E quando o texto precisar ser atualizado:
private void refreshUI(ExecutionEvent event) {
IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(event);
ICommandService service = (ICommandService) window.getService(ICommandService.class);
service.refreshElements("com.o2filmes.storytouch.editor.togglescenenumbers", null);
}
sexta-feira, 27 de novembro de 2015
SAX XML parser
javax.xml.parsers.SAXParser
Parece simples de usar, o único problema é que as tags são carregas através de inversão de controle
instanciar através de SAXParserFactory.newSAXParser()
Javadoc:
http://docs.oracle.com/javase/1.5.0/docs/api/javax/xml/parsers/SAXParser.html
http://docs.oracle.com/javase/1.5.0/docs/api/org/xml/sax/helpers/DefaultHandler.html
Parece simples de usar, o único problema é que as tags são carregas através de inversão de controle
instanciar através de SAXParserFactory.newSAXParser()
Javadoc:
http://docs.oracle.com/javase/1.5.0/docs/api/javax/xml/parsers/SAXParser.html
http://docs.oracle.com/javase/1.5.0/docs/api/org/xml/sax/helpers/DefaultHandler.html
MessageBox on SWT
import org.eclipse.swt.widgets.MessageBox;
MessageBox dialog = new MessageBox(shell, SWT.ICON_INFORMATION | SWT.YES | SWT.NO);
dialog.setText("Title");
dialog.setMessage("Message");
int returnCode = dialog.open();
MessageBox dialog = new MessageBox(shell, SWT.ICON_INFORMATION | SWT.YES | SWT.NO);
dialog.setText("Title");
dialog.setMessage("Message");
int returnCode = dialog.open();
sábado, 11 de outubro de 2014
Sumindo do Facebook
Excluindo os likes
// Ir em: activity log/likes
var className='mrs _2fmu img sp_iV8Rvzq6IkS sx_be605d';
var elements=document.getElementsByClassName(className);
for (var i=0; i < elements.length; i++) {
var element = elements[i].parentNode.parentNode;
element.click();
var links = document.getElementsByClassName('_54nc');
links[links.length-1].click();
}
Excluindo os comentários
// Ir em activity log/comments
var className='mrs _2fmu img sp_iV8Rvzq6IkS sx_be605d';
var elements=document.getElementsByClassName(className);
for (var i=0; i < elements.length; i++) {
var element = elements[i].parentNode.parentNode;
element.click();
var links = document.getElementsByClassName('_54nh');
links[links.length-1].click();
}
Excluindo os posts
// Ir em activity log/posts
var className='mrs _2fmu img sp_iV8Rvzq6IkS sx_be605d';
var elements=document.getElementsByClassName(className);
for (var i=0; i < elements.length; i++) {
var element = elements[i].parentNode.parentNode;
element.click();
var links = document.getElementsByClassName('_54nh');
links[links.length-1].click();
}
setTimeout( function () {
class x='_42ft _4jy0 layerConfirm uiOverlayButton _4jy3 _4jy1 selected _51sy';
var elements=document.getElementsByClassName(x);
for (var i=0; i < elements.length; i++) {
var element = elements[i];
element.click();
}
}, 10000);
Observações
- Estes scripts são pra ser rodados pelo console (rodei eles no firefox)
- O meu facebook está (estava) em inglês, é possível que algumas coisas não funcionem
- Esses scripts excluem os principais items do facebook, mas não excluem tudo (a atividade dos aplicativos não é excluída, por exemplo)
- Fiz estes scripts em poucos minutos para limpar o meu facebook, isto é, eles não funcionam 100%. Precisei rodar eles várias vezes para excluir tudo, especialmente o script de exclusão de posts.
- Estes scripts só excluem o que estiver carregado na página, isto é, para excluir tudo é necessário rolar a tela para baixar até onde se deseja excluir as coisas.
- Quanto aos likes rodei o script uma vez para cada ano.
- O script de comentários rodei uma vez para cada seis meses.
- O script de posts rodei uma vez para cada quatro meses.
- É provavel que estes scripts estejam obsoletos em poucos meses.
sábado, 15 de março de 2014
Excluir um compartilhamento oculto no Windows
Nota: testei apenas no XP, portanto há uma boa chance que não funcione em versões mais recentes
fonte: http://support.microsoft.com/kb/314984/pt-br
O WinXP tem o péssimo costume de abrir alguns compartilhamentos ocultos na raiz do C: e na própria pasta Windows, segue um tutorial bem simples de como excluir estes compartilhamentos:
1. No Painel de controle, clique duas vezes em Ferramentas administrativas e em Gerenciamento do computador.
2. Expanda Pastas compartilhadas e clique em Compartilhamentos.
3. Na coluna Pasta compartilhada, clique com o botão direito do mouse no compartilhamento que você deseja excluir, clique em Interromper compartilhamento e em OK.
fonte: http://support.microsoft.com/kb/314984/pt-br
O WinXP tem o péssimo costume de abrir alguns compartilhamentos ocultos na raiz do C: e na própria pasta Windows, segue um tutorial bem simples de como excluir estes compartilhamentos:
1. No Painel de controle, clique duas vezes em Ferramentas administrativas e em Gerenciamento do computador.
2. Expanda Pastas compartilhadas e clique em Compartilhamentos.
3. Na coluna Pasta compartilhada, clique com o botão direito do mouse no compartilhamento que você deseja excluir, clique em Interromper compartilhamento e em OK.
quinta-feira, 31 de outubro de 2013
Git: mover branch para um commit
git branch -f
A lista de branchs pode ser obtida por:
git branch
Os commits podem ser listados com:
git-log
Porém, o comando acima não lista todos os commits, apenas os commits da branch corrente. Os commits que não são filhos de nenhuma branch podem ser listados com:
git-reflog --all
O --all lista todos os commits de todas as branchs.
A lista de branchs pode ser obtida por:
git branch
Os commits podem ser listados com:
git-log
Porém, o comando acima não lista todos os commits, apenas os commits da branch corrente. Os commits que não são filhos de nenhuma branch podem ser listados com:
git-reflog --all
O --all lista todos os commits de todas as branchs.
git add interativo
É possível selecionar quais blocos de alteração (conhecidos no git como "hunks") serão colocados no índice para o próximo commit através do comando:
git add -p [nome do arquivo, caso nenhum seja informado, todos os arquivos são verificados]
Acho que é possível informar mais de um nome de arquivo nesta opção, mas não testei (se alguém testar me diga, por favor :-) ).
Este comando abre uma interface bem simples para quem está acostumado com a linha de comando dos SOs da família *nix. Os comandos mais frequentes nesta interface são:
y: inclui o hunk atual no índice
n: não inclui o hunk atual
q: finaliza a interface, mantém os hunks já adicionados
?: ajuda
git add -p [nome do arquivo, caso nenhum seja informado, todos os arquivos são verificados]
Acho que é possível informar mais de um nome de arquivo nesta opção, mas não testei (se alguém testar me diga, por favor :-) ).
Este comando abre uma interface bem simples para quem está acostumado com a linha de comando dos SOs da família *nix. Os comandos mais frequentes nesta interface são:
y: inclui o hunk atual no índice
n: não inclui o hunk atual
q: finaliza a interface, mantém os hunks já adicionados
?: ajuda
domingo, 4 de agosto de 2013
Montando um pen drive do Mac OS no Ubuntu com permissões de escrita e tudo o mais!
Quem usa um pen drive em uma Mac OS e Linux já deve ter enfrentado este problema: se formatar como ext* não abre no Mac, se formata em HFS no Mac depois não tem permissão de escrita no Linux. Uma alternativa (poir do que as duas anteriores) é formatar NTFS, aí dá pra ler e gravar nos dois SOs (e no Windows, se é que isso conta como vantagem), mas as flags de permissão simplesmente não existem nesse sistema de arquivos, isso causa problemas com programas como o git, por exemplo (pra ser suscinto).
Como resolver este problema então?
A alternativa mais simples que encontrei foi formatar o pen drive como hfs+ no Mac e depois forçar a permissão de gravação no Linux. Consigo ler e gravar nos dois SOs (não testei, mas é 99% de certeza que no Windows não vai nem montar o pen drive) e mantenho as flags de permissão.
Para montar o pen drive hfsplus no Linux com permissão de gravação basta apenas usar um -o force no mont. A minha linha de comando ficou assim:
mount -t hfsplus -o force /dev/sdc1/ /media/pendrive
Encontrei esse macete aqui:
http://ubuntuforums.org/showthread.php?t=1660958
Lá o cara fala pra instalar os pacotes hfsplus, hfsprogs e hfsutils. Consegui rodar o comando sem isso, pois provavelmente o Debian já vem com esse suporte (os pacotes não estavam instalados quando rodei o comando) e em algumas distros apenas rodar o comando acima não funcione.
Como resolver este problema então?
A alternativa mais simples que encontrei foi formatar o pen drive como hfs+ no Mac e depois forçar a permissão de gravação no Linux. Consigo ler e gravar nos dois SOs (não testei, mas é 99% de certeza que no Windows não vai nem montar o pen drive) e mantenho as flags de permissão.
Para montar o pen drive hfsplus no Linux com permissão de gravação basta apenas usar um -o force no mont. A minha linha de comando ficou assim:
mount -t hfsplus -o force /dev/sdc1/ /media/pendrive
Encontrei esse macete aqui:
http://ubuntuforums.org/showthread.php?t=1660958
Lá o cara fala pra instalar os pacotes hfsplus, hfsprogs e hfsutils. Consegui rodar o comando sem isso, pois provavelmente o Debian já vem com esse suporte (os pacotes não estavam instalados quando rodei o comando) e em algumas distros apenas rodar o comando acima não funcione.
sexta-feira, 1 de junho de 2012
Git do zero
- GIT
- Repositório distribuído: o git não trabalha com um servidor centralizado de repositório, como o SVN. Sempre que um usuário clona um repositório ele baixa todo o conteúdo (claro!) juntamente com todo o histórico de commits já feitos.
- Instalação em Ubuntu
- sudo aptitude install git
- Instalador do Windows
- Instalação em Mac
- sudo brew install git
- GIT com repositório local
- Inicialização do repositórioc e criação de novos arquivos
- git init .
- git status
- echo "arquivo readme" > readme # echo: simplesmente manda pra tela o parâmetro que recebeu. No caso, a saída está sendo redirecionada para um arquivo também chamado readme (O > serve para salvar a saída em tela de um comando qualquer em arquivo. Isto é, o que fica depois do > é o arquivo que é usado como saída do comando que está antes do >).
- git status
- git add . # o que estiver depois do # o interpretador de comandos ignora (pelo menos no linux, no windows eu acho que substituindo por ;REM funciona)
- git commit -m "criação do readme"
- Configuração de ferramentas gráficas
- git config --global diff.tool
# diff - git config --global merge.tool
# merge - # (recomendo o meld como ferramenta de diff/merge)
- Modificando arquivo e visualizando as diferenças
- echo "Arquivo readme" > readme
- git status
- git diff
- git difftool # Esta linha e a anterior são duas forma diferentes de se fazer a mesma coisa, só pra constar
- git add readme
- git status
- git commit -m "Melhoria no readme"
- Excluindo arquivos
- rm readme # equivalente windows: del readme
- git status
- git rm readme
- git status
- git commit -m "Exclusão do arquivo readme"
- Descartando alterações não commitadas
- echo "arquivo leiame" > leiame
- git add leiame
- git commit -m "Criação do leiame"
- echo "Alteração indesejada\!" >> leiame # Não sei se o >> funciona no win, a idéia é concatenar conteúdo ao final do arquivo
- git status
- cat leiame # win: more leiame
- git checkout leiame
- # Observação: o Eclipse não enxerga automaticamente mudanças feitas por ferramentas externas, então é preciso ir no Eclipse e dar um F5 no projeto que foi modificado
- cat leiame
- git status
- Adicionando pastas inteiras ao controle de versão
- mkdir pasta # win: md (eu acho, mas isso só cria uma pasta)
- echo file1 > pasta/file1 # win: trocar / por \
- echo file2 > pasta/file2
- git status # Notar que neste ponto não são mostrados os arquivos da pasta criada
- git add .
- git status # Agora o git já olhou dentro da pasta e já sabe quais são os arquivos que ele precisa adicionar
- git commit -m "Nova pasta"
- git status
- Pastas vazias
- mkdir emptyfolder
- ls -l # win: dir (sem o -l no windows)
- git add . # Ignora a pasta pois está vazia
- git status # Diz que não há nada a commitar, um git commit depois disso não iria funcionar
- rmdir emptyfolder # win: rd emptyfolder
- # Isto é: o git não versiona pastas vazias
- Excluindo pastas inteiras
- rm -rv pasta # win: del, já falei!
- ls -l
- Criando novas branches e navegando entre elas (localmente)
- git branch # lista as branchs existentes, a que tem o * é a branch ativa
- git branch branch1 # Cria uma nova branch chamada branch1
- git checkout branch1 # Muda a branch ativa
- git branch
- ls -l # Vamos ver que branch1 foi criada com base no que tinha na master, mas poderia ter sido criada com base em qualquer branch
- echo "Ideia maluca" > ideia_maluca
- echo "leiame versão branch1" >> leiame
- git add .
- git commit -m "Ideia maluca"
- ls -l
- cat leiame
- cat ideia_maluca
- git checkout master
- ls -l
- cat leiame
- git branch -D branch1 # Notar que o -D força a exclusão da branch, enquanto o parâmetro -d é menos agressivo, nesse caso o -d não permitiria excluir pois as alterações feitas na branch1 serão perdidas, como é isso o que eu quero, usei o -D
- Merge entre branches (localmente)
- git branch branch1
- git checkout branch1
- echo "Ideia maluca" > ideia_maluca
- echo "leiame versão branch1" >> leiame
- git add .
- git commit -m "Ideia maluca"
- #ok, criamos uma branch que está mais atualizada que a master, agora vamos colocar tudo no lugar
- git checkout master
- git merge branch1
- ls -l
- cat leiame
- cat ideia_maluca
- Merge entre branches (locais) com conflito
- echo "versão branch master" >> leiame
- git add .
- git commit -m "Alteração no readme"
- git checkout branch1
- echo "versão branch1" >> leiame
- git add .
- git commit -m "Alteração no readme"
- git checkout master
- # Nesse ponto o leiame tem uma versão na master e outra na branch1
- git mergetool leiame # *1
- git status
- ls -l
- cat leiame
- # *1 Uma opção bem útil é fazer o merge com a opção --no-commit. Esta opção apenas faz o merge, mas não commita nada, permitindo resolver o merge manualmente (e mais facilmente). Ainda é possível usar ferramenta gráfica de merge dessa maneira.
- Merge com conflito de pastas (localmente, passo opcional, é uma situação menos frequente)
- Visualizando o histórico de commits: git log
- git log --graph --name-only --all --decorate
- Mostra o log bem formatado, o git log tem inúmeras opções
- Voltando o repositório para commits antigos
- O "git checkout" pode receber os seguintes parâmetros: branchs, tags ou hashs de commit. O hash de commit é aquela sequencia enorme de numeros que aparece no log.
- Visualizando a árvore de branches e o histórico de commits: gitk
terça-feira, 31 de maio de 2011
Post rápido
Como faz tempo que não posto nada, vai um link rapidinho, mas ótimo:
http://oanaconda.blogspot.com/2011/05/como-veja-trataria-abolicao.html
http://oanaconda.blogspot.com/2011/05/como-veja-trataria-abolicao.html
Assinar:
Postagens (Atom)