Thanks to visit codestin.com
Credit goes to corecode.wordpress.com

Feeds:
Posts
Comments

Archive for the ‘informativos’ Category

AVISO: Caso você opte por realizar os passos descritos aqui saiba que você está por sua conta. O guardião do banco X ou  keylogger/malware do banco X (como é apelidado carinhosamente) serve para dar segurança nas suas transações via browser. (Ao menos é o que dizem – Talvez se você achar em algum lugar o site ou o canal com a cia de Software, que codou ele você consiga uma melhor informação).

Faz algumas semanas que tenho enfrentado a dor de cabeça que é realizar transações online via o banco X e não consigo porque o guardião simplesmente parou de funcionar. Não adianta tentar reinstalar, nem numa VM eu consegui fazer ele funcionar novamente (Eu uso ubuntu 16.04 LTS). Há erros com o certutil na hora da instalação e nada se consegue tentando instalá-lo. O que parece uma instalação normal termina com uma tela dizendo que o guardião não está instalado e dores de cabeça se você precisa pagar algo ou realizar alguma transação online.

Mas eis que hoje me passaram esta dica. Existem addons que modificam o user-agent do seu browser e ao fazê-lo o guardião é jogado de lado e você consegue realizar as transações tranquilamente (Lembre-se do disclaim acima, você está por sua conta em risco). Mas se o seu browser não possui nenhum addon que faça isso você pode adicionar o novo user-agent na mão.
Aqui eu usei o Firefox 59.01 (Quantun).
Passos:

  1. Na área de por a URL digite: about:config
  2. Agore pesquise por: general.useragent.override
  3. Provavelmente o seu browser não tem essa flag, então basta adicioná-la. Clique com o botão direito no corpo da página: new->string. Adicione o nome da variável e logo em seguida o valor dela: Mozilla/5.0 (X11; FreeBSD amd64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36
  4. Se tudo deu certo agora você pode tentar acessar o site do banco X e verificar que ele não reclama mais sobre a instalação do guardião.

Boa sorte e lembre-se, por sua conta em risco.

 

Referências:

https://www.howtogeek.com/113439/how-to-change-your-browsers-user-agent-without-installing-any-extensions/

https://udger.com/resources/ua-list/browser-detail?browser=Chrome

Read Full Post »

If you are an unhappy user of Chromium-browser or chrome you know exactly what I’m talking about. I stopped to count how many time I had to reboot my whole system because these two guys. Yeah, I’m guilty in part. Since I often have 30 tabs in my browser. But, shouldn’t these guys handle with memory resource in a more clever way? Recently I read that the new way Chrome is deal with it is to kill tabs that reach a limit amount of memory, but it’s not a happy end at all.
In my system, Linux Mint (currently), I just lost my counts the times I had to reboot all the system because The Memory Eater.
For now , seems it hasn’t any solution, but I realized these guys have a chrome://memory-redirect tool [1], that show you how many memory are in using. Take a look at the s-shot.
chromium

While any real solution comes, how about to keep an eye in who is the greedy memory guy and close it :).

Resources:

[1] https://www.chromium.org/developers/memory-usage-backgrounder

 

Read Full Post »

If you use Rythmbox and you hate the way some plugins for music lyrics works and  are broken briging just piece of the lyric and not the whole one. Well, I just suggest you to use my plugin that uses AZLyric instead terra.com. AZlyric web site is,  for me, the best source of indie lyrics/bands/musics you can find :).

If you want to try, feel free trying my beautiful plugin :3 https://github.com/kirotawa/pluginsinpython/tree/master/rhythmbox/patches_rhythm_git. If you find some bug, please report me :). I’m already using this patch on my rythmbox. Unfortunatelly no one in rythm devel list seemed be interested in such thing. But well, I’m using, I’m taking advantage on this, and I’m happy :P.

Read Full Post »

Fazia um bom tempo que desejava instalar uma distro mais novinha, saída do forno. Como já usava ubuntu resolvi aproveitar minha /home separada e instalar uma versão virgem no meu vostro 1310 velho de guerra. Depois de ouvir falar coisas maravilhosas do novo ubuntu 12.10, fiquei até empolgado. Mas…mas, qual não foi minha surpresa ao ver a carroça que é este ubuntu novo, ou melhor, esse unity + o ubuntu novo.

