Удалённая работа и начало нулевых
Пока я шарахался по старому интернету «Виолой», заглянул через
Даже такая работа как программирование, которой казалось бы изначально все равно где именно человек работает, тоже часто не может быть проводиться удаленно. Потому что, кроме программирования необходимо так же общаться с клиентом, отчитываться перед начальством, работать в команде и т. п.
Там и про искусственный интеллект есть:
Задачи искуственного интеллекта. Мое мнение, что НТР надорвется на создании искусственного интеллекта. По крайней мере не будет никакого прорыва и развитие будет происходить очень медленно с нарастанием в основном за счет базы знаний. В основном будут срабатывать частные решения в специальных задачах. Например распознавать дорогу машина будет по спец маркировке.
Про магазины:
Вот люди сначала думали что с приходом интернета, отомрут магазины и покупатели перестанут ходить, а мне кажется что будет наоборот, в магазин перестанут ходить продавцы.
Мултипликацио и дивизио
Пока листал «Арифметику» Магницкого, нашёл два забавных слова — «мултипликацио» и «дивизио». Видимо, тогда наряду с русскими «умножение» и «деление» использовались и их латинские аналоги.
Знак рубля
У меня
Я даже нашёл старый параграф лебедевского «Ководства» за 2009 год, где была агитация за принятие этого знака, чтобы посмотреть, не утверждалось ли там, что знак рубля придумал Лебедев
Особенно необходимо отметить, что у нового знака нет автора, на его копирование и модификации не накладывается никаких ограничений. Знак создан и выбран в соответствии с объективными требованиями. Закон об авторском праве не охраняет этот знак.
Странное утверждение, так как в брошюре «Знак рубля», изданной по результатам конкурса, проведённого в 1999 году издательским домом «Коммерсантъ» и Профессиональным клубом
Этот знак, к слову, в том конкурсе не победил — набрал только 11,14% при 23,99 у победителя.
Известно так же, что это был не первый подобный конкурс, первый проводил журнал «Финансист»
Наиболее часто предлагающиеся варианты основаны на использовании кириллической буквы «Р» или латинской буквы «R», которые перечеркиваются вдоль, поперек или по диагонали, оставаясь при этом теми же буквами «Р» и «R».
В общем, Лебедев к этому знаку отношения не имеет. Кстати, у него в том же параграфе «Ководства» так же написано:
Раньше не было необходимости в отдельном знаке рубля.
«Раньше» — это, собственно, когда? В брошюре «Знак рубля» есть письмо от Центробанка от 17 февраля 2000 года, где сообщается следующее:
Для Вашего сведения сообщаем, что, начиная с 1995 года, на всех банкнотах Банка России проставляется знак «РР», т. е. «российский рубль», и Банк России в настоящий момент не видит необходимости в его замене.
То есть необходимость в знаке рубля существовала и ранее, раз знак был. Думаю,
Я не погружался в предмет особенно глубоко, но один из знаков удалось легко разыскать и в дореволюционном источнике.
Например, в известнейшей «Арифметике» русского математика Магницкого 1703 года, рубль обозначается лигатурой «руб», написанной наискосок. При этом в «Википедии» есть и другие знаки.
AV1 и аппаратное ускорение
Есть такой относительно новый хороший формат графики для веба — AVIF (появился всего семь лет назад). Формат правда хороший, но есть недостаток — очень уж алгоритмически сложный.
И декодеры и кодеры стараются программно ускорить, но всё равно получается довольно медленно. Я давно предсказывал появление аппаратных ускорителей, но пропустил момент, когда они появились. Мой «Макбук» на чипе «М3 Макс», значит у меня есть по меньшей мере декодер.
На картинке он обозначен как «AV1 decode», AV1 — это название кодека, которым сжата графика в формате AVIF.
У «Интела» аппаратный декодер тоже есть, думаю у других производителей тоже, я не смотрел. А это, по сути, значит, что формат уже победил всех конкурентов и постепенно начнёт выходить на первые позиции. Разве что появится
Сенсорный провод
Неожиданно всплыло воспоминание из далёкого детства.
Мне тогда было лет шесть, может, даже меньше. Мы жили у Мойкиных — снимали у них квартиру, пока они уехали «на Север» на заработки. В те годы в СССР там, в суровых северных краях, можно было скопить приличные деньги.
Папа иногда подолгу возился в кладовке — у него там был свой маленький «кабинет», где он, бывало,
Он тогда собрал небольшую схему, наверное, по журналу «Радио», который мы тогда выписывали: стоило дотронуться пальцем до оголённого участка провода — загоралась лампочка. В то время вокруг были только механические кнопки и выключатели, поэтому штука, реагирующая на прикосновение, выглядела как технология из будущего.
Папа и мне предложил попробовать — показал как касаться пальцем. Мама тут же всполошилась — не ударит ли током? Но папа возмутился и уверил её, что напряжение низкое и мне ничего не грозит.
У меня эта картинка даже в памяти сохранилась, правда не во всех деталях —
Что прикупить из нейросетей?
У меня постоянно спрашивают, сколько и за какие нейросети я плачу. На самом деле у меня немного платных сервисов — всего две подписки.
У меня оформлена самая дешёвая ($22,4 в месяц) подписка на ChatGPT, и то только
Это ощущается как помощник, который готов выполнить для вас поисковую работу. Пользуюсь постоянно. В последний раз — два дня назад, когда искал, где недалеко от нашего отеля (мы сейчас в Эмиратах) жена и дочка могут покататься на лошадях.
Эту же сеть я использую для коррекции фотографий, редактирования текстов и выжимки текста, когда нет времени изучать
Кроме того, у меня есть самая дешёвая ($20) подписка на «Курсор», чтобы программировать, но сейчас мне не хватает, я всё время докупаю токены. Планирую перейти на более дорогой тариф ($80), но, учитывая мои аппетиты, может и этого не хватить. Когда «Виола» надоест, вернусь обратно на самый дешёвый.
«Виола» и эпоха раннего интернета
В начале интернета никто не думал о безопасности — ни о шифровании, ни об аутентификации, ни о защите от перебора или других атак. Даже в хорошо знакомой всем электронной почте можно было подставить произвольный обратный адрес.
«Виола» в этом смысле — продукт своего времени. Браузер позволяет себе очень многое, причём
На моём скриншоте две программы для «Виолы» от автора браузера.
Слева — небольшой графический редактор, в котором моя дочь нарисовала котика и синюю рыбу. Для своей работы редактор запросто читает несколько файлов из моей файловой системы — он использует содержимое этих файлов в качестве одного из вариантов кистей.
Справа — пример того, как страница может вывести произвольную информацию на панель браузера с кнопками. В данном примере создаётся соединение с адресом pebble.berkeley.ora.com по порту 7777, и строится график чисел, получаемых из этого сокета. Такого адреса давно нет, чтобы пример заработал, я написал небольшой сервер на «Пайтоне» и перенаправил этот адрес на свою машину.
Осталось полшага до того, чтобы выкачать всё важное из моего компьютера и отправить в интернет по произвольному адресу и протоколу.
Я сейчас как раз думаю что с этим делать. Я могу сделать так, чтобы файлы читались не по абсолютному пути, а по относительному,
В браузере компании «Нетскейп» был специальный «менеджер привилегий», который позволял попросить у пользователя разрешение на выполнение
netscape.security.PrivilegeManager.enablePrivilege('UniversalFileAccess')
netscape.security.PrivilegeManager.enablePrivilege("UniversalConnect")Можно было бы сделать примерно так же — спрашивать разрешение, но слишком далеко отходить от исходного поведения браузера мне не хочется. Мне нравится идея сохранить его поведение как можно ближе к тому, что было
В общем, думаю пока как всё сделать лучшим образом.
Как рождался CSS
Мне стало интересно: автор «Виолы» первым догадался отделить стилизацию элементов от структуры, или эта идея уже активно обсуждалась? Нашёл объёмное исследование о том, как зарождался CSS. Браузер «Виола» со своими собственными таблицами стилей там тоже упомянут.
Оказалось, что таблицы стилей как концепция гораздо старше самого веба. Ещё в конце
Язык разметки описывал структуру документа — слова, строки, страницы, интервалы, заголовки, подстрочные примечания, нумерацию, оглавление и т. д. — по принципу, близкому к HTML. Далее специальный компилятор использовал базу стилей (Style Database), где хранились определения оформления — шрифты, поля, отступы и прочие параметры.
Позже, с появлением веба и браузеров, эта идея перекочевала и туда. До стандартизации CSS существовало множество предложений о том, каким должен быть синтаксис таблиц стилей в вебе, в найденном мной исследовании можно с ними ознакомиться.
Синтаксис «Виолы» был не самым продуманным, не был и единственным, но был одним из первых — он появился уже в 1993 году.
Шахматы в «Виоле»
Посмотрел несколько готовых демок для «Виолы». Больше всего меня смутили шахматы —
Для браузера, который в девяностые был первопроходцем в вебе, это более чем круто, но я всё равно ожидал
Потихоньку начинаю смотреть что же не работает в интерпретаторе встроенного языка. Что меня поражает до сих пор — это возможность на нём дописывать браузер.
Например, я недавно делал поддержку протокола
/* Show original URL when loading via Wayback Machine */
dispURL = docURL;
/* Rule: find "https://web.archive.org/web/", then drop until next '/' */
wbPrefix = "https://web.archive.org/web/";
wbAt = findPattern(dispURL, wbPrefix);
if (wbAt != -1) {
wbAfter = wbAt + 1;
wbRest = nthChar(dispURL, wbAfter, 999);
wbSlash = findPattern(wbRest, "/");
if (wbSlash != -1) {
dispURL = nthChar(wbRest, wbSlash + 1, 999);
}
}
mvw.doc.url("show", dispURL);Изобретённый компанией «Мозилла» «зул» (XUL), который позволяет делать то же самое , появился только
Мой английский
274 дня без пропусков я занимаюсь английским в «Дуолинго» и хочу сказать, что за границей чувствовать себя стал намного увереннее. Не могу сказать, что понимаю всё без исключения или могу выразить любую мысль, но положительные сдвиги в этом направлении очень заметны.
Мне гораздо реже приходится переспрашивать, и чаще всего я неплохо понимаю с первого раза даже очень быструю и невнятную речь — по крайней мере, улавливаю смысл. В общем, если вы
Ева говорит
Небольшой список того, что записал за Евой. Мало записывать стал, ситуаций много, но я
— Папа, а у тебя в детстве была мечта?
— Ну конечно, целый список, — клад найти или в космос полететь…
— И что, сбылось
— Конечно, клад нашёл, например!
— Клад, — это мы с мамой, да?
— Это очень хорошая версия, дочка, но я имел ввиду монеты…
29.08.2024
⁂
— Папа, а ты всё на свете видел?
— Дааа, — я своих мыслях, пишу программу, поэтому отвечаю на автомате.
— А как верблюды какают, тоже видел? — дочь, видимо поняла, что я её не слушаю.
— Чтоооо? — я, наконец, отвлёкся от кода на Пайтоне и в шоке переспрашиваю.
01.01.2025
⁂
С чувством:
— Папа, я вырасту художницей, певицей и… — пытается подобрать феминитив, неуверенно, —
09.01.2025
⁂
Я в кресле читаю книгу, рядом сидит дочка и, обнимая котика, разговаривает с ним:
— Вот скажи мне, котик…
— …в чём сила, — не могу удержаться, чтобы не продолжить, — думаешь, в мышцах? Вот и папа мой думает, что в мышцах, а я думаю, что… — размышляю как закончить…
— …в уме! — заканчивает дочь.
23.01.2025
⁂
На днях обсуждали с дочкой условную и безусловную любовь, утром, по дороге на стоянку:
— Мамочка, я тебя люблю больше, чем ты меня!
— Почему это?
— Потому что ты меня родила!
Пока мама ищет контраргументы, поворачивается ко мне:
— Папочка, я тебя больше люблю, чем ты меня!
— Почему?!
Ни секунды не задумываясь:
—
24.10.2025
Скриптовый язык «Виолы»
С синтаксисом стилевых таблиц в «Виоле» я вполне освоился, а вот скриптовый язык толком ещё не смотрел. Вижу, что многие вещи точно работают. Например, логика стилевых таблиц целиком написана на нём. Ещё один пример: на одной из страниц документации к браузеру анимация сделана с помощью скриптинга.
Постепенно доберусь и до него, а пока масштаб трагедии самым краешком выглядывает
Кстати, страница на скриншоте выглядит идеально, ровно как задумано. Такой её в современном браузере не посмотреть. Тут и анимация, и собственные виоловские стили, и кнопки, добавленные страницей — ещё одна интересная фича «Виолы».
Патч Бармина
У меня тут случайно получился прекрасный пример того, почему нейросети пока нельзя пускать в самостоятельное программирование.
Браузер «Виола», портированием которого я занимаюсь, среди прочих форматов графики поддерживает ещё и формат XPM. Сейчас не особо важно, что это такое, но вчера я вспомнил, что родственный ему формат XBM
Я решил посмотреть, нет ли в XPM тех же уязвимостей и, если они есть, — исправить.
Одна из уязвимостей, которую мы рассматривали, — запуск произвольных команд. Мы её, конечно, закрыли, но посмотрите, что нейросеть предложила в качестве теста на отсутствие уязвимости: запуск команды
Вайбкодинг: как убить трёхчасовую работу
Недавно я реализовывал поддержку стилевых таблиц в браузере «Виола», который я ковыряю в свободное время. Делал при помощи нейросетей, но вайбкодинга не вышло — программировать пришлось дуэтом, очень уж сложная задача. В итоге я потратил около
Пока мы программировали, сделали очень много различного вывода в консоль для отладки состояний объектов. Это очень помогает оценить что происходит внутри.
И вот, настал момент, когда всё заработало как надо — все написанные мной тесты пройдены, осталось убрать лишний вывод в консоль и закоммитить. Чтобы самому с этим не возиться, я попросил убрать весь вывод нейросеть, а сам пошёл налить чаю.
Когда пришёл, всё уже было готово, но я решил проверить перед коммитом — всё ли в порядке. Скомпилировал, запустил один из тестов… и всё развалилось. В сердцах пишу в чат с нейросеткой капсом: «ЧТО ТЫ НАДЕЛАЛ, ТЫ ВСЁ ИСПОРТИЛ». Понимаю, что бесполезно, но на меня так накатило, что
И сетка в чате пишет в режиме размышления: «понятно, пользователь
На меня тут нашло
Светофор: идея
У меня уже лет пятнадцать крутится в голове одна идея, до которой всё никак не доходили руки. Но недавно мне прислали приглашение потестировать новую нейросеть для генерации видео —
Сначала я пробовал сделать реалистичное видео, но после шести промптов результат меня всё ещё не устраивал, поэтому переделал всё в более техническую иллюстрацию. Так оказалось гораздо проще передать задуманное. Результат не впечатляет, конечно, но у меня не было цели показать на что сейчас способны нейросети :—)
В целом идея в том, чтобы пешеходы, переходя дорогу на красный, были внимательнее. Для этого я предлагаю — отчасти в шутку — при смене зелёного на красный менять цвета попиксельно, имитируя эффект стекающей крови.
Транслит в «Виоле»
Пытаюсь улучшить транслит в браузере «Виола», который я продолжаю ковырять. Напомню: чтобы не менять шрифты, я сделал транслитерацию для языков, буквы которых отсутствуют в кодировке
Кодировка сейчас обрабатывается в три прохода.
На первом шаге я определяю кодировку страницы: смотрю её в заголовке Content-Type или в
Если кодировка отличается от
На втором шаге перегоняю текст в транслит при помощи ICU, для русских букв использую таблицу BGN, для остальным — то, что там работает
И на третьем шаге я опять вызываю iconv в режиме TRANSLIT, чтобы перегнать оставшиеся значки — то, что буквами не является, всякие там буллиты, кавычки и так далее.
Проблема в том, что я давно разучился бегло читать транслит, поэтому приходится прикладывать усилия. Варианта три: ничего с этим не делать, взять шрифты, которые содержат русские буквы, или переделать транслит так, чтобы его было проще читать.
Результат моих усилий — на скриншоте. Кажется, вариант по центру читается проще, чем правый. Но есть очевидные проблемы с буквами «ц» и «щ»: они у меня передаются как «u,» и «w,» соответственно, и этот знак запятой здорово сбивает темп чтения — заставляет спотыкаться. Пока думаю дальше.
STG: таблицы стилей в «Виоле»
Чем меня в своё время поразила «Виола» в самое сердечко, — предвосхищением идеи стилевых таблиц и браузерного языка программирования. Мне очень нравятся такие пророческие находки, хочется увидеть как они были сделаны и как автор до этого вообще дошёл.
«Википедия» в своё время заронила интерес, но полностью тему не раскрыла — про стилевые таблицы этого браузера там написано совсем мало, да ещё и с ошибками, как я смог убедиться. «Спецификация», если так можно назвать страницу, сохранившуюся благодаря стараниям
Оказалось — показалось, в браузере было реализовано даже меньше.
Несмотря на простоту спецификации, «Виола» мало что из описанного умела, пришлось дописать. Сейчас всё, надеюсь, работает так, как задумывал автор. Интересный момент — код на Си только парсит стили, остальным занимается интерпретируемый код, написанный на языке программирования, реализованный в браузере.
Стилевые таблицы подключаются тегом LINK и имеют расширение .stg, хотя это не обязательно, но в спецификации так:
<link rel="style" href="HTML_sodium.stg">Таблиц может быть подключено много и они работают «вниз», то есть от момента включения в код ниже места включения применяются стили, которые там описаны.
Селекторов всего два — можно выбрать тег или стиль тега (это работает немного не так как в CSS):
(BODY,SECTION
BGColor=green
FGColor=red
(P)
(KBD
BDColor=black
border=1
)
)Что тут написано? Что в тегах BODY и SECTION будет зелёный фон и красный цвет шрифта, а кроме того эти атрибуты унаследуют теги P и KBD, причём у последнего будет ещё и чёрный бордюр.
Атрибутов, к слову немного, в основном это характеристики шрифтов, цвет, бордюр
Ещё есть стилизованный браузером элементы, некие встроенные стили (например, WARNING, NOTE и так далее), которые можно навешивать на произвольные теги при помощи атрибута STYLE. На картинке пример того как выглядит встроенный стиль WARNING: оранжевый бордюр и картинка.
К тегам, помеченным атрибутом STYLE тоже можно применять собственные стили:
(P
BGColor=white
FGColor=black
{STYLE "WARNING"
FGColor=red
fontSlant=italic
}
)У тега P здесь белый фон и чёрный цвет шрифта, а если у него есть атрибут STYLE, равный WARNING, то добавляются ещё два стиля, определяющие красный шрифт наклонного начертания.
В коде как будто бы есть небольшой намёк на то, что селектор должен работать и с другими атрибутами (да и синтаксис стилевых таблиц это позволяет), но в спецификации про это нигде не сказано. Я пока тоже не реализовал.
На второй картинке тест со страницы спецификации, который проходит дописанный браузер. В самом тесте, кстати, тоже были две ошибки — не закрытая скобка и неправильные стили синего блока.
Продолжаю возиться с «Виолой»
Продолжаю понемногу возиться с браузером «Виола», оживлением которого я недавно занялся. Благодаря нейросетям, на это ушли не годы, а всего несколько дней.
Чтобы не нарушать аутентичность, решил править только ошибки — их там нашлось и ещё найдётся немало — и доработать работу с сетью. Добавил менеджер соединений, поддержку HTTPS и транслитерацию кодировок: иначе пришлось бы заменять шрифты, а это в мои планы не входит. Кроме того, сделал забавную вещь — поддержку протокола
Если желаете тоже прикоснуться к истории, проект лежит на «Гитхабе», можно попробовать себе его собрать. Только сразу скажу — я собираю под «МакОС», под другие платформы без переделки собрать не получится.
Привет из прошлой жизни
Вчера разбирали старые бумаги, нашли привет из прошлой жизни — когда мы жили в Москве, а я работал в «Яндексе», ещё в старом офисе — на Таганке. В конверте каталог компании Lush,
«Мышастик»: MeshPocket
Купил себе ещё одно устройство для общения через сеть «мышастик». На этот раз
Чатится я собираюсь с женой, отдам ей
Посмотрим насколько хорошее покрытие получилось в Казани. Как я мог убедиться, с момента покупки моего первого устройства всё сильно изменилось — ребята навели «мосты» между районами, белых пятен, как будто бы, не так уж много осталось.