Tag Archives: c++

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

Mortes na tecnologia

Unix

Unix

Steve Jobs morreu. ok. Muita gente escreveu sobre ele, notícias para todos os lados, homenagens reportagens e até provavelmente logo um filme. Eu não estava pensando em escrever nada sobre isso, até que… talvez meio ofuscado pela morte do primeiro, ou talvez por ser simplesmente um nerd genial e não muito um cara da mídia, morre aos 70 anos de idade Dennis Ritchie.
Bom, escreveram bastante coisa sobre os dois – Ritchie em especial, no meio técnico – e isso é fácil de se ver por ai, mas para os leigos em tecnologia, o Steve Jobs inventou o iphone/ipod/mac. Estes todos usam um sistema operacional chamado UNIX. Adivinha quem criou o unix ? Isso mesmo. A grande maioria dos softwares desenvolvidos usam uma linguagem criada por ele, ou alguma derivada da que ele criou (Nos dois casos, junto com outra pessoa).

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

Parabéns Unix!

E o unix completa 40 anos!
(terá que fazer exame de próstata!)

Este mês comemoramos os 40 anos do sistema unix.

Nunca vi, nem comi, eu só ouço falar

Há algum tempo atrás, eu estava em uma palestra da microsoft, aonde o palestrante logo após apresentar o windows 2003 server disse: “Todos estão trocando seus servidores unix pelo windows 2003 server”. GRANDE MENTIRA. Quem tem sistema unix e trabalha com ele não troca. Acho que é possível perceber o quanto esse sistema tem um nome forte.
O Unix é um dos sistemas operacionais (como linux, windows, Mac OSX) que mais influenciou a tecnologia que temos hoje. Há 40 anos atrás foi criado o Unix, por Ken Thompson e Brian Kernighan, depois sendo reescrito usando a linguagem C, criada por Dennis Ritchie para ser “portável”.

PS: Os nomes Kernighan e Ritchie são dos escritores daquele livrinho rosa de C que todos adoram. Não é mera coincidência 😉 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