Нотатки про програмування, музику, подорожі та плівку
Про мене  •  Список нотаток  •  Плівка

Пізніше Ctrl + ↑

Список нотаток

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.

Книги

2018

§ 6.

Инструменты для анализа дампа приложения

§ 5.

Кратко о WebSocket

§ 4.

C# Debug vs Release. Сборки и дебаг

§ 3.

Рубрикатор

§ 2.

О блоге

§ 1.

Привет, я Богдан Стефанюк

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

Google Drive → OneDrive

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

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

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

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

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

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

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

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

Общий вид на жизненный цикл 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.

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

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

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

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

Мій робочий та домашній сетап

2023
З початком війни в мене виникла необхідність в мобільному робочому місці, тому мій робочий сетап зараз виглядає ось так:

Ноутбук та звичайний блокнот з ручкою дозволяють організувати робоче місце в будь-якому місці та в будь-яких умовах. По факту, можна обійтися навіть без столу. Попрацювавши так місяць я усвідомив, що цього цілком достатньо для ефективної роботи. А якщо використовувати робочі столи в mac os, то можна відмовитись і від моніторів.

Мої попередні сетапи

2020

З переїздом на нову орендовану квартиру, потрібно було організовувати собі нормальне робоче місце, бо якраз вдарив ковід та карантин і я перейшов на віддалену роботу.

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

Настала черга вибору монітора. Через обмежений бюджет вибрав Dell P2419HC на 24 дюйми. Головним критерієм була підтримка power delivery через type-c, щоб заряджати ноут та виводити картинку через один кабель. Хоча згодом стало зрозуміло, що 1080 для такої діагоналі занадто ріже очі.

В той час, окрім свого ноутбука, був і робочий ноут. Щоб зробити безшовне перемикання між ними я придбав клавіатуру Logitech K380 та мишку, які мають підтримку декількох пристроїв. Завдяки всього трьом кнопкам можна було перемикатися між робочим та домашнім сетапом: одна на моніторі, одна на клаві та ще одна на мишці.

2021

Перейшов зі звичайного робочого столу на стіл з Ікея з ручним регулюванням висоти. За ціною вийшло вдвічі дешевше ніж аналогічні з електричним приводом. Тож тепер я всім раджу купувати столи з регулюванням, це нереально зручна штука. Завдяки йому я позбавився від болів в спині.

Клавіатуру також поміняв на механічну Keychron K1 яку виграв в ютубі через random org :)

Далі почалося моє хобі з електронною музикою. Так в моєму житті з’явився новий етап покупок різного музичного заліза.

Першою покупкою стали монітори Kali LP-6. Досить непогані колонки, правда коли на них не подаєш сигнал, то йде дуже тихенький шум, але до цього швидко звикаєш і перестаєш його чути.

Потім добавились різні синтезатори:

2022
З’явився новий основний 2К монітор Dell на 27 дюймів. Старий вирішив використати як другий вертикальний монітор. Досить зручний сетап, якщо винести туди всі месенджери та пошту.

Також в мене з’явилась PlayStation 4 яку видно на фоні за монітором. Згодом я замінив її на Xbox Series S. Але потім прийшла війна…

Интересные находки в сети

Случайное плёночное фото, сегодня это Kodak Ektachrome E100.
Раніше Ctrl + ↓