Category: россия

Category was added automatically. Read all entries about "россия".

Бритоголовый и С1-97

В продолжение темы про гомоморфизмы

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

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

Ума нет – иди в пед,
Стыда нет – иди в мед,
А нет ни тех, ни тех –
Поступай в политех,
(и since 1971)
А всякий отброс
Идет в сельхоз

С переименованием Калинина в Тверь тамошние ВУЗы несколько прибавили в значимости – пединститут превратился в Тверской государственный университет, мед стал Тверским государственным медицинским университетом, а политех заделался Тверским государственным техническим университетом. На сайтах ТвГУ и ТвГТУ можно найти сведения о количестве студентов по каждой из специальностей:

https://www.tversu.ru/sveden/education/study/
http://www.tstu.tver.ru/sveden/education#pills-eduChislen

Пресловутый “гомоморфизм” наверняка услышат студенты-математики и физики из ТвГУ (специальности 01.03.01, 01.03.02, 03.03.02 и 03.03.03), и скорее всего – “информатики” (02.03.01 и 02.03.02). Их коллеги из ТвГТУ, обучающиеся на специальностях, связанных с информатикой (тут список более однородный: 09.03.01, 09.03.02, 09.03.03, 09.03.04) – наверное, тоже (во всяком случае, в учебных планах есть места, где было бы правильным впихнуть это). Чтобы никому не было обидно – предлагаю учитывать “информатиков” с коэффициентом 1/2. Складываем циферки, делим на 4 (это все бакалавриат, они учатся 4 года) – получаем, что ежегодно тверские вузы выпускают где-то около 150 человек, удовлетворяющих нашему критерию. В принципе, есть основания думать, что примерно такие же по порядку числа были и в советское время, только вместо “информатики” были какие-нибудь приматы, а набор в пед мог быть чуть больше.

Будем считать, что выпускник хорошего ВУЗа живет после этого долго и счастливо 50 лет – итого в Тверской области можно обнаружить 7500 человек, когда-то изучавших математику в нужном объеме. При населении в 1,26 миллиона человек – это целых полпроцента.

Примерно такой же расклад получится, наверное, и по другим субьектам федерации; сложности с подсчетом возникнут разве что в Москве, где вузов много, и если очевидные мехмат с физтехом учесть просто – то “приматов” из технических вузов посчитать, пожалуй, нереально (а программа у них может отличаться кардинально – скажем, вполне можно представить курс с упором в программирование и специфические численные методы, но с очень рудиментарной алгеброй). Пожалуй, можно сказать, что “слово “гомоморфизм” слышали в своей жизни от 0,5 до 1 процента населения России – разумеется, все уже давно всё забыли, но повод для сдержанного оптимизма найти тоже можно.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Яндекс.Херня

Сегодня в Москве Яндекс.Такси протаранило Форд Мустанг из Яндекс.Драйва – а на заднем плане за этим наблюдает курьер Яндекс.Еды.

yandex-mustang

Не удивлюсь, если все причастные залипали в яндексовское “суперприложение“:

yandex-superapp

А Мустанг жалко.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Разница соцсетей

В фейсбучной ленте обсуждают набранные Лукашенко и Тихановской проценты, в твиттерной – ничью Спартака и Сочи.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Алковопрос

Позвали сегодня, точнее, вчера, на картинг – разумеется, на открытый “Диксодром”. Дождь, лужи – видимо, кармическое воздаяние за то, что на выходных я ржал над вот этой картинкой:

EcpbhApWAAU_fVo

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

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Бесит, сука

Вот посмотрел я на то, из чего состоит rawStoreBallotTx, передающийся на сервер и сохраняющийся в блокчейн при электронном голосовании в Москве. Разбираться с обширным кодом клиента Exonum на Javascript я не стал, а просто глянул на сами данные.

