<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Blogggg</title>
    <link>https://b.sattellite.me/</link>
    <description>Recent content on Blogggg</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ru-RU</language>
    <lastBuildDate>Thu, 20 Mar 2025 11:58:18 +0300</lastBuildDate>
    <atom:link href="https://b.sattellite.me/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Показать результат исправлений по символам</title>
      <link>https://b.sattellite.me/notes/git-diff-by-symbols/</link>
      <pubDate>Thu, 20 Mar 2025 11:58:18 +0300</pubDate>
      <guid>https://b.sattellite.me/notes/git-diff-by-symbols/</guid>
      <description>Показать результат исправлений по символам Я переработал текст с помощью AI для улучшения, а он вернул, как мне показалось, практически идентичную копию. Решил детально разобраться, что именно изменилось. Обычная утилита diff показала, что строка изменилась, но вручную сравнивать символы не хотелось. Быстрый поиск подсказал, что можно использовать git-diff для этих целей. В качестве примера, конечно же, приведу другой текст, чтобы просто продемонстрировать, как это работает.&#xA;Сравнение файлов вне репозитория Чтобы сравнить два файла, которые не проиндексированы и не находятся в репозитории, с помощью git-diff, нужно добавить ключ --no-index:</description>
    </item>
    <item>
      <title>Настройка приватного туннеля через SSH</title>
      <link>https://b.sattellite.me/2024/04/tunnel-over-ssh/</link>
      <pubDate>Thu, 04 Apr 2024 19:42:56 +0300</pubDate>
      <guid>https://b.sattellite.me/2024/04/tunnel-over-ssh/</guid>
      <description>Настройка приватного туннеля через SSH В связи с очередным переходом на режим удаленной работы возникла необходимость воспользоваться сервисом, который доступен только в сети офиса. Полноценного доступа из внешней сети в наш офис никогда не было, т.к. всегда хватало пробросов портов для SSH. Настраивать проброс большого количества портов через ssh в этой ситуации не удобно. Поэтому сделал ip-ip тунель и настроил маршрутизацию в офис через него.&#xA;Это все заметки основанные на базе записи в ArchWiki.</description>
    </item>
    <item>
      <title>Клавиатура KBDfans D65</title>
      <link>https://b.sattellite.me/2022/10/kbdfans-d65-keyboard/</link>
      <pubDate>Tue, 18 Oct 2022 17:08:43 +0300</pubDate>
      <guid>https://b.sattellite.me/2022/10/kbdfans-d65-keyboard/</guid>
      <description>Клавиатура KBDfans D65 В начале 2022 года я стал обладателем клавиатуры KBDfans D65. Долго выбирал какую клавиатуру я бы хотел себе приобрести и в итоге остановился на этой. Использую ее как основную клавиатуру.&#xA;Приобретал все на AliExpress:&#xA;Корпус цвета Violet Purple Свитчи Gateron Zealios V2: Сначала взял на 62 грамма Позже заменил на 67 грамм Клавиши EnjoyPBT Milky&amp;amp;Purple Doubleshot Взял еще улучшателей:&#xA;Пленки для свитчей KBDfans Transparent (их хватило на два набора свитчей) Масло Keychron Klube 105 Смазка Permatex 81150 Сборка Сборку проводил по инструкции с официального сайта KBDfans.</description>
    </item>
    <item>
      <title>Фаззинг(fuzzing) тестирование</title>
      <link>https://b.sattellite.me/2022/01/2022-01-golang-fuzzing/</link>
      <pubDate>Sun, 30 Jan 2022 19:25:43 +0300</pubDate>
      <guid>https://b.sattellite.me/2022/01/2022-01-golang-fuzzing/</guid>
      <description>Фаззинг(fuzzing) тестирование Оглавление Что такое фаззинг тестирование? Немного о тестах Что такое фаззинг тестирование История фаззинг тестирования Зачем нужно фаззинг тестирование? Что можно тестировать с помощью фаззинга Типы фаззеров Использование фаззеров в Go gofuzz go-fuzz Исследование результатов тестирования native fuzzing Источники информации Что такое фаззинг тестирование? Немного о тестах Для того чтобы убедиться в том, что программа работает корректно, и ее реальное поведение соответствует ожидаемому поведению создаются тесты[1]. Тестирование также может обеспечить объективный, независимый взгляд на программное обеспечение, чтобы позволить бизнесу оценить и понять риски его внедрения.</description>
    </item>
    <item>
      <title>Использование приватных модулей в Go</title>
      <link>https://b.sattellite.me/notes/go-private-modules/</link>
      <pubDate>Tue, 25 Jan 2022 13:30:38 +0300</pubDate>
      <guid>https://b.sattellite.me/notes/go-private-modules/</guid>
      <description>Использование приватных модулей в Go Если разработка ведется в приватном репозитории, то подключение модулей из этого репозитория не дает нужного эффекта: go не может их оттуда скачать.&#xA;Для решения этой проблемы можно воспользоваться специальными переменными окружения.&#xA;Установка переменных окружения Можно воспользвать переменной GOPRIVATE, в которую передается список разделенных запятой(,) строк в формате регулярных выражений(синтаксис для path.Match):&#xA;GOPRIVATE=&amp;#34;*.company.tld,github.com/company&amp;#34; Для более гибкого контроля за скачиванием и проверкой контрольных сумм модулей можно использовать переменные GONOPROXY и GONOSUMDB.</description>
    </item>
    <item>
      <title>Перестать следить за изменениями файла</title>
      <link>https://b.sattellite.me/notes/git-unchanged/</link>
      <pubDate>Fri, 12 Feb 2021 10:56:32 +0300</pubDate>
      <guid>https://b.sattellite.me/notes/git-unchanged/</guid>
      <description>Перестать следить за изменениями файла В git есть возможность пометить файл неизмененным. Все изменения в этом файле перестают обновлять связанные с ним git-объекты. Например, это удобно для какого-нибудь конфига или временно добавленных дебаг принтов. Файл престает отображаться в списке измененных файлов.&#xA;Но есть два варианта пометить файл неизмененным: assume-unchanged и skip-worktree.&#xA;assume-unchanged Этот файл будет считаться неизмененным в локальном индексе. Но только до тех пор пока от сервера не придут изменения для этого файла.</description>
    </item>
    <item>
      <title>Подсказки про ffmpeg</title>
      <link>https://b.sattellite.me/notes/ffmpeg/</link>
      <pubDate>Thu, 11 Feb 2021 12:56:43 +0300</pubDate>
      <guid>https://b.sattellite.me/notes/ffmpeg/</guid>
      <description>Подсказки про ffmpeg Это для меня, т.к. изредка бывает нужно что-то сделать и начинаю снова гуглить&amp;hellip;&#xA;Фильтры объединяются через запятую -filter:v &amp;quot;scale=1:1,setpts=PTS&amp;quot;&#xA;Объединение видео Простой способ Очень просто, но не всегда работает&#xA;ffmpeg -f concat -i video01.mp4 -i video02.mp4 -c copy output.mp4 или так&#xA;ffmpeg -i &amp;#39;concat:video01.mp4|video02.mp4&amp;#39; -c copy output.mp4 Через промежуточные файлы Тут могут возникнуть проблемы с кодеком, можно будет попробовать тогда h264_mp4toannexb&#xA;ffmpeg -i video01.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate2.</description>
    </item>
    <item>
      <title>Показать все изменения блока кода с помощью git</title>
      <link>https://b.sattellite.me/notes/git-log/</link>
      <pubDate>Mon, 08 Feb 2021 11:56:57 +0300</pubDate>
      <guid>https://b.sattellite.me/notes/git-log/</guid>
      <description>Показать все изменения блока кода с помощью git В git есть инструмент, который позволяет отследить все изменения одной функции по её имени.&#xA;По имени функции Допустим у нас есть файл module.js с таким содержимым:&#xA;function init() { // ... init module } function exec(task) { if (task.length &amp;gt; 0) { // ... do some work } if (!result) { // ... do other work } return result; } function finish() { // .</description>
    </item>
    <item>
      <title>Подключение номера по PJSIP от Ростелекома</title>
      <link>https://b.sattellite.me/2020/09/asterisk-pjsip-connect-to-rtk/</link>
      <pubDate>Wed, 02 Sep 2020 10:06:11 +0300</pubDate>
      <guid>https://b.sattellite.me/2020/09/asterisk-pjsip-connect-to-rtk/</guid>
      <description>Подключение номера по PJSIP от Ростелекома У меня нет доступа к кабинету управления ВАТС РТК, поэтому я не могу сказать как правильно сконфигурировать данные в кабинете, чтобы вызовы шли на один номер, который мы будет подключать к Asterisk.&#xA;Регистрация номера в РТК Конфигурация pjsip.conf:&#xA;... [transport-udp] type=transport protocol=udp bind=0.0.0.0:5060 [rtk] type=registration transport=transport-udp outbound_auth=rtk client_uri=sip:RTKusername@RTKdomain.rt.ru server_uri=sip:RTKdomain.rt.ru retry_interval=60 expiration=120 fatal_retry_interval=5 max_retries=10000 forbidden_retry_interval=1 contact_user=rtk line=yes endpoint=rtk [rtk] type=auth auth_type=userpass username=RTKusername password=RTKpassword [rtk] type=aor contact=sip:RTKusername@RTKdomain.</description>
    </item>
    <item>
      <title>Симуляция SIP-вызова</title>
      <link>https://b.sattellite.me/2016/05/simulate-sip-call/</link>
      <pubDate>Fri, 13 May 2016 07:36:31 +0300</pubDate>
      <guid>https://b.sattellite.me/2016/05/simulate-sip-call/</guid>
      <description>Симуляция SIP-вызова Давно не занимался Asterisk и SIP в целом, но на днях возникла задача сразу и по настройке Asterisk и Cisco для совместной работы. После конфигурирования обоих систем я потерпел фиаско на первом же тестировании. Вся проблема оказалась в диалплане Asterisk (но что можно там настроить не так?). Так как тестирование производится с перерывом в обслуживании основной системы, то возникла необходимость симулировать SIP-вызовы от Cisco в Asterisk, чтобы к моменту тестирования уже иметь по крайней мере рабочий диалплан и пытаться решать проблемы не связанные с неверной маршрутизацией.</description>
    </item>
    <item>
      <title>Скачивание определенной директории из git-репозитория</title>
      <link>https://b.sattellite.me/2016/02/download-specified-dir-from-git/</link>
      <pubDate>Tue, 16 Feb 2016 12:05:49 +0300</pubDate>
      <guid>https://b.sattellite.me/2016/02/download-specified-dir-from-git/</guid>
      <description>Скачивание определенной директории из git-репозитория Нашёл решение для скачивания определенной директории из git-репозитория. Это перевод ответа на StackOverflow, который в свою очередь является хорошим примером к документации по Sparse Checkout в Git.&#xA;Начиная с версии 1.7.0 в Git появилась возможность указания какие пути в локальной копии репозитория должны синхронизироваться - sparse checkout. Для скачивания отдельной директории из удаленного репозитория необходимо проделать следующие шаги:&#xA;mkdir &amp;lt;reponame&amp;gt; cd &amp;lt;reponame&amp;gt; git init git remote add -f origin &amp;lt;repoURL&amp;gt; Создается пустой репозиторий и в него скачиваются все объекты из удаленного репозитория, но не применяются.</description>
    </item>
    <item>
      <title>Получение codepoint символа</title>
      <link>https://b.sattellite.me/2016/02/perl-symbol-codepoint/</link>
      <pubDate>Wed, 10 Feb 2016 09:24:45 +0300</pubDate>
      <guid>https://b.sattellite.me/2016/02/perl-symbol-codepoint/</guid>
      <description>Получение codepoint символа В процессе работы с LDAP столкнулся с неверной интерпретацией некоторых символов. Особую проблему доставляла запятая и знак равенства. Для них быстро были найдены коды , — \2C и = —\3D. Тут, казалось бы, можно забыть о проблеме, но на деле оказалось не совсем так.&#xA;Этот скрипт используется в том числе для проверки валидности введенных пользователем пары логин-пароль. Со сменой политики паролей вдруг выяснилось, что проверка валидности не проходит, если в пароле используются специальные символы.</description>
    </item>
    <item>
      <title>Решение проблемы с &#34;якорем&#34; прячущимся за &#34;шапкой&#34;</title>
      <link>https://b.sattellite.me/2016/02/anchor-position-pure-css/</link>
      <pubDate>Mon, 08 Feb 2016 09:20:21 +0300</pubDate>
      <guid>https://b.sattellite.me/2016/02/anchor-position-pure-css/</guid>
      <description>Решение проблемы с &amp;ldquo;якорем&amp;rdquo; прячущимся за &amp;ldquo;шапкой&amp;rdquo; Я порой удивляюсь тому, чем я занимаюсь, о чем пишу. Это не профильная для меня тематика, но решил поделиться, т.к. проблема возникла уже не в первый раз, но в первый раз нашел для нее красивое решение.&#xA;Проблема: При оформлении веб-страницы с фиксированной &amp;ldquo;шапкой&amp;rdquo;, которая всегда(!) отображается в самом верху страницы и использовании ссылок-якорей получается так, что место, на которое ссылается &amp;ldquo;якорь&amp;rdquo;, прижимается к самому верху страницы и скрывается под &amp;ldquo;шапкой&amp;rdquo;.</description>
    </item>
    <item>
      <title>Просмотр SIEVE-правил пользователя в Cyrus</title>
      <link>https://b.sattellite.me/2015/12/view-cyrus-sieve-rules/</link>
      <pubDate>Tue, 15 Dec 2015 10:21:48 +0300</pubDate>
      <guid>https://b.sattellite.me/2015/12/view-cyrus-sieve-rules/</guid>
      <description>Просмотр SIEVE-правил пользователя в Cyrus Продолжаю серию заметок по работе с Kolab GroupWare. Очень интересный продукт, плотно занимаюсь его изучением и настройкой уже в течении нескольких месяцев. Некоторые моменты работы с ним решил записывать, так как нужно не часто, но в целом пригодится. И чтобы потом не вспоминать что там и как - конспектировать. Все материалы можно найти по тегу kolab.&#xA;В качестве imap-сервера в Kolab используется Cyrus. Для обработки писем используется реализация системы фильтров, которая называется SIEVE и описана в RFC 3028.</description>
    </item>
    <item>
      <title>Изменение правил resolvconf на лету</title>
      <link>https://b.sattellite.me/2015/10/change-resolvconf-rules/</link>
      <pubDate>Mon, 26 Oct 2015 09:42:20 +0300</pubDate>
      <guid>https://b.sattellite.me/2015/10/change-resolvconf-rules/</guid>
      <description>Изменение правил resolvconf на лету Случилась ситуация, когда надо было заменить содержимое /etc/resolv.conf стандартными средствами resolvconf, используемого в Ubuntu.&#xA;Обычное вписывание дополнительных nameserver в /etc/resolvconf/resolv.conf.d/base и последующий перезапуск resolvconf не дают нужного эффекта, так как данные из этого файла идут с самым низким приоритетом. И в любом случае данные прописанные в конфиге интерфейса останутся самыми важными и будут использоваться они.&#xA;Так вот, чтобы удалить локальный DNS и добавить Яндекс.DNS необходимо удалить информацию от интерфейса:</description>
    </item>
    <item>
      <title>Ejabberd и LDAP</title>
      <link>https://b.sattellite.me/2015/10/ejabberd-with-kolab-ldap/</link>
      <pubDate>Tue, 20 Oct 2015 08:31:03 +0300</pubDate>
      <guid>https://b.sattellite.me/2015/10/ejabberd-with-kolab-ldap/</guid>
      <description>Ejabberd и LDAP На тему как сделать авторизацию в ejabberd через LDAP написано очень много материала. Эта небольшая заметка возникла из-за необходимости подключить ejabberd к сервису групповой работы Kolab, а также подробнее разобраться во всем написанном и чуть подробнее чем обычно об этом пишут. А ещё пойдет в качестве хорошего способа запомнить всё прочитанное.&#xA;Основными источником информации является официальная документация. Она существует в двух вариантах: красивенький и обычный. Рекомендую обычный, т.</description>
    </item>
    <item>
      <title>Базовая настройка Ruby Gem в Fedora 22</title>
      <link>https://b.sattellite.me/2015/08/ruby-gem-in-fedora-22/</link>
      <pubDate>Sun, 02 Aug 2015 13:18:18 +0300</pubDate>
      <guid>https://b.sattellite.me/2015/08/ruby-gem-in-fedora-22/</guid>
      <description>Базовая настройка Ruby Gem в Fedora 22 Эта запись максимум претендует на мини-заметку.&#xA;Всё происходит на примере пакета tmuxinator. При попытке его установить получил следующую ошибку.&#xA;$ gem install tmuxinator Ignoring json-1.8.2 because its extensions are not built. Try: gem pristine json --version 1.8.2 ERROR: Loading command: install (LoadError) no such file to load -- jopenssl/load ERROR: While executing gem ... (NoMethodError) undefined method `invoke_with_build_args&amp;#39; for nil:NilClass Для того, чтобы в Fedora 22 что-либо установить с помощью утилиты gem необходимо в систему доустановить несколько пакетов:</description>
    </item>
    <item>
      <title>Переезд блога на движок Ghost</title>
      <link>https://b.sattellite.me/2015/08/changed-blog-engine/</link>
      <pubDate>Sun, 02 Aug 2015 07:28:00 +0300</pubDate>
      <guid>https://b.sattellite.me/2015/08/changed-blog-engine/</guid>
      <description>Переезд блога на движок Ghost Больше года мой блог работал на самописаном движке Mojo::Twist, который был форкнут из движка Twist (он ранее обслуживал мой блог). Свой движок я как-то бурно начал, но вскоре кончилось время и переписать админку до вменяемого состояния не осталось ни времени, ни желания. Пару недель назад задумался перевести блог на Ghost.&#xA;Я вот тут задумываюсь перевести свой блог на #ghost, вместо самописного движка.&#xA;&amp;mdash; Angry Unicorn (@_sattellite) 17 июля 2015 Для этого мне необходимо было сделать структуру ссылок на нём крайне похожей на старый движок, во-первых, чтобы поисковики вели куда надо, а не на страницу 404 и, во-вторых, чтобы не потерять комментарии в Disqus.</description>
    </item>
    <item>
      <title>Создание функций INET_ATON и INET_NTOA для SQLite3 в Perl</title>
      <link>https://b.sattellite.me/2015/05/sqlite-aton-ntoa-with-perl/</link>
      <pubDate>Thu, 07 May 2015 17:55:00 +0300</pubDate>
      <guid>https://b.sattellite.me/2015/05/sqlite-aton-ntoa-with-perl/</guid>
      <description>Создание функций INET_ATON и INET_NTOA для SQLite3 в Perl В SQLite нет функций, которые были бы аналогичны функциям MySQL INET_ATON и INET_NTOA. Суть этих функций превращать IP-адрес в число и обратно. Такие функции крайне полезны для того, чтобы хранить адреса в колонках с типом INT вместо VARCHAR.&#xA;Для этого можно добавить необходимые функции в SQLite. Так как я пользуюсь в основном Perl&amp;rsquo;ом, то с его помощью и будем добавлять их.</description>
    </item>
    <item>
      <title>Вызов внутреннего и мобильного номеров сотрудника без задержек в Asterisk</title>
      <link>https://b.sattellite.me/2015/03/call-transfer-to-mobile-without-timeout/</link>
      <pubDate>Thu, 12 Mar 2015 17:42:00 +0300</pubDate>
      <guid>https://b.sattellite.me/2015/03/call-transfer-to-mobile-without-timeout/</guid>
      <description>Вызов внутреннего и мобильного номеров сотрудника без задержек в Asterisk Иногда бывают такие ситуации когда необходимо позвонить сотруднику и обязательно до него дозвониться. Для этого сначала вызывается внутренний номер сотрудника и если он не ответил на вызов, то вызывается мобильный номер.&#xA;Диалплан выглядит очень просто:&#xA;exten =&amp;gt; 123,1,Dial(SIP/${EXTEN},15,Ttfg) exten =&amp;gt; 123,n,ExecIf($[&amp;quot;${DIALSTATUS}&amp;quot; = &amp;quot;ANSWER&amp;quot;]?HangUp()) exten =&amp;gt; 123,n,Dial(SIP/out-trunk/81234567890) exten =&amp;gt; 123,n,HangUp Но такой план дозвона выглядит крайне некрасивым для звонящего. Ведь сначала он слушает длинные гудки от внутреннего телефона, а затем наступает тишина до тех пор, пока не установится соединение с мобильным номером и снова начинаются длинные гудки.</description>
    </item>
    <item>
      <title>Управление сетевыми интерфейсами в Docker</title>
      <link>https://b.sattellite.me/2015/02/docker-network/</link>
      <pubDate>Mon, 02 Feb 2015 17:40:00 +0300</pubDate>
      <guid>https://b.sattellite.me/2015/02/docker-network/</guid>
      <description>Управление сетевыми интерфейсами в Docker Есть такие сетевые приложения, которым необходимо иметь выход во внешний мир не одним портом, а сразу большой группой. Примерами таких приложений могут являться различные программы работающие с потоковыми видео/аудио каналами. Например различные PBX решения, такие как Asterisk или FreeSWITCH.&#xA;Собственно, с попыток контейнеризировать Asterisk всё и началось. Есть готовые образы на Docker HUB, хорошим примером является dougbtv/asterisk.&#xA;Дальнейший текст можно считать вольным переводом документации по настройке сети в docker.</description>
    </item>
    <item>
      <title>Удаление контейнеров и образов в Docker</title>
      <link>https://b.sattellite.me/2015/01/docker-remove/</link>
      <pubDate>Fri, 30 Jan 2015 17:37:00 +0300</pubDate>
      <guid>https://b.sattellite.me/2015/01/docker-remove/</guid>
      <description>Удаление контейнеров и образов в Docker Эта заметка немного выбивается из того цикла, который я бы хотел написать. Все дело в том, что ранее я пытался пользоваться docker&amp;lsquo;ом и это было не совсем удачно с кучей непонятностей и неприятностей. Сейчас же я решил снова попробовать использовать docker и начать все с начала. А предварительно необходимо удалить все следы старых попыток.&#xA;Все эти заметки в первую очередь предназначаются для меня, на тот случай, если я снова заброшу docker по каким-то причинам, а через некоторое время решу вернуться к нему.</description>
    </item>
    <item>
      <title>Проброс портов с помощью iptables</title>
      <link>https://b.sattellite.me/2014/11/iptables-port-forwarding/</link>
      <pubDate>Wed, 26 Nov 2014 17:34:00 +0300</pubDate>
      <guid>https://b.sattellite.me/2014/11/iptables-port-forwarding/</guid>
      <description>Проброс портов с помощью iptables При поиске готовой информации о том как пробросить порты с помощью iptables сразу находится куча однотипных решений. Но все решения рассчитаны на то, что порты пробрасываются на шлюзе сети. Такой проброс плох тем, что на внутреннее устройство, на которое пробрасывается порт, пакет приходит с неизмененным source IP-адресом. Устройство отвечает согласно стандартной таблице маршрутизации - через шлюз.&#xA;Далее приведен пример из однотипного множества, но с учетом того, что сервер, на котором пробрасывается порт не является шлюзом.</description>
    </item>
    <item>
      <title>Проблемы точного времени в Asterisk</title>
      <link>https://b.sattellite.me/2014/11/troubles-with-asterisk-timing-interface/</link>
      <pubDate>Wed, 05 Nov 2014 17:32:00 +0300</pubDate>
      <guid>https://b.sattellite.me/2014/11/troubles-with-asterisk-timing-interface/</guid>
      <description>Проблемы точного времени в Asterisk Источник точного времени крайне необходим для синхронизации любого медиа-потока. Asterisk не исключение. С помощью источника точного времени синхронизируются потоки во время разговора, воспроизводятся файлы, подавляется тишина и прочий функционал так или иначе затрагивающий передачу медиа-потока.&#xA;По умолчанию Asterisk установленный в Linux дистрибутиве использует timerfd (res_timing_timerfd.so). И с ним проблем нет. Но вот при установке Asterisk в FreeBSD он использует модуль kqueue (res_timing_kqueue.so). Начинает возникать куча странных проблем (например, загрузка процессора при воспроизведении moh, moh проигрывается слишком быстро/медленно, плохое качество голоса во время вызова, односторонняя слышимость или полная тишина во время разговора) и ошибок:</description>
    </item>
    <item>
      <title>Установка и настройка docker в Fedora</title>
      <link>https://b.sattellite.me/2014/10/installing-and-configuring-docker-in-fedora/</link>
      <pubDate>Fri, 24 Oct 2014 17:29:00 +0400</pubDate>
      <guid>https://b.sattellite.me/2014/10/installing-and-configuring-docker-in-fedora/</guid>
      <description>Установка и настройка docker в Fedora Как подсказывает нам Викепедия:&#xA;Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы LXC. Позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер, который может быть перенесён на любой Linux-системе.&#xA;В целом очень удобный инструмент для разработчиков. Использование в продакшен на свой страх и риск, а я считаю, что еще не дорос. Как минимум, потому что не умеет пробрасывать группы портов.</description>
    </item>
    <item>
      <title>Создание туннеля в Fedora Linux</title>
      <link>https://b.sattellite.me/2014/10/tunneling-in-fedora/</link>
      <pubDate>Tue, 14 Oct 2014 17:27:00 +0400</pubDate>
      <guid>https://b.sattellite.me/2014/10/tunneling-in-fedora/</guid>
      <description>Создание туннеля в Fedora Linux Причин, по которым может понадобиться туннель крайне много. Статей о том как его настраивать ещё больше. Здесь я собрал несколько статей в одну про создание GRE туннеля, чтобы, с учетом всех мелочей, был полный мануал по настройке.&#xA;Для начала необходимо подгрузить соответствующий модуль ядра и проверить, что он загрузился:&#xA;# modprobe ip_gre # lsmod|grep gre ip_gre 18245 0 ip_tunnel 23081 1 ip_gre gre 13535 1 ip_gre Заранее надо условиться, что адрес сервера 1.</description>
    </item>
    <item>
      <title>Обновление форка через интерфейс GitHub</title>
      <link>https://b.sattellite.me/2014/09/update-fork-from-github/</link>
      <pubDate>Mon, 01 Sep 2014 17:23:00 +0400</pubDate>
      <guid>https://b.sattellite.me/2014/09/update-fork-from-github/</guid>
      <description>Обновление форка через интерфейс GitHub При необходимости обновить форкнутый проект можно и с помощью инструкции оставленной на самом GitHub. Но если изменения в проект были внесены через web-интерфейс, форк создался автоматически и не хочется клонировать проект себе на машину, то и обновить хочется через web-интерфейс.&#xA;Для этого надо выполнить небольшое количество действий в форкнутом проекте:&#xA;Перейти на вкладку Pull Requests Создаем новый реквест New pull request Пишет, что нечего сравнивать, но не расстраиваемся и жмем switching the base Появились отличия родительского и форкнутого проектов.</description>
    </item>
    <item>
      <title>Настройка FreeRadius для логирования CDR от Cisco VoIP</title>
      <link>https://b.sattellite.me/2014/08/cdr-from-cisco-to-freeradius/</link>
      <pubDate>Tue, 05 Aug 2014 17:21:00 +0400</pubDate>
      <guid>https://b.sattellite.me/2014/08/cdr-from-cisco-to-freeradius/</guid>
      <description>Настройка FreeRadius для логирования CDR от Cisco VoIP Есть Cisco для VoIP, которая отправляет вызовы на множество операторов. Звонок проходит через dial-peer&amp;rsquo;ов по указанным в них префиксам и в случае факапа одного из внешних операторов узнать через кого из них ушёл вызов не представляется возможным по обычным логам. Для полноценного логирования всех звонков проходящих через Cisco с множеством dial-peer&amp;rsquo;ов необходимо использовать RADIUS, чтобы точно знать через какого dial-peer&amp;rsquo;а вышел звонок.</description>
    </item>
    <item>
      <title>Автоматическая подготовка конфигурационных файлов для Eltex TAU-8.IP</title>
      <link>https://b.sattellite.me/2014/07/tau8-autoconfiguration/</link>
      <pubDate>Wed, 30 Jul 2014 17:17:00 +0400</pubDate>
      <guid>https://b.sattellite.me/2014/07/tau8-autoconfiguration/</guid>
      <description>Автоматическая подготовка конфигурационных файлов для Eltex TAU-8.IP Для автоматической конфигурации TAU-8.IP сам Eltex предлагает использовать ACS/EMS разработанную их силами. Многими используется для конфигурирования GPON оборудования, а зоодно умеет конфигурировать и VoIP-шлюзы (даже другого производителя). Причины, по которым, не используется это решение озвучиваться не буду. Но необходимость в автоматической конфигурации вновь подключаемых VoIP шлюзов производства Eltex не отпала.&#xA;Для решения этой задачи был написан небольшой скрипт. Но обо всем по порядку.</description>
    </item>
    <item>
      <title>Перехват входящего вызова в Asterisk</title>
      <link>https://b.sattellite.me/2014/07/asterisk-call-pickup/</link>
      <pubDate>Tue, 29 Jul 2014 17:16:00 +0400</pubDate>
      <guid>https://b.sattellite.me/2014/07/asterisk-call-pickup/</guid>
      <description>Перехват вызова - очень полезный функционал. Для перехвата входящего вызова в Asterisk есть 3 способа. Первый - использовать функционал features; второй - через переменные канала вызова; третий - специальная команда PickUp().&#xA;Если разобрать перехват вызова в общих чертах, то получится следующее:&#xA;Номерам настраивается группа вызова (callgroup) Номерам настраивается группа для перехвата (pickupgroup) Настраивается комбинация клавиш для перехвата вызова Настройка через использование конфигурационных файлов В sip.conf для номеров настраивается численное представление callgroup и pickupgroup или именованное представление namedcallgroup и namedpickupgroup:</description>
    </item>
    <item>
      <title>Различные хаки с govnokod.ru</title>
      <link>https://b.sattellite.me/2014/06/govnokod/</link>
      <pubDate>Sat, 21 Jun 2014 17:11:00 +0400</pubDate>
      <guid>https://b.sattellite.me/2014/06/govnokod/</guid>
      <description>Различные хаки с govnokod.ru Полезные хаки, найденные на govnokod.ru&#xA;Выборка из БД, с занесением в хеш по именам столбцов (pruf):&#xA;my $query = &amp;#34;SELECT ...&amp;#34;; my $sth = $dbh-&amp;gt;prepare($query); # below technic was described in DBI docs my %row; $sth-&amp;gt;execute(); $sth-&amp;gt;bind_columns( \( @row{ @{$sth-&amp;gt;{&amp;#39;NAME_lc&amp;#39;}} }) ); while ($sth-&amp;gt;fetch()) { if (defined $row{&amp;#39;my_field&amp;#39;}) { ... } } Убирание пробельных символов в начале и конце (pruf):&#xA;sub trim { @_ = @_ ?</description>
    </item>
    <item>
      <title>Использование Unicode в Perl</title>
      <link>https://b.sattellite.me/2014/05/perl-unicode/</link>
      <pubDate>Fri, 23 May 2014 17:09:00 +0400</pubDate>
      <guid>https://b.sattellite.me/2014/05/perl-unicode/</guid>
      <description>Использование Unicode в Perl У любого, кто с Perl работал не так мало времени не один раз возникала ошбика упоминающая в себе Wide character. Это все из-за того, что Perl с unicode плохо дружит и реализация поддержки самого unicode прилеплена с боку. Все это оставляет желать только лучшего. Вот небольшой сборник рецептов для помощи, если вдруг возникла проблема.&#xA;use utf8; Часто решает проблему, но если не решило, то стоит отключить сразу же для предотвращения ошибок в следующих способах.</description>
    </item>
    <item>
      <title>Создание правил iptables</title>
      <link>https://b.sattellite.me/2014/05/iptables-basic-rules/</link>
      <pubDate>Fri, 23 May 2014 17:08:00 +0400</pubDate>
      <guid>https://b.sattellite.me/2014/05/iptables-basic-rules/</guid>
      <description>Создание правил iptables Когда сервер работает по правилам &amp;ldquo;всё разрешено, кроме&amp;rdquo; это конечно хорошо. Но часто все забывают добавлять те самые правила &amp;ldquo;кроме&amp;rdquo;. И сервер остается не защищенным от внешних атак. А если сервер в продакшене, то он всегда должен работать по правилу &amp;ldquo;запрещено всё, кроме&amp;rdquo;. Здесь разберем способ основной защиты сервера от атак из внешнего мира.&#xA;Просмотреть существующие правила можно с помощью&#xA;% sudo iptables -L Вывод будет приблизительно такого вида:</description>
    </item>
    <item>
      <title>Cisco не позволяет подключиться по SSH</title>
      <link>https://b.sattellite.me/2014/05/cisco-close-ssh-connection/</link>
      <pubDate>Wed, 07 May 2014 17:05:00 +0400</pubDate>
      <guid>https://b.sattellite.me/2014/05/cisco-close-ssh-connection/</guid>
      <description>Cisco не позволяет подключиться по SSH Случилась проблема: на Cisco устройство невозможно подключиться через SSH. Проблема особенна тем, что нельзя подключиться только с linux-версии OpenSSH (Gentoo пользователям повезло больше), а с bsd-версии все отлично.&#xA;Проблема:&#xA;ssh -v host OpenSSH_6.4, OpenSSL 1.0.1e-fips 11 Feb 2013 debug1: Reading configuration data /home/sattellite/.ssh/config debug1: /home/sattellite/.ssh/config line 60: Applying options for host debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 51: Applying options for * debug1: Connecting to host [host] port 22.</description>
    </item>
    <item>
      <title>Early media или музыка вместо гудков в Asterisk</title>
      <link>https://b.sattellite.me/2014/04/asterisk-early-media/</link>
      <pubDate>Mon, 28 Apr 2014 17:02:00 +0400</pubDate>
      <guid>https://b.sattellite.me/2014/04/asterisk-early-media/</guid>
      <description>Early media или музыка вместо гудков в Asterisk Обращение к читателям от автора: Это самая популярная статья в этом блоге. Если Вам не составит труда, то оставляйте комментарии, пожалуйста. Ведь хочется иметь обратную связь и понимать на сколько полезен описанный материал. А в качестве бонуса - появилось обновление, которое помогает устанавливать мелодии вызова без перезагрузки сервера.&#xA;Иногда хочется, чтобы во время звонка вместо длинных гудков проигрывалась мелодия. Как в рекламе говорится, &amp;ldquo;надоели гудки&amp;rdquo;?</description>
    </item>
    <item>
      <title>Настройка транкового соединения между SMG-1016M и Cisco</title>
      <link>https://b.sattellite.me/2014/04/eltex-smg-1016m-trunk-to-cisco/</link>
      <pubDate>Mon, 21 Apr 2014 16:58:00 +0400</pubDate>
      <guid>https://b.sattellite.me/2014/04/eltex-smg-1016m-trunk-to-cisco/</guid>
      <description>Настройка транкового соединения между SMG-1016M и Cisco При работе Eltex SMG-1016M в качестве центральной городской АТС возникла необходимость выпускать вызовы, отличные от местных, через другой SIP шлюз. В качестве альтернативного SIP шлюза выступает Cisco 7200 Voice, соединенная с провайдерами высшего уровня по SIP: MTT, PrimeLink, Ростелеком. Для этого на SMG-1016M надо создать SIP-транк до этой Cisco.&#xA;Сейчас будет приведен пример настройки в моей ситуации, с объяснением некоторых моментов.&#xA;Создаем транк группу Для начала необходимо создать транк группу.</description>
    </item>
    <item>
      <title>Подключение стилей и скриптов для специфичных страниц в Mojolicious</title>
      <link>https://b.sattellite.me/2014/04/mojolicious-template-advanced/</link>
      <pubDate>Thu, 17 Apr 2014 16:54:00 +0400</pubDate>
      <guid>https://b.sattellite.me/2014/04/mojolicious-template-advanced/</guid>
      <description>Подключение стилей и скриптов для специфичных страниц в Mojolicious Иногда при оформлении определенных частей приложения требуется создать специфичный стиль. Конечно же, можно описать его в общем стиле если это пару строчек. Но если это огромное количество стилей, необходимых только тут, то таскать за зря на 99% страниц всего приложения за собой ненужных 2-4кб становится, наверное, не правильным. Даже не смотря на возможности современного интернета и web-серверов.&#xA;Я тут прикинул возможности шаблонизатора в Mojolicious и сделал следующую конструкцию, которая включается в главный слой приложения, например main, в заголовок head:</description>
    </item>
    <item>
      <title>Простой мониторинг событий в логах</title>
      <link>https://b.sattellite.me/2014/04/swatch/</link>
      <pubDate>Tue, 15 Apr 2014 16:49:00 +0400</pubDate>
      <guid>https://b.sattellite.me/2014/04/swatch/</guid>
      <description>Простой мониторинг событий в логах Для мониторинга определенного события в логах решил использовать swatch. Программа предоставляет легконастраиваемый мониторинг и так же легкорасширяемые действия в случае срабатывания триггера.&#xA;Программа написана на Perl, что, по крайней мере для меня, является огромным плюсом. После установки пакета программы из репозиториев своего дисрибутива (модуль не загружен в CPAN) можно почитать man swatch, но он менее информативен, чем perldoc swatch и это удивительно.&#xA;Единственный минус программы - срабатывание только на одно событие.</description>
    </item>
    <item>
      <title>Алгоритм установления SIP соединения</title>
      <link>https://b.sattellite.me/2014/03/sip-scheme-with-proxy/</link>
      <pubDate>Thu, 06 Mar 2014 05:22:00 +0400</pubDate>
      <guid>https://b.sattellite.me/2014/03/sip-scheme-with-proxy/</guid>
      <description>Алгоритм установления SIP соединения Протоколом SIP предусмотрены 3 основных сценария установления соединения: с участием прокси-сервера, с участием сервера переадресации и непосредственно между пользователями. Различие между перечисленными сценариями заключается в том, что по-разному осуществляется поиск и приглашение вызываемого пользователя. В первом случае эти функции возлагает на себя прокси-сервер, а вызывающему пользователю необходимо знать только постоянный SIP-адрес вызываемого пользователя. Во втором случае вызывающая сторона самостоятельно устанавливает соединение, а сервер переадресации лишь реализует преобразование постоянного адреса вызываемого абонента в его текущий адрес.</description>
    </item>
    <item>
      <title>Офисная Мини-АТС на базе Eltex TAU-8.IP</title>
      <link>https://b.sattellite.me/2014/03/eltext-tau8-mini-pbx/</link>
      <pubDate>Tue, 04 Mar 2014 05:54:00 +0400</pubDate>
      <guid>https://b.sattellite.me/2014/03/eltext-tau8-mini-pbx/</guid>
      <description>Офисная Мини-АТС на базе Eltex TAU-8.IP Пришел на тест русский VoIP-шлюз - Eltex TAU-8.IP. По словам производителей разрабатывался он как замена Linksys SPA8000 и на данный момент работает даже лучше. На сегодня железка на рынке уже более 2 лет, что может говорить только о том, что практически все ошибки давно исправлены и она является готовым к использованию продуктом.&#xA;Сейчас попробуем на его базе сделать офисную мини-АТС.&#xA;Оффтопик: Шлюз не то что тихий, а абсолютно бесшумный, если сравнивать с Linksys SPA8000.</description>
    </item>
    <item>
      <title>Базовая настройка Windows Server</title>
      <link>https://b.sattellite.me/2013/09/windows-server/</link>
      <pubDate>Mon, 23 Sep 2013 20:37:00 +0400</pubDate>
      <guid>https://b.sattellite.me/2013/09/windows-server/</guid>
      <description>Базовая настройка Windows Server Пример базовой настройки Windows Server. Все будет происходить на Windows Server 2003.&#xA;Сам процесс установки мало интересен и все решения на возникшие, в его ходе, вопросы легко находятся в google.com.&#xA;Как правильно поднять терминальный сервер можно почитать тут http://networkcomp.ru/?p=385 (или копия в Evernote)&#xA;После &amp;ldquo;поднятия&amp;rdquo; терминального сервера рекомендую к группе &amp;ldquo;Пользователи уделенного рабочего стола&amp;rdquo; добавить группу &amp;ldquo;Прошедшие проверку&amp;rdquo;, чтобы при последующем создании пользователей не добавлять каждому эту группу.</description>
    </item>
    <item>
      <title>Заметки в помощь с Fedora</title>
      <link>https://b.sattellite.me/2013/09/fedora-notes/</link>
      <pubDate>Sun, 22 Sep 2013 16:43:00 +0400</pubDate>
      <guid>https://b.sattellite.me/2013/09/fedora-notes/</guid>
      <description>Заметки в помощь с Fedora Полезные (для меня) заметки по Fedora Linux, чтобы не забылось и не потерялось. Временами будет пополняться.&#xA;###Автозапуск скриптов при старте системы Необходимо создать файл /etc/rc.d/rc.local со следующим содержимым:&#xA;#!/bin/bash ... exit 0 Где троеточие заменять вызовами нужных скриптов. Сделать /etc/rc.d/rc.local исполняемым:&#xA;chmod +x /etc/rc.d/rc.local И добавить в запуск сервис:&#xA;systemctl enable rc-local Например, для запуска daemontools надо добавить строку:&#xA;/sbin/svscanboot &amp;amp; ###Перенос системы с одного жесткого диска на другой</description>
    </item>
    <item>
      <title>Linux Policy-Based Routing</title>
      <link>https://b.sattellite.me/2013/09/linux-policy-routing/</link>
      <pubDate>Mon, 16 Sep 2013 07:30:00 +0400</pubDate>
      <guid>https://b.sattellite.me/2013/09/linux-policy-routing/</guid>
      <description>Linux Policy-Based Routing Заметка из выдержек LARTC.&#xA;Имеется сервер/десктоп с двумя сетевыми интерфейсами. Каждый интерфейс подключен к своей сети. И возникает ситуация, что ответ должен отправляться в сеть из которой пришел запрос, а не через default gw. Такая маршрутизации называется policy based. В Linux она настраивается с помощью утилиты iproute2.&#xA;Первый интерфейс с адресом 10.120.120.10/16 и шлюзом 10.120.0.1. Второй интерфейс с адресом 172.16.16.172/16 и шлюзом 172.16.0.1.&#xA;Добавим две таблицы маршрутизации с произвольными именами (в моем случае это просто первый октет сети):</description>
    </item>
    <item>
      <title>Soft-RAID во FreeBSD</title>
      <link>https://b.sattellite.me/2013/09/soft-raid-in-freebsd/</link>
      <pubDate>Thu, 05 Sep 2013 13:17:00 +0400</pubDate>
      <guid>https://b.sattellite.me/2013/09/soft-raid-in-freebsd/</guid>
      <description>Soft-RAID во FreeBSD Список команд для создания soft-RAID во FreeBSD на примере, когда имеем 2 жестких диска /dev/ada0 и /dev/ada1:&#xA;sysctl kern.geom.debugflags=16 gmirror label -v -b round-robin gm0 /dev/ada0 echo &amp;#39;geom_mirror_load=YES&amp;#39; &amp;gt;&amp;gt; /boot/loader.conf sed -i &amp;#39;s/ada0/mirror\/gm0/&amp;#39; /etc/fstab reboot gmirror insert gm0 /dev/ada1 А после можно сидеть и наблюдать за процессом синхронизации gmirror status.</description>
    </item>
    <item>
      <title>Перевод вызовов в Asterisk</title>
      <link>https://b.sattellite.me/2013/06/asterisk-call-transfer/</link>
      <pubDate>Fri, 14 Jun 2013 06:22:00 +0400</pubDate>
      <guid>https://b.sattellite.me/2013/06/asterisk-call-transfer/</guid>
      <description>Перевод вызовов в Asterisk Уже написано много разного по поводу перевода вызовов, но надо объединить чужой и свой опыт в одном месте, чтобы не забылось в будущем. Есть клиент с не очень большим количеством сотрудников, но крайне требовательный. На его Astersik было развернуто много разных интересных и не очень решений. Недавно он захотел вспомнить времена, когда они пользовались офисной АТС Panasonic и попросил сделать перевод вызовов таким как они привыкли (угу, прошло всего-то 3 года).</description>
    </item>
  </channel>
</rss>
