Тибетская малина

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

И вот, наконец, дождались небольшого урожая. Ягоды крупные, ярко-красные, очень красивые — прямо декоративные. На вкус необычные: сладости почти нет, скорее лёгкая кислинка с травянистым оттенком, что-то между малиной и шиповником. Много, наверное, не съешь, но угоститься очень интересно.

Красные ягоды малины в металлическом дуршлаге, который держит рука над раковиной.

4 комментария

Промпты и маленькие большие языковые модели

«Любые предложения люди языковые модели понимают иначе, чем тот, кто их вносит».
— третий закон Чизхолма.

На работе довольно много в последнее время пишу промпты для небольших больших языковых моделей. Уж извините за оксюморон, но как иначе их называть? Большие языковые модели сейчас бывают очень разного размера. Я много использую модели размером примерно до 70 миллиардов параметров. Чаще — ещё меньше.

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

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

Тем не менее и это не помогает на 100%. В общих случаях всё равно где-то что-то ломается. В итоге, такие промпты похожи на ремонт: их нельзя завершить, можно только прекратить волевым решением.

Оставить комментарий

Степанищевы в Белгородской области

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

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

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

Схема родословной Степанищевых: Арефий (1677–Умер), Меркул (≈1652–Умер), Иван (≈1627–Умер), Кондратий (≈1602–Умер), Самсон (≈1577–Умер).

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

Интересно, кстати, что предки моего вероятного родственника приехали из-под Курска, откуда родом и мой род. Вот что когда-то было записано со слов Ивана Кондратьевича Степанищева:

Отец мой из Курска сведён в Карпов на вечное житье, и в Карпове отец мой служил городскую службу, и в Карпове отец мой умре тому лет с тритцать и больши. А ныне я служу солдацкую службу. Поместье за мною в Карповском уезде в деревни Раковой дватцать чети, да подгородной на драгунском поли десять четвертей, в поли аж дву потому ж. Детей у меня четыре сына: Дарошка тритцать, Ротька девять лет, Ивашка семи, Раска пяти лет. А других у меня детей и братьев, и племянников, и пришлых людей никово нет.

Так что у меня родилась мысль — попробовать кого-нибудь нанять покопать родословную дальше, вдруг ещё удастся продвинуться?

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

Кстати, в процессе изучения этого небольшого отрывка я наткнулся на описание того как выглядел город Карпов в 17-м веке, попросил нейросеть выписать из этого рассказа факты, соединить их с фактами из «Википедии» и нарисовать город как он мог бы выглядеть в то время.

Детали, конечно, прорисованы отвратительно (рисовал при помощи ЧатаГПТ 5), но если не приглядываться, то сойдёт. Я минут 40 писал промпт вместе с нейросетью, вычленяя ошибки и, наконец смирился с тем, что заставить сеть учесть все детали за время, которое я согласен на это потратить, нереально. Компромиссный вариант прикрепляю.

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

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

7 комментариев

Однодворцы и фамилии

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

Массово фамилии у крестьян начали появляться в 1861 году, после отмены крепостного права. Поддержало этот процесс постановление Сената в 1888-м, но перепись 1897 года показала, что фамилий не имеет около 75 % населения.

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

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

Фрагмент рукописной ревизской сказки с именами и возрастом ревизских душ, включая выделенное имя «Степанка» и цифры в столбце справа.
Самарский фонд 150, опись 1, дело 24, лист 270, оборотная сторона, семья моего предка в 1834 году в Андреевке Самарской губернии

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

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

Однодворцы были уважаемым сословием и, как представители уважаемого сословия, имели фамилии. В эпоху реформ Петра I однодворцы постепенно теряли в правах, пока не сравнялись с крестьянами. В 1724 году были с ними объединены особым указом.

Позже политика в отношении однодворцев несколько раз менялась, но тренд на переход в крестьянское сословие остался, пока в начале 19 века сословие не упразднили окончательно. Видимо где-то в этот период утратились и фамилии.

Моим Степанищевым повезло — они свою фамилию не забыли. В переписи 1834 года, например, она ещё упоминается. Видимо, когда крестьянам стали возвращать фамилии, они её ещё помнили.

Оставить комментарий

MS-DOS Siberian edition