58 1c c8 b3 ed 95 97 f3 f4 ab c7 76 1d 17 c3 02
a3 d5 3e 59 c8 c7 6c 55 04 4b f0 d3 91 e7 fc c1
00 00 e9 03 06 00 0a 40 64 61 38 35 66 61 66 38
34 66 61 65 62 30 65 39 30 65 66 33 31 61 32 65
37 32 35 32 34 31 35 31 66 62 61 63 30 65 32 66
36 65 36 63 34 39 38 33 36 30 31 33 64 36 34 35
32 39 34 36 39 38 38 64 10 4d 1a 56 0a 14 bc ef
fd 5e 5e a6 8a 6b b2 d9 04 31 dd 51 2e 11 5e 4c
44 e3 12 1a 0a 18 9b 37 cb a5 f0 26 25 ca 74 45
00 21 88 e1 59 ca 56 ee d5 24 dd 25 d3 26 1a 22
0a 20 57 1d b7 6c 24 f5 85 22 7e 75 4c ca e6 97
99 8f f6 22 6b 24 58 94 b9 0d 57 b0 f3 d5 9a 0c
16 01 9d c1 e2 eb 1d 8d 8a cf 12 60 27 3f f0 2e
cc ba 5d 9f 61 e0 ba 51 a7 d2 26 78 82 d1 05 6d
a5 92 93 75 7d 5a c5 23 e0 45 f7 f9 8d 6b ed 4f
33 fe d7 c2 e2 48 77 c6 61 9b 10 86 b3 c7 a7 73
3f 0d

Первые 32 байта – это некий идентификатор под названием accountAddressBlock; дальше начинается что-то непонятное – но резко выделяется довольно длинная последовательность из байт в диапазоне 30-39 и 60-66 – это цифры и буквы от a до f. Выпишем ее отдельно (справа – символы, которым эти байты соответствуют):

                        64 61 38 35 66 61 66 38            da85faf8
34 66 61 65 62 30 65 39 30 65 66 33 31 61 32 65    4faeb0e90ef31a2e
37 32 35 32 34 31 35 31 66 62 61 63 30 65 32 66    72524151fbac0e2f
36 65 36 63 34 39 38 33 36 30 31 33 64 36 34 35    6e6c49836013d645
32 39 34 36 39 38 38 64                            2946988d

Что это? А это как раз voting id, идентификатор голосования – только зачем-то переданный в виде текста. Сразу же хочется обратить внимание на байт 40, стоящий непосредственно перед voting id – да и вообще на всю последовательность 00 00 e9 03 06 00 0a 40 – хочется считать ее неким заголовком, а 40 – длиной поля. По аналогии находим еще три подобных последовательности – “заголовок” 10 4d 1a 56 0a 14 (в кавычках, и я сейчас объясню, почему) предшествует 20 байтам

                                          bc ef
fd 5e 5e a6 8a 6b b2 d9 04 31 dd 51 2e 11 5e 4c
44 e3

Заголовок 12 1a 0a 18 – последовательности из 24 байт:

                  9b 37 cb a5 f0 26 25 ca 74 45
00 21 88 e1 59 ca 56 ee d5 24 dd 25 d3 26

А заголовок 1a 22 0a 20 – 32 байтам:

      57 1d b7 6c 24 f5 85 22 7e 75 4c ca e6 97
99 8f f6 22 6b 24 58 94 b9 0d 57 b0 f3 d5 9a 0c
16 01

Казалось бы, это вся информация для записи в блокчейн? Но нет – не хватает district id, номера “участка” (здесь он принимал логичные значения 77 и 52 для Москвы и Нижнего Новгорода соответственно). Где он мог потеряться? Оказывается, первый “заголовок” из 6 байт – это на самом деле еще и поле с номером участка, 10 4d (4d в шестнадцатиричной системе – это как раз 77).

В оставшихся 64 байтах я какой-то структуры уже не увидел, но в целом для расшифровки голоса они нам уже не нужны. Вспоминаем структуру данных для передачи – это должны быть зашифрованный голос, nonce и публичный ключ пользователя; в используемой для голосования библиотеке NaCl длина nonce и публичного ключа как раз составляет 24 и 32 байта соответственно, 20 байт – это длина сообщения. Кажется, мы нашли все необходимое? Проверяем несложной программой:

unsigned char message[] = {
    0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0,
    0xbc, 0xef, 0xfd, 0x5e, 0x5e, 0xa6, 0x8a, 0x6b,
    0xb2, 0xd9, 0x04, 0x31, 0xdd, 0x51, 0x2e, 0x11,
    0x5e, 0x4c, 0x44, 0xe3
}; // first 16 bytes must be 0

unsigned char nonce[] = {
    0x9b, 0x37, 0xcb, 0xa5, 0xf0, 0x26, 0x25, 0xca,
    0x74, 0x45, 0x00, 0x21, 0x88, 0xe1, 0x59, 0xca,
    0x56, 0xee, 0xd5, 0x24, 0xdd, 0x25, 0xd3, 0x26
};

unsigned char public_key[] = {
    0x57, 0x1d, 0xb7, 0x6c, 0x24, 0xf5, 0x85, 0x22,
    0x7e, 0x75, 0x4c, 0xca, 0xe6, 0x97, 0x99, 0x8f,
    0xf6, 0x22, 0x6b, 0x24, 0x58, 0x94, 0xb9, 0x0d,
    0x57, 0xb0, 0xf3, 0xd5, 0x9a, 0x0c, 0x16, 0x01
};

unsigned char dit_private_key[] = {
    0xdb, 0x77, 0xd6, 0x2f, 0xc8, 0x87, 0x26, 0xf1,
    0xc5, 0xa6, 0xb7, 0x9b, 0x00, 0x3b, 0x3b, 0xca,
    0x83, 0x34, 0x9e, 0x33, 0x43, 0x37, 0xde, 0x84,
    0xbd, 0x17, 0x34, 0x4a, 0xb6, 0x01, 0xdb, 0x74
};

unsigned char buf[sizeof(message)] = { 0 };

int res, vote;

res = crypto_box_open(buf, message, sizeof(message), nonce, public_key, dit_private_key);
vote = *((int*)(buf + crypto_secretbox_ZEROBYTES));
printf("%x\r\n", vote);

И действительно – расшифрованное сообщение содержит 4 байта 1a d5 be 0d – голос “против” на этом голосовании.

Так вот, возвращаясь к тому, что бесит. Во-первых, бесят просранные талантливыми фронтендерами 32 байта – зачем засовывать voting id в виде строки? Во-вторых – бесит полное отсутствие описание формата передаваемых данных – вот я его разобрал довольно элементарным способом, но пока так и не знаю о назначении еще 64 байт в конце – похоже, что это как-то связано с блокчейном и криптографической подписью для него, но я не уверен.

Боженька, побей их всех по голове ЕСПД.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Не чокаясь

Москва несет очередные потери от китайского вируса. Пишут, что чебуречная на Китай-Городе закрылась.

china-town-rip

https://www.facebook.com/photo.php?fbid=10158502115367930&set=a.10150099797007930&type=3

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Обожаю хабр

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

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

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

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

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

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

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

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

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

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

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

Автосимуляторное

Узнал тут о существовании “новой физики” и “чешского плагина” для вышедшей еще в 2004 году Richard Burns Rally. А еще оказывается – в этой вроде бы древней игрушке до сих пор проводят довольно представительные “киберспортивные” соревнования:

http://rbr-russia.ru/championships/

А с другой стороны – посмотрел тут в магазинах цены на минимально подходящие для серьезных игр рули и как-то немного опечалился:

https://www.dns-shop.ru/catalog/6809155f0e06c3d1/igrovye-ruli/

За такие деньги можно и Жигуар купить и гонять по пока еще не закатанным в асфальт дорожкам Московской области, закидывая камнями мирно едущих на дачу граждан.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Бритоголовый и С1-97

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

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

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

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

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

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

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

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

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

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

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).