?

Log in

No account? Create an account
nyaload

Журнал Пушыстого

Журнал Пушыстого

Entries by category: общество

perspective correction UX: GIMP vs Photoshop.
nyaload
_winnie
GIMP (самый последний): (perspective tool) надо медитативно таскать четыре точки несколько минут, которые неочевидным образом влияют на стороны прямоугольника, который надо выпрямить. И дико тормозит при этом. Перед этим надо добавить хелперы над рисунком, которые помогают понять, где вертикаль, а где горизонталь (drag-n-drop с линеек над/сбоку). Выправив одну сторону - мы портим другую. При этом точки часто надо вытащить за пределы экрана, поэтому по ходу дела надо делать zoom out. Натурально, правда, я в текстовом и видео-туториале видел, что люди реально так делают. Сильно удивился, что разработчики не видят, как люди зря тратят своё время.

Photoshop (4-летней давности, CS6) : (perspective crop tool, там же где и обычный crop) указываем четыре точки исходного прямоугольника на фото, нажимаем "применить".

Такого в GIMP я не вижу, хотя именно это нужно для выправления фото документов или зданий. Даже если такая функциональность есть, то увы она недоступна для простых людей. Итого, на фотошоп я потратил 5 минут на просмотр видео-туториала (из которого мне нужно было 5 секунд, "где кнопка", а остальная часть видео - еще два способа коррекции 1, 2), на ГИМП - потратил полчаса, и не нашёл того что надо. Снова закрываю GIMP с планом "посмотреть через два года".

update: max630 нашёл нужную кнопку "corrective (backward)" для GIMP, но почему-то она у меня работает только на маленьких рисунках, а на больших - через минуту работы стирает слой, делая его прозрачным. update2: помог такой трюк, чтобы избежать стирания слоя - сначала выделить трансформируемую область прямоугольным выделением. Оно тогда и времени тратит меньше, не минуту, а полминуты.

Что такое оттенок цвета.
nyaload
_winnie
Матовый объект, который отражает падающий свет во все стороны, не меняя его спектральный состав - белый, т.е. бесцветный. Если свет отражается (почти) весь, то это белый, если частично (изменив только яркость, не состав) - оттенок серого.
Матовый объект, который мы на глаз не сможем отличить от такого идеального для всего спектра (равномерно отражает видимый для нашего глаза спектр привычных источников света) - тоже назовем бесцветным.

Яркость цвета - монотонная функция от мощности излучения.

Цвет объекта, который ближе к серым (множеству бесцветных) цветам по какой-нибудь метрике - менее насыщенный. Если дальше от множества серых бесцветных цветов - то более насыщенный.

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


Цвет источника света (не объекта) - задается цветом, который виден на бесцветном объекте при освещении этим источником. Чтобы задать конкретными числами - нужно мерять относительно "условно единичной яркости условно белого источника".

Вроде как-то так. Это описывает понятие "цвета объекта", без учета блестящести ("перламутровый", "металлик", "матовый", ...), и без учета влияния окружающего контекста на восприятие цвета. Что мне в этом описании интересно - это возможность определить объективно 100% белый цвет (как цвет объекта), и опора только на понятие "этот цвет близок к тому" без привязки к конкретной интенсивности конкретных длин волн или к конкретным особенностям человеческого зрения.


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


upd: кажется, я воспроизвел своим словами секцию "характеристики цвета" из википедии. Только я более точно указал, что такое бесцветный (ахроматический) цвет, без порочного круга в определениях "бесцветный это без цветового тона, а цветовой тон это отличие от бесцветного". Это моя выдумка, не знаю насколько корректная/полезная.


Рисунок - не относящийся к тексту выше быстрый эксперимент, можно ли рисовать перышки крыла в одном слое. Мне не понравилось, при попытке исправлять тени/свет - получается мыло и испорченные волоски перьев.
Tags: ,

Покупка ацетона в Москве, проверка использования прекурсора
nyaload
_winnie
Интернет магазин попросил заполнить вот такое:

Я, ФИО, прошу отпустить 11,1 кг ацетона, которые будут использоваться в технических целях (обработка и растворение пластиковых моделей после 3d-печати). В случае использования вышеуказанных веществ не по назначению покупатель несет полную административную ответственность, согласно ст. 28, 29, 30 Федерального закона РФ от 10.12.1997г. «О наркотических средствах и психотропных веществах».
Условия хранения, отпуска, транспортировки и использования продукта соблюдаются, согласно закону РФ.
Документация учета ведется в соответствии с предъявленными требованиями.
Ответственный исполнитель за данную закупку и оформление документов: Паспортные данные


