Как стать автором
Обновить
5
0

Пользователь

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

Async/await в C#: концепция, внутреннее устройство, полезные приемы

Время на прочтение24 мин
Количество просмотров211K
Доброго времени суток. В этот раз поговорим на тему, в которой начинал разбираться каждый уважающий себя адепт языка C# — асинхронное программирование с использованием Task или, в простонародье, async/await. Microsoft проделали хорошую работу — ведь для того, чтобы использовать асинхронность в большинстве случаев нужно лишь знание синтаксиса и никаких других подробностей. Но если лезть вглубь, тема довольно объемная и сложная. Ее излагали многие, каждый в своем стиле. Есть очень много классных статей по этой теме, но все равно существует масса заблуждений вокруг нее. Постараемся исправить положение и разжевать материал настолько, насколько это возможно, не жертвуя ни глубиной, ни пониманием.


Читать дальше →
Всего голосов 34: ↑32 и ↓2+30
Комментарии27

О сущностях, DTO, ORM и Lazy Load

Время на прочтение3 мин
Количество просмотров13K
Объектно-ориентированная парадигма — стандарт для прикладного ПО. Реляционные СУБД — стандарт хранения данных в прикладном ПО. Да, можно писать и на Haskell и хранить данные исключительно в ClickHouse. Но речь о мейнстриме.

ORM позволяет натянуть сову на глобус сделать вид, что RDBMS'а нет и данные хранятся в объектной модели, более подходящей для ООП. Остается «маленькая» такая проблемка — эта абстракция, как и многие другие, «течет». Там где в объектной модели ссылка на другой объект в базе данных foreign key и id. В момент материализации сущности мы встаем перед выбором:

  1. Загрузить все и упасть с out of memory / timeout
  2. Явно указать какие зависимости мы хотим загрузить, а какие — нет и нарушить принцип tell don't ask
  3. Загружать зависимости неявно по требованию с помощью Lazy Load и получить проблемы с производительностью где-то в вызываемом коде

Какую-же ногу себе отрезать: левую или правую?

TLDR Lazy Load не так плох, если использовать только для записи и не использовать при чтении. Но все не так просто и есть куча нюансов.
Режь правую!
Всего голосов 30: ↑26 и ↓4+22
Комментарии6

Продвижение стартапа за рубежом: как охватить сотни тысяч англоязычных читателей с помощью Medium

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


Я профессионально занимаюсь темой продвижения российских стартапов за рубежом, и в последнее время одной из главных альтернатив использования традиционных СМИ там стала блог-платформа Medium. За последние полтора мне удалось охватить своими статьями на этом ресурсе более 137 000 читателей. М сегодня я расскажу о том, как добиться максимальной эффективности контента на Medium при минимальных затратах времени и ресурсов – в целом, эти советы применимы в созданию любого англоязычного контента (в том числе и на Хабре).
Читать дальше →
Всего голосов 31: ↑30 и ↓1+29
Комментарии13

Корректный ASP.NET Core

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

Корректный ASP.NET Core


Специально для любителей книг из серии "С++ за 24 часа" решил написать статью про ASP.NET Core.


Если вы раньше не разрабатывали под .NET или под какую-то аналогичную платформу, то смысла заходить под кат для вас нет. А вот если вам интересно узнать что такое IoC, DI, DIP, Interseptors, Middleware, Filters (то есть все то, чем отличается Core от классического .NET), то вам определенно есть смысл нажать на "Читать дальше", так как заниматься разработкой без понимания всего этого явно не корректно.

Читать дальше →
Всего голосов 24: ↑22 и ↓2+20
Комментарии10

Контролируй, изменяй, удаляй: топ-10 докладов DotNext 2018 Moscow

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


Привет, Хабр! Сегодня для .NET-разработчиков у нас традиционный пост по следам DotNext 2018 Moscow: делимся десятью лучшими докладами конференции (по мнению её посетителей). Под катом — их видеозаписи, а также короткие описания и ссылки на презентации.

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

Читать дальше →
Всего голосов 42: ↑41 и ↓1+40
Комментарии1

Асинхронный рассинхрон: антипаттерны в работе с async/await в .NET

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

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



Читать дальше →
Всего голосов 49: ↑48 и ↓1+47
Комментарии64

Микросервисы на Go с помощью Go kit: Введение

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

В этой статье я опишу использование Go kit, набора инструментов и библиотек для создания микросервисов на Go. Эта статья — введение в Go kit. Первая часть в моем блоге, исходный код примеров доступен здесь.

Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии7

