Pull to refresh
4
0
Юрий Наконечный @Inobelar

C++ Developer

Send message

16-, 8- и 4-битные форматы чисел с плавающей запятой

Level of difficulty Medium
Reading time 15 min
Views 22K

Уже лет 50, со времён выхода первого издания «Языка программирования Си» Кернигана и Ритчи, известно, что «числа с плавающей запятой» одинарной точности имеют размер 32 бита, а числа двойной точности — 64 бита. Существуют ещё и 80-битные числа расширенной точности типа «long double». Эти типы данных покрывали почти все нужды обработки вещественных чисел. Но в последние несколько лет, с наступлением эпохи больших нейросетевых моделей, у разработчиков появилась потребность в типах данных, которые не «больше», а «меньше» существующих, потребность в том, чтобы как можно сильнее «сжать» типы данных, представляющие числа с плавающей запятой.

Я, честно говоря, был удивлён, когда узнал о существовании 4-битного формата для представления чисел с плавающей запятой. Да как такое вообще возможно? Лучший способ узнать об этом — самостоятельно поработать с такими числами. Сейчас мы исследуем самые популярные форматы чисел с плавающей запятой, создадим с использованием некоторых из них простую нейронную сеть и понаблюдаем за тем, как она работает.

Читать далее
Total votes 132: ↑131 and ↓1 +130
Comments 99

Графическая среда Linux без единого разрыва

Reading time 4 min
Views 21K

TL;DR — Если ваше графическое окружение Linux во время просмотра видео, сеанса игры или прокрутки интерактивной веб страницы не успевает вовремя обновлять картинку целиком, то тогда для вас имеет смысл установить последнюю стабильную версию ядра ≥ 4.10.


Давным давно, то есть несколько лет назад каждая реализация протокола X11 предполагала смену режима видео напрямую, поперек батьки кернела. Затем появился KMS (kernel mode setting) и эта важная функция перешла к ядру. Но остались некоторые шероховатости. Атомарная смена режима является дальнейшим улучшением механизма KMS.


Для чего нужны атомарные операции KMS? Главным образом для того, чтобы избежать вот таких моментов.




Читать дальше →
Total votes 22: ↑21 and ↓1 +20
Comments 14

Собираем свой chromium/electron, с блекджеком и поэтессами

Reading time 13 min
Views 13K
image

Добрый день. Меня зовут Тимур и я программист.

Сегодня я предлагаю посмотреть как можно подрихтовать исходники chromium-а, собрать свой вариант браузера и подтянуть это добро в electron. Эта статья — пробный шар, какая то часть ее позже перекочует в документацию проекта который, я надеюсь, смогу раскачать и сделать популярным, но об этом потом.

Если Вам хочется похейтить пользователей электрона в частности или джисеров в целом — проходите мимо. Электрон я сам не особо люблю и как раз пытаюсь сделать лучшую замену ему, что касается фронтовиков — я один из них, но про js в статье будет очень мало. Сорян.
Читать дальше →
Total votes 33: ↑29 and ↓4 +25
Comments 35

Вы точно хотите пойти программистом в gamedev?

Level of difficulty Easy
Reading time 17 min
Views 72K

Хочу вас огорчить, программисты не делают игры - их делают дизайнеры и арт. Можно уволить программиста и на его место придет другой и через условные месяц-два-полгода начнет закрывать таски не хуже. Если увольняется дизайнер, его монстр, пушка или контент повисает без хозяина и без "видения". Если её не перехватил сосед (а у соседа свой монстр), то в большинстве случаев его работа просто уходит в стол и монстра пишут заново на тех же ассетах и принципах, но заново.

Если увольняется арт-директор, который несет "видение" проекта, то проекту становится очень плохо, в большинстве случаев визуально он изменится до неузнаваемости, хотя ассеты могут быть те же самые. Программисты делают всё, кроме самой игры: рендер, звук, физику, сеть, AI, инверсную кинематику, поиск пути и т.д. Можем подискутировать в комментариях.

O, тепленькая пошла!
Total votes 267: ↑263 and ↓4 +259
Comments 229

Не Unity единым…

Level of difficulty Easy
Reading time 15 min
Views 36K

Игры бывают разные, большие и маленькие, триA и супер инди, в компаниях с сотнями разработчиков и что создаются самородками-одиночками. Редко их делают с нуля и пишут код только игры, чаще пишут игровые тулы, редактор и параллельно пишут саму игру. За всей этой многомиллиардной индустрией стоит код, много кода, очень много кода. Игровые движки и фреймворки – мощные инструменты, которые помогают разработчику творить его идеи и создавать увлекательные игровые миры. Это каркас, на котором строятся все игровые вселенные, они включают в себя сотни инструментов, библиотек и ресурсов, позволяя разработчикам превратить строчки кода в театр для одного зрителя.

