Здравствуйте, меня зовут Виталий и я обезьяна практик — для меня лучше один раз увидеть и скопировать, чем сто раз прочитать абстрактные руководства. Долгое время я был обычным системным администратором — писал скрипты на CMD/BAT, и даже на sh (при помощи busybox для Windows). Но однажды обычного shell мне стало не хватать, и я решил для себя написать собственный RPC-сервер, но так, чтобы он работал при минимуме системных компонентов, и был понятным, и был многопоточным и содержал минимум строк кода. Java и прочее ООП я отмел, так как для профессионалов, и слишком абстрактно, и надо ставить среду для выполнения на целевой компьютер, и мне же, как админу, её обновлять. Долгое время приглядывался к perl, но я боюсь динамической типизации. В статье я расскажу, как человеку мало знакомому с программированием решить некоторые задачи системного администрирования при помощи Go.
User
Сделаем код чище: Что можно исправить в ядре Linux
5 min
37KНаверняка многие хотели бы попробовать что-то изменить в ядре Linux к лучшему, но не знают с чего начать. Я хочу описать несколько проблем, исправить которые под силу каждому, и на примере показать путь от нахождения проблемы до опубликования её исправления в списке рассылки. По ходу повествования читатель познакомится с некоторыми вспомогательными утилитами.
+85
Разворачиваем рабочий образ linux с минимальным интерактивом
6 min
33KЭта публикация может быть интересна тем ленивым системным администраторам, которые используют что-то из нижеперечисленнго:
Речь пойдет о том, как с минимальными усилиями со стороны пользователя или штатного «эникейщика» установить на компьютер пользователя готовую систему с набором софта, настроенными сетевыми службами, предопределенными конфигами и т.д. Статья ориентирована в первую очередь на энтузиастов и начинающих линуксоидов, но приемы и скрипты вполне могут использоваться в боевом развёртывании группы из десятков машин ежедневно.
- Linux — based систему на машинах-клиентах;
- Тонкие/толстые однотипные клиенты на различном железе;
- Сетевое хранилище клиентских данных;
- Предустановленный регламентированный софт;
- Openvpn/rdp к серверам приложений.
- Плюшевый (мягкий и пушистый) мониторинг linux клиентов типа Nagios.
Речь пойдет о том, как с минимальными усилиями со стороны пользователя или штатного «эникейщика» установить на компьютер пользователя готовую систему с набором софта, настроенными сетевыми службами, предопределенными конфигами и т.д. Статья ориентирована в первую очередь на энтузиастов и начинающих линуксоидов, но приемы и скрипты вполне могут использоваться в боевом развёртывании группы из десятков машин ежедневно.
+7
Работа с виртуальными машинами KVM. Лимитирование ресурсов виртуальной машины
9 min
30K
В предыдущих
+36
Работа с виртуальными машинами KVM. Подготовка хост-машины
7 min
96KВступление

+40
Машинное обучение — 2. Нелинейная регрессия и численная оптимизация
4 min
24KTutorial
Прошел месяц с появления моей первой статьи на Хабре и 20 дней с момента появления второй статьи про линейную регрессию. Статистика по просмотрам и целевым действиям аудитории копится, и именно она послужила отправной точкой для данной статьи. В ней мы коротко рассмотрим пример нелинейной регрессии (а именно, экспоненциальной) и с ее помощью построим модель конверсии, выделив среди пользователей две группы.
Когда известно, что случайная величина y зависит от чего-то (например, от времени или от другой случайной величины x) линейно, т.е. по закону y(x)= Ax+b, то применяется линейная регрессия (так в прошлой статье мы строили зависимость числа регистраций от числа просмотров). Для линейной регрессии коэффициенты A и b вычисляются по известным формулам. В случае регрессии другого вида, например, экспоненциальной, для того чтобы определить неизвестные параметры, необходимо решить соответствующую оптимизационную задачу: а именно, в рамках метода наименьших квадратов (МНК) задачу нахождения минимума суммы квадратов (y(xi) — yi)2.
Итак, вот данные, которые будем использовать в качестве примера. Пики посещаемости (ряд Views, красный пунктир) приходятся на моменты выхода статей. Второй ряд данных (Regs, с множителем 100) показывает число читателей, выполнивших после прочтения определенное действие (регистрацию и скачивание Mathcad Express – с его помощью, к слову, вы сможете повторить все расчеты этой и предыдущих статей). Все картинки — это скриншоты Mathcad Express, а файл с расчетами вы можете взять здесь.

