При разработке Windows-приложений часто приходится иметь дело с типом TCHAR. Но строковые функции для работы с ним не на слуху. Их приходится постоянно вспоминать. Для решения этой проблемы я составил таблицу, в которой приведено соответствие строковых функций для типов char, wchar_t и TCHAR. Продолжить чтение →
Крайне необычный способ разыменования итератора
Итераторы занимают важное место в разработке программ на С++. Но многие начинающие программисты совершенно не понимают, как ими пользоваться. И иногда рождают такой код, от которого волосы встают дыбом. Ниже приводится пример такого кода для задачи получения значения, на которое указывает итератор. Продолжить чтение →
Дефицит модульного мышления
Важной проблемой современной системы образования в области программирования является то, что она не способствует развитию модульного мышления. Это относится к статьям, книгам, обучающим видеороликам и др. Продолжить чтение →
Загрузка старого ядра Linux
К несчастью обновления ядра Linux могут приводить к регрессии системы (появлению ошибок). Поэтому полезно уметь загружать систему со старым ядром. Это можно сделать двумя способами: путем ручного выбора нужного ядра из списка при загрузке системы, или путем изменения настроек GRUB. Кратко опишу оба этих способа. Продолжить чтение →
Чем плоха функция PulseEvent
Лично мне нравится функция PulseEvent. Она освобождает и тут же вновь захватывает объект событие. Но, как справедливо отметили в комментариях к одному из моих прошлых постов, компания Microsoft не рекомендует ее к использованию. Вместо нее, начиная с Windows Vista, рекомендуется использовать механизм условных переменных (condition variable). Функция PulseEvent сохранена исключительно в целях обратной совместимости. Но давайте попробуем разобраться, чем она так плоха и можно ли с этим что-то сделать?
Не создавайте пространство имён с именем linux
При разработке на С++ кроссплатформенного приложения разумно выделить платформо-зависимые части в отдельные пространства имён. Например, части, относящиеся только к операционным системам семейства Windows, в пространство имён windows. Это хорошая идея. Однако здесь есть крайне не очевидный подводный камень. Дело в том, что в компиляторе gcc нельзя создать пространство имён с именем linux. Продолжить чтение →
Компиляция 32-битных приложений XForms на 64-битном Linux Mint
Что мне не нравится в GTK, так это сложность разработки 32-битных приложений на 64-битной Linux машине. В обсуждении на StackOverflow решили использовать отдельную виртуальную машину с 32-битным Linux на борту. Это не очень удобно.
Библиотека xlib лишена этого недостатка. Но она слишком низкоуровневая. И тут я наткнулся на XForms. Это графическая библиотека, основанная на xlib и распространяемая под лицензией LGPL. О том, как я настраивал ее на своем домашнем компьютере я и хотел бы сегодня рассказать. Продолжить чтение →
Что скрывает O-нотация?
Для оценки времени работы алгоритмов принято использовать O-нотацию. Она задает верхнюю асимптотическую сложность алгоритма. То есть, она показывает как, при прочих равных, изменяется время работы алгоритма при изменении размера входных данных. Например, если некоторый алгоритм имеет сложность O(n*n), то при увеличении размера входных данных в 3 раза, время его работы увеличится примерно в 9 (3*3) раз.
Ее же используют для сравнения эффективности алгоритмов. Так, если первый алгоритм имеет сложность O(n*n), а второй — O(n), то последний значительно быстрее первого. При увеличении размера входных данных в 3 раза, время работы первого алгоритма увеличится примерно в 9 раз, а второго — в три раза. Почему примерно?
Текстовый редактор для Git в среде Windows
Git требует, чтобы каждый коммит сопровождался текстовым пояснением. Для краткого пояснения вполне достаточно ключа -m, но назначение коммита не всегда можно описать одним словосочетанием. В этом случае использовать ключ -m неудобно.
Вообще грамотное составление коммитов и комментариев к ним — отдельная тема, которую мы не будем здесь обсуждать. Я хотел прежде всего сосредоточиться на инструментарии. Точнее поделиться своим личным опытом поиска оного в среде Windows. Продолжить чтение →
Две проблемы использования Git в Windows
Все знают, что Git изначально появился в Linux и только потом его портировали в Windows. Это наложило определенный отпечаток на его работу в «не родной» для себя среде. Сегодня я опишу две проблемы, с которыми я столкнулся при использовании Git в среде Windows. Продолжить чтение →