
Валера Рябошапко @valeriumread-only
User
Памяти Алексея Яковлевича Червоненкиса
2 min
74KЭтот текст памяти Алексея Яковлевича написал Аркадий Волож, сооснователь и генеральный директор Яндекса.
22 сентября трагически погиб Алексей Яковлевич Червоненкис — ведущий сотрудник Института проблем управления РАН, профессор МФТИ и Лондонского университета, преподаватель Школы анализа данных, человек, который внёс огромный вклад в теорию машинного обучения.

У науки об обучении машин до сих пор было три периода: докомпьютерный, компьютерный и современный период больших данных.
Первой великой работой Червоненкиса и Вапника была вот эта статья, вышедшая в 1971 году. Теория сходимости частот к их вероятностям определила развитие этой части науки на несколько десятков лет вперед.
Это был период «теоретического» развития машинного обучения. Тогда считать можно было только на каких-нибудь М-200 или, в хорошем случае, на БЭСМ-ах, поэтому о «широком применении в народном хозяйстве» речи не шло. Но различать цели в воздухе, например, или выискивать шумы на эхо-кардиограммах это уже помогало.
Потом наступил второй этап науки об обучении машин, компьютерный. В 1990-е люди научились, например, довольно хорошо распознавать и оцифровывать тексты (в том числе рукописные) или очищать почту от спама. Половина из этих методов работала на знаменитом SVM (Support Vector Machine, метод опорных векторов), придуманном в начале 1990-х Червоненкисом и Вапником (VC-Dimension = Vapnik-Chervonenkis dimension). В середине 2000-х в любой известной конторе работали на SVM-е — и у нас, и в Яху, и в Гугле, и в Амазоне, и в Нетфликсе. SVM описан в любом учебнике по нашей теме.
22 сентября трагически погиб Алексей Яковлевич Червоненкис — ведущий сотрудник Института проблем управления РАН, профессор МФТИ и Лондонского университета, преподаватель Школы анализа данных, человек, который внёс огромный вклад в теорию машинного обучения.

У науки об обучении машин до сих пор было три периода: докомпьютерный, компьютерный и современный период больших данных.
Первой великой работой Червоненкиса и Вапника была вот эта статья, вышедшая в 1971 году. Теория сходимости частот к их вероятностям определила развитие этой части науки на несколько десятков лет вперед.
Это был период «теоретического» развития машинного обучения. Тогда считать можно было только на каких-нибудь М-200 или, в хорошем случае, на БЭСМ-ах, поэтому о «широком применении в народном хозяйстве» речи не шло. Но различать цели в воздухе, например, или выискивать шумы на эхо-кардиограммах это уже помогало.
Потом наступил второй этап науки об обучении машин, компьютерный. В 1990-е люди научились, например, довольно хорошо распознавать и оцифровывать тексты (в том числе рукописные) или очищать почту от спама. Половина из этих методов работала на знаменитом SVM (Support Vector Machine, метод опорных векторов), придуманном в начале 1990-х Червоненкисом и Вапником (VC-Dimension = Vapnik-Chervonenkis dimension). В середине 2000-х в любой известной конторе работали на SVM-е — и у нас, и в Яху, и в Гугле, и в Амазоне, и в Нетфликсе. SVM описан в любом учебнике по нашей теме.
+176
Как мы прокладывали кабель под дном реки
3 min
119K
Привет, Хабр. Наверное, многие из вас уже видели наш предыдущий материал о постройке базовой станции с вышкой на крыше здания. И сегодня мы хотим рассказать совсем о другом виде работ, которые нам недавно довелось провести. Речь пойдёт о покорении двух стихий — земли и, отчасти, воды. А точнее, о том, как мы прокладывали под дном реки оптоволоконный кабель на участке длиной в 980 метров.
+141
Поиск файлов по содержимому из терминала
1 min
114KДумаю, многие не раз сталкивались с такой проблемой, как необходимость найти в папке с файлами (а порой и подпапками, в которых тоже неплохо бы поискать) файл, зная кусочек его текста (ну, или догадываясь о нем). Я тоже много раз спотыкался об эту необходимость и вот, наконец, собрался и написал небольшой скрипт на bash, выполняющий эту задачу.


