Евгений Степанищев

Этот сайт — моя персональная записная книжка. Интересна мне, по большей части, история, своя жизнь и немного программирование.

Физика и «Энканто»

Смотрели сегодня вечером с дочкой мультфильм «Энканто». Там есть момент, где главная героиня с трудом поднимается по очень и очень длинной лестнице. В конце она идёт еле-еле, но всё же добирается до верха, пересекает опасную пропасть, а в потом случайно роняет вниз камень. Примерно на этом моменте дочка спросила меня — насколько, по моему мнению, длинную лестницу пришлось преодолевать героине.

Я подумал, — тут камень падает со звуком, высоту же можно просто вычислить! Пришлось, правда, вспоминать физику.

У нас есть формула свободного падения: h = ¹⁄₂ × g × t². Время за которое звук дошёл от точки падения до нас — h / v, где v = 343 м/с. Время мы с дочкой замерили секундомером — 7,43 секунды.

Получается, 7,43 = t + h / v. Подставляем одну формулу в другую: t + (¹⁄₂ × g × t²) / v = 7,43. Упрощаем: t + gt² / 2v = 7,43. Подставляем: g ≈ 9,8 м/с² и v = 343 м/c. Получается: t + 9,8t² / (2 × 343) = 7,43. Единицы измерения я использовать не буду, мне лень.

Отсюда получается следующее квадратное уравнение: 0,01428571429×t² + t − 7,43 = 0. Его решение даёт нам два значения: -76,77439 и 6,77439. Отрицательное значение отбрасываем, оставляем только положительное.

Это время за которое упал камень с поправкой на скорость звука, которому надо было ещё до нас долететь. Теперь находим высоту по формуле h = ¹⁄₂ × gt². Если подставить все цифры, h ≈ ¹⁄₂ × 9,8 × (6,77439)², получается примерно 225 метров.

Если принять высоту этажа около трёх метров, то это высота 75-этажного дома. Судя по информации в интернете, количество ступенек между этажами обычно около 11, значит это около 825 ступеней.

Много пришлось подниматься.

Дочка у подруги

Дочка сегодня впервые в жизни осталась у школьной подруги с ночёвкой. Две недели недели до этого она болела, в школу не ходила, видимо очень соскучилась. Созванивались с друг другом каждый вечер, болтали по часу и более и как-то пришла им в голову идея, чтобы Ева приехала в гости ночевать.

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

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

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

Атрибут LANGUAGE

Просматривал тут публичные репозитории некого соискателя одной из наших вакансий, обратил внимание, что у него там, помимо всего прочего, лежат решённые задания со «Стэпика». Заглянул из любопытства, никаких особенных выводов не сделал, но удивился, что в тегах одного задания у него script содержит атрибут language. Это что же, его до сих пор учат писать?

Мне стало любопытно — он вообще сейчас какое-то значение имеет? Браузеры на него ориентируются? Когда-то он вполне имел смысл — у «Эксплорера», например, там мог стоять VBScript или, например, JScript.Encode — зашифрованный текст программы на ДжейСкрипте, это такой диалект ДжаваСкрипта от Микрософта.

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

А что же считается верным значением для ДжаваСкрипта? В угадайку играть не хотелось, скачал исходники «Хромиума», посмотрел что там используется. Как оказалось, подставить можно следующие значения (регистр значения не имеет):

  • javascript или x-javascript — это понятно, единственный сюрприз, что можно поставить «экс» перед словом;
  • ecmascript или x-ecmascript — тоже понятно, ДжаваСкрипт — расширение этого языка;
  • jscript — диалект языка в «Эксплорере», считается, что другие браузеры сейчас его тоже «знают», хотя на деле есть нюансы, но всем уже всё равно;
  • от javascript1.0 до javascript1.5 — когда-то указанием версии можно было разделять скрипты по уровню поддержки языка в браузере;
  • livescript — старое название языка «ДжаваСкрипта», я ещё помню времена, когда это значение использовалось, хотя и редко.

Сейчас, конечно, это скорее археология, чем какое-то нужное знание.

Сжатие и картинки

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

Поступают иначе — в браузер и сервер вносят реализацию сжатия и распаковки и те же самые текстовые данные начинают передаваться чуточку быстрее.

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

Например, в PNG это DEFLATE, в GIF — LZW.

