Tecnologia
Melhor leitor de CBR e CBZ para MAC
![Ehon - Ótimo para organizar seus HQs](https://oraculum.blog.br/wp-content/uploads/2012/10/ehon.png)
Existem duas opções muito boas para quem usa MAC e quer visualizar arquivos cbr ou cbz, para acompanhar suas histórias favoritas eu recomendaria Ehon ou Simple Comic
A diferença entre eles
Ehon – Recomendaria para aqueles que gostam de salvar seus HQs ou Mangás usarem essa app pois ela tem uma boa Libary onde é possível organizar sua coleção. Além de que tem um ótimo designe!
Simple Comic – Melhor opção para aqueles que não guardam os HQs no computador, se você lê e depois remove o arquivo eu recomendaria o Simple Comic por ser mais fácil e pratico.
Veja uns screenshots:
Sincronizando o toggl com o github
![](https://oraculum.blog.br/wp-content/uploads/2011/10/github-logo.png)
Se você usa o Toggl como time tracking e o Github como versionador de código, porque não trabalhar com os dois sincronizados, veja abaixo como configurar os dois serviços.
- Acesse sua conta no github e vá no item Admin do seu projeto.
- Nele acesse no menu lateral a opção Service Hooks
- Localize o toggl na listagem de serviços, você vai precisar de pegar dois itens no toggl:
- Project ID
- Api Token
- Retorne a sua conta do Toggl e localize esses dois itens, o project id você pode pegar esse ID diretamente na url do projeto.
- Para pegar o seu API Token acesse “Meu perfil” ou “My account” e copie o API Token.
- Depois de copiado é colar nos campos do pivotal e marcar a opção “Active”
- Clique em Update Settings
Existe uma mudança na hora de fazer o commit deve-se adicionar nos comentários t:número-de-minutos (integer) ou seja se você trabalhou duas horas naquela tarefa ao fazer o commit dela você deve colocar t:120 lembrando que sempre deve ser número inteiro.
Unity Glass – refinando com efeito glass seu ubuntu
![](https://oraculum.blog.br/wp-content/uploads/2012/07/unityglass.jpg)
Ele substitui o fundo quadrado que vem como padrão nos ícones do lançador do Ubuntu colocando versões mais arredondadas que se encaixam melhor ao formato dos ícones.
Veja na imagem abaixo a diferença:
O responsável pela Unity Glass é Ivan Souza. Você pode conferir aqui um passo-a-passo de instalação em espanhol.
Esse pacote modifica arquivos do sistema então tome cuidado e faça sempre um backup para recuperação caso seja preciso.
Você pode baixar no link abaixo o arquivo .deb para instalar basta dar um duplo clique sobre ele e seguir as instruções da tela.
DOWNLOAD
Caso seja preciso desfazer a instalação do pacote e recuperar o seu unity para a versão padrão faça no terminal:
sudo apt-get --reinstall install unity
Fazendo a formula de PGTO do excell em Javascript e Csharp
Para os que não sabem o que é a formula PGTO segue um link bem explicativo. Resumindo é uma formula onde calcula-se o valor da parcela com juros em um financiamento, muito usado para calculo de financiamento de veículos, casas, etcsss…
A formula pode ser aplicada usando o seguinte:
Formula Matemática: x=C*((1+i)^n)/ somatoria de (1+i)^k para k=0 ate k= n-1 .
Ubuntu: Gradiator css3 para linux
![Gradiator](https://oraculum.blog.br/wp-content/uploads/2012/04/ss.png)
Gradiator é um aplicativo gradiente CSS3 para Linux. Na verdade, de acordo com seus desenvolvedores, é a aplicação de gradiente CSS3 disponível só para Linux.
O aplicativo vem com um controle deslizante ajustável para gradiente / posição; uma cor roda para configurar as cores do gradiente, e uma maneira fácil de definir a direção do gradiente.
Quando estiver satisfeito com o seu gradiente você pode bater no botão ‘Get Code’ para que o CSS copiados para o clipboard prontos para serem colados.
NodeJs: Force page reload when form method=”post” in jquery mobile
![](https://oraculum.blog.br/wp-content/uploads/2012/02/node.jpg)
Se estiver usando Node.JS e Jquery Mobile e tentar fazer uma request/post via ajax vai se deparar com o problema que o Jquery Mobile salva em cache as páginas para resolver esse problinha segue o código abaixo:
Mascara de CPF para campos EditText no Android
![droid](https://oraculum.blog.br/wp-content/uploads/2011/08/t1.png)
Veja como fazer essa mascara ###.###.###-## no seu EditText
Veja a parte do código como fica:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | package lethus.socialdroid.core.widgets; import android.content.Context; import android.text.Editable; import android.text.InputType; import android.text.TextWatcher; import android.text.method.NumberKeyListener; import android.util.AttributeSet; import android.widget.EditText; public class CpfEditText extends EditText { private boolean isUpdating; /* * Maps the cursor position from phone number to masked number... 12345678912 * => xxx.xxx.xxx-xx */ private int positioning[] = { 0, 1, 2, 3, 5, 6, 7, 9, 10, 11, 13, 14 }; public CpfEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); initialize(); } public CpfEditText(Context context, AttributeSet attrs) { super(context, attrs); initialize(); } public CpfEditText(Context context) { super(context); initialize(); } public String getCleanText() { String text = CpfEditText.this.getText().toString(); text.replaceAll("[^0-9]*", ""); return text; } private void initialize() { final int maxNumberLength = 11; this.setKeyListener(keylistenerNumber); this.setText(" - "); this.setSelection(1); this.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) { String current = s.toString(); /* * Ok, here is the trick... calling setText below will recurse * to this function, so we set a flag that we are actually * updating the text, so we don't need to reprocess it... */ if (isUpdating) { isUpdating = false; return; } /* Strip any non numeric digit from the String... */ String number = current.replaceAll("[^0-9]*", ""); if (number.length() > 11) number = number.substring(0, 11); int length = number.length(); /* Pad the number to 10 characters... */ String paddedNumber = padNumber(number, maxNumberLength); /* Split phone number into parts... */ String part1 = paddedNumber.substring(0, 3); String part2 = paddedNumber.substring(3, 6); String part3 = paddedNumber.substring(6, 9); String part4 = paddedNumber.substring(9, 11); /* build the masked phone number... */ String cpf = part1 + "." + part2 + "." + part3 + "-" + part4; /* * Set the update flag, so the recurring call to * afterTextChanged won't do nothing... */ isUpdating = true; CpfEditText.this.setText(cpf); CpfEditText.this.setSelection(positioning[length]); } public void beforeTextChanged(CharSequence s, int start, int count, int after) { } public void onTextChanged(CharSequence s, int start, int before, int count) { } }); } protected String padNumber(String number, int maxLength) { String padded = new String(number); for (int i = 0; i < maxLength - number.length(); i++) padded += " "; return padded; } private final KeylistenerNumber keylistenerNumber = new KeylistenerNumber(); private class KeylistenerNumber extends NumberKeyListener { public int getInputType() { return InputType.TYPE_CLASS_NUMBER | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS; } @Override protected char[] getAcceptedChars() { return new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; } } } |
Veja a parte do XML como fica:
1 | <lethus.socialdroid.core.widgets.CpfEditText android:id="@+id/txtCpf" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="number" /> |
Mais informações sobre como implementar essa mascara consulte o artigo da mascara de telefone