Как стать автором
Обновить
1
0
Дмитрий Митин @Hesser

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

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

Сказка про For vs Foreach

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


Ходят слухи, что foreach быстрее for. А ещё ходят слухи, что for быстрее foreach. Пора разобраться, что быстрее!

Читать далее
Всего голосов 42: ↑40 и ↓2+46
Комментарии21

Инструменты анализа эффективности работы приложения. PerfView

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

Иногда приходится разбираться, почему .NET приложение работает "плохо". Не так, как мы ожидали. Тупит, медленно работает, зависает, запросы «не исполняются», утекает память или потребляется слишком много CPU.

Есть множество способов, как разбираться в таких ситуациях. Сегодня мы немного обсудим, что это за способы. Когда и какой способ нужно использовать. И более детально рассмотрим один из инструментов: PerfView.

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

Знай сложности алгоритмов

Время на прочтение2 мин
Количество просмотров1M
Эта статья рассказывает о времени выполнения и о расходе памяти большинства алгоритмов используемых в информатике. В прошлом, когда я готовился к прохождению собеседования я потратил много времени исследуя интернет для поиска информации о лучшем, среднем и худшем случае работы алгоритмов поиска и сортировки, чтобы заданный вопрос на собеседовании не поставил меня в тупик. За последние несколько лет я проходил интервью в нескольких стартапах из Силиконовой долины, а также в некоторых крупных компаниях таких как Yahoo, eBay, LinkedIn и Google и каждый раз, когда я готовился к интервью, я подумал: «Почему никто не создал хорошую шпаргалку по асимптотической сложности алгоритмов? ». Чтобы сохранить ваше время я создал такую шпаргалку. Наслаждайтесь!
Читать дальше →
Всего голосов 312: ↑296 и ↓16+280
Комментарии99

Декларативное построение диаграмм

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

Код может быть красивым сам по себе, но графическое представление не помешает.

Диаграммы, СТАНОВИСЬ!
Всего голосов 18: ↑17 и ↓1+23
Комментарии19

4 важных нововведения в ES2022

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

ECMAScript 2022 - это новый стандарт JavaScript, который будет выпущен в июне 2022 года. Давайте посмотрим на самые важные изменения, которые, наиболее вероятно, должны появиться в новом релизе, так как они достигли уже 4-ой, последней стадии принятия новвоведений в спецификации EcmaScript (TC39).

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

Работа с кучей в Rust

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

Продолжаем изучать Rust нетрадиционным способом. В этом раз будем разбираться в нюансах работы с кучей, для их понимания понадобятся: сырые указатели, выделение памяти в куче, размер экземпляра типа, запись значений в кучу и чтение из нее, const и static, unit-like структуры, переопределение глобального аллокатора.


Это, определенно, overkill для одной статьи, а вот половину списка вполне можно освоить.


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

Конспектируем Книгу Rust:: Владение

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

Перед вами краткое профессиональное описание особенностей языка Rust для профессионалов.


Что это такое?
  • краткое — информации будет гораздо меньше, чем в Книге (The Rust Programming Language)
  • профессиональное — информации будет гораздо больше, чем в Книге;
  • описание особенностей — фокусируемся на отличиях Rust от других языков;
  • языка — описывается именно язык, а не установка средств разработки, управление пакетами и прочий инструментарий;
  • для профессионалов — подразумевается, что читатель имеет существенный опыт в разработке ПО.

Чего здесь НЕ будет


  • Не будет агитации за Rust
  • Не будет легко. Для освоения потребуется неделя-другая вдумчивого чтения по часу в день, с тщательным разбором примеров, как-то так

Содержание


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

Конспектируем Книгу Rust:: Времена и функции

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

После главы 4 (было здесь) переходим к 10.3. Валидация ссылок при помощи времён жизни. Ну а куда еще… такие нынче времена.

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

Конспектируем Книгу Rust:: Времена и структуры

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

Продолжаем работать с 10.3.


КМБ.- Двойная жизнь.- Восстание мертвецов.- Ошибка в документации.- Ужасающие подробности из The Rustonomicon.- Архитектурные озарения.- Развязка.


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

Ассемблер RISC-V для начинающих

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

Если вы не знаете ни одного ассемблера, или, возможно, не имеете большого опыта кодинга как такового, то ассемблер RISC-V может быть одним из лучших вариантов для того, чтобы погрузиться в эту тему. Конечно, материалов по ассемблеру x86 гораздо больше. Больше людей, которые могут в этом помочь. Но x86 - это чудовище, имеющее более 1500 различных инструкций.

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

Если вам необходим хороший старт, и вы не знаете ничего о микропроцессорах, вы можете прочесть мою статью "Как работает современный микропроцессор?" (How Does a Modern Microprocessor Work?).

Если вы хотите чего-нибудь простого и весёлого, можете начать с различных игр, в основе которых лежит программирование на ассемблере: Learn Assembly Programming the Fun Way.

Другим может понравиться ретропроцессор, такой, как 6502, использовавшийся в Commodore 64. Но проблема в том, что он окончательно устарел. При его разработке не учитывались реалии сегодняшнего дня.

Большой плюс RISC-V состоит в том, что он обладает современным и простым набором команд, спроектированным с учётом современных требований, таких как медленный доступ к памяти, использование предсказателя переходов, суперскалярного out-of-order выполнения команд и т.д.

