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

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

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

Kernel Queue: The Complete Guide On The Most Essential Technology For High-Performance I/O

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

When talking about high-performance software we probably think of server software (such as nginx) which processes millions requests from thousands clients in parallel. Surely, what makes server software work so fast is high-end CPU running with huge amount of memory and a very fast network link. But even then, the software must utilize these hardware resources at maximum efficiency level, otherwise it will end up wasting the most of the valuable CPU power for unnecessary kernel-user context switching or while waiting for slow I/O operations to complete.

Thankfully, the Operating Systems have a solution to this problem, and it's called kernel event queue. Server software and OS kernel use this mechanism together to achieve minimum latency and maximum scalability (when serving a very large number of clients in parallel). In this article we are going to talk about FreeBSD, macOS and kqueue, Linux and epoll, Windows and I/O Completion Ports. They all have their similarities and differences which we're going to discuss here. The goal of this article is for you to understand the whole mechanism behind kernel queues and to understand how to work with each API.

Read more
Всего голосов 7: ↑7 и ↓0+7
Комментарии1

Игры, в которых нужно писать код: Grid Garden, Elevator Saga и другие

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

В детстве мы постигаем премудрости жизни через игру. Это важнейший элемент развития личности, социальных навыков, получения знаний об окружающем мире. Игры — хороший «контейнер» для донесения и закрепления каких-либо знаний. Яркий пример — игры, в которых нужно писать код. Наверняка все вы о них слышали, а в некоторые даже играли. Их первичная задача — развлечь людей, уже владеющих навыками программирования, но они могут использоваться и для обучения. Эти игры помогут освежить свои знания по тому или иному языку, отвлечься и заняться более простой алгоритмической задачей.

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

Лучшие головоломки, про которые не знает никто*

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

Бодрый день, дамы и господа. Я наконец решил, что негоже мне сидеть в рид-онли, когда у меня в голове зреет столько полезных и нужных комментариев, и пора получить инвайт. А значит, надо писать пост. О чём? Конечно же, о том, что я люблю и знаю — об играх. Конкретно — о головоломках.

Огромный недостаток головоломки по сравнения с какими-нибудь ММОРПГ — очень малая реиграбельность. Я всегда думал, что технология стирания памяти в «Вечном сиянии чистого разума» использовалась не по назначению. Вместо того, чтобы изжить из воспоминаний какую-то женщину, не лучше ли забыть своё прохождение любимой игры, а потом пройти её заново? К сожалению, пока что это фантастика. Поэтому всё, что я могу — изнывая от ностальгии, в письменной форме вспоминать все эти прекрасные вещи, вернуться к которым мне, увы, не суждено.

Учитывая «одноразовость» головоломок, тем более странно и в чём-то даже преступно, что о замечательнейших представителях этого жанра узнаёшь практически случайно. Мой пост имеет целью исправление этой несправедливости, и я как раз заканчиваю затянувшееся предисловие и перехожу к сути.
Всего голосов 78: ↑74 и ↓4+70
Комментарии117

Жизнь станет проще. Windows 7 и 8.1 переходят на модель накопительных обновлений

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

Первый ежемесячный накопительный апдейт выйдет в октябре




В мае 2016 года Microsoft сделала хорошее дело и собрала в единый пакет Convenience Rollup все обновления для операционной системы Windows 7 с момента выхода SP1 в 2011 году. Накопительный пакет опубликован на официальном сайте Microsoft Update Catalog.

Тогда же в мае компания объявила, что обновления, не связанные с безопасностью, для Windows 7 SP1, Windows 8.1, Windows Server 2008 R2 SP1, Windows Server 2012 и Windows Server 2012 R2, будут выходить единым пакетом ежемесячно. Сейчас по многочисленным просьбам пользователей Microsoft приняла решение внести некоторые изменения в процедуру. Решено, что обновления будут не просто ежемесячными, а кумулятивными, то есть в каждый момент времени будет доступно только одно самое актуальное обновление, которое включает в себя все предыдущие. Это значительно облегчит жизнь системным администраторам и обычным пользователям.
Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии52

Повышаем производительность кода: сначала думаем о данных

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


Занимаясь программированием рендеринга графики, мы живём в мире, в котором обязательны низкоуровневые оптимизации, чтобы добиться GPU-фреймов длиной 30 мс. Для этого мы используем различные методики и разработанные с нуля новые проходы рендеринга с повышенной производительностью (атрибуты геометрии, текстурный кеш, экспорт и так далее), GPR-сжатие, скрывание задержки (latency hiding), ROP…

