Тег ‘запретите им’

Кстати, еще про магическое мышление

Три с половиной совершенно несвязанных между собой эпизода – от которых будет смеяться любой юрист.

Для начала – все про те же персональные данные. “Околооборонное” предприятие решило сделать современную проходную, разогнать бабок из ВОХРы и поставить турникеты с электронными карточками и проверкой отпечатков пальцев. Перед запуском системы решили собрать необходимую для этого макулатуру – в частности, каждый из сотрудников предприятия подписал “согласие на обработку биометрических персональных данных”, которое включало в себя вагон разрешений, вплоть до “трансграничной передачи”. Напомню, что предприятие околооборонное, со всей полагающейся паранойей.

Схожую историю наблюдал с одним сколковским стартапом, которому при найме сотрудников захотелось подписать с ними NDA. Текст бумажки о “неразглашении конфиденциальных данных”, больше подходящий ликероводочному заводу, нашли то ли в каком-то “справочнике бухгалтера”, то ли вообще на каком-то левом интернетовском сайте. Про ликероводочный завод – не шутка, к конфиденциальной информации были отнесены “купажные листы”. Надо ли говорить, что, допустим, исходного кода программ в этом NDA не было? Да, специально для [info]sish – остальных телодвижений, предусмотренных 98-ФЗ, тоже не предприняли.

Из более приземленного – вы когда-нибудь покупали автомобиль “с рук”, без участия в этом автосалонов? Видели у регистрационного подразделений ГИБДД ряд ларьков с вывеской “оформление ДКП”? Почему-то сограждане верят, что оформленный ИП Ивановым П. С. за 500 рублей “договор” (с проставлением печати этого самого ИП Иванова П. С. в ПТСе) имеет какую-то большую юридическую силу, чем составленный продавцом и покупателем самостоятельно. Для большего счастья граждане вписывают в эту бумажку волшебную сумму 250 000 рублей – чтобы налоги не платить.

В общем, любые правовые отношения у нас сводятся к маханию руками с криками “Ахалай-махалай”.

Какой качественный наброс

Довольно забавную ситуацию можно было наблюдать в этот понедельник – Партия прямой демократии опубликовала на хабре почти безобидный текст:

https://habr.com/ru/company/analogbytes/blog/503552/

Ну казалось бы – никаких “наездов”, просто процитирован текст некоего документа, с которым предлагается согласиться на одном из официальных сайтов г. Москвы, и приведена инструкция, как с этим жить, исходя из требований 152-ФЗ. Но нет, почему-то материал получил внезапный всплеск интереса (не скрою, под соусом “мэрия Москвы будет 10 лет слать вам рекламу” можно и не такое устроить), был пропиарен даже Навальным (что особенно смешно), и где-то ближе к вечеру по разного рода телеграм-каналам начали распространяться “опровержения”. “Гениальный” шаг со стороны связанных с ДИТом пиарщиков, увеличивший посещаемость, пожалуй, в разы.

В понедельник, в 9:00 свой комментарий дал глава ДИПРа Фурсин, разумеется, в духе “все в соответствии с законом”:

https://tass.ru/moskva/8553717

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

Что показывает вся эта история? Ни чиновники, ни граждане, ни авторы телеграм-каналов (впрочем, последним простительно) так и не осознали принятый 14 лет назад 152-ФЗ. Точнее, осознали – но на уровне того, что в лесу живет бабайка, и если перед походом в лес не сказать волшебное заклинание – бабайка подскочит и больно укусит за жопу. В роли бабайки выступает Роскомнадзор (да, он следит в том числе и за соблюдением 152-ФЗ), в роли “укусит за жопу” – статья 13.11 КоАП. Волшебное заклинание же – текст “согласия на обработку персональных данных”, которое можно найти в интернете (а уж там-то в “типовом документе” чего только не понаписали). Что ж, развитием магического сознания удовлетворен. Скоро начнут мазать лоб кровью черного петуха и ритуально приносить Роскомнадзору в жертву девственниц, это вполне логичный следующий шаг.

Второе поколение

