Как стать автором
Обновить
3
0
Pavel Orlov @opv88

Senior Software Developer (Tech Lead)

Отправить сообщение

Async/Await из C#. Головоломка для разработчиков компилятора и для нас

Уровень сложностиСложный
Время на прочтение11 мин
Количество просмотров12K

Я рискну все таки продолжить изложение своего понимания Поста: How Async/Await Really Works in C#, которое в предыдущей статье получило название “ортогональный взгляд”. Также, недавно мы познакомились (возможно несколько преждевременно) с изначальным определением концепции SynchronizationContext на которую ссылается автор этого Поста.

Это не перевод. Это изложение содержания Поста на разных уровнях раскрытия сущностей и их взаимодействия по мере развития (эволюции) моего понимания тех мыслей и идей, которые, как мне кажется, хотел донести до читателя автор Поста Stephen Toub.

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

В этот раз попробуем сформулировать задачу, которую решает компилятор, то есть те разработчики, которые разрешили нам пользоваться конструкциями Async/Await в C#.

Читать далее
Всего голосов 6: ↑5 и ↓1+5
Комментарии6

Почему B-деревья быстрые?

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров50K

B-дерево — это структура, помогающая выполнять поиск в больших объёмах данных. Она была изобретена более сорока лет назад, однако по-прежнему используется в большинстве современных баз данных. Хотя существуют и более новые структуры индексов, например, LSM-деревья, B-дерево пока никто не победил в обработке большинства запросов баз данных.

После прочтения этого поста вы будете знать, как B-дерево упорядочивает данные и выполняет поисковые запросы.

Читать далее
Всего голосов 151: ↑150 и ↓1+183
Комментарии13

В поисках сокровищ: SnowRunner

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров12K

Уже больше полугода я не писал статьи про современные игры, от чего рубрика «В поисках сокровищ», посвященная отличным, но не столь хайповым проектам (вроде Call of Duty или Fortnite), фактически заброшена. Однако около месяца назад открыл для себя SnowRunner, который стал для меня глотком свежего воздуха среди затхлости нынешней индустрии, поэтому не рассказать про него и не посоветовать просто не могу! Забавно, ведь я знал о проекте очень давно, но был убеждён, что такой геймплей и жанр – совершенно не моё, поэтому не стоит даже пытаться в неё играть, дабы не потратить время впустую. Так прошла пара лет, и, в очередной раз увидев её, я всё же решился попробовать. Уж больно всё выглядело приятно и притягательно. Меня тяжело удивить какой-то игрой и уж тем более захватить на долгие часы, но, видимо, совокупность интересного и медитативного геймплея, построенного на исследовании мира и взаимодействии с ним, потрясающая физическая модель как самого транспорта, так и поверхности всё же сделали своё дело. Надеюсь, я смогу убедить и вас попробовать данный проект, развеяв все сомнения.

Читать далее
Всего голосов 21: ↑21 и ↓0+21
Комментарии25

Делай нейминг как сеньор

Время на прочтение13 мин
Количество просмотров119K

Это объект Pizza, там хранится инфа о латте, а заказали его в Restaurant или в Pizzeria? Неудобно? Максимально. Мы читаем код существенно больше, чем пишем. И хочется сразу понимать, что происходит, не играя в квесты «что имел в виду автор», «да как это работает» и «я снова ничего не понял». Без навыка давать хороший нейминг невозможно писать качественный и поддерживаемый код. Про нейминг говорят заодно, в рамках архитектуры и общих инженерных практик. В статье поговорим про него отдельно.

Как получается, что код становится мало понятным даже для его авторов? Почему нейминг так важен? Как придумывать названия, не применяя целые теории нейминга? Как лёгким процессом организовать работу с неймингом в команде? На все эти вопросы мы ответим в статье.

Читать далее
Всего голосов 148: ↑146 и ↓2+182
Комментарии221

