Inicialmente este blog foi criado para armazenar algumas dicas e links de UNIX/Linux, OpenVMS, linguagem C, Assembly, TCP/IP e nerdezas afins. No entanto devido ao autor ter abandonado o seu plano de ser um super hacker e dominar o mundo (devido esposa, família, filhos, trabalho), a partir de 2012 este blog tem um tipo de nerdeza mais light (Android, Linux, RetroPie (retrogames), produtividade, e por aí vai). Estas dicas raramente serão criações minhas.

sexta-feira, 28 de março de 2008

Monitorando tempo de execução de uma função

Esse macete eu achei especialmente útil na hora de estudar o desempenho dos diversos algoritmos de ordenação. Aprendi no "Advanced Programming in the UNIX Environment" (Stevens e Rago), no Seção 8.16.

Vamos direto à prática, para detalhes é necessário consultar o livro e/ou as man pages.

Primeiro temos que criar a seguinte função para imprimir o tempo:


#include <unistd.h>

static void imprimetempo(clock_t tempo) {
    static long clktck = 0;

    if(clktck == 0)
        if((clktck = sysconf(_SC_CLK_TCK)) < 0)
            perror("sysconf");

    printf("%7.2f s", tempo / (double) clktck);
}


E para que esta função seja útil temos que chamá-la de maneira análoga ao exemplo abaixo:


#include <sys/times.h>

int main() {
    clock_t ini, fim;
    .
    .
    .
    ini = times(NULL);
    funcao_que_quero_ver_quanto_tempo_leva(argumentos);
    fim = times(NULL);

    printf("Tempo que levou: ");
    imprimetempo(fim - ini);
    .
    .
    .
    return 0;
}

sábado, 8 de março de 2008

recuperando senha do root no FreeBSD

Essa dica foi retirada de http://under-linux.org/wiki/index.php/Dicas/FreeBSD/FreeBSD-Senha.

Na tela de contagem regressiva para escolha do boot, basta optar pelo prompt de comando para as opções de boot. Daí é só entrar com "boot -s" que vai entrar como administrador sem pedir senha alguma. Daí é só usar o passwd para trocar a senha. Se não funcionar é porque precisa montar as partições. Um "mount -a" deve resolver isso e então é só usar o passwd.

Essa me tirou do sufoco hoje! =D

segunda-feira, 3 de março de 2008

gerando números aleatórios

Essa eu aprendi no Programming in C - UNIX System Calls and Subroutines using C. Trata-se de uma gambiarra para gerar números aleatórios.

Abaixo uma função que gera n números aleatórios de zero a nove e guarda no vetor V passado a função como parâmetro:


#include <stdlib.h>
#include <time.h>

#define MAIOR 10


void geranumeros(int V[], int n) {
    srand((unsigned int) time(NULL));
    while(n > 0)
        V[--n] = rand() % MAIOR;
}


Achei isso especialmente útil na hora de testar os algoritmos de ordenação ensinados na disciplina de Estrutura de Dados II.

quinta-feira, 28 de fevereiro de 2008

Notas sobre escrita de textos na área de Sistemas de Computação na língua de Camões

Texto bem interessante para tradutores ou simplesmente para leitores lusófonos de textos em inglês:

sexta-feira, 22 de fevereiro de 2008

demonstração gráfica de algoritmos de ordenação

Muito interessante para visualizar graficamente como funcionam os algoritmos de ordenação mais elementares.

http://web.engr.oregonstate.edu/~minoura/cs162/javaProgs/sort/

tags