Как стать автором
Обновить
3
0
Валентин @xlin

Системный администратор

Отправить сообщение

Визуализация concurrency в Go с WebGL

Время на прочтение12 мин
Количество просмотров37K
Одной из самых сильных сторон языка программирования Go является встроенная поддержка concurrency, основанная на труде Тони Хоара «Communicating Sequential Processes». Go создан для удобной работы с многопоточным программированием и позволяет очень легко строить довольно сложные concurrent-программы. Но задумывались ли вы когда-нибудь, как выглядят различные паттерны concurrency визуально?

Конечно, задумывались. Все мы, так или иначе, мыслим визуальными образами. Если я попрошу вас о чём-то, что включает числа «от 1 до 100», вы мгновенно их «увидите» в своей голове в той или иной форме, вероятно даже не отдавая себе в этом отчёт. Я, к примеру, ряд от 1 до 100 вижу как линия с числами уходящая от меня, поворачивающая на 90 градусов вправо на числе 20 и продолжающая до 1000+. И, покопавшись в памяти, я вспоминаю, что в самом первом детском саду в раздевалке вдоль стены были написаны номерки, и число 20 было как-раз в углу. У вас же, вероятно, какое-то свое представление. Или вот, другой частый пример — представьте круглый год и 4 сезона года — кто-то их видит как квадрат, каждая грань которого принадлежит сезону, кто-то — как круг, кто-то ещё как-то.

Так или иначе, позвольте мне показать мою попытку визуализировать основные паттерны concurrency с помощью Go и WebGL. Эти интерактивные визуализации более-менее отражают то, как я вижу это в своей голове. Интересно будет услышать, насколько это отличается от визуализаций читателей.

Читать дальше →
Всего голосов 91: ↑88 и ↓3+85
Комментарии21

Скрипт автоматического обновления DDNS для No-IP

Время на прочтение4 мин
Количество просмотров39K
Прочитав множество руководств и примеров написания скрипта для работы Mikrotik с сервисом noip.com, так и не удалось найти готового решения.
Что не устраивало в других руководствах, например, здесь:
при написании необходимо прямо в тексте скрипта указывать имя интерфейса, с которого он будет получать внешний IP-адрес, а что если интерфейсов два, три или десять?
В моем случае имеется 2 канала: pppoe-client и ethernet без пароля, но с динамически получаемым адресом…
Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии7

Как в первый раз запустить i2pd: инструкция под Debian/Ubuntu

Время на прочтение4 мин
Количество просмотров63K


I2p — это сеть со специализацией на анонимности внутрисетевых ресурсов, этим она отличается от сети tor, основной задачей которой являются не внутренние ресурсы, а построение безопасного доступа к интернету. Зная об этих двух особенностях, люди могут гораздо эффективнее работать в обеих сетях.

В i2p ты можешь заниматься множеством вещей: посещать и создавать сайты, форумы и торговые площадки, принимать почту, чатиться и скачивать торренты, и многое многое другое. Программа i2pd способна работать с большим числом программ и сервисов.
Читать дальше →
Всего голосов 45: ↑35 и ↓10+25
Комментарии78

Читаем контейнер закрытого ключа КриптоПро средствами OpenSSL

Время на прочтение8 мин
Количество просмотров87K
Речь пойдет о файлах primary.key, masks.key и header.key, которые лежат в директории ххххх.000 на флешке. Данные файлы входят в состав криптоконтейнера закрытого ключа электронной подписи криптопровайдера КриптоПро, формат которого нигде не опубликован. Целью данной статьи является чтение контейнера и преобразование закрытого ключа в формат, который может быть прочитан в библиотеке OpenSSL. Долгое время было распространено ошибочное суждение, что достаточно сделать нечто вида (primary_key XOR masks_key) и мы получим закрытый ключ в чистом (raw) виде, однако забегая вперед, можно утверждать, что в КриптоПро было применено более сложное преобразование, в худшем случае состоящее из более чем 2000 (двух тысяч) операций хеширования.

Стоит упомянуть о существовании утилиты P12FromGostCSP которая позволяет конвертировать ключ в формат P12, доступный для работы с OpenSSL, но утилита имеет следующие существенные недостатки:
  • Читает контейнер не напрямую, а через криптопровайдер, поэтому там, где кроме OpenSSL ничего нет, не работает.
  • Если в свойствах ключа не отмечено, что ключ «экспортируемый», то конвертировать его невозможно.
  • В демо версии не формирует файл с ключом, эта возможность присутствует только в платной версии.

Файл primary.key