Когда известно, что случайная величина y зависит от чего-то (например, от времени или от другой случайной величины x) линейно, т.е. по закону y(x)= Ax+b, то применяется линейная регрессия (так в прошлой статье мы строили зависимость числа регистраций от числа просмотров). Для линейной регрессии коэффициенты A и b вычисляются по известным формулам. В случае регрессии другого вида, например, экспоненциальной, для того чтобы определить неизвестные параметры, необходимо решить соответствующую оптимизационную задачу: а именно, в рамках метода наименьших квадратов (МНК) задачу нахождения минимума суммы квадратов (y(xi) — yi)2.
Итак, вот данные, которые будем использовать в качестве примера. Пики посещаемости (ряд Views, красный пунктир) приходятся на моменты выхода статей. Второй ряд данных (Regs, с множителем 100) показывает число читателей, выполнивших после прочтения определенное действие (регистрацию и скачивание Mathcad Express – с его помощью, к слову, вы сможете повторить все расчеты этой и предыдущих статей). Все картинки — это скриншоты Mathcad Express, а файл с расчетами вы можете взять здесь.

+15
Dagaz: Пинки здравому смыслу (часть 3)
10 min
18K
– Мессир, я вновь обращаюсь к логике, – заговорил кот, прижимая лапы к груди, – если игрок объявляет шах королю, а короля между тем уже и в помине нет на доске, шах признается недействительным.
Михаил Булгаков «Мастер и Маргарита»
«Мат королю!» — многие из нас впитали эти слова с молоком матери. Сама концепция шаха (и мата) кажется очевидной людям знакомым с Шахматами с детства, но так ли она проста на самом деле? После лёгкой разминки с превращениями фигур, я предлагаю заняться действительно сложными вопросами.
+25
How to prepare TCP
8 min
57KTutorial

Когда кому-то или чему-то становится плохо, то требуется нечто большее, чем просто констатация данного факта.
+26
Lock-free структуры данных. Concurrent maps: skip list
6 min
32K
В предыдущих статьях (раз, два) мы рассматривали классический hash map с хеш-таблицей и списком коллизий. Был построен lock-free ordered list, который послужил нам основой для lock-free hash map.
К сожалению, списки характеризуются линейной сложностью поиска
O(N)
, где N
— число элементов в списке, так что наш алгоритм lock-free ordered list сам по себе представляет небольшой интерес при больших N
.Или все же представляет?..
+36
Трансляция видео с Raspberry Pi
4 min
82KНа так давно я стал счастливым обладателем Raspberry Pi. С тех пор эксперименты не прекращаются. Сейчас балуюсь с камерой. В связи с этим захотелось реализовать трансляцию. Надеюсь, данная статья будет полезной таким же новичкам, как я.

Есть несколько способов разной степени сложности организовать трансляцию видео с камеры Raspberry Pi. Всё зависит от того, где именно вам необходимо принимать транслируемое. Рассмотрим некоторые из вариантов, двигаясь от простого к более сложному.

Есть несколько способов разной степени сложности организовать трансляцию видео с камеры Raspberry Pi. Всё зависит от того, где именно вам необходимо принимать транслируемое. Рассмотрим некоторые из вариантов, двигаясь от простого к более сложному.
+14
Let's Lab. IS-IS routing protocol. Часть 2
2 min
13KTutorial
Привет, Хабр!
Концепции и правила! Они окружают нас повсюду. Что употреблять в пищу, как переходить дорогу, почему не стоит облизывать лягушек и как перекладывать пакеты, если ты маршрутизатор. Очень много всяких штук приходится держать в голове сетевому инженеру. Порой и не поймёшь, так ли тебе надо знать все типы LSA в OSPF, по какому порту строятся TCP сессии в BGP, и так ли важно каждый день узнавать что-то новое, при этом, не забывая старое.
Так или иначе, переходить к практике рано, пока нет понимания теории. В выпуске будет очень много концепций, которые я постараюсь вам объяснить. Всю воду и историю я слил в первый выпуск. А данный выпуск будет состоять из двух секций, в первой из которых я подробно расскажу о топологиях с IS-IS. Вторая секция будет посвящена данным, которыми обмениваются маршрутизаторы в IS-IS.
И вот о чём пойдёт речь:
Тяжко ли быть маршрутизатором с OSPF или IS-IS на борту?
Как OSPF и IS-IS строят топологию?
L1, L2, L1/L2 маршрутизаторы и куда их пристроить.
Что такое Partial route calculation и как работает ISPF?
Зачем нам куча Area, и так ли они важны?
Нужен ли в IS-IS virtual link?
Поменять номер Area без downtime?
Почему IS-IS называют L2-протоколом?
Бабушка, а зачем тебе такое больше MTU?
Что такое PDU, и какими они бывают в IS-IS?
Почему я так люблю Overload bit?
И как запихнуть в OSI-протокол ip-префиксы и чизбургер?
В следующем выпуске больше веселья. Даёшь командную строку!
Под катом нет текстовой статьи. Только ссылки на литературу и источники.
Концепции и правила! Они окружают нас повсюду. Что употреблять в пищу, как переходить дорогу, почему не стоит облизывать лягушек и как перекладывать пакеты, если ты маршрутизатор. Очень много всяких штук приходится держать в голове сетевому инженеру. Порой и не поймёшь, так ли тебе надо знать все типы LSA в OSPF, по какому порту строятся TCP сессии в BGP, и так ли важно каждый день узнавать что-то новое, при этом, не забывая старое.
Так или иначе, переходить к практике рано, пока нет понимания теории. В выпуске будет очень много концепций, которые я постараюсь вам объяснить. Всю воду и историю я слил в первый выпуск. А данный выпуск будет состоять из двух секций, в первой из которых я подробно расскажу о топологиях с IS-IS. Вторая секция будет посвящена данным, которыми обмениваются маршрутизаторы в IS-IS.
И вот о чём пойдёт речь:
Тяжко ли быть маршрутизатором с OSPF или IS-IS на борту?
Как OSPF и IS-IS строят топологию?
L1, L2, L1/L2 маршрутизаторы и куда их пристроить.
Что такое Partial route calculation и как работает ISPF?
Зачем нам куча Area, и так ли они важны?
Нужен ли в IS-IS virtual link?
Поменять номер Area без downtime?
Почему IS-IS называют L2-протоколом?
Бабушка, а зачем тебе такое больше MTU?
Что такое PDU, и какими они бывают в IS-IS?
Почему я так люблю Overload bit?
И как запихнуть в OSI-протокол ip-префиксы и чизбургер?
В следующем выпуске больше веселья. Даёшь командную строку!
Под катом нет текстовой статьи. Только ссылки на литературу и источники.
+15
Занимательная математика в Hearthstone
8 min
57KЯ любитель популярной компьютерной карточной игры Hearthstone, разработанной компанией Blizzard Entertainment. Однажды я задался вопросом: «Можно ли исходя только из правил, описывающих динамику переходов игрока между уровнями при проигрыше\выигрыше партии, получить статистику распределения игроков по достигнутому ими уровню?»

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

Несмотря на то, что в сети есть огромное количество сайтов и wiki, посвящённых Hearthstone, поверхностный поиск результатов не дал. На глубокий поиск было жаль времени, поэтому я решил задачу «на коленке». Полагаю, это решение может стать темой для занятия в школьном математическом кружке.
+22
В поисках идеального мониторинга
12 min
78KВ этой небольшой статье я хотел бы рассказать о средствах мониторинга, использующихся для анализа работы DWH нашего банка. Статья будет интересна всем, кого не устраивают существующие готовые системы мониторинга и кого посещали мысли собрать таковую «под себя» из отдельных кусочков. Большое внимание в статье уделяется дашборду Grafana, который, по моему мнению, незаслуженно обделён вниманием на Хабре. По большинству компонентов системы мониторинга будет вкратце рассмотрен процесс инсталяции (под RedHat).

Тёплый ламповый дашборд

Тёплый ламповый дашборд
+26
Как я покупал квартиру
11 min
62KЯ хотел написать статью про линейную регрессию, но потом подумал, да ну её, лучше куплю квартиру. И пошёл искать, что предлагают. А предлагают, как оказалось, много чего. В подходящий мне ценовой диапозон попало больше 500 квартир. И что, мне теперь все это просматривать? Ну нееет, программист я в конце концов или не программист. Надо это дело как-то автоматизировать.
+265
Мощь Scapy
7 min
109KScapy — инструмент создания и работы с сетевыми пакетами. Программа написана на языке python, автор Philippe Biondi. Познакомиться с основным функционалам можно здесь. Scapy — универсальный, поистине мощный инструмент для работы с сетью и проведения исследований в области информационной безопасности. В статье я попытаюсь заинтересовать Вас использовать scapy в своей работе/проектах. Думаю, что лучше всего этого можно добиться, показав на примерах основные преимущества scapy.
В качестве примеров я возьму простые и наглядные задачи, которые можно решить средствами scapy. Основным направлением будет формирование пакетов для реализации того или иного вида атак.
В качестве примеров я возьму простые и наглядные задачи, которые можно решить средствами scapy. Основным направлением будет формирование пакетов для реализации того или иного вида атак.
+19
Практика функционального программирования на JavaScript с использованием Ramda
3 min
21KTranslation
Мы в rangle.io давно увлекаемся функциональным программированием, и уже опробовали Underscore и Lodash. Но недавно мы наткнулись на библиотеку Ramda, которая на первый взгляд похожа на Underscore, но отличается в небольшой, но важной области. Ramda предлагает примерно тот же набор методов, что и Underscore, но так организовывает работу с ними, что функциональная композиция становится легче.
Разница между Ramda и Underscore – в двух ключевых местах – каррирование и композиция.
Разница между Ramda и Underscore – в двух ключевых местах – каррирование и композиция.
+30
Сайт с нуля на полном стеке БЭМ-технологий. Методология Яндекса
29 min
108KTutorial
На прошлой неделе BBC рассказала, что для новой версии главной страницы использовала методологию БЭМ, созданную в Яндексе. По такому случаю мы решили поднять материалы мастер-класса «Разрабатываем сайт с нуля на полном стеке БЭМ-технологий» и рассказать вам, как начать использовать полный стек БЭМ-технологий в своих проектах.
БЭМ упрощает разработку сайтов, которые нужно быстро создавать и долго поддерживать. Эту технологию используют во фронтенде почти всех сервисов Яндекса, и она уже успела обрасти множеством библиотек и инструментов, которыми мы хотим с вами поделиться.

