Проблемы со временем
Почему-то так получается, что я постоянно встречаюсь с проблемами синхронизации времени, началось это всё ещё в детстве, и продолжается до сих пор.
Лет 10 назад у меня были говорящие часы, такая коробочка примерно 8 на 8 на 7 см, которая офигенно быстро убегала вперёд, за месяц набиралось около четырёх минут.
Ну это ладно, вероятно, там просто самые всратые часы реального времени, какие получилось найти у разработчиков, тут вроде всё понятно.
Чуть позже у меня появился компьютер с windows, на котором через пару недель использования стало отваливаться время. Оказалось, что села батарейка RTC, после её замены всё стало хорошо.
Прошло ещё несколько лет, и я стал обладателем телефона с Talkback-ом на борту (да, комп освоил раньше телефона, и такое бывает).
И с телефоном тоже были приколы: прыгал часовой пояс, решилась эта проблема выключением синхронизации часового пояса, и на какое-то время всё стало хорошо.
А тем временем наступил 2023, и винда решила упороться.
Работаю я за компом, никакие настройки времени в винде не трогал уже несколько месяцев, и тут вдруг выясняется, что в 10 утра винда показывает полпятого, причём совсем рандомно, без привязки к какому-то часовому поясу.
Ладно, синхронизировал, прошла пара месяцев, и что-то вдруг посыпалось, вроде браузер не смог верифицировать ssl.
Проверил время, И действительно, оно снова улетело, на этот раз вперёд, и уже почти на сутки. Причём это произошло месяца через полтора после посещения СЦ, где поменяли полумёртвый вентилятор системы охлаждения, и заодно освежили батарейку RTC.
Но самое увлекательное было впереди, наступило лето 23-го.
Лежу я на солнышке, загораю, видосик смотрю, тут кто-то в телегу написал, и так получилось, что как раз в это время я открыл шторку, а там...
Там уведомление от телеги через 2 минуты, прям вот так и написано.
Может не в точности так, но смысл такой, что пришло уведомление из будущего.
Проверяю телегу, и там действительно сообщение минуты на 2-3 позже, чем текущее системное время, что меня сильно удивило, т.к. вроде синхронизация по сети включена, и не должно быть таких жёстких смещений.
Попытки синхронизировать время ни к чему не привели, сработало сдвигание времени на несколько часов и ещё одна попытка синхронизации.
Такая же история со смещением назад произошла через несколько недель, а потом ещё одна...
В итоге я выяснил, что на самом деле телефон не синхронизирует время через интернет, как я всегда думал.
Он синхронизирует время по телефонным вышкам, на которых, как раз, оно может быть не очень точным (хз, почему в 2023 на таком оборудовании время имеет такие проблемы с точностью, но вот оно так, и остаётся жить с этим).
Временным решением стало выключение синхронизации времени, но часы в телефоне, как выяснилось, потихоньку убегают вперёд, поэтому так всё оставлять было нельзя.
И решение то я нашёл, установил ClockSync, который синхронизирует время по NTP, но вот только чтобы менять системное время нужен root, который у меня есть, но как же быть пользователям без таких привилегий?..
И на этом, разумеется, ничего не закончилось, пару недель назад я переустановил систему на сервере, поменяв девятый debian на 22-ю ubuntu, и угадайте, что произошло?
Получая сообщения от всяких сервисов я заметил, что приходят они раньше положенного, например сообщение, которое должно приходить в начале часо (т.е. в 0 минут), могло приходить в 59 минут.
Пошёл смотреть чего там с timedatectl, а там написано: System clock synchronized: no.
Стал разбираться, выяснил, что не работает systemd-timesyncd - сервис синхронизации по ntp, за 20 минут гугления ничего больше понять я не смог, и решил просто наугад задать ntp-сервер.
И знаете, это сработало! Я просто нагуглил какой-то рандомный ntp-сервер, задал его в конфиге, перезапустил службу, и оно сразу завелось!
Почему в дистрибутиве почти свежей ОС, причём ОС, которая более-менее должна быть дружелюбна к пользователю, нельзя было настроить ntp из коробки?..
В общем вот такая вот дичь порой происходит, и, скорее всего, этот случай далеко не последний.
Почему-то так получается, что я постоянно встречаюсь с проблемами синхронизации времени, началось это всё ещё в детстве, и продолжается до сих пор.
Лет 10 назад у меня были говорящие часы, такая коробочка примерно 8 на 8 на 7 см, которая офигенно быстро убегала вперёд, за месяц набиралось около четырёх минут.
Ну это ладно, вероятно, там просто самые всратые часы реального времени, какие получилось найти у разработчиков, тут вроде всё понятно.
Чуть позже у меня появился компьютер с windows, на котором через пару недель использования стало отваливаться время. Оказалось, что села батарейка RTC, после её замены всё стало хорошо.
Прошло ещё несколько лет, и я стал обладателем телефона с Talkback-ом на борту (да, комп освоил раньше телефона, и такое бывает).
И с телефоном тоже были приколы: прыгал часовой пояс, решилась эта проблема выключением синхронизации часового пояса, и на какое-то время всё стало хорошо.
А тем временем наступил 2023, и винда решила упороться.
Работаю я за компом, никакие настройки времени в винде не трогал уже несколько месяцев, и тут вдруг выясняется, что в 10 утра винда показывает полпятого, причём совсем рандомно, без привязки к какому-то часовому поясу.
Ладно, синхронизировал, прошла пара месяцев, и что-то вдруг посыпалось, вроде браузер не смог верифицировать ssl.
Проверил время, И действительно, оно снова улетело, на этот раз вперёд, и уже почти на сутки. Причём это произошло месяца через полтора после посещения СЦ, где поменяли полумёртвый вентилятор системы охлаждения, и заодно освежили батарейку RTC.
Но самое увлекательное было впереди, наступило лето 23-го.
Лежу я на солнышке, загораю, видосик смотрю, тут кто-то в телегу написал, и так получилось, что как раз в это время я открыл шторку, а там...
Там уведомление от телеги через 2 минуты, прям вот так и написано.
Может не в точности так, но смысл такой, что пришло уведомление из будущего.
Проверяю телегу, и там действительно сообщение минуты на 2-3 позже, чем текущее системное время, что меня сильно удивило, т.к. вроде синхронизация по сети включена, и не должно быть таких жёстких смещений.
Попытки синхронизировать время ни к чему не привели, сработало сдвигание времени на несколько часов и ещё одна попытка синхронизации.
Такая же история со смещением назад произошла через несколько недель, а потом ещё одна...
В итоге я выяснил, что на самом деле телефон не синхронизирует время через интернет, как я всегда думал.
Он синхронизирует время по телефонным вышкам, на которых, как раз, оно может быть не очень точным (хз, почему в 2023 на таком оборудовании время имеет такие проблемы с точностью, но вот оно так, и остаётся жить с этим).
Временным решением стало выключение синхронизации времени, но часы в телефоне, как выяснилось, потихоньку убегают вперёд, поэтому так всё оставлять было нельзя.
И решение то я нашёл, установил ClockSync, который синхронизирует время по NTP, но вот только чтобы менять системное время нужен root, который у меня есть, но как же быть пользователям без таких привилегий?..
И на этом, разумеется, ничего не закончилось, пару недель назад я переустановил систему на сервере, поменяв девятый debian на 22-ю ubuntu, и угадайте, что произошло?
Получая сообщения от всяких сервисов я заметил, что приходят они раньше положенного, например сообщение, которое должно приходить в начале часо (т.е. в 0 минут), могло приходить в 59 минут.
Пошёл смотреть чего там с timedatectl, а там написано: System clock synchronized: no.
Стал разбираться, выяснил, что не работает systemd-timesyncd - сервис синхронизации по ntp, за 20 минут гугления ничего больше понять я не смог, и решил просто наугад задать ntp-сервер.
И знаете, это сработало! Я просто нагуглил какой-то рандомный ntp-сервер, задал его в конфиге, перезапустил службу, и оно сразу завелось!
Почему в дистрибутиве почти свежей ОС, причём ОС, которая более-менее должна быть дружелюбна к пользователю, нельзя было настроить ntp из коробки?..
В общем вот такая вот дичь порой происходит, и, скорее всего, этот случай далеко не последний.
Проблема доверия языковым моделям
Помучал тут немного ChatGPT, и написал некоторые мысли на этот счёт, прочитать можно тут:
https://telegra.ph/Problema-doveriya-yazykovym-modelyam-10-14
Помучал тут немного ChatGPT, и написал некоторые мысли на этот счёт, прочитать можно тут:
https://telegra.ph/Problema-doveriya-yazykovym-modelyam-10-14
Telegraph
Проблема доверия языковым моделям
Решая очередную задачу, связанную с разработкой ПО, я задумался, можно ли обернуть асинхронный код в синхронный контекстный менеджер python, и поразмышляв секунд 30 решил, что никаких проблем такое решение вызвать не должно (ну почти). Ради интереса задал…
Спам от Литрес
Литресом я не пользуюсь, но сейчас понадобилось зайти, и решил я заодно отключить уведомления от них.
Зашёл на страницу настроек, а там с доступностью флажков большая беда: нет ни состояний, ни ролей.
Ну что же, полез в исходный код, кручу-верчу DOM-дерево, пытаюсь понять, что там и как.
И натыкаюсь на контейнер, в который вложены все флажки, а выглядит он следующим образом:
Да, в классе элемента прямым текстом написано, за что, на самом деле, отвечают сие флажки, вот такой вот прикол от разработчиков.
Литресом я не пользуюсь, но сейчас понадобилось зайти, и решил я заодно отключить уведомления от них.
Зашёл на страницу настроек, а там с доступностью флажков большая беда: нет ни состояний, ни ролей.
Ну что же, полез в исходный код, кручу-верчу DOM-дерево, пытаюсь понять, что там и как.
И натыкаюсь на контейнер, в который вложены все флажки, а выглядит он следующим образом:
<div class="Spam__checkboxes_3kJh8">...
Да, в классе элемента прямым текстом написано, за что, на самом деле, отвечают сие флажки, вот такой вот прикол от разработчиков.
👍2
Разрушительный сбой
NVDA, как некоторым известно, порой выдаёт всякие весёлые ошибки, которые просто происходят, и частенько даже не влияют на работоспособность nvda.
Видал я от неё всякое, но такое случилось со мной впервые.
Сначала быстро открылось и закрылось cmd-шное окно, в последнее время винда после установки обновлений любит таким баловаться, ничего необычного, я уже даже почти привык.
Потом, практически сразу, nvda блямкнула ошибкой, и я, как любопытный юзер, разумеется полез в журнал.
А там...
Что это было и какого вообще фига я не знаю, но выглядело настолько круто и грозно, что я хорошенько поржал.
NVDA, как некоторым известно, порой выдаёт всякие весёлые ошибки, которые просто происходят, и частенько даже не влияют на работоспособность nvda.
Видал я от неё всякое, но такое случилось со мной впервые.
Сначала быстро открылось и закрылось cmd-шное окно, в последнее время винда после установки обновлений любит таким баловаться, ничего необычного, я уже даже почти привык.
Потом, практически сразу, nvda блямкнула ошибкой, и я, как любопытный юзер, разумеется полез в журнал.
А там...
_ctypes.COMError: (-2147418113, 'Разрушительный сбой', (None, None, None, 0, None))
Что это было и какого вообще фига я не знаю, но выглядело настолько круто и грозно, что я хорошенько поржал.
errorSound-0.3.nvda-addon
4.3 KB
Error Sound
Это дополнение для NVDA позволяет включать или выключать воспроизведение звука ошибки независимо от настроек и версии.
Например, вы можете выключить воспроизведение звука ошибок в альфа-версии, или включить его в релизе.
Это дополнение для NVDA позволяет включать или выключать воспроизведение звука ошибки независимо от настроек и версии.
Например, вы можете выключить воспроизведение звука ошибок в альфа-версии, или включить его в релизе.
Вечный двигатель в Eurofly3
Относительно недавно вышла в свет бета-версия игры Eurofly3, в которой значительно переделали многие механики, повысили реалистичность, добавили новых фишек и всё в таком духе.
Одна из возможностей - это заправка самолёта, она, конечно, была и во второй версии, но в третьей с ней, на данный момент (2024-02-08 22:00 по мск) имеется презабавнейший баг.
Если убрать парковочный тормоз и в поле для ввода кол-ва топлива указать большое отрицательное значение (минус несколько десятков тысяч), то самолёт начнёт разгоняться с выключенными двигателями.
Взлететь, кажется, так не получится, т.к. он думает, что садится, и сразу после отрыва приземляется или разбивается, но если взлететь нормально, а потом заправиться отрицательным количеством топлива в воздухе, то лететь можно будет, наверное очень долго, постепенно набирая скорость.
Кстати да, заправка в небе тоже возможно, такая вот бета...
Если же подобрать скорость так, чтобы приблизить массу самолёта к нулевой (для стартовой Цесны это около -1500 литров), то начнётся лютое веселье, самолёт за пару секунд наберёт скорость в несколько миллионов, потом провалится в -2147483648 и уедет куда-то в далёкие дали, а если это сделать в полёте, то географические координаты станут либо бесконечными, либо начнут отображаться как NaN (не число).
Не знаю, зачем вам эта информация, но лично меня всегда веселят такие баги, когда что-то начинает работать странно, удивительно, и совсем не так, как предполагал разработчик продукта. В общем может кому-то это тоже будет интересно.
Относительно недавно вышла в свет бета-версия игры Eurofly3, в которой значительно переделали многие механики, повысили реалистичность, добавили новых фишек и всё в таком духе.
Одна из возможностей - это заправка самолёта, она, конечно, была и во второй версии, но в третьей с ней, на данный момент (2024-02-08 22:00 по мск) имеется презабавнейший баг.
Если убрать парковочный тормоз и в поле для ввода кол-ва топлива указать большое отрицательное значение (минус несколько десятков тысяч), то самолёт начнёт разгоняться с выключенными двигателями.
Взлететь, кажется, так не получится, т.к. он думает, что садится, и сразу после отрыва приземляется или разбивается, но если взлететь нормально, а потом заправиться отрицательным количеством топлива в воздухе, то лететь можно будет, наверное очень долго, постепенно набирая скорость.
Кстати да, заправка в небе тоже возможно, такая вот бета...
Если же подобрать скорость так, чтобы приблизить массу самолёта к нулевой (для стартовой Цесны это около -1500 литров), то начнётся лютое веселье, самолёт за пару секунд наберёт скорость в несколько миллионов, потом провалится в -2147483648 и уедет куда-то в далёкие дали, а если это сделать в полёте, то географические координаты станут либо бесконечными, либо начнут отображаться как NaN (не число).
Не знаю, зачем вам эта информация, но лично меня всегда веселят такие баги, когда что-то начинает работать странно, удивительно, и совсем не так, как предполагал разработчик продукта. В общем может кому-то это тоже будет интересно.
👍1
Вирус для BIOS. Бред или реальность?
Лет 20 назад по интернету гуляла информация, что существуют сверхкрутые вирусы, которые могут чего-то там в биосе подкрутить, и, например, спалить процессор или хард.
Я отношусь к этому скептически, но допускаю, что какой-то небольшой процент плат действительно можно было прям вот так из ОС угробить, но скорее всего нет.
В любом случае, сейчас у нас UEFI, безопасная загрузка, проверка подписей на каждом шагу и вот это вот всё. И все эти приколы со взломом биоса, как я думал, остались в прошлом.
Начну с небольшой предыстории. Вчера на мой ноут из центра обновлений пришёл апдейт биоса, ну пришёл и пришёл, что-нибудь пофиксили наверное, но ради интереса я решил заглянуть на сайт производителя и узнать, что именно завезли в новой версии.
Примечание к апдейту оказалось довольно кратким: "Update the patch for the LogoFAIL vulnerabilities".
Что перевести можно примерно так: "Обновлён патч для уязвимостей LogoFAIL."
Сам факт наличия уязвимости в UEFI меня слегка удивил, да и название показалось немного странным, поэтому я решил погуглить.
А нагуглил я неожиданно для себя следующее: оказывается, в конце 23-го года, некие исследователи нашли способ обойти безопасную загрузку и Intel Boot Guard, и сделали это не на уровне ОС, а на уровне UEFI.
А виноваты в уязвимости, как это часто бывает и как можно догадаться из названия, обыкновенные картинки, ну точнее не обыкновенные, а намеренно испорченные особым образом, и не сами картинки, а парсеры картинок, встроенные в UEFI.
Вкратце уязвимость заключается в следующем:
1. UEFI при запуске выводит на экран логотип производителя, который на некоторых платах возможно заменить на кастомный.
Атакующий подкладывает заранее подготовленную картинку в EFI раздел и прописывает в NVRAM некие переменные для замены стартового изображения.
Для этих действий внутри windows достаточно обычных прав администратора, которые мы часто выдаём приложениям не задумываясь.
2. При следующем запуске компьютера, UEFI, основываясь на инструкциях по замене логотипа, прописанных в NVRAM, вычитывает заражённое изображение и передаёт его парсеру.
3. Парсер спотыкается об некорректные данные, происходит переполнение буфера, которое позволяет записать в память, а затем и выполнить произвольный код, который может сделать всё что угодно с наивысшими привилегиями.
Железо так испортить, наверное, не получится, но вот залезть внутрь ОС и натворить там шпионских / деньговымогательских дел - почему бы и нет.
А учитывая, что эта штука, как я понял, прописывается в сам UEFI и выживает после переустановки ОС, потенциал уязвимость имеет немаленький.
На данный момент официально неизвестно о существовании вирусов, эксплуатирующих эту уязвимость, но учитывая, что на многие машины апдейты не попадают годами и десятилетиями, будет вообще не удивительно, если кто-то этим воспользуется.
Почитать про уязвимость подробнее (на английском) можно здесь: https://binarly.io/posts/finding_logofail_the_dangers_of_image_parsing_during_system_boot/index.html
Лет 20 назад по интернету гуляла информация, что существуют сверхкрутые вирусы, которые могут чего-то там в биосе подкрутить, и, например, спалить процессор или хард.
Я отношусь к этому скептически, но допускаю, что какой-то небольшой процент плат действительно можно было прям вот так из ОС угробить, но скорее всего нет.
В любом случае, сейчас у нас UEFI, безопасная загрузка, проверка подписей на каждом шагу и вот это вот всё. И все эти приколы со взломом биоса, как я думал, остались в прошлом.
Начну с небольшой предыстории. Вчера на мой ноут из центра обновлений пришёл апдейт биоса, ну пришёл и пришёл, что-нибудь пофиксили наверное, но ради интереса я решил заглянуть на сайт производителя и узнать, что именно завезли в новой версии.
Примечание к апдейту оказалось довольно кратким: "Update the patch for the LogoFAIL vulnerabilities".
Что перевести можно примерно так: "Обновлён патч для уязвимостей LogoFAIL."
Сам факт наличия уязвимости в UEFI меня слегка удивил, да и название показалось немного странным, поэтому я решил погуглить.
А нагуглил я неожиданно для себя следующее: оказывается, в конце 23-го года, некие исследователи нашли способ обойти безопасную загрузку и Intel Boot Guard, и сделали это не на уровне ОС, а на уровне UEFI.
А виноваты в уязвимости, как это часто бывает и как можно догадаться из названия, обыкновенные картинки, ну точнее не обыкновенные, а намеренно испорченные особым образом, и не сами картинки, а парсеры картинок, встроенные в UEFI.
Вкратце уязвимость заключается в следующем:
1. UEFI при запуске выводит на экран логотип производителя, который на некоторых платах возможно заменить на кастомный.
Атакующий подкладывает заранее подготовленную картинку в EFI раздел и прописывает в NVRAM некие переменные для замены стартового изображения.
Для этих действий внутри windows достаточно обычных прав администратора, которые мы часто выдаём приложениям не задумываясь.
2. При следующем запуске компьютера, UEFI, основываясь на инструкциях по замене логотипа, прописанных в NVRAM, вычитывает заражённое изображение и передаёт его парсеру.
3. Парсер спотыкается об некорректные данные, происходит переполнение буфера, которое позволяет записать в память, а затем и выполнить произвольный код, который может сделать всё что угодно с наивысшими привилегиями.
Железо так испортить, наверное, не получится, но вот залезть внутрь ОС и натворить там шпионских / деньговымогательских дел - почему бы и нет.
А учитывая, что эта штука, как я понял, прописывается в сам UEFI и выживает после переустановки ОС, потенциал уязвимость имеет немаленький.
На данный момент официально неизвестно о существовании вирусов, эксплуатирующих эту уязвимость, но учитывая, что на многие машины апдейты не попадают годами и десятилетиями, будет вообще не удивительно, если кто-то этим воспользуется.
Почитать про уязвимость подробнее (на английском) можно здесь: https://binarly.io/posts/finding_logofail_the_dangers_of_image_parsing_during_system_boot/index.html
www.binarly.io
Finding LogoFAIL: The Dangers of Image Parsing During System Boot
LogoFAIL by BINARLY: Discover the impact of image parsing vulnerabilities on system boot. Learn about LogoFAIL risks across UEFI firmware systems. Stay informed!
Проблема доверия языковым моделям (часть 2)
Где-то выше был длинный пост в телеграфе который никто не стал читать 🙂, в котором я рассказывал про проблемы слепого доверия языковым моделям.
В том посте я спрашивал у ГПТ про особенности синхронных и асинхронных менеджеров в python, и он там нёс лютую дичь.
Этот же пост будет чуть-чуть о другом: как реально можно использовать ГПТ для упрощения жизни.
В процессе написания некоторого софта я столкнулся с проблемой, и вот кто давно в программировании наверное поймёт, что я имею в виду.
1. Есть какой-то абстрактный поток операций.
2. С ним что-то не так, например его выполнение не приводит к нужному результату, или, как в моём случае, всё вроде ок, но сам код громоздкий / хрупкий / некрасивый.
3. В голову приходит мысль - загуглить это дерьмо.
4. "How to ...".
5. "Why ...".
6. "Best way to...".
7. Вот же дичь, как это загуглить вообще?!
И тут я решил просто спросить у ГПТ.
---
Я пишу программу на python, в ней часто встречается подобный код
Существует ли какое-то готовое решение для подсчёта таких ссылок?
Мне особенно не нравится, что я должен отслеживать 0 и удалять объект из словаря, чтобы избежать утечки памяти.
---
На самом деле во всём этом посте в целом и в вопросе в частности есть один подвох, но о нём чуть позже.
Вот задал я этот вопрос гпт, ну и вы, если шарите за код, в общем-то тоже можете подумать и отписать в комменты.
А ГПТ дал мне такой ответ (прямая цитата).
---
Для более удобного управления подобными ссылками в Python можно воспользоваться модулем weakref. Weak references предоставляют способ создать ссылку на объект, не удерживая его в памяти. Это позволит автоматически удалить объект из словаря, когда на него перестанут ссылаются другие объекты.
Пример использования weak references для вашего случая:
Теперь вам не нужно реализовывать проверку на значение счетчика и удаление объекта из словаря, так как weak references автоматически удалят объект после его удаления из всех strong ссылок.
Надеюсь, это поможет вам упростить ваш код и избежать утечек памяти.
---
И ведь действительно, это то, что мне было нужно!
Особенно если учесть, что в моём коде есть ещё и обработка исключений, которой я не стал грузить гпт, но мне при выполнении этой самой обработки тоже нужно делать декремент и проверку на 0.
Но в любом случае, weak references решают и эту проблему!
И разумеется, только получив ответ, я тут же побежал переписывать свой код, восхваляя великий и могучий ChatGPT, который так идеально решил мою...
Нет-нет, я не совсем ещё деградировал, поэтому первым делом я побежал курить мануал по модулю weakref, и выкурил одну интересную штуку.
Где-то выше был длинный пост в телеграфе который никто не стал читать 🙂, в котором я рассказывал про проблемы слепого доверия языковым моделям.
В том посте я спрашивал у ГПТ про особенности синхронных и асинхронных менеджеров в python, и он там нёс лютую дичь.
Этот же пост будет чуть-чуть о другом: как реально можно использовать ГПТ для упрощения жизни.
В процессе написания некоторого софта я столкнулся с проблемой, и вот кто давно в программировании наверное поймёт, что я имею в виду.
1. Есть какой-то абстрактный поток операций.
2. С ним что-то не так, например его выполнение не приводит к нужному результату, или, как в моём случае, всё вроде ок, но сам код громоздкий / хрупкий / некрасивый.
3. В голову приходит мысль - загуглить это дерьмо.
4. "How to ...".
5. "Why ...".
6. "Best way to...".
7. Вот же дичь, как это загуглить вообще?!
И тут я решил просто спросить у ГПТ.
---
Я пишу программу на python, в ней часто встречается подобный код
active_contexts = {}
def handle_context_wrapper(context):
active_context = active_contexts.setdefault(context.id, {'counter': 0})
active_context['counter'] += 1
handle_context(context)
active_context['counter'] -= 1
if active_context['counter'] == 0:
active_contexts.pop(context.id)
Существует ли какое-то готовое решение для подсчёта таких ссылок?
Мне особенно не нравится, что я должен отслеживать 0 и удалять объект из словаря, чтобы избежать утечки памяти.
---
На самом деле во всём этом посте в целом и в вопросе в частности есть один подвох, но о нём чуть позже.
Вот задал я этот вопрос гпт, ну и вы, если шарите за код, в общем-то тоже можете подумать и отписать в комменты.
А ГПТ дал мне такой ответ (прямая цитата).
---
Для более удобного управления подобными ссылками в Python можно воспользоваться модулем weakref. Weak references предоставляют способ создать ссылку на объект, не удерживая его в памяти. Это позволит автоматически удалить объект из словаря, когда на него перестанут ссылаются другие объекты.
Пример использования weak references для вашего случая:
import weakref
active_contexts = weakref.WeakValueDictionary()
def handle_context_wrapper(context):
active_context = active_contexts.setdefault(context.id, {'counter': 0})
active_context['counter'] += 1
handle_context(context)
active_context['counter'] -= 1
Теперь вам не нужно реализовывать проверку на значение счетчика и удаление объекта из словаря, так как weak references автоматически удалят объект после его удаления из всех strong ссылок.
Надеюсь, это поможет вам упростить ваш код и избежать утечек памяти.
---
И ведь действительно, это то, что мне было нужно!
Особенно если учесть, что в моём коде есть ещё и обработка исключений, которой я не стал грузить гпт, но мне при выполнении этой самой обработки тоже нужно делать декремент и проверку на 0.
Но в любом случае, weak references решают и эту проблему!
И разумеется, только получив ответ, я тут же побежал переписывать свой код, восхваляя великий и могучий ChatGPT, который так идеально решил мою...
Нет-нет, я не совсем ещё деградировал, поэтому первым делом я побежал курить мануал по модулю weakref, и выкурил одну интересную штуку.
Кодерская мастерская
Проблема доверия языковым моделям (часть 2) Где-то выше был длинный пост в телеграфе который никто не стал читать 🙂, в котором я рассказывал про проблемы слепого доверия языковым моделям. В том посте я спрашивал у ГПТ про особенности синхронных и асинхронных…
Подвох первый: на словарь создать weak reference невозможно!!!
Вот это самое место, сгенеренное гпт:
Так вот если просто взять этот код и попробовать выполнить, мы получим ошибку: TypeError: cannot create weak reference to 'dict' object
Решение то простое, переопределить класс словаря пустым подклассом, например так:
Нет, это не первоапрельская шутка, это реальный пример из документации, и оно кстати работает, при использовании такого словаря библиотека на него не ругается.
Но итог так или иначе один: никогда такого не было и вот опять, гпт сгенерил нерабочий код.
И, соответственно, вывод такой же, как и всегда, ВСЮ инфу, получаемую из модели, нужно перепроверять.
Это был первый подвох, но остался ещё один, скрывается он в этой строке моего вопроса к ГПТ.
"Существует ли какое-то готовое решение для подсчёта таких ссылок?"
Да, всё верно, в вопросе заложено больше половины ответа, что, кажется, и позволило ГПТ легко и просто выдать нужную мне инфу.
Каким-то образом, видимо, сработал мой мозг, чуть ли не с уровня подсознания вытащив подсказку про ссылки, и вобход сознания передал её руками на клавиатуру, потому что сам я это понял только уже написав две трети поста, ну и не выкидывать же теперь...
Попытка получить похожий ответ, убрав упоминание ссылок, закончилась провалом, сначала он стал советовать мне threading.local, потом contextvars, потом дикораторы и контекстные менеджеры, на которых благополучно и зациклился.
Но несмотря на всё это, проблему то я действительно решил, над запросом в google я думал бы ещё долго, а тут сразу готовый ответ.
И нельзя не учитывать, что это была всего лишь гпт 3.5, и возможно четвёртая справилась бы и без такой наводящей подсказки.
Вот это самое место, сгенеренное гпт:
active_context = active_contexts.setdefault(context.id, {'counter': 0}).Так вот если просто взять этот код и попробовать выполнить, мы получим ошибку: TypeError: cannot create weak reference to 'dict' object
Решение то простое, переопределить класс словаря пустым подклассом, например так:
class Dict(dict):
pass
Нет, это не первоапрельская шутка, это реальный пример из документации, и оно кстати работает, при использовании такого словаря библиотека на него не ругается.
Но итог так или иначе один: никогда такого не было и вот опять, гпт сгенерил нерабочий код.
И, соответственно, вывод такой же, как и всегда, ВСЮ инфу, получаемую из модели, нужно перепроверять.
Это был первый подвох, но остался ещё один, скрывается он в этой строке моего вопроса к ГПТ.
"Существует ли какое-то готовое решение для подсчёта таких ссылок?"
Да, всё верно, в вопросе заложено больше половины ответа, что, кажется, и позволило ГПТ легко и просто выдать нужную мне инфу.
Каким-то образом, видимо, сработал мой мозг, чуть ли не с уровня подсознания вытащив подсказку про ссылки, и вобход сознания передал её руками на клавиатуру, потому что сам я это понял только уже написав две трети поста, ну и не выкидывать же теперь...
Попытка получить похожий ответ, убрав упоминание ссылок, закончилась провалом, сначала он стал советовать мне threading.local, потом contextvars, потом дикораторы и контекстные менеджеры, на которых благополучно и зациклился.
Но несмотря на всё это, проблему то я действительно решил, над запросом в google я думал бы ещё долго, а тут сразу готовый ответ.
И нельзя не учитывать, что это была всего лишь гпт 3.5, и возможно четвёртая справилась бы и без такой наводящей подсказки.
Госуслуги взвешивают файлы
Наверное всем знакомо своеобразное речевое упрощение, которое, вероятно, возникло потому, что так просто короче и удобнее.
Я имею в виду фразы по типу "файл весит 5 гигов", "Программа много весит", "тяжёлый архив" и т.п.
Это ведь короче, чем "Размер файла 5 гигабайт" или "архив имеет большой размер".
Кто-то даже идёт дальше, и вместо мегабайт использует слово метры, мне в такие моменты представляется улица, вдоль которой протянута уходящая за горизонт лента, примерно как в аудиокассете.
Я в целом не имею ничего против такого жаргона, и сам его порой использую, но исключительно в разговорной речи или неформальных переписках.
Но вроде всем очевидно, что такие формулировки не должны использоваться в серьёзных текстах, сообщениях интерфейса, письмах и т.п.
Однако оказалось, что кто-то считает иначе.
Родственники попросили меня сделать выписку из ЕГРН через госуслуги, потому что у них чё-то там не получилось, не нажалось, и вообще у них лапки 🙂
ЕГРН - это Единый государственный реестр недвижимости, из которого нужно было сделать выписку по этой самой недвижимости.
Выписка представляет собой электронный pdf-документ, который пользователь скачивает в личном кабинете и использует дальше для своих нужд.
Так вот когда я сделал выписку и полез в ЛК её скачивать, увидел ссылку со следующим текстом:
"файл с изображением Онлайн-выписка помещение весом 0,2 Мб Скачать ,Кнопка"
И в этом тексте прекрасно всё.
Как мне кажется, он просто пронизан по**измом человека, который пилил доступность этого элемента управления.
Начнём с конца. В конце у нас написано "Скачать ,Кнопка", именно так "Скачать", пробел, запятая, "Кнопка".
А написано это всё кстати в атрибуте aria-label, который добавлен к ссылке.
Теперь вернёмся в начало, там написано "файл с изображением", тут вообще непонятно, что имелось в виду, скорее всего это значит, что скачаем мы pdf, но возможно я ошибаюсь...
Далее следует просто через пробел, без кавычек, без запятых: "Онлайн-выписка помещение весом 0,2 Мб".
И разумеется сначала я так и подумал, что помещение весит 0,2 мб, не понял конечно как это может быть, но подумал.
И только секунды через 3 до меня дошло, что 0,2 мб весит файл, после чего я протупил ещё пару секунд, проверил адресную строку, предположив, что может я каким-то образом попал на фишинг, потом протупил ещё немного и наконец принял тот факт, что прям вот так написано на сайте госуслуг.
И как бы фиг с тем, что на ссылке написано кнопка, и что доступность по-хорошему так не делается, но использовать термин "вес" вместо "размер" - это прям очень странно, и как-то вообще не к месту.
Тут у меня теории две.
1. Человеку было настолько пофиг, что он писал - что в голову придёт.
2. Человек посчитал, что слепые - это лохи, которые фразу "файл размером 0,2 мб" не осилят, поэтому на своё усмотрение упростил её.
Но, с другой стороны, из этой истории можно сделать и позитивный вывод:
Они пилят доступность госуслуг!
Да, местами кривую, с названиями типов элементов на самих элементах, без пунктуации или даже с опечатками, но всё же делают.
Наверное всем знакомо своеобразное речевое упрощение, которое, вероятно, возникло потому, что так просто короче и удобнее.
Я имею в виду фразы по типу "файл весит 5 гигов", "Программа много весит", "тяжёлый архив" и т.п.
Это ведь короче, чем "Размер файла 5 гигабайт" или "архив имеет большой размер".
Кто-то даже идёт дальше, и вместо мегабайт использует слово метры, мне в такие моменты представляется улица, вдоль которой протянута уходящая за горизонт лента, примерно как в аудиокассете.
Я в целом не имею ничего против такого жаргона, и сам его порой использую, но исключительно в разговорной речи или неформальных переписках.
Но вроде всем очевидно, что такие формулировки не должны использоваться в серьёзных текстах, сообщениях интерфейса, письмах и т.п.
Однако оказалось, что кто-то считает иначе.
Родственники попросили меня сделать выписку из ЕГРН через госуслуги, потому что у них чё-то там не получилось, не нажалось, и вообще у них лапки 🙂
ЕГРН - это Единый государственный реестр недвижимости, из которого нужно было сделать выписку по этой самой недвижимости.
Выписка представляет собой электронный pdf-документ, который пользователь скачивает в личном кабинете и использует дальше для своих нужд.
Так вот когда я сделал выписку и полез в ЛК её скачивать, увидел ссылку со следующим текстом:
"файл с изображением Онлайн-выписка помещение весом 0,2 Мб Скачать ,Кнопка"
И в этом тексте прекрасно всё.
Как мне кажется, он просто пронизан по**измом человека, который пилил доступность этого элемента управления.
Начнём с конца. В конце у нас написано "Скачать ,Кнопка", именно так "Скачать", пробел, запятая, "Кнопка".
А написано это всё кстати в атрибуте aria-label, который добавлен к ссылке.
Теперь вернёмся в начало, там написано "файл с изображением", тут вообще непонятно, что имелось в виду, скорее всего это значит, что скачаем мы pdf, но возможно я ошибаюсь...
Далее следует просто через пробел, без кавычек, без запятых: "Онлайн-выписка помещение весом 0,2 Мб".
И разумеется сначала я так и подумал, что помещение весит 0,2 мб, не понял конечно как это может быть, но подумал.
И только секунды через 3 до меня дошло, что 0,2 мб весит файл, после чего я протупил ещё пару секунд, проверил адресную строку, предположив, что может я каким-то образом попал на фишинг, потом протупил ещё немного и наконец принял тот факт, что прям вот так написано на сайте госуслуг.
И как бы фиг с тем, что на ссылке написано кнопка, и что доступность по-хорошему так не делается, но использовать термин "вес" вместо "размер" - это прям очень странно, и как-то вообще не к месту.
Тут у меня теории две.
1. Человеку было настолько пофиг, что он писал - что в голову придёт.
2. Человек посчитал, что слепые - это лохи, которые фразу "файл размером 0,2 мб" не осилят, поэтому на своё усмотрение упростил её.
Но, с другой стороны, из этой истории можно сделать и позитивный вывод:
Они пилят доступность госуслуг!
Да, местами кривую, с названиями типов элементов на самих элементах, без пунктуации или даже с опечатками, но всё же делают.
🔥2😁1
Приветствую всех подписчиков!
В общем сейчас возникла спонтанная идея записи некоторого аудиогайда (буду устанавливать дверную ручку), он будет после этого поста в виде голосового сообщения, слушать или не слушать уж сами решайте.
В общем сейчас возникла спонтанная идея записи некоторого аудиогайда (буду устанавливать дверную ручку), он будет после этого поста в виде голосового сообщения, слушать или не слушать уж сами решайте.
Ну что ж, первый блин комом, желаемого результата достичь мне не удалось, хотя большая часть задуманного прошла без проблем, так что считаю, что гайд на 80% удачный.
Ну и уже постфактум: что думаете о таком формате, надо оно или нет, или может какой-то другой направленности аудио-контент вам интересен, прохождение игр например?
Ну и уже постфактум: что думаете о таком формате, надо оно или нет, или может какой-то другой направленности аудио-контент вам интересен, прохождение игр например?
Шумоподавление
Сегодня я прочитал пост в одном из новостных каналов, в котором говорилось о том, что экие-некие учёные провели исследование о вреде шумоподавления.
И в результате выяснилось, что использование наушников с шумоподавлением вредит слуху пользователей.
Я довольно скептически отношусь к таким постам, потому что во-первых неизвестно, а было ли исследование на самом деле, во-вторых часто неизвестен размер выборки, которая может быть прям совсем маленькой, из-за чего результаты такого исследования ни о чём не говорят.
Но после прочтения у меня возникла идея написать данный пост, т.к. я имею негативное мнение на этот счёт, и если раньше я думал, что со мной просто что-то не так, то теперь я надеюсь, что, возможно, кто-то тоже с этим сталкивался.
Начну пожалуй с начала, а именно с краткого описания функции ANC active noise cancellation (активное шумоподавление).
Работает оно довольно просто и одновременно сложно.
Вот есть у нас некий звук, например звук работающего двигателя.
А что такое звук?
Звук - это самые обыкновенные механические колебания среды, например воздуха.
Т.е. двигатель во время работы как бы ударяет по воздуху своим корпусом и подвижными частями, создаёт области повышенного давления, которые волнами расходятся вокруг.
Потом они достигают наших ушей, где-то там внутри, кажется во внутреннем ухе, преобразуются в электрические импульсы, которые следуют прямиком в мозг, где он их расшифровывает и мы слышим звук работающего двигателя.
Но сейчас нам интересно то место, где звук только приходит в ухо, проще всего что-то сделать именно там.
Самая простая идея, это просто заткнуть уши, и в общем то для этого существуют беруши, но в какой-то момент человечество пошло дальше и придумало следующее.
Вот есть у нас микрофоны, динамики и относительно мощные микроконтроллеры, а что если мы будем снимать звук с микрофона, обсчитывать микроконтроллером волны, попавшие на микрофон, и потом мембраной динамика попробуем эти волны погасить?
Ну и самое главное, что если это всё запихнуть в обычные наушники?
А получится в таком случае как раз активное шумоподавление, о котором я и хочу высказаться.
То есть, проще говоря, наушники с активным шумоподавлением слушают окружающую среду, и воспроизводят такой звук, который складывается со звуком из окружающей среды, и практически полностью гасится, но также гасит внешний шум.
Ну а теперь я перехожу к собственному мнению:
Я пробовал шумоподавление на нескольких моделях разного бюджета, от трёх, до, вроде 12 или 13 тысяч рублей, и во всех, абсолютно во всех случаях мне не зашло.
Да, действительно они гасят шум, причём гасят очень даже неплохо, особенно круто шумоподавление справляется с постоянным фоновым шумом, например со звуком работающего двигателя, что наверняка удобно в дороге.
Но есть один огромнейший минус: стоит включить шумоподавление, как я начинаю ощущать практически болезненное давление на уши.
Это ощущение сравнимо с резким изменением давления, при котором жёстко закладывает уши, и при попытках сглатывания слюны становится как будто только хуже.
И я пробовал к этому привыкнуть, но к сожалению не выдержал больше двух минут, причём самый сильный эффект наблюдался именно на самых дорогих наушниках (это были полноразмерные сенхайзеры, модель уже точно не помню, но могу поискать, если кого-то заинтересует).
Так вот в итоге я задаю вопрос вам, моей аудитории, вас тут почти сто человек как-никак:
Если вы использовали наушники с активным шумоподавлением, не заметили ли вы чего-то подобного, и если заметили, то насколько комфортно было использовать их в таком режиме?
Сегодня я прочитал пост в одном из новостных каналов, в котором говорилось о том, что экие-некие учёные провели исследование о вреде шумоподавления.
И в результате выяснилось, что использование наушников с шумоподавлением вредит слуху пользователей.
Я довольно скептически отношусь к таким постам, потому что во-первых неизвестно, а было ли исследование на самом деле, во-вторых часто неизвестен размер выборки, которая может быть прям совсем маленькой, из-за чего результаты такого исследования ни о чём не говорят.
Но после прочтения у меня возникла идея написать данный пост, т.к. я имею негативное мнение на этот счёт, и если раньше я думал, что со мной просто что-то не так, то теперь я надеюсь, что, возможно, кто-то тоже с этим сталкивался.
Начну пожалуй с начала, а именно с краткого описания функции ANC active noise cancellation (активное шумоподавление).
Работает оно довольно просто и одновременно сложно.
Вот есть у нас некий звук, например звук работающего двигателя.
А что такое звук?
Звук - это самые обыкновенные механические колебания среды, например воздуха.
Т.е. двигатель во время работы как бы ударяет по воздуху своим корпусом и подвижными частями, создаёт области повышенного давления, которые волнами расходятся вокруг.
Потом они достигают наших ушей, где-то там внутри, кажется во внутреннем ухе, преобразуются в электрические импульсы, которые следуют прямиком в мозг, где он их расшифровывает и мы слышим звук работающего двигателя.
Но сейчас нам интересно то место, где звук только приходит в ухо, проще всего что-то сделать именно там.
Самая простая идея, это просто заткнуть уши, и в общем то для этого существуют беруши, но в какой-то момент человечество пошло дальше и придумало следующее.
Вот есть у нас микрофоны, динамики и относительно мощные микроконтроллеры, а что если мы будем снимать звук с микрофона, обсчитывать микроконтроллером волны, попавшие на микрофон, и потом мембраной динамика попробуем эти волны погасить?
Ну и самое главное, что если это всё запихнуть в обычные наушники?
А получится в таком случае как раз активное шумоподавление, о котором я и хочу высказаться.
То есть, проще говоря, наушники с активным шумоподавлением слушают окружающую среду, и воспроизводят такой звук, который складывается со звуком из окружающей среды, и практически полностью гасится, но также гасит внешний шум.
Ну а теперь я перехожу к собственному мнению:
Я пробовал шумоподавление на нескольких моделях разного бюджета, от трёх, до, вроде 12 или 13 тысяч рублей, и во всех, абсолютно во всех случаях мне не зашло.
Да, действительно они гасят шум, причём гасят очень даже неплохо, особенно круто шумоподавление справляется с постоянным фоновым шумом, например со звуком работающего двигателя, что наверняка удобно в дороге.
Но есть один огромнейший минус: стоит включить шумоподавление, как я начинаю ощущать практически болезненное давление на уши.
Это ощущение сравнимо с резким изменением давления, при котором жёстко закладывает уши, и при попытках сглатывания слюны становится как будто только хуже.
И я пробовал к этому привыкнуть, но к сожалению не выдержал больше двух минут, причём самый сильный эффект наблюдался именно на самых дорогих наушниках (это были полноразмерные сенхайзеры, модель уже точно не помню, но могу поискать, если кого-то заинтересует).
Так вот в итоге я задаю вопрос вам, моей аудитории, вас тут почти сто человек как-никак:
Если вы использовали наушники с активным шумоподавлением, не заметили ли вы чего-то подобного, и если заметили, то насколько комфортно было использовать их в таком режиме?
И снова шестёрочки
Где-то выше был пост про 9 шестёрок в Unix time, но там вроде бы всё было очевидно, понятно и просто, а вот сегодняшний случай заставил меня немного поломать голову.
Пишу я значит сервис, работающий с БД postgres, и нужно мне записать в столбец бинарные данные.
Сделал столбец, пытаюсь с помощью sqlalchemy (библиотеки для работы с бд) записать тестовую строку, забываю один из НЕ nullable столбцов.
И получаю от базы следующую ошибку
Это не вся ошибка, а самая интересная её часть, давайте разберём её.
В этой строчке база говорит, с какой именно записываемой строкой произошла ошибка, и выводит её.
Сначала null - это именно тот первый столбец, который не может принимать такое значение, из-за него эта ошибка и возникла.
Второе значение testing - это тестовое значение какого-то строкового столбца, четвёртое значение 3 - уникальный идентификатор.
А вот третье, которое типа бинарное: \x666666.
И вот я когда его увидел, наверное с минуту пытался понять, что происходит, откуда оно взялось? И в итоге выяснил следующее.
В качестве тестового значения я ввёл три буквы f.
У маленькой буквы f в таблице ascii десятичный номер 102, а шестнадцатиричный - 66.
И вот тут самое интересное: то ли база, то ли её драйвер, попытался вывести именно шестнадцатиричные номера символов последовательности, но почему-то поставил \x только в начале, после чего просто слепил все цифры в кучу.
Ну и, разумеется, из fff получилось 66 66 66, что и вывелось как 666666.
Возможно это даже не баг, а просто особенность бд, потому что в общем то восстановить из этого исходную последовательность очень даже возможно, но просто забавно, что я рандомно ткнув в клавиатуру неожиданно получил именно такой результат.
Где-то выше был пост про 9 шестёрок в Unix time, но там вроде бы всё было очевидно, понятно и просто, а вот сегодняшний случай заставил меня немного поломать голову.
Пишу я значит сервис, работающий с БД postgres, и нужно мне записать в столбец бинарные данные.
Сделал столбец, пытаюсь с помощью sqlalchemy (библиотеки для работы с бд) записать тестовую строку, забываю один из НЕ nullable столбцов.
И получаю от базы следующую ошибку
DETAIL: Failing row contains (null, testing, \x666666, 3).
Это не вся ошибка, а самая интересная её часть, давайте разберём её.
В этой строчке база говорит, с какой именно записываемой строкой произошла ошибка, и выводит её.
Сначала null - это именно тот первый столбец, который не может принимать такое значение, из-за него эта ошибка и возникла.
Второе значение testing - это тестовое значение какого-то строкового столбца, четвёртое значение 3 - уникальный идентификатор.
А вот третье, которое типа бинарное: \x666666.
И вот я когда его увидел, наверное с минуту пытался понять, что происходит, откуда оно взялось? И в итоге выяснил следующее.
В качестве тестового значения я ввёл три буквы f.
У маленькой буквы f в таблице ascii десятичный номер 102, а шестнадцатиричный - 66.
И вот тут самое интересное: то ли база, то ли её драйвер, попытался вывести именно шестнадцатиричные номера символов последовательности, но почему-то поставил \x только в начале, после чего просто слепил все цифры в кучу.
Ну и, разумеется, из fff получилось 66 66 66, что и вывелось как 666666.
Возможно это даже не баг, а просто особенность бд, потому что в общем то восстановить из этого исходную последовательность очень даже возможно, но просто забавно, что я рандомно ткнув в клавиатуру неожиданно получил именно такой результат.
Подключаем семейную подписку яндекса через боль и страдания
На всякий случай уточняю: все цитаты сообщений интерфейса не дословные, а написаны по памяти.
Начну, как обычно, с предыстории.
Когда-то давно, ещё в 2015 году, я слушал музыку в vk, и мне было ок.
Потом, году наверное в 18, я познал могущество и величие алгоритмов spotify, и полностью перешёл туда.
И года до 23-го всё было хорошо, но некоторое время назад я заметил, что алгоритмы творят какую-то дичь, что мне стало нравиться всё меньше рекомендуемых треков, что на мои дизлайки просто забивается болт, и треки хоть и не проигрываются, но продолжают попадать в миксы.
Да, spotify у меня бесплатный, и если бы они заявляли, что для премиума рекомендации лучше, то вопросов бы не было, но они ведь этого не говорят...
Ну и в общем захотел я попробовать какой-нибудь иной музыкальный сервис, и без долгих раздумий принял решение, на которое повлияло несколько абстоятельств и фактов:
От четырёх или даже от пяти человек я слышал, что яндекс музыка офигенно подбирает рекомендации,
Яндекс настойчиво мне предлагал подключить пробный плюс,
Яндекс пильнул доступность приложения яндекс музыки,
Отец очень хотел яндекс станцию, и наконец получил её на ДР.
Ну а чтобы полноценно использовать яндекс станцию, очень желательно иметь подписку на яндекс плюс, т.к. без неё основной функционал просто не доступен.
И это обстоятельство стало решающим, раз уж у нас теперь есть станция и подключен плюс, то наконец я попробую яндекс музыку!
"Ща только быстренько семейную группу создам" - думал я.
"А потом быстренько расшарю себе плюс" - тоже я так думал.
И ещё я думал, что потом быстренько поставлю приложение и начну тестить супер крутые рекомендательные технологии.
Получилось же всё слегка иначе.
И так, яндекс плюс подключен на папином акке, значит сначала нужно в него зайти, данные есть, погнали.
Заходим в аккаунт, яндекс просит код из пуша, тоже в общем то ожидаемо.
Иду за мобилкой, скриплю дверью, бужу батю, уже неприятно, но всё ещё не критично.
И т.к. сон у него довольно крепкий, я подозреваю, что разбудил его как раз тот самый пуш, а я ему давно рекомендовал настроить беззвучный режим на ночное время, так что вообще он сам виноват 🙂, ведь это могло быть любое другое уведомление.
Ладно, подсмотрел код, авторизовался, и дальше по инструкции яндекса надо вроде как создать семейную группу.
Нарулил соответствующий раздел в профиле, скопировал приглашение, переключился на свой аккаунт и вступил в группу.
Плюс по дефолту не получил, окей, логично, его просто надо расшарить!
Переключился в папин аккаунт, перешёл в настройки семейной группы, нашёл там себя.
Нажимаю на "Поделиться преимуществами плюса" (или как-то так), попадаю на страничку с предложением подключить плюс.
Странная страничка, ведь плюс на этом аккаунте уже подключен, ну окей, давайте подключим подключенный плюс ещё раз. Нажимаю на кнопку "Подключить", и открывается страница подключенного плюса.
СТраница стандартная, на ней уже про семейную группу ничего нет, есть только возможность отправить приглашение, но мне это не надо, я ведь уже вступил в группу, мне просто надо расшарить плюс! Как это сделать?!
Ладно, может он уже подключился, перехожу в свой аккаунт, но там мне предлагают оформить подписку, т.е. нифига не сработало.
Пукан начинает разогреваться, окей, возвращаюсь на батин аккаунт, перехожу к плюсу, высылаю себе приглашение, переключаюсь на свой аккаунт, открываю почту.
На всякий случай уточняю: все цитаты сообщений интерфейса не дословные, а написаны по памяти.
Начну, как обычно, с предыстории.
Когда-то давно, ещё в 2015 году, я слушал музыку в vk, и мне было ок.
Потом, году наверное в 18, я познал могущество и величие алгоритмов spotify, и полностью перешёл туда.
И года до 23-го всё было хорошо, но некоторое время назад я заметил, что алгоритмы творят какую-то дичь, что мне стало нравиться всё меньше рекомендуемых треков, что на мои дизлайки просто забивается болт, и треки хоть и не проигрываются, но продолжают попадать в миксы.
Да, spotify у меня бесплатный, и если бы они заявляли, что для премиума рекомендации лучше, то вопросов бы не было, но они ведь этого не говорят...
Ну и в общем захотел я попробовать какой-нибудь иной музыкальный сервис, и без долгих раздумий принял решение, на которое повлияло несколько абстоятельств и фактов:
От четырёх или даже от пяти человек я слышал, что яндекс музыка офигенно подбирает рекомендации,
Яндекс настойчиво мне предлагал подключить пробный плюс,
Яндекс пильнул доступность приложения яндекс музыки,
Отец очень хотел яндекс станцию, и наконец получил её на ДР.
Ну а чтобы полноценно использовать яндекс станцию, очень желательно иметь подписку на яндекс плюс, т.к. без неё основной функционал просто не доступен.
И это обстоятельство стало решающим, раз уж у нас теперь есть станция и подключен плюс, то наконец я попробую яндекс музыку!
"Ща только быстренько семейную группу создам" - думал я.
"А потом быстренько расшарю себе плюс" - тоже я так думал.
И ещё я думал, что потом быстренько поставлю приложение и начну тестить супер крутые рекомендательные технологии.
Получилось же всё слегка иначе.
И так, яндекс плюс подключен на папином акке, значит сначала нужно в него зайти, данные есть, погнали.
Заходим в аккаунт, яндекс просит код из пуша, тоже в общем то ожидаемо.
Иду за мобилкой, скриплю дверью, бужу батю, уже неприятно, но всё ещё не критично.
И т.к. сон у него довольно крепкий, я подозреваю, что разбудил его как раз тот самый пуш, а я ему давно рекомендовал настроить беззвучный режим на ночное время, так что вообще он сам виноват 🙂, ведь это могло быть любое другое уведомление.
Ладно, подсмотрел код, авторизовался, и дальше по инструкции яндекса надо вроде как создать семейную группу.
Нарулил соответствующий раздел в профиле, скопировал приглашение, переключился на свой аккаунт и вступил в группу.
Плюс по дефолту не получил, окей, логично, его просто надо расшарить!
Переключился в папин аккаунт, перешёл в настройки семейной группы, нашёл там себя.
Нажимаю на "Поделиться преимуществами плюса" (или как-то так), попадаю на страничку с предложением подключить плюс.
Странная страничка, ведь плюс на этом аккаунте уже подключен, ну окей, давайте подключим подключенный плюс ещё раз. Нажимаю на кнопку "Подключить", и открывается страница подключенного плюса.
СТраница стандартная, на ней уже про семейную группу ничего нет, есть только возможность отправить приглашение, но мне это не надо, я ведь уже вступил в группу, мне просто надо расшарить плюс! Как это сделать?!
Ладно, может он уже подключился, перехожу в свой аккаунт, но там мне предлагают оформить подписку, т.е. нифига не сработало.
Пукан начинает разогреваться, окей, возвращаюсь на батин аккаунт, перехожу к плюсу, высылаю себе приглашение, переключаюсь на свой аккаунт, открываю почту.
Кодерская мастерская
Подключаем семейную подписку яндекса через боль и страдания На всякий случай уточняю: все цитаты сообщений интерфейса не дословные, а написаны по памяти. Начну, как обычно, с предыстории. Когда-то давно, ещё в 2015 году, я слушал музыку в vk, и мне было…
Перехожу по ссылке, и, и, иии "вы уже вступили в эту группу!"
Вот же падла, нарукожопили, ну наверное это просто в интерфейсе тупняк случился, и мне выдалось право использовать плюс, правда ведь?
Открываю плюс, а там, конечно же, предлагают оформить подписку!
Пукан уже начинает выжигать кислород, но я пока не сдаюсь.
Если я уже вступил в группу, то система не идёт дальше и не применяет нужную роль, так может надо выйти и вступить по правильной пригласительной ссылке от плюса?
Снова переключаюсь на папин акк, захожу в настройки семьи, пытаюсь исключить себя, и мой пукан моментально начинает процесс преобразования водорода в гелий.
Что же случилось, думаете вы?
А случилась маленькая приписка примерно такого содержания: "Участник сможет снова вступить в семейную группу после 7 мая".
То есть ситуация следующая: я хочу затестить яндекс музыку, для которой нужен плюс, я хочу пошарить этот самый плюс с другого аккаунта, эти аккаунты находятся в семье, но пошарить нихера нельзя, потому что правильная ссылка не работает пока я в группе, и после выхода из группы она тоже не сработает, потому что до 7 мая меня никуда уже не пустит!
И уже морально приготовившись к подключению плюса себе на акк, я выкинул себя из группы, зашёл в плюс, отправил приглашение, перешёл в свой профиль, открыл почту, перешёл по ссылке...
И вот оно просто вот так вот взяло, вот так вот раааз...
И сука сработало! Я снова оказался в семейной группе!
И более того, у меня активировалась подписка на плюс!
И у меня даже активировался доступ Шрёдингера к яндекс 360!
Выглядело это как-то так, цитата из письма: "Вы присоединились к семейной группе Яндекс ID и можете пользоваться семейной картой и подписками на Яндекс Плюс и Яндекс 360 Премиум"
Вроде доступ есть, окей, открываем батин профиль, настройки семьи, а там: "Семейная оплата Поделиться картой", "Яндекс 360 Премиум Поделиться преимуществами".
Тут уже пофиг на самом деле, эти фичи мне не нужны, закрываю сей ужас и морально готовлюсь к новому этапу квеста: установке приложения, но это теперь уже завтра...
Вот же падла, нарукожопили, ну наверное это просто в интерфейсе тупняк случился, и мне выдалось право использовать плюс, правда ведь?
Открываю плюс, а там, конечно же, предлагают оформить подписку!
Пукан уже начинает выжигать кислород, но я пока не сдаюсь.
Если я уже вступил в группу, то система не идёт дальше и не применяет нужную роль, так может надо выйти и вступить по правильной пригласительной ссылке от плюса?
Снова переключаюсь на папин акк, захожу в настройки семьи, пытаюсь исключить себя, и мой пукан моментально начинает процесс преобразования водорода в гелий.
Что же случилось, думаете вы?
А случилась маленькая приписка примерно такого содержания: "Участник сможет снова вступить в семейную группу после 7 мая".
То есть ситуация следующая: я хочу затестить яндекс музыку, для которой нужен плюс, я хочу пошарить этот самый плюс с другого аккаунта, эти аккаунты находятся в семье, но пошарить нихера нельзя, потому что правильная ссылка не работает пока я в группе, и после выхода из группы она тоже не сработает, потому что до 7 мая меня никуда уже не пустит!
И уже морально приготовившись к подключению плюса себе на акк, я выкинул себя из группы, зашёл в плюс, отправил приглашение, перешёл в свой профиль, открыл почту, перешёл по ссылке...
И вот оно просто вот так вот взяло, вот так вот раааз...
И сука сработало! Я снова оказался в семейной группе!
И более того, у меня активировалась подписка на плюс!
И у меня даже активировался доступ Шрёдингера к яндекс 360!
Выглядело это как-то так, цитата из письма: "Вы присоединились к семейной группе Яндекс ID и можете пользоваться семейной картой и подписками на Яндекс Плюс и Яндекс 360 Премиум"
Вроде доступ есть, окей, открываем батин профиль, настройки семьи, а там: "Семейная оплата Поделиться картой", "Яндекс 360 Премиум Поделиться преимуществами".
Тут уже пофиг на самом деле, эти фичи мне не нужны, закрываю сей ужас и морально готовлюсь к новому этапу квеста: установке приложения, но это теперь уже завтра...
Собираемся интернет-провайдера менять, ТТК настойчиво предлагают свои услуги, есть у кого отрицательный / положительный опыт их использования? Будет круто, если поделитесь.
Или может тарифы сейчас у кого-нибудь есть хорошие по цене?
Или может тарифы сейчас у кого-нибудь есть хорошие по цене?
Вы, наверное, уже и не ждали, но всё же дождались. В Android-клиенте Телеграм пофиксили отвал нижней части экрана после записи гс.
Спасибо за внимание.
Спасибо за внимание.
👍2
Личный кабинет налогоплательщика физического лица спрятан от скринридеров
Зашёл на lkfl2.nalog.ru, авторизовался, загрузился типа пустой документ.
Открываю, значит, исходник:
В общем-то на этом всё, я не знаю, как это можно прокомментировать.
UPD
Для тех, кому строчка кода напоминает нечто на гране между магией и алхимией поясню: для всей страницы со всеми ссылками, кнопками, текстом и всем остальным установлена настройка, которая говорит скринридеру, чтобы он игнорировал содержимое, что он успешно и делает.
UPD2:
Кажется это вылечивается после прохождения обучающего тура, но среднестатистическому пользователю и этого хватит.
Зашёл на lkfl2.nalog.ru, авторизовался, загрузился типа пустой документ.
Открываю, значит, исходник:
<body data-theme="light" class="ReactModal__Body--open" aria-hidden="true">
В общем-то на этом всё, я не знаю, как это можно прокомментировать.
UPD
Для тех, кому строчка кода напоминает нечто на гране между магией и алхимией поясню: для всей страницы со всеми ссылками, кнопками, текстом и всем остальным установлена настройка, которая говорит скринридеру, чтобы он игнорировал содержимое, что он успешно и делает.
UPD2:
Кажется это вылечивается после прохождения обучающего тура, но среднестатистическому пользователю и этого хватит.