Кодерская мастерская
Теперь нужно перезагрузить сервер в установщик, и если там вдруг не UEFI, вероятно ничего не получится, и потребуется физический доступ. Однако 2025 год на дворе, и UEFI достаточно давно и достаточно много где, как минимум на арендуемых серваках. Поэтому выполняем…
Если планируете ставить ubuntu ниже 24, или просто для перестраховки, можно добавить network-config для usb-устройства, иначе cloudinit проигнорирует сетевой интерфейс.
Почему-то из файла он загружать его не захотел, но загрузил из параметра ядра, выглядит это так:
network-config в данном случае - это конфиг в yaml формате, пожатый с помощью gzip и закодированный в base64, исходный конфиг такой:
Нейминг странный, конфиг расширял на основе примера из доки, не знаю, для чего добавлять zz в начало, будто бы имя секции может быть любым.
С таким конфигом раздача завелась на 20 и 22 ubuntu, другие не пробовал.
Подключаем телефон проводом к компьютеру, на котором будем ставить систему, загружаемся с флешки, сразу включаем раздачу по usb.
В процессе загрузки телефон может периодически решать, что устройство отключилось, и раздача может прекратиться, поэтому первые секунд 20 следите за ней, и включайте заново.
Если включить её потом, cloudinit может проигнорировать новый интерфейс, поэтому лучше включать как можно раньше.
Также подключаемся к hotspot-у телефона, заходим в shell через adb.
Теперь мониторим файл /proc/net/arp
Содержимое достаточно читаемое, представляет собой arp таблицу, в ней вы в какой-то момент должны увидеть новое устройство в подсети usb-tethering-а, это и есть наша ubuntu.
Далее запускаем proxy:
Подставьте в качестве целевого ip адрес вашей машины.
Прога поднимется, должны побежать логи.
Открываем второй терминал, в нём подключаемся по ssh, используя адрес вашего телефона и порт 1234, и да здравствует subiquity!
Теперь, главное, чтобы этот шайтан-мост не развалился в середине установки, и удачи, если решитесь повторить.
Немного о subiquity:
Буду краток, это достаточно мутная псевдографическая срань, в любой непонятной ситуации используйте горячку для просмотра текущей строки, в nvda это nvda+up, а также имейте в виду, что некоторые подменю разварачиваются как бы справа от главного меню, что добавляет немного веселья и безумия в скучный и унылый процесс установки.
Как подменю, например, открывается конфигурация разделов в конфигураторе дисков, и nvda одновременно видит куски из обоих интерфейсов, очень удобненько, всем рекомендую.
Почему-то из файла он загружать его не захотел, но загрузил из параметра ядра, выглядит это так:
ds=nocloud\;s=/cdrom/nocloud/ network-config=H4sIAIxzLGgC/5XLOwqAMBAE0F7IHaYOpBGr3CbGgRV0lWS18PSKWthazuftLHVcNKJ1DU1YlFaja4DjCGmaAvVOwCB57SKsbHyKOVmWdwQ0zYyg+q81+YVNvnqr/R993f0JKz7GMs4AAAA=
network-config в данном случае - это конфиг в yaml формате, пожатый с помощью gzip и закодированный в base64, исходный конфиг такой:
version: 2
ethernets:
zz-all-en:
dhcp4: true
match:
name: en*
zz-all-eth:
dhcp4: true
match:
name: eth*
zz-all-usb:
dhcp4: true
match:
name: usb*
Нейминг странный, конфиг расширял на основе примера из доки, не знаю, для чего добавлять zz в начало, будто бы имя секции может быть любым.
С таким конфигом раздача завелась на 20 и 22 ubuntu, другие не пробовал.
Подключаем телефон проводом к компьютеру, на котором будем ставить систему, загружаемся с флешки, сразу включаем раздачу по usb.
В процессе загрузки телефон может периодически решать, что устройство отключилось, и раздача может прекратиться, поэтому первые секунд 20 следите за ней, и включайте заново.
Если включить её потом, cloudinit может проигнорировать новый интерфейс, поэтому лучше включать как можно раньше.
Также подключаемся к hotspot-у телефона, заходим в shell через adb.
Теперь мониторим файл /proc/net/arp
Содержимое достаточно читаемое, представляет собой arp таблицу, в ней вы в какой-то момент должны увидеть новое устройство в подсети usb-tethering-а, это и есть наша ubuntu.
Далее запускаем proxy:
/data/local/tmp/proxy tcp -p ":1234" -T tcp -P "192.168.191.188:22"
Подставьте в качестве целевого ip адрес вашей машины.
Прога поднимется, должны побежать логи.
Открываем второй терминал, в нём подключаемся по ssh, используя адрес вашего телефона и порт 1234, и да здравствует subiquity!
Теперь, главное, чтобы этот шайтан-мост не развалился в середине установки, и удачи, если решитесь повторить.
Немного о subiquity:
Буду краток, это достаточно мутная псевдографическая срань, в любой непонятной ситуации используйте горячку для просмотра текущей строки, в nvda это nvda+up, а также имейте в виду, что некоторые подменю разварачиваются как бы справа от главного меню, что добавляет немного веселья и безумия в скучный и унылый процесс установки.
Как подменю, например, открывается конфигурация разделов в конфигураторе дисков, и nvda одновременно видит куски из обоих интерфейсов, очень удобненько, всем рекомендую.
Правый и левый каналы поменялись местами в моих беспроводных наушниках.
Я не менял никаких настроек в винде, просто в какой-то момент заметил, что они поменялись, ещё 3 часа назад всё было нормально, а 5 минут назад - уже нет.
Как же я это исправил?
Выключил и включил наушники, т.е. проблема случилась где-то между usb-свистком и самими наушниками, а винда тут, скорее всего, не виновата.
#ОноСломалось
Я не менял никаких настроек в винде, просто в какой-то момент заметил, что они поменялись, ещё 3 часа назад всё было нормально, а 5 минут назад - уже нет.
Как же я это исправил?
Выключил и включил наушники, т.е. проблема случилась где-то между usb-свистком и самими наушниками, а винда тут, скорее всего, не виновата.
#ОноСломалось
После обновления до 24h2 раз в несколько дней от проводника приходит следующее уведомление:
"При получении трассировки произошла ошибка."
Никаких проблем будто бы больше нет, но вот сегодня я решил от нефиг делать запустить стандартный механизм проверки и восстановления целостности системных файлов, он сказал, что чего-то там восстановил, и теперь у меня пропал поиск в меню пуск, а перезагружаться лень.
#ОноСломалось
"При получении трассировки произошла ошибка."
Никаких проблем будто бы больше нет, но вот сегодня я решил от нефиг делать запустить стандартный механизм проверки и восстановления целостности системных файлов, он сказал, что чего-то там восстановил, и теперь у меня пропал поиск в меню пуск, а перезагружаться лень.
#ОноСломалось
👍1
Кодерская мастерская
После обновления до 24h2 раз в несколько дней от проводника приходит следующее уведомление: "При получении трассировки произошла ошибка." Никаких проблем будто бы больше нет, но вот сегодня я решил от нефиг делать запустить стандартный механизм проверки и…
Я починил пуск, было достаточно перезапустить проводник!
А потом ещё раз перезапустить.
И ещё раз.
И после трёх перезапусков проводника поиск в пуске появился.
Точно цитату не помню, но смысл примерно такой: "Безумие - это многократное повторение одного и того же действия с одним и тем же результатом, в надежде получить что-то новое".
Но в случае с виндой выходит, что клин клином вышибать приходится.
А потом ещё раз перезапустить.
И ещё раз.
И после трёх перезапусков проводника поиск в пуске появился.
Точно цитату не помню, но смысл примерно такой: "Безумие - это многократное повторение одного и того же действия с одним и тем же результатом, в надежде получить что-то новое".
Но в случае с виндой выходит, что клин клином вышибать приходится.
👍1
Каждый раз, когда я ставлю незнакомый софт, я на сто раз проверяю, точно ли я устанавливаю не поддельную версию. Если это приложение в google play, смотрю на кол-во оценок и скачиваний (у фейка не будет высокого рейтинга и миллионов загрузок), если ставлю пакет из пакетного менеджера, несколько раз перепроверю написание, если ставлю что-то малоизвестное, до последнего буду пытаться найти официальный сайт продукта и т.п.
Например однажды минуты на 3 залип при установке яндекс музыки, когда увидел, что её выложил не яндекс, а какой-то Direct Cursus Computer Systems Trading LLC.
До этого момента думал, что моя паранойя чрезмерна, и я просто трачу время на фигню, но сейчас посмотрел видео, в котором как раз повествуется о том, как люди подобным образом подцепили поддельные бинарники сомнительного происхождения в свой арч-линукс.
Более мне добавить нечего, рекомендую и вам следить за тем, что и откуда вы ставите.
Видос на англ:
https://www.youtube.com/watch?v=rUzzBY-P3HE
Например однажды минуты на 3 залип при установке яндекс музыки, когда увидел, что её выложил не яндекс, а какой-то Direct Cursus Computer Systems Trading LLC.
До этого момента думал, что моя паранойя чрезмерна, и я просто трачу время на фигню, но сейчас посмотрел видео, в котором как раз повествуется о том, как люди подобным образом подцепили поддельные бинарники сомнительного происхождения в свой арч-линукс.
Более мне добавить нечего, рекомендую и вам следить за тем, что и откуда вы ставите.
Видос на англ:
https://www.youtube.com/watch?v=rUzzBY-P3HE
YouTube
Arch Linux Is Under Attack...
Arch linux is great, but the AUR is sort of scary. In this video we talk about malicious packages found in the AUR last week.
https://www.reddit.com/r/linux/comments/1m3wodv/malware_found_in_the_aur/
Go secure yourself online with Multi Factor Authentication…
https://www.reddit.com/r/linux/comments/1m3wodv/malware_found_in_the_aur/
Go secure yourself online with Multi Factor Authentication…
👍2❤1
Юристы имеются среди подписчиков?
Заказал товар в dns с предоплатой, постомат сломался, сотрудник вскрыл ячейку вручную и выдал коробку, в системе заказ продолжает отображаться как ожидающий получения.
Если отменить, фокус сработает и деньги вернуться, то нарушу ли я закон таким образом?
Вопрос гипотетический, ибо цена эксперимента - косарь рублей, но интересно всё же.
Заказал товар в dns с предоплатой, постомат сломался, сотрудник вскрыл ячейку вручную и выдал коробку, в системе заказ продолжает отображаться как ожидающий получения.
Если отменить, фокус сработает и деньги вернуться, то нарушу ли я закон таким образом?
Вопрос гипотетический, ибо цена эксперимента - косарь рублей, но интересно всё же.
Зашёл на gitverse, и вижу в шапке следующее:
"В 22:00 МСК будет объявлен перерыв - 15 минут. Вы отдыхаете - мы обновляем!"
И вот с одной стороны о какой конкуренции можно говорить, если у них бывают даунтаймы в принципе, а с другой стороны - github, перед тем как прилечь на часок, когда вас предупреждал об этом, а?..
"В 22:00 МСК будет объявлен перерыв - 15 минут. Вы отдыхаете - мы обновляем!"
И вот с одной стороны о какой конкуренции можно говорить, если у них бывают даунтаймы в принципе, а с другой стороны - github, перед тем как прилечь на часок, когда вас предупреждал об этом, а?..
👍1
Как открыть чат в последней версии telegram для Android
Если вам сильно надо открыть чат с человеком в тг, и чата у вас с ним нет, для этого ранее использовалась кнопка в профиле.
В последней версии телеграмма доступность поломали, и кнопку скринридеры не видят.
Обходное решение следующее: в профиле открыть дополнительные действия (3 точки), там добавить ярлык чата на главный экран, выйти на главный экран и открыть чат пользуясь созданным ярлыком.
Когда что-то напишете, чат, как обычно, окажется в списке чатов, и ярлык можно будет удалить.
#A11yTricks
Если вам сильно надо открыть чат с человеком в тг, и чата у вас с ним нет, для этого ранее использовалась кнопка в профиле.
В последней версии телеграмма доступность поломали, и кнопку скринридеры не видят.
Обходное решение следующее: в профиле открыть дополнительные действия (3 точки), там добавить ярлык чата на главный экран, выйти на главный экран и открыть чат пользуясь созданным ярлыком.
Когда что-то напишете, чат, как обычно, окажется в списке чатов, и ярлык можно будет удалить.
#A11yTricks
👍1
Forwarded from Gozaltech blog (Beqa Gozalishvili)
What's new?
Close
5.69.1
September 31, 2025
We’ve launched a new Сoncerts section. Here you’ll find live shows' announcements from artists you might like. Dates, venues, and tickets — all in one place. Come in and choose where to go next
Closer to the stage,
Yandex Music team
Это я получил в качестве changelog-а после обновления Яndex музыки.
Close
5.69.1
September 31, 2025
We’ve launched a new Сoncerts section. Here you’ll find live shows' announcements from artists you might like. Dates, venues, and tickets — all in one place. Come in and choose where to go next
Closer to the stage,
Yandex Music team
Это я получил в качестве changelog-а после обновления Яndex музыки.
Youtube-канал Сергея Немчинского переходит исключительно на Украинский язык.
И с одной стороны, учитывая количество поступающего в мозг контента, плюс минус одна подписка ничего не решает, но с другой стороны, когда смотришь блогера долгие годы, и когда просмотр видосиков конкретного человека или команды продолжает быть интересным всё это время, обычные видосики становятся чем-то слегка большим, чем-то родным, привычным.
Конечно печально наблюдать как человек, с вроде бы похожим складом ума, вдруг решает прекратить использовать инструмент, просто потому, что его родина - родина неприятеля.
Можно конечно начать раскрывать тему и сказать, что язык нельзя сравнивать с молотком или автоматом, что язык - это культура, обычаи, образ мышления и тому подобные вещи. Но по сути своей, на околотехническом канале русский язык выполнял роль, в первую очередь, инструмента для коммуникации блогера с аудиторией, однако мнение автора, к сожалению, оказалось иным.
Учить целый язык из-за единственного блогера - точно не то, чем мне хочется заниматься в ближайшее время, а потому минус одна подписка, ни больше, ни меньше.
PS
В целом ситуация неоднозначная, мне лично кажется, что он сам может и не против, но кто-то сильно попросил, ибо человек не полностью самостоятельно блогерством занимается.
И с одной стороны, учитывая количество поступающего в мозг контента, плюс минус одна подписка ничего не решает, но с другой стороны, когда смотришь блогера долгие годы, и когда просмотр видосиков конкретного человека или команды продолжает быть интересным всё это время, обычные видосики становятся чем-то слегка большим, чем-то родным, привычным.
Конечно печально наблюдать как человек, с вроде бы похожим складом ума, вдруг решает прекратить использовать инструмент, просто потому, что его родина - родина неприятеля.
Можно конечно начать раскрывать тему и сказать, что язык нельзя сравнивать с молотком или автоматом, что язык - это культура, обычаи, образ мышления и тому подобные вещи. Но по сути своей, на околотехническом канале русский язык выполнял роль, в первую очередь, инструмента для коммуникации блогера с аудиторией, однако мнение автора, к сожалению, оказалось иным.
Учить целый язык из-за единственного блогера - точно не то, чем мне хочется заниматься в ближайшее время, а потому минус одна подписка, ни больше, ни меньше.
PS
В целом ситуация неоднозначная, мне лично кажется, что он сам может и не против, но кто-то сильно попросил, ибо человек не полностью самостоятельно блогерством занимается.
Отключение нового repl в python 3.13
Спустя пару месяцев страданий я совершенно неожиданно для себя нашёл решение за 30 секунд.
Обновившись до питона 3.13, я столкнулся с тем, что они переделали интерактивный режим.
Во-первых он теперь заставляет windows terminal на каждую введённую буковку выплёвывать весь промпт, таким образом при написании каждого символа кода в nvda попадает всё ранее написанное.
С этим я как-то вроде даже смирился, но потом оказалось, что ввод многострочного кода стал... странным. Хз даже как описать, если кратко, то за пару минут я с ним не разобрался и забил.
Пока я просто пишу код всё идёт хорошо, но как только хочу повторить ранее введённые строки, начинается какая-то дичь (они будто не вводятся и не исполняются, а если даже и вводятся, то интерпретатор застревает в каком-то странном режиме, из которого фиг пойми как выйти, кроме как по ctrl+c).
Наконец я решил попробовать загуглить, что же это такое они сделали и как теперь с этим жить, а оказалось, что можно сетнуть переменную PYTHON_BASIC_REPL, и новое поведение отключится.
#A11yTricks
Спустя пару месяцев страданий я совершенно неожиданно для себя нашёл решение за 30 секунд.
Обновившись до питона 3.13, я столкнулся с тем, что они переделали интерактивный режим.
Во-первых он теперь заставляет windows terminal на каждую введённую буковку выплёвывать весь промпт, таким образом при написании каждого символа кода в nvda попадает всё ранее написанное.
С этим я как-то вроде даже смирился, но потом оказалось, что ввод многострочного кода стал... странным. Хз даже как описать, если кратко, то за пару минут я с ним не разобрался и забил.
Пока я просто пишу код всё идёт хорошо, но как только хочу повторить ранее введённые строки, начинается какая-то дичь (они будто не вводятся и не исполняются, а если даже и вводятся, то интерпретатор застревает в каком-то странном режиме, из которого фиг пойми как выйти, кроме как по ctrl+c).
Наконец я решил попробовать загуглить, что же это такое они сделали и как теперь с этим жить, а оказалось, что можно сетнуть переменную PYTHON_BASIC_REPL, и новое поведение отключится.
#A11yTricks
Приколы доступности от сбера
Открыл гигачат, и вижу такое поле:
"clickable Опишите вашу edit multi line"
Т.е. это текстовое поле с меткой "Опишите вашу", а дальше, видимо, уже от фантазии пользователя зависит.
В процессе тыканья я выяснил, что в placeholder поля динамически дописываются слова, видимо побуквенно, процесс этот можно наблюдать открыв dev tools.
Однако nvda захватывает то, что там было при разворачивании вкладки, и таким образом, пока я это выяснял, мне попалось: "Опишите вашу зад".
По-моему с таким предложением они переплюнули даже Грока от Илона Маска.
Открыл гигачат, и вижу такое поле:
"clickable Опишите вашу edit multi line"
Т.е. это текстовое поле с меткой "Опишите вашу", а дальше, видимо, уже от фантазии пользователя зависит.
В процессе тыканья я выяснил, что в placeholder поля динамически дописываются слова, видимо побуквенно, процесс этот можно наблюдать открыв dev tools.
Однако nvda захватывает то, что там было при разворачивании вкладки, и таким образом, пока я это выяснял, мне попалось: "Опишите вашу зад".
По-моему с таким предложением они переплюнули даже Грока от Илона Маска.
😁3❤1
Сколько должно быть опыта в программировании, чтобы перестать допускать такие ошибки?
Кстати скоро выпущу переработанный и переделанный с нуля аддон audioTimer, можно добавлять несколько таймеров, настраивать кастомные звуки срабатывания, задавать количество повторений таймера, повторяющиеся уведомления после истечения таймера...
if self.timer.enabled:
self.enable_item = self._add_menu_item(_("Enable"), self.on_enable)
else:
self.disable_item = self._add_menu_item(_("Disable"), self.on_disable)
Кстати скоро выпущу переработанный и переделанный с нуля аддон audioTimer, можно добавлять несколько таймеров, настраивать кастомные звуки срабатывания, задавать количество повторений таймера, повторяющиеся уведомления после истечения таймера...
Начал использовать ИИ для программирования, и вдруг меня посетила глубокая мысль.
Сначала человечество придумало динамически типизированный язык, чтобы упростить себе жизнь.
Потом человечество придумало type hints для динамически типизированного языка, чтобы упростить себе жизнь.
А потом человечество придумало ии пишущего тайпхинты, чтобы упростить себе жизнь.
В какой же момент мы свернули не туда?..
Сначала человечество придумало динамически типизированный язык, чтобы упростить себе жизнь.
Потом человечество придумало type hints для динамически типизированного языка, чтобы упростить себе жизнь.
А потом человечество придумало ии пишущего тайпхинты, чтобы упростить себе жизнь.
В какой же момент мы свернули не туда?..
Читая логи nvda, порой можно найти интересные вещи, однажды я писал про "Разрушительный сбой", а сегодня делюсь вот таким:
Остаётся только догадываться, куда же все они делись...
FileNotFoundError: [WinError 18] Больше файлов не осталось.Остаётся только догадываться, куда же все они делись...
Исправляем pager в git
Вводные данные: вы используете windows terminal, git, и в качестве пейджера используется less.
Pager - это такая штука, через которую git, или любая другая программа выводит данные постранично.
Это всё хорошо и классно работает, Но проблема следующая, когда, допустим, просматриваем log, less вроде открывается, но для nvda по прежнему доступен весь буфер, и найти первую строку выведенной страницы достаточно сложно.
Раньше я думал, что это особенность nvda и/или less, но в какой-то момент заметил, что less, открытый вручную, ведёт себя как раз так, как нужно, он перекрывает старый буфер, и shift+numpad7 приводит курсор к первой строке на странице.
В результате гугления я выяснил, что git, по дефолту, запускает less с переменной окружения LESS, через которую передаёт в него параметры FRX.
И F, например, достаточно полезен, он заставляет less не входить в интерактивный режим, если выхлоп помещается на один экран, однако X, как оказалось, ломает нужное нам поведение, и из-за него во-первых nvda может убегать за границы страницы, а во-вторых после закрытия пейджера на экране остаётся огрызок текста.
Решения у проблемы два. Задать переменную LESS самостоятельно, или переопределить поведение less, заставив его выключить то, что было включено через environment.
Второе решение кажется мне наиболее удобным и правильным, т.к. мы точечно лечим исходную проблему less + git, не затрагивая другой софт, который тоже может выводить что-нибудь через less.
А сделать это можно одной простой командой:
Теперь логи, дифы и иные полезности будут выводиться без побочных эффектов, и с ними можно будет удобно взаимодействовать в windows terminal.
Кстати для удобного чтения дифов в терминале рекомендую дополнение dev box, ибо продуктивность, по крайней мере в моём случае, заметно выросла, и будто бы это гораздо удобнее, чем решение, предлагаемое в vscode, в прочем, это уже совсем другая история.
Вводные данные: вы используете windows terminal, git, и в качестве пейджера используется less.
Pager - это такая штука, через которую git, или любая другая программа выводит данные постранично.
Это всё хорошо и классно работает, Но проблема следующая, когда, допустим, просматриваем log, less вроде открывается, но для nvda по прежнему доступен весь буфер, и найти первую строку выведенной страницы достаточно сложно.
Раньше я думал, что это особенность nvda и/или less, но в какой-то момент заметил, что less, открытый вручную, ведёт себя как раз так, как нужно, он перекрывает старый буфер, и shift+numpad7 приводит курсор к первой строке на странице.
В результате гугления я выяснил, что git, по дефолту, запускает less с переменной окружения LESS, через которую передаёт в него параметры FRX.
И F, например, достаточно полезен, он заставляет less не входить в интерактивный режим, если выхлоп помещается на один экран, однако X, как оказалось, ломает нужное нам поведение, и из-за него во-первых nvda может убегать за границы страницы, а во-вторых после закрытия пейджера на экране остаётся огрызок текста.
Решения у проблемы два. Задать переменную LESS самостоятельно, или переопределить поведение less, заставив его выключить то, что было включено через environment.
Второе решение кажется мне наиболее удобным и правильным, т.к. мы точечно лечим исходную проблему less + git, не затрагивая другой софт, который тоже может выводить что-нибудь через less.
А сделать это можно одной простой командой:
git config --global core.pager "less -+X"
Теперь логи, дифы и иные полезности будут выводиться без побочных эффектов, и с ними можно будет удобно взаимодействовать в windows terminal.
Кстати для удобного чтения дифов в терминале рекомендую дополнение dev box, ибо продуктивность, по крайней мере в моём случае, заметно выросла, и будто бы это гораздо удобнее, чем решение, предлагаемое в vscode, в прочем, это уже совсем другая история.
Однажды проходил курсы на яндекс практикуме, с тех пор на github остались учебные репы.
И уже несколько лет, каждую неделю мне github присылает письма с уведомлениями о том, что то в одной, то в другой репе они автоматически нашли уязвимость.
А сегодня настал тот день, когда мне надоели эти письма, и я решил их выключить, ибо конкретно в этих репозиториях я ничего менять не планирую, и просто храню их для истории.
Так вот за все эти годы в одном из репозиториев, гитхаб нашёл, внимание... 135 уязвимостей!
Остаётся только надеяться, что ни один из десятков сервисов, которым мы ежедневно доверяем свои данные, не имеет такой выдающийся метрики.
И уже несколько лет, каждую неделю мне github присылает письма с уведомлениями о том, что то в одной, то в другой репе они автоматически нашли уязвимость.
А сегодня настал тот день, когда мне надоели эти письма, и я решил их выключить, ибо конкретно в этих репозиториях я ничего менять не планирую, и просто храню их для истории.
Так вот за все эти годы в одном из репозиториев, гитхаб нашёл, внимание... 135 уязвимостей!
Остаётся только надеяться, что ни один из десятков сервисов, которым мы ежедневно доверяем свои данные, не имеет такой выдающийся метрики.
🔥1😢1
Вхожу в сервис альфа-страхование через госуслуги, выдал все разрешения, жду редиректа.
Доолго жду, секунд 20.
И дождался:
#ОноСломалось
Доолго жду, секунд 20.
И дождался:
Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 41959424 bytes) in /var/www/alfastrah/htdocs/public/bitrix/modules/main/classes/mysql/database_mysqli.php on line 54
[ErrorException] E_ERROR
Allowed memory size of 1073741824 bytes exhausted (tried to allocate 41959424 bytes) (0)
/var/www/alfastrah/htdocs/public/bitrix/modules/main/classes/mysql/database_mysqli.php:54
----------
#ОноСломалось
Автоматизация публикации аддонов в NVDA addon store
Для понимания и использования описанного ниже, вы должны быть знакомы с проектом addonTemplate, а также в общих чертах разбираться в github actions.
Совместно с Бекой (AKA gozaltech) мы разработали относительно простой набор скриптов, автоматизирующий публикацию дополнений nvda в официальный магазин дополнений.
Я уже сделал с их помощью около десятка публикаций, и, по вашим просьбам, опишу ниже, как это работает.
Суть публикации состоит в том, что вы должны создать issue в github-репозитории для приёма дополнений.
В issue нужно указать всю необходимую информацию об аддоне (название, версию, прямую ссылку на nvda-addon файл и т.п.).
Далее аддон проходит полуавтоматическую проверку, и если у ребят из nvaccess, занимающихся приёмкой, не возникает вопросов, от вас не требуется никаких действий, и аддон попадает в магазин.
То есть в большинстве случаев единственное действие для публикации аддона - это создание issue, далее всё происходит без вмешательств.
Как работают скрипты:
1. Вы подготавливаете исходный код аддона на основе addon template.
2. Пишете команду: scons release version=0.1.0 channel=dev.
3. scons модифицирует build vars, создаёт тег релиза и выполняет push.
4. На тег релиза тригерится github actions workflow, который собирает nvda-addon файл и создаёт issue в репозитории addon store от вашего имени.
Дальнейшую коммуникацию с nvaccess, при необходимости, вы ведёте в issue самостоятельно.
Как настроить:
Для начала нужно выпустить personal access token для вашего github аккаунта, не буду описывать, как именно это сделать, процедура достаточно тривиальная, в доке гитхаба разобрана по шагам.
Я рекомендую выпускать полноценный, а не fine-grained токен, так как fine-grained нельзя сделать бессрочным, и его придётся периодически перевыпускать.
При создании токена можно дать доступ только на создание issues, это конечно позволит потенциальному злоумышленнику, похитившему токен, создать issue в любой репе от вашего имени, но не позволит произвести иные деструктивные действия.
При этом токен будет вечным, и его можно будет использовать годами.
После выпуска токена его нужно добавить в секреты репозитория вашего аддона, с именем USER_TOKEN.
Затем нужно добавить в репозиторий workflow файл и обновить sconstruct.
К сожалению ни мои, ни Бекины руки не дошли до того, чтобы законтрибьютить это в репозиторий addon template, но файлы можно взять из репозитория существующего аддона.
Я рекомендую https://github.com/addonWorkshop/speechFilter
Так как там есть кое-какие полезные правки.
Вам нужно забрать директорию .github, а также файл sconstruct, и положить в свой репозиторий.
Затем достаточно выполнить `scons release channel=<channel> version=<version>, и если всё получилось, то через какое-то время в nvaccess/addon-datastore будет создана issue.
Для отправки issue используется action https://github.com/beqabeqa473/submitNVDAAddon
Вы можете ознакомиться с его readme, чтобы узнать о возможных входных и выходных параметрах.
Ну и в целом стоит прочитать инструкцию перед использованием, не правда ли?..
UPD
Пожалуй стоит упомянуть мой вариант настройки, в котором я использую отдельную организацию на github.
Сделал я её по одной простой причине, у github есть возможность создавать organizational secrets, и именно для этого организация и нужна.
Таким образом, мне достаточно просто создать репозиторий в организации, и ему сразу доступна переменная USER_TOKEN, что довольно удобно.
Для понимания и использования описанного ниже, вы должны быть знакомы с проектом addonTemplate, а также в общих чертах разбираться в github actions.
Совместно с Бекой (AKA gozaltech) мы разработали относительно простой набор скриптов, автоматизирующий публикацию дополнений nvda в официальный магазин дополнений.
Я уже сделал с их помощью около десятка публикаций, и, по вашим просьбам, опишу ниже, как это работает.
Суть публикации состоит в том, что вы должны создать issue в github-репозитории для приёма дополнений.
В issue нужно указать всю необходимую информацию об аддоне (название, версию, прямую ссылку на nvda-addon файл и т.п.).
Далее аддон проходит полуавтоматическую проверку, и если у ребят из nvaccess, занимающихся приёмкой, не возникает вопросов, от вас не требуется никаких действий, и аддон попадает в магазин.
То есть в большинстве случаев единственное действие для публикации аддона - это создание issue, далее всё происходит без вмешательств.
Как работают скрипты:
1. Вы подготавливаете исходный код аддона на основе addon template.
2. Пишете команду: scons release version=0.1.0 channel=dev.
3. scons модифицирует build vars, создаёт тег релиза и выполняет push.
4. На тег релиза тригерится github actions workflow, который собирает nvda-addon файл и создаёт issue в репозитории addon store от вашего имени.
Дальнейшую коммуникацию с nvaccess, при необходимости, вы ведёте в issue самостоятельно.
Как настроить:
Для начала нужно выпустить personal access token для вашего github аккаунта, не буду описывать, как именно это сделать, процедура достаточно тривиальная, в доке гитхаба разобрана по шагам.
Я рекомендую выпускать полноценный, а не fine-grained токен, так как fine-grained нельзя сделать бессрочным, и его придётся периодически перевыпускать.
При создании токена можно дать доступ только на создание issues, это конечно позволит потенциальному злоумышленнику, похитившему токен, создать issue в любой репе от вашего имени, но не позволит произвести иные деструктивные действия.
При этом токен будет вечным, и его можно будет использовать годами.
После выпуска токена его нужно добавить в секреты репозитория вашего аддона, с именем USER_TOKEN.
Затем нужно добавить в репозиторий workflow файл и обновить sconstruct.
К сожалению ни мои, ни Бекины руки не дошли до того, чтобы законтрибьютить это в репозиторий addon template, но файлы можно взять из репозитория существующего аддона.
Я рекомендую https://github.com/addonWorkshop/speechFilter
Так как там есть кое-какие полезные правки.
Вам нужно забрать директорию .github, а также файл sconstruct, и положить в свой репозиторий.
Затем достаточно выполнить `scons release channel=<channel> version=<version>, и если всё получилось, то через какое-то время в nvaccess/addon-datastore будет создана issue.
Для отправки issue используется action https://github.com/beqabeqa473/submitNVDAAddon
Вы можете ознакомиться с его readme, чтобы узнать о возможных входных и выходных параметрах.
Ну и в целом стоит прочитать инструкцию перед использованием, не правда ли?..
UPD
Пожалуй стоит упомянуть мой вариант настройки, в котором я использую отдельную организацию на github.
Сделал я её по одной простой причине, у github есть возможность создавать organizational secrets, и именно для этого организация и нужна.
Таким образом, мне достаточно просто создать репозиторий в организации, и ему сразу доступна переменная USER_TOKEN, что довольно удобно.
codeHelper-0.2.0.nvda-addon
2.9 KB
Озвучивание текущей строки в vscode
Многие привыкли нажимать ctrl+g в vscode, чтобы быстро узнать номер текущей строки, однако пару версий назад разработчики запороли доступность этого диалога, и номер строки перестал озвучиваться.
А в предпоследней версии починили.
А в последней версии опять запороли.
Поэтому вот простенький аддон, который позволяет узнать номер строки по нажатию nvda+g.
И хоть буквально в предыдущем посте есть инструкция по автоматизации публикации в addon store, даже при её наличии мне выкладывать аддон лень, так что по старинке.
Многие привыкли нажимать ctrl+g в vscode, чтобы быстро узнать номер текущей строки, однако пару версий назад разработчики запороли доступность этого диалога, и номер строки перестал озвучиваться.
А в предпоследней версии починили.
А в последней версии опять запороли.
Поэтому вот простенький аддон, который позволяет узнать номер строки по нажатию nvda+g.
И хоть буквально в предыдущем посте есть инструкция по автоматизации публикации в addon store, даже при её наличии мне выкладывать аддон лень, так что по старинке.
👍2