Обновления турнирной таблицы

Не удовлетворившись победой над Германией еще 7 мая и досрочным выполнением обязательств, российская сборная еще вчера ворвалась в Top-5, а сегодня вступила в борьбу за третье место:

covid-top5

Еще раз про MATLAB

Сим постановляю:

  • Считать MATLAB Coder кривым куском говна;
  • Сайт techbriefs.com приравнять к рекламным листовкам, напечатанным на мягкой бумаге;
  • Его читателей считать говноедами.

А теперь подробнее — несложная функция в два десятка строк на MATLAB (содержащая в основном операции с матрицами — несколько вычислений нормы и умножений) с помощью этого прекрасного инструмента превращается в четыре (!) полуработающих функции на C, общей длиной — что-то около 3000 (!) строк кода. Ни одна из функций не работает полностью правильно, на всех возможных вариантах входных данных. Написанная вручную функция, делающая то же самое — всего 80 строк (в SLOC и того меньше, комментарии мне сейчас считать лень). Как это соотносится с декларируемыми в статейке «benefits»:

no need to schedule time for hand-coding GN&C algorithms (60,000+ SLOC were autocoded by the Critical Design Review), and a detailed requirements review was replaced by a review of MBD artifacts that had proven functionality

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

Симулятор ковида, или зачем нам нужны программисты

Листал тут твиттер и наткнулся на твит @ID_AA_Carmack, где тот пишет о том, как помогал привести в божеский вид симулятор распространения вирусных заболеваний под авторством Имперского Колледжа Лондона. Симулятор можно найти на гитхабе:

https://github.com/mrc-ide/covid-sim

Есть пара мыслей о полезности программистов во время массовых эпидемий. Во-первых: симулятор написан на банальном и тупом Си. Никаких модных концепций вроде объектно-ориентированного или функционального программирования, никаких этих ваших хаскеллей с монадами и прочей такой хероты. Просто банальный «процедурный» код, местами — в стиле книжки Numerical Recipes или, прости господи, в неподражаемом духе «you can write Fortran in any language«. Тупо — но просто и понятно:

Before the GitHub team started working on the code it was a single 15k line C file that had been worked on for a decade, and some of the functions looked like they were machine translated from Fortran. There are some tropes about academic code that have grains of truth, but it turned out that it fared a lot better going through the gauntlet of code analysis tools I hit it with than a lot of more modern code. There is something to be said for straightforward C code. Bugs were found and fixed, but generally in paths that weren’t enabled or hit. Similarly, the performance scaling using OpenMP was already pretty good, and this was not the place for one of my dramatic system refactorings. Mostly, I was just a code janitor for a few weeks, but I was happy to be able to help a little.

https://mobile.twitter.com/ID_AA_Carmack/status/1254872369556074496

Во-вторых: как вы думаете, сколько ссылок на гитхаб-репозиторий с этой моделью нашлось на самом айтишном и професси-анальном ресурсе Рунета (нет, не на ebanoe.it)? На том, где уже который месяц темы про ковид не вылезают из самых обсуждаемых, и набирают многие сотни и даже тысячи комментариев?

Угадали? Правильно — ноль!

Как мне кажется, в скором времени надо будет отлавливать всяких там фронтендеров, бекендеров, сеньоров с трехлетним стажем, дата-саентистов и прочих специалистов по бигдате и строго спрашивать — «А что ты сделал для борьбы с ковидом?» За ответы вроде «высрал сто комментариев на хабре», «напечатал на 3D-принтере клапан для ИВЛ» и тому подобные — выводить в чистое поле к стенке отправлять санитаром в чумной барак.

Музыка из HoMM II

Узнал тут, что «оперный» саундтрек во вторых «Героях» — это не «бессмысленное пение на псевдолатыни«, а вполне себе связный текст на довольно четком немецком:

http://mm6world.ru/differ/h2_lyrics.htm

Интересно, а как это все воспринимали немецкоязычные игроки?

Про антиквариат

Набрел на прекрасный тред на форуме часовщиков: мужик нашел где-то старинные каминные часы (причем не вполне комплектные), пришел на форум с просьбой «оценить», а когда ему сказали, что это французский ширпотреб конца XIX века, уже в те времена довольно массовый, особой исторической и художественной ценности не имеющий, и оценили в 250 евро — сильно обиделся:

http://forum.watch.ru/showthread.php?t=311275