-29
Kickstarter: сумка-холодильник получила $10,6 млн, побив рекорд часов Pebble
2 min
22KЛидерство смарт-часов Pebble, как чемпиона по финансированию на краудфандинговой площадке Kickstarter, подошло к концу. И сверг их с этой позиции кулер. Да, обычная сумка-холодильник. Вернее, совсем не обычная, а с хай-тек-уклоном.

Coolest Cooler не только сохраняет еду и напитки в холоде, но и дробит лед, как блендер, что гарантирует вам всегда холодный коктейль в походе на природу, работает в качестве акустической системы с Bluetouth-интерфейсом и заряжает все ваши мобильные устройства через USB-порт. И это далеко не все, что он умеет.

Coolest Cooler не только сохраняет еду и напитки в холоде, но и дробит лед, как блендер, что гарантирует вам всегда холодный коктейль в походе на природу, работает в качестве акустической системы с Bluetouth-интерфейсом и заряжает все ваши мобильные устройства через USB-порт. И это далеко не все, что он умеет.
+18
Папа, а почему на ноль делить нельзя?
6 min
238KTutorial
Моя трёхлетняя дочка София в последнее время частенько упоминает «ноль», например, в таком контексте:
Т.е. ощущение отрицательных чисел и нейтральности нуля уже имеет, о как. Скоро поинтересуется: почему же это на ноль делить нельзя?
И вот решил я простыми словами записать всё, что я ещё помню про деление на ноль и всё такое.
— Соня, вот ты вроде сначала не послушалась, а затем послушалась, что же получается?..
— Ну… ноль!
Т.е. ощущение отрицательных чисел и нейтральности нуля уже имеет, о как. Скоро поинтересуется: почему же это на ноль делить нельзя?
И вот решил я простыми словами записать всё, что я ещё помню про деление на ноль и всё такое.
+121
Моя «Ласточка»
2 min
119KПролог
Решил я подарить своему другу сисадмину на день рождения часы из жёсткого диска, о которых прочитал на хабре. Попытки создать нормальное, надёжное устройство не к чему не привели. Как я понял, у всех одна и та же проблема с балансировкой вращающегося механизма. Я решил уничтожить эту проблему на корню.

Под катом несколько фоток и видео созданного девайса плюс описание работы. Если тема будет интересна — обязательно напишу о разработке и покажу исходники, когда их причешу.
+67
Om One: левитирующий Bluetooth-динамик
2 min
40K
На рынке сейчас представлено много беспроводных динамиков, но большинство моделей практически ничем не отличается, да и дизайн оставляет желать лучшего. Правда, на днях появилось одно устройство, которое сильно выбивается из ряда себе подобных.
Это устройство — беспроводный динамик Om One, который поставляется вместе с док-станцией.
+30
Настройка отступов в VIM
2 min
75KПроцесс смены Komodo IDE на VIM я начал с изучения всевозможных туториалов и хау ту, однако, что удивительно, ни в одном из них мне не удалось встретить человеческого описания процесса настройки отступов. В одних предлагали регулировать ширину отступа с помощью опции tabstop, в других — с помощью softtabstop, в третьих — выставлять и то и другое и shiftwidth в придачу. После нескольких часов экспериментов с настройками я понял, что единственный способ не только заставить все работать, но и понять, почему оно работает — читать документацию. Своими «открытиями» я и хочу с вами поделиться.
+31
Отладка сложных веб-приложений — эффективная багодробилка на production-серверах
12 min
26KВсем привет!
Сегодня расскажу, как на боевых серверах во время нагрузки, в пыли и грязи, эффективно отлавливать узкие места в производительности больших веб-приложений на PHP, а также искать и устранять «нестандартные» ошибки. Многие из описанных техник мы с успехом применяем на нашем облачном сервисе «Битрикс24».
Информация, надеюсь, пригодится системным администраторам и разработчикам, обслуживающим сложные веб-проекты, а также менеджерам, которые хотят выстроить эффективный и быстрый процесс поиска и устранения узких мест и ошибок проектов на PHP.