Вот еще – хочу сознаться, что зря я гнобил TU D-stadt, и даже там на факультете информатики можно научиться чему-то полезному, если вам повезет, конечно. Дело в том, что вводный курс по информатике, с программированием на Java, читают два разных преподавателя – раньше в четные годы это был Prof. Dr. Johannes Furnkranz (ссылки на его курс можно найти у меня), сейчас курс на основе сделанного Furnkranz’ем читает более молодой преподаватель, Prof. Dr. Christian Reuter. А если повезет, и вы поступите на факультет информатики в нечетный год – то курс с формально тем же содержанием читает Prof. Dr. Karsten Weihe (в отличие от предыдущих, заслуживший страничку в немецкой википедии) – и это совершенно другое дело!

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

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

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

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

PS Интересно, а бывают ли учебные курсы Java, где в качестве примеров разбираются реальные классы из JDK? Тот же java.lang.String – прекрасное наглядное пособие для изучения массивов, например :)

Обожаю хабр

Вот пишут на хабре статью – “Нужна ли программисту этика“, по поводу обосравшегося со своим творчеством ДИТа Москвы. Комментарии просто шикарны, как обычно.

Во-первых, в одной из веток хотят не много, ни мало, а отменить положения 54 статьи Конституции РФ – “Закон, устанавливающий или отягчающий ответственность, обратной силы не имеет”:

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

Во-вторых – никто до сих пор так и не вспомнил о существовании Software Engineering Code of Ethics. Просто удивительно – обсуждать вопросы “программистской этики” и не удосужиться хотя бы минимальным изучением того, что по этому поводу было сделано раньше.

И чуть-чуть вдогонку

Упомянул в предыдущей записи слова “менеджер проектов” – так что надо немного и на эту тему высказаться. Вот модно стало осуждать правительство Москвы, и конкретно – ДИТ и связанные с ним структуры:

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

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

https://www.facebook.com/alexander.isavnin/posts/1159514467731428

Или даже так:

Выступления политиков можно раздергивать на цитаты “как не нужно писать ТЗ”.

Сергей Собянин в эфире программы «60 минут»: ношение маски и перчаток рекомендовано, нет обязывающего документа, но в помещениях и общественном транспорте обязательно нужно носить.

И упражнения: задайте заказчику уточняющие вопросы по этому требованию, переформулируйте это требование после ответов на вопросы.

https://tat-ti.livejournal.com/1090928.html

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

bunin-mos-ru

Не знаю, конечно, кто, по мнению г-на Бунина, пишет техническое задание – но с этим “команда”, стоящая за mos.ru, очевидно не справилась, а возникшие по ходу пьесы проблемы переделывались в авральном режиме (и то криво).

Так вот, с другой стороны – вижу всякого рода описания “чем занимается менеджер проектов” и понимаю, что “менеджмента” там уже нет, а в типовой “айтишной” структуре он вообще превратился в гибрид массовика-затейника для ритуалов Scrum и придатка к Jira. Впрочем, откуда взяться чему-то более содержательному, когда так называемое “айти” представлено в основном бодишопами-субподрядчиками, а настоящее руководство сидит где-то максимально далеко? Но согласитесь – если какого-нибудь Васяна (3 года опыта натягивания тем на Wordpress) “продали” заказчику, как Senior fullstack developer, это же не делает его настоящим “senior developer”? Так же и тут – сидящая придатком к Jira девочка не становится “менеджером проекта” только оттого, что ее должность так называется.

Если вы думаете, что в “окологосударственном” IT дела обстоят как-то лучше – то нет, тут все усугубляется цепочкой субподрядчиков и “отрицательным отбором” на всех руководящих уровнях. На выходе имеем продукт ДИТа, про который даже официальные лица вынуждены говорить “это не баг, это фича“.

Еще раз про 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-принтере клапан для ИВЛ” и тому подобные – выводить в чистое поле к стенке отправлять санитаром в чумной барак.

Евро

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

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

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

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

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

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

Про учебники по 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ку с лекциями очень просили не распространять, если будут какие-то вопросы - пишите.