Думаю на Земле живёт очень мало людей, которые хоть раз компилировали бы MS-DOS. Теперь в этот клуб с сомнительными бенефитами влился и я, тем более, что «Микрософт» выложила исходники этой операционной системы по четвёртую версию.

Вроде там утекли и более свежие версии, но зачем нарушать закон, если всё равно какую версию собирать?

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

Теперь у меня есть «MS-DOS Siberian edition» — до компиляции поправил в исходниках несколько строк и все файлы теперь при выводе теперь называются понятным сибирякам термином.

Скриншот интерфейса MS-DOS 4.00 Syberia edition: команда mkdir vikhorka, копирование tree.com, переход в папку и вывод её содержимого (файл TREE.COM, 26 ГБ свободно).

Дополнено: дважды ошибся — Syberia вместо Siberian и vikhorka вместо vikhotka. Первое понятно — так называлась игра, которую у нас перевели как «Сибирь», вот у меня и застряло, а второе вспомнил неправильно — больше десяти лет не слышал этого слова.

10 комментариев

Илон-мазь

Купил себе мазь. И не просто мазь, а Илон Мазь! Как вам такое? Чисто импульсивная покупка. Китайцы, когда её называли, уверен, и не думали, что где-то на другом конце мира какой-то русский купит их мазь только из-за названия!

Коробка и тюбик мази ilon Classic Soothing Balm (Salbe classic) с надписью «Intensive Skin Care - for highly stressed skin» на деревянном фоне.

Оставить комментарий

RLE в bzip2

Очень меня поразил тот факт, что внутри очень эффективного архиватора bzip2 работает алгоритм RLE. Да, после очень хитрых перестановок данных, но RLE!

Это очень простое семейство алгоритмов сжатия, с которым я познакомился ещё в то время, когда у меня был «Спектрум».

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

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

Например:

01 02 03 03 03 03 03 03 03 04 04 04 → 01 02 03 03 05 04 04 01

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

И как-то похожий простой алгоритм трудится внутри bzip2! Мне кажется, этому нельзя не изумиться!

15 комментариев

Какой RLE лучше?

У меня тут в комментариях на сайте интересная дискуссия развернулась — есть ли преимущество у реализации RLE, которую я описывал, по сравнению с другим алгоритмом, который вспомнил один из читателей.

Для меня вполне очевидно, что на разных данных каждый из них может выиграть. Но что насчёт реальной жизни?

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

Какой же итог? В 1811 случаях выиграл алгоритм, который вспомнил я, в 2152 — который вспомнил читатель, в 3193 случаях оба алгоритма сделали только хуже — файл стал длиннее.

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

from itertools import groupby
from math import ceil
import os
import sys

try:
    filename = sys.argv[1]
except IndexError:
    filename = __file__

def reader(filepath):
    with open(filepath, "rb") as f:
        while chunk := f.read(4096): yield from chunk

def mark(x, y):
    if x == y: return (x, y)

    c1, c2 = (32, 31) if x < y else (31, 32)
    return (f'\x1B[{c1}m{x:+d}', f'\x1B[{c2}m{y:+d}')

flen = os.path.getsize(filename)

grouped_same = (tuple(x[1]) for x in groupby(reader(filename)))
chains = groupby(grouped_same, lambda it: len(it) == 1 or object())

bolk = maks = 0

for diff, x in chains:
    x = tuple(x) if diff is True else tuple(x)[0]
    l = len(x)

    if diff is True:
        bolk  += l                       #                {x} {y} {z}…
        maks  += l + ceil(l / (128 + 1)) # {l & 0x7F - 1} {x} {y} {z}…
    else:
        bolk  += (2 + 1) * ceil(l / (255 + 2)) # {x}            {x} {l}
        maks  += (1 + 1) * ceil(l / (128 + 2)) # {l & 0x7F - 2} {x}


bdiff, mdiff = mark(bolk - flen, maks - flen)

print(f'Len\t{flen}')
print(f"Bolk's\t{bolk}\t{bdiff}\x1B[0m")
print(f"Maks'\t{maks}\t{mdiff}\x1B[0m")

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

13 комментариев

Обратная сторона Луны

На днях в Казани было видно лунное затмение, долгое, можно было рассмотреть процесс во всех подробностях. Вроде давно уже у меня не было возможности на него посмотреть.

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

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

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

Красноватая Луна в полной фазе лунного затмения на чёрном ночном небе, с тенью Земли, закрывающей её левую часть.

17 комментариев

Гвозди в лепнине

В селе Бураково Спасского района стоит очень примечательная церковь. Я как-то проезжал мимо и она мне очень запомнилась, очень уж интересно выглядит — одни кресты с серповидными перекладинами внизу чего стоят, я таких, кажется, раньше не видел.

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

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

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

Обломки лепнины и облупившаяся краска на колоннах и сводах заброшенного здания с красным кирпичом.

13 комментариев

KDW-2025

В последние несколько месяцев мы всей командой на работе активно готовились к выставке Kazan Digital Week — планировали показать ИИ-ассистента для нашей системы документооборота «Практика».

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

1 комментарий

Космонавт

Случайно узнал, что в этом году на Kazan Digital Week приедет на автограф-сессию настоящий космонавт — Антон Шкаплеров. Четыре полёта к МКС, три выхода в открытый космос общей продолжительностью 21 час 39 минут.

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

Но на выставке что-то замотался, пропустил время и примчался в нужный павильон через семь минут после того, как космонавт ушёл. Пытался его разыскать — думал, может, недалеко отошёл, но где там!

Иду обратно грустный, глаза в пол. Замечаю, что иду прямо на какого-то человека. Поднимаю взгляд выше — вижу звезду Героя России. Не веря себе, смотрю в лицо… Подскакиваю к нему: «Антон Николаевич, извините пожалуйста! Обещал дочке, но пропустил автограф-сессию. Нельзя ли подписать книгу?»

Пока бегал, всё боялся: вдруг уйдёт. Но нет — дождался. А позже он ещё заглянул к нам на стенд: посмотреть, чем мы занимаемся, и сфотографироваться.

Открытая книга Оксаны Непомнящих «Подними голову! Земля и небо космонавта Антона Шкаплерова» с автографом на форзаце: «Ева! Мечтай и всё сбудется!

5 комментариев

Хороший актёр

Это немного странно осознавать, но иногда приходится объяснять самому себе какие-то совсем базовые вещи.

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

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

Почему мне это не было очевидно с самого начала — загадка.

2 комментария

Пата-пон!

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

Я знал о ней всё, что только можно, и, когда была возможность, докупал к ней разные аксессуары — колонки, GPS-трекер, модуль радио и так далее. Часто писал о ней в блоге. Со временем консоль морально устарела, и я потерял к ней всякий интерес. Много лет она пылилась в кладовке, а теперь вместе со всем накупленным барахлом лежит где-то в экспозиции музея «Яндекса».

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

Так что угадайте, что первым делом я установил, когда коллеги подарили мне на день рождения ретро-консоль с поддержкой игр для PSP?

Чёрный портативный игровой консоль на деревянном столе; на экране — экран завершения миссии с надписью «MISSION COMPLETE» и статистикой на русском языке.

8 комментариев

Какой RLE лучше-2

Какое-то время назад я сравнивал два разных алгоритма сжатия RLE. Один вспомнил сам, а второй прислал один из читателей.

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

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

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

В общем, новые результаты такие. Использовал на той же папке, что и в прошлый раз, но с той поры её состав немного поменялся. Алгоритм, который вспомнил я, лучше сжал 440 файлов, который предложил читатель — 4159, не удалось сжать вообще — 2507 файлов.

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

В общем, соотношение сильно изменилось.

Оставить комментарий

Имя-эксплоит

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

В газете «The Free Lance-Star» за 25 июня 1964 года можно найти о нём заметку, где утверждается, что его фамилия настолько длинная, что компьютер IBM 7074 страховой компании «John Hancock Mutual Life Insurance» завис («stops dead») при её обработке и полис пришлось оформлять вручную.

Я, конечно, сразу вспомнил известный комикс XKCD.

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

Мем: школа пишет, что компьютер сломан из-за SQL-инъекции «DROP TABLE Students». Мать спрашивает, научились ли они санитизировать ввод.

Если кому интересно, то согласно «Книге рекордов Гиннеса», его звали так:

Adolph Blaine Charles David Earl Frederick Gerald Hubert Irvin John Kenneth Lloyd Martin Nero Oliver Paul Quincy Randolph Sherman Thomas Uncas Victor William Xerxes Yancy Zeus Wolfeschlegelsteinhausen­bergerdorff­welche­vor­altern­waren­gewissenhaft­schafers­wessen­schafe­waren­wohl­gepflege­und­sorgfaltigkeit­beschutzen­von­angreifen­durch­ihr­raubgierig­feinde­welche­vor­altern­zwolf­tausend­jahres­voran­die­erscheinen­van­der­erste­erdemensch­der­raumschiff­gebrauch­licht­als­sein­ursprung­von­kraft­gestart­sein­lange­fahrt­hinzwischen­sternartig­raum­auf­der­suchen­ach­die­stern­welche­gehabt­bewohnbar­planeten­kreise­drehen­sich­und­wohin­der­neu­rasse­von­verstandig­menschlichkeit­konnte­fortpflanzen­und­sich­erfreuen­an­lebenslanglich­freude­und­ruhe­mit­nicht­ein­furcht­vor­angreifen­von­anderer­intelligent­geschopfs­von­hinzwischen­sternartig­raum.

14 комментариев

Ошмётки в консоли

Как известно, много лет назад «Эпл» перешла с процессоров «Интел» на собственные, основанные на архитектуре «АРМ». Процессоры несовместимы, однако бинарные программы, скомпилированные под «Интел», продолжают работать — в «МакОС» встроен специальный транслятор, который обеспечивает такую возможность.

Много лет я таскаю с собой различные утилиты, которые при переходе с одного «Макбука» на другой автоматически копируются при помощи встроенной в ОС процедуры миграции. Однако некоторое время назад я занялся тем, что с помощью brew перевёл всё это бинарное хозяйство на «АРМ».

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

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

Тут я каким-то образом догадался, что дело в кодах, задающих цвет приглашения. Спросил у ЧатаГПТ и тот подтвердил мою догадку.

Оказывается библиотека readline, отвечающая за редактирование текста в командной строке, неправильно считает длину строки, если в ней есть управляющие символы, — например, задающие цвет. Чтобы всё работало как надо, их надо обрамлять специальными последовательностями \[ и \]. Если я когда-то это и знал, то успел прочно забыть.

В общем, я заменил приглашение с

PS1='\e[33;1m\u: \e[31m\W$(__git_ps1)\e[0m \$ '

на

PS1='\[\e[33;1m\]\u:\[\e[0m\] \[\e[31m\]\W$(__git_ps1)\[\e[0m\] \$ '

и всё заработало как надо.

3 комментария

«Футурама»

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

Непонятно зачем «Хулу» раз за разом откапывает стюардессу. Смотреть это уже совсем невозможно, «я столько не выпью». Это надо же вбухивать много лет столько денег, чтобы настолько испортить послевкусие отличного сериала.

7 комментариев

Модели BitNet

Эксперементировал сегодня ночью с моделями BitNet. Это небольшие (1—2 миллиарда параметров) модели очень низкой битности — 1,58 бит. Причём это не квантизация, они сразу так обучены. Интересны тем, что работают настолько быстро, что их можно запускать без графических ускорителей.

Было интересно посмотреть с какими типами задач они способны справиться.

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

SQL-запрос для поиска имён студентов по специальности «Computer Science» с GPA > 3.5, отсортированных по убыванию GPA.

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

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

Оставить комментарий

Горлышко аптечных бутыльков

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

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

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

Я уверен, что в них было лекарство, так как на двух из них есть надпись «аптека».

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

Три прозрачные стеклянные бутылки с носиками разного размера стоят в ряд на деревянном столе.

Оставить комментарий

Утилита cdecl

Какая интересная утилита есть, оказывается, а я и не знал! Позволяет по любой декларации типа в языке Си получить описание на английском или наоборот — свернуть такое описание в тип. Вот примеры:

cdecl> explain char *(* const volatile (*(*hydra)(int (*)(void), char * const * restrict))[13]) (unsigned long, char * const [static 3]);
declare hydra as pointer to function (pointer to function (void) returning integer, restricted pointer to constant pointer to character) returning pointer to array 13 of constant volatile pointer to function (unsigned long integer, non-empty array 3 of constant pointer to character) returning pointer to character

cdecl> declare fp as pointer to function (pointer to char) returning pointer to array of pointer to char
char* (*(*fp)(char*))[];

3 комментария

← сюда туда →