Содержит 32 байта ключа в формате Asn1. Это только половина ключа, полный ключ получается при делении этого числа по модулю Q на маску. Поле, хранящее модуль Q в библиотеке OpenSSL имеет название order. Маска лежит в файле masks.key:

primary.key
Читать дальше →
Всего голосов 58: ↑56 и ↓2+54
Комментарии44

350+ полезных ресурсов, книг и инструментов для работы с Docker

Время на прочтение14 мин
Количество просмотров103K
Мы уже ни раз приводили полезные руководства и подборки источников для разработчиков. На этот раз мы решили продолжить тему контейнеров, которую мы затрагивали ранее, и рассказать о подборке тематических ресурсов на GitHub.

Читать дальше →
Всего голосов 34: ↑31 и ↓3+28
Комментарии8

Программный интернет шлюз для уже не маленькой компании (Shorewall, OpenVPN, OSPF). Часть 2

Время на прочтение17 мин
Количество просмотров27K
Представляю вторую статью из серии, ориентированных на «продолжающих» системных администраторов, для опытных я вряд ли открою что-то новое.
В этих статьях мы рассмотрим построение интернет шлюза на linux, позволяющего связать несколько офисов компании, и обеспечить ограниченный доступ в сеть, приоритезацию трафика (QoS) и простую балансировку нагрузки с резервированием канала между двумя провайдерами.
Конкретно в этой части:
  • Более подробная настройка Shorewall
  • Страшный и не понятный QoS
  • Балансировка нагрузки и резервирование


А в предыдущей части были рассмотрены:
  • Простейшая настройка Shorewall
  • Ужасно сложная настройка dnsmasq
  • Не менее сложная настройка OpenVPN
  • И для многих продолжающих админов нетипичная, динамическая маршрутизация, на примере OSPF

В третьей части:
  • QoS во всю ширь в Shorewall
  • Более подробная настройка Shorewall
  • Раскидывание трафика по каналам в соответствии с протоколами
  • Костыли, без них, никуда

В четвертой части:
  • Автоматические события
  • Макросы

Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии2

Тонкий клиент HP в качестве домашнего роутера и файл-сервера

Время на прочтение25 мин
Количество просмотров47K
С момента публикации на Geektimes первой части статьи, кое-что изменилось. Я обновил тонкий клиент на HP t610 Plus и перешел на CentOS 7. Поэтому, публикую эту статью не как продолжение предыдущей, а как новую.

Читать дальше →
Всего голосов 21: ↑18 и ↓3+15
Комментарии30

Изучаем net/context в Go

Время на прочтение11 мин
Количество просмотров62K
Не секрет, что основная ниша использования Go это сетевые сервисы: всевозможные серверы, бекенды, микросервисы, распределенные базы данных и файловые хранилища. Такой класс программ очень активно использует сетевые запросы, весь необходимый функционал для которых есть в стандартной библиотеке, но один аспект разработки сетевых архитектур остается для многих темным пятном — контексты запросов. В этой статье я хочу рассмотреть этот аспект повнимательней и показать, какой это мощный и важный инструмент.


Читать дальше →
Всего голосов 26: ↑23 и ↓3+20
Комментарии8

С чего начать новичку в Go

Время на прочтение2 мин
Количество просмотров160K
Если вы решили попробовать замечательный язык Go, но не знаете с чего начать, вам прямая дорога в этот пост, где я постарался перечислить все необходимые для новичков ресурсы.
Читать дальше →
Всего голосов 56: ↑50 и ↓6+44
Комментарии50

Как стать провайдером облачной IP АТС — Пошаговое руководство

Время на прочтение3 мин
Количество просмотров11K
Теперь почти любой может стать оператором облачной АТС. В предыдущей статье мы говорили о том, как это сделать, имея всего один сервер, сегодня речь пойдет о ситуации, когда серверов несколько (кластер) и нужно централизованное управление.


Читать дальше →
Всего голосов 7: ↑3 и ↓4-1
Комментарии20

ZFS on CentOS: работа над ошибками

Время на прочтение5 мин
Количество просмотров35K
Так как я довольно давно использую ZFS (ещё со времён OpenSolaris), и очень доволен данной ФС в Linux, несмотря на её «неправославную» лицензию, то естественно прочитал свежую статью об установке данной ФС на CentOS.

Заметив в руководстве к свершению подвига несколько ошибок, решил не пройти мимо, как я это делаю обычно. К сожалению, в комментариях отвечать не могу, по совершенно очевидной причине.

Работа над ошибками, и некоторые полезные советы под катом.
Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии22

Установка CentOS на ZFS в UEFI

Время на прочтение5 мин
Количество просмотров35K