В принципе, никто не мешает наложить встроенный в браузер алгоритм сжатия на формат графики, — протокол передачи это позволяет. Я уже экспериментировал подобным образом с форматом GIF, так как оказалось, что этот формат позволяет выключить встроенное сжатие. То есть я как бы выкидывал используемый в GIF древний LZW и заменял его на более современный DEFLATE, реализованный в браузере.

Тогда этот эксперимент ничего не дал, но недавно я его повторил. Только вместо DEFLATE использовал brotli, ещё более свежий алгоритм. GIF, в этом случае, стал меньше PNG. Это, кстати, не всегда так происходит, но в этом случае повезло. Я попробовал ещё и zstd, он ещё новее, но он жмёт хуже brotli, его достоинство в скорости.

Любопытно ещё, что когда я сжал через brotli картинку, сконвертированную в формат AVIF, она стала ещё меньше. Я такого не ожидал, мне казалось, что современные бинарные форматы делаются максимально экономно.

В общем, схема со сжатием графики в браузере, как будто бы, имеет право на существование.

Бубарочка

Недавно разговаривал с мамой по телефону — вспоминали её бабушку, мою прабабушку Евдокию Никаноровну. Мы, конечно, никогда не обращались к ней по имени-отчеству: насколько я помню, она всегда была для нас просто «бабушкой старенькой» — маленькой, совсем седой старушкой. Она ушла из жизни в 1999 году, прожив 96 лет. Я её довольно хорошо помню, но у мамы, разумеется, сохранилось куда больше воспоминаний.

В разговоре маме вспомнилось, что прабабушка отличалась особой аккуратностью — всегда одевалась строго и опрятно, часто сама шила себе одежду. «Бывало, утром сошьёт новый передничек, а к обеду уже щеголяет в нём по двору! Говорила: „Посмотри какая я бубарочка!“».

Слово «бубарочка» я даже сначала не расслышал, попросил маму мне написать. Позже оказалось, что «бубарочка» — это диалектное «бабочка». В интернете написано, что оно ещё в ходу, например, в Ярославле.

Не помню, чтобы когда-либо раньше слышал это слово. Интересно, откуда оно в лексиконе прабабушки? Как будто для Самарской губернии, где она родилась, оно не характерно. В 19-м веке её предков перевезли из-под Курска, может это слово приехало оттуда?

Евдокия Никаноровна в окружении родственников, в белом платочке. Интересная фотка — поют они что ли?

Родной двор

Смотрели с дочкой с утра ролик про то, как какой-то чел полностью нарисовал в «Анриле» свой собственный двор. Увлекательно выглядит. Видно, что сделано с большой любовью, он даже звуки подобрал и добавил в сцену. На всё у него ушло двадцать дней с нуля — опыта у него во всех инструментах до этого проекта не было.

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

А если было бы время, что можно было бы сделать?

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

Проще всего, конечно, было бы повторить бабушкин дом — по сравнению со двором площадь там невелика, да и растительности побольше, а её «сажать» проще всего. Референсных снимков тоже должно быть навалом, а то, чего нет на снимках, можно восстановить по памяти — мы с братишкой пропадали там почти каждый день летом.

Помимо этого есть ещё и карта придомового участка, схематичная, зато в масштабе. Я её нарисовал в детстве, так она и лежала, воткнутая во вторую тетрадку дневников жизни.

Обозначено там мало — тропинка от внутреннего дворика дома до бани с моим самодельным «домиком» за ней, кусты малины и смородины и деревья — ближе к дому вишня и калина, по остальной площади — яблони и тёрн, а около бани росла огромная черёмуха. Всё остальное пространство занимали грядки — огурцы, помидоры, патиссоны, лук, клубника, щавель, наверное что-то ещё. Два прямоугольника около бани и на противоположном конце карты — сваренные металлические ёмкости. В них запасалась вода для полива.

В общем, понесла меня моя фантазия. Было бы больше времени или умей с пользоваться этими инструментами, наверняка бы занялся.

Лидар и «Тесла»

Компания «Тесла» очень упорствует в своём нежелании использовать лидар в автомобилях для нужд автопилота. Их аргументы — это дорого, уродливо и не нужно — достаточно видеокамер.

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

Так я рассуждал, но думал, что, возможно, в моих размышлениях где-то есть изъян, который видят специалисты из «Теслы».

