Пытаюсь немного в музыку, пока закину сюда свою робкую попытку.
понедельник, 26 июля 2021 г.
воскресенье, 25 июля 2021 г.
extern "C" и namespaces в C/C++ или как я подгорел на выходных
За что я люблю и ненавижу C++ одновременно - так это за то, что он может заставить себя почувствовать дураком и нубом себя в любой момент работы с ним.
TL;DR никогда ни за что, не мешайте extern "C" и пространства имён в определениях функций. Это не работает нормально ни в одном компиляторе и, как обычно, это описано только где-то в дебрях stackoverflow, хоть и разрешено в компиляторах MinGW и MSVC .
Замечу, что эта проверка есть в SonarSource но почему-то в виденных мной учебниках плюсов это правило отсутствует, что принципиально неправильно.
суббота, 10 июля 2021 г.
О стримах по соревнованиям по играм
Я ни разу не киберкотлета, и обычно стримы по играм мне не заходят, как и по спорту в целом - слишком медленно и скучновато, а чаще всего проходит всё это проходит мимо меня, потому что непонятно за кого топить и почему меня вообще это должно волновать.
Но вот сегодня наконец был относительно большой (насколько возможно) чемпионат по моей любимой Mental Omega, транслировавшийся на https://www.twitch.tv/topazjuanmo и мне прямо сильно зашло. Во-первых, наконец-то RTS. Во-вторых, это был относительно весёлый опыт, потому что было не сильно жестко, иногда чувствовалось, что люди просто не успевают замечать что происходит. Это радует, ибо если глянуть на всяких монстров игры в RTS - то там просто люди как-то всё поспевают. Мне такое не заходит, ибо такое ощущение, что играют боты. А тут как-то всё душевнее и приятнее. Я неожиданно обнаружил, что болею за одну из команд, хоть она и проиграла.
Увидел кстати пример абьюза рендерера игры, когда чувак прятал свой юнит за текстурой вражеского здания, потому что это возможно и его не было видно. Выглядело довольно любопытно и забавно, понравилось.
Следующее подобное мероприятие обещают в августе. Я надеюсь оно будет и планирую потратить своё время и насладиться зрелищем.
Такие дела.
пятница, 11 июня 2021 г.
Впечатления от Loria
Сейчас на GOG бесплатно раздают Loria - и я само собой не удержался, чтобы не посмотреть на неё.
Геймплейно, это клон Warcraft III с графикой Warcraft II. И в целом, он меня этим порадовал - все элементы оригинала на месте, играется неплохо и нормальный ИИ сильно не выносит. Судя по плашкам, у игры какие-то проблемы с финансированием и разработкой и поэтому она... недоработана. Обидно, потому что пока это лучшая из новых RTS, которую я пока видел.
Да, баланс не очень. Да, как-то сильно много копирования Warcraft III в плохом смысле: опять эта любовь к требованию высокого APM, что есть форменное болото. Да, опять нет редактора карт (я скучаю по редактору карт WIII ужасно). Игра бы взлетела, думаю, в коопе - но увы, сетевой игры нет.
Но всё же, это неплохо: графика хороша, интуитивное управление, даже звук в игре. Даже со всеми недостатками это лучше одной другой игры, о которой я говорил раннее, потому что даже тут можно собрать довольно большую армию, хоть потом приходится страдать от косяков собственного микроконтроля.
Я всё же надеюсь, что она со временем допилится, хотя судя по мертвой ссылке на дискорд - ожидать не стоит.
Исходники Периметра уже на GitHub
Наконец-то исходники Периметр есть на GitHub . Если кто не помнит - это была такая стратегия в середине нулевых с довольно интересной историей, и, что особенно отрадно - это была отечественная RTS.
Самое приятное - в ней сейчас, это то, что есть комьюнити в чате TG, которое взяло игру под своё крыло и потихоньку допиливает. Я там есть, но, увы, поактивничать мне не даёт отсутствие времени.
Конечно, исходники там довольно сложные, читаются тяжело и много сильно устаревших на 2021 год вещей, но со стороны community уже есть WIP работа под студией 2019, портирование на CMake и много чего другого. А самое приятное - это то, что можно самому сесть и наконец посмотреть в чём дело, разобраться со старыми багами если хочется и есть время. Врать не буду, в своём отрочестве я о таком мог только мечтать. What a time to be alive! Надеюсь, что на него появятся со временем интересные моды и, само собой, карты.
четверг, 25 февраля 2021 г.
Дискретная математика и ML
Недавно пришлось снова поглазеть на нейросети по долгу службы. Сказано сделано - запилил датасет, почистил, сделал входы и выходы. Чтобы не сильно заморачиваться сделал их бинарными, т.е. наборами нулей и единиц, само собой большими. В итоге поймал себя на мысли, что можно в лоб добиться неплохого результата (но с оверфитом), если не делать никаких градиентных спусков, а тупо запилить набор логических функций через СДНФ и СКНФ. Думаю, что дело всё же в синтетичности проблемы - вряд ли с пикселами и сложными структурами такое прокатит.
понедельник, 1 февраля 2021 г.
History export from Skype and Discord
Я как-то писал про историю сообщений в Skype, но как-то руки не доходили до скриптов, которые бы позволили нормально собрать историю в HTML-файлы, разбитые по дням. Зачем это нужно? В первую очередь, иногда интересны именно старые диалоги, которые непонятно как искать. Иногда просто хочется полной внятной истории переписок, так как по умолчанию показываются последние сообщения, а скроллить вверх миллион раз неудобно. К этому присовокупилось желание иметь подобное для Discord.
Справедливости ради, умнее всего поступили разработчики Telegram - там адекватная кнопка экспорта есть по умолчанию и она даже разбивает по какой-то своей логике сообщения на файлы, что довольно удобно.
Для Discord нашёл DiscordChatExporter, но он экспортирует всё одним файлом, а хотелось разбиения по дням.
В результате сделал пару скриптов на PHP для облегчения жизни и экспорта истории из Discord и Skype. Скрипты набросал на скорую руку, так что там, конечно, говнокод. Само собой, выложил их на GitHub и скачать их можно отсюда.
Процесс такой.
1. Перед началом в каждой из папок "skype" и "discord" выполнить composer install.
Для Discord
2. Использовать DiscordChatExporter, и экспортировать в нём историю в HTML
3. Создать структуру папок, где результат будет расположен (что-то типа папки "outdiscord" и папки "data" в ней, рядом со скриптами в папке "discord)". Скачать иконки гильдии и аватарки и положить их в папку "data".
4. Отредактировать и запустить discord/split.php, используя переменные в начале скрипта, чтобы разбить историю по дням.
5. Отредактировать и запустить discord/downloadpreview.php, используя переменные в начале скрипта, чтобы скачать превью картинок и расположить их в папке outdiscord/data.
6. Использовать скрипт "template/stringstomenu.php" и файлы HTML в папке "template", чтобы сформировать индексные файлы и меню на основе index.html и menu.html. Индексные файлы скопировать в выходную папку ("outdiscord")
Для Skype
2. Найти и скопировать main.db, вытащив оттуда id нужного разговора.
3. Создать структуру папок, где результат будет расположен (что-то типа папки "outskype" и папки "data" в ней, рядом со скриптами в папке "discord)". Скачать иконки гильдии и аватарки и положить их в папку "data". Последние можно сделать самому - например на основе дискордовских.
4. Отредактировать и запустить "skype/parser.php", используя переменные в начале скрипта
6. Использовать скрипт "template/stringstomenu.php" и файлы HTML в папке "template", чтобы сформировать индексные файлы и меню на основе index.html и menu.html. Индексные файлы скопировать в выходную папку ("outskype")
Тестировал их на новом PHP 8.0 - всё работает, за исключением превью для Youtube. Надо будет покопаться, что там не так, но пока на это нет времени. Процессы получились довольно громоздкими, но это из-за того, что это разовое действие, которое пока потребовалось только один раз.