Решил тут на днях попробовать ZFS, а подробного и простого мануала как это осуществить на CentOS не нашел, решил исправить ситуацию. К тому же хотелось установить все это в режиме EFI. — не стоять же на месте? И заодно понять для себя как работает DKMS, а так же аспекты ручной установки RPM-based дистрибутивов.

ZFS был выбран тоже не случайно, так как на этой машине планировалось развернуть гипервизор и использовать zvol для хранения образов виртуальных машин. Мне хотелось нечто большего чем програмный рейд + lvm или простое файловое хранение образов, что-нибудь на подобии ceph, но для одного хоста это слишком жирно. Забегая вперед скажу, что я остался очень доволен этой файловой системой, ее производительностью и всеми ее фишками.
Читать дальше →
Всего голосов 15: ↑13 и ↓2+11
Комментарии35

DHCP сервер на нескольких VLAN

Время на прочтение12 мин
Количество просмотров70K
Постановка задачи.

Под термином “клиент” будем понимать зону ответственности за совокупность сетевых устройств.

Требуется обеспечить доступ для нескольких сотен клиентов к неким общим ресурсам в таком режиме, чтобы:

  1. Каждый клиент не видел трафик остальных клиентов.
  2. Неисправности одного клиента (broadcast-storm, конфликты IP-адресов, не санкционированные DHCP-сервера клиента и т.п.) не должны влиять на работу как других клиентов, так и всей системы в целом.
  3. Каждый клиент не должен напрямую получать доступ к ресурсам других клиентов (хотя, как специальный случай, можно предусмотреть и разрешение данного трафика, но с его централизованным контролем и/или управлением ).
  4. Клиенты должны иметь возможность получения доступа к общим внешним ресурсам (которыми могут быть как отдельные сервера, так и сеть Интернет в целом).
  5. Общие ресурсы должны также иметь возможность доступа к ресурсам клиентов (конечно при условии, что известен общему ресурсу известен IP-адрес ресурса клиента).
  6. Адресное пространство для клиентов выделяется централизованно и его администрирование не должно быть чрезмерно сложным.

В качестве примеров практического применения можно назвать изоляцию локальных сетей отделов в крупной организации, организацию VoIP-связи или доступа в сеть Интернет для нескольких независимых потребителей и т.п.
Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Комментарии31

Экономим электричество на тонких клиентах

Время на прочтение2 мин
Количество просмотров16K
В целях экономии электроэнергии на работе вышла директива: на выходные и праздники, а так же на ночь, все компьютеры, кроме критичных, должны быть выключены. Но как водится — кто то да забьёт забудет. Для тонких клиентов есть два решения — поднять TSmon и с него рулить или подключится к клиенту по ssh и дать команду на выключение.

По большому счёту сам процесс несложный — добавляем в сборку пакет sshd, задаём пароль для root в файле build.conf параметром param rootpasswd, собираем образ, загружаем, когда надо логинимся по ssh на клиенте и выключаем, но интереснее разослать всем нужным клиентам сигнал на выключение одной командой, без лишних телодвижений.

Почему не telnet — потому что по ssh проще сделать автологин, без костылей типа perl и expect. Далее описан способ реализации.
Читать дальше →
Всего голосов 12: ↑9 и ↓3+6
Комментарии25

Подключение двух принтеров к Thinstation и привязка их к портам

Время на прочтение2 мин
Количество просмотров10K
Бывает такая проблема что в конфиге принтерам назначены /dev/usb/lp0 и /dev/usb/lp1, а они вдруг меняются портами. Происходит это из-за того, что в Thinstation принтеры подключаются по принципу «кто первым встал — того и тапки», т.е. какой первым загрузился — того и /dev/usb/lp0.

Короче, исправляем.
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

HP Flexible Thin Clients — практика

Время на прочтение11 мин
Количество просмотров65K


Модельный ряд HP Flexible Thin Clients предлагает несколько тонких клиентов с различной конфигурацией и производительностью. На тонких клиентах используется несколько операционных систем: HP ThinPro, HP Smart Zero Core, Windows Embedded.

Далее я опишу процесс настройки тонких клиентов на базе ОС HP Smart Zero Core с рекомендациями.
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии26

Домашний сервер на платформе Intel Atom и ОС Centos 7

Время на прочтение20 мин
Количество просмотров62K
В своей статье я хочу представить уважаемому хаброобществу практическое руководство по сборке, настройке и вводу в эксплуатацию недорогого и экономичного сервера на платформе Intel Atom и ОС Centos 7. Сей труд не претендует на полноценный и исчерпывающий учебник и рассчитан, скорее, на начинающих, чем на профессионалов. Если человек, до этого в глаза линукс не видевший, сможет при помощи этой статьи сконфигурировать свой первый сервер, я буду считать свою задачу выполненной.

