Архив ноября 2018

Компьютерные серверы подверглись несанкционированной кибератаке

https://ria.ru/incidents/20181128/1533721369.html

Чуваки, а вам не кажется, что “компьютерные серверы”, торчащие голой жопой в интернет, в 2018 году делать как-то не очень модно?

UPD Подоспело продолжение:

https://www.mskagency.ru/materials/2840255

Интересно, они поймали вирус-шифровальщик (приползает на машины с Windows и открытым RDP на следующие сутки) или обычный спам серии “I have your password”?

О смягчении нравов

Технический университет Дармштадта, середина семестра. На лекции по “системам обработки естественного языка” (краткий пересказ документации к библиотеке NLTK) рассматривается вот такой пример:

task64

В аудитории присутствует где-то десять будущих компьютерных филологов и полторы сотни будущих компьютерных программистов. С филологами ладно, в конце концов, вся эволюция вычислительной техники была направлена на то, чтобы даже филолог мог решать свои профессиональные задачи (”Есть ли в русском языке слово, содержащее три е подряд?”) с помощью компьютера – а вот программиста, который бы предложил вот так искать слова, соответствующие последовательности нажатий кнопок на клавиатуре мобильного телефона, 20 лет назад просто избили бы ногами в подворотне. Десять лет назад все обошлось бы косым взглядом с легким налетом “пассивной агрессии”. Сейчас такое можно показывать студентам и никто, кажется, не считает этот подход зазорным.

Кто про что, а я снова про time series

Почитал тут всякого про хранение временных рядов (time series), послушал подкаст про Akumuli и пощупал ручками Influx DB. Что хочу сказать?

Почти во всех проектах такого рода первый же рассматриваемый “юзкейс” – это мониторинг серверов (с неизменным киданием говна в сторону RRDtool). В рамках того же подхода довольно неплохо чувствуют себя всякие “классические” SCADA-системы и модный IoT (провести границу между ними уже проблематично). А вот когда начинается что-то нестандартное (с точки зрения разработчиков) – то тут “тушите свет”.

Я вот, например, ругался на то, что datetime в SQL неспособен хранить данные с “разрешением” меньше секунды. Любая нормальная TSDB, конечно, поддерживает запись временных меток с хорошей дискретностью – милли-, микро- и даже наносекунды. Но вот возьмем line protocol из Influx DB и попробуем записать несколько подряд идущих значений:

steering,tag1=some,tag2=shit value=1.51 1542646126000000000
steering,tag1=some,tag2=shit value=1.46 1542646126010000000
steering,tag1=some,tag2=shit value=1.40 1542646126020000000
steering,tag1=some,tag2=shit value=1.34 1542646126030000000
steering,tag1=some,tag2=shit value=1.31 1542646126040000000
steering,tag1=some,tag2=shit value=1.28 1542646126050000000
steering,tag1=some,tag2=shit value=1.26 1542646126060000000
steering,tag1=some,tag2=shit value=1.23 1542646126070000000
steering,tag1=some,tag2=shit value=1.20 1542646126080000000
steering,tag1=some,tag2=shit value=1.17 1542646126090000000
steering,tag1=some,tag2=shit value=1.14 1542646126100000000
...ну и так далее

Я взял “живые” данные из автомобильной (точнее, “автосимуляторной”) телеметрии (датчик угла поворота руля) с частотой дискретизации в 100 Гц. Полный набор тегов я писать, конечно же, не хочу – скажу только, что их может быть довольно много. Для записи же каждого значения тут требуется передать аж 60 байт (HTTP API позволяет сэкономить несколько байт из временной метки, но в целом получается примерно столько же). Пусть контролируемых параметров – десяток (это, кстати, довольно мало), а частота оцифровки – все те же 100 Гц – и мы непринужденно получаем требуемую скорость обмена данными аж в 480 кБит/с.

Вроде бы немного в наше время гигабитных каналов и всего такого, и жить с этим в принципе можно – но давайте прикинем, сколько data points влезет в канал со скоростью 1 Гбит/с (Gigabit Ethernet на коленке я еще могу представить). Получится что-то около 2 миллионов в секунду – и это уже попадает в категорию Probably unfeasible (на русский это переводится довольно прикольно – “Возможно, невозможно”) в руководстве по выбору “железа”. Может быть, именно поэтому – как бы вы не пыжились, а пропихнуть в Influx столько данных все равно проблематично – об этом и не задумываются?

