Кодерская мастерская
137 subscribers
1 photo
14 files
39 links
Блог Данила Пылаева
Download Telegram
Сели батарейки в клаве

Пишу постик про поездку в Хакасию, и символы перестают вводиться.
Жму стрелки, тишина.
Выхожу на рабочий стол, тишина.
Пытаюсь перезапустить nvda горячкой, отслеживаемой отдельной прогой, тоже никакой реакции.
Открываю ноут, тыкаю стрелочку, и там всё работает.
Выключил и включил клаву, всё равно не работает.
Переткнул контроллер, один фиг не работает!
Батарейки я менял пару месяцев назад, поэтому про них думал в последнюю очередь.
Поставил новые батарейки, клава заработала.
Странно то, что клавиатура перестала работать и больше не включилась, хотя обычно, когда садятся батарейки, клавиатура выключалась, но аппаратное выключение / включение возвращало её к жызни, и так можно было часа три работать.
Погрыз немного старые батарейки, поставил их обратно, пока вроде работает, пошёл писать дальше.

#ОноСломалось
Обход ограничения на количество приложений в режиме Ультра-экономии энергии MIUI

В MIUI есть замечательная функция, режим ультра-экономии энергии, позволяющая жить телефону без подзарядки как можно дольше.
В этом режиме система глушит большинство фоновых сервисов, останавливает, кажется, все пользовательские приложения и отключает всякие энергоёмкие функции (bluetooth, точку доступа и т.п.).
Кое-что потом можно включить из шторки. А некоторые функции вообще недоступны (ту же точку оттуда включить нельзя, хотя если у вас какой-нибудь Tasker есть, то можно почти всё, что и в обычном режиме 🙂).
И в этом режиме открывается собственный Launcher, содержащий информацию о примерном времени работы, текущую дату и кнопку выход.
Ещё там имеется три приложения: Телефон, Контакты и Сообщения.
Можно добавить ещё 6 пользовательских, для этого тоже есть кнопочка, открывающая список приложений.
И вот это ограничение, как раз, мне и не понравилось.
Конечно понятно, что оно сделано для того, чтобы пользователь в режиме ультра-экономии не открыл кучу приложений и не потерял преимущества, которые в этом режиме доступны.
Но во-первых фоновые приложения можно жёстко приостанавливать (по-моему там это и происходит), а во-вторых это же Android! Какого фига кто-то что-то решил за меня?!
Сначала я думал, что мне и шести приложений хватит, но в поездке, о которой был пост выше, я понял, что такого количество мне явно не хватает.
Смотреть я решил в сторону добавления стандартного лаунчера в лаунчер ультра-экономии (из того списка приложений, разумеется, он скрыт, чтобы пользователь не добавил его и не получил неограниченный доступ к своим приложениям).
Этот путь мне показался наиболее простым и удобным, потому что во-первых я не шарю в модификации приложений, и вряд ли за приемлемое время смог бы подпатчить его, чтобы увеличить ограничение, заложенное разработчиками,
а во-вторых мне не нужно ничего делать, кроме добавления лаунчера, потому что при его запуске я получу привычный интерфейс, уже содержащий все используемые мной приложения.
И так, чтобы добавить лаунчер на экран ультра-экономии энергии, нужно сделать следующее:
1. Нужен root или twrp, так как необходимо работать в директории /data/data, куда без рут-доступа система не пустит.
2. Определить имя пакета вашего лаунчера, в моём случае это Nova Launcher, имя пакета у него com.teslacoilsw.launcher.
3. Вытащить файл /data/data/com.miui.securitycenter/shared_prefs/remote_provider_preferences.xml.
4. Открыть файл в текстовом редакторе.
5. Найти строку вида <string name="pref_key_superpower_power_save_app">...</string>.
Вместо троеточия будет список названий пакетов пользовательских приложений в определённом формате.
Список помещён в квадратные скобки.
Названия перечислены через запятую.
Каждое название помещено в кавычки, но, так как это xml, в явном виде внутри тега они записаны быть не могут и замещены на &quot;.
В моём случае эта строка выглядит так: <string name="pref_key_superpower_power_save_app">[&quot;net.dinglisch.android.taskerm&quot;,&quot;com.hb.dialer.free&quot;,&quot;ak.alizandro.smartaudiobookplayer&quot;,&quot;com.perm.kate&quot;,&quot;org.telegram.messenger&quot;,&quot;com.teslacoilsw.launcher&quot;]</string>
В самом конце, как раз, находится название пакета моего лаунчера, вам нужно проделать что-то подобное.
6. Добавить в строку название пакета вашего лаунчера, не нарушая описанный выше формат.
Также следите за тем, чтобы в списке не было более 6 приложений (все приложения после шестого не будут отображаться в режиме ультра-экономии, я проверял).
Я мог что-то упустить в процессе, но сомневаюсь, что приложение, заточенное под отображение шести иконок, вдруг начнёт показывать больше только потому, что их больше в конфиге.
7. Сохранить файл и запушить его обратно, не сломайте владельца и права (должны быть 660 system system).

