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

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

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

При написании кода на C и C++ люди допускают ошибки. Многие из этих ошибок находятся благодаря -Wall, ассертам, тестам, дотошному code review, предупреждениям со стороны IDE, сборкой проекта разными компиляторами под разные ОС, работающие на разном железе, и так далее. Но даже при использовании всех этих мер ошибки часто остаются незамеченными. Немного улучшить положение дел позволяет статический анализ кода. В этой заметке мы познакомимся с некоторыми инструментами для произведения этого самого статического анализа.

Прошло некоторое время с тех пор, как я последний раз писал в этом блоге что-то про Haskell. И вот, мне стало интересно, что успело измениться в мире этого языка. Изменилось, насколько я понимаю, не так уж и много, но вот вместо Cabal для сборки своих проектов теперь все используют какой-то Stack. Давайте же попробуем разобраться, что это за Stack такой.

Хочу поделиться с вами небольшим скриптом. Как правило, такого рода поделкам на Python я не посвящаю целые посты, а просто дописываю их в список примеров к заметке Как я выбирал скриптовый язык и остановился на Python (кстати, да, там есть обновления). Но этот конкретный скрипт показался мне достаточно интересным, чтобы рассказать о нем отдельно. Как вы уже поняли, он парсит RSS- и Atom-ленты, а затем отправляет информацию о новых записях на указанный e-mail адрес.

Syncthing — бесплатное приложение с открытым исходным кодом, написанное на языке Go, и представляющее собой standalone замену Dropbox, Google Drive и подобным облачным хранилищам. Вы ставите Syncthing, скажем, на ноутбуке, мобильном телефоне и на сервере в DigitalOcean. Указываете путь до каталогов, которые хотите синхронизировать. Теперь при изменении файлов на ноутбуке аналогичные изменения магическим образом происходят и на сервере, а также в мобильном телефоне. Клиент Syncthing доступен под все мыслимые платформы, включая Windows, Linux, FreeBSD, MacOS, iOS и Android. В этой заметке мы рассмотрим пример использования Syncthing под Ubuntu Linux.

Спешу поделиться рецензиями на очередные десять прочитанных мною книг. На сей раз многие книги оказались посвящены внутреннему устройству *nix систем, почему-то главным образом — FreeBSD. Также некоторые книги были об алгоритмах (сжатия, lock free), базах данных, и на другие темы. Предыдущие рецензии: четырнадцатый десяток, тринадцатый десяток, двенадцатый десяток, одиннадцатый десяток.

Сегодня я хотел бы поделиться небольшой шпаргалкой по screen. Пользуюсь я этой утилитой крайне редко. Поэтому я постоянно забываю, что и как делается. Отсюда и потребность в шпаргалке. Напомню, что screen — это программа, которая позволяет открывать несколько терминалов в одном. Это очень удобно, если вы работаете по SSH или просто без иксов. Также в случае разрыва SSH-соединения screen позволяет возобновить работу там, где вы ее закончили, так как все программы будут продолжать работу в фоне без вас. Последнее часто используется для создания своего рода «демонов для бедных». Есть у screen и другие интересные возможности, например, мониторинг активности терминалов (или ее отсутствия) и ввод диграфов.

Недавно мы научились собирать FreeBSD из исходных кодов. Этих знаний достаточно, если вы хотите просто попробовать самые свежие фичи системы или оптимизировать FreeBSD под конкретное железо. Но если вы собираетесь как следует порыться в кишках системы, дабы лучше разобраться в ее работае, или даже что-то изменить в ней, необходимо уметь цепляться к системе отладчиком. Да и если вы админите сервера под управлением FreeBSD, знания о том, как анализировать корку упавшего ядра, пожалуй, будут не лишними.