Category: животные
Category was added automatically. Read all entries about "животные".
Свет ← нормаль ← касательная ←траектория ← [dx,dy] ← кисточка
В Krita есть мощный редактор кисточек, который позволяет в том числе установить зависимость цвета кисточки от её направления движения.
А движение по контуру объекта - определяет нормаль в этой точке (для не слишком большого объекта или при проекции похожей на параллельную).
А нормаль - определяет освещенность объекта (дифузную составляющую для далёкого источника).
Это позволяет довольно быстро раскрашивать матовых осьминогов.
Первый грубый вариант освещения получен при помощи этой кисточки за пару минут, и ещё минут 10 я правил недокрашенное, плюс ещё 10 всякую ерунду.
Придуманная кисточка мягкая с одной стороны, и с жестким краем с другой, это позволяет получить четкую границу с одной стороны движения, и плавно закрашенную с другой.
Предварительный набросок (без глаз, это неправильно): ( Collapse )
Как выглядит мазок этой кисточкой: ( Collapse )
Грубый вариант раскраски: ( Collapse )
И в конце:

А движение по контуру объекта - определяет нормаль в этой точке (для не слишком большого объекта или при проекции похожей на параллельную).
А нормаль - определяет освещенность объекта (дифузную составляющую для далёкого источника).
Это позволяет довольно быстро раскрашивать матовых осьминогов.
Первый грубый вариант освещения получен при помощи этой кисточки за пару минут, и ещё минут 10 я правил недокрашенное, плюс ещё 10 всякую ерунду.
Придуманная кисточка мягкая с одной стороны, и с жестким краем с другой, это позволяет получить четкую границу с одной стороны движения, и плавно закрашенную с другой.
Предварительный набросок (без глаз, это неправильно): ( Collapse )
Как выглядит мазок этой кисточкой: ( Collapse )
Грубый вариант раскраски: ( Collapse )
И в конце:
Купи слона. Купи слона. Купи слона.
Совет, повторённый более трёх раз (или рекламируемый более пяти минут) — это не совет, а навязчивость.
Можете эту показывать формулу людям, которые «просто хотят помочь», и проверять себя «а не надоедаю ли я своими советами».
Даже если совет правильный («кончай бухать»), то повторенный в четвертый раз подряд он вызовет скорее раздражение.
Есть исключения, обучение, или ситуации, когда специально присылают работу на проверку.
Иногда можно без стресса обсуждать «почему я(ты) не согласен». Если обоим интересно разобраться, даже если это совет «лучше завести собаку вместо кошки».
Или бывает, что вред от равнодушия больше вреда от навязчивости: «да, я навязываюсь, вы говорите так, словно это что-то плохое». Но навязчивость это ещё не помощь.
Но в качестве первоначального приближения можно использовать простую формулу.
Можете эту показывать формулу людям, которые «просто хотят помочь», и проверять себя «а не надоедаю ли я своими советами».
Даже если совет правильный («кончай бухать»), то повторенный в четвертый раз подряд он вызовет скорее раздражение.
Есть исключения, обучение, или ситуации, когда специально присылают работу на проверку.
Иногда можно без стресса обсуждать «почему я(ты) не согласен». Если обоим интересно разобраться, даже если это совет «лучше завести собаку вместо кошки».
Или бывает, что вред от равнодушия больше вреда от навязчивости: «да, я навязываюсь, вы говорите так, словно это что-то плохое». Но навязчивость это ещё не помощь.
Но в качестве первоначального приближения можно использовать простую формулу.
hug❣
MurmurHash грабли
Сегодня отлаживал, почему фильтр блума не работает.
Оказалось, что "набор независимых хеш-функций" выбирается как MurmurHash64(..., seed) для seed от 0 до k.
Так же оказалось, что такой набор MurmurHash64 функций генерирут одинаковый набор хешей для строк, отличающихся в младших битах.
В результате, если положить в фильтр блума строку "cat", то там оказывается за компанию и "bat". Если положить "good", то фильтр содержит и "food".
Оказалось, что "набор независимых хеш-функций" выбирается как MurmurHash64(..., seed) для seed от 0 до k.
Так же оказалось, что такой набор MurmurHash64 функций генерирут одинаковый набор хешей для строк, отличающихся в младших битах.
В результате, если положить в фильтр блума строку "cat", то там оказывается за компанию и "bat". Если положить "good", то фильтр содержит и "food".
Персонализация бывает разной
Персональные рекомендации ютуба считают, что мне надо показывать котят, смешные приколы, аниме (да, две недели назад я посмотрел несколько AMV) и Петросяна (да, я проверял, правда ли он шутит не смешно). Короче, ужасные.
Персональные рекомендации твиттера... гхм, гораздо специализированей и точнее:
( Collapse )
Персональные рекомендации твиттера... гхм, гораздо специализированей и точнее:
( Collapse )
Фобия Шредингера
Фобия Шредингера - боязнь открыть ящик с неизвестным состоянием кота. Ведь, пока ящик не открыт - можно считать, что кот не мертв.
По мотивам http://avva.livejournal.com/2593860.html
По мотивам http://avva.livejournal.com/2593860.html
fast utf-8 validation
Наткнулся на простую и быструю библиотеку декодирования UTF-8, кроссплатформенную, с валидацией всех возможных ошибок в utf-8 (overlong, surrogate pairs) - http://bjoern.hoehrmann.de/utf-8/decoder/dfa , без бранчинга ( «?:» заменяется на стандатный битхак mask=((int)x-1)>>31), легко векторизуется до чтения dword/qword. Декодирование рассматривается как конечный автомат, конечный автомат загонятся в таблицу [char x state] →state
Протестировал брутфорсом, работает эквивалентно iconv (в плюс iconv - он умеет детектить суррогатные пары, но что с ними делать - оставляет решать пользователю).
Не законом Мура единым ускоряем софт
Протестировал брутфорсом, работает эквивалентно iconv (в плюс iconv - он умеет детектить суррогатные пары, но что с ними делать - оставляет решать пользователю).
Не законом Мура единым ускоряем софт
mailware!
В связи с тем, что Mail.Ru поднимает[?] температуру воды с лягушкой[?] чуть быстрее конкурентов, предлагается термин-дразнилка mailware (мыльварь).
mailware - это malware оправдываемый словами «А чо они все рекламные листовки разносят по подъездам, мы тоже так хотим, сейчас раскрасим стены вашего подъезда в свою рекламу»
mailware - это malware оправдываемый словами «А чо они все рекламные листовки разносят по подъездам, мы тоже так хотим, сейчас раскрасим стены вашего подъезда в свою рекламу»
grep is unstable
Раньше фильтровал символы с кодом больше 0xffff (никаких кошачьих смайликов) в UTF-8 потоке как
LC_ALL=C grep -v `echo "[A-B][A-B][A-B]" | tr AB "\200\277"` || true
Это выкидывает строки со слишком длинными последовательностями байтов 10xxxxxx в UTF-8 символах, UTF-8 на входе гарантировано корректный.
Внезапно при смене окружения перестало фильтровать, без диагностики (просто пропускает "большие" символы сквозь себя). GNU grep 2.6.3, если что. tr отрабатывает корректно.
Сменил на питон,
check = re.compile(3 * ('[' + ''.join(map(chr, xrange(0x80, 0xc0))) + ']'))
for l in sys.stdin:
if not re.search(check, l):
sys.stdout.write(l)
В восемь раз медленней, фи. Но работает.
LC_ALL=C grep -v `echo "[A-B][A-B][A-B]" | tr AB "\200\277"` || true
Это выкидывает строки со слишком длинными последовательностями байтов 10xxxxxx в UTF-8 символах, UTF-8 на входе гарантировано корректный.
Внезапно при смене окружения перестало фильтровать, без диагностики (просто пропускает "большие" символы сквозь себя). GNU grep 2.6.3, если что. tr отрабатывает корректно.
Сменил на питон,
check = re.compile(3 * ('[' + ''.join(map(chr, xrange(0x80, 0xc0))) + ']'))
for l in sys.stdin:
if not re.search(check, l):
sys.stdout.write(l)
В восемь раз медленней, фи. Но работает.