Не пишу о том, как использовать adb, получать root-права и т.п, потому что пост и так вышел объёмным, а прочитать об этом можно в интернете на куче различных ресурсов. Или можете задавать вопросы в комментариях.

#Настройка #ХакВоБлаго #Android #MIUI
👍1
URLPlayer-0.6.1.nvda-addon
233.9 KB
URLPlayer

Раньше я слушал интернет-радио через winamp, это было не очень удобно (для регулировки громкости надо было его разворачивать, при обрыве интернета воспроизведение не возобновлялось и т.п.).
И решил я написать дополнение для nvda, чтобы удобно слушать радио и управлять воспроизведением.
Ну и, собственно, написал, вот, что оно умеет:
Воспроизведение url-потоков.
Возобновление при обрывах интернета и опциональное возобновление после перезагрузки nvda.
Остановка и возобновление воспроизведения, изменение громкости и переключение между устройствами вывода с помощью горячих клавиш.
Опциональная остановка воспроизведения при обнаружении звукового потока из другого приложения (например ролик в youtube в браузере) и возобновление воспроизведения при остановке потока в другом приложении.

#NVDAAddon
switch_layout.bgt
474 B
Переключение раскладки в BGT-окнах

В BGT существует очень странная и противная особенность: нельзя переключать раскладку, если окно игры активно.
Я уже не разрабатываю ничего на BGT, но, возможно, для кого-то этот скрипт будет полезен.
Он содержит две функции:
1. switch_layout - позволяет переключить раскладку средствами Win API.
2. switch_layout_monitor - проверяет нажатие alt+shift, и выполняет switch_layout при обнаружении.

#BGT
Смена пароля в "Яндекс 360"

Чтобы сменить пароль в "Яндекс 360" нужно сделать следующее:
1. Зайти на адрес admin.yandex.ru.
2. Найти заголовок "Сотрудники".
3. Под заголовком найти нужного сотрудника и нажать на него.
4. Найти в нижней части страницы информацию о выбранном сотруднике (электронная почта, подразделение, часовой пояс и т.п.).
5. В верхней части найденного блока будет неподписанная кнопка, имя сотрудника и вторая неподписанная кнопка после имени, на неё нужно нажать.
6. Выше появится меню с возможными действиями.
7. Для смены пароля найдите соответствующее действие и активируйте его левым кликом.
8. Найдите заголовок "Смена пароля", под ним будет находиться искомая вами форма.

#A11yTricks
Есть темы для двух постов, какой хотите видеть первым?
Final Results
56%
Про Idle-игру в telegram боте
44%
Про добавление поддержки эмодзи в eSpeak 1.48.15 на Android
Idle Bank Alpha

Представляю вашему вниманию неплохую, на мой взгляд, Idle-игрушку.
Idle-игра, AKA Инкрементальная игра, AKA кликер — это игра, которая не требует постоянной активности от игрока.
Игрок может посещать игру пару раз за день, нажимать несколько кнопок, а большую часть времени внутриигровые процессы будут происходить сами собой.

Конкретно в Idle Bank нужно развивать свой банк, увеличивать его уровень за деньги и блоки.
Деньги производит банк, чем выше уровень, тем больше денег за единицу времени производится.
Блоки игрок получает в начале игры, а далее они будут выдаваться раз за определённый промежуток времени (это очень медленно, однако есть и другие способы их получения).

На данный момент в игре существует 7 фракций, фракция выбирается на старте, позже её можно будет изменить.
У каждой фракции своя валюта и свой тип блоков, а также имеется магазин, в котором можно покупать / продавать блоки своей / чужой фракции.
Ещё есть несколько миниигр, которые позволяют зарабатывать деньги и блоки.
Игра довольно гибкая, можно залипать несколько часов подряд, а можно заходить на пару минут в день.
Да, во втором случае прокачка будет происходить медленнее, но смысла игра от этого совсем не теряет!

Игра реализована в виде telegram-бота, всё управление производится кнопками, писать никогда ничего не нужно (по крайней мере сейчас).
На данный момент игра доступна на Английском, Итальянском и Португальском языке.
Но она достаточно простая, минимального уровня английского должно хватить, ну или юзайте переводчик.

Так как большая часть подписчиков этого канала использует программы экранного доступа для взаимодействия с операционными системами, заранее предупреждаю, что в игре активно используются эмодзи.
Если они у вас не читаются, играть вы сможете, но порой будет неудобно.
Если вы хотите играть с Android, используете eSpeak 1.48.15 с Talkback и хотите, чтобы читались эмодзи, то ждите следующий пост.

И будет круто, если кто-нибудь выберет фракцию федерального резерва и обгонит меня по вложенным блокам, а то я заколебался быть капитаном фракции 😊
Вы, скорее всего, пока ещё не знаете, что это значит, но это даже хорошо 😈

Играть

Если вас не пугает деанонимизация внутри игры, делитесь получившимися никами в комментариях!
И, как видно из названия, это альфа-версия игры, потому возможны всякие баги, правки баланса и т.п.
А ещё, разумеется, возможны полные ресеты (надеюсь этого не произойдёт, но всем нужно быть морально к этому готовым).
Гайда тоже нет, поэтому предлагаю несколько вариантов:
1. Если есть свободное время, почитайте changelog, ссылку на него можете найти в канале игры (ссылку на канал можно получить у бота по команде /help).
2. Если есть мноого свободного времени, можете почитать группу комментариев канала, там разработчик объясняет некоторые механики.
Или почитать группу хотя бы за сентябрь, там я, вероятно, достал разработчика своими вопросами, но теперь я знаю об игре немного больше.
3. Задавайте вопросы разработчику, если знаете английский, или задавайте их в комментариях под этим постом, я по возможности буду отвечать.

#Игры
ru_listx
5.1 MB
Эмодзи для eSpeak на Android

Ловите второй обещанный постик, он чё-то крупноватый получился, поэтому в telegraph.
Но файлы туда нельзя заслать, так что они будут тут.
1. eSpeak.v.1.48.15_with_ru_emoji - обычный eSpeak, в русский словарь которого добавлены эмодзи.
2. eSpeak.v.1.48.15_only_ru_with_emoji - тоже с поддержкой эмодзи, и с выпиленными голосами (кроме русского), что не даёт eSpeak-у переключаться на другие языки (ему просто некуда 😉) в некоторых приложениях, где на самом деле русский интерфейс.
3. ru_listx - исходник листа, из которого был собран словарь.

#ESpeak #Android #ХакВоБлаго
soundBeforeCapital-0.2.2.nvda-addon
17.9 KB
Sound before capital

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

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

Аддон не нужно как либо настраивать, также он не имеет собственных жестов (горячих клавиш).

Достаточно просто установить его, и он начнёт работать.

#NVDAAddon
NVDAControllerUncancel-0.1.1.nvda-addon
5.6 KB
NVDA controller uncancel

Описание в caption не влезло, поэтому оно тут: https://telegra.ph/NVDA-controller-uncancel-10-07

