Как стать автором
Обновить
30
0
Maksim Puzyrkov @Maximuzzz

DevOps инженер, архитектор систем мониторинга

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

Ненужные расширения для VS Code

Время на прочтение7 мин
Количество просмотров40K
Недавно я занялся тщательным исследованием VS Code и сделал несколько интересных находок. Как оказалось, в редакторе есть довольно много возможностей и настроек, позволяющих отлично решать те же задачи, которые решают многие популярные расширения.



Здесь речь пойдёт о шести сферах применения расширений, в которых эти расширения могут быть заменены стандартными механизмами VS Code.
Читать дальше →
Всего голосов 61: ↑57 и ↓4+53
Комментарии33

Массивы bash

Время на прочтение3 мин
Количество просмотров90K
Предлагаю вашему вниманию перевод статьи Митча Фрейзера (Mitch Frazier) "Bash Arrays" с сайта linuxjournal.com.

Если вы используете «стандартную» оболочку *NIX-системы, возможно, вы не знакомы с такой полезной особенностью bash как массивы. Хотя массивы в bash не так круты, как в P-языках (Perl, Python и PHP) и других языках программирования, они часто бывают полезны.
Bash-массивы имеют только численные индексы, но они не обязательны к использованию, то есть вы не должны определять значения всех индексов в явном виде. Массив целиком может быть определен путем заключения записей в круглые скобки:

  arr=(Hello World)

Отдельные записи могут быть определены с помощью знакомого всем синтаксиса (от Бейсика (да простит меня Дейкстра — прим. переводчика) до Фортрана):

  arr[0]=Hello
  arr[1]=World

Читать дальше →
Всего голосов 26: ↑25 и ↓1+24
Комментарии30

Разбираемся с передачей видео в разрешении 4К на 60 Гц через хаб USB-C

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


USB-C предлагает новые потрясающие возможности, включая подключение внешних мониторов по USB-порту. Распространены недорогие конвертеры USB-C на DisplayPort и HDMI. Также часто встречаются хабы USB-C с поддержкой внешних мониторов, однако попытки разобраться в их возможностях и ограничениях могут сильно вас запутать. Некоторые из них совместимы с Mac, некоторые – нет. Некоторым нужны драйвера. Очень сильно разнится поддержка разрешений и частоты обновления. Некоторые рекламируются как «не предназначенные для игр». Делаются упоминания об альтернативных режимах, дуальных режимах, и прочем. Цены разнятся от $20 до $300+, причем функции у тех и других очень похожи. Что вообще происходит?

Это инструкция по передаче видео высокого разрешения по USB-C, которую я хотел бы в своё время иметь. Если вы хотите подключить монитор высокого разрешения к своему компьютеру, имеющему выход USB-C, читайте далее.
Читать дальше →
Всего голосов 25: ↑20 и ↓5+15
Комментарии50

Оптимизация времени запуска Prometheus 2.6.0 с помощью pprof

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

В Prometheus 2.6.0 оптимизирована загрузка WAL, что ускоряет процесс запуска.


Неофициальная цель разработки Prometheus 2.x TSDB — ускорить запуск, чтобы он занимал не более минуты. В последние месяцы появились сообщения о том, что процесс немного затягивается, и если Prometheus по какой-либо причине перезапускается, то это — уже проблема. Почти все это время загружается WAL (регистрация записи с упреждением), включающий образцы за последние несколько часов, которые еще предстоит сжать в блок. В конце октября мне, наконец, удалось разобраться в этом; результат — PR#440, снижающий время работы ЦПУ в 6,5 раз и время расчета в 4 раза. Рассмотрим, каким образом я добился этих улучшений.


image

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

Авторизация клиентов в nginx посредством SSL сертификатов

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

Введение:


Потребовалось мне тут как-то написать небольшой API, в котором необходимо было помимо обычных запросов принимать запросы с «высокой степенью секретности».
Не я первый с этим столкнулся и мир давно уже использует для таких вещей SSL.