Первая часть статьи (небольшая по объёму) посвящена аппаратной составляющей, а вторая, основная часть — подробному описанию процесса настройки на этой аппаратуре системы Centos 7. Кому интересно, прошу под кат.
Читать дальше →
Всего голосов 16: ↑12 и ↓4+8
Комментарии38

Docker, часть вторая. Полуавтоматическая винтовка с самонаведением на ногу

Время на прочтение1 мин
Количество просмотров22K
Пожалуйста, начинайте читать с начала серии: habrahabr.ru/post/267441

Как не надо использовать Docker.



Чтобы понимать эту статью надо знать базовые команды Dockerfile для создания изображений и принципы объектно-ориентированного дизайна.

Открываю документацию любого официального образа сервисного ПО — например, Nginx и нахожу раздел «How to use this image». Нам предлагают создать свой образ на базе официального, скопировав в него наши файлы, настроить мапинг порта в мир, и подмонтировать свою папку с конфигами.

FROM ...
COPY  . /usr/src/myapp
WORKDIR /usr/src/myapp

Да, нам предлагают унаследовать Model от View в одном звездном классе и заплатить за хранение на Docker Hub образов наших проприетарных приложений.
Читать дальше →
Всего голосов 29: ↑11 и ↓18-7
Комментарии48

Рецепты Docker: Monkey patch, часть третья

Время на прочтение5 мин
Количество просмотров21K
Пожалуйста, начинайте читать серию заметок с начала, здесь: habrahabr.ru/post/267441

Настройка локально



В этой статье я предполагаю, что служба docker запущена на той же машине, на которой выполняются команды, и у процесса есть доступ на чтение к текущей папке. Еще я подразумеваю, что вы умеете настраивать связку PHP-FPM и Nginx.

Беру образы Nginx и PHP 7.

~$ docker pull nginx
...
~$ docker pull php:7-fpm
Status: Downloaded newer image for php:7-fpm

Теперь у меня есть два чужих класса, которые надо связать вместе через внедрение зависимостей. Самый простой способ добавлять зависимости в чужой код, конечно же, monkeypatching! Сначала создаю контейнеры. Помню о второй сложности программирования — даю контейнерам вразумительные имена, они будут нужны, чтобы контейнеры могли взаимодействовать между собой.
Читать дальше →
Всего голосов 21: ↑8 и ↓13-5
Комментарии44

Как не потратить незаметно для себя несколько гигабайт трафика, если вы не хотите обновляться до Windows 10

Время на прочтение2 мин
Количество просмотров44K
image

На этой неделе стало известно, что Microsoft Windows версий 7 и 8 закачивают на компьютеры пользователей обновление до Windows 10, даже если они этого не просили. Компания подтвердила, что это поведение системы было преднамеренным. Подробнее об этих событиях и о том, как найти и удалить нежелательные обновления, мы расскажем вам без регистрации и смс.

Как выяснили пытливые пользователи системы, подобный казус может случиться с теми пользователями, кто включил автоматическое обновление системы. В компании Microsoft посчитали, что такого повода достаточно для того, чтобы автоматически скачать обновление целой операционки объёмом до 6 Гб и обновить систему пользователя.

Во всём повинно обновление KB3035583, выводящее в трей значок, приглашающий обновить систему до 10-й версии. В то время как жаждущие новых приключений пользователи, у которых этот значок почему-то не появлялся, пытались вызвать его разными способами, более консервативные пользователи, совсем не желавшие обновляться, столкнулись с принуждением в этом вопросе.

По отзывам пользователей, Microsoft не просто придумала новый способ обновления систем, но решила сделать его ещё и крайне настойчивым. Кто-то жаловался на то, что Internet Explorer прописал себе домашней страницей MSN, и каждый раз при загрузке этой страницы выводил закрывающий её баннер с предложением (требованием?) немедля получить обновление до Windows 10.

А один из пользователей пожаловался в издание The Inquirer, что начал копаться в системе после того, как его медленный DSL-интернет неделю ползал со скоростью хромой черепахи на пенсии. Он нашёл в каталоге «Windows» скрытый каталог "$Windows.~BT", который имел размер в несколько гигабайт.
Читать дальше →
Всего голосов 43: ↑39 и ↓4+35
Комментарии38

Информация

В рейтинге
Не участвует
Откуда
Белгород, Белгородская обл., Россия
Дата рождения
Зарегистрирован
Активность