Meus problemas começaram com o touchpad que não funciona mais. (ok isento o ubuntu e culpo os fabricantes com seus drivers sebosos). Não bastasse o touchpad não funcionar mais, no ubuntu, a placa de vídeo Nvidia a mesma xingada pelo Linus Torvald, como sempre, resolveu brincar de pixel art no meu note. Se tudo isso não fosse o suficiente pra me deixar fulo da vida, percebi que o unity deixava o note 500% por mais lento (estou exagerando, mas quem odeia o unity vai me apoiar certamente!).

Cansado de sofrer resolvi instalar o i3wm, a última maravilha do mundo window maker. Uma vez que já o uso no meu TP – think pad da empresa, era hora de arriscar no note pessoal também.

E o resultado, maravilha! O touchpad,óbvio não funciona, a culpa como disse é do drive, mas o resto, tá lindo, leve e fueda! Quem está acostumado com interface gráfica facilitadora cheia de mi mi mi mi, vai estranhar e dificilmente gosta de cara do i3wm. Mas para quem curte um estilo mais old school, nada como entrar no mundo mouseless leve do peso de um unity. =) Experimenta!

2012-12-05-211811_1280x800_scrot

Read Full Post »

Primeiro de tudo, queria dizer o quanto o novo Ubuntu+unity está ruim. Terrível! Mas agora graças ao i3wm estou satisfeito e feliz. O que me faz perguntar, não seria melhor eu instalar uma distro de vergonha e continuar a usar o i3wm? Sim, seria, e é o que espero fazer em breve. Embora os apt-get faça tudo pra mim são legais atrelados a leveza e ‘fodicidade’ do i3wm – Experimentem!

De volta ao post, hoje ao tentar baixar filmes usando magnet links tive essa surpresa chata de ver o chromium enviando o link para o Opera (wtf  o Chromium fez isso) e lógico bugando e não abrindo nada.

Primeiro, vamos ver como solucionar via Chromium para que isso não aconteça. Depois veremos como o  Opera é foda e não precisa dos mi mi mi do Chromium.

Abrindo o terminal…

  • gconf-editor

2012-12-02-190302_1280x800_scrot

Seguindo o que a imagem demonstra, edite a entrada para magnet. Depois disso, cruze os dedos e seja feliz =).

Já no Opera você vai precisar ir em configurações->preferências->avançado->adicionar. Acrescentar o magnet.  Procurar o aplicativo que você vai usar para abrir os magnetics links e Txraammm, Btw, você não vai precisar setar mais nada além do aplicativo, apenas ele é o suficiente para o seu Opera abrir os links e o trasmission (no meu caso) sozinho.

Então é isso, enjoy it =)

Read Full Post »

Opa!

Agora que eu to no mundo do Android tá mais do que na hora de começar a brincar com ele, seja programando ou fazendo coisas bacanudinhas. Eu sei que o que vou postar é muito café com leite para muita gente ninja, mas pra quem não é tão ninja talvez seja algo novo, ou não, bem, pra mim não é novo, porém tão divertido como se fosse.

Com o meu android na mão eu resolvi instalar um cliente ssh (ConnectBot) e acessar meu note. Uma vez feito isso e isso já é pra mim divertido um tanto. Resolvi rodar uma app no meu note via o meu android =]. Agora que a diversão começa negadis!

Como disse antes, é tudo muito simples, não tem mistério e é divertido vê as app subindo no seu note sendo chamadas no seu android via shell in ssh.

  1. Baixe um cliente ssh pro seu android
  2. Conecte ao seu pc/note
  3. Uma vez conectado abra o programa que você quiser usando DISPLAY=:0 nohup firefox, e divirta-se.

Como sempre digo, o legal não é só fazer isso, é fazer isso e imaginar o que você pode fazer com isso. Quem sabe implementar um controle remoto pro seu note. Fazer uma série de scripts rodar com um click e ficar lá sentado sem fazer nada. Usar uma app que pegue a saída do seu ssh command e jogo no seu speach do android, etc e etc. Como disse Einstein “A imaginação é mais importante que o conhecimento”.

Read Full Post »

