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

Заметки о программировании, путешествиях, фотографии и разных интересностях.
👨🏻‍💻Обо мне  🗂Все заметки  ✏️О блоге

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

A semaphore is like a nightclub: it has a certain capacity, enforced by a bouncer. Once it’s full, no more people can enter, and a queue builds up outside. Then, for each person that leaves, one person enters from the head of the queue. The constructor requires a minimum of two arguments: the number of places currently available in the nightclub and the club’s total capacity.

Полезные SQL скрипты: неиспользуемые индексы

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

SELECT DatabaseName = DB_NAME(),
    TableName = OBJECT_NAME(s.[object_id]),
    IndexName = i.name,
    user_updates,
    system_updates,
    'alter index [' +OBJECT_SCHEMA_NAME(i.object_id, DB_ID())+ '].['+i.name+'] ON ['+OBJECT_NAME(s.[object_id])+'] DISABLE' as [Disable],
    'exec sp_rename ''['+OBJECT_SCHEMA_NAME(i.object_id, DB_ID())+'].['+OBJECT_NAME(s.[object_id])+'].['+i.name+']'',''disable_'+i.name+''',''INDEX''' as [Rename]
FROM sys.dm_db_index_usage_stats s
INNER JOIN sys.indexes i ON s.object_id = i.object_id and
                            s.index_id  = i.index_id
WHERE s.database_id = DB_ID() and
    OBJECTPROPERTY(s.[object_id], 'IsMsShipped') = 0 and
    s.user_seeks   = 0 and
    s.user_scans   = 0 and
    s.user_lookups = 0 and
    i.is_disabled  = 0 and
    i.is_unique = 0 and
    i.is_primary_key = 0 and
    i.type_desc <> 'HEAP'
order by user_updates + system_updates desc

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

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

Для любителей пленочной фотографии

Daylight vs. Tungsten

Паблики в ВК

Телеграмм каналы

Kentmere 400

Это первая пленка, которую я проявил вручную. Как по мне имеет большое, но в тоже время, приятное зерно. Позже расскажу о том как я проявлял.

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

Как-то услышал идею о том чтобы вести свой дневник в телеграмме. Эта идея оказалась очень даже рабочей. Сам формат сообщений более удобный и нативный для ведения дневника чем отдельные приложения. Также телеграмм подкупает своим большим функционалом и бесплатностью.

Он покрывает все то что умеют другие приложения:

  1. Аудио и видео заметки
  2. Фотографии
  3. Файлы
  4. Геолокация.

Проекты

Склад

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

Технологии: ASP.NET Core MVC, Entity Framework Core, PostgreSQL, JavaScript, bash.
Ссылка на проект https://mybookmark.space

Сайт для школы Educational hub «ABC»

Середина 2018 года
Занимался полным циклом разработки (дизайн, верстка, серверная часть, организация CI/CD).

Технологии: ASP.NET Core, SQLite, Entity Framework Core, HTML/CSS, bash.
Ссылка на сайт: https://educationalhub-abc.com.ua

Windows server manager

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

Технологии: ASP.NET MVC 5

WebCars

Начало 2017 года
Интернет аукцион для покупки и продажи проверенных автомобилей. Из интересных особенностей: каждый автомобильно должен был пройти проверку в выбранном СТО, отчет доступен каждому пользователю. Также этот проект был для меня первым, именно с него начался отсчет моего коммерческого опыта разработки. На текущий момент сайт отключен.
Что делал:

  • Написал большую часть серверной логики.
  • Интеграция с IP телефонией.
  • Корпоративный блог
  • Личные кабинеты для СТО и администраторов

Технологии: ASP.NET MVC 5, Entity Framework, JavaScript, JQuery, HTML/CSS

Мои профессиональные скиллы

Основной стек технологий — .NET

  • ASP.NET: Core, MVC, WebAPI.
  • Тестирование: NUnit, MSTest.
  • ORM: Entity Framework, Linq to SQL, Dapper.
  • T-SQL
  • PowerShell
  • Планировщики задач: Quartz, FluentScheduller.
  • И многие другие фреймворки (Ninject, Autofac, AutoMapper, Polly)

Web технологии

  • HTML/CSS
  • JavaScript
  • Angular 6

Дополнительные навыки

  • Много работал с настройкой и отладкой CI/CD в частности Teamcity.
  • Умею оптимизировать запросы для MS SQL Server
  • SVN/Git

Подходы к разработке ПО

  • Design Patterns
  • Domain-Driven Design
  • SOLID
  • TDD

Опыт работы

Terrasoft
Сентябрь 2017 — Сейчас
Основные задачи связанны с разработкой CRM системы bpmonline. Кроме этого занимаюсь автоматизацией разных процессов внутри команды.

Участвую во внутренних проектах:

  1. bpmcli — cli для нашей системы, которая предлагает новые возможности для разработчиков.
  2. bpmonline bot — бот для разных мессенджеров для упрощения взаимодействия с системой.

Провел ряд обучений на темы:

  1. Что такое TeamCity и с чем его едят?
  2. Серия докладов об архитектуре высоконагруженных систем.
  3. XP практики.

White & Red Production
Декабрь 2016 — Сентябрь 2017
Занимался разработкой интернет аукциона по продаже автомобилей. Реализовал оплату, большую часть серверной логики, взаимодействие с IP телефонией, корпоративный блог, админ панель.

Резюме (CV)

— Русская версия PDF | Google Documents.
— English version PDF | Google Documents

 Нет комментариев    38   14 дн  

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

SELECT 
    f.name AS ForeignKey, 
    OBJECT_NAME(f.parent_object_id) AS TableName, 
    COL_NAME(fc.parent_object_id, fc.parent_column_id) AS ColumnName, 
    OBJECT_NAME (f.referenced_object_id) AS ReferenceTableName, 
    COL_NAME(fc.referenced_object_id, fc.referenced_column_id) AS ReferenceColumnName 
FROM 
    sys.foreign_keys AS f 
INNER JOIN 
    sys.foreign_key_columns AS fc 
ON 
    f.OBJECT_ID = fc.constraint_object_id 
WHERE 
    f.name = 'FKnokgcq1rxh5Y7DLhgCqIZJ4KY'
 Нет комментариев    38   24 дн   mssql   sql

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

С помощью этих скрипов можно посмотреть какие запросы в данных момент выполняются на сервере.

select *
from sys.sysprocesses 
where 
	spid > 50 and 
	spid <> @@spid and 
	status <> 'sleeping'
order by spid, ecid
select 
	session_id, 
	status, 
	wait_type, 
	command, 
	last_wait_type, 
	percent_complete, 
	qt.text, 
	total_elapsed_time/1000 as [total_elapsed_time, сек],
	wait_time/1000 as [wait_time, сек],
	(total_elapsed_time - wait_time)/1000 as [work_time, сек]
from sys.dm_exec_requests as qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
where session_id >= 50 and session_id <> @@spid
 Нет комментариев    55   25 дн   sql
Ранее Ctrl + ↓