Поскольку на моём сервере используется nginx, то был установлен модуль SSL
Гугл не выдал ни одного работоспособного howto, но информация в сети есть по частям.

Итак, пошаговое руководство по настройке nginx на авторизацию клиентов через SSL-сертификаты.
Читать дальше →
Всего голосов 41: ↑34 и ↓7+27
Комментарии32

Тест десяти диммеров с LED-лампами

Время на прочтение5 мин
Количество просмотров49K
Большинство светодиодных ламп не поддерживают регулировку яркости, но есть и диммируемые лампы, которые дороже обычных, зато их яркость регулируется.

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

Я проверил, как десять разных диммеров работают с пятнадцатью моделями светодиодных ламп.


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

Оптимальное расположение шардов в петабайтном кластере Elasticsearch: линейное программирование

Время на прочтение8 мин
Количество просмотров7.3K
В самом сердце информационно-поисковых систем Meltwater и Fairhair.ai работает набор кластеров Elasticsearch с миллиардами статей из СМИ и социальных медиа.

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

В этой статье мы расскажем, как применили линейное программирование (линейную оптимизацию) для максимально равномерного распределения рабочей нагрузки поиска и индексирования по всем узлам в кластерах. Это решение уменьшает вероятность, что один узел станет узким местом в системе. В результате мы увеличили скорость поиска и сэкономили на инфраструктуре.
Читать дальше →
Всего голосов 29: ↑28 и ↓1+27
Комментарии1

Flask. Наполняем «флягу» функционалом

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

Предисловие


В прошлом году решил для себя вплотную познакомиться c Python, а в последствии перебраться на него с PHP. На данный момент моя стезя — веб-разработка, а потому осваивать новый язык я начал именно со стороны веба, в частности, с обзора доступных фреймворков и проектов на них. Познакомившись с возможностями TurboGears, web2py, Django, я всё таки поддался «тренду» и погрузился в мир Django.

На протяжении почти года я честно пытался подружиться с ним. Написал несколько простеньких проектов, но монструозность фреймворка отпугивала, обилие «батареек» путало выбор, а с некоторыми ограничениями не хотелось мириться. Душа требовала лаконичности и однозначности, что в конечном счете привело меня к знакомству с Flask. Изучив документацию по фреймворку и смежным проектам (Jinja2, Werkzeug), я проникся идеологией и стал вплотную изучать фреймворк.

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

Сей эпос — это мой опыт под использованию Flask и расширений для него, а точнее, попытка собрать воедино и на русском то, что может пригодиться при создании проектов практически любого уровня.
Читать дальше →
Всего голосов 34: ↑29 и ↓5+24
Комментарии20

Наш путь к централизованному хранению логов

Время на прочтение8 мин
Количество просмотров23K
Приветствую всех! Я работаю системным инженером в компании «Онланта». На одном из наших проектов я занимался внедрением и сопровождением Elastic Stack. Мы прошли путь от сбора логов фактически вручную до централизованного, автоматизированного процесса. Вот уже два года мы практически не меняем архитектуру решения и планируем использовать удобный инструмент в других проектах. Нашей историей его внедрения, а также некоторыми сильными и слабыми сторонами делюсь с вами в этом посте.

Источник
Читать дальше →
Всего голосов 44: ↑43 и ↓1+42
Комментарии13

Свой веб-сервер на NodeJS, и ни единого фреймворка. Часть 1

Время на прочтение7 мин
Количество просмотров119K
Для многих людей JavaScript ассоциативно связан с обилием разнообразных фреймворков и библиотек. Разумеется, инструменты, которые помогают нам каждый день — это хорошо, но, мне кажется, нужно искать некий баланс между использованием инструментов и прокрастинацией, а также знать, как работают вещи, которыми ты пользуешься. Поэтому, когда я только сел разбираться с NodeJS, мне было особенно интересно написать полноценный веб-сервер, которым я мог бы пользоваться сам.
Читать дальше →
Всего голосов 46: ↑35 и ↓11+24
Комментарии97

