Author Archives: Alfredo Kojima

Visual Studio: Updating Intellisense

Se sua pressão aumenta toda vez que vê essa mensage no Visual Studio, é possível desabilitar totalmente essa funcionalidade: Vá em: C:\Program Files\Microsoft Visual Studio 8\VC\vcpackages ou equivalente na sua máquina e apague (ou renomeie para algo inócuo) o arquivo … Continue reading

Posted in Windows | Tagged , , , , | Comments Off on Visual Studio: Updating Intellisense

C++: hash_set, hash_map

Apesar dos templates para hash_set e hash_map não serem padronizados, ambos são relativamente comuns, estando disponíveis tanto na implementação GNU (ie, no GCC) quanto no Visual C++ no Windows. Existem algumas diferenças, como o namespace um pouco mais escondido no … Continue reading

Posted in CPP | Tagged , , , , , , | Comments Off on C++: hash_set, hash_map

C++: Ponteiro para métodos/funções sobrecarregadas

Para obter ponteiros a métodos ou funções sobrecarregadas, como exemplo: class Foo { public: void bla(int a); int bla() const; }; Se tentarmos usar o nome da função diretamente, o compilador não saberá a qual dos métodos você se refere. … Continue reading

Posted in CPP | Tagged , , , | 3 Comments

C, C++: Funções com número variável de parâmetros (stdargs)

Palavras-chave: C, C++, varargs, argumentos variáveis Para escrever funções que aceitam quantidade variável de parâmetros, usa-se o mecanismo de stdargs do C. Para isso coloca-se “…” como último parâmetro na declaração da função e depois usa-se as funções de stdarg.h … Continue reading

Posted in C, CPP | 6 Comments

C++: Pré-compilação de headers no gcc

Palavras-chave: C++, C, C#, precompiled header, prefix header, g++, lento Se seu programa em C++ demora séculos para compilar, considere usar um recurso do GCC 4 que acelera compilações de maneira bastante simples. Um dos motivo porque programas C++ demoram … Continue reading

Posted in CPP | 1 Comment

C: Ler linhas de um arquivo texto de maneira portável

Palavras-chave: C, arquivo texto, linhas, leitura, getline Como dito num post anterior, a glibc possui uma função para ler linhas de comprimento arbitrário de um arquivo texto. Mas como esta função é especifica a glibc, alguns leitores pediram uma versão … Continue reading

Posted in C | 12 Comments

Python: split() de palavras com "strings protegidas"

Palavras-chave: Python, split, tokenizacão, análise léxica, parser, strings, quotes, aspas O módulo re possui a conveniente função split(), que faz o mesmo que o split() dos strings, mas aceita expressões regulares como separador. Isto pode ser aproveitado para fazer um … Continue reading

Posted in Python | 2 Comments

Python: UTF8 e SQLObject

Palavras-chave: Unicode, utf8, SQLObject, TurboGears, erro UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xc3 in position 50: ordinal not in range(128) Este erro pode ocorrer quando se tenta executar queries que envolvem caracteres Unicode (na query em si ou no resultado) … Continue reading

Posted in Python | Comments Off on Python: UTF8 e SQLObject

C: Linkagem estática não encontra funções

Palavras-chave: C, linkagem estática, undefined reference, referência indefinida Ao linkar programas que usam bibliotecas estáticas que por usa vez usam outras bibliotecas estáticas, pode ocorrer de o linker reclamar da falta de símbolos de uma das bibliotecas, apesar de eles … Continue reading

Posted in C | 4 Comments

C: varargs com macros no gcc

Palavras-chave: C, gcc, cpp, macros, …, varargs, número de parâmetros variável, variadic macros Para escrever macros de função com número variável de argumentos: #define DPRINT(fmt, …) printf(“DEBUG: “fmt”\\n”, ## __VA_ARGS__) __VA_ARGS__ será substituído pelos parâmetros dados. E o ## entre … Continue reading

Posted in C | 11 Comments

C++: undefined reference to `vtable for Classe'

Palavras-chave: C++, gcc, g++, erro, compilacão, linker, linking Na maioria dos casos, o erro undefined reference to `vtable for Class’ ocorre quando falta a definicão de algum método declarado na classe. Certifique-se que seu Makefile contém o arquivo com a … Continue reading

Posted in CPP | 5 Comments

C++: Depurando exceções

Palavras-chave: exceções, gdb, depuração, debug exceptions, catch Ao depurarmos programas C++ o GDB costuma interromper a execução quando a exceção é pega (catch) ou já quando um signal é lançado e o programa é abortado. O problema é que esse … Continue reading

Posted in CPP | Comments Off on C++: Depurando exceções

Python: Iterar sob listas com índices

Palavras-chave: for, iteração, índice O for do Python é bastante conveniente para iterar listas, descartando a necessidade de variáveis de índice auxiliares. No entanto as vezes é necessário iterar uma lista e ter o índice de cada elemento além do … Continue reading

Posted in Python | 2 Comments

C: Performance: percorrendo vetores de bytes

Palavras-chave: C, memória, otimização, arrays, vetores, bitmap, pixmap Ao se escrever código para manipulação de strings ou imagens, é comum percorrer grandes vetores de bytes. A maneira óbvia de fazer isto é algo no estilo de: char *ptr= buffer; for … Continue reading

Posted in C | 8 Comments

C: Segmentation fault em programas OpenGL com multi-threading

Palavras-chave: OpenGL, Linux, multi-thread, drivers NVidia, crash, segmentation fault, segfault Se seu programa explode em uma função OpenGL sem nenhum motivo aparente, verifique se a chamada está sendo feita desde a thread onde a OpenGL foi inicializada. As bibliotecas que … Continue reading

Posted in C, Linux | 2 Comments

C, C++: Transformar macros e identificadores em strings

Palavras-chave: C, C++, CPP, macro, string, identificador Para transformar o nome de um macro ou identificador em string: #define STR(s) #s Para transformar o valor de um macro ou identificador em string: #define STRV(s) STR(s) O seguinte exemplo ilustra a … Continue reading

Posted in C, CPP | 3 Comments

C: Ler linhas de um arquivo texto

Palavras-chave: C, arquivo texto, fgets, linhas de comprimento arbitrário O método típico para se ler um arquivo texto linha a linha é usando a função fgets() com um buffer estático. O problema é que nem sempre sabemos qual será o … Continue reading

Posted in C | 9 Comments

Python: Escapar caracteres especiais em HTML (entities)

Palavras-chave: HTML, escape, escapar, html_escape, htmlspecialchars, htmlentities Funcões rápidas para escapar e desescapar caracteres especiais HTML (<, & etc) from htmlentitydefs import codepoint2name as cp2nm, entitydefs as nm2cp import re def htmlescape(texto): return “”.join([cp2nm.has_key(ord(x)) and “&%s;”%cp2nm[ord(x)] or x for x … Continue reading

Posted in Python | 5 Comments

Como embutir bibliotecas e frameworks em uma aplicação Cocoa

Palavras-chave: Mac, embed framework, dylib, Cocoa, deployment, XCode No OS X, bundles de aplicativos (as pastas .app) podem conter as bibliotecas dinâmicas e Frameworks que o programa usa. Assim sua aplicação passa a ser auto-contida: o usuário não precisa instalar … Continue reading

Posted in Mac | 2 Comments