О новом этапе борьбы с ковидлой

Чем дальше, тем больше убеждаюсь, что ответственные за это государственные органы перешли от стадии “запугивание” к стадии “запутывание”:

https://odintsovo.info/news/?id=71963

А раз уж вы сидите дома – ответьте на несколько вопросов о пропускном режиме, в ходе ответов на вопросы можно пользоваться любыми нормативными документами, имеющимися в наличии.

1. Иванов проживает в Москве, и получив в модном приложении одноразовый пропуск с кодом 1504-ABCD-EF01-2345, натыкается в метро на патруль. Старший патруля путает цифру 0 и заглавную латинскую букву O, после чего оформляет протокол на Иванова за нарушение пропускного режима. Как Иванову доказать наличие действующего пропуска при обжаловании штрафа в суде через три месяца?

2. Петров проживает в г. Люберцы по адресу 3-е почтовое отделение, д. 74. У Петрова заканчивается гречка и туалетная бумага и он идет пешком в ближайший магазин, расположенный через дорогу, по адресу г. Москва, ул. маршала Полубоярова, д. 16к1. По дороге Петров встречает а) московский б) подмосковный патруль. Будет ли Петров оштрафован за пересечение границы субъекта Федерации и контрабанду гречневой крупы?

3. Сидоров едет на электричке МЦД из Лобни в Подольск, спасаясь от эпидемии. На станции Беговая в поезд заходит патруль, не ознакомленный с внешним видом подмосковных пропусков. Сидорова снимают с поезда и доставляют в отделение, где выясняется, что документы в порядке. Тем временем срок действия пропуска Сидорова истекает. Будет ли Сидоров оштрафован, нарвавшись на новый патруль уже в Подольске?

4. Живущий в Рязани Харитонов едет на автомобиле из Рязани в Тверь. Маршрут может быть разным:

а) по М5 до Третьего транспортного кольца в Москве, затем по Ленинградскому шоссе;
б) по М5 до МКАДа, затем по Ленинградскому шоссе;
в) по М5 до А107, затем по Ленинградскому шоссе.

Где и как следует Харитонову оформлять пропуск в этих случаях? Должен ли это быть “московский” или “областной” пропуск?

Посмотрел “подмосковное” приложение от короновируса

Вопрос номер 0 – а чем нормально декомпилируется Kotlin (похоже, что приложение на нем)? Стандартные инструменты вроде dex2jar выдают что-то ужасное.

public static final class b<T, R> implements e<T, s<? extends R>> {
  public b(a param1a, String param1String1, String param1String2) {}

  public Object a(Object param1Object) {
    param1Object = param1Object;
    if (param1Object != null) {
      param1Object = r.a(new p.d[] {
            new p.d("scope", "http://esia.gosuslugi.ru/usr_inf?mode=w"),
            new p.d("client_id", "PGU"), new p.d("grant_type", "password"),
            new p.d("state", param1Object.getStateMarker()),
            new p.d("client_secret", param1Object.getSecret()),
            new p.d("timestamp", param1Object.getTime()),
            new p.d("token_type", "Bearer"),
            new p.d("instanceId", this.e.c.d()),
            new p.d("terminal_name", Build.MODEL),
            new p.d("terminal_type", "Android"),
            new p.d("username", this.f),
            new p.d("password", this.g) });
      return this.e.b.a((Map)param1Object);
    }
    i.a("it");
    throw null;
  }
}

Во-первых – приложение действительно требует ввода логина и пароля от “Госуслуг” и где-то там внутри себя логинится на “Госуслуги”. Учитывая, что оно тащит с собой кучку “мониторинговых” штук типа Crashlytics – есть вероятность, что логин и пароль для Госуслуг улетят куда-то в отчете об ошибках. Что мешало сделать нормальный OAuth2 – непонятно.

Во-вторых – да, приложение просит загрузить фотографии с лицом, с паспортом, с лицом и паспортом, наконец. Фотографии никак не проверяются, если очень страшно – зажмите камеру пальцем и сфотографируйте так, приложение ничего не проверяет.