Немного больше о совершенно неуместной избыточности и многословности такого рода текстовых форматов подумал автор Akumuli – там хотя бы можно писать наблюдения, относящиеся к одному и тому же моменту, не повторяя всякий раз метку времени и теги. Но блин, я в своей попытке сделать TSDB после трех бутылок пива первым же делом реализовал “наколеночный” бинарный протокол (на основе CoAP – официально это расшифровывается Constrained Applications Protocol, но мне кажется, что Co обозначает Contiki в смысле “из говна и палок”), который позволял писать те самые 2-3 миллиона data points в секунду поверх обычного стомегабитного Ethernet.

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

Про моральные кодексы и все такое

Вот возникает иногда вопрос – а зачем нужны всякие “профессиональные этические кодексы”, когда они состоят в основном из очевидных истин? За ответом можно пройти в комментарии вот сюда:

https://tonsky.livejournal.com/318292.html#comments

и посмотреть на резвящихся кодописов (не “инженеров”, боже упаси!), яростно нарушающих Software Engineering Code of Ethics одним лишь фактом своего существования.

К последнему твиттеросрачу

Как последовательный феминист, скажу: @vasilenkos ошибается. Орать матом можно на мужчин и женщин, белых и негров, скорбных умом и просто безруких; даже одноногих чернокожих небинарных гендерфлюидов материть можно.

Вот на котиков и прочих бессловесных тварей матом орать нельзя.

24/7

Подумалось вот, что 24/7 может значить не только “24 часа в сутки, 7 дней в неделю”, но и “24 дня в месяц, 7 часов в день”.

Я добрый сегодня

Дошел до ближайшей разливайки и купил вкусного пива, поэтому вместо очередной записи “запретите им” будет немного полезных и даже местами добрых советов. А начну с того, что в ЖЖшной френдленте у [info]fritzmorgen увидел доклад Boston Consulting Group про то, как к 2025 году обустроить Россию (да, вот это и называется “внешним управлением”), а у [info]kouzdra – обсуждение учебника Куранта и Роббинса по математике. Ну так вот – раз я добрый, то не буду особо матерно комментировать вот эту картинку за авторством BCG:

competence

Доклад, по большей части, представляет собой обычный набор благоглупостей про “экономику знаний” – и как положено, утверждает, что “все большее проникновение алгоритмов и компьютерных решений будет вести к переориентации потребностей рынка труда на «человеческое в человеке»: творческое начало, культурные аспекты, индивидуальные и коллективные ценности, а также универсальные «компетенции XXI века», которые не смогут компенсировать цифровые технологии” – список этих “универсальных компетенций” представлен на рисунке. Как обычно, пишется что-то про “метапредметное” образование, которое должно развивать вот эти самые “универсальные компетенции”.

“Когнитивные” и “социально-поведенческие” навыки – это, пожалуй, то, что раньше называлось “воспитанием” – а вот про правый нижний угол картинки я бы хотел сказать отдельно. Под заголовком “цифровые навыки” перечислены следующие пункты:

  • программирование
  • разработка приложений
  • проектирование производственных систем
  • обработка и анализ данных

Можно, конечно, поворчать про то, почему эти навыки отнесены к “цифровым”, и что же тогда такое “аналоговые” навыки – но я хочу обратить внимание на то, что немалая часть современных модных “цифровых навыков” – это банальная математика (и чуть-чуть информатики) в объеме программы, скажем, среднего технического вуза, и без ее знания вы проиграете даже няшному котику (который в совершенстве владеет доброй половиной soft skills).

Можно ли понять несложный, в общем-то, учебник по модному нынче “глубокому обучению“, не владея матанализом и линейной алгеброй в объеме хотя бы пары семестров? Читатель, не знающий математики, “сломается” уже на словах “стохастический градиентный спуск”. Не менее модные “большие данные”? По большому счету, их “анализ” сводится к довольно элементарной статистике. В идеале, конечно, не лишним будет понимание, какие данные являются “большими”. Методы вроде Principal Components Analysis? В основе там лежит банальнейшая линейная алгебра.

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

А ведь это все лезет и в “чистую гуманитарщину”. Digital Humanities – слово, конечно, ругательное, и в приличном обществе вызывает снисходительные усмешки – но посмотрите хотя бы картинки отсюда:

dh-pca

https://handbuch.tib.eu/w/DH-Handbuch/Tools#Stilometrische_Textanalyse

