Category: лытдыбр

Category was added automatically. Read all entries about "лытдыбр".

404

очевидная оптимизация

(вдогонку к предыдущему посту)

Да, казалось бы, очевидная оптимизация: сначала lattice 2x2 (я даже думал, сделать её 2x1, с диагональными значениями), а потом уже более частая lattice по точкам, которые уже не корни. 

Однако, одна-единственная в цикле 'if' сделала так, что просто профигачить lattice 23х23 быстрее, чем сначала lattice 2x2, а потом только по избранным, 23х23. Если что, на первой итерации из примерно 2М точек выпиливается 200к, т.е. 10%.

if жрёт больше, чем 10%.

Код с оптимизацией:

Rendered in 439.320679ms, 217054 roots
Rendered and uprendered in 44.161920525s, 306692 roots

Код без оптимизации:

Rendered in 43.830699015s, 306692 roots

При этом что-либо мутить тут бесполезно — 23х23 — это 529 уравнений на пиксел, в сумме 1096934400 уравнений. Я пытался его заменить на 982981050 (разница 113953350). Один 217 тысяч if'ов стоит больше, чем 113 миллионов уравнений. Каждое уравнение — два деления и два синуса. 217 тысяч if'ов дороже, чем полмиллиарда flop (f32)?!!!

Я просто не верю. У меня где-то баг.

Вот код с if'ом:

fn up_render<F>(canvas: &mut Canvas, f: &F, lattice_dim:usize) where

    F: Fn(Float, Float) -> Float

{

    for pixel in canvas.iter(){

        if canvas.img[pixel.index]!=0u32 {

            if pixel.sign_change_on_lattice(f, &canvas, lattice_dim){

                canvas.set_pixel(&pixel, 0);

            }

        }

    }

}

Код без if'а, соответственно, без строчки «if canvas.img[pixel.index]!=0u32 {»

Collapse )
404

Застрял в математике

Как для уравнения F(x,y)=0 понять, есть ли точки её графика в прямоугольнике (x,y);(x+dx, y+dy)? Сначала задача была простой, а ща я просто даже и не знаю...
404

и ещё рефакторинг

Важный milestone: getPath сократилась до 100 строк, а всё это покрыто 60+ тестами. Надо бы больше, но некоторые кейсы я просто не могу нормально написать без софтмоков, а их ещё делать. (О чём речь: я не могу использовать untitest.mock, потому что это python2, и не могу использовать mock, потому что ограничения проекта). Мне предложили делать тесты, которые skip, если нет модуля mock, но эту штуку ещё отдельно писать надо.

На горизонте строки 425-994, которые представляют из себя остаток getSVG (из которой я, собственно, getPath и несколько других функций и вытащил). Да-да, добрая такая функция на 500+ строк, которая всё ещё делает Почти Всё.

В целом, я ощущаю, что оно чуть-чуть из рук выскользает, потому что в новом коде довольно много тестами не покрыто, но хочется дальше деребанить getPath. Но надо-таки покрывать то, что уже надёргано. Цикломатическая сложность понизилась, и самое-самое время начинать заморачиваться с тестами всяких corner case'ов, потому что в них как раз баги и обитаются...

Вот, например, из вытащенного:

def toSpline(edge):
    bspline = edge.Curve.toBSpline(edge.FirstParameter, edge.LastParameter)
    if bspline.Degree > 3 or bspline.isRational():
        try:
            bspline = bspline.approximateBSpline(0.05, 50, 3, 'C0')
        except RuntimeError:
            print("Debug: unable to approximate bspline")
    return bspline


Мне нужны тесты на:
1) кривые с Degree > 3
2) isRational (насколько я понимаю, это кривая Безье, описывающаяся полиномом с дробной степенью)
3) На ситуацию, что кривую не аппроксимировать.

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

психоделика от циски

Утянуто у тов. Томилина из fb.

http://www.cisco.com/cisco/web/support/RU/108/1089/1089265_crs-ios-xr-bp.pdf

Медитативный текст:

Процесс и нити
Процесс и государства нити
Заблокированные государства процесса и процесса
Самолет ткани
Обзор Самолета контроля
Инструкции по модернизации
Как Отправлен Внутренний Пакет?

Нейтрино является сообщением, передающим операционную систему, и сообщения являются основными средствами коммуникаций Межпроцесса среди всех нитей.

Рассмотрите не местный случай:
Перерыв программного обеспечения в ядро.

Все было расцеплено в интерфейсе IPC, который позволяет клиент-серверу быть абсолютно отдельным.

Инфраструктура существует для обеспечения возможности измерить.

Выпустите выставочный процесс ospf команда для проверки статуса нитей.

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

Я просто не могу дальше читать.
404

Опасные навыки

Всё началось с невинных "3D стереограмм"

Типа такой:


Если свести глаза правильно, будет виден рептилоид против всадницы на коне с человеческой головой.

Далось мне это очень тяжко. Но далось.

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