Кто-нибудь в курсе, придут ли ко мне с проверкой, узнавать потратил ли я ацетон как написал и предъявить доказательства этого?

update: вроде я никому ничего не должен, и проверять не будут (кошмарят штрафами и проверками юридические лица, а не физические). Ацетон в той же категории, что и соляная кислота (таблица III списка IV).
Надо только уточнить, не изменилось ли что-то с 2013 года:

Read more...Collapse )

В один мешок помещается K яблок. Сколько мешков надо, если яблок - N штук.
nyaload
_winnie
Часто встречающаяся в программировании (тривиальная) задача:
В один мешок помещается K яблок. Сколько мешков надо, если яблок - N штук.
Нет, не N/K. И даже не (N/K)+1. На самом деле, (N+K-1)/K.

Убираем одно яблоко (т.е. остаётся N-1), если какой-то мешок заполнен не полностью, то убираем именно из него. Смотрим сколько полностью заполненных мешков нужно для такого количества. Это (N-1)/K. Добавляем обратно тот мешок, из которого вынули яблоко, получаем на 1 больше, т.е. 1 + (N-1)/K.
Почему именно одно яблоко? Потому что похожее рассуждение "уберем 0 яблок" не работает для N=42*K, а "уберём 2 яблока" не работает для N=42*K+1. Требуется чтобы мешок из которого убрали яблоки - был ровно один (для двух яблок это не так), и чтобы он перестал быть полным (для 0 яблок это не так).

Можно ещё рассуждать так: количество мешков увеличивается монотонно, и ровно на 1 при увеличении N на K. Отсюда визуальный способ мышления подсказывает, что график формулы - это "лесенка", где длина ступеньки равна K. Такая лесенка задаётся формулой N/K. Осталось только понять, как сместить вверх и вбок такой график для совпадения с искомой формулой. Значит формула должна быть вида константа1 + (N+константа2)/K, осталось подобрать константы. Разрыв в количестве мешков - в тот момент, когда яблок на одно больше, чем для полного заполнения всех мешков (т.е. N делится на K). Отсюда константа2=-1. константа1 подбирается на любом частном случае.

Чтобы формула корректно работала для N=0 и не делить отрицательное (N-1) - надо переместить слагаемое-единицу в знаменатель дроби, т.е. формула становится (N+K-1)/K.
В C/C++ отрицательные числа делятся не так, как в Python, в Python деление -1 на K сработает корректно и можно использовать 1+(N-1)/K, в C/C++ - нет, и лучше использовать (N+K-1)/K
Если K - степень двойки, то такой проблемы нет, битовые знаковые сдвиги отработают корректно в 1+((N-1)>>10).
Если N настолько большое, что есть риск IntegerOverflow - то N/K + bool(N%K)

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

Туториал по консольному svn на русском
nyaload
_winnie
Если вам вдруг понадобится работать с клиентом svn, причем с консольным, то вот краткий туториал:

Read more...Collapse )
Tags:

👯
nyaload
_winnie
По юникод-символам JAPANESE OGRE, LOVE HOTEL, JAPANESE GOBLIN, SILHOUETTE OF JAPAN (!), TOKYO TOWER, WOMAN WITH BUNNY EAR и тд. четко становится понятно, из какой страны те странные люди, кто добавляет в юникод упячку вроде PILE OF POO 💩 или бред FISH CAKE WITH SWIRL DESIGN 🍥

Забавно, яндекс умеет искать по этим бредовым значкам, в отличие от гугла и бинга: Read more...Collapse )

Сиволов в «miscellaneous symbols and pictographs» относящихся явно к японской культуре больше, чем к остальным странам вместе взятым, и то, "француская жаренная картошка FRENCH FRIES" тут скорее всего только благодаря меню японских кафешек. updated: Спасибо esyr, стало понятно, что эти символы - это результат стандартизации SMS-смайликов японских операторов
U+1F46F 👯 WOMAN WITH BUNNY EARS
U+1F3EE 🏮 IZAKAYA LANTERN
U+1F3E9 🏩 LOVE HOTEL
U+1F458 👘 KIMONO
U+1F5FC 🗼 TOKYO TOWER
U+1F5FE 🗾 SILHOUETTE OF JAPAN
U+1F5FF 🗿 MOYAI
U+1F4A2 💢 ANGER SYMBOL
U+1F4A9 💩 PILE OF POO
U+1F4B1 💱 CURRENCY EXCHANGE
U+1F47A 👺 JAPANESE GOBLIN
U+1F479 👹 JAPANESE OGRE