Основная функциональность приложения – вероятно, опросник “китайского образца”, у них было модно делать такие приложения системы “да-да-нет-да-сидите дома”. Пропуска прикрутили, видимо, в экстренном порядке. Собственно, пропуск генерируется по указанным данным, и представляет собой QR-код со ссылкой вида https://www.gosuslugi.ru/checksession/1?id=GUID. При переходе по ссылке показывается страничка, содержащая урезанные данные – мол, Петр Сидорович И. с паспортом номер 46** ******80 едет из точки А в точку Б. Видимо, проверка этих пропусков сотрудниками полиции будет состоят в переходе по ссылке и сличении этих данных с реальностью. Зачем здесь фотографии паспорта и все такое – непонятно. Особой валидации данных, похоже, нет – но еще раз повторю, при выдаче пропусков она и не нужна.

Что неприятно – все действия в приложении необходимо выполнять с включенным интернетом, выключив соединение, нельзя даже остановить таймер, измеряющий время с момента выхода из дома.

И вот еще один момент – похоже, что запустили веб-версию этого безобразия на “Госуслугах”:

https://www.gosuslugi.ru/395224/1

Сервис, разумеется, безбожно лежит, но ни фотографий паспорта, ничего сверх уже указанного на “Госуслугах” не требует.

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

Следующий логичный шаг столичных властей

Жду, когда между Северным и Южным Бутово построят демилитаризованную зону (с привлечением корейских специалистов), а между Западным и Восточным Бирюлево – стену (по немецкому проекту).

Боженька, жги, здесь уже ничего не исправить

Чуваки запускают маленькую и простую программу почти без всяких внешних зависимостей (OpenSSL разве что нужен) с помощью docker:

https://fossil-scm.org/forum/forumpost/5f106b752f

При этом (проверено) fossil работает на любой более-менее разумной платформе – от настольного Windows до shared-хостинга с Linux, легко собирается из исходников в практически любом unix-подобном окружении, и зачем при этом паковать его в docker – решительно непонятно.

А вот еще про IT-”журналистику”

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

ds420j-transformer

Подпись к картинке гласит: “В NAS установлен контроллер Gigabit LAN от американской компании bothhandusa под названием 24HSS1041A-2″. На самом деле никакой это не “контроллер Gigabit LAN”, а банальный трансформатор – впрочем, от IT-”журналиста” уже давно не требуется даже приблизительно представлять, что это за деталька и зачем она нужна. В остальном же содержание стандартно – перепечатываем спецификации с официального сайта, немного разбавляя их своими мудрыми мыслями. Добавляется несколько стандартных фоток – и все, “обзор” готов (в принципе, почти тем же занимается девочка, наполняющая каталог системообразующего ДНС-а – только девочку никто не называет журналистом, обидно даже за нее).

Но нет, здесь пошли еще дальше – в самом деле, зачем держать штат дрочеров на железки? Видите в урле странички странные слова artikel и netzwerk? Оказывается, все без исключения материалы этого сайта – переводы с немецкого, а автор этой “статьи” – вовсе не Дмитрий Чеканов, а Kai Malura:

https://www.hardwareluxx.de/index.php/artikel/hardware/netzwerk/52133-synology-ds420j-im-test-kompaktes-einsteiger-nas-mit-bekannter-optik.html?start=2

(да, все та же лажа там на месте)

Особенно смешно, что там в разделе “О сайте” отметился все тот же Синяков, которому Xiaomi не наливало :) Да-да, теперь именно так выглядит “симбиоз германского качества и отечественного творчества” (то, что в проекте нет ни того, ни другого – никого не волнует).

Ебучее красноглазие

Вот какого хера, простите, я решил сегодня уже вчера вечерком собрать пару малораспространенных, но полезных опенсорсных программ для NAS Synology? И господи, какой же в этом вашем линуксово-опенсорсном мире творится бардак с кросс-компиляцией, когда серьезно советуют не тащить на нормальную рабочую машину всякий кал в виде вендорского SDK, а поставить это в виртуалке. Вообще не понимаю, как с этим можно нормально жить и не ругаться матерно.

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