Вообще не первый раз вижу, что советские и постсоветские люди совершенно неадекватно оценивают любой «антиквариат» (особенно, когда он относится к категории «нашел в гараже» — заодно . То, что какой-то вещи больше сотни лет, еще не делает ее владельца обладателем редкого сокровища — особенно сейчас, когда любой может зайти на тот же немецкий или французский eBay и обнаружить там все это барахло конца XIX века по вполне приемлемым ценам (скажем, те же каминные часы будут действительно стоить 250-300 евро). Сложно однозначно сказать, в чем корень такого заблуждения — тут и две войны, и революция, и 70 лет советской власти, не особо способствовавшие сохранности всякого барахла — но как-то пора бы уже научиться понимать, что вряд ли ширпотреб, пусть и столетней давности, превратится вдруг в невероятное сокровище.

Нищебродский медиацентр

Дано: есть NAS, раздающий через DLNA и SMB кино и музыку. Есть телевизор Samsung, туповатый и безо всяких там интернетов. Хочется смотреть кино на телевизоре, не таская туда-сюда ноутбук.

Среди всякого барахла нашелся Raspberry Pi 3B+, который я подцепил к телевизору и немного поэкспериментировал. В общем:

— родной Raspbian как-то сразу не обрадовал;
— Ubuntu MATE напугала невменяемыми глюками VLC Player-а;
— LibreELEC вообще не заработал;
— остановился я в итоге на OSMC.

Что не запустившийся LibreELEC, что OSMC — это минималистичные дистрибутивы Linux, в которых в качестве единственной доступной «пользователю» программы прикручен медиаплеер Kodi. Первый у меня так и не запустился (что крайне странно, учитывая однотипность «железа» — уж в «моноклассе» Raspberry все должно работать более-менее одинаково), второй заработал сразу. Из танцев с бубном почему-то непременно требовалось вручную указать hdmi_mode в конфигурационном файле — впрочем, можно сделать это и из интерфейса Kodi, если знать табличку этих режимов наизусть (а это с Raspberry почему-то надо делать постоянно).

Что радует — Kodi работает со всеми видами файлохранилищ, достаточно «всеяден» в выборе форматов, очень гибко настраивается. Минусы — это опенсорс, это линукс со всем отсюда вытекающим — идеально «гладким» взаимодействие с этим плеером все равно не получается.

В общем, очередное «Linux почти готов для десктопа» — только вот это «почти» не меняется примерно с тех пор, как я посмотрел на первый Live CD из приложений к журналу «Ксакеп» :)

Mathematics for Machine Learning

Проглядел мельком очередную книжку «про машинное обучение» — точнее, даже не про само машинное обучение, а что-то вроде учебника по необходимым разделам математики:

https://mml-book.github.io/

Где-то треть книги — изложение стандартного курса линейной алгебры, еще немного — многомерный анализ (всякие там якобианы и тому подобные штуки), основы теории вероятностей и методов оптимизации. Оставшаяся треть — описание «классических» подходов к машинному обучению, заканчивающееся описанием метода опорных векторов (SVM). Впечатление — довольно странное. Для начала, предполагается, что читатель владеет понятиями вроде «производная» и «интеграл», а «вектор» для него — это пара чисел, а не отрезок со стрелочкой на конце. Как утверждается в предисловии, это примерно программа high school — но у нас ВУЗы школам в изучении этих вещей не доверяют (и правильно делают!), поэтому вузовский курс математики начинается с основ анализа.

Если же вы с математикой не соприкасались со школьных времен — то довольно быстро столкнетесь с тем, что некоторые вещи, которые хорошо бы разъяснить, здесь считаются хорошо известными. Классический курс матанализа, хотя бы с изложением теории дифференцирования функций одной переменной, попросту необходим для чтения.

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

Вердикт — под видом датасаенса нам подсовывают замшелую линейную алгебру, протухший товар второго сорта! Заклеймить авторов позором за полное непонимание «практик будущего»! (Это я тут прочитал фейсбучную запись проректора ДВФУ Земцова и пытаюсь несмешно шутить)

Электронный документооборот

А вот сейчас я расскажу, как в одном НИИ Говна и Торфа была организована отправка электронной почты. Представьте себе, что какому-то из подразделений предприятия нужно отправить e-mail контрагенту. Как это делается у нормальных людей? Ответственный за работу с этим контрагентом менеджер открывает Outlook, пишет письмо, нажимает «Отправить». Все!