Старая пьеса IBM

Время на прочтение10 мин
Количество просмотров13K
Лучший способ понять, как Red Hat построила многомиллиардный бизнес на открытом ПО — посмотреть на IBM. Об это говорил основатель Red Hat Боб Янг на конференции All Things Open в 2014 году:

Тут нет секрета. Нужно много и тяжело работать, чтобы сохранить клиентов, продумать и понять возможности развития. Чего не делают конкуренты, что вы можете сделать лучше? Один из замечательных примеров, который вдохновлял нас в начале, кроме того, что у меня не хватало денег заплатить за съёмную квартиру, — это пример Лу Герстнера и IBM…

Герстнер пришёл в IBM и словно по волшебству преобразовал компанию за три года… Его проницательность заключалась в том, что он поговорил с целой кучей клиентов IBM и узнал, что им на самом деле не нравится ни один из продуктов компании. Всё нормально, но при каждом личном разговоре выяснялось, что всегда есть какой-то более подходящий продукт от другой компании… Он спрашивал: „Так почему же вы покупаете у IBM?” Клиенты отвечали: „IBM — единственная технологическая компания с офисами повсюду, где мы ведём бизнес”, и в результате Герстнер понял, что IBM продаёт не продукты. Она продаёт сервис.
Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Комментарии17

ELK Stack для хранения логов Django приложения

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

Каждый из проектов, который перерастает этап прототипа, нуждается в организации логирования. Грамотное логирования решает уйму проблем и помогает понять состояние проекта. На начальном этапе логирование в файл меня устраивало пока проект не разросся и поиск по логам не начал отнимать время.


Решением было создание централизованного лог хранилища с агрегацией логов и поиском. Выбор пал на ELK стек. ELK — сочетание трех OpenSource проектов: ElasticSearch, Logstash и Kibana. ELK хранит логи, строит графики и есть поддержка полнотекстового поиска с фильтрами. В статье описывается процесс настройки ELK стека для хранения логов Django приложения.

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

Как устроен пассажирский вагон дальнего следования

Время на прочтение9 мин
Количество просмотров112K
Современный вагон при соединении с остальным поездом автоматически включается в локальную сеть и получает параметры с сервера штабного вагона. У одноэтажного вагона Тверского вагоностроительного завода сейчас в мониторинге примерно 280 параметров (начиная от уровня заполнения фекального бака и заканчивая напряжением аккумулятора), а у двухэтажного — около 400.



Начнём с межвагонных связей. Это тормозная пневматическая магистраль (пневматические рукава, которыми вагоны соединяются между собой, железнодорожники называют их «лягушками»), высоковольтная магистраль, аварийная магистраль 110 В, интерком и локальная сеть, плюс радиорелейные мосты между вагонами на случай обрыва локальной сети.
Читать дальше →
Всего голосов 207: ↑207 и ↓0+207
Комментарии174

Система сбора, анализа, уведомлений и визуализации логов на syslog-ng, elasticsearch, kibana, grafana, elasticalert

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

image


Что мы получим после этой статьи:


Систему сбора и анализа логов на syslog-ng, elasticsearch в качестве хранилища данных, kibana и grafana в качестве систем визуализации данных, kibana для удобного поиска по логам, elasticalert для отправки уведомлений по событиям. Приготовьтесь, туториал объемный.


Какие логи будем собирать:


  • все системные логи разложенные по индексам в зависимости от их facility(auth,syslog,messages и т.д.);
  • логи nginx — access и error;
  • логи pm2;
  • и др.

Обоснование выбора системы