Обзор нововведений в C# 12

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров28K

Уже середина осени, а это значит, что новая версия C# на пороге. Самое время узнать, какие изменения настигнут язык совсем скоро. Хоть количество нововведений в этот раз уступает предыдущим релизам, интересных среди них немало.

Читать далее
Всего голосов 46: ↑46 и ↓0+46
Комментарии63

Аномалии под нагрузкой в PostgreSQL: о чём стоит помнить и с чем надо бороться

Время на прочтение14 мин
Количество просмотров27K

В этой статье мы разберём несколько аномальных случаев высокой нагрузки в СУБД PostgreSQL. Что это такое? Обычно PostgreSQL хорошо показывает себя под нагрузкой и оправдывает ожидания в отношении производительности — она остаётся высокой. Но при определённых профилях нагрузки СУБД может вести себя не так, как мы ожидаем. Это и есть аномалии, на которых мы сосредоточимся в данной статье (для тех, кто предпочитает видео, эта информация доступна в виде записи доклада на HighLoad++).

Наша компания помогает обслуживать мультитерабайтные базы данных в крупных проектах, поэтому мой рассказ об аномалиях основан на реальном опыте промышленной эксплуатации СУБД в Postgres Professional — порой мы сталкиваемся с тем, что СУБД ведёт себя не так, как мы ожидали.

Также в рамках статьи мы рассмотрим следующее:

Читать далее
Всего голосов 67: ↑67 и ↓0+67
Комментарии14

Продать российскую недвижимость без возвращения в РФ: руководство для IT-специалиста

Время на прочтение5 мин
Количество просмотров22K

Я продал свою квартиру в России, не выезжая из-за границы. Не думал, что это возможно, но получилось. Всё в рамках закона.

Моя история – типичная для айтишников в последние месяцы. Правда, без осенних драматических перемен, потому что я выехал раньше, еще летом.

IT-компания, в которой я работаю четвертый год, была создана на деньги зарубежных инвесторов. Весной повисла неизвестность – у компании возникло много проблем из-за санкций. Летом до нас довели информацию: российский офис меняет расположение. Условием сохранения рабочего места был переезд. Затраты на релокацию и съем жилья предлагалось компенсировать.

Пришлось взвешивать и решать. Конечно, постоянный заработок был у меня не единственным источником дохода. Можно было рискнуть остаться только на заказах и разовых проектах, в том числе через Upwork. Но по этому направлению напряжение началось еще с весны – зарубежных заказчиков не устраивал российский или белорусский IP исполнителя.

В общем, я уехал...

Что было дальше - читаем далее
Всего голосов 94: ↑40 и ↓54+6
Комментарии72

React, я люблю тебя, но ты сводишь меня с ума

Время на прочтение13 мин
Количество просмотров19K


Привет, друзья!


Представляю вашему вниманию перевод этой статьи, вызывавшей определенный резонанс в сообществе React-разработчиков.


Дорогой React, мы встречаемся уже почти 10 лет. Мы прошли долгий путь вместе. Но ситуация вышла из-под контроля. Нам нужно поговорить.

Читать дальше →
Всего голосов 34: ↑31 и ↓3+34
Комментарии35

Собеседование в Яндекс: театр абсурда :/

Время на прочтение14 мин
Количество просмотров538K

Привет, Хабр!

В прошлой статье меня знатно разбомбили в комментариях, где-то за дело, где-то я считаю, что нет. Так или иначе, я выжил, и у меня есть чем с вами поделиться >:)

Напомню, что в той статье я рассказывал, каким я вижу идеальное собеседование и что я нашёл компанию, которая так и делает - и я туда прошёл, хотя это был адский отбор. Я, довольный как слон, везде отметил, что я не ищу работу, отовсюду удалился и стал работать работу.