Sou um leitor assíduo do Geeks for Geeks, um dos melhores sites para apaixonados em C, estudantes de computação, e afins. O legal desse site é que ele te ajuda a entender várias coisas bacanas da linguagem C. Além de te mostrar jeitos curiosos de usar a linguagem, e inevitavelmente te fazendo aprender alguns truques da linguagem.

Recentemente eu estava lendo o GfG e me deparei com o problema de somar dois números em C sem usar os operadores de +, -, *, /…no site há uma solução usando biwise, super bacana e elegante. Mas o grande tchan está nos comentários onde um cara resolveu o problema de outro jeito. Para ser mais especifico, deste jeito  printf(“%d\n”,printf(“%*s%*s”,var,””,var2,””)); .

E  o que essa linha faz? Ela retorna o resultado da soma de var com var2. Mas como essa linha funciona? É agora que a coisa fica interessante.

A função printf retorna o número de parâmetros printados na tela, ok, até aqui tudo bem. Mas como raios ele mostra a soma? Vamos lá. Primeiro temos que entender o que o %*s faz. Esse cara %*s formata a sua saída na tela alinhando-a, mas para isso ele precisa vim no seguinte formato.:  (%*s, vezes, string) o que irá resultar em um alinhamento, isso mesmo, a direita, de vezes na string se vezes >= len(string), senão, nada vai acontecer.

Agora como a tal soma ali em cima funciona. Dado que você tem %*s, var, “”, var2, “” e que você quer somar var + var2, este comando vai alinhar o espaço vazio var vezes e o segundo espaço vazio var2 vezes, resultando em var + var2 parâmetros a ser printados. Desse modo teremos  o valor inteiro da soma destes no segundo printf. Simples e curioso não?

Agora vai me dizer que C não é a coisas mais linda do mundo ;]

Nota, se você usar %.*s, você formatara sua string, tipo %*.s, 2, “casa” irá mostrar “ca” na saída do printf.

Read Full Post »

Algumas pessoas escutam isso e saem correndo para as colinas, mas fato, escovar bits, ou brincar com eles e a lógica de  Bool é como brincar com a linguagem nativa do seu computador. Alias, não é como se, é de fato falar e brincar com a linguagem nativa de sua máquina.

Vou aqui falar de forma bem superficial  sobre os operadores bitwise, os magos que nos ajudam a brincar como s bits. Em C, claro, são estes os nossos amiguinhos.

  • &, and. Uso.: 1001 & 1110 , resulta em 1000 (vocês lembram da lógica booleana certo?);
  • |, or. 1110 | 1001, resulta 1111;
  • ~, complementa, tudo que é zero vira um e tudo que um vira zero. ~1100, resulta 0011;
  • ^, xor, ou exclusivo. Os iguais são zero e os diferentes um. 1001 ^ 1110, resulta 0111;
  • >> e <<, deslocamento para a direita e esquerda respectivamente. 1001 >> 2, desloca dois bits para a direita de 1001 resultando 0010. O contrário acontece para o deslocamento a esquerda.

Agora que vocês conhecem essas quatro maravilhas que tal brincar com eles? Talvez você se pergunta “mas para que raios isso é útil”. Acredite, se você gosta de programar e principalmente gosta de entender como um computador funciona, e ainda mais importante, programa em C, você um dia usará este operadores. Por hora eu recomendo os puzzles de um site muito bom Geeks for Geeks. Nesse site você vai encontrar problemas que quase sempre são resolvidos usando bitwise, claro que eles são resolvidos assim porque alguma limitação é imposta. E é exatamente este o ponto, o porquê você deve aprender sobre isto agora, para que um dia quando precisar e tiver limites no que deve fazer (complexidade, otimização, etc)  usá-los de forma satisfatória.

Leiam e acessem o Geeks for geeks, principalmente a sessão de puzzles, isso é pura diversão x].

Read Full Post »

Programando em C: const

Vamos entender como essas palavras “mágicas” extern, const e volatile funcionam em C (C puro, não C++).

Vamos começar com const. Como o nome já diz const define um tipo constante, mas quando usar? Para que usar? Por que usar?

Quando usar.: use const quando quiser definir uma variável constante que jamais poderá ser alterada. Usar const é similar a usar #define var 2, por exemplo.