Если вам интересно всё это, прочтите: Why Is Apple’s M1 Chip So Fast?

Перед тем, как мы начнём, можете распечатать это: James Zhu RISC-V Reference.

Читать далее
Всего голосов 35: ↑34 и ↓1+50
Комментарии32

Визуализация данных с помощью веб-фреймворка Dash

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

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

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

За что я люблю ассемблер?

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

Этой статье уже почти 3 года. Однако сегодня я решил подредактировать её, дополнить и выложить, наконец, на Хабр.

Читать далее...
Всего голосов 61: ↑57 и ↓4+71
Комментарии155

Базовые задачи на Promise в JavaScript

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

Promise - специальный объект, который хранит своё состояние и используется для обработки результатов асинхронных операций.

Что будет в статье: основные задачи на Promsie, которые часто спрашивают на собеседованиях.

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

О работе ПК на примере Windows 10 и клавиатуры ч. 1

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

Меня зовут Андрей Артемьев, я работаю в Microsoft над ядром ОС Windows 10, ранее я работал над Windows 10x (WCOS), XBox, Windows Phone и Microsoft Edge. Я хочу популярно в образовательных целях рассказать о том как работает компьютер на примере клавиатурного ввода и Windows 10. Данный цикл статей рассчитан в первую очередь на студентов технических специальностей. Мы рассмотрим какой путь проходит информация о нажатой клавише от клавиатуры до отображения в Notepad.exe. В виду обширности и междисциплинарности темы в статьях могут быть неточности, о которых сообщайте в комментариях. Какая-то информация может быть устаревшей в виду скорости с которой развивается Windows.
Читать дальше →
Всего голосов 69: ↑62 и ↓7+71
Комментарии412

Начало работы с MongoDB и Redis на Rust

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

В этой статье будет показано как создать Rust бэкэнд, который использует MongoDB, документо-ориентированную БД, для хранения данных и Redis для кэширования, ограничения количества HTTP запросов и нотификаций пользователя. Для большей наглядности созданное приложение также будет предоставлять REST API. В итоге будет получена следующая архитектура:


architecture


MongoDB является хранилищем, в то время как Redis используется для следующего:


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

Python, исследование данных и выборы: часть 1

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

Серия из 5 постов для начинающих представляет собой «ремикс» первой главы книги 2015 года под названием «Clojure для исследования данных» (Clojure for Data Science). Автор книги, Генри Гарнер, любезно дал согласие на использование материалов книги для данного ремикса с использованием языка Python.

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

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

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

Паровой насос

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


<< До этого: Вес воздуха

На заре XVIII века Томас Ньюкомен придумал первую полезную паровую машину, которая занималась откачкой воды из шахт. Его машина конденсировала пар, получая энергию из веса воздуха. Её действие было основано на научных знаниях, полученных Торричелли, Паскалем, фон Герике и другими в предыдущем столетии. Так наука о давлении завершила полный круг – вопросы, поставленные при создании шахтных насосов, после их решения помогли разработать улучшенный насос. В данной истории мы ещё не раз увидим это взаимное переплетение полезных механизмов и философских вопросов.

Однако инженерная мысль, шедшая от Торричелли до Ньюкомена, двигалась не прямыми путями. Впрыск горячего пара из внешнего котла для организации движения поршня был совершенно неочевидным способом эксплуатации веса воздуха. Сначала изобретатели испробовали более простой подход – сжигать топливо в самом поршне.
Читать дальше →
Всего голосов 18: ↑16 и ↓2+23
Комментарии9

Объяснение легковесных потоков в 200 строк на Rust

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

Объяснение легковесных потоков в 200 строк на Rust


Легковесные потоки (ligthweight threads, coroutines, корутины, green threads) являются очень мощным механизмом в современных языках программирования. В этой статье Carl Fredrik Samson попытался реализовать рантайм для легковесных потоков на Раст, попутно объясняя, как они устроены "под капотом".


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


Переводил для себя большей частью. Обо всех замечаниях пишите — оперативно исправлю. Старался переводить близко к тексту, но в некоторых местах переформулировал, чтобы читалось легче и было понятнее.
Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии8

Как «активный гражданин» приучает людей к фишингу

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

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

Читать дальше →
Всего голосов 79: ↑73 и ↓6+86
Комментарии51

Запускаем однофайловые программы в Java 11 без компилирования

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


Пусть исходный файл HelloUniverse.java содержит определение класса и статичный метод main, который выводит в терминал одну строку текста:

public class HelloUniverse{
      public static void main(String[] args) { 
            System.out.println("Hello InfoQ Universe");
      }
}

Обычно для запуска этого класса требуется сначала скомпилировать его с помощью Java-компилятора (javac), который создаст файл HelloUniverse.class:

mohamed_taman$ javac HelloUniverse.java

Затем нужно с помощью команды виртуальной машины Java (интерпретатора) запустить получившийся файл:

mohamed_taman$ java HelloUniverse
Hello InfoQ Universe

Тогда сначала запустится виртуалка, которая загрузит класс и исполнит код.

А если вам нужно быстро проверить фрагмент кода? Или вы новичок в Java (в данном случае это ключевой момент) и хотите поэкспериментировать с языком? Описанные два этапа могут всё усложнить.

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

Информация

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