Как вы думаете, что делают рекрутеры, когда видят "Alexandr, NOT OPEN FOR WORK"? Правильно, пишут "Алексей, рассматриваете вариант работать в X?" Я обычно игнорирую это, но тут мне предложили попытать счастья с Яндекс.Лавкой, и я не смог пройти мимо - интересно было, смогу ли я устроиться куда-нибудь, когда введут великий российский файерволл. К тому же за последние 3 года я проходил только два интервью, и мне показалось, что я не в теме, что нынче требуется индустрии. Блин, я оказался и вправду не в теме. И вы, скорей всего, тоже - об этом и статья.

Читать далее
Всего голосов 531: ↑504 и ↓27+610
Комментарии1270

Паттерн Outbox: как не растерять сообщения в микросервисной архитектуре

Время на прочтение8 мин
Количество просмотров77K

Привет! Меня зовут Михаил Боровиков, я тимлид команды, которая отвечает за систему процессинга заказов Lamoda — Orders Management. Эта система, словно «сердце» Lamoda, через которое проходит самый важный для бизнеса шаг — оформление заказа.

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

Для решения этой проблемы мы выбрали паттерн Outbox. И в этой статье я расскажу, что он из себя представляет, как мы его применили, почему пошли по пути at-least-once и не положились на работу одного брокера сообщений.

Читать далее
Всего голосов 28: ↑26 и ↓2+27
Комментарии27

ConfigureAwait: часто задаваемые вопросы

Время на прочтение20 мин
Количество просмотров140K
Привет, Хабр! Представляю вашему вниманию перевод статьи «ConfigureAwait FAQ» автора Стивен Тауб.

image

Async/await добавили в .NET более семи лет назад. Это решение оказало существенное влияние не только на экосистему .NET — оно также находит отражение во многих других языках и фреймворках. На данный момент реализовано множество усовершенствований в .NET с точки зрения дополнительных языковых конструкций, использующих асинхронность, реализованы API-интерфейсы с поддержкой асинхронности, произошли фундаментальные улучшения в инфраструктуре, благодаря которым async/await работает как часы (в особенности, улучшены возможности производительности и диагностики в .NET Core).

ConfigureAwait — один из аспектов async/await, который продолжает вызывать вопросы. Надеюсь, у меня получится ответить на многие из них. Я постараюсь сделать эту статью читаемой от начала до конца, и вместе с тем выполнить ее в стиле ответов на часто задаваемые вопросы (FAQ), чтобы на нее можно было ссылаться в последующем.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии18

7 типов корпоративных программистов

Время на прочтение4 мин
Количество просмотров29K

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

Первый тип - быстрые программисты. С такими сталкиваешься редко. Это эрудированные и увлеченные люди, обычно занимающие высокое положение в иерархии разработчиков (тим лиды или что-то около). Основная особенность - высокая скорость написания кода и способность быстро осваивать новые технологии. Думаю, для корпоративной среды это ценные сотрудники, поскольку, чаще всего скорость в цене. Качество кода у таких программистов не всегда высокое, чаще наоборот. Иногда код сложный. Один раз я просматривал код за одним из таких специалистов и он меня поразил одной особенностью. Это был код высококлассного спеца, но выглядел он как набросок - широкими мазками была сформирована структура, но вот детали были иногда просто не реализованы. Обычно код таких программистов приходится допиливать, но главное преимущество, что код очень быстро появляется и сразу в больших объемах. Работая с таким кодом, чаще всего находишься в растерянности от широты мысли и идей автора.

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

Читать далее
Всего голосов 28: ↑21 и ↓7+19
Комментарии40

Собеседование наоборот: Альфа-Банк, Иннотех, РТ Лабс, ALM Works, Simbirsoft

Время на прочтение23 мин
Количество просмотров13K

В марте на Хабр Карьере завершилась неделя фронтендеров. Карьерная неделя — это что-то вроде дня открытых дверей, который длится всю неделю. В этот раз в битве за сердца фронтендеров сошлись пять компаний: Альфа Банк,  РТ ЛабсALM Works, Иннотех и Simbirsoft