Ту первую, я, наверное, несколько дней мучал. Эту я свёл меньше чем за пол-минуты. (возможно меня глючит, но вертикальная последовательность [*] там лишняя на палочке).

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



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

А теперь про опасность...

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

Ещё пару раз ловил себя на подобном.

Неделю назад посмотрел на полоску для удержания зановесок - а там равномерные складки. Взял, сфокусировался "по другому" - получилась 3D картинка. Из 3D объекта. На другом расстоянии и с другим рельефом.

А сейчас почесал в затылке, положил перед собой две конфетины, и свёл их в одну.

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

Опасно оно по двум причинам:

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

Во-вторых мозг иногда может "по привычке" загонять глаза в режим "поиска фокуса". Что приводит к потере 3D картинки, да и вообще, к потере картинки, пока глаза не вернутся в исходное положение.
404

Пакетировать или нет

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

Впрочем, рассказ не про них.

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

В описаниях openstack часто звучит метафора "cattle, not the pet" - мол, виртуалки - расхожее мясо для выполнения задач, а не что-то, о чём заботишься.

Классическая модель (как виндов, так и всех приличных линуксов) исходила из идеи, что хост - это важно. Этой позиции придерживается человек, который что-то делает на десктопе. Ему не хочется в результате какой-то ошибки остаться один на один с поломанными иксами или udev'ом. Отсюда крайняя степень консервативности к изменениям в системе (транзакции rpm, например), сложный свод правил, который должны соблюдать программы, тысячи тонких настроек и т.д.

Эта же модель успешно была перенесена на сервер (давайте признаемся - линуксы выросли с рабочих станций/десктопов, не говоря уже про винды). Даже в виндах есть масса тонких нюансиков, которые должны соблюдаться всеми для всеобщей гармонии.

Комфорт продолжительного сосуществования - вот, к чему стремятся все дистрибутивы.

Система сборки пакетов в дебиане преследует ту же цель - делать это комфортно. Это означает, что если для сборки пакетов нам надо 100500 зависимостей, то мы их можем поставить, не рискуя сломом всего и вся (если эти зависимости в комплекте). Есть apt-get build-dep, даже. Правда, нет обратного реверса (то есть снести их обратно так просто не получится). Я вполне это ощутил с bluez'ом, когда не смотря на миллионы странных пакетов в зависимостях, я просто и легко вернулся к предыдущему состоянию системы без бэкапов и откатов. Просто поставил на место старый блюз, удалил предусмотрительно выписанные новые зависимости и снёс каталог с сырцами.

Однако, если мы говорим про devops, то мы явно или нет, подходим к модели минимально необходимого функционала, а не комфортного продолжительного существования.

Сервер делает то, что должен делать и не делает то, что делать не должен - это ли не формула для идеальной инсталляции?

Заметим, что если мы говорим про серверочек в маленькой компании (пусть даже пяток серверов), то его роли - это что-то крайне объёмное и трудноописываемое. Если серверов несколько - то они делают всё. А значит, с ними нужно длительно и комфортно жить.

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

Смотрите:
* Конфигурация сервера описана в системе управления конфигурации (chef, puppet, etc)
* Весь значимый софт либо обслуживается компанией, либо осмысленно используется (осмысленно - это значит, что за изменениями для софта следят), либо написан в стенах компании.
* Развёртывание сервера очень быстрое.

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

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

Таким образом, конфликт между пакетированием и "pip/cpan way" - это на самом деле идейный конфликт между "нам с этим потом жить" и "надо - переделаем в два клика". То есть тот же самый конфликт pet - cattle, о котором говорят openstack'овцы.
404

немного о техе...

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

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

Мир загнивающего капитализма, PDF и прочих fixed size items.
404

Why anime?

Собственно, извечный вопрос. Почему аниме, а не, допустим, в стиле Llevelin'а итория мировой анимации? Почему аниме, а не манга? Ведь можно ровно так же копаться в диснеевских отбросах рассуждая о том, что "а вот такой характерный изгиб глаз у главной героини впервые появился в 1968 в Hime no Unko". И я соверенно не уверен, что художественный уровень работ в аниме в 70ые был выше, чем в американской анимации тех лет. Скорее, даже наоборот.

Понятно, что желание ковыряться в истории и происхождении возникает только если оно интересно "в принципе". Откуда это "в принципе" идёт?

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

В аниме такие работы есть. И именно по ним я оцениваю свои впечатления от аниме. Один гиасс позволяет оценить весь жанр меха. А ведь у нас там был и TTGL, и даже, о боже, Ева.

Единичное kyo no go no ni прощает тысячи скуллайфов. А ведь у нас есть ещё и ichigo mashimaro.

Один bakemonogatari прощает всю унылую мистику за последние 60 лет существования аниме. А ведь у нас есть ещё Аптекарь, а для чуть менее взыскательного зрителя есть Kyuketsuki Hime Miyu (давно смотрел, по памяти сейчас не оценю).

Другими словами, есть отдельные брилианты. И вот тут главное - лучшие работы диснея я просто "посмотрю". А вот эти вещи - они пронзают. Они ощущаются. Они Настоящие.

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

И если аниме 2000ых дало эстетику цвета, динамику, ракурсы (шафт и гайнакс, местами пронзительную эстетичность сюжета - Boyakku no Senritsu, Kino no Tabi), то аниме 90ых дало сейю.

Именно сейю являлось для 90ых основной основ. В 2000ых их роль немного поугасла, ибо анимация подтянулась, но в 90ых аниме - это сейю. Пронзительная выразительность интонаций, убедительность, подлинность. Я уже как-то говорил, что у нас (в смысле, в советско-российском кинематографе), среди всех не-комедийных, трагичных интонаций меня убедила только жена Сталкера у Тарковского - это было настоящее.

Вот такое настоящее у японцев - это норма. Да, они переигрывают, и будь это фильм, такие интонации были бы неправильными и чрезмерными. Но это аниме, и здесь нет фальши между интонациями и персонажами, а значит сильные и яркие эмоции становятся идущими из души (то, чего отчаянно не хватает в современном медиа). Интонации MKR, Евы (да, снова Ева, ибо всё-таки никто так и не смог сделать что-то, что было бы столь же велико в таком количестве областей), десунот, ванпис, HxH, Hajime no Ippo - если посмотреть на то, сколько там делает голос...

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

Только аниме из современного искусства я могу не только воспринимать серьёзно разумом, но и воспринимать как объект эстетический и эмоциональный.

Можно сколько угодно проникаться "Пианистом" с сценой немецкого солдата и еврея, играющего на пианино, но оно безмерно бледно на фоне какого-нибудь hotaru no haka или hadashi no gen. Хотя они (ИМХО) совсем далеки от настоящих эмоций аниме, но даже в этом узком формате семейного мувика они могут раскрывать эмоции много ярче, чем европейская культура.

А ведь есть истинные столпы духа, такие как HnI и ванпис. Я не знаю ни в одной книге, ни в одном фильме, нигде сцены, столь сильной, злой и благородной, как сцена с уходом Усоппа из команды. Ведь кодомо-кодомой, всё условно, всё примитивно, всё на школьно-дошкольном уровне - но ведь такая игра и сейю, и такая сила сюжета - что пока что это самая сильная сцена ванписа (не зря, кстати, её в рекапах практически не вспоминают - не хотят спойлерить).

Но и в смысле "веховых произведений" аниме, кстати, сквозь все гаремы и цундере прорывается. Есть ли фильмы, столько мягко и обстоятельно размышляющие о политике, как LOGH? Столь простые, ясные вопросы без ответов, как в Kino no Tabi?

В книгах я такое встречал. В визуальном искусстве за пределами аниме - нет.
404

RO - фуллсапорт прист

Я успешно продолжаю качать своего АКО (которой скоро станет пристом).

И сейчас я могу сказать - среди всего в РО, самая необычная профессия - это прист. Причём фуллсапорт прист. Дело не в наличии скиллов, не в умениях и технике боя. Принципиально драка танка и сина ничем не отличается. Так же стой и бей монстра. Ханты уже чуть интереснее, но суть та же. И даже маги с заклинаниями занимаются тем же. Тупо бьют монстров. Вне этого социальная жизнь их одинакова. Чуть интереснее жизнь мерча, который может устраивать "благотворительность" (мясо по закупке). Блексмиты/алхимики нужны и интересны, но редко и весьма мало.

Но всё равно игроки по сути своей тупо бьют и бьют экспу.

Куда инетереснее жизнь приста. Прист (ако) - можно сказать сердце игры. Он лечит, блесит, агилит. Он может очень много. (тот же варп, например). Но ему самому от жизни нужны копейки. Там, где син у меня проедал на десятки тысяч мяса/поушенов, алколит бегает с 4к в кармане и особо ни о чём не думает.

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

И в пати прист - это всё. Пати может быть без танка, без ханта, без сина, но пати без приста - это не пати. Алко единственный, кто несёт на себе ответственность. Причём не простого вида (убили не убили приста), а непрерывную - кого как часто хилить, кому что когда кастовать. Алко единственный, чьё SP - достояние общественности и жизненно необходимый ресурс. Сайленс, положенный на файтера/сина - это плохо. Сайленс на приста - пати на волоске от гибели.

Я не то, чтобы забросил своего сина 69ого левела, но почти потерял к нему интерес. Ну, очередной левелап. После которого станет _ЕЩЁ_СЛОЖНЕЕ_КАЧАТЬСЯ_БЫСТРО_.

У ако ситуация обратная. От левела к левелу расширяются возможности, появляется СП для каста всё большего числа разных скилов. Decresize AGI/Holy Light, набор саппортящих скиллов. Даже хил - имеет в себе минимум две-три ипостаси (максимальный хил, "на половинку", "чуток, для приличия"). Аги, блесс. На кого, когда кастовать, а когда нет, да так, чтобы остались СП.  (Заметим, это ещё АКО, а впереди скиллы приста!)

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