Вчера в новом ролике глубокообожаемого в кругу нашей семьи инженера Марка Робера, появилось тестирование автомобиля с лидаром и «Теслы» в различных сложных условиях — тумане, под шквальным дождём и даже с реалистично нарисованным на огромном плакате продолжением дороги.

Я всё не описываю, ролик имеет смысл посмотреть целиком, выделил лишь те условия, где камеры «Теслы» оказались бесполезными. Лидар, кстати, справился на «отлично» во всех случаях.

Остроумный тест с нарисованной дорогой особенно повеселил. Эта ситуация, безусловно, далека от жизненной, но протестировать такое очень интересно. Можно, конечно, пофантазировать — что-то огромное с нарисованным дорожным полотном может встретиться на рекламной плакате, размещённом на боковой поверхности прицепа грузовика. Но всё-таки туман или очень сильный дождь более реальны.

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

DeepSeek R1 на A100

Как я уже писал, мы попробовали позапускать «Дипсик Эр1» на разных конфигурациях графических ускорителей NVIDIA A100. Запускали не полную модель, а квантизованную. Неясно насколько она глупее на наших задачах, бегло попробовали разные тесты, как будто бы от квантизации она пострадала несильно.

Я собирался написать об этом ещё раз, когда мы разберёмся с подходящей конфигурацией, но как-то позабыл.

Выводы следующие.

Для того, чтобы модель поместилась в видеопамять, суммарно нужно около 150 гигабайт. То есть две Nvidia A100 по 80 ГБ подходят. Эта конфигурация позволяет работать одному пользователю в один момент времени. Остальные будут ждать, когда ресурс освободится. Соответственно, конфигурация, которая у меня на скриншоте, может отвечать одновременно двум пользователям.

При этом оперативная память почти не используется. Её можно выделять очень мало.

Если модель в видеопамять не умещается, она может загружаться в оперативную память, но при этом скорость её работы сильно падает, не советую.

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

Покупать при этом, конечно же, надо не A100, а H100, у них сейчас самое выгодное соотношение цена/вычислительная мощность. Ждать их дольше, но оно того стоит.

Что ты видишь, когда закрываешь глаза?

Если я не могу заснуть, то я не считаю барашков, у меня другой сюжет.

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

Я воображал себе огромный сложный лабиринт, сквозь который должен пролететь корабль. При этом корабль у меня оставался на месте, а лабиринт я вращал и двигал, как бы продевая корабль через него.

Не помню как и почему, но несколько лет назад лабиринт и корабль уступили место бездонной огромной яме, в которую я падаю, при этом падаю довольно медленно и без ускорения.

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

Один раз я не мог заснуть настолько долго, что построил целый дом. Правда он качался и надёжным не выглядел, но во сне я был рад. Но, как правило, я засыпаю быстрее.

Кстати, даже сейчас, когда я всё это описываю, начинаю хотеть спать.

А вы используете что-то такое, чтобы уснуть?

Обфускация кода

Есть такой метод защиты кода от исправлений и анализа — обфускация. Это когда мы удаляем из кода форматирование, комментарии и все осмысленные названия исправляем на бессмысленные. Обфускацию используют не только для этого, но для нашего разговора это несущественно.

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

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

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

Деобфускация портированного кода, которую мне помог сделать «Госпромпт», ниже в коде эти переменные тоже переименованы

Пару слов о том, какая защита могла бы сработать против чтения кода нейросетями. Надо поступать ровно обратным образом — давать сущностям максимально подробные, но неправильные имена и комментарии. Мои эксперименты показывают, что такой метод пока имеет право на существование. Нейросети очень сильно ориентируются на смысл в названиях и промтами такое поведение крайне сложно купировать.

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

«Война и миръ»

Кому лень читать: Толстой в названии романа использовал два антонима: «война» и «мир». Под «миром» не имелась ввиду «вселенная»

Время от времени читаю где-нибудь, что Лёв Толстой, когда писал книгу «Война и мир», имел ввиду не «мир», который антоним «войны», а «мир», который синоним «вселенной». Вроде этот нюанс потерялся после реформы русского языка, которая сравняла буквы «і» и «и» — два разных значения писались с разными буквами.

Я, если ничего не путаю, когда-то разобрался в этом вопросе, но недавно понял, что не помню к каким выводам тогда пришёл. У меня в памяти осталась пометка «всё не так просто» без самого понимания что там «не так». Поэтому решил разобраться ещё раз и на этот раз записать свои мысли во внешнюю память — на сайт.

