Заметки о программировании, путешествиях и плёнке.
Обо мне  •  Список заметок  •  Плёнка

Позднее Ctrl + ↑

Ссылки — 24

Случайное фото на плёнку, просроченная Konica 100VX
  • GoatCounter — бесплатная и открытая веб аналитика для сайтов. Сейчас тестирую ее у себя в блоге — полёт нормальный. Скорее всего откажусь от Google аналитики в пользу GoatCounter, так как он легковесный и не следит за пользователями. Также автор написал целую статью о том, почему он создал этот сервис.
  • Пора на свалку — история чувака, который больше 17 лет работает C++ программистом.
  • Нашел отличное и минималистично расширение для блокировки отвлекающих сайтов — Intention. Работает быстро и никуда не отправляет ваши данные.
  • Прекрасный пост от tonsky где он рассказывает о проблемах REST. А также статья о необходимости отдельного файла CHANGELOG со всеми изменениями пакета или приложения, а также почему история тасок в Jira или история коммитов не справляются с этой задачей.
  • История о том, как dropbox с нуля переписывали свой движок синхронизации файлов. В конце статьи можно найти хороший чеклист, который должен помочь, когда нужно что-то переписать с нуля.

Код: тайный язык информатики

Составили вместе с другом план, по которому хотим изучить Computer Science. Первым пунктом плана стала книга — Код: тайный язык информатики. Прочитав её я был в шоке от подачи и крутости материала. Автор шаг за шагом рассказывает про развитие компьютерных технологий.

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

Также автор рассказывает, почему появилась и для чего нужна шестнадцатеричная и двоичная системы исчисления, как устроена оперативная память. Ближе к концу книги вы придумаете «свой» язык программирование и окажется, что вы придумали ассемблер. Ну а в самом конце автор расскажет, как мы пришли от командной строки к графическим интерфейсам.

Каждая глава содержит множество иллюстраций, которые объясняют тот или иной аспект.

Книга сильно зацепила меня, прочитал всего за неделю. Советую всем кто хочет разобраться как устроен компьютер и его самые мелкие части.

Ночной Киев

Поехал на Подол сделать несколько ночных кадров. До этого я только пару раз пробовал так как не было штатива. Для съёмки ночью нужен не только штатив, но и понимание того, как ведёт себя плёнка при длинных выдержках.

Во-первых нужен хороший экспонометр. Раньше использовал приложение «Lux», но недавно перешёл на продвинутый аналог «myLightMeter».

Во-вторых нужно ознакомиться с такой штукой как — закон взаимозаменяемости (reciprocity failure). Каждая плена после определённой выдержки начинает терять чувствительность. Чтобы компенсировать этот эффект нужно посмотреть в документацию к плёнке и найти значение компенсации. Чтобы облегчить задачу, можно воспользоваться приложением на телефон. Использую «Reciprocity+». Детальнее можно посмотреть в видео Reciprocity Failure and Long Night Exposures и Tips for Shooting Film at Night.

Снимал на камеру Canon A1 Program (50mm, 1.8) и плёнку Fuji Superia X-Tra 400.

f 1/16 — 5 сек.
f 1/11 — 30 сек.
f 1/16 — 30 сек.
Фото не с подола, но на эту же плёнку.
Фото не с подола, но на эту же плёнку.

Киевский музей авиации

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

Государственный музей авиации Украины — крупнейший музей технического профиля на территории Украины. Он находится возле аэропорта “Жуляны” и делит с ним одну территорию. Музей открылся 30 сентября 2003 года. В нём находиться больше 70 видов самолётов и вертолетов. Также на территории размещены следующие экспонаты:

  • Авиасимуляторы
  • Экспозиция двигателей
  • Спецтранспорт
  • Экспозиция бомб

Фото авиатехники

Ту-22М3 — советский дальний сверхзвуковой ракетоносец-бомбардировщик с крылом изменяемой стреловидности. Носитель ядерного оружия. Первый полет осуществил 30 августа 1969.

Ту-142 — советский и российский дальний противолодочный самолёт. Глубокая модификация самолета Ту-95. Впервые поднялся в воздух 18 июня 1968 года. Всего произведено около 100 машин. Самое забавное что Ту-95 является одним из самых шумных самолётов в мире и засекается даже гидроакустическими системами подводных лодок.

