Приняли коммит в bc
Загадочный звук
Думаю, ни за что не догадаетесь. Что производит этот загадочный звук у нас в квартире? Звук не разовый, тихий, раздаётся в квартире в одном и том же месте. Завтра напишу правильный ответ.
Добавлено: правильный ответ такой: эти звуки издают ахатины, домашние питомцы нашей дочери. Не знаю чем конкретно они это делают, возможно это звук трения панциря о стенки террариума.
Дневной гедонизм
Вчера впервые, кажется, в жизни, «уснул под телик». Не совсем под телик — поставил на ноуте двухчасовую лекцию Алексея Семихатова, доктора
Много слышал о благодатном воздействии дневного сна на организм, у нас на работе молодёжь повально кемарит в комнате отдыха, но считал, что во мне эта способность генетикой не обеспечена, — не могу уснуть днём, хоть убей. А тут уснул на интересной,
Дочка, кстати, тоже с ностальгией вспоминает садик — не ценила, говорит, что можно было спать днём, а сейчас очень этого не хватает.
Попробую в следующие выходные ещё его послушать, надеюсь толерантность к его голосу не разовьётся. Хочется такого же заряда бодрости каждые выходные.
Препараты для микроскопа
Нам с дочкой очень нравится смотреть на всякие штуки через микроскоп. Мы пробовали рассматривать как всякую найденную мелочь, так и готовые препараты, которые шли в комплекте. Последние, конечно, сильно интереснее. На фотографии как раз один из них.
Когда я учился в школе, мы готовили препараты сами. Смутно помню, что там надо было делать срез, потом
Купил первое попавшееся, дёшево и много. Тему не изучил, каюсь. Ну хоть стоило копейки.
Пришёл
Вывод: экономить не надо, а надо вдумчиво читать отзывы, выбирая только то, что сделано на стекле.
«Офис» под «Мак»
Ну почему микрософтский «Офис» на «Маке» всегда ведёт себя, как слон в посудной лавке? Ситуация с годами, конечно, меняется к лучшему,
Жирный минус в том, что она всё время запускает
Собрались в отпуск
Я
Вот и в этот раз так, я вдруг со всей отчётливостью понял, что со времени последнего отпуска прошло уже девять месяцев, и засобирался. Одним днём выбрал направление, потом быстро обсудили с женой отели, оплатили, доплатили за ранний заезд и поменяли деньги. Осталось дождаться отлёта.
С этого момент жизнь
Сам виноват, конечно, в новогодние праздники расслабился, забил на спорт и до недавнего времени не занимался. Теперь потихоньку возвращаюсь назад, но — потихоньку. В отпуске буду заниматься интенсивнее. Где много отдыха, там и нагрузку себе можно позволить побольше.
Суббота
Неделя эта была
Проснулся сегодня в семь от того, что пришёл
Ложиться обратно не стал, пошёл жену поздравлять с праздником, она давно уже встала.
«Война и миръ»
Кому лень читать: Толстой в названии романа использовал два антонима: «война» и «мир». Под «миром» не имелась ввиду «вселенная»
Время от времени читаю
Я, если ничего не путаю,
Для начала надо найти дореволюционное издание «Войны и мира», чтобы посмотреть как там было написано. Я нашёл первое издание. Отсутствие кратки у «й», видимо,
Как видим, тут «миръ», через «и». Означает ли это слово «вселенная»?
Давайте посмотрим на это слово в контексте. 19 февраля 1878 года между Российской и Османской империями был заключён мирный договор, завершивший
То есть Толстой в названии своего романа слово «вселенная» ввиду не имел. Откуда же у разбираемого заблуждения ноги растут? Вероятно смуту внесла поэма Владимира Маяковского «Война и міръ», где слово «мир» как раз было написано через десятичную «и» и означало «вселенная».
А было ли вообще слово «міръ»
Я нашёл несколько примеров употребления слова «міръ», как во времена Маяковского, так и задолго для него, но в качестве характерного примера выбрал переводной роман Герберта Уэллса «Освобожденный міръ». Тут слово «міръ» явно использовано в значении «вселенная». Если бы это было не так, вместо слова «міровой» использовалось бы «мирный».
Обфускация кода
Есть такой метод защиты кода от исправлений и анализа — обфускация. Это когда мы удаляем из кода форматирование, комментарии и все осмысленные названия исправляем на бессмысленные. Обфускацию используют не только для этого, но для нашего разговора это несущественно.
Это довольно очевидная мысль, но, кажется, её ещё никто не высказывал — обфускация, как метод защиты кода, доживает последние деньки. Можно уже прямо сейчас от него отказываться и искать
Большие языковые модели очень успешно разбирают обсусцированный или запутанно написанный код, не тратя на это
При этом опасность такой деобфускации минимальна, даже если нейросеть
Пару слов о том, какая защита могла бы сработать против чтения кода нейросетями. Надо поступать ровно обратным образом — давать сущностям максимально подробные, но неправильные имена и комментарии. Мои эксперименты показывают, что такой метод пока имеет право на существование. Нейросети очень сильно ориентируются на смысл в названиях и промтами такое поведение крайне сложно купировать.
Добавлено: читатель в комментариях справедливо замечает, что такой код можно обфусцировать стандартными средствами, а потом деобфусцировать нейросетями.
Да, но для этого надо знать, что его защитили таким методом, а узнать это, как будто бы, не очень просто. Вряд ли каждый догадается обфусцировать код перед последующим анализом.
Что ты видишь, когда закрываешь глаза?
Если я не могу заснуть, то я не считаю барашков, у меня другой сюжет.
Барашков, думаю, я не считал вообще никогда, но может просто не помню. Наверное этот способ на мне не очень хорошо работал, поэтому я решил утомлять мозг не скукой, а сложной воображательной задачей.
Я воображал себе огромный сложный лабиринт, сквозь который должен пролететь корабль. При этом корабль у меня оставался на месте, а лабиринт я вращал и двигал, как бы продевая корабль через него.
Не помню как и почему, но несколько лет назад лабиринт и корабль уступили место бездонной огромной яме, в которую я падаю, при этом падаю довольно медленно и без ускорения.
Пролетая мимо меня, в яму так же падают всякие полезные штуки, самые полезные из которых — арбалеты, при помощи которых можно было выстрелить в уходящие вверх стены болтами с привязанными к ним верёвками. Поймав несколько таких в самом начале сна, я сплетаю верёвки между собой, перестаю падать и начинаю обустраивать быт, вплетая падающие предметы в свою верёвочную паутину.
Один раз я не мог заснуть настолько долго, что построил целый дом. Правда он качался и надёжным не выглядел, но во сне я был рад. Но, как правило, я засыпаю быстрее.
Кстати, даже сейчас, когда я всё это описываю, начинаю хотеть спать.
А вы используете
DeepSeek R1 на A100
Как я уже писал, мы попробовали позапускать «Дипсик Эр1» на разных конфигурациях графических ускорителей NVIDIA A100. Запускали не полную модель, а квантизованную. Неясно насколько она глупее на наших задачах, бегло попробовали разные тесты, как будто бы от квантизации она пострадала несильно.
Я собирался написать об этом ещё раз, когда мы разберёмся с подходящей конфигурацией,
Выводы следующие.
Для того, чтобы модель поместилась в видеопамять, суммарно нужно около 150 гигабайт. То есть две Nvidia A100 по 80 ГБ подходят. Эта конфигурация позволяет работать одному пользователю в один момент времени. Остальные будут ждать, когда ресурс освободится. Соответственно, конфигурация, которая у меня на скриншоте, может отвечать одновременно двум пользователям.
При этом оперативная память почти не используется. Её можно выделять очень мало.
Если модель в видеопамять не умещается, она может загружаться в оперативную память, но при этом скорость её работы сильно падает, не советую.
Ядер центрального процессора при этом много не надо. Иногда по непонятной причине они нагружаются, но не сильно. Около пары десятков ядер хватает за глаза, можно было уменьшать, но мы этот параметр не крутили.
Покупать при этом, конечно же, надо не A100, а H100, у них сейчас самое выгодное соотношение цена/вычислительная мощность. Ждать их дольше, но оно того стоит.
Лидар и «Тесла»
Компания «Тесла» очень упорствует в своём нежелании использовать лидар в автомобилях для нужд автопилота. Их аргументы — это дорого, уродливо и не нужно — достаточно видеокамер.
Я совершенно не специалист, но знаю, благодаря своему копательскому хобби, что лидары, например, используют для сканирования земной поверхности, чтобы находить скрытые в лесах строения. На мой взгляд, это значит, что лидары могут быть полезны, например, в тумане — то есть там, где препятствие в видимом диапазоне
Так я рассуждал, но думал, что, возможно, в моих размышлениях
Вчера в новом ролике глубокообожаемого в кругу нашей семьи инженера Марка Робера, появилось тестирование автомобиля с лидаром и «Теслы» в различных сложных условиях — тумане, под шквальным дождём и даже с реалистично нарисованным на огромном плакате продолжением дороги.
Я всё не описываю, ролик имеет смысл посмотреть целиком, выделил лишь те условия, где камеры «Теслы» оказались бесполезными. Лидар, кстати, справился на «отлично» во всех случаях.
Остроумный тест с нарисованной дорогой особенно повеселил. Эта ситуация, безусловно, далека от жизненной, но протестировать такое очень интересно. Можно, конечно, пофантазировать —
Резюме: лидар, наверное, действительно дорогая штука и вписать в дизайн его сложно,
Родной двор
Смотрели с дочкой с утра ролик про то, как
Я, конечно, сразу стал примерять что бы я такое мог сделать, тем более и дочка рядом говорит — давай, папа, попробуем. Я трезво оцениваю своё свободное время, поэтому даже и пробовать не буду, но фантазия заработала на полную.
А если было бы время, что можно было бы сделать?
Выбор тут невелик — либо родительский двор, где я жил с начальной школы до окончания техникума, либо бабушкин дом. Вторая бабушка жила в квартире и во дворе я там почти не бывал, так что воспоминаний о нём мало.
Проще всего, конечно, было бы повторить бабушкин дом — по сравнению со двором площадь там невелика, да и растительности побольше, а её «сажать» проще всего. Референсных снимков тоже должно быть навалом, а то, чего нет на снимках, можно восстановить по памяти — мы с братишкой пропадали там почти каждый день летом.
Помимо этого есть ещё и карта придомового участка, схематичная, зато в масштабе. Я её нарисовал в детстве, так она и лежала, воткнутая во вторую тетрадку дневников жизни.
Обозначено там мало — тропинка от внутреннего дворика дома до бани с моим самодельным «домиком» за ней, кусты малины и смородины и деревья — ближе к дому вишня и калина, по остальной площади — яблони и тёрн, а около бани росла огромная черёмуха. Всё остальное пространство занимали грядки — огурцы, помидоры, патиссоны, лук, клубника, щавель, наверное
В общем, понесла меня моя фантазия. Было бы больше времени или умей с пользоваться этими инструментами, наверняка бы занялся.
Бубарочка
Недавно разговаривал с мамой по телефону — вспоминали её бабушку, мою прабабушку Евдокию Никаноровну. Мы, конечно, никогда не обращались к ней
В разговоре маме вспомнилось, что прабабушка отличалась особой аккуратностью — всегда одевалась строго и опрятно, часто сама шила себе одежду. «Бывало, утром сошьёт новый передничек, а к обеду уже щеголяет в нём по двору! Говорила: „Посмотри какая я бубарочка!“».
Слово «бубарочка» я даже сначала не расслышал, попросил маму мне написать. Позже оказалось, что «бубарочка» — это диалектное «бабочка». В интернете написано, что оно ещё в ходу, например, в Ярославле.
Не помню, чтобы
Сжатие и картинки
Я тут размышлял о том, что в вебе, когда человечество изобретает новый алгоритм сжатия, для текстовых файлов, содержащих программный код или разметку, никто не придумывает новый формат, в котором это всё будет передаваться.
Поступают иначе — в браузер и сервер вносят реализацию сжатия и распаковки и те же самые текстовые данные начинают передаваться чуточку быстрее.
С картинками так не происходит. Понятно, что многие форматы имеют специальные алгоритмы для удаления части информации, которая не так уж и важна глазу, зато позволяет эффективнее сжимать,
Например, в PNG это DEFLATE, в GIF — LZW.
В принципе, никто не мешает наложить встроенный в браузер алгоритм сжатия на формат графики, — протокол передачи это позволяет. Я уже экспериментировал подобным образом с форматом GIF, так как оказалось, что этот формат позволяет выключить встроенное сжатие. То есть я как бы выкидывал используемый в GIF древний LZW и заменял его на более современный DEFLATE, реализованный в браузере.
Тогда этот эксперимент ничего не дал, но недавно я его повторил. Только вместо DEFLATE использовал brotli, ещё более свежий алгоритм. GIF, в этом случае, стал меньше PNG. Это, кстати, не всегда так происходит, но в этом случае повезло. Я попробовал ещё и zstd, он ещё новее, но он жмёт хуже brotli, его достоинство в скорости.
Любопытно ещё, что когда я сжал через brotli картинку, сконвертированную в формат AVIF, она стала ещё меньше. Я такого не ожидал, мне казалось, что современные бинарные форматы делаются максимально экономно.
В общем, схема со сжатием графики в браузере, как будто бы, имеет право на существование.
Атрибут LANGUAGE
Просматривал тут публичные репозитории некого соискателя одной из наших вакансий, обратил внимание, что у него там, помимо всего прочего, лежат решённые задания со «Стэпика». Заглянул из любопытства, никаких особенных выводов не сделал, но удивился, что в тегах одного задания у него script содержит атрибут language. Это что же, его до сих пор учат писать?
Мне стало любопытно — он вообще сейчас
Проверил. В документации он считается устаревшим, но если подставить туда неизвестное браузеру значение, скрипт не выполняется. В принципе, это логично. В интернете вполне могут встречаться ещё и древние сайты, использующие другие языки, зачем выполнять то, что браузер выполнить не может?
А что же считается верным значением для ДжаваСкрипта? В угадайку играть не хотелось, скачал исходники «Хромиума», посмотрел что там используется. Как оказалось, подставить можно следующие значения (регистр значения не имеет):
- javascript или x-javascript — это понятно, единственный сюрприз, что можно поставить «экс» перед словом;
- ecmascript или x-ecmascript — тоже понятно, ДжаваСкрипт — расширение этого языка;
- jscript — диалект языка в «Эксплорере», считается, что другие браузеры сейчас его тоже «знают», хотя на деле есть нюансы, но всем уже всё равно;
- от javascript1.0 до javascript1.5 —
когда-то указанием версии можно было разделять скрипты по уровню поддержки языка в браузере; - livescript — старое название языка «ДжаваСкрипта», я ещё помню времена, когда это значение использовалось, хотя и редко.
Сейчас, конечно, это скорее археология, чем
Дочка у подруги
Дочка сегодня впервые в жизни осталась у школьной подруги с ночёвкой. Две недели недели до этого она болела, в школу не ходила, видимо очень соскучилась. Созванивались с друг другом каждый вечер, болтали по часу и более
Видимо они там плотно заняты — дочь нашла время только записать мне скомканное, но полное радости «отлично». Позже мы с женой позвонили, у неё всё хорошо, играют, разговор был не особо долгий — видно было, что не терпится вернуться к играм.
Пусть развеется после болезни, а то просидела дома две недели, плюс кружки пришлось отменить. Она очень активный ребёнок, ей такое в тягость, но болезнь
Добавлено: в итоге, пришлось забрать дочку оттуда ближе к десяти — набесилась, видимо от избытка эмоций не смогла уснуть в незнакомом месте.
Физика и «Энканто»
Смотрели сегодня вечером с дочкой мультфильм «Энканто». Там есть момент, где главная героиня с трудом поднимается по очень и очень длинной лестнице. В конце она идёт
Я подумал, — тут камень падает со звуком, высоту же можно просто вычислить! Пришлось, правда, вспоминать физику.
У нас есть формула свободного падения: 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 метров.
Если принять высоту этажа около трёх метров, то это высота 825 ступеней 1650 ступеней, так как пролёта между этажами — два.
Много пришлось подниматься.
Поправил ошибку в bc
Вчера часа проснулся около часа ночи, сна ни в одном глазу.
Бродил по коду
for (i = 0; i < f->autos.len; ++i)
{
// Get the auto.
BcAuto* aptr = bc_vec_item(&f->autos, i);
// If they match, barf.
if (BC_ERR(idx == aptr->idx && type == aptr->type))
{
const char* array = type == BC_TYPE_ARRAY ? "[]" : "";
bc_error(BC_ERR_PARSE_DUP_LOCAL, line, name, array);
}
}Посмотрел что тут происходит и заметил, что в перечислении, описывающем виды параметров,
define a(*t[], t[]) {}Подумал, что уже достаточно утомился, чтобы лечь спать,
Уже утром я прочитал сообщение по моему коммиту — автор bc попросил отформатировать код и написать небольшой тест. Я всё исправил и теперь ещё немного моего кода есть в этой прекрасной утилите!
Странности bc
Чем больше узнаёшь bc, тем больше в нём находишь странностей. Особенно меня поражают массивы.
Например, как вы думаете, чему равна длина массива, в который мы ещё ни разу не инициализировали? Правильно, единице. Почему? Да чёрт его знает, так в коде написано:
void
bc_array_init(BcVec* a, bool nums)
{
BC_SIG_ASSERT_LOCKED;
// Set the proper vector.
if (nums) bc_vec_init(a, sizeof(BcNum), BC_DTOR_NUM);
else bc_vec_init(a, sizeof(BcVec), BC_DTOR_VEC);
// We always want at least one item in the array.
bc_array_expand(a, 1);
}Или вот такой код:
define void f(*a[]) {
. = a[99]
}
f(b[]); length(b[])Чему будет равна длина массива b[]?
Правильный ответ — она будет равна ста. Потому что в функции, куда мы передали этот массив по ссылке, происходит чтение
// The bc spec says that if an element is accessed that does not
// exist, it should be preinitialized to 0. Well, if we access
// an element *way* out there, we have to preinitialize all
// elements between the current last element and the actual
// accessed element.
if (v->len <= idx)
{
BC_SIG_LOCK;
bc_array_expand(v, bc_vm_growSize(idx, 1));
BC_SIG_UNLOCK;
}Как только идёт обращение к несуществующему элементу массива, неважно, для чтения или записи, он получается значение «ноль».
В этих случаях я даже уже и не понимаю — баги это или нет. Вроде нет, но выглядит контринтуитивно.
Давай, до свидания!
Да это уже невозможно, я
Стоит задуматься, как руки сами набирают адрес «Пикабу»! Если вы думаете, что это
sudo tee -a /etc/hosts <<<"::1 pikabu.ru"RedBoot
У меня сегодня был очень длинный и довольно тяжёлый перелёт — летели около девяти часов в отпуск в Китай. Вылетели нашим вечером, прилетели их утром. Я не сплю в самолётах
В салоне самолёта, которым мы летели, в подголовники кресел встроена система развлечений, крайне тормозная, но неплохая. Я пытался с её помощью отвлечься от тягот полёта, пока, совершенно случайно не научился её перезагружать.
Само приложение, похоже, написано с использованием
TODO: попросить chatgpt сгенерировать сюда заголовок
Реально, у многих, включая меня, уже есть
В общем, время, когда можно было, не редактируя, использовать то, что генерируют нейросети потихоньку проходит. Можно, конечно, серьёзнее работать с промтами, но это, как будто, пока более затратно, чем переработка текста человеком.