Почему я выбрал связку с syslog-ng в качестве отправителя, парсера и приемщика логов? Да потому что он очень быстрый, надежный, не требовательный к ресурсам(да да — logstash в качестве агентов на серверах и виртуальных машинах просто убожество в плане пожирания ресурсов и требованием java), с внятным синтаксисом конфигов(вы видели rsyslog? — это тихий ужас), с широкими возможностями — парсинг, фильтрация, большое количество хранилищ данных(postgresql,mysql,elasticsearch,files и т.д.), буферизация(upd не поддерживает буферизацию), сторонние модули и другие фишки.


Требования:


  • Ubuntu 16.04 или debian 8-9;
  • vm для развертывания;
  • Прямые руки.

Приступим или добро пожаловать под кат

Читать дальше →
Всего голосов 25: ↑20 и ↓5+15
Комментарии36

PlantUML — все, что нужно бизнес-аналитику для создания диаграмм в программной документации

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

Введение


Я — системный аналитик, и моя работа заключается в том, чтобы проектировать автоматизированные информационные системы. Впрочем, нет, она заключается в том, чтобы писать и писать документы. Третий раз слово «писать» повторять не буду — все-таки, не «Илиада». Но занудность формы чем-то определенно роднит проектную документацию с древнегреческой поэмой, особенно если речь идет о работе с государственным заказчиком.


Диаграммы — глоток творчества в этом море текста. О диаграммах и пойдет речь в данной статье. Если точнее — о PlantUML — с моей точки зрения, наиболее адекватном инструменте их создания на текущий момент.

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

Гуляем по городу с умом: как я делал сервис для построения интересных пешеходных маршрутов

Время на прочтение13 мин
Количество просмотров56K
UPD: так как тема хорошо зашла и показала наличие спроса на такой сервис, буду развивать его дальше. Завел паблик вконтакте для сбора фидбека и публикации информации об обновлениях https://vk.com/sightsafari

Незнакомый район города, небольшое количество свободного времени и необходимость (или желание) пешком добраться до метро/отеля/вокзала – наверное, каждый хоть раз попадал в такую ситуацию. При этом с одной стороны хочется посмотреть какие-нибудь красивые и интересные места, однако с другой стороны ограниченное время не позволяет слишком сильно уклоняться от прямого маршрута.

Ситуация еще больше осложняется, если рядом нет никаких крупных достопримечательностей, о которых все знают и которые можно было бы включить в свой маршрут после короткого поиска в интернете. Что делать если вы застряли в каком-нибудь Купчино, про которое вы только и слышали, что там лучше не застревать? Приходится идти по навигатору, надеясь, что на пути встретится что-то интересное. Однако популярные навигаторы учитывают лишь расстояние и время в пути, но не принимают во внимание интересность маршрута. Мне попадались еще проекты, пытающиеся учитывать удобство пешего маршрута (ведущие в обход шумных магистралей), но хочется же пройти не только комфортно, но и увидеть какие-нибудь красоты.



Подумав немного, я решил взяться за эту задачу сам. Как всегда, общая идея алгоритма довольно проста, но дьявол кроется в мелочах. А в случае навигации, мелочи могут быть довольно существенны и с риском для здоровья, ведь вряд ли какой-нибудь турист обрадуется, когда навигатор в поисках достопримечательностей заведет его в дебри полузаброшенной промзоны ради маленькой мемориальной таблички (тру стори, один раз так и случилось).

Описание алгоритма и примеры работы под катом, ссылка в конце.
Читать дальше →
Всего голосов 114: ↑113 и ↓1+112
Комментарии215

Как безопасно программировать в bash

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

Почему bash?


В bash есть массивы и безопасный режим. При правильном использовании bash почти соответствует практикам безопасного кодирования.

В fish сложнее допустить ошибку, но там нет безопасного режима. Поэтому хорошей идеей станет прототипирование в fish, а затем трансляция с fish на bash, если вы умеете правильно это делать.

Предисловие


Данное руководство сопровождает ShellHarden, но автор также рекомендует ShellCheck, чтобы правила ShellHarden не расходились с ShellCheck.

Bash — не тот язык, где самый правильный способ решить проблему одновременно является самым простым. Если принимать экзамен по безопасному программированию в bash, то первое правило BashPitfalls звучало бы так: всегда используй кавычки.

Главное, что нужно знать о программировании в bash


Маниакально ставить кавычки! Незакавыченная переменная должна расцениваться как взведённая бомба: она взрывается при контакте с пробелом. Да, «взрывается» в смысле разделения строки на массив. В частности, расширения переменных вроде $var и подстановки команд вроде $(cmd) подвергаются расщеплению слов, когда внутренняя строка расширяется в массив из-за расщепления в специальной переменной $IFS с пробелом по умолчанию. Это обычно незаметно, потому что чаще всего результатом становится массив из 1 элемента, неотличимый от ожидаемой строки.
Читать дальше →
Всего голосов 74: ↑73 и ↓1+72
Комментарии39

Как эволюция создавала ваш страх

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


Самые эффективные из выдуманных чудовищ отражают страхи наших предков с целью эксплуатации страхов современных людей. Некоторые страхи универсальны, некоторые – почти универсальны, а некоторые связаны с местностью. Местечковые страхи – такие уникальные фобии, как, например, боязнь мотыльков – писатели, режиссёры и программисты, создающие произведения в жанре ужасов, обходят стороной. Творцы ужасов пытаются использовать широчайшую из возможных аудиторию – а это означает работу с наиболее распространёнными страхами. Как отметил писатель Томас Монтелеон: «Писатель в жанре ужасов должен обладать бессознательным ощущением того, что послужит универсальным „спусковым крючком“ [Wiater, S., Ed. Dark Thoughts on Writing: Advice and Commentary from Fifty Masters of Fear and Suspense Underwood, New York, NY (1997)]. И все распространённые страхи можно обнаружить в нескольких категориях, ограниченных биологией.
Читать дальше →
Всего голосов 25: ↑20 и ↓5+15
Комментарии50

Физика в мире животных: трилобиты и их «линзы» из кальцита

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


Трилобиты — класс морских животных, вымерший сотни миллионов лет назад. Ученым известно 9 отрядов трилобитов, которые включают 150 семейств, 5 тысяч родов и 10 тысяч видов. Ближайшие современные аналоги трилобитов по строению тела — мокрицы и мечехвосты (кстати говоря, «живые ископаемые»). У большинства трилобитов был мощный панцирь. Рот и ноги располагались на нижней стороне тела, а глаза — на верхней.

Глаза большинства трилобитов были очень сложными, причем их строение радикально отличалось от строения глаз современных животных. Кристаллинового хрусталика у этих животных не было, вместо него у трилобитов были минеральные линзы из кальцита. Сейчас единственными животными с минеральными зрительными линзами являются некоторые существующие ныне офиуры и моллюск Acanthopleura granulata. Сложность глаз трилобитов была гораздо выше сложности глаз этих наших современников.
Читать дальше →
Всего голосов 38: ↑37 и ↓1+36
Комментарии11

Натуральный Geektimes — делаем пространство чище

Время на прочтение2 мин
Количество просмотров38K
Читая Geektimes я постоянно хотел отключить редакторов, ведь они делают из саморегулирующегося сообщества со свободно возникающими статьями очередной адми или что-то подобное.

После того, как пару дней назад на главной странице я увидел пост "Школьник расшарил обнажённое фото с телефона учительницы, за что её уволили" уже почти пришло решение — больше никогда не приду сюда, еще один ресурс в минус.

Причина такого решения думаю всем понятна — мало кому понравится принудительное кормление таким информационным шлаком. Администрация не хочет давать возможность настройки и отключения редакторов — это ее право. Мое право уйти с ресурса.

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



Читать дальше →
Всего голосов 135: ↑116 и ↓19+97
Комментарии173
1

Информация

В рейтинге
Не участвует
Откуда
Göteborg, Västra Götaland, Швеция
Дата рождения
Зарегистрирован
Активность