Богдан Стефанюк

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

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

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

Государственный музей авиации Украины — крупнейший музей технического профиля на территории Украины. Он находится возле аэропорта “Жуляны” и делит с ним одну территорию. Музей открылся 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. Вся информация о самолётах и вертолетах взята из Википедии :-)

Все заметки

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.

Книги

 Нет комментариев    45   19 дн  

Ссылки, часть 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. Фреймворк предоставляет нам большое множество готовых классов.

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

Источники

 Нет комментариев    143   1 мес   .net   asp.net core   c#

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.

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

Случайное плёночное фото, просроченная Agfa Color 100.

Инфостиль в заголовках задач

Данный текст взят из канала Фёдора Борщёва

Я не сильно докапываюсь к чистоте текста в задачах и служебной переписке: конечно клёво, когда люди пишут понятно, но не всем нужно это учить: нафига какому-нибудь руководителю логистической службы писать тексты на 8 баллов главреда? Главное, чтобы он мог хоть как-то сформулировать сигнал, что болит — а дальше придут опытные продакты/проджекты и всё выяснят.

Но есть одно место, где я жёстко включаю Ильяхова — это заголовки задач в трекере. На сколько вы бы захотели работать в команде, которая целый день занимается какой-нибудь «необходимостью реализовать новый механизм построения отчётности» и, чтобы не произносить это дерьмо в слух, называет задачи по номерам (типа «Как там задача 1238?»). Я — не хотел бы.

Вот пара правил для заголовков задач, которые помогут не превращать трекер в бухгалтерский отчёт:
— Из заголовка чётко понятно, что нужно сделать. Не «доработать логику корзины», а «Сделать, чтобы при удалении последнего товара корзина очищалась».
— Никакой воды: смело рубить всякие «необходимо реализовать» и «отсутствие возможности».
— В заголовке есть понятные для всей команды ключевые слова. Если задача про вкладку Логистика, то так и писать «логистика», а не «интерфейс менеджера-логиста».
— Если задача мало декомпозирована («привести в порядок учёт зарплаты») то заголовок должен описывать следующий понятный шаг, к примеру «Понять, почему заказ 100500 не пробросился в 1с» или «сделать кнопку „не согласен с расчётом“.

Update: для любой проблемы уже давно написан специализированный сервис. Мне тут подсказали http://bugred.ru, который как главред, только для задач в трекере.

Fujifilm Superia 200 (просрочена 2011 год.)

Купил немного просроченной пленки от Fuji. Протестировал как она снимает если работать по номиналу. Фото делал на Konica Autoreflex T3.

Ранее Ctrl + ↓