Обожаю, сука, теоретиков

Вот некоторые люди, не будем показывать пальцем, любят строить свою картину мира (в последнем абзаце) по рекламным листовкам типа таких:

https://www.techbriefs.com/component/content/article/tb/techbriefs/aerospace/28025

Так вот, немного оторвавшись от разгребания нагенерированного MATLAB Coder’ом говна, скажу – все эти заявления про торжество “model-based design” на основе MATLAB – чистая реклама, к реальности имеющая очень опосредованное отношение. Для тех, кто не знает – MATLAB – это такой весьма кривой и уебищный язык программирования в комплекте с не менее кривой и уебищной IDE, имеющий, впрочем, ровно два достоинства:

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

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

i100500 = b_mxA->size[0] * b_mxA->size[1];
b_mxA->size[0] = b_mxB->size[0];
b_mxA->size[1] = b_mxB->size[1];
emxEnsureCapacity_creal_T(b_mxA, i100500);

Ругаться закончил.

У москвичей будут (или не будут) конфисковывать автомобили

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

https://duma.mos.ru/ru/38/adopted_documents/corebofs002080000n2c54mac69ssgpc

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

В целях пресечения административного правонарушения, предусмотренного частью 4 статьи 3.18.1 настоящего Кодекса, применяется задержание транспортного средства в порядке, установленном частями 4 – 8, 10 – 12 статьи 27.13 Кодекса Российской Федерации об административных правонарушениях.

- а затем откройте статью 27.13 КоАП РФ – в которой есть не только “части 4-8, 10-12″, а еще и закрытый список административных правонарушений, для пресечения которых можно задерживать ТС (пункт 1). Но нет, давайте в связи с распространением ковидлы закроем глаза на те части, которые не нравятся!

death-wagon

Ну и привет собянинской урбанине, как же без этого.

И еще для праздничного настроения

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

  • Приложение получает доступ ко всей информации на телефоне: GPS, камера, местоположение, возможность звонить, просмотр любых данных, доступ к любым настройкам.
  • Приложение передаёт собранную информацию на серверы мэрии в открытом виде без какого-либо шифрования. Это провал.
  • Для распознавания лиц, приложение использует эстонский сервис identix.one — то есть, передаёт фотографии в эстонскую юрисдикцию и на серверы, расположенные в Германии. Обе страны входят в НАТО.
  • Разработкой приложения занимается компания «Гаскар», подрядчик «Инфогорода».
  • В QR-кодах зашифрованы MAC и IMEI (индивидуальные идентификаторы) устройства.
  • На приложение было потрачено 180 млн рублей. Судя по его качеству, украдено было 99% бюджета.

Приложение настолько понравилось пользователям, наставившим единичек, что уже в 10:00 оно было выпилено из гуглплея.

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

Обожаю медузоньку

20 марта этого года, в России 253 заболевших COVID-19, принимаются первые санитарно-эпидемиологические меры по ограничению распространения заболевания. На “Медузе” выходит интервью правозащитника из “Агоры” Леонида Соловьева, где тот рассказывает, что все это незаконно (на самом деле нет, все эти меры были довольно прилично “подкреплены” юридически):

https://meduza.io/feature/2020/03/20/zakona-po-kotoromu-vam-nelzya-vyhodit-iz-doma-net

30 марта, число заболевших переваливает за 1500, в Москве и Московской области принимаются довольно бестолковые и путанные указы о “самоизоляции”, говорящие головы из телевизора вертятся ужом на скороводке, пытаясь не произнести слов “карантин” или “чрезвычайная ситуация”, а все та же “Медуза” разъясняет: “похоже, это правильно”:

https://meduza.io/feature/2020/03/30/v-moskve-vveli-zhestkie-karantinnye-mery-pohozhe-eto-pravilno-matematicheskaya-model-pokazyvaet-chto-inache-mogli-by-pogibnut-bolshe-100-tysyach-chelovek

КМПВ, юристов из “Агоры” будем отправлять в Коммунарку (в рамках действующего законодательства).