Vaga para programador Linux/C em Blumenau

Desenvolvedor de Software – Linux e C

Responsabilidades

Esta posição é responsável por desenhar e implementar aplicativos em SW para sistema operacional em Linux, incluindo desenvolvimento de novos aplicativos, melhorias e correções em aplicativos existentes, instalação de pacotes de aplicativos de código aberto. Esta posição responde para o supervisor do time.

Requerimentos

  • Mínimo de 4 anos de experiência em Linux e programação C
  • Excelente comunicação
  • Criativo e independente
  • Experiência requerida:
    • Experiência de trabalhar com desenvolvimento em Linux
    • Bom conhecimento de Linux Kernel e aplicações em Linux
  • Experiência desejada:
    • Conhecimento de redes TCP/IP
    • Conhecimento de configurações Linux
    • Ter trabalhado com porte de código Linux
    • Ter trabalhado com shell script
    • Familiarizado com projetos e bibliotecas de código aberto (open source)
    • Controle de revisão de código – SVN  ou CVS
    • Conhecimento em servidores de autenticação
    • Experiência em debugar código
  • Plus:
    • (Plus) – Experiência em compiladores de múltiplas plataformas (cross-compiling environment)
    • (Plus) – Algum conhecimento em servidores de processo do tipo HP iLO e Dell iDRAC
    • Plus: Chef/Puppet – alguma experiência

Interessados enviar CV para o email [email protected]

images

POSIX Regular Expression em C

Expressões Regulares são úteis para diversos fins, desde validações de números como CPF e CEP, até em validações de entradas de campos e checagem de strings. Linguagens como Python, Javascript, PHP e outras já possuem expressões regulares built-in, prontas para serem utilizadas pelos programadores. Nesta postagem mostraremos como construir expressões regulares com a POSIX RegEx na linguagem C na plataforma Linux.
(mais…)

pthreads1

Linux API: pthreads – Parte 1

Processadores de múltiplos núcleos já são uma realidade nos computadores da grande maioria dos usuários comuns. Em meio a esse avanço podemos escrever programas que executam várias linhas de processamento em paralelo, podendo fazer com que esses programas tenham um tempo de resposta menor.

Para tal, este post mostrará como utilizar POSIX threads na linguagem C.

O que são threads?

Threads são linhas de execução para processos. Ao iniciar um processo, uma thread principal é iniciada, um processo então pode criar outras threads para que estas executem tarefas específicas e de forma paralela. Quando temos uma CPU com um único núcleo, dizemos que as threads executam de forma concorrente, uma vez que a CPU só pode executar uma thread por vez, mas há mais que uma para ser executada ao “mesmo tempo”. Já quando temos uma CPU com vários núcleos, as threads podem ser executadas tanto de forma concorrente como em paralelo, pois o scheduler pode priorizar outros programas do computador além do seu.

(mais…)

Iluminação Natalina com Arduino, Temporizador e LDR

Neste projeto, irei apresentar a vocês como controlar uma carga de 110 ou 220 volts com um Arduíno e um relé. Utilizaremos também um LDR para medição de intensidade de luz, para poder fazer com que a carga seja ligada apenas quando for escuro, e além disso, com a opção de temporizar o tempo que a carga ficará ligada. Um exemplo de aplicação é a iluminação Natalina, fazendo ela ligar somente quando escurecer, e caso quiser, pode-se também programar essa para desligar após algumas horas, ou ainda, deixar com que ela se apague novamente quando o dia clarear.

(mais…)

glibc-ghost

Como utilizar o getaddrinfo para evitar a falha GHOST

Em janeiro de 2015 se ouviu falar de uma falha de segurança na glibc chamada GHOST. Esta falha poderia ser explorada por um programa malicioso utilizando as funções gethostbyname() e gethostbyname2() da glibc. O ataque acontece por um buffer overflow dentro destas funções quando um endereço inválido é passando como parâmetro. Ao explorar esta falha, o atacante consegue executar códigos arbitrários com as permissões do usuários executando o processo.

(mais…)

python-logo

Utilizando Shared Objects no Python

Python é realmente uma linguagem muito versátil, tendo a mão quase sempre tudo o que se precisa fazer. Então, a algum tempo atrás eu precisava verificar a possibilidade de carregar um Shared Object com o Python, e eis que encontrei. A documentação do Python é realmente muito útil, com exemplos de utilização de módulos, inclusive do módulo em questão.

Para poder carregar a lib, eu utilizei o módulo ctypes. Este módulo provê tipos de dados compatíveis com o C e permite chamar bibliotecas, como DDLs e shared objects. Para iniciar o exemplo, eu criei uma lib, na verdade um shared object, a seguir:

(mais…)