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

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

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

В этом выпуске: скандальная правда об уровнях изоляции, валим со Slack и Dropbox на открытые self-hosted альтернативы на языке Go, переносим все интернет-чатики в одно место, выбираем облачный хостинг, предлагающий GPU, перекладываем вину за неудачные коммиты на своих коллег, и не только. Предыдущие выпуски: февраль 2016, январь 2016, декабрь 2015, ноябрь 2015.

Мне лично проще всего думать о KVM (Kernel-based Virtual Machine), как о таком уровне абстракции над технологиями хардверной виртуализации Intel VT-x и AMD-V. Берем машину с процессором, поддерживающим одну из этих технологий, ставим на эту машину Linux, в Linux’е устанавливаем KVM, в результате получаем возможность создавать виртуалки. Так примерно и работают облачные хостинги, например, Amazon Web Services. Наряду с KVM иногда также используется и Xen, но обсуждение этой технологии уже выходит за рамки данного поста. В отличие от технологий контейнерной виртуализации, например, того же Docker, KVM позволяет запускать в качестве гостевой системы любую ОС, но при этом имеет и большие накладные расходы на виртуализацию.

Сегодня мы научимся собирать ядро и мир (основные исполняемые файлы, библиотеки и тд) FreeBSD из сходных кодов. Ранее в заметке PostgreSQL: сборка из исходников и настройка под Linux мы выясняли, зачем нужно уметь собирать что-то из исходников. Основными сценариями являются оптимизация под конкретное железо и получение самого свежака прямо из ветки master. Кроме того, вы можете настроить ядро под свои конкретные нужды — выбрать шедулер, отключить IPv6, убрать поддержку лишнего железа и тд. Наконец, если вдруг вы планируете когла-нибудь стать коммитером в ядро FreeBSD, знания о том, как это ядро собирается, будут не лишними.

Сегодня существует великое множество VoIP решений — вспомним хотя бы Skype, Hangouts, TeamSpeak. Большая проблема с ними заключается в том, что решения эти закрыты и часто предоставляются исключительно в виде SaaS. Сама по себе закрытость исходного кода не обязательно означает, что продукт плохой. Многие закрытые продукты я использую каждый день. Но при наличии достойной открытой альтернативы я склонен отдавать предпочтение именно ей. Поэтому сегодня мы познакомимся с совершенно замечательным открытым приложением для голосовых звонков Mumble.

Рассмотрим типичную ситуацию — приходит пользователь и говорит «я делаю в приложении то-то и то-то и у меня все сильно тормозит». Как понять, в чем проблема, и исправить ее? Вот об этом мы и поговорим в данной заметке. Приведенный список методов не претендует на полноту, однако это то, что в настоящее время я чаще всего использую на практике. Несмотря на то, что пишу я сейчас в основном на C, описанные методы будут также применимы в проектах, использующих С++, и, возможно, другие языки программирования.

Библиотека cURL, написанная на языке C, реализует ряд сетевых протоколов, включая HTTP, FTP, SMTP, POP3, Telnet, и другие. Если вам нужно поговорить о чем-то с сервером, где-то в 90% случаев вы можете сделать это, используя cURL. В рамках сей заметки мы разберемся, как при помощи libcurl написать не самый тривиальный HTTP-клиент.

Как известно, во FreeBSD можно использовать пакеты как бинарные, так и собранные из исходных кодов при помощи портов. Устройство портов за последнее время ничем не изменилось. А вот на смену утилитам для управления бинарными пакетами pkg_add, pkg_info и прочим pkg_* в последних версиях FreeBSD пришел новый пакетный менеджер pkg (также известный как pkgng). Данная небольшая заметка рассказывает о том, как им пользоваться.