Para que usar.: É muito comum a gente vê códigos de bibliotecas como o abaixo.


void Func(const int v1, const int v2)
{

...
}

Esse tipo de uso é comum para  documentar as funções. Quando se escreve uma função assim queremos dizer que os parâmetros passados não serão modificados por ela.

Por que usar.: Para documentar, para evitar que ponteiros mudem o endereço no meio do caminho, etc.

Agora vamos ver o uso de const com ponteiros e ver que há uma diferença sútil.


// São equivalentes.
const int *a;
int const *b;

// Já o trecho abaixo não é.
int const *a;
int *const b;

Na linha 6 do código acima a variável ‘a’ é um ponteiro para o tipo inteiro e é uma constante, ou seja, o seu valor não pode ser alterado, mas o seu ponteiro pode. Já na linha 7 temos um ponteiro constante, logo o ponteiro não pode ser alterado (não podemos alterar o endereço para o qual ele aponta), mas o valor armazenado no endereço para o qual ele aponta pode. Se você quiser que nem o valor armazenado seja alterado, nem o endereço, basta declarar como const int *const var.  Como vimos o conceito de const é bem simples, mas quando lida com ponteiros pode ser um pouco confuso. Por isso vamos revisar ;). Revisando.: int const *b (um ponteiro para uma variável constante), o ponteiro pode ser modificado; int *const b; (um ponteiro para um inteiro onde o ponteiro é constante, o valor pode ser alterado, mas o ponteiro não).

No próximo post trago detalhes sobre o uso de volatile e em seguida extern.

Referências.:

[1]http://boredzo.org/pointers/

[2]http://publications.gbdirect.co.uk/c_book/chapter8/const_and_volatile.html

Read Full Post »

Esse post é dedicado a todos aqueles que começaram agora a programar em C  e nos seus estudos se depararam com códigos como o abaixo:

union name
{
    int var1;
    float var2;
    double var3;

    struct _name
    {
    ...
    } name;
}

Muitos, senão todos, já sabem para que serve a struct, certo? Como o nome já diz, para criar uma estrutura e que “carrega” variáveis na sua API/lib/projeto, etc.

Qual seria então a diferença entre union e struct? Pelo que se pode ver do código acima, elas são muito parecidas senão iguais. A única coisa que difere o uso de um e de outro é a palavra reservada, union pra união e struct para estruturas. Ok. Mas qual a diferença Kirotawa?

A diferença está no uso da área de memoria. Enquanto estruturas usam disponibilizam uma área de armazenamento do tamanho da estrutura, o que quer dizer a soma dos tipos dentro dela. Deixa eu explicar melhor, supondo que você tenha a seguinte estrutura abaixo.

struct _person
{
    int id;
    char* name;
    float fee;
}person;

O tamanho da estrutura será a soma do total de variáveis pelos tipos, ou seja, 4bytes para int e float e 1byte para char, no final teremos 9 bytes. Já no caso de uma union o que acontece é que as variáveis são armazenadas com base no tamanho do maior tipo dentro da união, ou seja, se a estrutura acima fosse uma union o tamanho alocado na memoria seria o de 4bytes e nada mais nada menos que isso. Ai agora você me pergunta “Que tipo de magia é essa, e como acesso as variáveis”. Calma :P, não é magia, a união armazena o espaço com base no maior tipo e o acesso se dá do mesmo modo que nas estruturas, MAS, de uma variável por vez. Dessa forma você deve saber o que está sendo armazenado na sua união para que não receba como retorno um comportamento indefinido.

O que você ganha ao usar union? Você usa menos memoria, mas avalie bem se é o caso usar union, e lembre-se que você deve estar atento ao acesso e ao que tem lá dentro.
Quer um bom exemplo do uso de unions, dá uma olhada no código do SDL_Event.

Referências.:

[1] http://stackoverflow.com/questions/4788965/c-c-when-would-anyone-use-a-union-is-it-basically-a-remnant-from-the-c-only

[2] http://wiki.answers.com/Q/What_are_the_differences_between_a_union_and_a_structure_in_C

Read Full Post »

Older Posts »

Design a site like this with WordPress.com
Get started