В сфере повышения производительности CPU в своё время применялись разные трюки, и примечательно то, что сегодня они используются для современных видеокарт ради ускорения вычислений ALU (Низкоуровневая оптимизация для AMD GCN, Быстрый обратный квадратный корень в Quake).


Быстрый обратный квадратный корень в Quake

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

Эта статья — не исчерпывающее хардкорное руководство по железу. Это всего лишь введение, напоминание, свод базовых принципов написания эффективного кода для CPU. Я хочу «показать, что низкоуровневое мышление сегодня всё ещё полезно», даже если речь пойдёт о процессорах, которые я мог бы добавить.

В статье мы рассмотрим кеширование, векторное программирование, чтение и понимание ассемблерного кода, а также написание кода, удобного для компилятора.
Читать дальше →
Всего голосов 141: ↑133 и ↓8+125
Комментарии103

Nuklear — идеальный GUI для микро-проектов?

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

Nuklear — это библиотека для создания immediate mode пользовательских интерфейсов. Библиотека не имеет никаких зависимостей (только C89! только хардкор!), но и не умеет создавать окна операционной системы или выполнять реальный рендеринг. Nuklear — встраиваемая библиотека, которая предоставляет удобные интерфейсы для отрисовки средствами реализованного приложения. Есть примеры на WinAPI, X11, SDL, Allegro, GLFW, OpenGL, DirectX. Родителем концепции была библиотека ImGUI.


Чем прекрасна именно Nuklear? Она имеет небольшой размер (порядка 15 тысяч строк кода), полностью содержится в одном заголовочном файле, создавалась с упором на портативность и простоту использования. Лицензия Public Domain.

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

Обучаемся самостоятельно: подборка видеокурсов по Computer Science

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

Содержание


  1. Введение в Computer Science
  2. Структуры данных и Алгоритмы
  3. Системное программирование
  4. Распределенные системы
  5. Базы данных
  6. Объектно-ориентированный дизайн и разработка софта
  7. Искусственный интеллект
  8. Машинное обучение
  9. Веб-разработка и интернет-технологии
  10. Concurrency
  11. Компьютерные сети
  12. Разработка мобильных приложений
  13. Математика для программистов
  14. Теория информатики и языки программирования
  15. Архитектура компьютера
  16. Безопасность
  17. Компьютерная графика
  18. Работа с изображениями и компьютерное зрение
  19. Интерфейс Человек-Компьютер
  20. Вычислительная биология
  21. Прочее

Всего голосов 78: ↑64 и ↓14+50
Комментарии23

Реализация протокола MIL-STD-1553 на STM32

Время на прочтение3 мин
Количество просмотров33K
Однажды, появилась необходимость использования в нашем устройстве мультиплексного канала обмена информацией (МКИО), он же ГОСТ Р 52070-2003, он же MIL-STD-1553В. Первоначальный результат поисков несколько удивил: типовые решения выдаваемые поисковой системой, как правило, основывались на использовании ПЛИС. Поскольку решать проблему нужно было быстро, появилась мысль сделать конвертер протокола из MIL-STD-1553 в MODBUS RTU. При этом постараться использовать достаточно недорогие технические решения и микроконтроллер из семейства STM32.



На фото из Википедии: F16, на котором впервые был использована шина MIL-STD-1553В. Наши устройства не летают :), поэтому каких либо ограничений по применению элементной базы нет. Просто у Заказчика приборная сеть построена на основе этой шины. Первая часть статьи описывает прием и передачу по шине МКИО, вторая часть будет про конвертер в MODBUS.
И вот что из этого получилось.
Всего голосов 23: ↑23 и ↓0+23
Комментарии24

Утки, Таиланд и T-SQL… или что может подстерегать программистов при работе с SQL Server?

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

Все начиналось довольно обыденно… Зачитывался Рихтером и усиленно штудировал Шилдта. Думал, что буду заниматься разработкой под .NET, но судьба на первом месяце работы распорядилась иначе. Один из сотрудников неожиданно покинул проект и во вновь образовавшуюся дыру докинули свежего людского материала. Именно тогда и началось мое знакомство с SQL Server.

С тех пор прошло чуть меньше 6 лет и вспомнить можно многое…

Про бывшего клиента Джозефа из Англии, который переосмыслил жизнь, за время отпуска в Таиланде, и в моем скайпе стал подписываться Жозефиной. Про веселых соседей по офису, с которыми приходилось сидеть в одной комнате: один страдал от аллергии на свежий воздух, а другой маялся от неразделенной любви к С++ дополняя это аллергией на солнечный свет. Один раз по команде свыше пришлось на время стать Александром отцом двух детей, чтобы изображать из себя обросшего скилами сениора по JS.
Подробнее
Всего голосов 76: ↑73 и ↓3+70
Комментарии48

Глубокое обучение для новичков: распознаем рукописные цифры

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

Представляем первую статью в серии, задуманной, чтобы помочь быстро разобраться в технологии глубокого обучения; мы будем двигаться от базовых принципов к нетривиальным особенностям с целью получить достойную производительность на двух наборах данных: MNIST (классификация рукописных цифр) и CIFAR-10 (классификация небольших изображений по десяти классам: самолет, автомобиль, птица, кошка, олень, собака, лягушка, лошадь, корабль и грузовик).



Читать дальше →
Всего голосов 39: ↑35 и ↓4+31
Комментарии5

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

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

Введение


Представляем вторую статью в серии, задуманной, чтобы помочь быстро разобраться в технологии глубокого обучения; мы будем двигаться от базовых принципов к нетривиальным особенностям с целью получить достойную производительность на двух наборах данных: MNIST (классификация рукописных цифр) и CIFAR-10 (классификация небольших изображений по десяти классам: самолет, автомобиль, птица, кошка, олень, собака, лягушка, лошадь, корабль и грузовик).


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

К вопросу о стиле

Время на прочтение21 мин
Количество просмотров6.5K
Путь в десять тысяч ли начинается с первого шага.

Преамбула


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

В своем недавнем (когда я начинал это писать, он действительно был недавним) посте о методах построения модуля инициализации аппаратной части МК (кстати, кому интересна данная тема, обязательно посмотрите комментарии к нему, там дано совершенно замечательное решение, которое, к сожалению, не уместилось на полях этой рукописи) я обещал посвятить следующий пост особенностям UART в микроконтроллерах фирмы STM. Не отказываясь от этого обещания, тем не менее внесу определенные коррективы — будет создана серия постов, посвященная тематике правильной разработки программного пакета (для примера взята реализация протокола MODBUS), и в его рамках будет часть, посвященная вышеозначенной теме.

Поскольку мы будем изучать правильную разработку, нам потребуется контр-пример, так как нет ничего проще, чем показывать чужие ошибки, поэтому в качестве отправной точки будет взята известная реализация упомянутого протокола, а именно FREEMODBUS. Не останавливаясь на вопросах функционирования, стиль данного программного продукта мне не представляется идеальным и я постараюсь показать, как его можно улучшить.
Зачем тут так много букв
Всего голосов 14: ↑12 и ↓2+10
Комментарии28

Музыкальная теория для гиков

Время на прочтение17 мин
Количество просмотров121K
imageКто-то считает музыку уделом избранных талантов, кто-то — набором физических закономерностей. Автор материала делает попытку объяснить знакомые каждому музыкальные термины, такие как тон, интервал, амплитуда, нота, октава, партитура, аккорд и так далее с помощью расчетов и технических обоснований. Ниже перевод оригинального текста.

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

Все остальные правила для меня выглядят совершенно, ну просто абсолютно произвольно. Почему у нас есть 12 нот, но для их обозначения применяются только 7 букв? Откуда взялись знаки при ключе? Почему ни одну статью по музыке в Википедии просто невозможно понять, не прочитав сперва все остальные?
Читать дальше →
Всего голосов 107: ↑104 и ↓3+101
Комментарии99

История Half-Life

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

Изображение: Айван Бакула.

Между датой 10 сентября 2016 года и 10 октября 2007 года — 3258 дней. Между 10 октября 2007 года и 8 ноября 1998 года — те же 3258 дней. Каково значение этих вычислений? Приведённая дата в 1998 году — это день выхода Half-Life. Дата из 2007 года — день выхода Half-Life 2: Episode 2. С момента релиза последней из существующих игр серии прошло уже больше времени, чем между выходом первой и последней игр.

Valve так и не закончила сюжетную линию своей первой игры, а известных планов на продолжение нет. Вместо этого компания предпочитает заниматься сервисом игровой дистрибуции Steam, шляпами для разнообразных мультиплееров и виртуальной реальностью. Последняя игра Valve вышла в 2013 году.

Чтобы попробовать понять, почему так происходит, нужно копнуть в самое начало Valve. Ниже 1996 года, ещё во времена совсем другой компании.
Читать дальше →
Всего голосов 119: ↑118 и ↓1+117
Комментарии68

Javascript-фреймворки: должен остаться только один

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

Сергей Аверин ( XEK )


Сергей Аверин

Изначально я хотел сделать доклад про сравнение фреймворков, но потом подумал, что закидают помидорами, поэтому доклад — просто адский троллинг, как водится у меня. И он, скорее, не про HighLoad, а про менеджерскую задачу, которая стоит над всем этим делом, включая фронтенд.

Про что же, все-таки, получился доклад? Доклад про то, как выбирали новый фреймворк, почему выбирали, и какие задачи решали.
Читать дальше →
Всего голосов 103: ↑93 и ↓10+83
Комментарии184

Как рендерится кадр нового Doom

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


Выпущенный в 1993 году первый DOOM внёс фундаментальные изменения в разработку игр и механик, он стал мировым хитом и создал новых идолов, таких как Джон Кармак и Джон Ромеро.

Сегодня, 23 года спустя, id Software принадлежит Zenimax, все основатели уже покинули компанию, но это не помешало коллективу id продемонстрировать весь свой талант, выпустив отличную игру.
Читать дальше →
Всего голосов 156: ↑155 и ↓1+154
Комментарии94

ПЗУ компьютера «Аполлон-3» нашли в мусоре

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

Логические модули компьютера КА Аполлон. Кадр из видео: Франсуа Раутенбах

25 августа 1966 года командный и служебный отсеки корабля «Аполлон-3» (Apollo Command Module) были установлен на ракету-носитель «Сатурн-1Б» и отправлены в беспилотную испытательную миссию AS-202 на высоту 1136 км. Этот запуск стал третьим испытательным пуском «Сатурна-1Б» после AS-201 и AS-203. Но он стал первым полётом корабля с установленными системами управления и ориентации. Первый раз бортовой компьютер AGC (Apollo Guidance Computer) поднялся в небо. Эти испытания должны были доказать, что корабль «Аполлон» способен доставить людей на Луну и вернуть обратно.
Читать дальше →
Всего голосов 30: ↑28 и ↓2+26
Комментарии86

Жизнь до IoT или зарисовки инженера АСКУЭ

Время на прочтение15 мин
Количество просмотров46K
Что-то на гиктаймс стало мало технических статей от независимых не новостных и не проплаченных авторов.

Попробую исправить данную ситуацию и рассказать про то, как работают и из чего устроены автоматизированные системы коммерческого учета электроэнергии (АСКУЭ). А точнее про то, как создавалась одна из таких систем на отдельно взятом предприятии.



Советую относиться к статье как к будничным зарисовкам инженера с элементами отзывов на оборудование.
Читать дальше →
Всего голосов 60: ↑60 и ↓0+60
Комментарии203

Подборка подкастов по программированию на русском и английском языках

Время на прочтение7 мин
Количество просмотров180K
Всем привет! В этой статье собраны одни из лучших подкастов по программированию как на русском так и на английском языках, которые позволят вам быть всегда в курсе последних новостей.

Подкасты представляют собой звуковые файлы, которые можно слушать в любое время на вашем компьютере или другом устройстве (IPod, IPad, смартфон и т.д.). Это самый портативный способ потреблять контент и узнавать что-то новое. Популярность подкастов росла на протяжении многих лет и теперь они охватывают очень широкий круг вопросов.

И да, есть много интересных и популярных подкастов для разработчиков и программистов. Подкасты невероятно полезны, они будут держать вас в курсе всего что происходит в интересующей вас сфере, а также помогут вам развить более широкий взгляд на постоянно развивающуюся область информационных технологий.
Читать дальше →
Всего голосов 74: ↑71 и ↓3+68
Комментарии63

Рейтинг красивейших денег мира

Время на прочтение7 мин
Количество просмотров68K
imageПосле того, как наш предыдущий материал о происхождении названий мировых валют вызвал оживленную дискуссию и собрал немало положительных оценок, мы решили продолжить «денежную» тему и сегодня с радостью представляем второй материал из цикла статей, посвященных валютам мира. Речь пойдет о нестандартном дизайне банкнот. Среди сотен купюр из самых разных уголков света мы, в PayOnline, выбрали те, что впечатлили нас больше всего и составили собственный рейтинг. Интересно? Тогда приступим.

Одной из самых необычных валют, встретившихся нам, пожалуй, можно назвать крону Фарерских островов, расположенных в северной части Атлантического океана между Шотландией и Исландией. Де-юре острова относятся к Дании, но де-факто это отдельный мир со своим уникальным укладом жизни. К примеру, жители Фарерских островов не запирают домов, просто незачем, ведь преступность на островах практически отсутствует.
Читать дальше →
Всего голосов 43: ↑31 и ↓12+19
Комментарии47
1
23 ...

Информация

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