Category: литература

Category was added automatically. Read all entries about "литература".

404

Предупреждение

Я медленно переезжаю на dreamwidth. Мой новый журнал тут: https://amarao.dreamwidth.org/

Кросс-постинг я делаю, но жж периодически банит dw'шный IP, и я не особо хочу со всем этим разбираться, так что будут провалы.
Collapse )
404

О классификациях

Из реальных комментов на хабре, слегка адаптированная версия.

Применение Борхеса к современной жизни позволяет увидеть прекрасное.

Три человека решили классифицировать большое количество багов в багтрекере.

Один решил поделить баги на принадлежащих Императору, прирученных, набальзамированных, сказочных,

второй поделил на бегающих как сумасшедшие, бесчисленных, бродячих собак, прочих

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

404

Абсолютный, грандиозный успех!

Итог:
render fps: 2400 fps
draw fps: 60 fps
cpu use: 120%

или

render fps: 2100 fps
draw fps: 310 fps
cpu use: 200%

lockless rendering. Один тред считает в цикле (тупо fill новым цветом, 100% CPU в треде), второй это читает и выводит, либо asap (310 fps, 100% CPU в треде), либо по vsync (60 fps, 20% CPU в треде).

Сам код - я на питоне бы не смог написать короче. 55 строк вся библиотека (и то, я не уверен, что нужно руками clone делать). ... Уверен, вся библиотека 47 строк.

https://github.com/amarao/equart/tree/switching_to_sdl/src

Это просто счастье какое-то! Наконец-таки, у моего нового быстрого компьютера появился новый быстрый код!

Ближайший роадмп: сделать инверсию (вынести SDL в тред, в main сделать только рисование), чтобы остался только init_graphics()...

Заметим, этот же алгоритм идеально режется на параллельны треды. Каждому свой диапазон значений считать, а вывод - в общий буффер, и всё. Сравните это со старой версией (piston) - 1200+ строк, в которых ад и погибель с message'ами и копированиями буферов.

AtomicU32 вместе с Arc и Ordering::Relaxed звучит как читерство. Слишком просто, слишком волшебно, слишком легко.
404

rust book

И ещё раз убеждаюсь, что rust book хуже, чем кажется. Казалось бы, модули/крейты, откуда какие файлы куда писать/читать. Тривиальный lore, который по документации становится понятным за 5 минут.

Но после чтения главы rust book про них, я полностью потерялся.
(https://doc.rust-lang.org/book/ch07-05-separating-modules-into-different-files.html)

Просто the biggest issue, я бы сказал.
404

как закапывать философскую книгу

Юк Хуэй
Рекурсивность
и контингентность

Цитата:

Нелинейное движение с предопределенной целена­
правленностью (А-^В-^А'-^В'-^С), например, рекурсив­
ный алгоритм, присутствующий во всякой машине
Тьюринга. Операция должна будет остановиться
в какой-то определенной точке, поскольку в против­
ном случае она исчерпает все ресурсы; рекурсивная
функция в этом смысле ограничена. Остановится
программа или нет, определяется проверочным усло­
вием, которое устанавливает, выполнена цель или нет;
контингентность требуется для того, чтобы повысить
эффективность системы (например, путем добавления,
шума к операции, как при машинном обучении).


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

Ок, спасибо. Больше не надо.
404

Игра в биссер

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

Я перечитал её, спустя .. 15 лет? Я не уверен, но много лет спустя. Моё предыдущее, смутное впечатление сфокусировалось на идее перфекционизма. Перфекционизм во имя перфекционизма.

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

... Но чуть ли не к финалу книги я ощутил ещё одну проблему: дискуссию между «игрой в бисер» и «мирским», которая в чистом виде транслируется в дискуссию academia vs business.  (Заметим, xkcd тут стоит на чистой позиции academia). С одной стороны люди преисполненные чуства величия и трепета перед тем, чем занимаются (e.g. классификация вычислительных машин по способности эффективного вычисления обще-рекурсивных функций), с другой стороны бизнес (который на самом деле «мирская жизнь» в контексте книги), которого не волнует тривиальность множества машин, способных к эффективному вычислению обще-рекурсивной функции, но которого очень волнует, чтобы «оно работало».

Collapse )
404