Сегодня расскажу, как на боевых серверах во время нагрузки, в пыли и грязи, эффективно отлавливать узкие места в производительности больших веб-приложений на PHP, а также искать и устранять «нестандартные» ошибки. Многие из описанных техник мы с успехом применяем на нашем облачном сервисе «Битрикс24».
Информация, надеюсь, пригодится системным администраторам и разработчикам, обслуживающим сложные веб-проекты, а также менеджерам, которые хотят выстроить эффективный и быстрый процесс поиска и устранения узких мест и ошибок проектов на PHP.

+73
Маленькая админская история: как поймать OOM
5 min
31KАдминская загадка: На сервере произошло три oom kill'а, а мониторинг сказал только про два. Почему?
В logstash присылаются логи со всех серверов. Он складывает их в elasticsearch. В конфиге logstash'а настроена реакция на всякие странные сообщения, которые свидетельствуют о проблемах. Если сообщение появляется, присылается event мониторингу (shinken), который разными методами начинает беспокоить админов.
Помимо syslog'ов, которые шлют сообщения от большинства приложений, у нас настроена ещё и отправка netconsole от всех ядер. Сама технология проста до невозможности — ядро помимо dmesg'а посылает сообщения в виде UDP-датаграмм на указанный IP и mac-адрес. MAC-адрес нужен потому, что netconsole очень низкоуровневая и заниматься разгадыванием «как из IP сделать MAC» (то есть ARP) не собирается. Благодаря низкоуровневости сообщения проходят даже в ситуациях полного катаклизма. Например, если программный коммутатор перестал работать (и сеть недоступна), сообщения всё равно будут посылаться. Более того, они будут посылаться, даже если в iptables сказано -j drop_vsyo_nafig. И, самое главное и ценное, эти сообщения успешно будут отправлены, если дисковая подсистема полностью не работает. То есть для post-mortem исследований «что именно случилось с зависшим сервером» — самое оно.
Очевидным кандидатом в «плохие» сообщения является сообщение от oom-killer'а.
Итак, возвращаемся к загадке. Идёт пусконаладка, предпродакшен, как, вдруг, апач (точнее, wsgi-приложение) насасывается данных до неприличия, и его прибивают со словами «go be fat somewhere else». Админам приходит сообщение. Казалось бы всё хорошо (ну, в админском смысле «хорошо»). Но…
Случилось три oom'а, сообщения пришли о двух. Мониторинг в порядке, netconsole в порядке. Загадка? Проблемы? Симптомы таинственной неведомой фигни? Звать придворного шамана с бубном?
Конфигурация
Для мониторинга всего у нас настроена связка ganglia-shinken-logstash-elasticsearch-kibana. Полное описание довольно обширно, так что ограничусь только частью, имеющей отношение к проблеме.В logstash присылаются логи со всех серверов. Он складывает их в elasticsearch. В конфиге logstash'а настроена реакция на всякие странные сообщения, которые свидетельствуют о проблемах. Если сообщение появляется, присылается event мониторингу (shinken), который разными методами начинает беспокоить админов.
Помимо syslog'ов, которые шлют сообщения от большинства приложений, у нас настроена ещё и отправка netconsole от всех ядер. Сама технология проста до невозможности — ядро помимо dmesg'а посылает сообщения в виде UDP-датаграмм на указанный IP и mac-адрес. MAC-адрес нужен потому, что netconsole очень низкоуровневая и заниматься разгадыванием «как из IP сделать MAC» (то есть ARP) не собирается. Благодаря низкоуровневости сообщения проходят даже в ситуациях полного катаклизма. Например, если программный коммутатор перестал работать (и сеть недоступна), сообщения всё равно будут посылаться. Более того, они будут посылаться, даже если в iptables сказано -j drop_vsyo_nafig. И, самое главное и ценное, эти сообщения успешно будут отправлены, если дисковая подсистема полностью не работает. То есть для post-mortem исследований «что именно случилось с зависшим сервером» — самое оно.
Очевидным кандидатом в «плохие» сообщения является сообщение от oom-killer'а.
[517935.914380] ntpd invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0 [517935.914730] Call Trace: [517935.914807] [<ffffffff816e14ce>] dump_header+0x83/0xbb [517935.914877] [<ffffffff816e155b>] oom_kill_process.part.6+0x55/0x2cf ... с финальным торжествующим: [517935.951044] Out of memory: Kill process 4550 (apache2) score 247 or sacrifice child [517935.951203] Killed process 4550 (apache2) total-vm:2610268kB, anon-rss:2012696kB, file-rss:3928kB
Итак, возвращаемся к загадке. Идёт пусконаладка, предпродакшен, как, вдруг, апач (точнее, wsgi-приложение) насасывается данных до неприличия, и его прибивают со словами «go be fat somewhere else». Админам приходит сообщение. Казалось бы всё хорошо (ну, в админском смысле «хорошо»). Но…
Случилось три oom'а, сообщения пришли о двух. Мониторинг в порядке, netconsole в порядке. Загадка? Проблемы? Симптомы таинственной неведомой фигни? Звать придворного шамана с бубном?
+42
Флаги /proc/cpuinfo для архитектуры x86
3 min
26K
Однако очень мало линуксоидов воспринимают всерьез самую длинную строку вывода — так называемые flags, а еще меньше знают, как расшифровывается тот или иной параметр, поскольку зачастую флаги имеют дикие и непонятные имена. Я постараюсь описать большинство распознаваемых флагов, специфичных для архитектуры x86.
+11
Оптимизация расходов Yota: попытка #3
5 min
30KПривет, хабр!
Наступило лето и очень многие уезжают из города. Кто-то на время отпуска, а кто-то и на все лето (если работа позволяет). Но одна из главных проблем за городом (для всех людей, так или иначе связанных с IT) — отсутствие нормального проводного быстрого интернета. Но это частично решается благодаря существованию LTE-сетей.
В моем регионе крупных провайдеров LTE всего два: Мегафон и Yota. Мегафон существенно дешевле, но у него есть одна крайне неприятная особенность: ограничение в 20гб трафика в месяц даже на максимальном тарифе.
Поэтому выбор оператора, на мой взгляд, очевиден. Но все же платить за 20 мегабит в два раза больше чем за 100 дома — сомнительное удовольствие. Но при этом, в отличие от других операторов, Yota позволяет в в любой момент бесплатно изменять текущий тариф в личном кабинете с перерасчетом оплаченного времени. Нужна скорость — выкручиваем ползунок на максимум. Нет? Тогда можно снизить скорость и платить меньше. Ну как тут можно удержаться и не автоматизировать этот процесс?
На хабре уже были статьи (раз, два), описывающие попытки йотоводов-автоматизаторов. Однако, в силу некоторых особенностей, их творения мне не подошли и пришлось написать свой, существенно отличающийся, велосипедОднако, в силу некоторых особенностей, их творения мне не подошли и пришлось написать свой, существенно отличающийся, велосипед.
Наступило лето и очень многие уезжают из города. Кто-то на время отпуска, а кто-то и на все лето (если работа позволяет). Но одна из главных проблем за городом (для всех людей, так или иначе связанных с IT) — отсутствие нормального проводного быстрого интернета. Но это частично решается благодаря существованию LTE-сетей.
В моем регионе крупных провайдеров LTE всего два: Мегафон и Yota. Мегафон существенно дешевле, но у него есть одна крайне неприятная особенность: ограничение в 20гб трафика в месяц даже на максимальном тарифе.
Поэтому выбор оператора, на мой взгляд, очевиден. Но все же платить за 20 мегабит в два раза больше чем за 100 дома — сомнительное удовольствие. Но при этом, в отличие от других операторов, Yota позволяет в в любой момент бесплатно изменять текущий тариф в личном кабинете с перерасчетом оплаченного времени. Нужна скорость — выкручиваем ползунок на максимум. Нет? Тогда можно снизить скорость и платить меньше. Ну как тут можно удержаться и не автоматизировать этот процесс?
На хабре уже были статьи (раз, два), описывающие попытки йотоводов-автоматизаторов. Однако, в силу некоторых особенностей, их творения мне не подошли и пришлось написать свой, существенно отличающийся, велосипедОднако, в силу некоторых особенностей, их творения мне не подошли и пришлось написать свой, существенно отличающийся, велосипед.
+28
10 занимательных задач
5 min
101K
Иллюстрация к последней задаче.
Существуют задачи с простыми и, казалось бы, очевидными решениями, которые, однако, трудно найти. При их решении опасно полагаться на интуицию, ведь правильный ответ зачастую совсем не совпадает с тем, который она подсказывает. В данной статье я предлагаю подборку из 10 таких заданий, упорядоченных по возрастанию сложности; их решения убраны под спойлер. Для получения верных ответов не нужно обладать какими-то специальными знаниями, достаточно лишь находчивости и знания школьной программы.
+21
Как я возил робота, чуть не поседел и залил кровью серверную
13 min
213KЭто история одного из самых запомнившихся случаев в моей инженерной практике. По понятным причинам я поменял имена, места и некоторые узнаваемые детали, чтобы нельзя было точно определить заказчика и других участников истории.

