Рассмотрим типичную задачу. Есть программа на C или C++ с исходниками. Известно, что при выполнении определенных условий программа начинает отжирать слишком много памяти. Нужно понять, почему это происходит, и по возможности исправить. Инструменты, которые мы рассматривали до этого, например, в заметке Профилирование кода на C/C++ в Linux и FreeBSD, для этого явно не подходят. Спрашивается, что же тогда делать? На помощь приходит Heaptrack!
Управление пакетами в Arch Linux с помощью ABS и pacman
2 ноября 2016
Сегодня мы поговорим об основах управления пакетами в Arch Linux. В общем и целом, идея напоминает ports и packages из мира FreeBSD. То есть, можно как компилировать софт из исходников, так и ставить бинарные пакеты. Но есть ряд существенных отличий. Итак, давайте же во всем разберемся!
Как я устанавливал Arch Linux на свой ноутбук
19 октября 2016
В последнее время я стал замечать, что Ubuntu как-то не особо мотивирует меня разбираться в том, как работает система. Я просто кликаю мышкой, и все работает. А почему оно работает — этого я не понимаю. Другое дело FreeBSD. Но в последнее время FreeBSD разочаровывает меня большим количеством багов, проявляющихся на десктопе (список можно найти в конце этого поста). После недолгой консультации с коллегами, я решил попробовать Arch Linux. Этот дистрибутив в чем-то напоминает FreeBSD (минимализмом, наличием как бинарных пакетов, так и своего аналога портов) и вполне заслуженно славится своим прекрасным wiki-сайтом, который регулярно показывается мне в выдаче Google.
CouchDB 2.0: краткий обзор и мои первые впечатления
26 сентября 2016
CouchDB (не путать с Couchbase!) — документо-ориентированная СУБД, написанная на языке Erlang. В вышедшей недавно версии 2.0 в CouchDB добавили Riak-подобное шардирование, что наконец-то делает эту СУБД кому-то интересной. К тому же, в отличие от Riak, в CouchDB всегда была совершенно бесплатная (не в enterprise edition версии и т.д.) кросс-датацентровая master-slave и master-master репликация. Давайте попробуем разобраться, как же этим хозяйством вообще пользоваться, и подходит ли оно уже для продакшена.
Настройка консольного e-mail клиента Mutt за пять минут
21 сентября 2016
Мотивация пользоваться вместо обычных почтовых клиентов, таких, как Thunderbird, или, скажем, Claws Mail, консольным почтовым клиентом Mutt сродни мотивации пользоваться irssi вместо HexChat. Консольные приложения, как правило, намного проще своих GUI-аналогов, а значит не так сильно жрут батарею и более безопасны. Также они управляются исключительно при помощи клавиатуры, могут быть запущены на сервере в screen / tmux, и вот это все. К сожалению, конкретно Mutt совершенно незаслуженно пользуется репутацией программы, очень сложной в настройке. Сегодня мы убедимся, что в действительности настройка Mutt не сильно отличается от настройки любого другого почтового клиента.
Скандальная правда об отладке ядерного кода в Linux
7 сентября 2016
Как это всегда бывает в мире Linux, нормальной документации нет. Когда мне захотелось разобраться, как в это время суток разработчики отлаживают модули ядра Linux, а также само ядро, мне пришлось прочитать, наверное, около двадцати статей, разбросанных по всему интернету. Из этих источников половина содержала устаревшую информацию в стиле «Линус запретил использовать отладчики, смиритесь». Еще половина освещала вопрос где-то на 1/10. В итоге, скорее вопреки, чем благодаря, мне все-таки удалось более-менее разобраться в вопросе и собрать всю информацию в одном месте. Не благодарите.
Знакомство с консольным IRC-клиентом irssi
5 сентября 2016
Irssi — это кроссплатформенный консольный IRC-клиент, написанный на чистом C. Консольные утилиты имеют неоспоримое преимущество перед всякой там GUI’ней вроде HexChat. Например, можно один раз настроить в терминале шрифты и (темную!) цветовую гамму, а все консольные приложения автоматически их подхватят. Да, у GUI приложений в третьем тысячелетии с этим все еще есть проблемы. Qt и разные версии GTK берут свои настройки немного из разных мест. Плюс к этому консольные приложения можно легко запускать на сервере в screen. Кроме того, в консольных приложениях практически никогда не используется мышь, что я лично нахожу очень удобным. Наконец, обычно они жрут меньше памяти и заряда батареи.
Установка и простые примеры использования SystemTap
24 августа 2016
Некоторое время назад мы с вами научились пользоваться DTrace. SystemTap представляет собой нечто похожее, но сильно заточенное под Linux и с рядом важных отличий. Во-первых, SystemTap не требует ручного добавления пробов в код ядра или приложений. Он работает и так, правда, требуя взамен знания исходников. Во-вторых, скрипты SystemTap транслируются в язык C и загружаются в ядро в виде модулей. За это приходится платить временем компиляции скриптов. Зато скриптовый язык SystemTap намного мощнее, чем у DTrace.
Установка и практика использования IRC-баунсера ZNC
22 августа 2016
Вопреки распространенному заблуждению, IRC-сети все еще пользуются большой популярностью. Это своего рода токая секретная социальная сеть, где онлайн постоянно зависают сотни тысяч IT-специалистов со всего мира. И это в одном только FreeNode! Так вот, для людей, недавно открывших для себя IRC, довольно сложной является концепция каких-то там баунсеров. Сегодня мы познакомимся с с одним из таких баунсеров под названием ZNC, и выясним, что пользоваться им очень просто.
Написание и отладка кода на ассемблере x86/x64 в Linux
17 августа 2016
Сегодня мы поговорим о программировании на ассемблере. Вопрос «зачем кому-то в третьем тысячелетии может прийти в голову писать что-то на ассемблере» раскрыт в заметке Зачем нужно знать всякие низкоуровневые вещи, поэтому здесь мы к нему возвращаться не будем. Отмечу, что в рамках поста мы сосредоточимся на вопросе компиляции и отладки программ на ассемблере. Сам же язык ассемблера заслуживает отдельного большого поста, а то и серии постов.