Для начала надо найти дореволюционное издание «Войны и мира», чтобы посмотреть как там было написано. Я нашёл первое издание. Отсутствие кратки у «й», видимо, какая-то ошибка — во втором томе и дальше она есть.

Л. Н. Толстой, «Война и миръ», Типографія Т. Рисъ, Москва, 1868

Как видим, тут «миръ», через «и». Означает ли это слово «вселенная»?

Давайте посмотрим на это слово в контексте. 19 февраля 1878 года между Российской и Османской империями был заключён мирный договор, завершивший русско-турецкую войну 1877—1878 годов. Правительств выпустило по этому поводу извещение, где слово «мир», как противоположность войне, написано через «и».

«Миръ 19 Февраля 1878 года. Правительственное извѣщеніе», Типографія И. И. Родзевича, Москва, 1878

То есть Толстой в названии своего романа слово «вселенная» ввиду не имел. Откуда же у разбираемого заблуждения ноги растут? Вероятно смуту внесла поэма Владимира Маяковского «Война и міръ», где слово «мир» как раз было написано через десятичную «и» и означало «вселенная».

В. Маяковскій, «Война и міръ», издательство «Парусъ», Петроград, 1917

А было ли вообще слово «міръ» из-за которого весь сыр-бор? Маяковский был горазд выдумывать слова, может и это слово он придумал?

Я нашёл несколько примеров употребления слова «міръ», как во времена Маяковского, так и задолго для него, но в качестве характерного примера выбрал переводной роман Герберта Уэллса «Освобожденный міръ». Тут слово «міръ» явно использовано в значении «вселенная». Если бы это было не так, вместо слова «міровой» использовалось бы «мирный».

Г. Уэллсъ, «Освобожденный міръ. Повесть о человѣчествѣ», Универсальная библіотека, Москва, 1919

Суббота

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

Проснулся сегодня в семь от того, что пришёл какой-то пуш. На экране смартфона краем глаза заметил время, подумал, что проспал — в будни-то я встаю в 6³⁰. Лихорадочно соображая, пытаюсь понять как это случилось и как теперь моментально собрать дочку на школьный автобус, в то же время покормив, но, к счастью, замечаю на том же экране ещё и день недели.

Ложиться обратно не стал, пошёл жену поздравлять с праздником, она давно уже встала.

Собрались в отпуск

Я как-то не особо умею равномерно распределять отпуска, поддерживая уровень утомления на приемлемом уровне. У меня это всегда что-то стремительное, почти моментальное, когда я вдруг понимаю, что безмерно устал и уже целую вечность не был в отпуске.

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

С этого момент жизнь как-то понеслась вскачь. Дочка утверждает, что время для неё, напротив, как будто замедлилось, но у меня с этими хлопотами это не так. Оказалось, что у меня для отдыха нет целой кучи необходимых предметов. Поэтому я всё время что-то выбираю и заказываю — у меня растущий организм и из всех имеющихся предметов я уже немного вырос.

Сам виноват, конечно, в новогодние праздники расслабился, забил на спорт и до недавнего времени не занимался. Теперь потихоньку возвращаюсь назад, но — потихоньку. В отпуске буду заниматься интенсивнее. Где много отдыха, там и нагрузку себе можно позволить побольше.

«Офис» под «Мак»

Ну почему микрософтский «Офис» на «Маке» всегда ведёт себя, как слон в посудной лавке? Ситуация с годами, конечно, меняется к лучшему, но по-прежнему есть где поплеваться. Из плюсов — свежайшая 16-я версия хотя бы стала смотреться естественно, а не так, будто я её запускаю через виртуалку с Виндоуз.

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

Препараты для микроскопа

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

Когда я учился в школе, мы готовили препараты сами. Смутно помню, что там надо было делать срез, потом чем-то капать на предметное стекло, накрывать какой-то мелкой стекляшкой сверху и смотреть. Но с той поры утекло много воды и сейчас я препараты, конечно же, самостоятельно делать не умею. Поэтому решил прикупить что-нибудь новенькое-готовенькое — на одно и тоже смотреть-то уже надоело.

Купил первое попавшееся, дёшево и много. Тему не изучил, каюсь. Ну хоть стоило копейки.

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

Вывод: экономить не надо, а надо вдумчиво читать отзывы, выбирая только то, что сделано на стекле.

Ранее Ctrl + ↓