Но совсем не так это происходило в структурах Роскомикса! Для начала — вести какую-либо переписку «от имени предприятия» были уполномочены лишь начальники довольно крупных структурных подразделений (отставные полковники и выше :) ). Разумеется, в отделе из 50-100 человек вести переписку нужно многим — и если кому-то надо было отправить e-mail официально, то вначале писался «черновик», который подавался начальнику отдела. Естественно, вносилось некоторое количество правок — от стилистических, например, нельзя писать «сотрудники НИИГиТ» (сотрудники бывают только в милиции), нужно писать «специалисты», до более существенных. Черновик, разумеется, печатался на принтере, правки вносились карандашом — во-первых, отставному полковнику совершенно «не по чину» пользоваться этим вашим комплюктором, во-вторых, зрение уже не то, неудобно читать с экрана. Уходило на это три-четыре листочка А4 и несколько часов времени.

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

Дальше письмо утверждалось начальником «дирекции проектов» — уже в генеральском звании. Генералу комплюктор вообще не нужен, зато полагается сидящая в приемной секретарша — которая до обеда собирала бумажки в папку «На подпись», а в обед несла ее подписывать. Так как подписывать надо много — желательно было приклеить к месту подписи бумажный ярлычок. Не знаю, были ли случаи, когда письмо заворачивали на этом уровне — но это был еще не главный квест.

Основной барьер на пути всей переписки — это канцелярия предприятия. Не знаю, какой была ее численность в 194* году, когда предприятие было основано под названием «Завод № ***» — один или все же два человека, но 70 лет спустя она разрослась до четырех кабинетов и 8 человек. Для отправки электронных писем был выделен отдельный кабинетик, где сидела пизда, вся работа которой состояла в:

— внести в журнал запись об исходящем письме;
— написать следующий номер на бланке в поле «Исх. №»;
— поставить на бланке сегодняшнюю дату;
— поставить на бланке печать;
— расписаться в «бегунке» и забрать одну из копий письма.

По факту пизде всегда хотелось докопаться до каких-то типографских огрехов, типа «здесь должно быть два отступа, а у вас один» или «заголовок пишется 13 шрифтом Comic Sans MS, а у вас 14 Times New Roman, а в конце должна стоять точка, а не запятая». Аргументы вроде «генерал же подписал, ваше дело присвоить исходящий номер» на нее не действовали — а так как правила оформления менялись дважды в год, ругани было предостаточно.

Наконец, фирменный бланк с исходящим номером возвращался в подразделение, где наконец сканировался и в виде прикрепленного к письму pdf отправлялся кому надо через все тот же Outlook. Весь квест требовал минимум 4 листов бумаги (а то и десятка) и занимал минимум день — если повезет, а то и два.

PS Естественно, при молчаливом одобрении начальства (уровня начальников отдела, официально это было строжайше запрещено, спиздят секреты же!) немалая часть переписки с более-менее вменяемыми контрагентами велась с личных email-ов.

Турнирная таблица на сегодня

Российская сборная по ковидле уверенно входит в десятку и готова на следующей неделе бороться с Китаем, Ираном и Турцией.

covid-tournament

В более дальней перспективе — сборные Великобритании, Германии, Франции, Италии и Испании. Догнать и перегнать Америку будет сложно, но если партия прикажет…

Про «Индустрию 4.0»

Когда я работал на одном из предприятий «Роскосмоса», это самое предприятие с большим пафосом продемонстрировало свою приверженность идеологии «Индустрии 4.0». В «выставочном» исполнении это выглядело так — ставился какой-то «тонкий клиент», посаженный за него инженер рисовал что-то в Альтиуме, и подразумевалось, что как только он нажмет волшебную кнопочку «сделать зашибись», проект тут же улетит на производство. Нельзя сказать, что за этим прямо уж ничего не стояло — за пару лет до этого предприятие с не меньшим пафосом обзавелось линией для производства печатных плат, а «тонкие клиенты» очень нравились айтишникам предприятия — впрочем, довольно быстро выяснилось, что схемотехников такое решение еще устраивает, а программистов — уже не очень.

Но несмотря на все демонстрации этой «Индустрии 4.0» — курьеры из «Резонита» все равно ездили в наш адрес каждое утро, как на работу.

А расскажите мне про Mikrotik

Вводные:

  1. Вильянова читал.
  2. Нужен гигабитный роутер (не менее 6 портов Gigabit Ethernet), желательно — с SFP для оптики.
  3. Возможно, в качестве резервного канала доступа в интернет будет использоваться сотовый модем.
  4. Желательно «дальнобойный» WiFi (до двух-трех железобетонных стен, раскидывать кучку репитеров я не хочу).
  5. Настраивать это все есть кому.
  6. Трафик — в основном веб-серфинг «наружу», иногда торренты, есть и внутри сети — смотреть фильмы с NAS и на тот же NAS бекапиться.

