Posts tagged ‘dicas’

  • Log channels Asterisk

    Data:2011.10.27 | CategoriaDicas | Resposta:0

    No asterisk, além dos logs padrão, é possível definir seus próprios logs. Para isto, basta criar um novo log channel dentro do arquivo logger.conf. Veja o exemplo:

    Acrescente o a seguinte linha no arquivo logger.conf  na seção logfiles:

    
    test => notice,warning
    

    Na console do asterisk, digite:

    
    pbx*CLI> logger reload
    

    Pronto, um novo arquivo de log está sendo gerado na pasta de logs do asterisk com as informações de notice e warning.

  • Gerar coredump em programa C

    Data:2011.09.13 | Categorialinux | Resposta:2

    Quando um programa termina inexperadamente, o Linux pode gerar um dump da área de memória deste programa no momento do crash, para depuração. Acontece que o seu ambiente pode estar configurado para não gerar esse dump. Uma maneira de conferir isto é executando o seguinte comando:

    # ulimit -c

    O número retornado é o tamanho máximo que o coredump pode ter em kb. Caso seja 0, significa que não será gerado coredump. Para garantir a geração, o valor pode ser especificado como infinito:

    # ulimit -c unlimited

    O problema é que seu programa pode estar rodando em uma sessão diferente, e assim, os limites podem varias. Desta maneira, o próprio programa pode alterar este parâmetro em tempo de execução. Segue um pequeno código de exemplo:

    #include <signal.h>
    #include <sys/time.h>
    #include <sys/resource.h>
    
    int main(int ac,char *av[]) {
    struct rlimit limit;
    limit.rlim_cur=RLIM_INFINITY;
    limit.rlim_max=RLIM_INFINITY;
    
    setrlimit(RLIMIT_CORE,&limit);
    printf("%d\n",10/0);
    
    return 0;
    }
    

    Neste exemplo, foi usada a struct rlimit. Seus membros são rlim_cur e rlim_max, sendo eles softlimit e hardlimit respectivamente. O valor definido para ambos foi infinito (RLIM_INFINITY). Para efetivar a alteração, usa-se a função setrlimit. Veja que este código exemplo irá terminar  em crash, pois há uma divisão por zero e o coredump deverá ser gerado.

  • procps-dev

    Data:2011.03.09 | CategoriaDicas, linux, slackware, utilidades | Resposta:0

    Essa semana precisei implementar uma função da biblioteca libproc para que meu programa só permitisse uma instância. O problema é que eu precisava dos headers do pacote procps, mas por padrão o Slackware não instala.

    Por isso, precisei fazer manualmente, baixar o pacote, desempacotar e copiar para a pasta de headers. Não sei se futuramente esses valiosos arquivos serão inclusos no pacote oficial, mas de qualquer maneira, eu criei um SlackBuild que possa ajudar quem está na mesma que eu.

    #!/bin/bash
    MIRROR=${MIRROR:-http://ftp.belnet.be/packages/slackware/slackware_source/}
    VERSION=${VERSION:-3.2.7}
    ARCH=noarch
    BUILD=${BUILD:-2duderamos}
    CWD=$(pwd)
    TMP=${TMP:-/tmp}
    PKG=$TMP/package-procps-dev
    
    rm -rf $PKG
    rm -rf $TMP/procps-$VERSION
    if [ ! -f procps-${VERSION}.tar.gz ];then
      wget "${MIRROR}/a/procps/procps-${VERSION}.tar.gz" || exit 1
    fi
    
    cd $TMP
    
    tar xzvf $CWD/procps-$VERSION.tar.gz || exit 1
    
    mkdir -p $PKG/install
    mkdir -p $PKG/usr/include/procps
    mkdir -p $PKG/lib
    
    cd $TMP/procps-$VERSION
    cp proc/*.h $PKG/usr/include/procps
    cat $CWD/slack-desc > $PKG/install/slack-desc
    cat $CWD/doinst.sh > $PKG/install/doinst.sh
    
    cd $PKG
    
    makepkg -l y -c n $TMP/procps-dev-$VERSION-$ARCH-$BUILD.txz
    
    rm -rf $TMP/procps-$VERSION.tar.gz
    rm -rf $TMP/procps-$VERSION
    rm -rf $PKG
    
  • Youtube URL offset

    Data:2011.02.11 | Categoriacuriosidade, Dicas, vídeos | Resposta:2

    YoutubeHoje, por acaso, acabei descobrindo uma coisa muito interessante no Youtube. É possível abrir um vídeo não só pelo início, mas por qualquer parte dele.

    Não sei se ficou claro, mas segue a dica:

    http://www.youtube.com/watch?v=[video id]#at=[tempo de offset em segundos]

    Exemplo:

    http://www.youtube.com/watch?v=EShea9vWFtI#at=30

    Vai começar o vídeo METNAL – Perfect Strangers (Deep Purple Cover) – Curitiba a partir de 30 segundos do início.

  • Programa Leia Mais: City of Ember

    Data:2011.02.02 | Categorialivros | Resposta:0

    Como todo início de ano, penso em como fui ano passado e projeto mudanças para o novo ano. Dentre as mudanças está a implantação do Programa Leia Mais. Em síntese, quero criar um hábito de leitura frequente e poder postar aqui minha opinião sobre as obras lidas. Não há limitação de temáticas, e caso tenham sugestões, por favor, elas serão bem vindas.

    Pois bem, o primeiro livro desta iniciativa é o City of Ember.

    Este livro de Jeanne DuPrau narra a estória de uma cidadezinha chamada Ember que fica dentro de uma enorme caverna. A cidadezinha é um pequeno ponto luminoso dentro de uma escuridão sem fim e desconhecida. Como não há dias e noites definidos pela presença do sol no céu, a iluminação é toda feita por lâmpadas, e por isto, toda a vida é dependente do seu velho gerador.

    Acontece que a cidade já está sofrendo com a falta de mantimentos nas lojas e seu gerador está começando a falhar e as origens da cidade é pouco clara para os habitantes, que atribuem sua criação aos ‘construtores’, que ganham também o papel de salvadores daqueles que profetizam seu retorno.

    Como protagonistas, Lina Mayfleet, uma garota vivás, e Doon Harrow, um apaixonado por tecnologia como o pai, seguem pistas de um antigo documento que  foi encontrado por Lina aos pedaços dentro de um estranho artefato. Eles estão preocupados com o destino da cidade e acreditam que este documento contém importantes informações  para salva-la e todo seu povo.  Veja o trailer do filme:

    No livro/filme, existe um povo que vive isolado de qualquer outra sociedade em uma cidade criada pelos ‘construtores’ que deixaram livros com instruções para a vida na cidade e recursos limitados. Poucos acreditam haver outras cidades e outros povos, mas a maioria discorda. No momento, eles passam dificuldades pela falta de mantimentos e recursos necessários para a vida.

    Em nosso mundo real, muitos acreditam que o Universo e a Terra foram criados por um Deus (construtor), que somos o único ser vivo inteligente (povo) deste Universo e seguimos os livros sagrados de Deus (construtor). Também, estamos próximos da escassez dos recursos naturais e necessários para a vida. No mínimo, interessante as semelhanças.

  • AltGr em Linux no Acer Aspire 7520

    Data:2010.12.04 | Categorialinux | Resposta:0

    Tive um problema com o teclado do meu notebook. Mesmo que eu carregasse a layout correta, br-abnt2, a combinação das teclas AltGr + q e AltGr + w não produziam os caracteres ‘/ ‘e ‘?’ respectivamente no console. Dentro do KDE4 funcionava perfeitamente.
    A solução foi adicionar ao arquivo /usr/share/kbd/keymaps/i386/include/linux-with-alt-and-altgr.inc do meu Slackware64 13.1 as seguintes linhas:

    altgr keycode  16 = slash
    altgr keycode  17 = question
    

    Com isto, adicionei no mapeamento do teclado a combinação necessária. Para carregar, usei o comando:

    loadkeys br-abnt2
    
  • Repositório local Slackware

    Data:2010.11.24 | CategoriaDicas, linux, slackware | Resposta:0

    Que usuário Slackware nunca pensou em criar em sua rede um repositório local dos pacotes current? Bem… eu já. Como tenho vários servidores Slackware em minha rede, seria muito mais fácil puxar tudo de uma vez e manter sincronizado a cada período.

    Pesquisando na Internet como eu poderia fazer isso, encontrei a solução implementada por Eric Hameleers em seu blog. Logo baixei e fiz funcionar. Pronto, agora só me falta configurar o slackpkg de todos.

  • linkfailover 1.0 testado e aprovado

    Data:2010.11.23 | CategoriaDicas, linux, redes, servidores | Resposta:0

    Hoje finalmente consegui implantar uma solução para falha de links no meu Linux. O linkfailover assume um gateway como sendo primário e uma lista de outros alternativos. Caso o primário falhe, ele busca na lista de alternativos um que esteja disponível para assumir a saída de pacotes. Acredito que existam outras implementações para essa solução, mas esta foi a que casou perfeitamente com a minha necessidade. Faça o download aqui.

  • Montar partição de VM em host

    Data:2010.10.26 | CategoriaDicas, linux, utilidades, virtualização | Resposta:0

    Há momentos em que é necessário trabalhar com um disco ou partição de um servidor Linux sem que ele seja usado no boot. Normalmente em PCs usamos um disco de boot que nos entrega um shell para darmos comandos. Geralmente isto é feito para depuração de problemas na partição.

    Em máquinas virtuais baseadas no KVM, é possível montar uma partição de uma máquina virtual no servidor hospedeiro. Para isto, basta usar o módulo Network block driver (nbd). Para habilitar, verifique se sua configuração do kernel contém “CONFIG_BLK_DEV_NBD=m” ou “CONFIG_BLK_DEV_NBD=y”. Caso seja um módulo, basta carregá-lo com o modprobe.

    modprobe nbd max_part=63

    Mais informações, use: modinfo nbd.

    No pacote do qemu-kvm, vem uma ferramenta chamada qemu-nbd. Com ela, basta conectar algum dos arquivos de bloco nbd à imagem do disco virtual. No meu caso:

    qemu-nbd -c /dev/nbd0 /dev/logical/dns2

    .

    Ele critou outros arquivos de blocos, representando todas as partições do meu disco virtual: /dev/nbd0p1, /dev/nbd0p2 e /dev/nbd0p3. Com isto, basta eu montar este bloco a alguma pasta do sistema, como no exemplo:

    mount /dev/nbd0p1 /mnt/tmp

    Vale lembrar que o hospedeiro precisa ter suporte ao sistema de arquivos da partição que será montada.

    Para desconectar, é preciso desmontar as partições montadas anteriormente e desconectar o dispositivo.

    qemu-nbd -d /dev/nbd0

    Mais informações use “qemu-nbd -h” ou “man qemu-nbd”.

  • KVM+libvirt em hugepages

    Data:2010.09.27 | CategoriaDicas, linux, virtualização | Resposta:1

    O uso de hugepages em domínios KVM no libvirt é muito simples, e pode ser aplicada tanto em VMs já instaladas como em novas. Na definição do domínio, certifique que haja a seguinte estrutura:

    ...
    <memoryBacking>
    <hugepages/>
    </memoryBacking>
    ...
    

    Para não haver problemas, certifique também que há páginas suficientes para hospedar a quantidade de memória do domínio. Lembrando que em um sistema x86 32 bit e 64 bit, ocupam 4096KB e 2048KB respectivamente. Sendo assim, um domínio de 256MB deverá ter disponível 64 páginas para um processador 32 bit e 128 páginas para um 64 bit.

    Para descobrir quanto há de páginas disponíveis, verifique o arquivo /proc/meminfo:

    [ćode lang="bash"]grep -i huge /proc/meminfo[/code]

    O libvirt também tem que estar preparado para gerenciar domínios com hugepages. Para ativar este recurso, o arquivo /etc/libvirt/qemu.conf deverá conter a seguinte opção, sendo /dev/hugepages o caminho para acesso à hugepages (como mencionado no post anterior):

    hugetlbfs_mount = "/dev/hugepages"

    Feito isto, basta reinicializar o libvirtd para que as configurações tomei efeito e inicializar o domínio configurado. Verifique o uso das hugepages para confirmar seu uso.