Семь бесплатных автоматизированных платформ-задачников для прокачки навыков программирования

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

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


CheckiO


Проект из Украины «Чекио» сфокусирован на Python и JavaScript. Это сборник игровых задач по программированию для тех, кто уже не новичок. Большой упор на геймификацию, симпатичную графику и общение в сообществе. В самом решении задач игрового процесса нет, но есть общий сценарий для прохождения платформы. Полезная фича — смотреть другие решения и подсказывать студентам как их можно улучшить.


CheckiO


leetcode


Сборник задач по программированию на разных языках. Цель сервиса — готовить программистов к заданиям, которые встречаются на интервью. Платформа сразу даёт фидбэк на правильность и эффективность решения, показывает варианты решений и позволяет обсудить их с другими участниками. В платной версии можно пройти автоматизированное интервью в Google, Facebook или Amazon: робот подберёт вопросы, засечёт время и даже поможет оценить.


leetcode

Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии18

Если вы подумываете начать писать на Go, то вот что вам следует знать

Время на прочтение11 мин
Количество просмотров66K
Ваш любимый питомец пишет на Go и получает больше вас, а вы ещё нет? Не теряйте времени… Такая мысль может родиться у читателя от обилия статей по Go. Некоторым даже компании предлагают переучиться на этот язык. И, если вы хоть раз задумывались освоить язык, то я хочу вас предостеречь. Вернее показать странные вещи, попробовать объяснить зачем они и потом вы уже сами сделаете вывод нужен ли вам Go.

Го - это портируемый Си
Поехали...
Всего голосов 79: ↑74 и ↓5+69
Комментарии479

Написать Telegram клиент — легко

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


Чем отличается Telegram от других популярных мессенджеров? Он — открытый!
Другие мессенджеры тоже имеют API, но почему-то именно телеграм известен как наиболее открытый из самых популярных?


Начнем с того, что у Telegram действительно полностью открытый клиентский
код. К сожалению, мы не видим комиты каждый день прямо на GitHub, но у нас есть код под открытой лицензией. Архитектура Telegram подразумевает, что и Bot и API имеет практически такие же методы — https://core.telegram.org/methods.


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

Читать дальше →
Всего голосов 19: ↑16 и ↓3+13
Комментарии11

Деревья выражений в enterprise-разработке

Время на прочтение19 мин
Количество просмотров40K
Для большинства разработчиков использование expression tree ограничивается лямбда-выражениями в LINQ. Зачастую мы вообще не придаем значения тому, как технология работает «под капотом».

В этой статье я продемонстрирую вам продвинутые техники работы с деревьями выражений: устранение дублирования кода в LINQ, кодогенерация, метапрограммирование, транспиляция, автоматизация тестирования.

Вы узнаете, как пользоваться expression tree напрямую, какие подводные камни приготовила технология и как их обойти.



Под катом — видео и текстовая расшифровка моего доклада с DotNext 2018 Piter.
Читать дальше →
Всего голосов 45: ↑45 и ↓0+45
Комментарии11

Создаём простую нейросеть

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


Перевод Making a Simple Neural Network

Что мы будем делать? Мы попробуем создать простую и совсем маленькую нейронную сеть, которую мы объясним и научим что-нибудь различать. При этом не будем вдаваться в историю и математические дебри (такую информацию найти очень легко) — вместо этого постараемся объяснить задачу (не факт, что удастся) вам и самим себе рисунками и кодом.
Начнем.
Всего голосов 41: ↑37 и ↓4+33
Комментарии17

Юнит-тестирование для чайников

Время на прочтение15 мин
Количество просмотров1.1M
Даже если вы никогда в жизни не думали, что занимаетесь тестированием, вы это делаете. Вы собираете свое приложение, нажимаете кнопку и проверяете, соответствует ли полученный результат вашим ожиданиям. Достаточно часто в приложении можно встретить формочки с кнопкой “Test it” или классы с названием TestController или MyServiceTestClient.



То что вы делаете, называется интеграционным тестированием. Современные приложения достаточно сложны и содержат множество зависимостей. Интеграционное тестирование проверяет, что несколько компонентов системы работают вместе правильно.

Оно выполняет свою задачу, но сложно для автоматизации. Как правило, тесты требуют, чтобы вся или почти вся система была развернута и сконфигурирована на машине, на которой они выполняются. Предположим, что вы разрабатываете web-приложение с UI и веб-сервисами. Минимальная комплектация, которая вам потребуется: браузер, веб-сервер, правильно настроенные веб-сервисы и база данных. На практике все еще сложнее. Разворачивать всё это на билд-сервере и всех машинах разработчиков?

We need to go deeper
Всего голосов 70: ↑63 и ↓7+56
Комментарии65

Почему нужно перестать использовать Git rebase

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


После нескольких лет работы с Git я обнаружил, что постепенно стал переходить на всё более сложные Git-команды в рабочем процессе. Вскоре после того как я открыл для себя Git rebase, я тоже быстро внедрил эту команду в повседневные задачи. Те, кто знаком с этой процедурой, знают, насколько это мощный инструмент и какой это соблазн — постоянно им пользоваться. Но вскоре оказалось, что rebase влечёт за собой ряд неочевидных на первый взгляд трудностей. Но прежде чем обсудить их, хочу быстро рассмотреть различия между merge и rebase.

Читать дальше →
Всего голосов 138: ↑103 и ↓35+68
Комментарии381

Чем похожи крутые нетворкеры и выступающие публично? 5 качеств, которым можно позавидовать

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


Выступать перед незнакомыми людьми, пытаясь увлечь их своими идеями — для многих это труднейшая задача. Страшно, жуть — «а что они подумают», «это неприлично», «что я им скажу». Но есть сэнсеи, которые с ходу прекрасно находят общий язык с самыми разными людьми и интересно выступают перед любой аудиторией. Один из таких мастеров — Ирина Трипапина, руководитель по международному развитию MyTarget. Благодаря её таланту в myTarget пришли очень крупные клиенты из нескольких стран. Под катом — советы и интервью с Ириной, в котором она рассказывает о главных качествах, помогающих выступать и увлекать людей. Передаем ей слово.

Всего голосов 44: ↑30 и ↓14+16
Комментарии9

Параллелизм против многопоточности против асинхронного программирования: разъяснение

Время на прочтение4 мин
Количество просмотров132K
Хочу представить вашему вниманию перевод статьи Concurrency vs Multi-threading vs Asynchronous Programming: Explained.

В последние время, я выступал на мероприятиях и отвечал на вопрос аудитории между моими выступлениями о Асинхронном программировании, я обнаружил что некоторые люди путали многопоточное и асинхронное программирование, а некоторые говорили, что это одно и тоже. Итак, я решил разъяснить эти термины и добавить еще одно понятие Параллелизм. Здесь есть две концепции и обе они совершенно разные, первая синхронное и асинхронное программирование и вторая – однопоточные и многопоточные приложения. Каждая программная модель (синхронная или асинхронная) может работать в однопоточной и многопоточной среде. Давайте обсудим их подробно.
Читать дальше →
Всего голосов 35: ↑24 и ↓11+13
Комментарии59

Легальный вывод средств с Upwork в РФ

Время на прочтение8 мин
Количество просмотров66K
На Хабре уже написано достаточно много статьей по теме, в частности:


В ответ на повторяющиеся просьбы написать статью, в которой:

  • разбросанные по разным статьям крупицы будут собранны в единое целое
  • всевозможные противоречия будут устранены
  • все сведения будут иметь актуальный характер
  • будут учтены пожелания такие как «а можно с картинками? :)»

родилось следующее руководство.
Всего голосов 78: ↑70 и ↓8+62
Комментарии383

Как я был разработчиком, а теперь тимлид

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

enter image description here


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

Читать дальше →
Всего голосов 158: ↑139 и ↓19+120
Комментарии164

Как привести на сайт посетителей честными способами и сэкономить: дайджест полезных материалов для начинающих

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


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

Я собрал небольшой дайджест, в котором собраны ссылки на практические материалы, в которых рассказывается о том, как действенно привлечь трафик на свой сайт и после этого повысить его конверсию, а также каких ошибок стоит избегать в процессе работ.
Читать дальше →
Всего голосов 20: ↑13 и ↓7+6
Комментарии0

7 вредных советов проектировщику REST API

Время на прочтение3 мин
Количество просмотров19K
Адаптация статьи REST WORST PRACTICES, © Jacob Kaplan-Moss. Статья написана применительно к Django, но информация будет актуальна для широкого круга специалистов.

Думаю что лучший способ понять как нужно делать, изучить как делать НЕ нужно. Представляю вашему вниманию вредные советы проектировщикам REST API.
Читать дальше →
Всего голосов 30: ↑26 и ↓4+22
Комментарии20

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность