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

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

О Thread и ThreadPool в .NET подробно (часть 1)

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

Эта текст покрывает ответы на некоторые совсем базовые вопросы и вместе с тем сразу погружает в проблематику получения ответа на вопрос: "как работать лучше? однопоточно, многопоточно или многопоточно, но на ThreadPool?". Ответ на этот вопрос может изначально показаться очень простым и понятным, однако реальность совершенно иная: всё как и везде сильно зависит от ситуации: от типа задачи, от её размера, от прочих условий, которые так просто в голову сами собой не придут.

А потому мы пройдёмся в первую очередь по IO-/CPU-bound операциям, стоимости создания потока, базовым основам работы пула потоков (но только основы), а далее -- углубимся в анализ чёрного ящика: от чего зависит производительность пула потоков? Каков объём работы приемлим для того чтобы в него планировать?

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

Также отмечу, что материал постепенно переходит от начального уровня сложности 🥤 через ⚠️ средний уровень к ☠️ высокому, о чём вы сможете узнать по пиктограммам.

Погрузиться в знания
Всего голосов 36: ↑35 и ↓1 +34
Комментарии 11

О Thread и ThreadPool в .NET подробно (часть 2)

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

В предыдущей публикации мы рассмотрели некоторые базовые вопросы относительно потоков и пулов потоков и готовы двигаться дальше. Давайте проведём эксперимент и найдём правильный объём работы для пула потоков. Чтобы его издержки не давлели над объёмом полезной работы

⚠️ Материал средней сложности

С другой стороны, показанные примеры доказывают, что на производительность сильно влияет гранулярность элементов работы. Имеется ввиду, конечно же, длительность работы делегатов. Чтобы достичь хороших показателей, гранулярность работы не может быть абы какой: она должна быть правильной. И помимо планирования задач на ThreadPool, планировать их можно также как через TPL так и через какой-либо свой собственный пул потоков. Например, если взять обычный ThreadPool, то можно примерно измерить издержки алгоритмов ThreadPool в тактах Time Stamp Counter счётчика времени (можно, конечно и в чём-то более привычном типа микросекунд, но там на многих сценариях вполне могут быть нули)

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

7 многообещающих расширений VS Code 2021 года

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

К старту курса по Fullstack-разработке на Python делимся подборкой расширений Visual Studio Code, среди которых вы найдёте генератор документации для кода JavaScript на базе ИИ и лёгкий, простой клиент REST API. За подробностями приглашаем под кат.

Читать далее
Всего голосов 22: ↑18 и ↓4 +14
Комментарии 5

Улучшение Visual Studio Code для новичков

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

VSCode — самый популярный редактор кода среди веб-разработчиков. Вы можете использовать его с нуля, однако со временем его базовых функций станет недостаточно. Рассказываю, как сам докрутил этот редактор под свои потребности.

Читать далее
Всего голосов 25: ↑18 и ↓7 +11
Комментарии 29

Мой опыт собеседования в Amazon

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

О чём эта статья

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

Это история о моем опыте собеседования в Амазоне, почему мне в целом не понравилось по сравнению с другими FAANG. Так же тут будут ответы на “а что конкретно спрашивали на интервью, какие были задачки, что на систем дизайне было”, потому что мне не дали подписать NDA, все с пруфами, скринами и прочее.

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

Начало, предложение от Amazon

В один прекрасный день 6 сентября, мне пришел такой сообщение в Линкедин.

Читать далее
Всего голосов 93: ↑90 и ↓3 +87
Комментарии 177

Вилкой в глаз, или ForkJoinPool в Java

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

Всем привет. Сегодня я хотел бы поговорить о многопоточности. Вернее, не о многопоточности вообще, а о таком её механизме как ForkJoinPool. Нельзя сказать, что данная технология является новой (она появилась ещё в Java 7), или что в сети нельзя найти материалы по данной теме. Информации хватает. Например, для глубокого погружения могу порекомендовать лекцию блистательного Алексея Шипилёва, которую можно без труда найти на YouTube. Но лично мне большинство этих материалов показались либо слишком сложными, либо наоборот – поверхностными. Так же некоторые из них содержат явные ошибки, что вносит ещё большую неразбериху в данную тему. Судя по тому, что в комментариях под одной из этих статей я нашёл вот такую картинку, подобные проблемы были не только у меня.

Читать далее
Всего голосов 12: ↑10 и ↓2 +8
Комментарии 11

Как я «напрограммировал» себе скилл рисования диаграмм в скетч-стиле

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

По работе мне часто приходится рисовать разные схемы, диаграммы процессов и графики, в том числе и те, которые потом используются в качестве иллюстраций для сайта, статей и презентаций. Всё бы ничего, но есть у диаграмм и графиков, сделанных в популярных онлайн-сервисах наподобие draw.io или lucidcharts одна беда — они выглядят как-то слишком уныло и «олдскульно», в духе «90-х». Всю эту инфографику хотелось бы сделать более заметной, привлекательной и душевной (и, желательно, без привлечения дизайнера).

Так у меня возникла идея создания инструмента для отрисовки диаграмм и графиков в стиле «нарисовано от руки». Об истории создания сервиса и «подводных камнях» я расскажу в этой заметке.

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

Пошаговый запуск программы в Linux x86, или как добраться до main()?

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


Статья предназначена для тех, кто хочет понять процесс загрузки программ в Linux. В частности, здесь пойдет речь о динамической загрузке файлов ELF x86. На основе изложенной информации вы сможете лучше понять, как устранять проблемы, возникающие в программе еще до запуска main.
Читать дальше →
Всего голосов 60: ↑59 и ↓1 +58
Комментарии 10

Мимо наборной кассы: феерическая профанация шрифтового дела от компании «Паратайп»

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

Это история о том, как я разочаровался в компании «Паратайп» и шрифтах, которые она производит.

Я делал PDF⁠-⁠презентацию, чтобы показать европейским иностранцам. И что⁠-⁠то меня пробило на гиперкачественную вёрстку с образцовым типографингом. Пускай, думаю, у иностранцев сорвёт шаблон: они⁠-⁠то привыкли, что все русские верстают по⁠-⁠колхозному, особенно если думают, что нет.

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

Я выбрал PT Sans, потому что графика этого шрифта — вполне на мировом уровне. Однако…

Читать далее
Всего голосов 262: ↑248 и ↓14 +234
Комментарии 129

iOS 15 позволяет находить даже выключенный iPhone: как это сделано и есть ли опасность

Время на прочтение 8 мин
Количество просмотров 47K
В iOS 15.0 появилась новая функция: iPhone теперь можно найти при помощи Find My, даже когда iPhone «отключен». Как это работает? Представляет ли функция проблему для безопасности?

Я заметил эту функцию довольно давно на одном из моих iPhone с бетой iOS 15. Вот скриншот, который я сделал в июле. С тех пор интерфейс пользователя немного изменился.


Пользователи далеко не сразу заметили существование этой функции. Нужно обновиться до iOS 15.0, включить в iPhone службы геолокации, войти в аккаунт пользователя, участвовать в сети Find My, и так далее. А под конец совершить самое странное действие, которое сегодня никто не делает: отключить iPhone. Но как только об этом узнал Twitter, популярность темы мгновенно выросла. Как и количество слухов о том, как реализована эта функция.
Читать дальше →
Всего голосов 56: ↑55 и ↓1 +54
Комментарии 79

Переписка со спамерами: избранное

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

Конец XIV века, неизвестный автор: Комиссия ФАС изучает отмазки спамера.

Я радуюсь, получая спам – ведь у меня появляется новая возможность пополнить бюджет любимой страны (откуда берутся деньги на пенсии старикам, больницы, школы, домики для уточек и вот это вот все). Каждое полученное от спамеров сообщение я аккуратно пересылаю в ФАС, давая ей возможность пополнить бюджет на лишние 100-500 тысяч рублей, а потом наслаждаюсь материалами «расследований», проливающих свет на грязную подноготную «солидного бизнеса» и его подельников. Вранье, подтасовка документов и далее со всеми остановками – наслаждайтесь!
Читать дальше →
Всего голосов 446: ↑445 и ↓1 +444
Комментарии 186

Трояны и бэкдоры в кнопочных мобильных телефонах российской розницы

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

Немалое количество простых кнопочных телефонов, присутствующих в российских магазинах, содержат нежелательные недокументированные функции. Они могут совершать автоматическую отправку СМС-сообщений или выходить в интернет для передачи факта покупки и использования телефона (передавая IMEI телефона и IMSI SIM-карт). Встречаются модели со встроенным трояном, отправляющим платные СМС-сообщения на короткие номера, текст которого загружается с сервера, также бывают устройства с настоящим бэкдором, пересылающим входящие СМС-сообщения на сервер злоумышленников.
Статья описывает детали вредоносных функций и способы их обнаружения.

Читать далее
Всего голосов 581: ↑580 и ↓1 +579
Комментарии 370

Балансирующий робот на Arduino Nano и шаговых моторах

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

Моя версия популярного балансирующего робота. Для тех, кто хочет разобраться в математике, железе и алгоритме стабилизации.

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

System.IO.Pipelines: высокоэффективный IO в .NET