Ted Chiang - Exhalation

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

Грубо говоря, конфликт между футуризмом и fiction (в английском понимании слова, т.е. художественной литературой).

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

Collapse )
404

accelerando

Я не слоупок, но я его прочитал (https://en.wikipedia.org/wiki/Accelerando). Книга, безусловно входит в обязательный must read курса современного футуризма. eigenmother, я считаю, вообще, гениальное изобретение (как термин).

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

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

Collapse )
404

ненаучно-фантастическое: continuity

Есть у меня представление (мечта?) о вещи, которая совершенно по силам современным компьютерам, но совершенно не по силам современной индустрии.

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

Чтобы я мог переключиться между изучением Rust'а, исправлением багов в influx, чтением Рассела (да, я сел его читать), и ещё кучей всего интересного или важного.

Чтобы оно в себя включало всё (как? не знаю) и умело автоматически его группировать (как? Не знаю). И чтобы трекало across devices. Чтобы мне не нужно было мучительно вспоминать что там где там и как его открыть, или ещё хуже, помнить, что книжка на телефоне, а видео остановлено на паузе на рабочем компьютере, а рядом с ним пачка табов по вопросу.

... А ещё, чтобы онтологические отношения выстраивало - иерархию таких объектов.

Фантастика? Нет, совершенно по силам компьютеру?
Научная? Нет, не будет такого.
404

ура, покрыл

Я, кажется, покрыл все кейсы для getPath (прямые, кривые двух видов, круги, эллипсы, что-попало-для-дискретизации, fill). В свете этого я понял, что ошибался с моделью для класса path (M - move - это первый глагол для любой формы, которая не вырождается в другие теги (circle)).

Теперь надо понять, как это аккуратно закодить. С линией было всё просто - первая точка, M, дальше линии (L). А вот эллипс задаётся, например, двумя дугами (arc), которые тоже начинаются с M.

В класс "path" я заложил идею, что он сам знает, кто там 'M', а кто 'L'. Это сильно упрощает циклы в остальном коде, которым не надо теперь отдельно обрабатывать первую точку. Но у нас есть 'A' и прочие сложности....

Пожалуй, я оставлю этот принцип. add_line_point надо будет вызывать всегда в начале (для задачи 'M'), даже для дуг и кривых. Первая line_point (я правильно назвал это 'line point'?) становится 'M', остальные превращаются в 'L'.

... Второй вариант: add_line_point -> add_point(type, value), либо набор add_line_point, add_quardatic_point, add_arc_point, add_smooth_quadratic, etc. Первая точка всегда превращается в 'M' вне зависимости от типа.

.. Второй момент: есть места, где мне передают пачку точек. Может быть, я всегда буду принимать в класс список, а если кому-то надо передать одно значение - пусть [] его? Или добавить магии с автоопределением?

Пока что буду переписывать на add_?_points, видимо. Автодетект - вопрос открытый.

Отдельные две боли для меня:
1) Возврат круга как - в принципе, это же проблема getPath, а не Path. Ну будет у меня класс circle. Делать ли там общий класс над ними - вопрос открытый, ибо целиком libsvg я писать не собираюсь. И у меня батхёртит от отсутствия алгебраических типов в питоне. return -> Either(Circle, Path), ну круто же....

2) Кусок кода с определением "старая версия библиотеки". Буду химичить на тестах. Сейчас эта ветка вообще не может работать, потому что я случайно не добавил нужный импорт при переносе из Draft.py в getSVG.py.

UPD: В процессе борьбы за clarity, всё стало просто. Каждый метод называется по спекам (moveto, lineto, elliptical_arc, smooth_quadratic_bezier_curveto), у каждого своя конвенция по аргументам, но все они пишут в общий self.data. Поддерживается суммирование путей. Чуть-чуть сахара - первый lineto конвертируется в moveto автоматически. На выходе из контекстного менеджера проверяется, что есть moveto.

Вот код класса. За вычетом "pass" кусков, я открыт к предложениям.

https://github.com/amarao/FreeCAD/blob/3905d8974186aba43c90f429baa46a3fb8c1ad20/src/Mod/Draft/getSVG.py#L12