Существует более сотни игровых движков, каждый из них содержит как минимум одну фичу которой нет ни в каком другом. Всех возможностей вместе нет ни в одном, и это прекрасно - иначе бы такой движок монополизировал рынок. Хм, Unreal5 ты ли это? Иногда полезно пробежать по release notes движка, чтобы оставаться в курсе последних новостей. Возможно вы разрабатываете свое решение и эта статья натолкнет вас на новые идеи. Готовы узнать что ваша любимая игры была сделана не на Unity, а на православном SDL?

Читать далее
Total votes 95: ↑95 and ↓0 +95
Comments 89

Что происходит, когда запускаешь «Hello World» в Linux

Level of difficulty Medium
Reading time 15 min
Views 27K

Сегодня я задумалась о том, что происходит, когда запускаешь в Linux простую программу «Hello World» на Python.

print("hello world")

Вот как это выглядит в командной строке:

$ python3 hello.py
hello world

Но внутри происходит гораздо больше. Я объясню, что там творится, и, что гораздо важнее, расскажу об инструментах, при помощи которых вы сами сможете исследовать происходящее. Мы воспользуемся readelf, strace, ldd, debugfs, /proc, ltrace, dd и stat. Я не буду рассматривать относящиеся к Python части, только объясню, что происходит при выполнении динамически компонуемых исполняемых файлов.
Читать дальше →
Total votes 98: ↑98 and ↓0 +98
Comments 10

Zig для меня — это новый C

Reading time 9 min
Views 16K

По случаю выхода версии 0.11.0 языка Zig я решил написать статью о том, что привлекло меня в языке, что мне в нём нравится. В Zig есть ряд интересных решений. И я рассматриваю его, как альтернативу языку C. Так собственно его позиционируют его создатели. И не без причин. Причина, по которой я решил изучать Zig - я не захотел полноценно учить C. Многое в C исторически устарело. И Zig для меня, как глоток свежего воздуха.

Читать далее
Total votes 41: ↑40 and ↓1 +39
Comments 111

Создание шейдера обратного фи-феномена в Unity: мой опыт

Level of difficulty Medium
Reading time 10 min
Views 2.9K

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

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

Внимание: в статье есть яркие мигающие картинки, будьте осторожны

Читать далее
Total votes 17: ↑16 and ↓1 +15
Comments 4

Итак, вы установили fzf. Что дальше?

Level of difficulty Easy
Reading time 4 min
Views 17K

Разработчики ПО — если не единственные, то практически единственные, кому очень просто создавать инструменты для улучшения своей профессиональной работы; однако со временем это усложняет жизнь людям, постоянно переключающимся между разными инструментами и не вкладывающим время в глубокое изучение своего инструментария. Имея глубокое уважение к негласным знаниям людей лучше меня, я всё же считаю, что отличная эвристика 80/20 заключается в том, чтобы изучать старые добрые инструменты Unix cat, ls, cd, grep и cut. (а если вам повезло устроиться на должность настоящего современного сисадмина, то ещё и sed с awk.)

Однако существуют инструменты, выгода от использования которых настолько мгновенна и ценность от применения настолько уникальна, что эвристика 80/20 полностью к ним неприменима. Один из них — это fzf. И меня очень печалит то, что многие скачивают его, запускают в командной строке «как есть», а потом просто мотают головой и произносят: «Я не понимаю».

Мне хотелось бы изменить ситуацию. Предположим, что вы работаете на более-менее стандартной машине с Ubuntu. Вы только что установили fzf при помощи стандартного скрипта установки. Что же дальше?
Читать дальше →
Total votes 54: ↑54 and ↓0 +54
Comments 25

Мелкие ментальные приёмы в Obsidian (термины)

Level of difficulty Medium
Reading time 40 min
Views 15K

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

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

Термин - это...
Total votes 16: ↑16 and ↓0 +16
Comments 6

Высокоточное измерение ЭКГ

Level of difficulty Easy
Reading time 9 min
Views 4K

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

При этом электрокардиография, как и прежде, остается простым, но важным методом исследования.

Читать далее
Total votes 14: ↑13 and ↓1 +12
Comments 68

Поиск оси вращения объекта в компьютерной томографии. Обзор методов

Level of difficulty Easy
Reading time 12 min
Views 1.3K

Привет, Хабр!

Должно быть, всем уже известно, что в Smart Engines мы, в частности, занимаемся разработкой томографического программного обеспечения. Чтобы заглянуть внутрь окружающих нас вещей и увидеть чуть больше и чуть точнее, чем дозволено человеческому глазу, мы работаем над совершенствованием алгоритмов реконструкции внутренней структуры объектов. Путь восстановления внутренности объекта тернист: часто томограф, на котором производятся измерения, неидеален, и получаемое изображение внутренности объекта имеет очевидные искажения, двоения, размытия, так называемые артефакты реконструкции объекта. Обнаруженные артефакты реконструкции мешают исследователю в изучении внутренности объекта, их наличие иногда “толкает” исследователя на неверные умозаключения. В связи с этим с артефактами реконструкции нужно бороться. В зоопарке артефактов томографической реконструкции в особом вольере обитают артефакты, возникающие от неверного определения положения оси, вокруг которой вращается объект в процессе сканирования или же вокруг которой обращается источник излучения, если объект неподвижен. Так что же это за звери такие - артефакты оси вращения? Об этих сущностях и методах их укрощения и пойдет речь в нашей сегодняшней статье. 

Читать далее
Total votes 9: ↑8 and ↓1 +7
Comments 0

Ряд Фурье как Фильтр Нижних Частот

Level of difficulty Easy
Reading time 4 min
Views 6.7K

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

При этом я ни разу не видел, чтобы на основе преобразования Фурье делали фильтры нижних частот, а ведь, справедливости ради, можно заметить что из преобразования Фурье можно сделать отличный фильтр нижних частот.

Читать далее
Total votes 21: ↑15 and ↓6 +9
Comments 63

Пишем микро-shellcode в формате ELF вручную

Level of difficulty Medium
Reading time 9 min
Views 3.1K

На Хабре уже не раз публиковались статьи про устройство формата ELF и написание файлов в таком формате вручную, но я не считаю лишним опубликовать и свой вариант решения задачи написания ELF-файла вручную. В результате получился файл, вызывающий /bin/sh и занимающий всего 76 байт (что на 8 байт меньше, чем сумма длин необходимых для запуска заголовков ELF).

Читать далее
Total votes 20: ↑20 and ↓0 +20
Comments 4

Древнейшая проблема бэйкинга и её изящное решение

Level of difficulty Medium
Reading time 9 min
Views 5.5K

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

Также мы наглядно разберём причины возникновения этих недостатков и рассмотрим способы их решения.

Читать далее
Total votes 23: ↑23 and ↓0 +23
Comments 5

Трюк с LD_PRELOAD

Reading time 7 min
Views 4.3K

Недавно на кафедре баз данных TUM я работал над интересной низкоуровневой библиотекой на языке С — tssx, заменяющей в любом приложении взаимодействие через сокеты на быструю передачу данных через разделяемую память. С нашей библиотекой Postgres работает более чем в два раза быстрее, а некоторые программы даже на порядок быстрее. В основе библиотеки лежит трюк с LD_PRELOAD, о котором я и расскажу в этой статье.

Читать далее
Total votes 48: ↑32 and ↓16 +16
Comments 15

Ломаем хаскелем Brainfuck

Level of difficulty Hard
Reading time 28 min
Views 9.9K

Немного о bfc


Brainfuck — очень глупый язык. Там есть лента из 30к ячеек, по байту каждая. Команды bfc это:


  • Передвижение по ленте влево и вправо (символы < и >)
  • Увеличение и уменьшение значения в ячейке (символы + и -)
  • Ввод и вывод текущей ячейки (символы . и ,)
  • И цикл while, который продолжается пока значение в текущей ячейке не ноль. [ и ] это начало и конец цикла соответственно

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

Читать дальше →
Total votes 84: ↑84 and ↓0 +84
Comments 17

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

Level of difficulty Easy
Reading time 7 min
Views 27K

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

Читать далее
Total votes 81: ↑47 and ↓34 +13
Comments 136

WebSocket сервер для мини игры обмена файлами (Rust)

Level of difficulty Easy
Reading time 9 min
Views 3.6K

Всем привет! Это туториал по написанию небольшого WebSocket сервера для мультиплеерной мини игры. Суть игры простая – обмениваешься файлами с другими игроками в небольшом 2D пространстве. Полный код приложений есть в гитхабе, протестировать можно на сайте.

Читать далее
Total votes 8: ↑8 and ↓0 +8
Comments 0

Linux на esp32s3

Level of difficulty Medium
Reading time 12 min
Views 24K

Вопрос о том, можно ли загрузить линукс на микроконтроллерах Espressif я
впервые услышал в 2015, в период бума esp8266. Тогда мой ответ на него
был: "нет, не это ядро и не на этом железе". Но прошло 8 лет и ответ
изменился на "да, и у меня есть рабочий пример". Дальше рассказ о том,
как это произошло.

Читать далее
Total votes 150: ↑149 and ↓1 +148
Comments 18

Information

Rating
Does not participate
Location
Украина
Registered
Activity