Время на прочтение 12 мин
Количество просмотров 27K
System.IO.Pipelines — это новая библиотека, упрощающая организацию кода в .NET. Трудно обеспечить высокую производительность и точность, если приходится иметь дело со сложным кодом. Задача System.IO.Pipelines — упростить код. Подробнее под катом!

Читать дальше →
Всего голосов 27: ↑26 и ↓1 +25
Комментарии 17

Почему твоя мама всё ещё не прогает?

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

Случай с бомжом

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

Обычно вместо денег я даю попрошайкам-мужчинам телефон отдела кадров одной курьерской компании, которая постоянно нуждается в сотрудниках. Но у него не было ног… Тогда я подумал: «Чувак, у тебя полным полно времени. Работа за компом — лучшее, что может случиться в твоей жизни. Купон со скидкой на курс по PHP — вот, что должны были положить тебе на койку туда, где раньше были ноги, когда ты очнулся после ампутации».

Я решил предложить ему изучить программирование. В его положении он должен был быть чертовски мотивирован. Но получится ли у него?

Читать далее
Всего голосов 304: ↑276 и ↓28 +248
Комментарии 468

Классные эргономические клавиатуры, на которые стоит обратить внимание. Часть 2

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

Удобный инструмент для работы позволяет упростить себе жизнь и оптимизировать выполнение задач. Клавиатура — инструмент, с которым многие из нас не расстаются в течение дня (а то и ночи). Кому-то хватает обычной клавиатуры без особых изысков, а кто-то предпочитает эргономические.

Это — вторая часть статьи (первая — здесь) об эргономических клавиатурах, которая может пригодиться как поклонникам обычных «клав», так и сторонникам эргономики. Здесь мы учли советы и рекомендации комментаторов первой части, так что посмотрите — возможно, вам что-то и пригодится.
Всего голосов 51: ↑48 и ↓3 +45
Комментарии 54

Эргономика решает: классные эргономические клавиатуры, на которые стоит обратить внимание

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

Думаю, что многие читатели Хабра часто работают с клавиатурой — неважно, для кода или написания статей/документации. Приспособиться можно к любой клавиатуре, даже самой недорогой и «китайской» (хотя и в этой категории бывают отличные модели). Но лучше, конечно, работать с комфортом.

В этой подборке мы собрали несколько клавиатур, которые нравятся нам самим — какие-то есть у сотрудников Selectel, к каким-то присматриваемся. Хороших клавиатур достаточно много, мы напишем о части из них. Если у вас есть собственная любимая «клава», расскажите о ней в комментариях.
Читать дальше →
Всего голосов 51: ↑45 и ↓6 +39
Комментарии 188

У ELK’и иголки колки: минимизируем потерю сообщений в Logstash, следим за состоянием Elasticsearch

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

Это обзор некоторых полезных фич и чек-лист по мониторингу не самых очевидных моментов, чтобы минимизировать потерю сообщений, проходящих через ELK (Elasticsearch, Logstash, Kibana). В статье мы не коснемся тем, связанных с программами-коллекторами (посредством чего сообщения попадают в Logstash) из-за их великого разнообразия: речь пойдет только о core-компонентах. В конце материала приведен небольшой cheat sheet с популярными запросами к Elasticsearch API.

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

Управляем контактами GPIO из C# .NET 5 в Linux на одноплатном компьютере Banana Pi M64 (ARM64) и Cubietruck (ARM32)

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

Когда заходит речь про программирование на C# .NET для одноплатных компьютеров, то разговоры крутятся только в основном вокруг Raspberry Pi на Windows IoT. А как же Banana/Orange/Rock/Nano Pi, Odroid, Pine64 и другие китайские одноплатные компьютеры работающие на Linux? Так давайте это исправим, установим .NET 5 на Banana Pi BPI-M64 (ARM64) и Cubietruck (ARM32), и будем управлять контактами GPIO из C# в Linux. В первой части серии постов, подключим светодиод и кнопку для отработки прерываний и рассмотрим библиотеку Libgpiod (спойлер, библиотеку так же можно использовать в C++, Python) для доступа к контактам GPIO.
Всего голосов 37: ↑35 и ↓2 +33
Комментарии 10

Что недоговаривают Тинькофф Инвестиции. Вытаскиваем все данные по портфелю через API в большую таблицу Excel

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

Разбираемся, как на самом деле считаются суммы и проценты в клиентском приложении.

Собираем все данные по портфелю и по всем операциям через Tinkoff API.

Строим огромную Excel таблицу со всеми данными.

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

Пытаемся понять, что нам с этим делать.

Read more
Всего голосов 158: ↑155 и ↓3 +152
Комментарии 112

Информация

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