В конце недели специалисты могли задать свои вопросы представителям компаний-работодателей. Мы выбрали самые интересные из тех, что не успели обсудить на круглом столе, и отправили спикерам. 

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

Читать далее
Всего голосов 16: ↑16 и ↓0+16
Комментарии3

Микроэлектроника в России до и после 24.02.2022

Время на прочтение14 мин
Количество просмотров333K

В свете последних событий (для потомков: гуглим Россия, Украина, 24 февраля 2022), приведших к введению санкций против России в сфере высоких технологий и, в частности, микроэлектроники, я часто слышу вопрос: а что дальше? В каком сейчас состоянии российское микроэлектронное производство? Россия сможет создать полностью локальное производство чипов?

Так сможет или нет?
Всего голосов 350: ↑344 и ↓6+428
Комментарии658

Ректальное программирование: основы для практикующих 1С-программистов

Время на прочтение9 мин
Количество просмотров53K

Примечание: хотя статья адресована прежде всего одинэсникам, труЪ-программисты также могут узнать многие используемые методики или взять что-то на вооружение.

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

Читать далее
Всего голосов 88: ↑80 и ↓8+82
Комментарии135

Шпаргалка для собеседования .Net

Время на прочтение9 мин
Количество просмотров104K

Однажды (давно это было) мы с 3-мя коллегами решили на интерес проходить собеседования, вакансии отбирали уровня middle. Занимались этим недели 2, по нескольку собеседований в неделю каждый.

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

Читать далее
Всего голосов 17: ↑11 и ↓6+10
Комментарии0

Ищем дедлок в .NET 5 с помощью анализа дампа

Время на прочтение8 мин
Количество просмотров7.5K

В жизни каждого инженера может произойти ситуация, когда процесс его приложения «завис» и не выполняет ту работу, которую должен. Причины могут быть разные и чтобы узнать их, нужно заглянуть во внутренности процесса и расследовать, что же там происходит. Для этого, можно снять дамп и проанализировать его. Каждый такой случай уникальный, но подходы к анализу дампов — общие. В этой статье я покажу, как расследовал одну из подобных ситуаций и пришёл к неожиданным выводам.

К расследованию
Всего голосов 27: ↑27 и ↓0+27
Комментарии8

Доллары в глазах: сравниваем российские и американские зарплаты

Время на прочтение7 мин
Количество просмотров115K

Задумываясь о релокации, в первую очередь оцениваешь свой текущий уровень дохода и потенциальные карьерные перспективы в новой стране. Вопрос сопоставления зарплат двух стран — сложный и комплексный. Поэтому в этом материале мы не просто собрали данные, но и подробно расписали нюансы, которые нужно учесть для правильных выводов.

Данный материал будет полезен разработчикам, Product Manager-ам, аналитикам, тестировщикам, Data Scientist-ам, HR-ам, опытным специалистам уровня middle+, а также всем-всем-всем мечтающим релоцироваться в США.

Читать далее
Всего голосов 49: ↑45 и ↓4+56
Комментарии254

Тимлиды и разработчики: как программисты ищут работу в 2021 году

Время на прочтение6 мин
Количество просмотров20K

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

Читать далее
Всего голосов 9: ↑8 и ↓1+12
Комментарии27

Язык Go: выбор ORM

Время на прочтение5 мин
Количество просмотров33K
Go получил славу одного из самых простых языков программирования, в числе его плюсов – простота написания и чтения кода, в большинстве случаев более простая поддержка кодовой базы. Рассказываем о нескольких преимуществах Go, благодаря которым мы в SimbirSoft использовали его в ряде высоконагруженных проектов с различными архитектурами, как веб-сервисными, так и микросервисными (SOA).
Читать дальше →
Всего голосов 17: ↑10 и ↓7+3
Комментарии14
1

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность