Как стать автором
Обновить
47
0
Павел Егоров @xoposhiy

Учу программировать. Программирую. Учусь.

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

Async programming in .NET: Best practices

Время на прочтение24 мин
Количество просмотров36K
Появление async/await в C# привело к пересмотру того, как писать простой и корректный параллельный код. Зачастую, используя асинхронное программирование, программисты не только не решают проблемы, которые были с потоками, но и привносят новые. Дедлоки и рейсы никуда не пропадают — их просто становится труднее диагностировать.



Дмитрий Иванов — Software Analysis TeamLead в Huawei, в прошлом техлид JetBrains Rider и разработчик ядра ReSharper: структур данных, кэшей, многопоточности, регулярный спикер конференции DotNext.

Под катом — видеозапись и текстовая расшифровка доклада Дмитрия с конференции DotNext 2019 Piter.
Всего голосов 30: ↑30 и ↓0+30
Комментарии6

ICFP Contest 2020 от идеи до воплощения. Как организовать контест и выжить

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


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

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

[ В закладки ] Алгоритмы и структуры данных в ядре Linux, Chromium и не только

Время на прочтение9 мин
Количество просмотров85K
Многие студенты, впервые сталкиваясь с описанием какой-нибудь хитроумной штуки, вроде алгоритма Кнута – Морриса – Пратта или красно-чёрных деревьев, тут же задаются вопросами: «К чему такие сложности? И это, кроме авторов учебников, кому-нибудь нужно?». Лучший способ доказать пользу алгоритмов – это примеры из жизни. Причём, в идеале – конкретные примеры применения широко известных алгоритмов в современных, повсеместно используемых, программных продуктах.



Посмотрим, что можно обнаружить в коде ядра Linux, браузера Chromium и ещё в некоторых проектах.
Читать дальше →
Всего голосов 158: ↑149 и ↓9+140
Комментарии15

Улучшая performance review

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

Про то, как в Avito работает performance review, я очень много раз рассказывал внутри компании, а этой весной ещё и на двух конференциях — TeamLeadConf и CodeFest. Мы активно вкладываемся в доработку процесса, проводим много экспериментов и собираем кучу полезных данных, поэтому каждое новое выступление стабильно включает в себя какой-то новый контент. Цель этой статьи — не выдать вам готовое коробочное решение, а поделиться всеми практиками и инсайтами, которые мы обнаружили на своем пути.


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

«Магическая константа» 0x5f3759df

Время на прочтение9 мин
Количество просмотров120K
В этой статье мы поговорим о «магической» константе 0x5f3759df, лежащей в основе элегантного алгоритмического трюка для быстрого вычисления обратного квадратного корня.

Вот полная реализация этого алгоритма:

float FastInvSqrt(float x) {
  float xhalf = 0.5f * x;
  int i = *(int*)&x;  // представим биты float в виде целого числа
  i = 0x5f3759df - (i >> 1);  // какого черта здесь происходит ?
  x = *(float*)&i;
  x = x*(1.5f-(xhalf*x*x));
  return x;
}

Этот код вычисляет некоторое (достаточно неплохое) приближение для формулы

image

Сегодня данная реализация уже хорошо известна, и стала она такой после появления в коде игры Quake III Arena в 2005 году. Её создание когда-то приписывали Джону Кармаку, но выяснилось, что корни уходят намного дальше – к Ardent Computer, где в середине 80-ых её написал Грег Уолш. Конкретно та версия кода, которая показана выше (с забавными комментариями), действительно из кода Quake.
В этой статье мы попробуем разобраться с данным хаком, математически вывести эту самую константу и попробовать обобщить данный метод для вычисления произвольных степеней от -1 до 1.

Да, понадобится немного математики, но школьного курса будет более, чем достаточно.
Читать дальше →
Всего голосов 212: ↑210 и ↓2+208
Комментарии188

Обзор LLVM

Время на прочтение13 мин
Количество просмотров85K
LLVM (Low Level Virtual Machine) — это универсальная система анализа, трансформации и оптимизации программ или, как её называют разработчики, «compiler infrastucture».

LLVM — не просто очередной академический проект. Его история началась в 2000 году в Университете Иллинойса, а теперь LLVM используют такие гиганты индустрии как Apple и Adobe. В частности, на LLVM основана подсистема OpenGL в MacOS X 10.5, а iPhone SDK использует GCC с бэкэндом на LLVM. Apple является одним из основных спонсоров проекта, а вдохновитель LLVM — Крис Латтнер — теперь работает в Apple.

