Tag Archives: programação

Proposta para um log melhor

O log é uma parte importante de qualquer sistema que precisa de análise em caso de falhas ou de monitoração de seja lá qual for o dado que é exposto lá.
Podemos usar como exemplo os seguintes cenários

  1. Um sistema de negociação gera um dado incorreto. Como descobrir isso se você não sabe o que gerou a falha ?
  2. Um sistema de restaurantes deu um erro, mas o restaurante fica num lugar ermo e de difícil acesso para que seja feita uma análise no local.
  3. Um sistema escreve no log informações de carga e tempo processamento dos dados.

Update: Número de parâmetros !

Continue reading

Cérebro – artigo de luxo

Eu sei que vão reclamar, mas….

O cérebro em uso, ou seja, aquele que ainda sabe pensar, atualmente, está virando artigo de luxo.

Ultimamente, no mundo do desenvolvimento de software, as pessoas estão cada vez menos gostando de pensar.
De um tempo para cá, empresas de tecnologia tiveram a grande sacada de fazer IDEs e linguagens mais fáceis para desenvolver-se software, frameworks, componentes de tela, de banco, etc, para que os desenvolvedores ganhassem mais produtividade no desenvolvimento de sistemas. Ok, Isso é legal, mas existe um detalhe importante. Ao mesmo tempo que se fizeram frameworks e IDEs que agilizam o desenvolvimento, fizeram também elas de uma forma que qualquer dumb consiga desenvolver um software.

Continue reading

Iniciando com Qt

Inicio agora uma série de artigos sobre como programar em Qt.

O que é a Qt ?

A Qt (lê-se cute – igual a fofo mesmo) é uma biblioteca para desenvolvimento de aplicações.
Está contida nela a biblioteca e uma IDE, o qtcreator. É uma ótima IDE, mas não é obrigatória.

Ao invés de começar usando o QtCreator, vamos fazer um projeto simples na mão para que se entenda como tudo funciona por baixo dos panos – E isso é muito importante.

Continue reading

C++ – Threads

Continuando a série “O que fazer e o que não fazer em C++”, vamos hoje falar de threads. Threads, famosas threads.

As threads tem um estigma forte de “só use se realmente for necessário, e eu concordo com isso, mas o caso é que geralmente é preciso usar threads para várias coisas.

Podemos separá-las em dois grupos básicos:
1. Threads seriais
2. Threads concorrentes

Neste caso, as problemáticas são as concorrentes. Vamos entender o porquê.
Threads seriais não precisam de sincronização.  Podemos citar como exemplo uma thread que recebe mensagens via socket e coloca em uma fila, e outra thread vai remover pacotes dessa fila. O único cuidado que temos é de colocar corretamente os locks na fila usada para não ocorrer uma leitura de memória inválida. Continue reading

C++ – Mutex / Critical Section

Saluton!
Este é o primeiro de uma série de artigos de C++ sobre o que fazer e o que nunca fazer em c++.

É claro que fazer ou não fazer não é uma lei, mas uma boa prática, pois temos sistemas que devido a certos requisitos ou situações não podemos fazer as coisas da forma que gostariamos.

Para começar, vamos falar de mutex ou critical sections.
O que são e para que servem ?

Critical Section é uma forma de garantir que um trecho de código será acessado por somente uma thread/processo por vez, garantindo assim que uma thread não apagará algo que outra está lendo, por exemplo.
Para ficar mais claro, imaginemos uma fila de mensagens, aonde uma thread recebe mensagens via socket e põe um uma fila, e outra consome e processa. Se não tivermos uma critical section garantindo que só uma delas acessa um trecho de código por vez pode ocorrer da thread de processamento retirar uma mensagem da fila de leitura e a thread de recebimento tentar inserir uma nova mensagem depois dela por não saber que a mensagem já foi pegada e assim perdendo a mensagem quando esta for liberada. Continue reading