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

C++ Developer

Send message

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

Level of difficultyMedium
Reading time15 min
Views23K

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

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

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

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

Reading time4 min
Views21K

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


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


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




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

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

Reading time13 min
Views13K
image

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

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

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

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

Level of difficultyEasy
Reading time17 min
Views72K

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

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

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

Не Unity единым…

Level of difficultyEasy
Reading time15 min
Views36K

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

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

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

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

Level of difficultyMedium
Reading time15 min
Views27K

Сегодня я задумалась о том, что происходит, когда запускаешь в 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
Comments10

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

Reading time9 min
Views16K

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

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

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

Level of difficultyMedium
Reading time10 min
Views2.9K

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

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

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

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

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

Level of difficultyEasy
Reading time4 min
Views17K

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

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

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

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

Level of difficultyMedium
Reading time40 min
Views16K

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

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

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

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

Level of difficultyEasy
Reading time9 min
Views4.2K

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

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

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

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

Level of difficultyEasy
Reading time12 min
Views1.3K

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

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

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

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

Level of difficultyEasy
Reading time4 min
Views6.9K

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

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

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

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

Level of difficultyMedium
Reading time9 min
Views3.2K

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

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

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

Level of difficultyMedium
Reading time9 min
Views5.7K

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

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

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

Трюк с LD_PRELOAD

Reading time7 min
Views4.4K

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

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

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

Level of difficultyHard
Reading time28 min
Views10K

Немного о bfc


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


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

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

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

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

Level of difficultyEasy
Reading time7 min
Views28K

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

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

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

Level of difficultyEasy
Reading time9 min
Views3.8K

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

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

Linux на esp32s3

Level of difficultyMedium
Reading time12 min
Views25K

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

Читать далее
Total votes 150: ↑149 and ↓1+148
Comments21
1
23 ...

Information

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