В основе LLVM лежит промежуточное представление кода (intermediate representation, IR), над которым можно производить трансформации во время компиляции, компоновки (linking) и выполнения. Из этого представления генерируется оптимизированный машинный код для целого ряда платформ, как статически, так и динамически (JIT-компиляция). LLVM поддерживает генерацию кода для x86, x86-64, ARM, PowerPC, SPARC, MIPS, IA-64, Alpha.

LLVM написана на C++ и портирована на большинство *nix-систем и Windows. Система имеет модульную структуру и может расширяться дополнительными алгоритмами трансформации (compiler passes) и кодогенераторами для новых аппаратных платформ. Пользовательский фронтенд, как правило, линкуется с LLVM и использует C++ API для генерации кода и его преобразований. Однако LLVM включает в себя и standalone утилиты.

Для тех, кто не без оснований считает C++ не лучшим языком для написания компиляторов, с недавних пор в LLVM включена обертка API для OCaml.

Чтобы понять, что можно сделать с помощью LLVM, и на каком уровне придётся работать, давайте разберёмся,
что из себя представляет LLVM IR.
Всего голосов 52: ↑51 и ↓1+50
Комментарии25

ICFP Contest 2017 — проверка на прочность для настоящих разработчиков

Время на прочтение5 мин
Количество просмотров7.7K
ICFPC — ежегодное соревнование для программистов. Оно проходит в онлайне и длится 72 часа. ICFPC 2017 начнётся в пятницу 4 августа в 12:00 (UTC) и закончится в понедельник.

Я расскажу, почему нельзя пропускать ICFPC и дам серию советов. Освободи следующие выходные, собери команду и участвуй!


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

Простые опыты с ребенком дома

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

Пример очень неудачного опыта, пояснение в разделе “о технике безопасности”

К моему предыдущему посту было множество комментариев по части экспериментов с детьми. Тогда я пообещал написать отдельный пост о простых увлекательных опытах. Сейчас я это обещание выполняю. Данная статья будет вводной, в ней я расскажу только о самых популярных и известных экспериментах которые легко выполнить дома с ребенком.
Читать дальше →
Всего голосов 69: ↑66 и ↓3+63
Комментарии164

Программист-фанатик

Время на прочтение3 мин
Количество просмотров44K
Доброго времени!
У нас вышло 2 издание книги Чеда Фаулера «Программист-фанатик»

image

Книга посвящена тому, как реализовать себя и сделать карьеру. Самореализация и удача редко приходят случайно. Они требуют вдумчивости, целеустремленности, действия и готовности резко сменить курс, если потребуется. В этой книге описывается стратегия, позволяющая спланиро-вать и реализовать совершенную с точки зрения успеха карьеру (и как следствие — жизнь) разработчика программного обеспечения.В этой книге вы не найдете описания конкретных технологий, алгоритмов и языков программирования – ценность ее не в этом. Она представляет собой сборник практических советов и рекомендаций, касающихся ситуаций, с которыми порой сталкивается любой разработчик: отсутствие мотивации, выбор приоритетов, психология программирования, отношения с руководством и коллегами и многих других. Подобные знания обычно приходят лишь в результате многолетнего опыта реальной работы. По большому счёту перед вами – ярко и увлекательно написанное руководство, которое поможет быстро сделать карьеру в индустрии разработки ПО любому, кто поставил себе такую цель.
Читать дальше →
Всего голосов 28: ↑25 и ↓3+22
Комментарии20

QCTF Starter: компьютерная безопасность на четверых или как мы сделали турнир для новичков в 19 городах одновременно

Время на прочтение5 мин
Количество просмотров9.4K
UPD: ссылка на онлайн-турнир online.qctf.ru

CTF-соревнования знакомы многим, ещё больше людей о них хотя бы раз слышали. Про них тут хорошо написано. Чтобы участвовать в серьёзных CTF-турнирах нужна неслабая подготовка, но мало кто знает, как и где её получить. Мы решили исправить это, а именно — провести массовые соревнования по компьютерной безопасности для новичков. И назвали их QCTF Starter. Возможно, для участников это станет первой ступенькой на пути к профессиональным CTF-турнирам.

QCTF Starter прошёл вчера на площадках по всей стране, а с понедельника (10:00 по МСК) мы запустим онлайн-версию по мотивам соревнования для тех, кто не смог присоединиться к нам в оффлайне. Ссылка появится на сайте прямо перед стартом тура. Мы обязательно напомним вам о начале игры, если вы оставите тут свои координаты. На онлайн-зеркало приглашаем всех желающих.

В этом году нам удалось сделать почти невозможное: собрать 208 команд в 19 городах на 22 площадках. Одна даже находилась за пределами России, в Минске. Но мы неумолимы и надеемся, что в следующем году площадок станет ещё больше.

Благодаря энтузиастам, согласившимся взять на себя организацию соревнований в своих городах, мы смогли набрать такое большое количество команд (QCTF Starter стал самым большим очным CTF-соревнованием, когда-либо проводившимся в России). Как нам это удалось и что получилось в итоге, читайте под катом.

image
(Фото сделано участником соревнования QCTF Starter в Екатеринбурге)
Читать дальше →
Всего голосов 15: ↑13 и ↓2+11
Комментарии3

10 простых задач на c# с подвохом

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

Привет хабр!

Цель этой статьи корыстная, а именно получения инвайта. Но о чём написать, чтобы материал был индивидуальным и не похожим на другие публикации, в которых зачастую слова просто меняются местами. Мне хотелось придумать свою нишу, и вот как-то на собеседовании я получил задание, где спрашивалось, через какой символ перечисляются интерфейсы при наследовании, ”:” или “,”. Конечно искушенные хаброжители с такими примерами даже под кат не зайдут, поэтому я развил эту тему и получились “задачи с подвохом”, которые малы и решаются без IDE. Именно задач по моему мнению, на ресурсе представлено мало, а заданий на синтаксис я вообще не встречал.
Читать дальше →
Всего голосов 34: ↑17 и ↓170
Комментарии31

Как провести 300 собеседований за месяц

Время на прочтение2 мин
Количество просмотров23K
Совсем недавно мы начали рассматривать в том числе и различные управленческие хитрости, на которые следует обращать внимание руководителям ИТ-отделов. Сегодня мы продолжим работу в этом направлении и кратко проанализируем заметку компании Triplebyte о том, как им удалось провести 300 собеседований за один месяц и остаться в живых.

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

12 лучших фреймворков для разработки приложений под Android

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

Android – прекрасная платформа для мобильных устройств, она работает на миллионах смартфонов в 200 странах по всему миру. В этом посте я собрал несколько популярных фреймворков для разработки приложений под Android, из числа популярных среди разработчиков.

Смысл фреймворка – увеличить производительность, уменьшив затраты усилий на разработку. В идеале они экономят разработчикам время на то, чтобы заняться реально важными при разработке приложения вопросами.

1) Corona SDK


Богатый инструментарий для создания игр и приложений за рекордно короткое время

image

Обеспечивает возможность очень быстрой разработки. Элегантный API упрощает добавление сложных функций, технологический процесс позволяет сразу же видеть внесённые изменения, сама же разработка идёт на Lua – простом для изучения языке. Всё это приводит к рекордной скорости разработки.

Самый популярный фреймворк, часто используется разработчиками игр, но подходит для любого рода приложений. Уже более миллиона разработчиков пользуются API, поддержкой нативного интерфейса, встроенным движком и рекламной платформой.
Читать дальше →
Всего голосов 31: ↑21 и ↓10+11
Комментарии24

5 ошибок при обратной связи с пользователями

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

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

На стартовом этапе нового проекта, особенно если управление тем или иным продуктом осуществляется не так давно, возникает большой соблазн узнать мнение всех пользователей по тому или иному вопросу. Но чаще всего такая поспешность является ошибочной. Кроме спешки большинство специалистов, занятых продвижением тех или иных продуктов, допускают 5 основных ошибок, которые повторяются вновь и вновь. Наличие множества сервисов обратной связи делает получение информации от пользователей крайне простым процессом – однако не стоит увлекаться ее получением по любому поводу. Мы подготовили для вас пять советов, связанных с использованием обратной связи от потенциальных клиентов.
Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Комментарии1

DevCon Digest #3. Погружаемся в Visual Studio

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


Всем привет! Рады представить вам третью подборку тематичных материалов по темам живого кода конференции DevCon. В предыдущих двух выпусках мы погружались в мир .NET и ASP.NET, а сегодня будем разбираться с новостями вокруг Visual Studio 2015 и материалами по организации процесса разработки.
Читать дальше →
Всего голосов 18: ↑13 и ↓5+8
Комментарии0

Статистика Хабрахабра

Время на прочтение4 мин
Количество просмотров184K
Почти неделя прошла с исполнения хабрахабру 6 лет. Было бы очень интересно посмотреть на графики роста показателей сайта. Т.к. стандартная статистика малоинформативная, решено было собрать всю информацию своими руками и проанализировать. И так, почти неделя парсинга и сбора информации и получены следующие интересные данные(скрытые/удаленные посты/пользователи и их комментарии не учтены):
  • Больше всего постов написал alizar — 4298, рекорд 12 постов в день поставлен 18 октября 2006
  • Больше всего комментариев написал VolCh — 19323, установив личный рекорд 27 июля 2011 года в количестве 140 комментариев.
  • Больше всех опубликовал постов в день freetonik —21 топик 26 августа 2007
  • Максимальная активность хабры в день — опубликовано 105 топиков: 18 февраля 2010 и 22 июня 2008 года.
  • Максимальная активность хабры в месяц — опубликовано 2055 топиков в марте 2010
  • Среднее значение кармы: +7,83
  • Средний рейтинг топика: +24,75
  • Всего комментариев: 3 703 022.
  • Средний рейтинг комментария: +0,98
  • Максимальное количество оставленных комментариев — 1 июля 2011 в количестве 4936 штук.
  • 25% из всех опубликованных топиков были перенесены в черновики
  • Самый комментируемый топик habrahabr.ru/post/123157 собрал 2252 комментария

Красивые графики, методы измерения, база с полученными данными, «хаброаномалии» — все это под катом.
Читать дальше →
Всего голосов 230: ↑224 и ↓6+218
Комментарии134

Computer Science Center запускает MOOCs по основам программирования

Время на прочтение3 мин
Количество просмотров20K
Computer Science Center (образовательный проект ШАД Яндекса, компании JetBrains и Сomputer Science клуба при ПОМИ РАН), открывает запись на массовые открытые онлайн-курсы (MOOC) по основам программирования.

С 15 сентября 2014 года можно будет пройти следующие онлайн-курсы, подготовленные преподавателями CS центра:
  1. Алгоритмы и структуры данных (А.С. Куликов)
  2. Введение в архитектуру ЭВМ. Элементы операционных систем (К.В. Кринкин)
  3. Программирование на языке C++ (А.В. Смаль)


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

Для создания и размещения онлайн-курсов СS Center использовал образовательный плеер Stepic. Проект Stepic существует с 2013 года и выделяется среди других образовательных платформ возможностями для автоматической проверки задач на программирование, например, безопасное исполнение пользовательского кода в песочнице (C++, Java, Python, Haskell, Octave), а также генерация и проверка рандомизированных датасетов. Cистема проверки задач Stepic была использована в ряде курсов на платформе Coursera, включая курсы от Калифорнийского университета в Сан-Диего и НИУ «Высшая школа экономики».
Подробнее о курсах
Всего голосов 38: ↑38 и ↓0+38
Комментарии19

IText: вытаскиваем текст из PDF

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

Доброе время суток, хабровчане!

Недавно столкнулся с задачей: научиться вытаскивать текст из PDF запоминая его позицию на странице. И, конечно же, в несложной поначалу задаче вылезли подводные камни. Как же в итоге получилось это решить? Ответ под катом.
Читать дальше →
Всего голосов 21: ↑17 и ↓4+13
Комментарии7

MVC 5 Owin авторизация на примере Вконтакте

Время на прочтение3 мин
Количество просмотров29K
Не так давно вышел mvc 5 и одним из ключевых изменений является система авторизации. При создании «пустого» mvc 5 проекта есть возможность подключить авторизацию для Facebook, Google, Twitter и Microsoft аккаунтов. Я тут же полез разбираться с тем как это все работает и результатом стал «middleware» модуль для сети Вконтакте. Его можно поставить через nuget пакеты поискав «Duke.Owin.VkontakteMiddleware» и посмотреть исходники: github.com/DukeNuken/Duke.Owin.VkontakteMiddleware

В интернете есть много статей о owin авторизации и проекте katana с которыми можно ознакомится и даже скачать исходники.
Читать дальше →
Всего голосов 12: ↑9 и ↓3+6
Комментарии1

Книга «Introduction to Information Retrieval»

Время на прочтение1 мин
Количество просмотров6K
Оказывается, что есть отличная книжка по поисковым технологиям (Information Retrieval) от Cambridge University Press. Html и pdf версии лежат в свободном доступе. Работа над ней то ли еще ведется, то ли недавно закончена (последнее обновление — 7 апреля 2009). Книжка написана отличным английским языком, есть хорошие упражнения. В общем, рекомендую всем кому интересно как устроены Google и Yandex!

Html-версия — nlp.stanford.edu/IR-book/html/htmledition/irbook.html
PDF-версия (очень красивая, рекомендую!) — nlp.stanford.edu/IR-book/pdf/irbookonlinereading.pdf

А вот про Information Retrieval в википедии — en.wikipedia.org/wiki/Information_retrieval
Всего голосов 53: ↑52 и ↓1+51
Комментарии12
1

Информация

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