Pull to refresh
47
0
Павел Егоров @xoposhiy

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

Send message

Async programming in .NET: Best practices

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



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

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

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

Reading time17 min
Views5.5K


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

Читать дальше →
Total votes 47: ↑47 and ↓0+47
Comments13

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

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



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

Улучшая performance review

Reading time22 min
Views62K

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


Читать дальше →
Total votes 43: ↑41 and ↓2+39
Comments28

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

Reading time9 min
Views120K
В этой статье мы поговорим о «магической» константе 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.

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

Обзор LLVM

Reading time13 min
Views85K
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.
Total votes 52: ↑51 and ↓1+50
Comments25

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

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

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


Total votes 21: ↑21 and ↓0+21
Comments4

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

Reading time8 min
Views81K

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

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

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

Reading time3 min
Views44K
Доброго времени!
У нас вышло 2 издание книги Чеда Фаулера «Программист-фанатик»

image

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

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

Reading time5 min
Views9.4K
UPD: ссылка на онлайн-турнир online.qctf.ru

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

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

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

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

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

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

Reading time2 min
Views76K
image

Привет хабр!

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

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

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

Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments10

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

Reading time2 min
Views126K
image

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

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

1) Corona SDK


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

image

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

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

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

Reading time5 min
Views6.3K
image

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

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

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

Reading time6 min
Views14K


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

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

Reading time4 min
Views184K
Почти неделя прошла с исполнения хабрахабру 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 комментария

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

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

Reading time3 min
Views20K
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, включая курсы от Калифорнийского университета в Сан-Диего и НИУ «Высшая школа экономики».
Подробнее о курсах
Total votes 38: ↑38 and ↓0+38
Comments19

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

Reading time5 min
Views59K
image

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

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

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

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

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

Книга «Introduction to Information Retrieval»

Reading time1 min
Views6K
Оказывается, что есть отличная книжка по поисковым технологиям (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
Total votes 53: ↑52 and ↓1+51
Comments12
1

Information

Rating
Does not participate
Location
Екатеринбург, Свердловская обл., Россия
Works in
Registered
Activity