Вот так выглядит ленточное хранилище (наше было поменьше) и библиотечный робот (наш такой же). Китаец в комплект не входит.
Помню, стояли последние дни ноября. Уже думая об окончании рабочего дня, я планировал свой вечер, когда вдруг мне сообщили, что в славном сибирском городе N у нашего заказчика сломалась ленточная библиотека. Запчасть сразу же отправили транспортной компанией, но вот уже 3 дня, как она все еще была в пути. Транспортная компания невнятно объяснялась и хмыкала в телефон, а заказчик стал не в шутку нервничать. Прогнозы были неопределенные, поэтому было принято решение везти еще одну запчасть своими силами на самолете. Сотрудник склада вручил мне габаритную коробку весом килограмм десять, обклеенную штрих-кодами и стикерами, и радостно хлопнул меня по плечу со словами: «Только не вздумай в багаж сдавать — помнут».
Коробка меня, безусловно, беспокоила, но не меньшее беспокойство мне внушал пакет с сухим молоком, который в последний момент мне вручил менеджер проекта. «У них там какие-то траблы с молочкой сейчас… из-за непогоды что ли… ребята местные просили 2 кг им привезти. Тебе ж не сложно?» — сказал он. По выражению его лица и характерному жесту ладони, как бы прикрывавшей мне рот, было ясно, как он сейчас хотел, чтобы я оказался сговорчивым или даже немым.

Вот так выглядит ленточное хранилище (наше было поменьше) и библиотечный робот (наш такой же). Китаец в комплект не входит.
Часть 1. Коробка
Помню, стояли последние дни ноября. Уже думая об окончании рабочего дня, я планировал свой вечер, когда вдруг мне сообщили, что в славном сибирском городе N у нашего заказчика сломалась ленточная библиотека. Запчасть сразу же отправили транспортной компанией, но вот уже 3 дня, как она все еще была в пути. Транспортная компания невнятно объяснялась и хмыкала в телефон, а заказчик стал не в шутку нервничать. Прогнозы были неопределенные, поэтому было принято решение везти еще одну запчасть своими силами на самолете. Сотрудник склада вручил мне габаритную коробку весом килограмм десять, обклеенную штрих-кодами и стикерами, и радостно хлопнул меня по плечу со словами: «Только не вздумай в багаж сдавать — помнут».
Коробка меня, безусловно, беспокоила, но не меньшее беспокойство мне внушал пакет с сухим молоком, который в последний момент мне вручил менеджер проекта. «У них там какие-то траблы с молочкой сейчас… из-за непогоды что ли… ребята местные просили 2 кг им привезти. Тебе ж не сложно?» — сказал он. По выражению его лица и характерному жесту ладони, как бы прикрывавшей мне рот, было ясно, как он сейчас хотел, чтобы я оказался сговорчивым или даже немым.
+486
Интеграция GoogleDocs с Redmine
8 min
22KTutorial

Введение
Если вы завязаны в разработке, то так или иначе сталкивались с баг-трекерными системами. В наши дни обойтись без них в процессе разработки программного обеспечения не просто трудно, а невозможно. Естественно, и нас это не обошло стороной. В компании мы пользуемся системой Redmine. Тут есть все, что нам необходимо:
— Отслеживание состояния задач
— Группировка задач в трекере
— Внутрипроектное обсуждение при необходимости
— Ведение документации (хоть и возможности весьма ограничены)
— Учет времени сотрудников и видов их деятельности
Все эти данные собираются не просто так. Каждая из перечисленных составляющих так или иначе включены во внутренние метрики компании, которые позволяют оценивать эффективность производственного процесса и анализировать слабые места проектов, чтобы не повторять ошибок и в следующий раз сделать лучше.
+15
Наглядный обзор оптических передатчиков
8 min
269KЧасто у знакомых системных администраторов, не сталкивавшихся раньше с оптическим волокном, возникают вопросы, как и какое оборудование необходимо для организации соединения. Немного почитав, становится понятно, что нужен оптический трансивер. В этой обзорной статье я напишу основные характеристики оптических модулей для приема/передачи информации, расскажу основные моменты, связанные с их использованием, и приложу много наглядных изображений с ними. Осторожно, под катом много трафика, делал кучу своих собственных фотографий.


+84
Интересная задачка для интервью, карринг и частичное применение функции
3 min
81KХожу по job interview. Где-то скучно, где-то весело. Где-то интересно. На одном из таких меня попросили написать функцию, которая умеет складывать два числа. Я написал:
А если, говорят, сигнатура функции должна быть типа такой: add(num1)(num2)? Не вопрос, говорю. Думая, что хитрый буржуин хочет проверить, знаю ли я про то, что можно возвращать функции из функций, пишу вот такое:
it ('should add two numbers', function () { var add = function (a,b) { return a + b; }; assert.equal(add(2,3), 5); });
А если, говорят, сигнатура функции должна быть типа такой: add(num1)(num2)? Не вопрос, говорю. Думая, что хитрый буржуин хочет проверить, знаю ли я про то, что можно возвращать функции из функций, пишу вот такое:
it ('should be called like add(num1)(num2)', function () { var add = function (a) { return function (b) { return a + b; }; }; assert.equal(add(2)(3), 5); });
+158
Unit-тестирование от начинающего начинающим
5 min
79KЗдравствуйте.
На написание статьи меня сподвигнул этот пост. В нём приведено описание инструментов и некоторая теоретическая информация.
Сам я только начинаю разбираться в unit-тестировании и тестировании вообще, поэтому решил поделиться некоторой информацией касательно этого дела. А также систематизировать свои знания и навыки. Далее постараюсь объяснить процесс тестирования по шагам простым обывательским языком, так как нигде в интернете не нашёл разжёванного описания, по шагам так сказать. Кому интересно и кто хочет попробовать всё-таки разобраться, добро пожаловать.
На написание статьи меня сподвигнул этот пост. В нём приведено описание инструментов и некоторая теоретическая информация.
Сам я только начинаю разбираться в unit-тестировании и тестировании вообще, поэтому решил поделиться некоторой информацией касательно этого дела. А также систематизировать свои знания и навыки. Далее постараюсь объяснить процесс тестирования по шагам простым обывательским языком, так как нигде в интернете не нашёл разжёванного описания, по шагам так сказать. Кому интересно и кто хочет попробовать всё-таки разобраться, добро пожаловать.
+33
Легкий способ начать тестировать
4 min
50KЕсли вы PHP-разработчик, и по разным обстоятельствам тесты для своих приложений не пишете, то эта статья для вас. В ней я постараюсь вкратце показать с чего начать и что делать, чтобы написание тестов приносило вам радость, а вашему приложению стабильность.
Итак, первый совет. Забудьте всё что вы знаете о юнит-тестах. Швырните табуреткой в человека, который сказал вам, что без них не обойтись. Попробуем разобраться, в каких случаях нужно их использовать, а в каких — нецелесообразно.
Итак, первый совет. Забудьте всё что вы знаете о юнит-тестах. Швырните табуреткой в человека, который сказал вам, что без них не обойтись. Попробуем разобраться, в каких случаях нужно их использовать, а в каких — нецелесообразно.
+39
Information
- Rating
- Does not participate
- Location
- Железнодорожный (Московск.), Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity