Как стать автором
Обновить
4
0
Юрий Наконечный @Inobelar

C++ Developer

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

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

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров23K

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

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

Читать далее
Всего голосов 132: ↑131 и ↓1+130
Комментарии99

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

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

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


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


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




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

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

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

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

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

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

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

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

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

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

O, тепленькая пошла!
Всего голосов 267: ↑263 и ↓4+259
Комментарии229

Не Unity единым…

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

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

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

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

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

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров27K

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

print("hello world")

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

$ python3 hello.py
hello world

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

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

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

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

Читать далее
Всего голосов 41: ↑40 и ↓1+39
Комментарии111

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

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

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

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

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

Читать далее
Всего голосов 17: ↑16 и ↓1+15
Комментарии4

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

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

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

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

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

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

Уровень сложностиСредний
Время на прочтение40 мин
Количество просмотров16K

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

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

Термин - это...
Всего голосов 16: ↑16 и ↓0+16
Комментарии6

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

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

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

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

Читать далее
Всего голосов 14: ↑13 и ↓1+12
Комментарии68

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 21: ↑15 и ↓6+9
Комментарии63

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

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров3.2K

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

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

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

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров5.7K

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

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

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

Трюк с LD_PRELOAD

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

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

Читать далее
Всего голосов 48: ↑32 и ↓16+16
Комментарии15

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

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

Немного о bfc


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


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

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

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

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

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

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

Читать далее
Всего голосов 81: ↑47 и ↓34+13
Комментарии136

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

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

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

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

Linux на esp32s3

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров25K

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

Читать далее
Всего голосов 150: ↑149 и ↓1+148
Комментарии21
1
23 ...

Информация

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