Объектив монокль: Монокль. Фотографии на монокль с Гелиос-44
Монокль. Фотографии на монокль с Гелиос-44
Монокль – объектив всего с одной линзой. Линза обязательно вогнуто-выпуклая, часто ее называют мениском. С одной стороны – монокль вещь проще некуда, но с другой стороны, это очень сложное для понимания и работы устройство.
В данном обзоре представлено два монокля, один переделан из объектива Гелиос-44, а другой из объектива Гелиос-44м-4. Оба монокля очень похожи. Лучше всего монокли с переделанных Гелиосов ведут себя на диафрагмах 4.0-8.0, почти всегда использую их на 5.6 и забываю про кольцо управления диафрагмой. Забавно, но если закрыть диафрагму до 16.0, то объектив превращается в довольно таки темный, но резкий объектив.
Диафрагмирование на монокль из объектива Гелиос-44м-4
Монокль лучше всего делать из объектива с большОй светосилой. Чем больше светосила объектива – тем интересней будет рисунок. Встречал светлые мысли о том, что диафрагма у монокля должна быть кольцевой. Ну а даже если не кольцевой, то хотя бы размещенной перед линзой, а не за ней (как в обычном объективе).
Фото на монокль. После дождя.
Достоинства:
- Просто неповторимый рисунок. И никакой редактор не сможет повторить воздушность и объемность картинки. Если сделать несколько удачных кадров на монокль – то можно влюбиться в него на всю жизнь.
- Дешевизна изгтотовления. Монокль можно изготовить самому. Как это сделать не составит труда найти в интеренете. Обычно, простенькие монокли, такие как у меня, делают из недорогих светосильных фикс объективов по типу тех же Гелиос-81н, Гелиос-44м-Х.
- Объектив получается очень легкий и совсем не нужно переживать за его целостность, даже если он с ломается, всегда можно сделать еще один.
Фото на монокль. Портрет.
Недостатки:
- Сферические и хроматические абберации, дисторсия, падения контраста. Но в умелых руках эти недостатки превращаются в достоинства, главное правильный подход. Даже в контровом свете с него можно получить интересную фотографию для пейзажа.
- Сложность фокусировки. Не для слабонервных. После перехода от автофокусного зума на монокль может немножко побаливать голова от попыток попасть в резкость.
- Как и другой мануальный объектив, на большинстве цифрозеркальных DX камер от Nikon не будет работать экспонометр. Более делатально как работать с мануальной оптикой на системе Nikon в статье – советская оптика. Как работать на системе Canon в статье старые объективы на Canon
- Практически невозможно сделать монокль с зумом
Фотография на монокль. Улица после дождя. Яркие сферические абберации
По поводу работы с моноклем
При закрытии диафрагмы меняется не только ГРИП, но и сама точка фокусировки. Обычный метод наводки на открытой и снимок на прикрытой – не подходит. Потому, наводиться на резкость нужно уже на той диафрагме, на которой планируете снимать. Для облегчения фокусировки на пленочных камерах желательно пользоваться специальными экранами фокусировки. На цифрозеркальных камерах без дополнительных средств поможет только зоркий глаз, иногда Live View. Но даже Live View помогает очень слабо и навести на резкость сложновато.
Фотография на монокль. Телефон.
По поводу картинки на монокль
Картинка действительно необычная, собственно только ради картинки люди и пользуются моноклем. Монокль имеет сильнейшие сферические аберрации (нерезкость между контрастными элементами на изображении). И эти аберрации служат добрую службу для создания интересных снимков. Особенно монокль ценится для создания портретов с интересным эффектов. Также для натюрморта и пейзажа – там монокль может показать свой сказочный рисунок.
Больше всего искажения видны по краям кадра, потому, размещая объекты в центре фотографии, можно хорошо акцентировать на нем внимание. Вообще, с монокля очень хорошо смотрятся снимки распечатанные на А4.
Монокль отлично передает объем. В портрете можно забыть про дефекты кожи и начать акцентировать свое внимание на характере портретируемого. Мягкость и воздушность монокля очень важна для лицевого портрета. Может сферические абберации и съедают резкость, но монокль дает контуры изображения, что очень и очень важно в фотографии.
Фотография на монокль. Дым из труб ночного города
Самое интересное
А самое интересное, что в постобработке невозможно повторить рисунок монокля. Так что если кто-то спросит Вас, а не проще ли просто отфотошопить фотографию, скажите ему, что рисунок монокля подделать нельзя. В то же время, монокль у профессионалов пользуется спросом, а как таковой объектив не выпускают. То есть не так то просто найти монокль в продаже, гораздо проще заказать его изготовления из рабочего объектива либо просто купить уже изготовленный. Eсли Вы ищите монокль, то обратите внимание, что есть
При переделке Гелиос-44 и Гелиос-44м-4 шкала дистанции фокусировки больше не работает, а сам объектив из 58мм превращается где-то в 70мм короткий телевик. Для возможности нормально фокусироваться к объективу нужно присоединить пару удлинительных колец. Я пользуюсь моноклем от Гелиос-44 с помощью переходника КП-42\Н. Объектив с таким кольцом прекрасно фокусируется на бесконечности, чего нельзя добиться с КП-42\Н без линзы с обычным объективом.
Примеры фотографий на монокль. Все фотографии без обраотки, только уменьшен размер и впечатан EXIF. Можете представить себе, что станет с фотографиями, если к ним еще и примень самую простейшую обработку, такую как перевод фото в оттенки серого, сепии и т.д.
На правах рекламы: если Вас заинтересовал монокль – можете заказать его по контактам, указанным в разделе мануальная оптика.
Выводы
Монокль – очень простое устройство, которое дает неимоверно интересную картинку. Если научиться правильно пользоваться моноклем, то можно творить реальные шедевры в фотографии. Обычно монокль получают переделкой старого светосильного фикс объектива, цена вопроса довольно скромная.
Спасибо за внимание. Аркадий Шаповал.
Monolens 50 мм и другие арт-объективы
Все новое – это хорошо забытое старое и именно поэтому мы сегодня в гостях у человека, который профессионально занимается изготовлением творческих объективов моноклей, Вячеслава Зитева.
Илья Хапричков: Почему именно монокль? Как вам пришла эта идея в голову? Почему вы решили остановиться именно на такой оптике?
Вячеслав Зитев: Название «монокль», потому что в оптической
схеме этого объектива используется лишь одна линза. Линза и
диафрагма.
Как пришел к этому? Все произошло само собой, я не искал какую-то уникальную
технику съемки, просто увлекся фотографией, снимал в совершенно
различных направлениях: репортаж, сток, мероприятия, концерты. И пришел к
художественной фотографии. А в ней однажды наткнулся на съемку моноклем. Стал выяснять,
что это за объектив. Первый монокль сделал по рекомендациям в сети. Меня
поразило изображение, которое он позволяет получить. Дальше шло
развитие процесса изготовления этого объектива.
|
© Вячеслав Зитев |
Илья Хапричков: Получается, любой человек может собрать монокль дома без каких-либо проблем?
Вячеслав Зитев: Да, в сети есть множество рецептов изготовления моноклей из старых советских объективов. К сожалению, обычно в них не раскрыт ряд важных вопросов. Например, не говорится ничего о том как сделать правильную юстировку линзы под рабочий отрезок той системы (Canon, Nikon, Pentax…) на которой монокль будет использоваться. Но сделать их вручную не составит труда, если есть время и способность держать отвертку в руках.
Илья Хапричков: Какой рисунок получается при использовании данной оптики? Чем она интересна, специфична? Ведь это определенный жанр, как понимаю?
Вячеслав Зитев: Иногда монокль относят к определенному жанру. Исторически это ландшафтная и салонная фотография. То, что сейчас называется: пейзажная и портретная съемка. Тем не менее, моноклем можно снимать в любом направлении.
|
© Вячеслав Зитев |
Тот же спорт можно снимать и
как репортаж, документируя событие, а можно в художественной стилистике,
глядя на светотень, формы, линии и т.д. В историческом контексте были
фотографы, снимавшие спорт мягкорисующей оптикой.
Особенность такой оптики – мягкий
рисунок. Монокль привносит в снимок образность, сглаженность
текстур и некое подобие живописи.
Илья Хапричков: То есть вы не фотографируете, а рисуете фото? Передаёте душевное состояние?
Вячеслав Зитев: Верно. Одно из первых направлений фотографии, где применялся монокль, это пикториализм (от англ. pictorial – живописный), т.е. передача пространства так, как оно передаётся в живописи, но фотографическим способом. Метод – фотография, сюжет и эстетический аспект –живопись.
|
© Вячеслав Зитев |
Илья Хапричков: Но
наверняка возникали споры с фотографами, которые не разделяли вашу точку
зрения? Мотивируя это тем, что всех этих эффектов можно добиться на
компьютере. Так зачем же приобретать или изготавливать монокль?
Вячеслав Зитев: Кому что удобно. Не спорю, сымитировать рисунок монокля можно в графических редакторах. В свое время, когда только начинал снимать моноклями, я коллекционировал эти способы. У меня было около 15 экшнов в Photoshop, имитирующих подобный эффект. Тут каждый выбирает, что ему ближе: кто-то предпочитает сидеть за компьютером и кропотливо добиваться такой картинки, а кто-то фотографирует, сразу получая желаемое изображение.
Илья Хапричков: Т.е. это будет имитация, как понимаю? Всё равно, что пытаться изобразить малую глубину резкости. Но люди продолжают покупать светосильную оптику или такие специфичные линзы как тилт-шифт.
|
© Вячеслав Зитев |
Илья Хапричков: Хотелось
бы узнать, как вы начали этим заниматься профессионально? С чего всё
началось? Насколько ваше нынешнее производство отличается
от первоначального домашнего?
Вячеслав Зитев: Всё произошло естественным образом. Первый монокль я собирал, чтобы попробовать что это такое. Впечатлился и полгода снимал только им. Потом у меня стали спрашивать, как я делаю такие картинки? Могу ли сделать такой объектив и им? Я сделал с десяток моноклей по просьбам друзей и знакомых. Потом появились первые заказы.
| © Вячеслав Зитев |
Илья Хапричков: Насколько ваше нынешнее производство отличается от первоначального домашнего?
Вячеслав Зитев: Монокли из старых объективов не лишены недостатков. Вот, например, монокль на основе корпуса объектива «Индустар-50-2», у него всего 7 лепестков диафрагмы. При появлении в кадре точечных источников света, возникает ореол свечения повторяющий форму диафрагмы – будут появляться своеобразные уголочки, заломы.
| Монокль из старого объектива «Индустар-50-2» |
А вот монокль новой конструкции, в которой мы постарались учесть все недостатки моноклей, сделанных из советской оптики. Они имеют 12-лепестковую диафрагму, юстировку под все системы (на этапе сборки), полное чернение. Сзади поставлен специальный шибер от переотражений. Всё это позволяет получать наиболее качественное изображение для такого вида оптики. В ближайшее время мы запускаем краудфандинговый проект на Planeta.ru по сбору предзаказов на этот монокль.
| Новый монокль 50 мм |
Илья Хапричков: Хотелось бы узнать, чьи работы вас вдохновили?
Вячеслав Зитев: Первый фотограф, чьи работы меня вдохновили – Георгий Мстиславович Колосов, у которого есть несколько замечательных серий, например: «Русский Север» и «Великорецкий крестный ход». Также Людмила Таболина, и ее снимки скульптур «Летнего сада». Монокль сгладил все дефекты, трещинки мрамора, и скульптуры на фотографиях как живые. Елена Скибицкая прекрасно снимает Петергоф, а также обучает в своей фотошколе съемке в т.ч. и на монокль.
| © Георгий Колосов. Серия «Русский Север» |
| © Георгий Колосов. Серия «Великорецкий крестный ход» |
Тем, кого интересует исторический
аспект, можно поискать информацию в Сети по слову «пиктореализм». Первые
русские мастера это Гринберг, Николай Андреев, Карелин. Благодаря мягкорисующей
оптике их фотографии наиболее выразительно передают дух той эпохи. Их
художественные фотографии впечатляют гораздо сильнее, чем обычные репортажные,
на мой взгляд.
| Фото Николая Андреева |
Илья Хапричков: Значит есть
фотошколы, где обучают этому направлению съемки? И могут подсказать какая
фотография хорошая, а какая нет?
Вячеслав Зитев: Да, в Петербурге есть несколько фотошкол, обучающих технике съемки моноклем. Как я уже сказал, это фотошкола «5,6» Елены Скибицкой, фотошкола «Преображение», фотошкола «Фазан» что на площади Ленина. Я сам время от времени провожу ознакомительные занятия по съемке моноклями. Рассказываю об истории их появления, показываю картинки, сделанные с помощью них, приношу несколько моноклей с собой. Мы снимаем портреты, натюрморты.
| © Вячеслав Зитев |
Илья Хапричков: Вопрос,
который интересует лично меня, поскольку фотография мне менее близка, нежели
видеосъемка – насколько монокль подойдет для видеографии, съемки кино,
рекламы?
Вячеслав Зитев: а давай поставим эксперимент! Я дам монокль а ты попробуешь поснимать им видео? 🙂
Илья Хапричков: С радостью! Люблю эксперименты 🙂
Ролик, снятый Ильёй Хапричковым с помощью монокля
Вячеслав Зитев: Время от времени ко мне обращаются и видеографы, и кинооператоры. Несколько раз я специально под заказ делал монокли для кино, в т.ч. для профессиональной кинокамеры RED ONE. Использование монокля в ряде случаев может помочь добиться режиссеру, оператору необходимых акцентов. Свадебные видеографы их часто используют.
Трейлер Канта. Снято с помощью монокля
Но нужно понимать специфику этого объектива. Снимать им все подряд не стоит, это будет неинтересно. Чтобы получились красивое фото или видео, нужно учитывать, что при использовании монокля по свету должны выполняться определенные условия – чтобы были рисующий свет, световые акценты, контрастные границы.
Илья Хапричков: Значит, есть правила, которые нельзя нарушать?
Вячеслав Зитев: Также как и при использовании обычной оптики. Если мы говорим про цветную съемку, то желательно, чтобы сцена была в соответствии с правилами колористики. Если мы говорим о съёмке в ч/б, важна светотень. Для съемки при малой глубине резкости важны расстояния от камеры до объекта съемки, от объекта до фона и т.д.
| © Вячеслав Зитев |
Илья Хапричков: Какую
еще оптику вы планируете выпускать или выпускаете?
Вячеслав Зитев: На данный момент еще мы делаем объективы Петцваля для камер, на которые они раньше никогда не делались — для среднеформатных камер 6х6 и дальномерных. А на днях я должен получить первые линзы для Петцвалей на зеркалки.
|
Объектив Петцваля Petzval Monolens 104mm для среднеформатных камер |
|
Объективы Петцваля Petzval Monolens 50mm для дальномерных и беззеркальных камер |
| © Вячеслав Зитев |
Илья
Хапричков: какие модели моноклей и на какие системы вы делаете?
Вячеслав Зитев: На данный момент для зеркальных камер мы делаем монокли с фокусными расстояниями: 33, 45, 50, 60, 80, 85, 130 мм. Для беззеркалок: те же и 26 мм. Еще для них я сейчас тестирую монокль 20 мм. Для дальномерных камер: 35 и 50 мм. В них сохранен механизм дальномера, т.е. фокусировка происходит как с обычной дальномерной оптикой. Таких моноклей на сегодня не делает вообще никто. Так же делаем монокли для среднеформатных камер, но только под заказ, по причине их меньшей популярности.
Илья Хапричков: А делаете ли какие-то эксклюзивные модели?
Вячеслав Зитев: Делаем. Но, в первую очередь повторюсь об эксклюзивности нашего нового монокля. Мы создали его с нуля. Просчитали линзу так, чтобы устранить некоторые оптические дефекты, присущие самодельным моноклям. Спроектировали симпатичный и удобный корпус, на котором все шкалы соответствуют действительности.
| Новый монокль 50 мм на камерах |
Сейчас, как я уже сказал, мы будем
запускать краудфандинговую кампанию на сто таких объективов под
зеркальные камеры Canon, Nikon, Pentax и Sony.
А через адаптер их можно будет ставить и
на системные камеры MFT, Fuji X-Mount, Sony E-Mount.
Илья Хапричков: То есть, фактически, под любой популярный фотоаппарат?
Вячеслав Зитев: Да.
Илья Хапричков: Большое спасибо. Было действительно интересно узнать о такой своеобразной оптике. Мне уже не терпится её протестировать. Думаю, и нашим зрителям будет интересно попробовать что-то новое.
Интервью проходило в «Музее
истории фотографии» (Санкт-Петербург, Проф. Попова, 23).
Сайт Вячеслав Зитева, посвященный моноклестроению и пикториальной фотографии: monolens.ru.
Сбор презаказов на новый монокль на сайте Planeta.ru.
Самодельный объектив типа «монокль»
Самодельный объектив типа «монокль»
ВВЕДЕНИЕ
Монокль — это простой однолинзовый софт-объектив. Используя монокль фотограф расширяет диапазон своих возможностей без применения дополнительной пост-обработки результата съёмки. Монокль активно применяется фотографами при съемке любых сюжетов, — там, где его рисунок уместен и приятен глазу. Отличительной чертой монокля является мягкое, светящееся изображение, скрадывающее мелкие детали. В то же время монокль сохраняет контуры, — правильно изготовленный монокль представляет собой довольно резкий, хотя и малоконтрастный объектив. Насколько мне известно, сейчас монокли не производятся промышленно, в отличие от многолинзовых софт-объективов (примером такого объектива может служить Dremagon ). Монокль “рисует” в основном за счет нескоррегированных сферических искажений. Изменяя относительное отверстие диафрагмы и ее местоположение относительно линзы, можно менять степень аберраций и таким образом регулировать рисунок монокля. Для простого монокля характерны также хроматические искажения, смягчающие контурную резкость. В софт-объективах промышленного изготовления они обычно устранены применением дополнительных линз.
КОНСТРУКЦИЯ
Использовать монокль удобнее всего с простой зеркальной камерой, производя фокусировку по матовому стеклу. В качестве линзы для монокля выбирается вогнуто-выпуклое стекло (положительный мениск) с нужным фокусным расстоянием (обычно в диапазоне 35-135мм). Мениск располагается вогнутой стороной наружу, в сторону снимаемого объекта. Диафрагма размещается на расстоянии приблизительно 1/10 f перед линзой, то есть снаружи объектива, и юстируется по минимальной коме (кома — специфическое оптическое искажение, “свечение” вокруг ярких объектов). Ниже изображен эскизный чертеж простого монокля. Фокусное расстояние отсчитывается от задней кромки линзы (вертикальная пунктирная линия).
Диафрагма с отверстием фиксированного размера вставлена в резиновую коническую бленду. Размер относительного отверстия диафрагмы также подбирается опытным путем, по наилучшему рисунку. Для разных сюжетов могут использоваться разные относительные отверстия.
Характерной особенностью монокля является довольно большой ход элементов объектива при наводке на резкость, поэтому бывает трудно использовать оправу стандартного объектива как основу для изготовления монокля, за редкими исключениями (иногда удается воспользоваться дополнительной резьбой, изначально не предназначенной для наводки на резкость, а только соединяющей две половины объектива). Отсюда многочисленные удачные попытки изготовления моноклей на основе телескопических или гармошечных оправ (макро-приставок, bellows).
ИЗГОТОВЛЕНИЕ
1.Монокль на основе оправы “Zykkor M.C auto 1:2.8 135mm”
У меня есть несколько старых зеркальных камер системы Minolta — Minolta SRT Super, Minolta SRT 200 и Minolta SRT MCII. Камеры серии SRT это очень надежные и простые механические зеркалки , оптику к которым можно купить по бросовым ценам, в особенности если покупать не “родные” линзы Rokkor-Minolta, а объективы сторонних (Vivitar, Tamron, Sigma, …) производителей. Поэтому я выбрал в качестве основы для своего первого монокля объектив “Zykkor M.C auto 1:2.8 135mm”, с байонетом Minolta manual для фотоаппаратов Minolta моделей SRT, XE, XK. Это простой объектив, использующий достаточно качественное стекло. Разбирается он очень легко, при этом не требуется ничего кроме ювелирной (#0) отвертки и резиновой чушки подходящего диаметра (в качестве замены сойдет резиновая ножка от мебели или круглый стакан, обернутый тонкой резиновой лентой). Чушка используется для отворачивания кольцевой шайбы, крепящей переднюю линзу.
Я выкрошил из объектива все линзы (числом 4) и диафрагменный блок, оставив пустой цилиндр. Внутреннее чернение на первый взгляд выглядело достаточно качественным, дополнительное подкрашивание или оклеивание не требовалось. В качестве основной линзы я попытался использовать макро-фильтр +10 диоптрий, наворачивающийся на внешнюю резьбу объектива. Однако фокусное расстояние этой линзы (100мм) требовало более короткого объектива для наводки на бесконечность, и я поставил в качестве основной вторую от внешнего конца линзу того же “Zykkor’a”, перевернув ее вогнутой стороной наружу, в соответствии с рекомендациями. Фокусное расстояние полученного объектива равно 135мм. Диафрагменный узел монокля сконструирован на основе резиновой бледы, новорачивающейся на внешнюю резьбу объектива. Диафрагмы, вырезанные из тонкого черного матового пластика, вставляются в бленду, оказываясь при этом на расстоянии 2.5 см от линзы монокля, что несколько больше рекомендованного расстояния в 1/10 фокусного. На снимке внизу изображен результат работы вместе с использовавшимися инструментами и частью внутренних деталей бывшего “Zykkor’a”:
Объектив требует доработки и юстировки. Прежде всего, надо разметить шкалу, чтобы упростить наводку на резкость (чтобы хотя бы на бесконечность можно было устанавливать по шкале). Нужно подобрать оптимальное расстояние диафрагмы относительно фокальной плоскости объектива и размер относительного отверстия. Подборка выполняется эмпирически, по рисунку комы (см. [3]). Конструкция объектива такова, что наводить на резкость можно двумя резьбовыми узлами с разным шагом — один для точной наводки, другой для грубой. Последний узел не использовался в оригинальном объективе, это просто резьба, соединяющая задний и передний цилиндры, в оригинальном объективе она была до конца ввернута. Такая схема упрощает наводку и усложняет разметку шкал.
2. Монокль на основе макро-приставки “Lentar”.
Этот монокль собирается в основном из стандартных деталей; ломать и курочить ничего не требуется (ну, почти). Итак, имеем:
-фотоаппарат “Minolta XE-7” c байонетом Minolta MD,
-макро-приставку “Lentar” для данного байонета,
-макро-фильтр неизвестного производителя (положительный мениск с фокусным расстоянием 135мм),
-T-адаптер как источник еще одной ответной части байонета MD,
-кольцо-переходник с резьбы 49мм на 55мм (как раз резьба линзы-макрофильтра),
-резиновую бленду “Quantaray” c резьбой 55мм для длиннофокусного объектива (бленда нужна не широкоугольная, так как широкоугольная задевает за рельсы “Lentar’а”),
-прозрачный УФ светофильтр 55 мм и пластиковую диафрагму с внешним диаметром, соответствующим внутреннему диаметру светофильтра (чтобы легко входила и хорошо держалась)
Вот оно все на картинке:
Работа начинается с линзы. Ее нужно перевернуть в оправе. Линза крепится в оправе резьбовым кольцом с двумя рисками, для того чтобы его отвернуть, нужен инструмент под названием spanner. Например, такой:
Заказать его можно вот здесь . Если заказать не получается, можно симпровизировать нужный инструмент, взяв в руки напильник и лист стали или стальную же трубку подходящей толщины и размера…должно получиться. Итак, отворачиваем, переворачиваем и заворачиваем на место. Следующим шагом изготавливаем универсальный переходник с байонета MD на резьбу 55мм. Берем в руки T-адаптер (используется для подсоединения фотоаппарата к телескопам, микроскопам и тому подобному оборудованию). Штука недорогая (мой обошелся 13 долларов с доставкой) и полезная. Откручиваем от Т-адаптера ответную часть MD байонета с помощью все той же отвертки (см. выше описание разборки Zykkor’а) и приклеиваем к нему эпоксидным клеем переходное кольцо 49-55мм. Цифры 49 и 55 можно заменить по вкусу, у меня просто было это кольцо. Если ваш любимый размер, скажем, 49мм, то это может быть и кольцо 55-49mm, и 52-49…надеюсь, понятно. Приклеивать нужно точно, чтобы не нарушить симметрию создаваемого объектива. Такие инструменты, как циркуль, линейка, а также картонные шаблоны помогут в этом:
Обратите внимание на отверстия для болтиков крепления на байонете T-адаптера: они вывернуты при его разборке и отверстия использованы при склеивании для вящей прочности. Если перед склейкой заклеить их липкой лентой со стороны байонета, то жидкая эпоксидка в них затечет и намертво зафиксирует переходное кольцо. Итак, монокль готов! Собираем его в порядке: фотоаппарат, макро-приставка, T-адаптер/переходное кольцо, линза:
Затем — бленда, светофильтр со вставленной диафрагмой. Вот конечный результат:
Полученный монокль отличается от описанного выше Zykkor’ного двумя важными характеристиками: во-первых, он наводится на резкость от 30 см (а не от 2-х метров) и до бесконечности. И наводка очень удобна, в особенности со штативом. Во-вторых, это универсальная база для изготовления нескольких разнофокусных моноклей — только меняй линзу, все остальное сохраняется!
ТЕСТИтак, вашему вниманию предлагается самый первый, пробный тест полученного монокля на базе оправы “Zykkor’а”.
Съемка производилась в условиях дневного освещения, утром, днем и вечером. Использовалась камера Minolta SRT MCII, пленка Fuji Reala 100, диафрагма с относительным отверстием f/6.14. Все кадры были отсканированы на сканерах Epson Perfection 1660 Photo и Epson Perfection 2400 Photo в режиме “transparency”, c использованием прилагаемого к сканеру адаптера для 35мм пленки, программой VueScan 7.6.8, c разрешениями 1600 и 2400 dpi. Полученные кадры корректировались в программе PhotoShop CS — исправлялся тональный и цветовой баланс. Каждый из снимков представлен в уменьшенном виде.
Монокль (объектив) — это… Что такое Монокль (объектив)?
Схема объектива монокль У. Уоллостона.Моно́кль — простейший объектив, состоящий из одной вогнуто-выпуклой линзы, называемой мениском.
Классическим является объектив монокль, предложенный Уильямом Уолластоном (William Hyde Wollaston), в начале XIX века, в качестве объектива для камеры-обскуры. Представляет собой мениск, обращённый вогнутостью наружу (к предмету). Апертурная диафрагма расположена перед линзой.
Такая компоновка позволяет до некоторой степени исправить астигматизм и несколько уменьшить кривизну поля изображения (за счёт отрицательного астигматизма передней (вогнутой) поверхности), а также полностью устранить кому (за счёт положения диафрагмы).
Неисправленными остаются сферическая аберрация, дисторсия и хроматические аберрации. Причём, если сферическую аберрацию можно уменьшить диафрагмированием, то хроматические аберрации и дисторсия для монокля неустранимы, хотя и по разным причинам.
Изображение, создаваемое моноклем, как правило, малоконтрастно, и имеет невысокую, убывающую к краям, резкость. Однако, при значительном диафрагмировании резкость монокля заметно повышается.
В настоящее время применяется фотографами, как творческий мягкорисующий объектив, преимущественно для портретных, пейзажных съёмок, а также съёмки натюрморта.
Характерный «рисунок» объектива монокль определяется величиной неисправленных аберраций (в основном сферической), которая в свою очередь зависят от оптических свойств линзы мениска, её геометрических размеров, а также величины отверстия в диафрагме. Как правило, рисунок монокля невозможно имитировать при постсъёмочной обработке фотоматериалов, либо в графических редакторах. Этим объясняется популярность использования объективов моноклей среди современных фотографов.
Литература
- Moritz von Rohr. Theorie und Geschichte des photographischen Objektivs. Berlin, Springer, 1899.
Фотографы, снимающие моноклем
- А. Н. Ерин,
- Г. М. Колосов
См. также
Монокль: изготовление и съемка
Дата публикации: 26.10.2007
В связи со все большим распространением зеркальных цифровых фотоаппаратов и непрекращающимся прогрессом в области разработки и производства объективов, резкие и детализированные фотографии получили абсолютное количественное превосходство над изображениями, полученными с использованием мягкорисующей оптики. Поэтому сейчас многие фотографы, находясь в поиске новых художественных приемов, открывают для себя богатые изобразительные возможности объективов с простейшими оптическими схемами. Самым простым объективом, относящимся к классу мягкорисующей оптики, является монокль. Он имеет всего одну выпукло-вогнутую линзу, также называемую мениском. Благодаря простоте оптической конструкции получаются характерные изображения с ореолами вокруг ярких объектов, пониженной контрастностью и сохранением четкости контуров.
Причиной появления ореолов на снимках являются сферические аберрации, возникающие из-за того, что собирающая однородная линза не способна сфокусировать все лучи света, проходящие через ее края и центр, в одной точке. Таким образом, изображение светлой точки на темном фоне, полученное при помощи монокля, на пленке или цифровой матрице будет выглядеть как пятно, окруженное ореолом.
z
Поскольку особенностью фотографий, полученных при помощи монокля, является отсутствие мелких деталей изображения, чаще всего фотографы применяют его при съемке портретов, особенно крупноплановых, которые получаются очень живописными. Однако область применения монокля не ограничивается портретным жанром, его можно с успехом использовать, снимая пейзажи, натюрморты и даже макро.
Некоторые модели советских объективов не составляет особого труда самостоятельно переделать в монокль. Проще всего смастерить монокль для портретной съемки, можно из объектива «Гелиос-44М» (фокусное расстояние монокля составит примерно 80 мм), который некогда шел в комплекте с зеркальными камерами «Зенит». При удачном стечении обстоятельств время, которое вы потратите на переделку, составит не более 20 минут. Из инструмента вам понадобятся пинцет, набор часовых отверток и масленка на случай заедания резьбовых деталей.
z
Сначала необходимо выкрутить переднее кольцо с названием объектива, затем внутреннюю оправу, которая фиксирует переднюю и среднюю группы линз. Из оправы нужно вывинтить кольцо, крепящее переднюю линзу, потом — достать промежуточное кольцо и среднюю группу линз. Затем с обратной стороны объектива вывинтить заднюю группу линз и разобрать механизм диафрагмы. После этого для надежной фиксации передней линзы возвращаем на место промежуточное кольцо, сверху кладем перевернутую выпуклой стороной вниз переднюю линзу и заворачиваем в обратном порядке сначала крепежное, а затем и внешнее кольцо.
z
Внутреннюю поверхность объектива для исключения паразитных отражений лучше всего оклеить черной бархатной бумагой. Для монокля из любого непрозрачного черного материала необходимо изготовить внешнюю диафрагму. Для этого прекрасно подойдет пластик от древней пятидюймовой дискеты.
Отверстие в ней несложно вырезать циркулем с двумя иголками, а закрепить ее лучше всего в оправе от светофильтра и затем навинтить на объектив. Диаметр отверстия постоянен и равен примерно 19 мм (поэтому единственной возможностью влиять на экспозицию во время съемки является выдержка), но также для получения ореолов необычных форм можно смело экспериментировать с количеством, формой и расположением отверстий на диафрагме. При съемке на черно-белую пленку нужно использовать двукратный желто-зеленый или желтый фильтр. Для использования монокля с современными зеркальными камерами вам необходимо приобрести переходное кольцо с резьбы М42 на соответствующий байонет и удлинительное кольцо толщиной примерно 14 мм (для съемки макро потребуются дополнительные кольца). Кроме «Гелиоса-44М» для переделки в монокль подходят объективы «Юпитер-37А» (получим фокусное расстояние 135 мм), «Гелиос-44–2» (55 мм) и другие.
В заключение остается сказать, что снимать моноклем можно только в ручном режиме. Для фокусировки лучше всего выбирать детали изображения, не содержащие больших перепадов яркости. Фокусируясь, нужно помнить о том, что момент, когда вы видите максимальный контраст, не соответствует максимальной резкости контуров, которой необходимо достичь. Для получения оптимальной резкости требуется еще немного выдвинуть линзу вперед.
| Монокль. Однолинзовый объектив с магической силой в умелых руках Kaddr.com
Когда-то давно, в этом материале, мы говорили о том, что такое монокль, а затем – и как его сделать.
Но прошло время, объектив затерялся и материал о том, чем же монокль так интересен, так и не был написан. Хотя зря.
Ели вспомнить немного старых материалов, сам монокль относится к группе пикториальной фотографии, которой свойственна, в первую очередь, не точная передача всех деталей сюжета в мельчайших подробностях, сколько творческая составляющая. Цель фотографа-пикториалиста – показать мир другим, волшебным, изящным. И именно этим целям и служит монокль.
Сначала – немного технической составляющей.
После того, как вы сделали монокль (да, такой объектив в магазине не продается, его можно только сделать самостоятельно или же заказать у опытного мастера), нужно помнить несколько вещей, прежде чем идти снимать.
Во первых, фокусное расстояние модернизированного объектива меняется в большую сторону примерно на 20мм. Это значит, для охвата сцены вам придется, как правило, делать несколько шагов назад.
Второе – это фокусировка. Как вы уже, наверное, догадались, автоматической наводки на резкость тут нет. Поэтому придется тренироваться. Для тех, кто снимает на пленку, есть один незаменимый вспомогательный девайс – фокусировочный экран. Но вот детям цифровой эпохи придется довольствоваться LiveView. Хотя, без определенной сноровки и опыта все равно очень сложно попасть в резкость.
Третий минус всей этой конструкции – что даже при использовании однолинзового объектива на современных цифрозеркалках вы теряете возможность пользоваться экспонометром. Это значит, что фотограф должен перейти в полностью мануальный режим и научится на глаз определять выдержку и светочувствительность. Что касается диафрагмы, то ее ручное управление в принципе не требуется, так как с прикрытием относительного отверстия сама «магия» мягкого изображения «с дымкой» будет теряться.
Естественно, можно предугадать, что значение будет стоять чем меньше, тем лучше.
Сам монокль обладает еще некоторыми недостатками, связанными именно с его оптической схемой.
Это – и громадные хроматические аберрации, и дисторсии, и падение контраста, как в центре, так и по краям. Стоит также упомянуть, что в монокле изменение диафрагмы может привести еще и к изменению точки резкости, так что наводится нужно именно при актуальном значении.
Но вот в умелых руках все это превращается в несомненные плюсы, которые позволяют получить картинку «сказки».
Все – благодаря сферическим аберрациям, которые проявляются в виде нерезкости между контрастными элементами фотографии. Эффект воздушной дымки успешно используется многими фотографами-портретистами, пейзажистами, стрит-фотографами и при съемке натюрмортов. Даже при съемке в условиях контрового света можно получить эффекты, которые не сможет повторить фотошоп – настоящие, живые снимки.
Галерея изображений
(ткните в правый угол, чтобы рассмотреть фото в большом размере)
Галерея изображений мастеров монокля (Георгий Колосов)
(ткните в правый угол, чтобы рассмотреть изображения в большом размере)
Конечно, в современном мире графических редакторов вряд-ли кто-то будет снимать на подобное устройство. Скорее, это нишевый вариант стекла, который делается «для побаловаться». Но благодаря этим переделкам мировая фотография вписала в свою историю нескольких очень значимых лиц с превосходными работами.
А что вы думаете о монокле и подобной «альтернативной» фотографии?
Монокль — первый в истории линзовый объектив » PhotoCasa
Мы начинаем цикл статей о советской фотооптике, и для начала расскажем о самом первом в истории фотографии объективе — монокле.В оптической схеме монокля всего одна линза, поэтому его считают простейшим объективом. Со времен изобретения монокля прошло много времени, но несмотря на это, сегодня многие фотохудожники используют именно его для решения своих творческих задач.
Как известно, фотография началась с камеры обскура. Изображение в ней проецировалось через очень маленькое отверстие, как и в современных
пинхолах. Из-за низкой светочувствительности фотоматериалов того времени и малых размеров отверстия, выдержка при съёмке измерялись в минутах, а иногда и часах. О съёмке движущихся объектов при таких выдержках, естественно, не могло идти и речи, но фотографам очень хотелось запечатлеть эмоции людей, поэтому инженеры-оптики активно искали способы уменьшения выдержки. И через некоторое время способ был найден. Маленькое отверстие камеры обскура увеличили и поместили в него собирающую линзу, перед которой позднее была установлена диафрагма. Так родился на свет первый в истории линзовый объектив — монокль.
Фото Александр Рощин. Nikon D700
Монокль, а также другие мягкорисующие объективы, используются, в первую очередь, для съёмки портрета. При передаче изображения монокль
позволяет избежать документальной точности, на первый план выходит образ и настроение портретируемого. Кроме того, мягкость, присущая рисунку монокля, позволяет фотографам избежать длительного и трудоёмкого процесса ретуши.
На лице портретируемого «сами собой» исчезают все дефекты: поры, пигментные пятна, морщины. Не менее популярен монокль среди фотографов‑пейзажистов. Картины природы, снятые моноклем, символичны, они дают пространство для воображения и домысливания, чем напоминают живопись импрессионистов. Наиболее ярко выразительные свойства объектива раскрылись в творчестве фотографов, имеющих художественное образование. Благодаря их работам в начале 19 века сформировалось новое направление в фотографии под названием «пикториализм» (от англ. Pictorial — живописный).
Фото Анна Мазур. Canon 450D
В Советском Союзе пикториализм признали буржуазным искусством, а основным направлением провозгласили воспевающий новую власть соцреализм. Творчество фотографов, снимающих в технике пикториализма, жёстко игнорировалось, подобные художественные опыты могли привести к большим проблемам с набирающей обороты Системой. В официальной культуре на пикториальную фотографию было наложено табу.
Сегодня цензуру на индивидуальность и самобытность мы вспоминаем как страшный сон. В творчестве вновь ценен субъективный взгляд художника:
нам интересно не общее, а личное, подчас даже интимное переживание творцом современного мира и осознание своего места в нем. Для достижения метафоричности и некоей надбытийности изображения многие фотографы, любители и профессионалы, обращаются к моноклю. Так создаются чудесные образцы пикториального искусства: лишенные крикливости, они шепчут нам о вечном, окутывая пеленой мечтательной вдумчивости.
Вячеслав Зитев. Nikon D80 85мм
Сейчас монокли изготавливаются мастерами вручную. Вы можете использовать монокли как с пленочными, так и с современными цифровыми фотокамерами. А так же в зависимости от цели Вы можете подобрать себе монокль с необходимым вам фокусным расстоянием. Один из таких мастеров, Вячеслав Зитев, живёт и работает в Санкт-Петербурге. Монокли, которые он создает, и примеры фотографий, снятых ими, смотрите на сайте monolens.ru. Приобрести его монокли можно в некоторых фотомагазинах Москвы и Петербурга. Например, в магазине «ЧБ», расположенном на первом этаже перинной линии Гостиного двора.
http://b-w-foto.ru/
Классический монокль с линзами по рецепту
У вас астигматизм, вы хотите использовать монокль для зрения вдаль или вам нужна точная коррекция? Тогда монокль по рецепту — это именно то, что вам нужно!
Мы предлагаем однофокальных линз и бифокальных линз для наших моноклей по рецепту.
Все линзы в наших моноклях Prescription выполнены из поликарбоната и имеют твердое покрытие с лицевой стороны для увеличения срока службы.
Любые линзы, которые можно надеть на очки, мы можем надеть на монокль.
Если вам нужно что-то дополнительное или очень конкретное, пожалуйста, свяжитесь с нами. Будем рады помочь с индивидуальным заказом.
Как заказать
- Выберите размер рамы
- Добавьте монокль по рецепту в корзину
- Расчет и оплата
- После оформления заказа отправьте электронное письмо по адресу [email protected] с адресом:
— Номер вашего заказа
— Копия рецепта (фотография или PDF)
— Ваши предпочтения по глазам — левый или правый?
— Ваши предпочтения по зрению — расстояние или чтение?
Ограничения на доставку
Обратите внимание, что товары, отпускаемые по рецепту, не могут быть доставлены за границу.
Что такое поликарбонат?
Поликарбонат — это термопластическая смола, открытая в 1953 году почти одновременно компаниями Bayer в Германии и GE в США. Он легкий и ударопрочный. Изначально поликарбонат использовался в аэрокосмической отрасли, в том числе в «пузырчатых шлемах» скафандров, куполах истребителей и окнах космических челноков.
В 1980-х годах производственные затраты на производство поликарбоната снизились, и линзы для очков из поликарбоната начали выходить на рынок потребительских очков — с большим успехом.Линзы из поликарбоната значительно легче и безопаснее стекла кроны из-за их небольшого веса и ударопрочности.
Сегодня линзы из поликарбоната — это наиболее часто назначаемые линзы в США. Если вы носите очки, вероятно, в вашей оправе есть линзы из поликарбоната.
Что такое единственное зрение / бифокальное?
Однофокальная линза корректирует зрение на одном расстоянии. Ваши очки для чтения — это очки для одного зрения, и большинство рецептурных очков также являются однокомпонентными.
Бифокальная линза корректирует зрение на двух расстояниях. Верхний сегмент обычно корректирует зрение вдаль, а нижний сегмент обычно корректирует зрение вблизи. Бифокальные линзы обычно имеют четкую линию, разделяющую два сегмента.
Сколько времени займет получение моего заказа?
Монокли по рецепту изготавливаются индивидуально для каждого заказа. После получения всей информации о вашем рецепте мы разместим ваш заказ в нашей лаборатории в течение 3 рабочих дней.Лаборатории требуется 7 дней на обработку заказа, а затем он доставляется через UPS из нашей лаборатории в Лос-Анджелесе, Калифорния. Доставка вашего заказа может занять 10 рабочих дней.
Все остальные безрецептурные товары будут отправлены отдельно с нашего склада в Северной Каролине, как только ваш индивидуальный монокль будет готов.
Как вы оформляете возврат и обмен?
Мы хотим, чтобы вы были на 100% удовлетворены своим моноклем Prescription Monocle. Если вы получите монокль неправильного размера, мы будем более чем рады обработать обмен за 30 долларов США и возврат вашего оригинального монокля.
Мы не предлагаем этикетки для возврата с предоплатой.
Для всех возвратов мы вернем полную сумму вашего заказа за вычетом комиссии за возврат в размере 30 долларов США, поскольку ваш монокль сделан специально для вас, и мы не можем его перепродать.
Почему люди носят монокль? — Безумие Monocle ™
В то время как хипстерская революция в самом разгаре, вы, возможно, заметили, что монокль извлекает выгоду из этого, возрождение этого когда-то знаменитого винтажного окуляра происходит прямо сейчас на наших глазах.
Современным пионером окуляра-монокля был сэр Патрик Мур, который всю жизнь носил монокли с 16 лет и дополнял их густой бровью. Куда он вел, хипстеры следуют за ним, монокль возвращается, но помимо того, что он является модным, почему люди их носят?
Монокль — это тип корректирующей линзы, которая используется для коррекции или улучшения зрения только на один глаз. Он состоит из круглой линзы, обычно с металлическим кольцом по окружности, которое можно прикрепить к шнуру или цепочке.Другой конец шнура затем присоединяется к одежде пользователя, чтобы не потерять монокль.
Монокль — это корректирующая линза для одного глаза, их обычно носят люди с дальнозоркостью и нуждаются в помощи, чтобы разглядеть предметы вблизи. Тем, у кого другие требования к зрению, можно использовать монокль по рецепту для коррекции зрения.
Они удобны и популярны среди поваров, которым нужна помощь в ознакомлении с рецептами, поскольку их легко прикрепить к фартуку. С другой стороны кухни они популярны среди посетителей, которым нужна небольшая помощь в чтении меню.
Они также используются людьми с опущенными веками, заболеванием, известным как птоз, для того, чтобы держать глаза открытыми. Хотя, попросту говоря, некоторые люди просто не хотят пользоваться очками, когда у них проблема с одним глазом.
При неизбежном ухудшении зрения и необходимости в очках для чтения можно раздражаться, вспоминая не только свой мобильный телефон, кошелек и ключи от машины, но теперь к списку предметов первой необходимости добавилось еще одно дополнение, а карманы уже были заполнены. , разочарование в том, где хранить очки, поставит вас перед дилеммой.
Должны ли вы изо всех сил брать их с собой каждый раз, просто для использования для нечетных текстовых сообщений или чтения меню, а не оставлять их дома и бороться? Вы перепробовали множество очков и обнаружили, что они медленные в использовании, неудобные и легко бьющиеся.
Идеальное решение стало очевидным после того, как наконец получил монокль на глаз! При правильной оптической силе это сразу решило проблему. Оба глаза можно держать открытыми, что позволяет видеть одновременно и вблизи, и на расстоянии (как вы знаете, мозг умен).Сверхлегкий и прочный, его можно носить на шее, незаметно, пока он не будет использоваться.
Самое простое решение часто оказывается лучшим, и оно находится в пределах сферы глазного монокля.
Всем! Краткий ответ, практичные и портативные, они являются идеальным модным аксессуаром и идеальной корректирующей линзой для одного глаза.
- Представляете себя авантюристом? Эти горные пейзажи не будут отображаться в HD.
- Нравится кататься на лыжах? Винная карта апре-ски сама по себе не смотрится
- Костюм моряка? Этот гидролокатор тоже не будет перемещаться.
- Фотография вашего выступления? Эти фотографии сами себя не снимают.
Итак, список продолжается ………….
Мораль истории? ну, на самом деле его нет, просто не нужно быть «хипстером», чтобы раскачать монокль.
Расскажите, для чего вы используете монокль?
Оставьте свои комментарии ниже!
# 1 Монокли для рецептов и костюмов
Какие монокли самые лучшие?
Найти подходящие очки всегда непросто.Однако при поиске специальных очков, таких как монокли, эта задача становится намного сложнее. Поскольку настоящие монокли трудно найти, а на рынке есть много поддельных вариантов для косплея или костюмов, мы прорезали шум, чтобы найти лучшие монокли для вас.
Ищете ли вы монокль по рецепту или для чтения, или даже монокль с увеличительным стеклом или для вечеринки, в этом руководстве есть что-то для вас.
Мы протестировали около 5 настоящих моноклей, а также несколько поддельных только для костюмов.Ниже вы найдете наши рекомендации по покупке лучших моноклей в Интернете только у проверенных розничных продавцов.
Просто чтобы вы знали, мы обычно стремимся удовлетворить любой бюджетный диапазон и дадим комментарии по качеству и соотношению цены и качества. Однако, поскольку настоящие монокли относительно редки, их цены, как правило, фиксируются около 50 долларов.
Наши текущие лучшие монокли разделены на следующие категории:
- Монокль Best Prescription
- Монокль Best Reading
- Монокли с увеличительным стеклом
- Монокли для костюмированной вечеринки
1.Рецептурный монокль Warby Parker «Colonel»,
- Цена: Сейчас нет в наличии
- Страна происхождения: США
- Бренд: Warby Parker
- Материал: Ацетат
- Варианты линз: Single Vision Prescription
- Доступные линзы: Прозрачные
- Бесплатная пробная версия дома? №
К сожалению, с августа 2019 года Warby Parker больше не продает свои причудливые монокли на своем веб-сайте.В настоящее время мы ищем альтернативу, поэтому, если вы знаете о каких-либо стоящих рецептурных моноклях, не стесняйтесь оставлять комментарии!
Если вы ищете настоящий высококачественный монокль с линзами по рецепту, Warby Parker действительно предлагает отличный вариант. Фактически, это единственный надежный интернет-магазин, который, как мы знаем, готов воплотить эту фантазию в реальность.
Этот монокль был разработан австралийским художником и иллюстратором Крейгом Редманом.В отличие от многих винтажных моноклей, оправа толстая и имеет рифленый обод на спине для надежного захвата.
Он также изготовлен из высококачественного ацетата с привлекательным черепаховым оттенком виски. Кроме того, это было удивительно дешево — всего 50 долларов на Warby Parker, предлагая отличное соотношение цены и качества!
2. Монокль для ближнего обзора
- Цена: $ 59.99 [Купить]
- Страна происхождения: США
- Бренд: Ближайшие объекты
- Материал: Металл
- Варианты линз: От +1 до +4 Линза для считывания диоптрий
- Доступные линзы: Прозрачные
- Бесплатная пробная версия дома? №
Компания Nearsights, которая сейчас находится в Сан-Франциско, начала продавать монокли в Филадельфии в 2001 году.Сегодня им управляет Джеймс Берри после того, как его отец основал и развил компанию.
Изначально страстный проект, отец Джеймса нашел своего дизайнера, производителя и интернет-магазин. Однако вскоре, когда он занял ее место, это превратилось в постоянную работу.
Nearsights — один из немногих ритейлеров, специализирующихся на продаже моноклей в Интернете или в других местах. Они предлагают большое количество рамок и оттенков, которые вы можете найти либо на их странице Amazon, либо на их веб-сайте.
Тем не менее, нам особенно понравилась их стандартная серебристая металлическая рамка с устойчивой к царапинам линзой из поликарбоната.Этот тип известен как галерейный монокль, который имеет металлическую рамку, которая «вращает» монокль от ресниц для более четкого обзора.
Кроме того, большинство их моделей имеют опции коррекции диоптрий +1, +1,5, +2, +2,5, +3, +3,5 и +4.
Если вы ищете классический монокль с хорошо продуманным дизайном, который действительно можно использовать для чтения, мы настоятельно рекомендуем этот. Монокль для чтения с серебряной рамкой от Nearsights доступен всего за 59,99 доллара в их магазине на Amazon.
3. Увеличительный монокль и цепочка Super Z Outlet
- Цена: $ 5.99 [Купить]
- Страна происхождения: Китай
- Бренд: Super Z Outlet
- Материал: Металл
- Варианты объективов: Только 5-кратное увеличение
- Доступные линзы: Прозрачные
- Бесплатная пробная версия дома? №
Если вы ювелир, часовой кузнец или читаете много мелкого шрифта, у вас, вероятно, будет под рукой увеличительное стекло.Однако эти неуклюжие и большие аксессуары не всегда очень удобны.
Модная и несколько эксцентричная тенденция набирает обороты, поскольку некоторые люди вернулись к увеличительным моноклям. Относительно дешевые и несколько элегантные, эти маленькие аксессуары неоценимы для тех, кто выполняет любую точную работу.
Несмотря на то, что они сделаны в Китае и продаются в несколько дешевой упаковке, на самом деле это лучшие увеличительные монокли, доступные в Интернете. К ним также прилагается удобная цепочка золотистого цвета, но вы всегда можете поменять ее на настоящую.
Этот монокль — удобный инструмент для чтения случайного мелкого шрифта. Однако его следует держать между пальцами, а не на скуле. Так что если вы ищете вариант костюма или для долгих чтений, это не лучший выбор.
Наконец, это очень дешево и стоит всего 5,99 доллара на Amazon.com, что является отличным соотношением цены и качества.
4. Костюмный серебряный металлический монокль Elope
- Цена: 9 долларов.95 [Купить]
- Страна происхождения: Китай
- Бренд: Elope
- Материал: Металл
- Варианты линз: Нет
- Доступные линзы: Прозрачные
- Бесплатная пробная версия дома? №
Мы пробовали много костюмированных моноклей в офисе — когда мы это делали, было много злого кудахтанья — и большинство из них были дешевыми кусочками пластика, которые разваливались. Однако мы посчитали, что самый качественный, предлагающий лучшее соотношение цены и качества, был получен от компании Elope из Колорадо-Спрингс.
Изготовлен из металла с нейлоновым шнуром, имеет тонкую пластиковую линзу без коррекции. Ободок также был разработан для обеспечения удобного и надежного захвата между бровью и щекой.
Это может не иметь никакой практической цели, но это отличный вариант для костюмированных вечеринок и исторической драмы! Кроме того, на Amazon это всего 9,95 доллара, так что это тоже не обернется для банка.
Что такое монокль?
Изобретенный еще в 1720 году, монокль не стал популярным до XIX века как аксессуар для джентльменов.Его часто ассоциировали с богатыми мужчинами из высшего сословия, которые сочетали его с утренним пальто и цилиндром.
Кроме того, монокли были особенно популярны среди аристократической прусской армии. Многие немецкие генералы, такие как Ганс Кребс и Вальтер фон Райхенау, были известны своими генералами.
В начале 20 века монокли были популярны в стильных лесбийских кругах, таких как Уна Леди Трубридж. На самом деле ассоциация была настолько сильной, что первой лесбийской дискотекой в Париже стала Le Monocle, открывшаяся в 1930-х годах на Монмартре.
Нельзя игнорировать ассоциацию с комедией, поскольку монокли часто использовались как средство для передачи шока. Кто не может представить себе, как потрясенный джентльмен из высшего сословия восклицает: «Шутки!» прежде чем его монокль вылезет в бокал шампанского?
С развитием оптометрии монокли стали довольно редкими. Однако монокли по-прежнему имеют практическое назначение, и их иногда носят эксцентричные, но смелые люди.
Подойдет ли мне монокль?
Во-первых, монокли — смелое и эксцентричное заявление.Если вы достаточно волевы и беззаботны, чтобы носить монокль, такие соображения, как форма лица, не имеют большого значения.
Тем не менее, вы можете выбрать свой монокль в соответствии с определенными факторами, чтобы он еще больше выделялся и выглядел фантастически. Например, если вы посмотрите наше руководство по выбору очков, вы сможете узнать о цвете кожи и контрасте. Это поможет вам подобрать оправу, которая вам больше всего подойдет.
Также важно учитывать вашу личность. Скорее всего, если вы подумываете о монокле, вы уже стильный и общительный человек.Излишне говорить, что монокли лучше всего сочетаются с официальной или винтажной одеждой. Однако если вы носите джинсы и футболку, монокль может не совсем подойти.
Наконец, поскольку монокль — это простой круглый объект, он имеет тенденцию быть относительно универсальным для форм лица, поскольку нарушает общую структуру. Однако он подойдет более угловатым формам лица, таким как квадраты и ромбы. Тем не менее, он должен хорошо работать и на круглых формах лица, и на лицах в форме сердца.
Если вы хотите узнать больше о формах лица, вы можете обратиться к нашему руководству по формам лица или даже найти свое, чтобы получить более точную информацию.
Что дальше?
Вы выбрали монокль, который вам нравится? Если так, браво, сэр! Однако, если это не совсем то, что вы ищете, не стесняйтесь покупать другие наши руководства по очкам:
Отзыв от Chris G на .«Я знаю, что это немного эксцентрично. Но на самом деле мне нравится носить монокль Warby Parker в офисе ».Рейтинг: 5.0 ★★★★★
Введение в оптику в Scala с использованием Monocle
1. Введение
В этом руководстве, , мы собираемся изучить, как использовать некоторые из наиболее известных оптических средств для доступа и изменения вложенных классов case в Scala кратким и элегантным способом .Мы собираемся использовать Monocle, известную оптическую библиотеку Scala.
2. Что такое оптика и зачем она нам?
Цитата из определения Monocle:
Оптика — это группа чисто функциональных абстракций для управления (получения, установки, изменения и т. Д.) Неизменяемых объектов.
Изменение вложенных классов case в Scala может быть очень многословным и требует большого количества шаблонного кода, что затрудняет понимание кода. В следующем разделе мы увидим пример, показывающий, насколько подробным может быть код при использовании чистого Scala.
Optics решит эту проблему, предоставив методы для лаконичного управления сложными структурами данных.
Давайте начнем с добавления зависимостей Monocle в наш файл build.sbt :
val monocleVersion = "2.0.4"
libraryDependencies ++ = Seq (
"com.github.julien-truffaut" %% "monocle-core"% monocleVersion,
"com.github.julien-truffaut" %% "monocle-macro"% monocleVersion,
"com.github.julien-truffaut" %% "monocle-law"% monocleVersion% "test"
) Библиотека кросс-скомпилирована для Scala 2.12 и 2.13 и опубликованы в Maven Central.
3. Доступная оптика
Monocle предлагает несколько оптических элементов, которые можно использовать для разных целей. В этой статье мы собираемся показать возможное применение для каждого из основных.
Мы собираемся использовать простую модель предметной области, чтобы показать, как работает оптика. Наша модель представляет собой вложенную структуру, описывающую чрезмерно упрощенную взаимосвязь между пользователем и его тележкой , содержит единственный тип Элемент :
case class User (имя: Строка, корзина: Корзина)
case class Cart (id: String, item: Item, количество: Int)
класс корпуса Предмет (артикул: String, цена: Double, leftInStock: Int, скидка: Discount) Затем у нас есть ADT (алгебраический тип данных), описывающий возможные типы скидок, применимых к продуктам:
трейт Скидка
case class NoDiscount () расширяет Discount
case class PercentageOff (значение: Double) расширяет Discount
case class FixPriceOff (значение: Double) расширяет Discount
3.1.
ЛинзаМы начнем с Lens , самой известной оптики, которая позволяет увеличивать нашу структуру данных.
Предположим, что, например, мы хотим обновить количество товаров, оставшихся на складе, когда пользователь покупает продукт.
В ванильной Scala нам пришлось бы получить доступ и изменить каждый уровень вложенной структуры очень подробным образом:
def updateStockWithoutLenses (пользователь: Пользователь): Пользователь = {
Пользователь.копировать (
cart = user.cart.copy (
item = user.cart.item.copy (leftInStock = user.cart.item.leftInStock - 1)
)
)
} Давайте посмотрим, как Lens может помочь нам в этом случае. Объектив обеспечивает пару функций:
получить (s: S): A
установить (a: A): S => S В приведенных выше определениях метода S — это так называемый продукт (классы случаев User в нашем примере) , и A — это элемент внутри S (имя Item ) .
Теперь мы перепишем наш предыдущий пример с линзой Lens :
def updateStockWithLenses (пользователь: Пользователь): Пользователь = {
val cart: Lens [User, Cart] = GenLens [User] (_. cart)
val item: Линза [Cart, Item] = GenLens [Cart] (_. item)
val leftInStock: Lens [Item, Int] = GenLens [Item] (_. leftInStock)
(корзина composeLens item composeLens leftInStock) .modify (_ - 1) (пользователь)
} Довольно лаконично, не правда ли? Метод composeLens , как следует из названия, позволяет нам составлять разные Lens es вместе и увеличивать масштаб каждого вложенного уровня структуры данных.
3.2.
ДополнительноАналогично Объектив , Опционально позволяет увеличивать структуру данных. Однако элемент, на котором мы фокусируемся, может не существовать.
Два метода характеризует Дополнительно :
getOption: S => Option [A]
установить: A => S => S Как и в предыдущей оптике, S — это продукт , а A — это элемент внутри S.
Теперь мы собираемся реализовать метод, который возвращает значение скидки всякий раз, когда она присутствует:
def getDiscountValue (скидка: Discount): Option [Double] = {
val mightDiscountValue = Необязательно [Discount, Double] {
case pctOff: PercentageOff => Некоторые (pctOff.value)
case fixOff: FixPriceOff => Некоторые (fixOff.value)
case _ => Нет
} {DiscountValue => Discount =>
скидка совпадение {
case pctOff: PercentageOff => pctOff.копия (значение = DiscountValue)
case fixOff: FixPriceOff => fixOff.copy (значение = DiscountValue)
case _ => скидка
}
}
mightDiscountValue.getOption (скидка)
} Давайте посмотрим на некоторые тесты, чтобы продемонстрировать использование оптики Дополнительная оптика :
он должен «вернуть значение скидки Fix Off» в {
значение val = 3L
assert (getDiscountValue (FixPriceOff (значение)) == Некоторые (значение))
}
он не должен возвращать значение скидки в {
assert (getDiscountValue (NoDiscount ()) == Нет)
} 3.3.
ПризмаPrism — это оптика, которая позволяет нам выбирать только часть модели данных. Предоставляет два метода:
getOption: S => Option [A]
Обратный Получить: A => S В этом случае S — это Sum (ADT, например, Discount в нашем случае), а A — часть Sum. Обратите внимание на необязательность геттера, который может не соответствовать какой-либо части Sum .
Напишем функцию, которая обновляет только процентные скидки:
def updateDiscountedItemsPrice (cart: Cart, newDiscount: Double): Cart = {
val DiscountLens: Объектив [Item, Discount] = GenLens [Item] (_. Discount)
val onlyPctDiscount = Prism.partial [Скидка, двойная] {
case PercentageOff (p) => p
} (PercentageOff)
val newItem =
(DiscountLens composePrism onlyPctDiscount set newDiscount) (cart.item)
cart.copy (item = newItem)
} Аналогично Lens , метод composePrism доступен для функциональной композиции.
Наша Prism ( onlyPctDiscount ) обновит только PercentageOff типов скидок:
он должен «обновить процентные значения скидки» в {
val originalDiscount = 10 л
val newDiscount = 5 л
val updatedCart = updateDiscountedItemsPrice (
Корзина ("abc", Товар ("item123", 23L, 1, PercentageOff (originalDiscount)), 1),
newDiscount
)
assert (updatedCart.item.discount == PercentageOff (newDiscount))
}
он не должен "обновлять значения фиксированной цены скидки" в {
val originalDiscount = 10 л
val newDiscount = 5 л
val updatedCart = updateDiscountedItemsPrice (
Корзина ("abc", Товар ("item123", 23L, 1, FixPriceOff (originalDiscount)), 1),
newDiscount
)
assert (updatedCart.item.discount == FixPriceOff (originalDiscount))
} 3.4.
ISOISO — это еще один тип оптики, , полезный при попытке представить одни и те же данные разными способами .
Допустим, мы хотим представить цены в евро и фунтах стерлингов:
класс корпуса PriceEUR (значение: Double)
класс случая PriceGBP (значение: Double) Мы могли бы написать следующий ISO для преобразования между валютами:
val tranformCurrency = Iso [PriceEUR, PriceGBP] {eur =>
ЦенаGBP (евро.значение * 0,9)
} {gbp =>
ЦенаEUR (стоимость фунта / 0,9)
} Затем мы можем использовать его для преобразования:
он должен «правильно преобразовать GBP в EUR» в {
val x = tranformCurrency.modify (gbp => gbp.copy (gbp.value + 90L)) (PriceEUR (1000L))
assert (x.value == 1100L)
} 4. Заключение
Всякий раз, когда нам нужно пройти и изменить вложенную структуру данных или нам нужно представить одни и те же данные по-разному, оптика помогает нам писать наш код более лаконично.
Делегирование шаблонного кода для обхода или преобразования нашей структуры данных в оптику позволяет нам сосредоточиться на более важных аспектах нашего кода .
Как всегда, код доступен на GitHub.
Оптика за пределами линз с моноклем —
Если вы какое-то время являетесь разработчиком Scala, вы, вероятно, знакомы с концепцией линз. Он получил большую поддержку в сообществе, поскольку решает очень распространенную проблему изменения глубоко вложенных классов case.Но что не так широко известно, так это то, что существует больше похожих абстракций. Обычно они обозначаются как Optics .
В этом посте я попытаюсь представить некоторые из них и дать некоторое представление о возможных приложениях для них. Эта статья больше ориентирована на приложения, чем на математические основы. Более того, он пытается подчеркнуть, что идея оптики идет намного дальше, чем манипулирование вложенными записями.
В этом посте я буду использовать код и терминологию, взятые из библиотеки Monocle — Scala для оптики.Цитата из его документации:
Оптика — это группа чисто функциональных абстракций для управления (получения, установки, изменения и т. Д.) Неизменяемых объектов.
Весь иллюстративный код, использованный в этой статье, можно найти в прилагаемом репо.
Краткое описание коротких линз
Если вы знакомы с линзами, вы можете перейти к другому использованию линз.
Что такое линза
Объектив по сути — это пара функций:
-
получить (s: S): A -
набор (a: A): S => S
Что такое S и A ? S представляет собой Продукт (или, другими словами, «целую часть» или контейнер), а A — некоторый элемент внутри S (или, другими словами, «конкретная часть»). Следует иметь в виду, что соглашение об именовании повсеместно присутствует в Monocle и в литературе по линзам. Он будет использован в оставшейся части статьи.
Вкратце — имея get Lens позволяет «увеличить» конкретную часть Product , а установив set , вы можете построить новую «целую часть» с обновленной «конкретной частью». После увеличения мы теряем некоторую информацию, и поэтому set требует S в качестве аргумента — чтобы иметь возможность реконструировать весь Продукт.
Очень простой пример с Monocle
Перед использованием Lens нам нужно… создать его. С Monocle все сводится к вызову метода Lens.apply . Он принимает два аргумента, первый — , получить функцию , а второй — , установить функцию :
Вышеупомянутый код — это все, что вам нужно для создания Lens. Имейте в виду, что не каждая пара функций, созданная с помощью Lens.apply , является настоящим объективом. Такая пара также должна подчиняться законам Lens — точно так же, как не каждый класс с надлежащей подписью метода flatMap является законной Монадой.Для краткости я не включаю сюда эти законы, их можно найти, например, в учебнике по скалязу. Мы вернемся к ним в разделе о тестировании.
Давайте посмотрим, что мы можем сделать с nameLens :
Не очень впечатляет, но обратите внимание, что на основе этих примитивных операций Линза определила некоторые другие операции. Примером такой операции является модификация , которая позволяет установить новое значение конкретной части на основе ее предыдущего значения:
Вы можете подумать: «Ну и что? Мы можем по-новому получать и устанавливать значения класса case — в чем смысл? ».Истинное преимущество линз заключается в их компонуемости.
Состав линз — классический пример
Для иллюстрации композиции линз я воспользуюсь классическим примером (например, из выступления Илана Годика):
Полный код для этого примера.
Допустим, имея экземпляр Person , вы хотите преобразовать название улицы в верхний регистр. Самый простой подход очень долгий:
С линзами тот же код может выглядеть так:
Как видите, код короче и читабельнее.Как заметил Илан, размер кода растет квадратично при прямом подходе и линейно при использовании линз.
Еще один интересный способ мышления об объективах состоит в том, что они помогают поднять функции с A => A до S => S . В нашем случае мы можем поднять функцию String => String (так как название улицы — строка ) до Person => Person :
Объективы для других целей
В классическом примере, приведенном выше, хорошо то, что разработчики узнали о Линзах.С другой стороны, могло создаться впечатление, что линзы и оптика в целом — это «всего лишь то, что помогает в доступе к вложенным классам case».
Однако настоящая сила оптики заключается в том, что их больше, и они полностью компонуемы. Но даже с помощью single Lenses вы можете сделать гораздо больше, чем просто получить доступ к вложенным записям. Вы можете использовать их для создания «виртуальных полей», поддержки инвариантов или доступа к битовым полям.
Поколение линз
В случае, если линзы специализируются на доступе к полям класса case, их код может генерироваться автоматически большую часть времени.Вы можете прочитать об этом в документации Monocle (прокрутите вниз до Lens Generation ).
Призма
Что такое призма
Призма — это, по сути, пара функций:
-
getOption: S => Option [A] -
реверс Получить: A => S
, где S представляет собой сумму (также известную как Coproduct ), а A является определенной частью суммы Sum . Основываясь на этих определениях, мы можем увидеть, что Prism — это «линза для иерархий признаков».Хотя это явно не истощает сущность Prism, и мы выходим за рамки этого, он дает вам хорошую интуицию для начала.
Это также объясняет, почему Prism getOptional (аналог Lens get ) возвращает Option — это потому, что «увеличение» до определенного подтипа может не сработать. Это в явном противоречии с Линзой : получи , которая никогда не подведет — Продукт всегда содержит все свои части.
Что говорит reverseGet о природе призмы? Это аналог набора Lens : A => S => S , но у него нет аргумента S .В этом нет необходимости, потому что в случае Prism конкретный случай содержит всю информацию, необходимую для получения более общей суммы Sum .
Простой пример с запечатанной иерархией признаков
Возьмем такую запечатанную иерархию признаков (это способ выразить тип Sum в Scala, полный код):
Определим призму [Json, String] :
Теперь мы можем опробовать примитивные операции:
Давайте сделаем так, чтобы getOption завершился ошибкой с вводом не JStr :
Хорошо, я признаю, что эти примеры были не очень интересными.Давайте сделаем что-нибудь более полезное с производными комбинаторами. Попробуем переписать такой код:
Тот же код с призмой:
Обратите внимание на ясность раскрытия намерения в приведенном выше коде. Кроме того, благодаря частичному применению мы можем поднять функцию String => String до Json => Json :
изменить выводит на поверхность другой вопрос — что, если Json на входе не «фокусируется» данной призмой? Давай попробуем:
Как видите, мы вернули первоначальную стоимость.В некоторых случаях это может быть нормально, но если вам нужна информация об успешном выполнении операции, вам нужно вместо этого использовать modifyOption :
Поколение призмы
Призмы также могут быть созданы для простых случаев. Вы можете узнать больше об этом в документе Monocle о призме (прокрутите вниз до Prism generation ).
Призма как безопасное опускание
В этом разделе мы попытаемся написать код доступа и модификации для работы с String как с Int .Поскольку обработка String как Int (например, String.toInt ) может завершиться неудачей, это кажется хорошим вариантом использования Prism. Начнем с определения Prism [String, Int] (полный код):
Это не законная призма, но давайте на время проигнорируем ее (мы вернемся к этому в разделе тестирования).
Мы также можем поднять функции от Int => Int до String => String :
Призма композиция
В качестве примера в этом разделе мы будем использовать другой класс case — Percent .Он использует Int из включающего диапазона 0–100 в качестве внутреннего представления. Он определяется следующим образом:
Учитывая метод Percent.fromInt , легко реализовать Prism [Int, Percent] :
Допустим, мы хотим определить Prism [String, Percent] . Поскольку Prism является составным, мы можем сделать это, просто составив Prism [String, Int] и Prism [Int, Percent] :
Вы можете быть удивлены PPrism — он будет описан позже.На данный момент все, что вам нужно знать, это то, что тип stringToPercent является точным эквивалентом Prism [String, Percent] .
Вот как ведет себя составная призма:
Тестирование призм (и оптики в целом)
Помните, когда я сказал, что наша призма незаконна. Этот раздел объяснит это более подробно.
Точно так же, как мы определяем конкретные экземпляры большинства функциональных абстракций (например, монад), мы конструируем экземпляры призм (и другой оптики) с помощью:
- реализация методов, необходимых для API
- обеспечение соблюдения законов
Первый вариант прост, поскольку компилятор проверяет, соответствуют ли подписи API.Однако компилятор не может проверить, соблюдаются ли законы. Поэтому нам нужно позаботиться об этом, написав правильные тесты.
Чтобы убедиться, что созданная призма следует законам призмы, мы воспользуемся законом монокля . Это дополнительный артефакт, опубликованный в рамках проекта monocle . Он построен на основе scalacheck и Typelevel дисциплины и содержит определения всех законов оптики. monocle-law использует имущественный подход к тестированию.
В этом подходе вы определяете, какие свойства должен содержать ваш код, а затем эти свойства проверяются на соответствие случайно сгенерированным значениям.В случае тестирования оптики Monocle мы будем использовать законы оптики в качестве утверждений. Поэтому нам просто нужно позаботиться о генерации входных значений.
Чтобы быть более конкретным, мы увидим, как реализовать тесты для наших призм:
Как видите, на высоком уровне это кажется очень лаконичным. PrismsTests определяется моноклем-законом и отвечает за создание работоспособной проверки законов призмы для данной призмы. Затем мы запускаем его с checkLaws . Вы можете задаться вопросом, где находится генерирующая часть.В этом отношении полезно взглянуть на PrismTests.apply method signature:
Он говорит, что компилятор требует неявного экземпляра Arbitrary и Equal для A и S . Произвольный [S] отвечает за создание возможных значений S и Equal — это класс типов scalaz для проверки равенства. Для нас более интересен Произвольный . Scalacheck имеет экземпляры Arbitrary для основных типов, и есть подходящие значения по умолчанию для Int и String .
Однако, поскольку экземпляры строки String , сгенерированные генератором по умолчанию, полностью случайны, мы создадим наш собственный генератор. Вместо полностью рандомизированных строк мы хотели бы иметь в основном входные данные, похожие на числовые значения, с некоторым добавлением различных значений. Вы можете взглянуть на ArbitraryInstances, чтобы увидеть, как мы определяем Произвольный для String и Percent .
Когда я запустил этот тест, я увидел:
Теперь мы видим, что, как упоминалось ранее, наша stringToIntPrism не является законной призмой.В этом случае довольно легко увидеть, что не так — stringToIntPrism не сохраняет некоторые значения во время приема-передачи. Чтобы быть более конкретным:
Законы о призме гласят, что ожидаемый результат должен быть «005». Мы можем решить эту проблему, ограничив допустимые входы String . Мы можем сделать это следующим образом:
Сейчас тесты проходят.
Определения законов, аналогичные PrismTests , существуют для всей оптики (например, для линз). Как вы видели, проверка на соответствие этим законам довольно проста и действительно полезна для раннего выявления незаконного поведения.
ISO
Вы можете думать об Изо как о чем-то, что одновременно является линзой и призмой. Это означает, что переход от S и A всегда успешен (как в Lens), а переход от A к S не требует никакой дополнительной информации, кроме значения A (как в Prism) — в другом преобразование слов из S в A без потерь. Как вы, вероятно, уже сделали вывод, это хорошо соответствует математической концепции изоморфизма.
Следовательно, примитивные операции для Iso симметричны:
-
получить: S => A -
реверс Получить: A => S
Когда Iso пригодится? Практически в любое время, когда одни и те же данные представляются разными способами. Один из классических примеров — работа с физическими единицами. Допустим, у нас есть два класса:
Мы можем создать ISO и использовать его:
Дополнительно
Вы можете думать о Optional как о чем-то более общем, чем Prism и Lens.Как и в случае с призмой, элемент A , который мы пытаемся сфокусировать, может не существовать. В то же время фокусировка также происходит с потерями — после фокусировки у нас недостаточно информации, чтобы вернуться к S без дополнительных аргументов. Это примитивные операции для Optional:
-
getOption: S => Option [A] -
набор: A => S => S
Допустим, мы работаем со следующей иерархией классов (полный код):
Давайте рассмотрим Optional [Error, String] , что позволит нам «увеличить» detailMessage .Это не может быть Lens [Error, String] , поскольку ErrorB не содержит detailMessage . Вот почему нам нужен Необязательный — он явно сообщает нам, что операция может завершиться неудачно.
Такой Дополнительный может быть реализован так:
Довольно редко можно увидеть, что Optional реализован напрямую, как указано выше. Вместо этого обычно вы реализуете отдельные Prism и Lens , а затем составляете их вместе. Это будет обсуждаться более подробно позже.Вы можете узнать больше о Optional в документации Monocle.
Иерархия оптики
Мы познакомились с 4 типами оптики. Как они соотносятся друг с другом, показано на следующей диаграмме:
Эта диаграмма предназначена для чтения как диаграмма иерархии классов UML, например, стрелка, переходящая от Lens к Optional, означает, что Lens является частным случаем Optional. И что означает, что и линзу, и призму можно рассматривать как необязательные? Линза является необязательной, для которой getOption всегда успешно. Призма — это Дополнительный , для которого мы игнорируем S («вся часть») — A («конкретная часть») содержит всю информацию для производства нового S .
Это далеко не полный список оптики. В документации Monocle вы можете увидеть исчерпывающую схему взаимоотношений между всей оптикой.
Состав различных типов оптики
Особенно привлекательными они становятся благодаря сочетанию различных типов оптики. Это позволяет вам легко получать доступ и преобразовывать данные между различными представлениями.Красота заключается в том, что вам нужно определить только небольшую часть оптики — остальные из них вы можете создать, просто составив существующую оптику.
Простой пример
В одном из предыдущих примеров у нас был код, похожий на этот:
Мы обращаемся к м. Всего , чтобы обновить его и вернуть в класс случая, используя копию . Похоже, это работа для Lens. Кроме того, вместо использования сантиметров в качестве ввода и вывода мы можем использовать String вместе с Prism [String, сантиметр] .Последний вариант может быть не очень хорошей идеей в целом, но в тестовом коде имеет смысл стремиться к короткому и удобочитаемому коду. При декларировании надлежащей оптики их составление составляет:
Результат совмещения Prism, Iso и Lens является необязательным. Это имеет смысл, поскольку это ближайший общий предок типов, составляемых в иерархии Оптики. Полученный результат stringToWholeMeter можно использовать следующим образом:
Следующая диаграмма представляет собой попытку визуализировать этот поток:
Реальный пример: circe-optics
circe-optics — отличное реальное приложение идеи оптики.Когда вы подумаете о просмотре и изменении документов JSON, вам может показаться, что есть довольно много общих аспектов с Optics.
Поле с заданным именем может существовать, а может и не существовать — звучит как Prism, мы можем потерять фокус в каком-то поле, а понятие вложенности — звучит как Lens, тогда нам нужно «предположить», что какое-то поле, например String — снова звучит как Prism. Давайте очень кратко рассмотрим реализацию circe-optics .
Он определяет призмы для всех типов JSON как e.г .:
Поскольку jsonNumber , в свою очередь, является Prism [Json, JsonNumber] , это отличный пример композиции одних и тех же типов оптики. Кроме того, в библиотеке во многих местах используется композиция разных типов. Хорошим примером может быть более глубокое «увеличение» структуры JSON. Вы можете получить доступ к {order: {address: {...}}} в виде javascript:
Хороший «точечный синтаксис» был реализован в Dynamic (упоминается в нашем блоге). Dynamic отправляет подобные поля методы доступа методу selectDynamic , который выполняет следующие действия:
Как мы видим, он составляет jsonObject Prism с индексом Optional.Наша интуиция подсказывает, что это имеет смысл, потому что, прежде чем углубляться в желаемое поле , мы должны «предположить» с помощью Prism, что текущее поле является объектом JSON.
В общем — у нас есть набор составной оптики — что мы можем с ними сделать? Допустим, мы хотим изменить строковое поле во вложенном JSON. Решение без оптики может выглядеть следующим образом (полный код):
Сравним с аналогом по оптике:
Разница в простоте и лаконичности разительна.
Это было очень грубое знакомство с внутренним устройством оптики -circe . Я рекомендую вам изучить исходный код — это действительно изящное решение практической проблемы. Также кодовая база для оптики относительно небольшая и содержит хорошие тесты.
Полиморфные линзы
Я должен объяснить вам PPrism . Играя с Monocle, вы быстро встретите типы с префиксом P , такие как PPrism , POptional и PLens .Во всех этих случаях P означает полиморфный. Что означает полиморфизм некоторых оптических элементов? Вы могли заметить, что все линзы являются парными функциями на типах S и A . Когда Optic является полиморфным, для «обратной» операции в игру вступают два дополнительных типа: B для аргумента и T для результата этой операции.
Возможно, будет легче понять эту идею, посмотрев на определение PLens :
Сводка
- Монокль дает нам полный спектр оптики.В данной статье описаны только их часть
- Всякий раз, когда вам сложно просматривать или изменять глубоко вложенные или рекурсивные структуры данных, это признак того, что Optics может помочь.
- Когда вам нужно работать с разными представлениями практически одних и тех же данных, это также сигнал о том, что оптика может быть полезна. Это означает, что весь код (де) -сериализации является хорошим кандидатом для Optics .
- Чтобы воспользоваться всеми преимуществами оптики, они должны быть законными
- Всегда проверяйте свои экземпляры Оптики на соответствие их законам.
monocle-law— отличный вариант для Monocle
Список литературы
Первые две ссылки были моими основными источниками вдохновения для этой статьи. Я рекомендую посмотреть их оба, чтобы понять суть оптики. Если вы найдете их достаточно интересными, чтобы погрузиться еще глубже, вам следует изучить дальнейшие ссылки.
разговоров
- Доклад Илана Годика — отличный вводный доклад в оптику в Scala с использованием Monocle одним из разработчиков. Коротко и не требует предварительных специальных знаний.Также представляет линзы Van Laarhoven Lenses .
- Выступление Жюльена Трюффо — Жюльен — автор книги «Монокль», в этом выступлении он дает отличный обзор и интуитивное понимание различных типов оптики.
- еще один доклад Жюльена Трюффо — это о
JsonPath— концепция, уже упоминавшаяся в этой статье в разделе, посвященномcirce-optics - Выступление Брайана МакКенны — Брайан знакомится с библиотеками Optics на нескольких языках: PureScript, Haskell, Scala и Java.Упоминаются хорошие примеры приложений, в том числе представление веб-страниц в виде оптики, которая позволяет перемещаться между состоянием и пользовательским интерфейсом в Halogen, работа с записями Kinesis в Haskell, обработка ошибок с помощью Prisms в Scala
- Выступление Саймона Пейтона Джонса — базовый обзор линз в Haskell
- Класс Бартоша Милевски, часть 1 и часть 2 — Бартош объясняет линзы с точки зрения теории категорий
Другие ресурсы
- Сопровождающий репозиторий с кодом, обсуждаемым в этой статье
- Документация на монокль
- Список ссылок из документации Monocle
- Упражнения Scala стр. Очки
- — новый ребенок в блоке Scala Optics
- отличная подборка оптики разного типа от Олега Гренруса.Haskell используется для объяснения
- lens over tea — цикл статей об оптике и ее реализации на Haskell
Линзы, призмы и оптика в Scala
Эта статья предназначена для программистов Scala всех уровней, которые являются большими поклонниками принципа DRY. Мы собираемся исследовать глубоко вложенные структуры данных, используя библиотеку Monocle и концепции «оптики» в Scala.
Фон
Monocle — популярная библиотека для просмотра, проверки и редактирования глубоко вложенных структур данных.Чтобы использовать Monocle, добавьте в файл build.sbt следующее:
библиотека Зависимости ++ = Seq (
"com.github.julien-truffaut" %% "monocle-core"% monocleVersion,
"com.github.julien-truffaut" %% "monocle-macro"% monocleVersion
)
1. Линзы
Monocle был изобретен, потому что вложенные структуры данных сложно проверять и изменять. Боль усиливается с увеличением глубины структур данных. Рассмотрим следующий сценарий: мы разрабатываем онлайн-сборник рок-групп (Rock the JVM, верно?).Мы думаем о следующем дизайне структуры данных:
case class Guitar (марка: String, модель: String)
case class Guitarist (имя: String, любимая гитара: Гитара)
case class RockBand (имя: String, yearFformed: Int, leadGuitarist: Гитарист)
Предположим теперь, что мы создали несколько бэндов для нашей базы данных:
val Metallica = RockBand ("Metallica", 1981, гитарист ("Кирк Хэммет", гитара ("ESP", "M II")))
Предположим также, что у нас есть гигантская база данных гитар, и мы хотим хранить их в согласованном формате.Чтобы соответствовать этому формату, нам нужно будет заменить все пробелы в модели гитары тире (не спрашивайте почему). Обычно нам приходится просматривать всю структуру данных и копировать все до модели гитары:
val MetallicaFixed = Metallica.copy (
leadGuitarist = metallica.leadGuitarist.copy (
избранноеGuitar = Metallica.leadGuitarist.favoriteGuitar.copy (
model = Metallica.leadGuitarist.favoriteGuitar.model.replace ("", "-")
)
)
)
Это боль.Представьте, что в нашем небольшом приложении есть 10 мест, где мы должны это делать. Код будет беспорядочным.
Вот где приходит Monocle. Monocle дает нам возможность получить доступ к глубоко вложенному полю в структуре данных, проверить его и / или изменить, тем самым создавая в результате новую структуру данных.
val kirksFavGuitar = Гитара ("ESP", "M II")
импортный монокль. линза
импорт monocle.macros.GenLens
val guitarModelLens: Lens [Guitar, String] = GenLens [Guitar] (_. модель)
// проверка
val kirksGuitarModel = guitarModelLens.get (kirksFavGuitar) // "M II"
// модифицируем
val formattedGuitar = guitarModelLens.modify (_. replace ("", "-")) (kirksFavGuitar) // Гитара ("ESP", "M-II")
Пока что этот код имеет ту же утилиту, что и доступ к полю или копирование экземпляра класса дела. Сила линз становится очевидной, когда мы составляем эти линзы:
val leadGuitaristLens = GenLens [RockBand] (_. LeadGuitarist)
val guitarLens = GenLens [гитарист] (_. favouriteGuitar)
val guitarModelLens = GenLens [гитара] (_.модель)
val ComposeLens = leadGuitaristLens.composeLens (guitarLens) .composeLens (guitarModelLens)
Получившаяся Lens теперь может проверять группу Metallica вплоть до любимой модели гитары Кирка и изменять ее, если мы хотим:
val kirksGuitarModel2 = ComposeLens.get (Metallica)
val MetallicaFixed2 =formedLens.modify (_. replace ("", "-")) (Metallica)
Теперь, когда линза на месте, мы можем использовать ее везде, где нам нужно выполнять аналогичные преобразования.Мы не повторяем громоздкий код для копирования классов case.
Почему этот узор называется «линза»? Потому что это позволяет нам «приближаться» к глубоко скрытым полям структур данных, а затем проверять или изменять их там.
2. Призмы
Призмы — еще один интересный инструмент для управления структурами данных. На этот раз мы работаем в мире иерархий, обычно запечатанных классов / признаков или перечислений. Вот сценарий: мы работаем над приложением для визуального дизайна, и у нас есть различные встроенные формы.Мы хотели бы иметь возможность манипулировать их функциями, продолжая работать против основного «интерфейса».
запечатанный признак Форма
case class Circle (radius: Double) расширяет форму
case class Rectangle (w: Double, h: Double) расширяет Shape
case class Triangle (a: Double, b: Double, c: Double) расширяет Shape
val aCircle = Круг (20)
val aRectangle = Прямоугольник (10, 20)
val aTriangle = Треугольник (3,4,5)
val shape: Shape = aCircle
В этом сценарии мы хотели бы иметь возможность увеличить радиус этой формы, если это круг, и оставить его нетронутым в противном случае — и все это без необходимости прибегать к isInstanceOf .Конечно, мы можем выполнить сопоставление с образцом:
val newCircle: Shape = shape match {
case Круг (r) => Круг (r + 10)
case x => x
}
Но опять же, если бы мы хотели применить это преобразование ко многим фигурам в различных частях нашего кода, у нас не было бы другого выбора, кроме как повторить этот шаблон. Введите призмы:
импортный монокль.Призма
val circlePrism = Prism [Форма, Двойная] {
case Circle (r) => Some (r)
case _ => Нет
} (r => Круг (r))
Prism принимает два списка аргументов, каждый из которых принимает функцию.Один имеет тип Shape => Option [Double] , так что это «геттер» (мы возвращаем Option, потому что Shape может быть чем-то другим, кроме круга). Другая функция — «создатель» типа Double => Shape . Другими словами, Prism — это оболочка над возвратно-поступательным преобразованием между Double и Shape. Призма позволяет нам исследовать форму и получить двойник или использовать двойник и создать форму.
val circle = circlePrism (30) // возвращает форму (на самом деле круг)
val noRadius = circlePrism.getOption (aRectangle) // вернет None, потому что эта форма не круг
val radius = circlePrism.getOption (aCircle) // возвращает Some (20)
Поначалу это может показаться сложным, но он избавляет от большого количества шаблонов по нескольким причинам:
- метод apply призмы действует как «умный конструктор», который может для нас экземпляры Circle
- , мы можем безопасно проверить радиус любой формы, даже если это не круг — это избавляет нас от необходимости повторять предыдущее сопоставление с образцом.
Оба вышеперечисленных могут использоваться в любой точке нашего приложения без необходимости каждый раз проверять тип или сопоставление с образцом.
Почему этот узор называется «призмой»? Поскольку из множества типов (фасетов) иерархии структур данных (призмы) мы заинтересованы в манипулировании одним подтипом («лицом»). Вместе с приведенным выше шаблоном линз и множеством других библиотека Monocle описывает себя как библиотеку «оптики» для Scala.
3. Композитная оптика
Вероятно, самая мощная особенность Monocle — это возможность составлять вышеперечисленные (и другие) шаблоны. Мы можем проверять и / или изменять вложенные структуры данных, комбинируя возможность увеличения (линза) и выделения типа (призма).
Представьте, что кто-то создает фирменный стиль с помощью нашего приложения для визуального дизайна:
case class Icon (фон: String, shape: Shape)
case class Logo (цвет: строка)
case class BrandIdentity (логотип: Logo, значок: Icon)
Если мы хотим изменить радиус значка бренда — предполагая, что это круг, или оставить его без изменений в противном случае — мы должны создать соответствующие аксессуары (линзы) и модификаторы для нашего желаемого типа (призмы):
val iconLens = GenLens [BrandIdentity] (_.ничего не делает, потому что форма не треугольник, но код на 100% безопасен
Теперь доступ к данным и управление ими можно многократно использовать во всем приложении!
Заключение
Теперь вы знаете оптический подход к доступу, проверке и изменению вложенных структур данных. Дайте мне знать, если он вам понравился, и я напишу продолжение с более продвинутым использованием, включая коллекции, изоморфизмы и интеграцию с кошками!
Home — monocle-ts
Оглавление
(Адаптировано с сайта monocle)
Изменение неизменяемого вложенного объекта в JavaScript является подробным, что затрудняет понимание кода.
Давайте посмотрим на несколько примеров:
interface Street {
число: число
имя: строка
}
interface Address {
город: строка
улица: Улица
}
interface Company {
имя: строка
адрес: Адрес
}
interface Employee {
имя: строка
компания: Компания
}
Допустим, у нас есть сотрудник, и нам нужно ввести верхний регистр в первый символ названия улицы его компании. Вот как мы могли бы написать это на ванильном JavaScript
const employee: Employee = {
имя: 'Джон',
Компания: {
name: 'awesome inc',
адрес: {
город: 'лондон',
улица: {
номер: 23,
имя: 'главная улица'
}
}
}
}
const capitalize = (s: строка): строка => s.substring (0, 1) .toUpperCase () + s.substring (1)
const employee2 = {
...работник,
Компания: {
... сотрудник. компания,
адрес: {
... employee.company.address,
улица: {
... employee.company.address.street,
имя: заглавные буквы (employee.company.address.street.name)
}
}
}
}
Как мы видим, копирование неудобно для обновления вложенных объектов, потому что нам нужно повторяться. Давайте посмотрим, что мы можем сделать с monocle-ts
import {Lens} from 'monocle-ts'
const company = Объектив.fromProp <Сотрудник> () ('компания')
const address = Lens.fromProp <Компания> () ('адрес')
const street = Lens.fromProp <адрес> () ('улица')
const name = Lens.fromProp () ('имя')
Компания
.compose (адрес)
.compose (улица)
.compose (имя)
compose принимает две линзы , одну от A до B и другую от B до C и создает третью линзу от A до C .Таким образом, после создания company , address , street и name , мы получаем Lens из Employee в строку (название улицы). Теперь мы можем использовать эту линзу Lens , выданную из композиции, чтобы изменить название улицы с помощью функции capitalize
company
.compose (адрес)
.compose (улица)
.compose (имя)
.modify (капитализировать) (сотрудник)
Вы можете использовать fromPath API, чтобы избежать некоторых шаблонных
импорта {Lens} из 'monocle-ts'
const name = Объектив.fromPath <Сотрудник> () (['компания', 'адрес', 'улица', 'имя'])
name.modify (использовать заглавные буквы) (сотрудник)
Здесь модифицирует функцию строка => строка до функции Сотрудник => Сотрудник . Это работает, но было бы яснее, если бы мы могли увеличить первый символ строки с помощью линзы Lens . Однако мы не можем написать такую линзу Lens , потому что Lenses требуют, чтобы поле, на которое они были направлены, было , обязательно .В нашем случае первый символ строки является необязательным, поскольку строка может быть пустой. Итак, нам нужна еще одна абстракция, которая была бы своего рода частичной линзой, в monocle-ts она называется Optional .
импорт {опционально} из 'monocle-ts'
import {some, none} из 'fp-ts / lib / Option'
const firstLetter = new Необязательный <строка, строка> (s => (s.length> 0? some (s [0]): none), a => s => a + s.substring (1))
Компания
.составить (адрес)
.compose (улица)
.compose (имя)
.asOptional ()
.compose (первая буква)
.modify (s => s.toUpperCase ()) (сотрудник)
Аналогично compose для линз, compose для дополнительных опций принимает два Optionals , один от A до B и другой от B до C и создает третий Optional из A до C .