Вроде бы предмет называется “компьютерная филология” – но без знания математики остается лишь пользоваться готовыми инструментами (даже без понимания их ограничений), чему по большей части и посвящен остаток главы. Циники от естественных наук уже предлагают гуманитариям заняться p-хакингом – “мы применяли к текстам различные методы анализа, пока на тридцатом заходе не нашли доказывающий, что Слово о полку Игореве написано Сократом, p < 0.05" (впрочем, я и без всякого p-хакинга готов доказать, что Тохтамыш сжег Белый дом в 1993 году).

Короче говоря - что делать? Мой ограниченный жизненный опыт подсказывает "нулевое" решение - закончить мехмат - пусть он "и вообще ни к чему не готовил“, но какой-то багаж знаний, позволяющий легко понимать вот эту всю “обработку и анализ данных”, после него остается даже сейчас. Можно попробовать это решение “упростить” – так что перечислю те области человеческого знания, без которых data science будет просто модным баззвордом.

Начну, пожалуй, с “чистой” математики. Сложно представить себе “анализ данных” без хотя бы базовых представлений о теории вероятностей и математической статистике. Не менее сложно (хотя это уже со стороны может показаться и не таким очевидным) – без владения линейной алгеброй. Тот же “метод главных компонент”, по сути, практически тривиален. Ну и разумеется – никуда не деться от математического анализа, пусть даже и в сильно сокращенном и урезанном виде. В общем, получается программа того, что во всяких говновузах называется “высшей математикой” (кажется, туда обычно входят еще и дифференциальные уравнения – ну и ладно) – только вот “сдать и забыть” это все не получится.

Но! Вся эта математика, если мы говорим о “цифровых технологиях”, довольно бесполезна – так что не надо забывать и о “цифровой грамотности” на пару с программированием. Не можешь рассказать, что происходит, когда в адресной строке браузера набираешь google.com и нажимаешь Enter – давай до свидания :) Не можешь написать на любом языке программирования код для перемножения двух матриц – аналогично. В “цифровую грамотность”, разумеется, стоит включить и понимание того, что такое “большие” данные, а заодно – и представления о вычислительной сложности. Если сократить это до какого-то разумно минимального объема – то, пожалуй, это ужмется до эквивалента пары семестров – изучения какого-нибудь языка программирования и курса по алгоритмам и структурам данных.

В общем, если вы не владеете математикой в объеме пары курсов средненького технического вуза, а компьютером владеете на уровне “печатаю двумя пальцами в Microsoft Word” – то ваше место в скором будущем займет несложный скрипт на Perl, робот или даже котик.

Ах ты ж бля

Я думал, что угарно шучу про IoT – а тем временем ИнСАТ коварно подкрался и нанес ответный удар:

https://masterscada.insat.ru/news/?id=76412

Хочу за IoT спросить

Вот предположим, есть некая система сбора данных с кучки всяких разнородных датчиков – всяких там газоанализаторов, электро- и теплосчетчиков и прочей такой ерунды. Работает все по проводам, под управлением одной из “отечественных SCADA-систем”, частично по Modbus, частично – с использованием самописных драйверов. Данные от датчиков складываются в БД MSSQL (которая во всех документах проходит под сокращением БДСМ – “База данных системы мониторинга”, а вовсе не то, о чем вы все подумали) и отображаются ужасно кривым веб-приложением.

Ну вроде бы понятно, что это нифига не IoT, а порнография какая-то – поэтому придумалось несколько шагов, как сделать это более модным:

  • заменить немодный уже Ethernet и RS-485 между датчиками и системой сбора данных на какой-нибудь радиоканал типа LoRa или там, не знаю, 6LoWPAN;
  • выкинуть SCADA, поставить какой-нибудь mqtt-брокер;
  • в качестве базы данных использовать MongoDB или что-то в этом духе;
  • да, и перенести все в “облако”!
  • самописный веб-интерфейс заменить на какой-нибудь там freeboard.io;
  • всем разработчикам выдать вейпы и гироскутеры;
  • гренки переименовать в croûton.
  • ???
  • PROFIT!!!!

Так вот, на каком шаге немодная промавтоматика превращается в IoT?

Песня про интерфейс мозг-компьютер, например

“Коррозия металла”, альбом “Компьютер-Гитлер”, 1997 год. Атлична-атлична!

Науки делятся на физику и коллекционирование марок

В дискуссии о том, можно ли преподавать матанализ студентам со средним баллом 65 на ЕГЭ по математике в очередной раз пролистал записки Юрия Неретина о преподавании математики. Среди прочих заслуживающих внимания мыслей нашел там вот такую:

…наука, как запас сведений о мире, — это не сарай с ветхим хламом, а логическая структура. А наука (как, впрочем, и инженерия), как род деятельности – это поиск со всеми присущими ему ошибками и сомнениями. Архаичная научно-популярная литература отражала все это; рассказывая об истории мысли, поисках истины, логических связках, красоте природы, она и сообщала человеку основы соответствующих наук, и учила человека думать.

Кажется, примерно из этого представления о “науке, как роде деятельности”, растут корни проводившихся на прошлой неделе пятиминуток ненависти в отношении “цифровых гуманитариев” – потому как занятие многих из них как раз состоит в наполнении “сарая с ветхим хламом” в надежде, что кто-то придет и придаст накопленному логическую структуру. Во всяком случае, именно такое представление о дисциплине у меня сложилось после пролистывания одного из иностранных учебников (гуглотранслейт в помощь):

https://handbuch.tib.eu/w/DH-Handbuch

Куда конь с копытом, туда и рак с клешней, или про MOOC

Прочитал тут про попытку заменить лекции в ВУЗах “третьего эшелона” видеокурсами. Якобы нынешним руководителям от образования пришла в голову такая идея – нечего держать во всяких сомнительных “университетах” кафедры “высшей математики” и тому подобных предметов, вместо этого силами нескольких “ведущих ВУЗов” на сайте “Открытое образование” будут вестись модные massive open online courses.

https://www.nakanune.ru/articles/114512/

Сайт Накануне.RU в целом, конечно, политически ангажирован, движение “За возрождение образованияв Контакте я не раз замечал в неких странностях – так что полез проверять – что это за курс такой, после которого отчисляют аж 30% студентов МГУ. Заодно хотелось выяснить, кто же читает курс – лектора я в лицо не признал.

sadovnichaya

Курс на “Открытом образовании” нашелся довольно быстро – заодно стало понятно, почему я не опознал лектора – Инна Викторовна Садовничая преподавала на ВМК, пока не стала заведующей кафедры фундаментальной и прикладной математики на недавно созданном факультете космических исследований.

https://openedu.ru/course/msu/CALCSV/

И вот где-то на этом месте хорошо бы вспомнить, зачем и для чего все это. Официальные лица говорят примерно следующее:

Предоставляемый контент прошёл проверку не только вузом – разработчиком курса, но и национальной платформой “Открытое образование”. Курс высшей математики является базовым для студентов инженерной направленности, получение базовых знаний на более высоком уровне от лекторов ведущих учебных заведений нашей страны является залогом высокого качества знаний студентов

Но позвольте, где тут “более высокий уровень”? Программа курса совершенно стандартна – сложно ожидать что-то от курса математического анализа, содержание которого вот уже сто с лишним лет вообще не меняется. Я не шучу – можно взять учебник Чезаро, изданный на русском в 1913 году (часть I, часть II), и прекрасно готовиться по нему. Да, при наличии некоторой фантазии и готовой к восприятию этого всего аудитории курс матанализа можно дополнить несколькими более современными сюжетами (к примеру, Т. П. Лукашенко на мехмате добавляет из экзотики интегралы МакШейна и Курцвейля-Хенстока, что для студентов-математиков может быть и полезно), или изложить его в несколько иной последовательности – но тут все до безобразия банально. О том, как Садовничая читает лекции, я ничего сказать не могу – так что будем считать, что в виде видеолекций у нас имеется средненький курс матанализа, прочитанный средненьким же лектором. Как-то не вяжется это с “более высоким уровнем”?

В общем, выглядит это все весьма уныло. Заодно можно оценить и технический уровень видеолекций – его даже сложно назвать плохим, он катастрофически плохой. Рукописные листочки с непонятным почерком в 2018 году? Серьезно?

Собственно, не завидую студентам, у которых вместо пусть плохого, но “живого” лектора будет вот этот видеокурс.

Lesbian rule

Эта статья википедии – вовсе не про то, о чем вы все подумали:

https://en.wikipedia.org/wiki/Lesbian_rule

Про Digital Humanities

Часть фейсбучной ленты открыла для себя существование области человеческой деятельности под названием Digital Humanities (на русский это переводят “цифровая гуманитаристика”) и весело над этим ржет. В целом общий ржач поддерживаю (как представитель антиобщественных наук) – ну и разве что хочу поделиться собственным определением этого предмета (которое вывел, ознакомившись с содержанием магистерской программы по этим самым Digital Humanities в TU Darmstadt):

Digital Humanities – это то, чем можно заниматься в “гуманитарных науках”, владея компьютерной техникой на уровне толкового старшеклассника.