Публікації

  • Керування конфігурацією Arch Linux

    Виявляється, відстеження налаштунків системи, у моєму випадку Arch Linux, це типова проблема. І вона вже розв’язана з aconfmgr. То є скрипт оболонки, який обчислює, що змінилося в системі: встановлено чи прибрано пакунки; додано, знищено чи змінено файли.

    [читати далі]
  • Прихід коду 2017

    Я це зробив знову, виконав прихід коду 2017. Мої розв’язки можна знайти на github.

    [читати далі]
  • Пастка з std::partial_sum()

    Розгляньмо ситуація: у вас є буфер із якимись мережевими пакетами і їхні розміри: void Packetize(std::vector<uint8_t> &buffer, std::vector<uint16_t> &sizes). Тепер щоб надіслати ці пакети, вам потрібно обрахувати зміщення. Що може бути простіше із STL:

    [читати далі]
  • Збирання пакунків для Малинки з допомогою qemu-user

    Коли я спочатку спакував Kerberos.io для Arch Linux ARM, я просто адаптував бінарника, які було зібрано для Raspbian (див. kerberosio-alarm). Це спрацювало, доки я не поновив до версії 2.4.0, як служба machinery почала зазнавати краху. Видно, через втрату двійкової сумісності. Отже, настав час зібрати програму з початкового коду. Побудова на Малинці непрактична через обмежені ресурси, а встановлення інструментів для крос-компіляції потребує багато зусиль і дбайливості. На щастя, натрапив на простий обхідний шлях: використати qemu-user, щоб запустити рідний компілятор на станції x86_64 (ось початкове повідомлення).

    [читати далі]
  • Алгоритми, частина II на Курсері

    Пройшов курс Алгоритми, частина II на Курсері (див. частину I), витратив 4 тижні на відео лекції, задачі з програмування на Java (див. github). Знову отримав багато задоволення, раджу всім!

  • Нова спроба KVM віртуалізації робочого столу

    Рік тому я зробив висновок, що VirtualBox — це найкращий вибір для віртуалізації робочої станції. Тоді я встановлював Windows 7 і не зміг добитися жвавого відображення терміналу MSYS2. А тепер мені знадобилося поставити Windows 10, тож я скористався нагодою, щоб ще раз спробувати KVM у пошуку кращої продуктивності. Цього разу я розпочав з libvirt та virt-manager.

    [читати далі]
  • Неперервна інтеграція для файлів налаштунків

    Нарешті налаштував Travis CI для крапка-файлів. Задум простий: склонувати репозиторій, сконфігурувати і провести різні тести над ним. Найцікавішою і найскладнішою частиною є, безумовно, тестування. Щоб перевірити різноманітну функціональність vim у різних сценаріях автоматизовано, потрібно залучати псевдотермінал.

    [читати далі]
  • Подолання втрат пам’яті у gnome-shell

    У оболонці GNOME тече пам’ять, псуючи враження від користування. Наприклад, може заморозити ноутбук постійним підкачуванням. Щоб протистояти, нам доводилося виявляти цю ситуацію, перемикатися до віртуального терміналу, заходити в систему і убивати схиблений процес. На щастя, перезапускання gnome-shell майже непомітне і безпечне. Щойно я збагнув, що нагляд над оболонкою можна легко автоматизувати.

    [читати далі]
  • Переносні налаштування

    Dotfiles здебільшого призначені для встановлення у домашню директорію. Проте я збагнув, що налаштування можуть так само бути переносними. Розгляньмо такий сценарій: колега просить про допомогу, і мені знадобиться дивитися в код на його станції. Місцеві налаштування можуть бути дивакуватими і не дуже сприяти продуктивності. Проте якби я натомість розгорнув і застосував свої dotfiles без зміни місцевих, було б набагато зручніше.

    [читати далі]
  • GDB у neovim

    Ще один істотний інструмент, необхідний для розробки в С++ — це налагоджувач. Навіть коли я досить продуктивно використовував чистий GDB з рідним TUI, все одно відчував, що бракує кількох зручних речей: навігація по коду (де ж поставити точку зупинки?), підсвічування синтаксису і власні клавіатурні скорочення. Кілька років тому натрапив на розширення Conque-GDB, яке служило добре у Vim. Проте, його не поновлювали вже досить тривалий час, і воно не дуже добре працює у neovim.

    [читати далі]

підписатися через RSS