В статье мы расскажем, в чём преимущество вёрстки независимыми блоками и что такое уровни переопределения, познакомимся с готовыми библиотеками блоков и инструментами для автоматизации сборки. Покажем, как разные инструменты — например, autoprefixer, css-препроцессор Stylus или модульная система YModules — упрощают жизнь разработчика и создают по-настоящему удобную платформу, если встроить их в процесс разработки по БЭМ.
На живом примере мы объясним, в чём польза декларативного подхода, когда одни и те же идеи можно использовать как для CSS, так и для JavaScript. Отдельно остановимся на декларативных шаблонах BEMHTML и BEMTREE, которые позволяют преобразовывать данные в БЭМ-дерево, описанное в формате BEMJSON и, затем в HTML. Рассмотрим в деталях, как написать серверную часть приложения по БЭМ-методологии.
БЭМ упрощает разработку сайтов, которые нужно быстро создавать и долго поддерживать. Эту технологию используют во фронтенде почти всех сервисов Яндекса, и она уже успела обрасти множеством библиотек и инструментов, которыми мы хотим с вами поделиться.

В статье мы расскажем, в чём преимущество вёрстки независимыми блоками и что такое уровни переопределения, познакомимся с готовыми библиотеками блоков и инструментами для автоматизации сборки. Покажем, как разные инструменты — например, autoprefixer, css-препроцессор Stylus или модульная система YModules — упрощают жизнь разработчика и создают по-настоящему удобную платформу, если встроить их в процесс разработки по БЭМ.
На живом примере мы объясним, в чём польза декларативного подхода, когда одни и те же идеи можно использовать как для CSS, так и для JavaScript. Отдельно остановимся на декларативных шаблонах BEMHTML и BEMTREE, которые позволяют преобразовывать данные в БЭМ-дерево, описанное в формате BEMJSON и, затем в HTML. Рассмотрим в деталях, как написать серверную часть приложения по БЭМ-методологии.
+61
Flask. Наполняем «флягу» функционалом
7 min
47KПредисловие
В прошлом году решил для себя вплотную познакомиться c Python, а в последствии перебраться на него с PHP. На данный момент моя стезя — веб-разработка, а потому осваивать новый язык я начал именно со стороны веба, в частности, с обзора доступных фреймворков и проектов на них. Познакомившись с возможностями TurboGears, web2py, Django, я всё таки поддался «тренду» и погрузился в мир Django.
На протяжении почти года я честно пытался подружиться с ним. Написал несколько простеньких проектов, но монструозность фреймворка отпугивала, обилие «батареек» путало выбор, а с некоторыми ограничениями не хотелось мириться. Душа требовала лаконичности и однозначности, что в конечном счете привело меня к знакомству с Flask. Изучив документацию по фреймворку и смежным проектам (Jinja2, Werkzeug), я проникся идеологией и стал вплотную изучать фреймворк.
Flask позиционируется как расширяемый микрофреймворк. Это означает наличие лишь необходимого минимума функционала, но в то же время возможность добавить оный посредством расширений до требуемого проекту уровня.
Сей эпос — это мой опыт под использованию Flask и расширений для него, а точнее, попытка собрать воедино и на русском то, что может пригодиться при создании проектов практически любого уровня.
+24
Чтение старых статей Хабра с картинками
3 min
27KTutorial

Новичок на Хабре недоуменно спросит: «Как так — нет картинок? Есть же habrastorage.org!». Да, есть. Но был он не всегда, а автоматически на него перезаливаться картинки и вовсе стали только в июле 2013-го. А до этого картинки хостились где-попало — на всяких радикалах, имейджхаках, даже на дропбокс, бывало, люди наивно пытались что-то выкладывать. В итоге мы имеем на Хабре кучу статей 2006-2013 года с отсутствующими картинками.
Давайте это пофиксим!
+64
Качество сетей передачи данных. Транспорт
8 min
31K
В предыдущей статье были затронуты базовые метрики качества сетей и систем передачи данных. Также было обещано написать про то, как все работает изнутри. И намеренно не было упомянуто про качество среды передачи данных и ее характеристиках. Надеюсь, что новая статья даст ответы на эти вопросы.
+11
Information
- Rating
- Does not participate
- Registered
- Activity