( источник таблицы: http://www.charbase.com/block/miscellaneous-symbols-and-pictographs )
Tags: ,

lena.jpg - rule 34
nyaload
_winnie
Людям, которые делали что-то связанное с компьютерной графикой, знакома вот эта картинка:


Остальное - под катом.

Read more...Collapse )

MayBe C++
nyaload
_winnie
Вот храним мы в переменной целое число. Иногда нам надо хранить не число, а факт того, что числа вообще нет. Например, функция пересечения двух линий хочет сообщить что нет точки пересечения вообще. Часто для этой цели используют "особые" значения которые вроде как бессмысленные. Например, -1 для int, или пустая строка для std::string.

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

Для того что бы явно записать факт "иногда тут ничего нет" используется обёртка над типом, внутри которой хранится булевский флажок. В boost есть тип boost::optional<T>. В Haskell есть Maybe T. В C# есть Nullable (для встроенных типов).


Хороший пример, почему лучше иметь тип в котором особое состояние "нету никакого int вообще": cначала человек получает -1 из системной функции типа getpid, а затем эта -1 попадает в killall. Смерть, разрушения, мертвый мак.

Есть ещё мой велосипед для C++, когда не хочется boost, без вложенных зависимостей:
MayBe<T> : https://github.com/dobrokot/may_be/blob/master/may_be.hpp

Если кто-то сможет помочь переписать с учетом strict aliasing - буду благодарен. Как с учетом strict aliasing вообще разместить объект типа T в массиве char[sizeof(T)] ? Русские коментарии на английские переведу сам, если вдруг окажется что штука нужная и нравится людям больше чем boost::optional :)

Примеры использования: https://github.com/dobrokot/may_be/blob/master/may_be_usage_example.cpp
Read more...Collapse )
Tags:

Я описался, потому что...
nyaload
_winnie
Оригинал взят у dtjurev в Боян, но не могу не поделиться )
Самый целеустремлённый человек – это тот, который очень хочет в туалет. Все преграды кажутся несущественными. Согласитесь, смешно слышать фразы типа:

Я описался, потому что...
– Не было времени сходить в туалет.
– Я был слишком уставший.
– Потерял надежду. Я не верил, что смогу добежать.
– Ну конечно. Он-то добежал. У него ноги вон какие длинные.
– Я слишком глуп, чтобы это сделать.
– Я уже 5 раз описывался. У меня никогда не получится добежать.
– Это явно не для меня.
– Я постучался в туалет, но мне не открыли.
– Мне не хватило мотивации.
– У меня была депрессия.
– У меня нет денег, я не могу себе этого позволить!
– Решил сходить завтра

Часто ли вы идёте к цели, как будто бежите к туалету?

vim: подсветка при поиске (hlsearch), убрать подсветку по esc
nyaload
_winnie
Удивляют меня вим и bash, что у них есть миллион дурацких флажков "не теряй данные", "не забывай команды при нажатии на крестик закрытия терминала", "раскрашивай вывод" ( 95% представителей homo sapiens умеет различать цвета ), "используй адекватную лаконичную информацию в доступных статус-барах", "следи сам за размером окошка терминала", "запоминай историю", "расставляй скобки самостоятельно", "подсвечивай не-вырви-глазно найденное", "не используй дефолтный динамик компьютера", "конкретно для make-файлов используй табы", "включи анду", "сделай так что бы русские буквы работали", ..., ...

И про эти флажки узнаёшь случайно. От товарищей, из блогов, из сборников "1001 совет для vim"

В vim можно сделать подсветку для поиска ( set hlsearch ), и инкрементальный поиск ( set incsearch ).

После включения подсветки поиска начинает дико раздражать то, что её невозможно убрать. Нужно или набрать команду :nohlsearch, или поискать несуществующую ерунду ( /asdfasdf ). После многих лет исследований люди придумали, как при помощи конфига убрать эту разражающую особеность:

:nnoremap <esc> :noh<return><esc>

Оригинальный пост который про это рассказывает: http://www.viemu.com/blog/2009/06/16/a-vim-and-viemu-mapping-you-really-cant-miss-never-type-noh-again/
Tags: