Size: a a a

2019 September 20
Stepaneko
источник
2019 September 21
Stepaneko
Вращаем пирамидку :3
#dev
источник
Stepaneko
ftvkyo2011
Написал немного кода для умножения векторов и матриц, скоро можно будет пилить 3D 😌
#dev
Кстати про этот код. Решил его выкинуть, и вместо него использовать JOML. С ним удобно работать в связке с LWJGL (есть даже официальные примеры), ну и еще я просто подумал, что если я все ручками буду писать, то будет печально.

#dev
источник
Stepaneko
Oof...
//Пока что код отстойный и очень медленный, но я собираюсь его улучшать.
#dev
источник
Stepaneko
На данной картинке производится отрисовка большого количества блоков. Я не знаю точное их количество, но могу сказать, как много они сейчас занимают места:
Вокруг персонажа 9 регионов, каждый регион - 16x16x16. В каждом регионе рандомно почти 10% заполнено данными блоками.
Каждая сторона блока требует 4 вершины, потому что состоит из 2 треугольников. Итого на каждый блок требуется 24 вершины, каждая из которых занимает 4 * 6 байт - гомогенная координата вершины и ее привязка к текстуре. Я не могу для отрисовки блока использовать 8 вершин как в обычном кубе, так как мне нужно производить привязку к текстуре для разных сторон блока.
Кроме того, сейчас в видеокарту загружаются все вершины, даже те, которые находятся вне области видимости (которая составляет всего 45 градусов).

#dev
источник
Stepaneko
Теперь можно вращать камерой 😊
Уменьшил заполненность блоками до 1%, чтобы пока не приходилось заниматься оптимизацией происходящего.
#dev
источник
Stepaneko
Запустил приложение под наблюдением профилировщика VisualVM (рекомендую, очень приятный на первый взгляд) и обнаружил, что у меня уже воткнутно Thread.sleep по 1/60 секунды между каждой отрисовкой 🙈. Это значит, что когда у меня одна итерация отрисовки будет занимать 1/60 секунды (приблизительно 16 мс), FPS упадет вдвое, потому что после каждой отрисовки будет ожидание в такое же количество времени.
В такой ситуации можно просто пропускать столько миллисекунд, сколько не хватает до полной 1/60 секунды.
Кроме того из текста выше можно сделать вывод, что если мы хотим держать 60 FPS, нам нужно каждую отрисовку укладывать в 16мс. А еще, если в приложении будет какая-то логика, которая должна обновляться независимо от отображаемой картинки (например, перемещения соперников), нужно будет пропускать некоторые итерации отрисовки (то есть обновлять логику несколько раз между отрисовками).

#dev
источник
2019 September 23
Stepaneko
🙈
источник
2019 September 25
Stepaneko
Обновил раскладку клавиатуры, которой я пользуюсь, и которую я когда-то внес в xkeyboard-config. Оригинальная идея принадлежит @dbvvmpg, с его согласия я вытащил из его версии раскладки кучу специфичной пунктуации и подал заявку на добавление.
источник
Stepaneko
Раскладка выглядит так:
`~ 1! 2@ 3#3№ 4$ 5% 6^ 7& 8* 9( 0) -_ =+
хХ бБ уУюЮ кК еЕэЭ нН гГ шШщЩ жЖ зЗ [{ ]} \|
фФ ыЫ вВ аА пП рР оОёЁ лЛ дД ;: '"           //"
яЯ чЧцЦ сС мМ иИйЙ тТ ьЬъЪ ,< .> /?
В каждой группе символов:
- первый символ - простое нажатие на кнопку;
- второй символ - нажатие на кнопку с Shift;
- третий символ (если есть) - нажатие на кнопку с переключателем третьего слоя клавиатуры;
- четвертый сивол (если есть) - нажатие на кнопку с переключателем третьего слоя клавиатуры и Shift.
Переключателем третьего слоя клавиатуры у меня является правый Alt. Таким образом, чтобы набрать "ё" я нажимаю RightAlt+(русская о), а чтобы набрать "Ё" я нажимаю RightAlt+Shift+(русская о).
Переключатель задается через конфигурационные файлы xorg, или его можно установить из консоли при установке раскладки, если не хочется лезть в настройки xorg.
источник
Stepaneko
Если у вас установлен xkeyboard-config, то можно установить данную раскладку клавиатуры так:
cat /etc/X11/xorg.conf.d/90-custom-kbd.conf

Section "InputClass"
   Identifier "keyboard defaults"
   MatchIsKeyboard   "on"

   Option "XkbLayout" "us,ru"
   Option "XkbVariant" ",unipunct"
   Option "XKbOptions" "grp:caps_toggle,lv3:ralt_switch"
EndSection
Данные настройки поставят раскладки us и ru(unipunct), сделают переключение языка по Caps Lock и переключателем третьего слоя назначат правый Alt.
источник
2019 September 27
Stepaneko
Оаоаоаоа мммм (столовая 1С что ты делаешь продолжай)
источник
2019 September 29
Stepaneko
Когда-то у меня был файлик на гугл-диске, в который я вносил заметки по поводу каких-то системных файлов и интересных пакетов. Сейчас вот решил это некрасивое дело удалить и завести репозиторий на Github, где я буду складировать свои заметки. Делать его открытым пока что не планирую, потому что там может содержаться какая-то sensitive информация, но возможно заметки оттуда будут служить материалом для постов в данный канал. Хотя пока что тут даже больше полезной (или интересной) информации, чем в этом новом репозитории.

С технической точки зрения стоял сложный выбор, что мне использовать для организации заметок. В процессе нашел интересный список всяких self-hosted штук, и сначала думал не использовать ли что-то оттуда, потому что сейчас я свой сервер с доменом ftvkyo.me почти никак не использую. И это было бы очень круто - мне очень понравилось вносить инфу в Confluence на работе (хотя для моей ситуации такое ПО конечно было бы излишеством).

В итоге остановился на куче файликов org-mode (ради этого даже восстановил конфиг Emacs) в репозитории Github, в процессе даже нашел баг конвертации org-mode'ного \\ в переносы строки на Github (сообщать я о нем конечно не буду, мне лень). Пока что выглядит неплохо, но из-за особенностей совмещения org-mode и моего стиля составления списков пока что файлы выглядят просто как куча заголовков без текста между ними. Зато мотивирует добавить туда побольше информации 😌

Кстати, кроме конфига Emacs, в репозитории с конфигом появились разные интересные файлики из /etc/, я собираюсь описать их как раз в новом репозитории с заметками и потом, возможно, рассмотреть их здесь. Один вы уже видели - /etc/X11/xorg.conf.d/90-custom-kbd.conf двумя сообщениями выше.
источник
2019 October 01
Stepaneko
Oops...
источник
2019 October 07
Stepaneko
UNEXPECTED INCONSISTENCY
// Новодачная
источник
Stepaneko
Путешествую во времени
// Окружная
источник
2019 October 08
Stepaneko
В последнее время я не очень много внимания уделяю написанию кода fuzzy-broccoli, как всегда есть куча других дел, которые надо сделать, а когда они сделаны, хочется просто отдохнуть 😌
Из новостей, я недавно конвертировал все в Kotlin (нет, я не хочу аргументировать, просто захотелось), ещё немного ограничил вращение камеры мышью и сделал относительно нормальный Thread.sleep, теперь он спит разные промежутки времени в зависимости от того, сколько времени занял рендер (я писал об этом здесь).

#dev
Telegram
Записки Степанеко :3
Запустил приложение под наблюдением профилировщика VisualVM (рекомендую, очень приятный на первый взгляд) и обнаружил, что у меня уже воткнутно Thread.sleep по 1/60 секунды между каждой отрисовкой 🙈. Это значит, что когда у меня одна итерация отрисовки будет занимать 1/60 секунды (приблизительно 16 мс), FPS упадет вдвое, потому что после каждой отрисовки будет ожидание в такое же количество времени.
В такой ситуации можно просто пропускать столько миллисекунд, сколько не хватает до полной 1/60 секунды.
Кроме того из текста выше можно сделать вывод, что если мы хотим держать 60 FPS, нам нужно каждую отрисовку укладывать в 16мс. А еще, если в приложении будет какая-то логика, которая должна обновляться независимо от отображаемой картинки (например, перемещения соперников), нужно будет пропускать некоторые итерации отрисовки (то есть обновлять логику несколько раз между отрисовками).

#dev
источник
Stepaneko
Недавно взял Linux & Unix humble bundle, версию за 15$ (эх ностальгия по тем временам, когда я там брал паки игр). Пока что начал с Linux system programming от Robert Love, как раз хотел ее прочитать. Начало очень нравится :)
Не знаю как пойдет, потому что последние пару лет почти не было книг, которые мне удалось дочитать до конца. Уже два года лежат клевые SICP и Дискретная математика для программистов в бумажном варианте 😒. Даже TAPL начинал читать, но продолжить не получилось, опять же из-за кучи навалившегося всего.
Может хоть сейчас с какой-то относительной стабильностью что-то получится с чтением таких книг и с кодом для себя.
источник
2019 October 09
Stepaneko
Сегодня мой куратор (работаю в Центре молодых специалистов 1С) подарил мне шоколадку :3

Если кратко, то я сделал оригинальное исследование по локализации кроссплатформенного приложения, реализовал решение и задокументировал его, а также сравнил его с уже существующим решением.

Когда-то, когда я только начал это исследование, он сказал, что если я справлюсь, он подарит мне шоколадку, и вот 😌
источник
2019 October 10
Stepaneko
Сегодня немного "поигрался" с Null safety в fuzzy-broccoli. До этого я говорил про конвертацию в Kotlin, тогда я практически не просматривал код после конвертации. Сейчас же просмотрел все места, где встречались typename?, ?., !!., ?: и откорректировал их. У пары важных полей даже убрал Nullable.

#dev
источник