Стоит ли брать при таких вводных Cloud Switch CRS109? Или в софтовом режиме он маршрутизацию не потянет и лучше будет 2011UiAS-2HnD? Или ну нахер этот микротик?

Евро

Забавно, как ранние постсоветские люди обожали приставкой «евро» обозначать что-то новое и им незнакомое — евроремонт, евровилку с евророзеткой или евровинт. В этой самое Европе пользуются тремя-четырьмя несовместимыми типами розеток (и Schuko — далеко не единственный), Europlug выглядит совершенно колхозански (и втыкается в самые совдеповские розетки), евровинт — это совершенно обычная мебельная фурнитура, а уж об определении евроремонта можно только догадываться.

Про бигдату

Вот искал на днях что-то про бенчмарки всяких там ARM-ов, и наткнулся на пару публикаций, где на наглядном примере демонстрируется, что такое — big data, а что — хуйня из-под коня.

Раз (https://inspirehep.net/literature/1424617):

Projects such as the Large Hadron Collider at CERN generate enormous amounts of raw data which presents a serious computing challenge. After planned upgrades in 2022, the data output from the ATLAS Tile Calorimeter will increase by 200 times to over 40 Tb/s.

Два (http://crm-en.ics.org.ru/uploads/crmissues/crm_2015_3/15728.pdf):

The term ”Big Data” has caught on in the mainstream media and science worlds. While this word in now ubiquitous and almost exhausted in it’s use it still identifies an important issue in the science community. Processing data is getting more difficult due to the shear amount being produced. In the year 2022 the ATLAS detector will be upgraded and in doing so will produce in the order of Petabytes per second of raw data [ATLAS C 2012 Letter of Intent…, 2012]. There is no feasible way to process this much data in a reasonable amount of time. This is largely due to external Input/Output (I/O) bottlenecks present in current super computing systems. A team at the University of the Witwatersrand, Johannesburg is actively involved in the development of a computing system which is both cost-effective and able to provide high data throughputs in the order of Gigabits per second. There are four widely accepted computing paradigms. The first, and most commonly known, is the High Performance Computing paradigm (HPC) which is focused on the raw number of calculations performed per second. The second is the Many Task Computing (MTC) which focusses on the number of jobs that can be completed in a given amount of time. Real Time Computing (RTC) involves very strict restrictions on execution times (such as air-bag sensors or process controls). Finally, a fourth paradigm called Data Stream Computing (DSC) involves the processing of large amounts of data with no off-line storage.

Короче говоря, если у вас поток обрабатываемых данных меньше 40 Тб/с, или на одной ноде вы не можете обрабатывать хотя бы несколько Гбит/с — отойдите в сторонку и не мешайте.

Для диванных экономистов

Природа возникновения всех экономических кризисов («Деньги некуда девать… Кто кого замочит, блядь?») изложена во второй части «Сказки о царе Салтане» Красной плесени, слушать с 23:28:

Спойлер: победил Гондон.

Все еще про ковид

Владимир Табак в фейсбуке пишет:

В начале марта я был назначен одним из руководителей ицк — информационного центра по борьбе с короновирусом. Мне звонили многие друзья и знакомые, чтобы узнать какую-то информацию про болезнь, новости про карантин, советовались про меры предосторожности. Хотя сам я их совершенно не соблюдал. Я бы мог сейчас сказать о том, что был настолько поглощён важностью задачи — информировать граждан России обо всем, что касается этой коварной болезни, что не было времени думать о себе — но это было бы откровенным враньём. Я смеялся над теми, кто приходил в масках, лихо брался за ручки дверей, нажимал кнопки лифтов, здоровался за руки, обнимал старых знакомых. Три дня назад я наконец выписался из больницы. Я пролежал там 15 дней — подтверждённый covid 19 и двухсторонняя полисегментарная пневмония.

https://www.facebook.com/tvova/posts/10218459488331106

А потом мы удивляемся, а чего это вдруг информационная кампания по борьбе с коронавирусом «провалена«, с такими-то руководителями.

Про ковидлу

Как думаете, догоним и перегоним Китай на следующей неделе? Вот ссылки, если интересно:

https://www.worldometers.info/coronavirus/country/russia — Россия, на 19 апреля 42 тысячи случаев, ежедневный прирост свыше 5000 и 361 умерший;
https://www.worldometers.info/coronavirus/country/china — Китай, 42 тысячи случаев было 10 февраля, на этот же день — прирост заболевших снизился уже до 2500/день, общее число умерших составило 1113.

Про учебники по C++

Прочитал недавно рецензию на учебник Столярова, где тот обозвали «плохой методичкой«. Ну да, я и сам согласен с тем, что оставлять студентов наедине с книгами Столярова нельзя — но при всех недостатках книжка по C++ (полностью вошедшая в четвертый том многотомника) более-менее подходит для того, чтобы понять основные принципы языка (всякие там rule of three, RAII и так далее). И кстати, не могу согласиться с тезисом о том, что автор не «сделал хоть что-нибудь положительно отличающее текст от бесконечного числа вузовских методичек, призванных помочь студенту сдать экзамен автору методички» — особенно когда перед этим в трех пунктах утверждается, что автор — ебанутый фанатик (в хорошем смысле). В конце концов, большая часть софта, которым мы все пользуемся, была сделана как раз ебанутыми.

А если говорить о dark side образования — ознакомился на днях с конспектом курса «С++ для математиков», который в TU D-stadt читают Dr. Alf Gerisch и Dr. Adrien Semin. Курс представляет собой какую-то смесь из странным образом подобранных элементов C++ и взятых из численных методов примеров.

Из положительного хочется отметить разве что довольно подробную лекцию о IEEE 754 с некоторыми примерами правильных вычислений с плавающей запятой (например, с решением «плохих» квадратных уравнений). А вот отрицательного, к сожалению, гораздо больше. Во-первых — разбираемое в лекциях подмножество C++, как бы это сказать… совершенно недостаточно для нормальной продуктивной работы. Это такой поверхностный обзор в стиле введения в «Язык программирования C++» Страуструпа — вот у нас есть классы, вот как выглядит наследование и полиморфизм (множественное наследование не разбирается), вот есть шаблоны (делаем класс Polynom), вот библиотека STL (в ней есть класс vector).

Во-вторых — вот за такое можно поймать лектора в темной подворотне и отпиздить, желательно ногами по голове (классы все здесь по размеру маленькие, максимум два числа и ссылка на функцию):

int main(void)
{
    // list of two base class pointers
    numInt1D** integrator = new numInt1D*[2];
    // fill with two pointers to derived class objects
    integrator[0] = new numInt1D_rectangleLeft(0.0, 1.0, &f);
    integrator[1] = new numInt1D_trapezoidal(0.0, 1.0, &f);
    // output numerical integral approximations
    std::cout << "Integral approximation using rectangle rule = "
        << integrator[0]->integrate() << std::endl;
    std::cout << "Integral approximation using trapezoidal rule = "
        << integrator[1]->integrate() << std::endl;
    // clean up
    delete integrator[0]; delete integrator[1];
    delete [] integrator;
    return 0;
}

Вообще, не раз наблюдал вот такую ничем не объяснимую любовь к new в C++ у быстро переученных на него джавистов.

Есть, конечно, одно обоснованное возражение - а зачем студентам-математикам учить C++ в каком-то приближенном к реальной жизни объеме, тем более, что для численных методов этого достаточно? Вот возьмем для примера мехмат МГУ - который, в отличие от факультета математики провинциального немецкого ВУЗа, все-таки пытается готовить профессиональных математиков (а пошедшие в программисты выпускники для факультета - третий сорт, после преподавателей этой самой математики). Что входит в "Практикум на ЭВМ" на втором курсе? Отнюдь не только численные методы, но еще и "тонкости" вроде "Десять способов неправильного описания прототипов методов сложения (operator+) и "увеличить на" (operator+=) и единственный правильный способ", да и совершенно "практические" вещи типа библиотеки Qt стороной не обошли. В курсе есть достаточно мест, где можно наступить на стандартные C++-ные грабли и навсегда их запомнить (а нормальное обучение C++ и должно строиться на том, что все эти многочисленные "грабли" надо собрать в процессе обучения самостоятельно и больше их не забывать).

У немецких же товарищей - все наоборот, грабли старательно обходятся, и успешно сдавший экзамен студент знает C++ в том объеме, который позволит ему разве что наделать кучу опасных ошибок.

PS PDFку с лекциями очень просили не распространять, если будут какие-то вопросы - пишите.

Возвращаем ru_politics людям

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

http://ru-politics.ru/

Обещают олдскул в духе жжшного [info]ru_politics образца 2005 года — впрочем, оно и правильно.