Ми-24 — советский ударный вертолет. Стал первым советским (европейским) и вторым в мире (после AH-1 «Кобра») специализированным боевым вертолётом. Серийный выпуск начался в 1971 году. Выпущено около 3500 единиц.

Ан-71 — самолёт дальнего радиолокационного обнаружения и управления. Всего было выпущено 3 самолёта из которых 2 летных экземпляра и 1 для статических испытаний. Первый полет осуществлен 12 июля 1985 года.

Ми-4 — советский многоцелевой вертолёт. Был первым военно-транспортным вертолётом вооружённых сил СССР. Имел такую же компоновку как у американского Sikorsky S-55. Выпущено около 3900 единиц. Первый полет — 3 июня 1952 года.

Су-25 — бронированный дозвуковой советский штурмовик. Предназначен для непосредственной поддержки сухопутных войск над полем боя днём и ночью при прямой видимости цели, а также уничтожения объектов с заданными координатами круглосуточно в любых метеоусловиях. Впервые поднялся в воздух 22 февраля 1975 года. Произведено около 1 320 единиц.

Ми-8 — многоцелевой вертолёт. Является самым массовым двухдвигательным вертолётом в мире, а также входит в список самых массовых вертолётов в истории авиации. Произведено больше 12 000 единиц. Количество модификаций поражает.

Ми-6 — советский тяжёлый многоцелевой вертолёт. Создан во второй половине 1950-х годов, когда в СССР были приняты на вооружение мобильные ракетные комплексы «Луна», для переброски которых и потребовался вертолёт большой грузоподъёмности. Выпущено всего 926 машин. На вертолёте Ми-6 установлено 16 мировых рекордов.

Другие экспозиции

P.S. Вся информация о самолётах и вертолетах взята из Википедии :-)

 2 комментария    226   6 мес   пленка   фото

Все заметки

2019

§ 129.

Идеи для программистов

§ 128.

Как деревенский мужик Василий съездил в Нью-Йорк

§ 127.

Годнота, часть 18

§ 126.

stateless и stateful сервисы

§ 125.

Kodak ColorPlus 200 pushed to 400 ISO

§ 124.

Как я делал бота для Facebook workplace

§ 123.

Эгея Power-Ups

§ 122.

Terrasoft → Epam

§ 121.

Годнота, часть 17

§ 120.

Вопросы на собеседованиях

§ 119.

Удаления дубликатов строк

§ 118.

Крым на кинопленке Kodak Vision3 250D

§ 117.

Годнота, часть 16

§ 116.

Показать запросы, которые страдают от блокировок

§ 115.

Parallel, Asynchronous, Multithreading programming

§ 114.

Шпаргалка по LINQ

§ 113.

Получить информацию по индексу в таблице

§ 112.

Лучшее объяснения работы семафора

§ 111.

Неиспользуемые индексы

§ 110.

Годнота 15

§ 109.

Kentmere 400

§ 108.

Ведение дневника в Telegram

§ 107.

Полезные SQL скрипты: поиск foreign key по БД

§ 106.

Полезные SQL скрипты: текущая ситуация на сервере

§ 105.

Сериал об истории рунета

§ 104.

Курс по основам работы с командной строкой

§ 103.

Старые проекты: моя домашняя страница

§ 102.

Небольшая заметка об индексах в ms sql

§ 101.

Kodak Ektar 100

§ 100.

Годнота, часть 14

§ 99.

Рекурсивные запросы

§ 98.

Kodak Pro Foto 100 (просрочка 2009)

§ 97.

GIN индекс

§ 96.

Алгоритм поиска Ли

§ 95.

Polaroid High Definition 200 (просрочка 2002)

§ 94.

Контейнер для хранения пленки

§ 93.

Хеш-таблица

§ 92.

Шпаргалка по джоинам в SQL

§ 91.

Fujifilm Superia 100 (просрочена 2012 год.)

§ 90.

Антон Шеин — Мечтать вредно

§ 89.

Logitech M590 или лучшая мышка для mac

§ 88.

Квалификация

§ 87.

Цель любой библиотеки

§ 86.

Почтоматы от розетки

§ 85.

Правила жизни 100-летнего человека

§ 84.

Халтура или ремесло?

§ 83.

Годнота, часть 13

§ 82.

Изучение SQL: ключевое слово GO

§ 81.

Оценка задач

§ 80.

Алгоритмы сортировки

§ 79.

Эмбиент плейлист

§ 78.

Atlas Weekend 2019

§ 77.

sleepover.fm

§ 76.

Mubert

§ 75.

Годнота, Часть 12

§ 74.

Шпаргалка по паттернам проектирования

§ 73.

Команды systemctl

§ 72.

Цитата

§ 71.

Название для Unit-тестов

§ 70.

36

§ 69.

Изучение нового языка программирования

§ 68.

Правила использования AutoMapper в .NET

§ 67.

Коллекции в .NET

§ 66.

Первый проект

§ 65.

Структуры данных: связанные списки

§ 64.

Годнота 11

§ 63.

Схема + PAN 01.06.2019

§ 62.

Работа с файлами в Powershell

§ 61.

Рим, Италия 2019

§ 60.

Чек лист для поездок

§ 59.

Кстати, не путайте проект и продукт

§ 58.

Годнота, часть 10

§ 57.

Разработка на C# с помощью Visual Studio Code

§ 56.

Фотокарточки: Киев, Май 2019

§ 55.

CancellationToken в C#

§ 54.

Эксперименты над пленкой

§ 53.

Годнота, часть 9

§ 52.

RSS

§ 51.

SOLID

§ 50.

Автоматизация релизов Github с помощью Powershell и Teamcity

§ 49.

Парадигмы ООП

§ 48.

Лучшие практики использования PowerShell c TeamCity

§ 47.

Годнота, часть — 8

§ 46.

UAT и Staging

§ 45.

Документация

§ 44.

Киев, Май 2019

§ 43.

Годнота, часть 7

§ 42.

Логирование

§ 41.

Изучение SQL: EXCEPT и INTERSECT

§ 40.

Изучение SQL: UNION

§ 39.

Обзор пленки

§ 38.

Амстердам, Апрель 2019

§ 37.

Изучение SQL: Операторы GROUP BY и HAVING

§ 36.

Годнота, часть 6

§ 35.

Шардинг

§ 34.

Репликация данных

§ 33.

PowerShell: создание Credentials.

§ 32.

Мои расширения в Google Chrome

§ 31.

Надворная, Март 2019

§ 30.

Изучение SQL: триггеры

§ 29.

Годнота 5

§ 28.

Sublime Merge

§ 27.

Приложение для фото — NOMO

§ 26.

Фотокарточки. Киев, Труханов остров

§ 25.

Конспект: работа с командной строкой

§ 24.

Digital Ocean

§ 23.

Годнота — часть 4

§ 22.

Кэширование

§ 21.

Кластеризация

§ 20.

Pipeline архитектура

§ 19.

Толстый клиент

§ 18.

Самообучение

§ 17.

Ссылки

§ 16.

Места в Киеве

§ 15.

#2. Статьи

§ 14.

Best Practices for Building Async APIs with ASP.NET Core

§ 13.

#1. Ссылки на интересные статьи

§ 12.

Эгея

§ 11.

Ивенты

§ 10.

Путешествую

§ 9.

Gudak camera

§ 8.

Мои инструменты

§ 7.

Книги

 Нет комментариев    187   6 мес  

Ссылки, часть 23

Google Drive → OneDrive

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

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

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

Из минусов OneDrive можно отметить глючное приложение для mac. Синхронизирует — отлично, но вот интерфейс приложения тупит. Но я его почти никогда не открываю.

С другой стороны, мобильно приложение в OneDrive намного удобнее. Можно посмотреть файлы, которые ты расшарил и которые расширили тебе. Также радует наличие сканера документов прямо в приложении.

Прошло два месяца, OneDrive меня полностью устраивает. От Google Drive полностью не избавился, так как очень много людей его используют, в том числе их документы, да и я сам.

Жизненный цикл запросов в ASP.NET Core MVC

Жизненный цикл — это цепочка событий, этапов и компонентов, которые взаимодействуют друг с другом, чтобы обработать запрос пользователя и предоставить ему ответ.