#NVDAAddon
Шестёрочки

25-го октября 2022 года, в 5 часов, 57 минут и 46 секунд по МСК Unix time достигнет значения 1666666666.
Живите теперь с этим.
Два года назад замечательный человек с ником GuideDev создал модификацию, позволяющую слепым играть в одну из самых популярных в мире игр Hearthstone.
Два года он каждый месяц выпускал обновления, один, без чьей-либо помощи декомпилировал код игры и адаптировал дополнение под новые версии Hearthstone.

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

Сейчас, через два года крапотливой работы, GuideDev понял, что не справляется с разработкой мода, не успевает "догонять" быстро меняющийся код игры, не может совмещать работу, учёбу и разработку мода.
GuideDev объявил, что вышедшая в начале ноября версия мода станет последней, и он больше не будет заниматься поддержкой дополнения.

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

Я прошу каждого подписать петицию и поделиться ей с друзьями. Даже если вы лично не являетесь незрячим и не играете в Hearthstone, своей подписью вы поможете тысячам, а может и миллионам незрячих игроков.

Ссылка на петицию:
https://chng.it/Lb6SGfz2pR
Лицензия AdGuard не вечная (но это не точно)

Когда-то давно я купил вечную лицензию на AdGuard.
Недавно писал в их поддержку из приложения, и после завершения переписки они прислали мне опрос.
В опросе просили оценить качество поддержки, в нём ничего необычного.
Но далее шла вся история переписки, и в самом первом сообщении были прикреплены некоторые файлы.
Как оказалось, приложение без моего ведома отправило им логи и ещё пару файлов, один из которых - license.txt.

Ну во-первых я возмутился: "Какого хрена оно вообще им было отправлено, ведь я же снимал эти флажки перед отправкой!".
А во-вторых мне стало интересно, что же в этих файлах находится?

В файле license.txt, как я и предполагал, оказалась моя лицензия, да-да, прям вот лицензионный ключ.
А также в нём была дата истечения моей вечной лицензии, ниже привожу содержимое файла (разумеется ключик и ещё какой-то id-шник я оттуда убрал 🙂).

application id: xxx
application status: ACTIVE
license: xxx (computers: 3, type: PREMIUM, expiration: Sun Aug 07 13:04:15 MSK 2118)


Т.е., выходит, что она не вечная! Она до 2118 года!
Скорее всего её продлят к этому времени, а может и нет, как знать...

В общем надо дожить до этого момента и посмотреть, что же будет.

Но это, на самом деле, не проблема, так как у меня ещё есть пожизненная инвалидность до 31 декабря 9999 года, докуда тоже было бы интересно дожить и проверить, что с ней станет (возможно про это тоже когда-нибудь напишу пост).
Клавиша Y

Многим известно, что я некоторое время назад был разработчиком игры HVR.
Сегодня вспомнил один забавный и поучительный случай, произошедший в процессе разработки, и решил вам о нём поведать.

В нашей команде было три человека
Я кодил, а ещё два человека занимались подбором и обработкой звуков.
Для тех, кто не вкурсе, поясню: игрушка была звуковой (приспособленной для незрячих), и хорошие звуки в игре такого типа - это уже половина успеха.
Игру мы решили делать для русского и английского языка.
Английский я на тот момент знал ну ооочень плохо. Не могу сказать, что сейчас я знаю его хорошо, моих навыков хватает на уверенное понимание технических манов и плюс-минус нормальное написание каких-нибудь сообщений к коммитам. Ну и порой приходится некоторые штуки прогонять через переводчик.
Поэтому в итоге я занимался кодингом, один человек переводом и звуками, а второй звуками и помогал в тестировании.

И вот однажды спрашивает меня переводчик, можно ли что-то сделать, чтобы после внесения изменений в файл с переводом не нужно было перезапускать клиент?
Я прикинул, что там кода пара строк, и приступил.
А в это время мама доготовила офигительный борщ и позвала всех хавать.
Я уже прописал обработку нажатия клавиши и перезагрузку, и осталась одна маленькая деталь.
Когда в звуковой игре происходит какое-то событие, оно должно быть обозначено либо звуком, либо сообщением, переданным на скринридер, либо и звуком и сообщением одновременно.
Звук для перезагрузки языковых данных избыточен (да и не было его у меня), поэтому я решил ограничиться сообщением.
И вот прописал я вызов функции и меня подклинило. Не мог я придумать, какой текст написать, потому что все мысли были о борще.
В итоге написал я сообщение и сохранил изменения.
А мы тогда в облаке работали, так что после того, как я изменил и сохранил код, он оказывался у остальных членов команды и они могли тут же с ним работать.
Вот доделал я, переводчику сообщил, что можешь переводить, сказал, какую клавишу нажимать для перезагрузки и убежал кушать.
И где-то на краю сознания промелькнула мысль, что нужно перед релизом не забыть убрать эту фичу.

Прошло несколько месяцев кодинга и отладки, и вот наступил долгожданный день релиза.
Скомпилировал я это чудо, заархивировал, куда-то мы это выложили.
Прошла пара минут, стали заходить первые игроки.
И вдруг, минут через 20 после релиза я осознал, что про ту фичу я забыл и ничего не выпилил.
Я был немного в афиге.
Да, эта клавиша не была внесена в readme, но ведь были и те, кто readme не читал, а просто заходили в игру и методом тыка изучали клавиши управления.
И вот те, кто так делал и натыкался на ту клавишу были в гораздо большем афиге!
Конечно, я быстренько убрал этот функционал и выпустил обновление, но угорали все потом ещё долго.
Причём и я тоже, мне даже почему-то не было стыдно, может сильно мелкий был (мне тогда было лет 14).
В общем первый релиз моего первого крупного продукта оказался весёлым и, в какой-то степени, поучительным.

Вы наверное не понимаете, почему у меня и игроков была такая реакция, и почему мне должно было быть стыдно?
Ну подумаешь, перезагрузка языковых данных, что в этом такого?
А дело всё в том самом сообщении, которое сгенерировал думающий о борще мозг.
Почему так получилось я понятия не имею, просто написал первое, что пришло в голову.
Вам, вероятно, интересно, что же я написал?
Что же, можете, наконец, утолить своё любопытство:

if(key_pressed(KEY_Y)) {
load_lang_p();
speak("Иди нахуй.", true);
}


Вот такая вот фигатень, мораль: не забывайте удалять отладку перед выкатыванием на прод.

P.S.

Может есть среди подписчиков те, кто как раз вот так вот тыкал и наткнулся, отпишите в комменты о чём вы подумали, какие испытали эмоции и т.п. Интересно же.
goToSleep-0.1.nvda-addon
4.4 KB
Go To Sleep

Дополнение позволяет быстро переводить Windows в спящий режим с помощью сочетания клавиш.
Удобно, если вы часто используете эту функцию, а на клавиатуре отсутствует клавиша сна.

#NVDAAddon
👍2
Snow war

Многим моим подписчикам известно о игре Snow war.

Для тех, кто не в курсе, немножко поясню:

Snow war - это звуковая online 3d игра, разработанная мной, Данилом Пылаевым, специально для проекта "Blind games" несколько лет назад.

Проект закрылся, игра осталась.

Я доработал её и релизнул год назад, чтобы поиграть мог каждый желающий.

В Snow war вы лепите снежки и бросаете их в противников, понижая их очки здоровья. Игроки, у которых закончились очки здоровья, выбывают из игры. Цель - остаться единственным игроком на поле.

Это поверхностное описание, подробнее о правилах игры и горячих клавишах вы можете прочитать в правилах.

А теперь к цели поста:

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

Предлагаю собраться завтра, в субботу 24-го декабря в 20:00 по Москве на каком-нибудь из серверов (ниже будет опрос) и сыграть несколько раундов.

Если у кого-то в это время не получается, не расстраивайтесь: серверы работают 24/7, так что вы сможете поиграть в любое удобное вам время, хоть в июле :D

Игру можно скачать тут

Всем новогоднего настроения!
👍1