quarta-feira, 7 de janeiro de 2015

Linux - filesystems

'Didaticamente' filesystems são múltiplos reservatórios que armazenam várias coisas. Algo meio maternal básico, mas devagar iremos entender.
OBS.: alguns nomes deixarei em inglês

Exemplos de diferentes tipos de filesystems utilizados pelo Linux:
  • Disk filesystems convencionais : ext2, ext3, ext4, XFS, Btrfs, JFS, NTFS, etc.
  • filesystems de armazenamento Flash: ubifs, JFFS2, YAFFS, etc.
  • filesystems de base de dados.
  • filesystems para propósitos especiais : procfs, sysfs, tmpfs, debugfs, etc

Partition e filesystems

uma partição é uma parte lógica do disco, considerando que o filesystem é o método de guardar/encontrar arquivos dentro do disco rígido ( geralmente dentro de uma partição ) 

segunda-feira, 5 de janeiro de 2015

Maratona de Programação 2014 - Problema A - Resolução alternativa

Dando uma olhada rápida na prova da maratona de programação de 2014, primeiramente eu pensei que fosse uma coisa de outro mundo, mas não é, na realidade parece a prova do ENEM, primeiro vem a "historinha", depois é dito como querem a forma de entrada e saída.

Eu preparei uma resolução do Problema A - Automated Checking Machine

Maratona de Programação

Muitos estudantes da área de TI, provavelmente no início de seus estudos ( graduação, técnico, .. ) , devem ter ouvido na Maratona de Programação. Eu particularmente nunca soube ao certo como funciona, mas sempre fui interessando em saber, já que programação é o foco, e os benefícios aos participantes ganhadores são muitos.

A maratona de programação é um evento da Sociedade Brasileira de Computação, realizado em parceria com a Fundação Carlos Chagas. O objetivo da maratona é realizar competições regionais para classificação de equipes
para o Concurso de programação da ACM.

sábado, 3 de janeiro de 2015

C - Um pouco sobre a memória e variáveis

Interessante saber sobre o funcionamento da memória do seu computador, pois, desde o começo do desenvolvimento do seu programa operações na memória são realizadas.

Uma forma didática de entender como funciona a memória em programas escrito em linguagem C, está bem mostrado no livro Head First C.

Pilha - Stack
Seção da memória usada para armazenar variáveis locais. Todas vez que uma função é chamada todas as variáveis dessa função são criadas na pilha, e são retiradas da pilha quando a função é terminada.

quinta-feira, 1 de janeiro de 2015

C - scanf() , buffer overflow

Esse post serve mais como uma dica, para você que está iniciando na linguagem C, ou até mesmo para quem já está em um nível mais acima, aliás, é um pouco complicado saber toda a sintaxe que uma linguagem usa.

Imagine você escrevendo um programa com pelo menos 300 linhas, sem ajuda de uma IDE, utilizando o terminal, mais especificamente do Linux. O programa compila normalmente, sem acusar erros, ai bate aquela felicidade. Bem, na hora de rodar o programa, dependendo das funções que você tenha usado, é exibido algum erro de falha de segmentação, e é ai que da aquela tristeza, onde está o erro?

C - Relação entre vetores e ponteiros

Lendo o livro Head First C, me deparei com algo muito interessante. A relação entre vetores e ponteiros.

um vetor meio que serve como um ponteiro, a diferença é que o tamanho do vetor na memória é o tamanho de todos os valores nele contido. Já o tamanho do ponteiro em um sistema de 32 bits assume 4 bytes, em um sistema de 64 bits assume 8 bytes. Isso por que o ponteiro somente aponta para a posição de memória.

Quando se declara um ponteiro a máquina aloca os bytes necessários de acordo com o tipo de sistema, quando se declara um vetor a máquina aloca espaço para guardar o vetor mas não aloca espaço para a variável do vetor. 

quarta-feira, 31 de dezembro de 2014

( C ) Parâmetros - Valor ou Referência

Às vezes me confundo como passar uma variável como parâmetro de uma função, e alterar os dados que ela carrega. Acredito que muito estudante também já se enrolou com isso. É relativamente fácil o entendimento, e exige um pouco de conhecimento em ponteiro.

Veja o trecho de código a seguir, e note que o valor de x depois de ser passado como parâmetro para a função reduzir_valor, não se altera: