Типичный отладчик, такой как WinDbg или LLDB, позволяет выполнять программу шаг за шагом, просматривая значения переменных, создавая брейкпоинты, и так далее. Reverse debugging — это когда вы можете делать все то же самое, но не в прямом порядке, а в обратном, как бы «назад во времени». Сегодня мы познакомимся с двумя способами reverse debugging’а в Linux. Вероятно, эти способы работают и на других платформах, но я не проверял.

Мне нравится Python, а также мне нравится PostgreSQL. И вот я подумал — ей, а почему бы не использовать их вместе? :) Для работы с PostgreSQL в мире Python большой популярностью пользуется пакет psycopg2. Но он, по всей видимости, до сих пор не поддерживает prepared statements. Поэтому для своих задач я пока что остановился на чуть менее популярном пакете py-postgresql. Этот пакет, как я понимаю, поддерживает все, что нужно.

Бывает, что нужно отладить программу, а GDB при этом недоступен. Например, потому что программу вы отлаживаете под MacOS или FreeBSD, а в этих системах традиционно используется отладчик LLDB. Лично я в последнее время склонен отдавать предпочтение LLVM-стэку (CLang, LLDB) даже на Linux-машинах, где по дэфолту используется GNU-стэк (GCC, GDB). В LLDB все еще есть кое-какие шероховатости. Но команды структурированы намного лучше, чем в GDB, а шероховатости со временем все равно поправят. CLang же генерирует намного более понятные сообщения об ошибках, чем GCC. Так или иначе, в процессе изучения LLDB я составил шпаргалку по основным его командам, которой и хочу сегодня с вами поделиться.

Недавно мне стало интересно, насколько хорошо Python, на котором, напомню, я теперь пишу все свои скрипты, справляется с задачей создания GUI-приложений. И тут язык превзошел все мои ожидания, так как найти нужную библиотеку, разобраться, как ею пользоваться, а потом написать пример, демонстрирующий все интересовавшие меня возможности, заняло ну что-то около одного часа. Пример этот, как вы и сами сейчас убедитесь, показывает не только создание формочек на GTK, но и отображение иконки в трее с меню и нотификациями.

Тема компьютерных игр не так уж бесконечно далека от программирования, как может показаться на первый взгляд. Допустим, у вас на ноутбуке Ubuntu и вам предстоит девятичасовой перелет на самолете к месту проведения какой-нибудь конференции, а все сериалы вы уже посмотрели. Было бы неплохо иметь на этот случай несколько хороших игр, и желательно пошаговых, так как в прочие в самолете играть затруднительно. Есть, конечно, множество нативных игр под Linux, ровно как и Steam. Однако в рамках этой заметки мы познакомимся с PlayOnLinux, который представляет собой такую сильно более удобную обертку над Wine.

Сегодня я хотел бы вновь поделиться очень простым скриптом, который, если честно, и не очень-то тянет на отдельную заметку. Скрипт этот демонстрирует вывод в консоль разноцветного текста с использованием библиотеки termcolor. Но, как вы могли понять по заголовку, на самом деле все чуточку интереснее…

Proxmox Virtual Environment — это система, предоставляющая простой и удобный веб-интерфейс для управления виртуальными машинами (используется KVM) и контейнерами (LXC) на вашем кластере физических машин. Фактически, при помощи Proxmox вы можете создать свой маленький Amazon Web Services на собственном железе. В общем и целом, система очень похожа на Parallels Virtual Automation, с которым мы знакомились ранее, только распространяется бесплатно и с открытыми исходными кодами. Также предоставляется и платная техническая поддержка. Как мы скоро убедимся, со своей задачей Proxmox справляется не хуже PVA, а в чем-то, возможно, и лучше.

Поскольку все новые скрипты я теперь пишу на Python, а опыт использования этого языка у меня довольно скромный, время от времени я узнаю занятные вещи, которые многим другим программистам и так давно известны. Так, например, недавно я научился пользоваться virtualenv и virtualenvwrapper. И на случай, если я вдруг подзабуду, как это делается, решил вот написать эту небольшую шпаргалку.

Определение степени покрытия кода тестами — это очень-очень важно как минимум по двум причинам. Во-первых, с его помощью вы проверяете, что тесты выполняют каждую из написанных вами строк кода хотя бы один раз. Если это не так, скорее всего, у вас довольно фиговые тесты. Во-вторых, вы можете найти «мертвый» код, который на самом деле никогда не выполняется, и выкинуть его. Сегодня мы выясним, как посмотреть code coverage в программах, написанных на языке C или C++.

NFS (Network File System) — сетевая файловая система, или, если другими словами, протокол, позволяющий получать доступ к файлам по сети так, словно они находятся у вас локально. NFS можно использовать как альтернативу Samba, например, для хранения ваших фоточек. А системы вроде PVA и Proxmox, к примеру, используют NFS для хранения ISO-образов операционных систем, шаблонов виртуальных машин, а также бэкапов. NFS реализован прямо в ядре FreeBSD — см опции ядра, имена которых начинаются с NFS. Поэтому для использования NFS ничего устанавливать не требуется, в системе все и так уже есть!