Общий вид на жизненный цикл ASP.NET Core MVC приложений:

Он содержит в себе несколько этапов:

  • Middlewares
  • Routing
  • Controller Initialization
  • Controller action execution
  • Result Execution
  • View Rendering

Middlewares

Middlewares представляют из себя базовые блоки, с помощью которых строится HTTP пайплайн. Такой пайплайн представляет из себя конвейер, который обрабатывает каждый запрос. Каждый блок получает запрос и смотрит на него, если может предоставить ответ — возвращает его, если нет, передаёт запрос следующему блоку.

В ASP.NET Core у нас есть 4 метода, с помощью которых мы можем создавать свои middlewares.

  • Use
  • Run
  • Map
  • MapWhen

Официальная документация

Routing

Маршрутизация позволяет найти для каждого URL подходящий обработчик, а также извлекает все параметры из URL и красиво их нам предоставляет. Для работы роутинга нам нужны две middleware:

  • UseRouting
  • UseEndpoints

Как все это работает?

UseRouting встраивает класс EndpointRoutingMiddleware, он смотрит на конечные точки, которые есть в приложении и выбирает подходящую. Выбор происходит на основании URL и заголовков. После того как нужный обработчик найден (Request delegate) его присваивают свойству Endpoint(IEndpointFeature) внутри текущего HttpContext. В дальнейшем мы можем получить его значения с помощью метода GetEndpoint.

UseEndpoints встраивает EndpointMiddleware. Он отвечает за выполнение установленной ранее конечной точки.

Официальная документация

Controller initialization

Для обеспечения работы контроллеров у есть два класса: ResourceInvoker, ControllerActionInvoker.

ResourceInvoker является абстрактным классом, который содержит общую логику работы с ресурсом, обработку исключений и результата.

ControllerActionInvoker наследует ResourceInvoker и добавляет в него логику работы с контроллерами и их методами.

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

Исходники классов можно посмотреть на github (ResourceInvoker, ControllerActionInvoker).

Action workflow

Работа каждого метода контроллера состоит из своего жизненного цикла. Основой которого являются фильтры. Каждый фильтр может отрабатывать как и перед запуском действия, так и после.

Общий вид этого жизненного цикла:

  • Фильтры авторизации
  • Фильтры ресурсов
  • Привязки моделей
  • Фильтры действий
  • Выполнение метода контроллера
  • Фильтры исключений
  • Фильтры результатов
  • Выполнение результата
  • Фильтры результатов

Детальнее про фильтры можно почитать на метаните.

Result execution

Методы контроллера возвращают объекты результата, которые в дальнейшем преобразовываются в соответствующее представление. Объект результата должен наследовать абстрактный класс ActionResult. Фреймворк предоставляет нам большое множество готовых классов.

Общий вид того как происходит рендеринг представлений:

Источники

Ilford HP5 Plus 400

Классическая черно белая пленка. Мелкозернистая, не имеет особых ограничений на условия съемки. Пушиться до 1600 ISO.

Semantica — тема для Visual Studio Code

Красивая тема редактора сильно влияет на удобство работы с кодом. Я перепробовал множество разных тем, сначала были тёмные, но спустя какое-то время я перешёл на светлые. Большинство тем меня не устраивали. Для меня важно чтобы: интерфейс не обращал на себя внимания, подсветка кода похожая на то что есть в обычной Visual Studio и Rider.

Однажды наткнулся на отличную тему Alabaster. Общая цветовая палитра мне зашла, но вот подсветка синтаксиса слишком минималистичная. В итоге решил на основе этой темы запилить свою. Добавил подсветку синтаксиса похожую на Visual Studio Light и Rider Light. В итоге получилась новая тема — Semantica.

Логотип темы.

Ссылки

Исходный код: https://github.com/teamkiller7112/vscode-theme-semantica
Маркетплейс: https://marketplace.visualstudio.com/items?itemName=bogdanstefanjuk.theme-semantica

Скриншоты

PS

Замечания или пожелания оставляйте на гитхабе. Если тема понравилась — поставьте звездочку в репозитории

В качестве шрифта советую использовать JetBrains Mono.

Ранее Ctrl + ↓