Никто и не заставляет самостоятельно реализовывать их парсинг - готовых либ и так целая куча. Для того же reST есть docutils, который не только преобразует текст а AST, но и позволяет определять кастомные директивы - например, чтобы ими обернуть какое-нибудь поле с именем автора, которого в самом стандарте нет.
Плюс для этих и других форматов есть куча разных конвертеров, например можно было бы проверить работу инструмента на уже существующих книгах и их переводах. А с собственным форматом придется самостоятельно же заниматься конвертацией.
А почему бы не использовать уже существующие языки разметки, вроде MarkDown или reStructured Text? В чем необходимость придумывать именно свой уникальный формат?
В Can I Use указан поддержка 91.3% всех браузеров. Малину портит все тот же Safari, где нет поддержки альфа-канала и анимации, но если они не существенны, то уровень поддержки возрастает до 95%. Да и в случае если они нужны, можно делать fallback на стандартные форматы в случае отсутствия полной поддержки со стороны браузера, вопрос лишь занимаемом картинками дисковом пространстве на сервере.
Вообще весьма странно уделять в статье об оптимизации графики всего пару предложений под альтернативные форматы.
Был на HighLoad++ онлайн, впечатления неоднозначные.
С одной стороны, организаторы молодцы, оперативно исправляли проблемы с качеством трансляции и пропадающим звуком, которые возникали в первые минуты конференции. На следующий же день была рассылка с записью трансляций, которую в прошлом приходилось ждать гораздо дольше.
С другой, нельзя было написать вопрос выступающему в чате. Перенаправляли на страницу с WebRTC, которая в случае отсутствия веб-камеры просто не давала подключиться. На этом мои попытки закончились.
В одном из чатов писали, что квест на этом не заканчивался, и после подключения в чате их ждал сотрудник, который просил поправить прическу, освещение и т.п., чтобы картинка подходила для записи. Хотя вопросы вопросы задавали не в прямом эфире, а после выступления, в отдельном помещении и без записи (по крайней мере, подобных записей в рассылке не было). Логика понятна, но послевкусие не очень.
В Elixir очень удобная реализация макросов, которые разворачиваются на этапе компиляции. Выглядит как обычный вызов функции, но внутри может происходить что угугодно. Причем эта система макросов настолько нативна для языка, что его собственные конструкции, вроде def или if, буквально реализованы на этих же макросах.
Тут главное знать меру, иначе отладка заметно усложняется. Анекдотичная ситуация, когда в модуле из 30 строк, а ошибка возникает в 120, тут маловероятна, потому что сами макросы должны быть валидным AST. Но вот разобраться в том, какой из 100500 вложенных макросов содержит ошибку в логике, бывает нетривиально.
С переходом на удалёнку проявляется обратная сторона такого способа - все меньше разделения окружения на рабочее и личное, из-за чего состояние потока становится сложнее прервать. И вот рабочий день закончился, а мозг все ещё шпарит на полную и концентрируется на задаче, хотя давно пора отдохнуть. Приходится отрывать его от этого, но чем больше заставляешь себя не думать о чем-то, чем больше об этом думаешь.
Вот статья, выпущенная меньше двух недель назад на новостном сайте, посвящённом датацентрам, где упоминается этот проект.
В ней сказано, что для организации постоянной базы одним из необходимых шагов является развертывание дадатацентра, поскольку полагаться на расположенные на Земле вычислительные ресурсы будет нельзя из-за слишком большой задержки сигнала. А потребности в нем будут, поскольку на базе будет куча оборудования, планируется постройка исследовательских лабораторий, а также будет развернута беспроводная сеть.
В целом идея звучит достаточно разумно. Но это всего лишь один из 16 пунктов плана постройки базы. Каждый пункт сейчас описан в виде концепта, поэтому потребуется дальнейшего исследования в этом направлении. Плюс в процессе разработки остальных пунктов плана курс будет корректироваться, а детали уточняться. Поэтому пока не ясны характеристики этого центра, но по крайней мере ясно то, что он не будет предназначен для тяжёлых вычислительных задач, и уж тем более не будет предназначен для коммерческого использования с Земли.
В статье на официальном сайте деталей намного меньше, датацентр упоминается лишь вскользь.
Если бы статья закончилась на этом моменте, то никаких претензий не было бы. Но отсебятину зачем было добавлять, ещё и так неумело?
"Естественная низкая температура" - это без атмосферы-то? Проблема охлаждения аппаратов в условиях вакуума решается очень непросто, потому что от избытка тепла можно избавиться лишь излучением. Из-за этого на том же МКС половина панелей, выглядящих как солнечные батареи, на самом деле являются огромными радиаторами для отвода тепла. Да, на Луне есть поверхность, которая может чуть активнее отводить тепло, но просто поместив датацентр в пещеры или достаточно глубокие кратеры на полюсах особого выигрыша не будет - к реголита теплопроводность как к минеральной ваты, т.е. он скорее отличный теплоизолятор. Больший смысл имеет разве что его закопать, хотя теплоёмкостью он тоже не особо блещет (примерно на уровне гипса), а вот с обслуживанием в таком могут возникнуть проблемы.
"Проблема физической безопасности" - нет атмосферы, значит некому тормозить и разрушать микрометеориты. А разрушительная способность у них может быть достаточно большой.
Все эти проблемы определенно придется решить в процессе исследования, простого ответа тут нет. И уж тем более не нужно описывать их так, будто это наоборот преимущества, совсем нет.
Бывало всякое, но не со snap, а с пакетами в AUR (Manjar).
Zoom в течение нескольких месяцев после каждого обновления то нормально воспринимал системный DPI (у меня 2к монитор), то использовал вшитое в пакет значение. С ним приложение растягивалось на весь экран (причем в процессе возникало сильное размытие интерфейса), кнопки становились в несколько раз больше обычного, но текст на них наоборот становился меньше.
Telegram и Discord из-за вшитой в них функции автоматического обновления пытаются скачать и установить пакет самостоятельно, но либо падают из-за нехватки прав на запись в системную директорию, либо в процессе перезапуска не могут найти исполняемый файл по стандартному пути и просто завершаются, из-за чего их приходится запускать руками.
Intellij Idea и основанные на нем продукты (DataGrip, PyCharm) устанавливались в виде двух пакетов, например datagrip и datagrip-jre. Второй был нужен для поставки нужной версии Java, отдельно от системной. Однако оба пакета весили по 2.5Гб, что при установке нескольких продуктов от Intellij быстро съедало место в системном разделе. Как оказалось, JRE зачем-то присутствовал сразу в обоих пакетах, но второй удалить было нельзя, т.к. он был обязательной зависимостью первого.
KeeWeb (аналог KeePassXC, но на Electron), установленный из пакета keeweb, после обновления перестал отвечать на запросы авторизации от браузерного расширения.
Как оказалось, пакет собирается на основе .deb пакета, но вместо полной перепаковки из него только извлекаются некоторые бинарники, а само Electron приложение собирается локально. Но в новой версии работа с расширением была тоже вынесена в один из бинарников, а скрипт перепаковки его не учитывал.
И кроме того, что бинарника не было в системе, само по себе приложение оказалось не готово к новому способу сборки.
Суть в том, что в .deb пакете keeweb был исполняемым файлом (electron + зашитое в нем название приложения и пути). А при пересборке использовался системный Electron, который вместо бинарника создавал архив с ресурсами приложения (в формате .asar), а файл keeweb представлял из себя скрипт:
electron /usr/lib/keeweb/app.asar
Приложение получало путь к исполняемому файлу через app.getPath('exe'), а по нему получало путь к лежащему рядом бинарнику, необходимому для интеграции с браузером. Но системный electron возвращает при вызов этой функции не путь к архиву (/usr/lib/keeweb/app.asar), а путь к собственному исполняемому файлу (/usr/lib/electron/electron), где нужного файла уж точно быть никак не могло.
Проблема решилась после переезда на пакет keeweb-desktop-bin, который просто перепаковывал исходный .deb без дополнительных шагов по локальном сборке всего приложения.
Но и со snap пакетами были различные истории. У одного из сотрудников после ухода ноутбука в сон пропадал доступ к запущенному в докере приложению, запрос к http://localhost:3000 падал с ошибкой Network unavailable. Как оказалось, на интерфейсе docker0 пропадал IPv4 адрес, оставался только IPv6, но в /etc/docker/daemon.json IPv6 был выключен. В результате сети хоста и докера оказались полностью изолированы друг от друга. Попытка перезапуска docker ни к чему не привела, т.к. в snap пакете были ещё и неправильные systemd службы - вместо docker.service была своя snap.docker.docker.service с отличными от оригинальной путями и зависимостями. Пришлось сносить и ставить официальный пакет.
Идея в целом интересная. Особенно мне нравится то, что реализованные в Coconut функции можно импортировать в Python коде, т.к. это обычный пакет, а значит автоматически становятся доступны функции вроде parallel_map/concurrent_map.
Что касается синтаксиса, во многих случаях сильно страдает читаемость написанного кода:
Это выглядит скорее как смесь Scala и Haskel, чем как Python.
Еще мне интересно, как они будут выкручиваться с введением pattern matching в 3.10 - синтаксис у Coconut и Python здесь заметно различается:
Документации на 1.6.0 не нашел, как и тестов в develop ветке, где можно было бы посмотреть на текущее поведение.
На самом деле, способ далеко не новый. Метод кислотных обработок известен уже несколько десятилетий и активно используется для разных задач: растворение нужных в породе веществ и их выведение из под земли в виде раствора, растворение пород для увеличения проницаемости (водой, например в случае артезианских скважин, нефтью и т.п.).
Растворов бывает целая куча разных видов, в зависимости от породы. Обычно это соляная кислота, т.к. ее соли довольно хорошо растворимы, в отличие от сульфатов (например кальция, бария или стронция), плюс добавки вроде ингибиторов коррозии, ПАВ для образования суспензии и т п. Сама кислота используется не концентрированная, около 10-12%, и она постепенно расходуется на растворение нужных веществ. Плюс по промышленной добыче обязательно уделяют внимание глубине залегания слоя, его изоляции от других из-за наличия водоупорной прослойки из глины. Каналы для подачи и забора раствора прокладывают так, чтобы не повлиять на изолирующие свойства прослойки.
Текущая работа предлагает лишь модификацию в виде прокладки электродов внутри канала для проведения электролиза раствора прямо внутри слоя с породой. Регулируя состав электролита, электродов, а также напряжение (всего-то 5-15в) можно добиться растворения из всей кучи веществ в породе лишь одного конкретного металла или нескольких, схожих по свойствам. Таким образом, тратится намного меньше кислоты, т.к. не надо растворять шлак, плюс сам раствор будет проще очистить.
Преимущества - отсутствие гор пустой породы на поверхности и ее рассеивания по всей округе, меньше отходов производства (обеденный раствор насыщают кислотой и используют повторно), меньше шагов очистки.
Дважды одно и тоже название переменной использовать нельзя, потому что в нее будет записано значение, а не выполнено их сравнение.
Но можно делать вот так:
if (
isinstance(value, (list, tuple)) and
len(value) > 1 and
isinstance(value[-1], (Promise, str))
):
*value, label = value
value = tuple(value)
else:
label = key.replace('_', ' ').title()
vs
match value:
case [*v, label := (Promise() | str())] if v:
value = tuple(v)
case _:
label = key.replace('_', ' ').title()
У второго варианта читаемость намного выше.
Причем здесь SOLID и OCP — непонятно, оба этих принципа никак не нарушаются. Словари, опять же, не всегда дают ту же выразительность, как pattern matching.
Но установка и наличие вредоносного пакета в системе еще не приводит к его выполнению.
Это не всегда так.
Например, случае python пакеты бывают нескольких типов — .whl/.egg и .tar.gz. Первый содержит файлы пакета, приготовленные для конкретной архитектуры и версии python, и просто распаковываются в папку с модулями. Второй содержит исходные файлы пакета и скачивается тогда, когда под нужную архитектуру или версию python готовой сборки не нашлось. И при скачивании такого пакета pip запустит находящийся внутри файл setup.py, а т.к. это обычный python скрипт, то фактически он может сделать все, что угодно. Возможности ограничены лишь правами текущего пользователя в ОС.
Поищите в настройках приложений, которые пользуются микрофоном, не включена ли там компенсация громкости. У меня была та же проблема в Manjaro, нашел такую настройку в Zoom и Skype, и громкость наконец-то перестала прыгать
Продавцы постоянно пишут в личку рекламные предложения а-ля "Получи супер купон в $0.3 при заказе от $3000". Когда я в ответ прошу не присылать мне их, они пишут, что у меня якобы включены уведомления об акциях и скидках в настройках аккаунта.
Но оба этих пункта в настройках аккаунта выключены, оставил включенным только уведомления о заказах.
Как прекратить это? Особенно раздражает что эти же сообщения выводятся в виде уведомлений в мобильном приложении, а отключать их совсем не самый лучший вариант. Особенно когда запрашиваешь у продавца информацию о характеристиках товара или пытаешься решить вопрос с проблемной доставкой до эскалации спора — ждёшь ответ, а параллельно от кучи продавцов, к которых ты покупал какую-то мелочь 5 лет назад идёт непрерывный поток спама.
Это еще что.
У нас на одном из вокзалов поезд стоит всего 3 минуты и никогда неизвестно заранее, ни на какой путь он придет, ни откуда нумерация. Это нужно услышать в здании самого вокзала объявление, чтобы добежать до нужного перехода на путь и чтобы начав искать нужный вагон узнать, что проводники уже закрывают двери вагонов.
Вот на это у меня просто нет слов.
Меня больше позабавило, когда на стенде в универе увидел объявление о партнерской программе РЖД и о скидке для студентов в 25%. Даже QR-код со ссылкой висел рядом.
Но только вот облом — студенческая скидка действует только на… купе. Да-да, по мнению нашего дорогого РЖД все студенты катаются на чем угодно, но не на плацкарте.
Никто и не заставляет самостоятельно реализовывать их парсинг - готовых либ и так целая куча. Для того же reST есть docutils, который не только преобразует текст а AST, но и позволяет определять кастомные директивы - например, чтобы ими обернуть какое-нибудь поле с именем автора, которого в самом стандарте нет.
Плюс для этих и других форматов есть куча разных конвертеров, например можно было бы проверить работу инструмента на уже существующих книгах и их переводах. А с собственным форматом придется самостоятельно же заниматься конвертацией.
А почему бы не использовать уже существующие языки разметки, вроде MarkDown или reStructured Text? В чем необходимость придумывать именно свой уникальный формат?
В Can I Use указан поддержка 91.3% всех браузеров. Малину портит все тот же Safari, где нет поддержки альфа-канала и анимации, но если они не существенны, то уровень поддержки возрастает до 95%. Да и в случае если они нужны, можно делать fallback на стандартные форматы в случае отсутствия полной поддержки со стороны браузера, вопрос лишь занимаемом картинками дисковом пространстве на сервере.
Вообще весьма странно уделять в статье об оптимизации графики всего пару предложений под альтернативные форматы.
Был на HighLoad++ онлайн, впечатления неоднозначные.
С одной стороны, организаторы молодцы, оперативно исправляли проблемы с качеством трансляции и пропадающим звуком, которые возникали в первые минуты конференции. На следующий же день была рассылка с записью трансляций, которую в прошлом приходилось ждать гораздо дольше.
С другой, нельзя было написать вопрос выступающему в чате. Перенаправляли на страницу с WebRTC, которая в случае отсутствия веб-камеры просто не давала подключиться. На этом мои попытки закончились.
В одном из чатов писали, что квест на этом не заканчивался, и после подключения в чате их ждал сотрудник, который просил поправить прическу, освещение и т.п., чтобы картинка подходила для записи. Хотя вопросы вопросы задавали не в прямом эфире, а после выступления, в отдельном помещении и без записи (по крайней мере, подобных записей в рассылке не было). Логика понятна, но послевкусие не очень.
В Elixir очень удобная реализация макросов, которые разворачиваются на этапе компиляции. Выглядит как обычный вызов функции, но внутри может происходить что угугодно. Причем эта система макросов настолько нативна для языка, что его собственные конструкции, вроде def или if, буквально реализованы на этих же макросах.
Тут главное знать меру, иначе отладка заметно усложняется. Анекдотичная ситуация, когда в модуле из 30 строк, а ошибка возникает в 120, тут маловероятна, потому что сами макросы должны быть валидным AST. Но вот разобраться в том, какой из 100500 вложенных макросов содержит ошибку в логике, бывает нетривиально.
С переходом на удалёнку проявляется обратная сторона такого способа - все меньше разделения окружения на рабочее и личное, из-за чего состояние потока становится сложнее прервать. И вот рабочий день закончился, а мозг все ещё шпарит на полную и концентрируется на задаче, хотя давно пора отдохнуть. Приходится отрывать его от этого, но чем больше заставляешь себя не думать о чем-то, чем больше об этом думаешь.
Снова учёный изнасиловал журналиста?
Вот статья, выпущенная меньше двух недель назад на новостном сайте, посвящённом датацентрам, где упоминается этот проект.
В ней сказано, что для организации постоянной базы одним из необходимых шагов является развертывание дадатацентра, поскольку полагаться на расположенные на Земле вычислительные ресурсы будет нельзя из-за слишком большой задержки сигнала. А потребности в нем будут, поскольку на базе будет куча оборудования, планируется постройка исследовательских лабораторий, а также будет развернута беспроводная сеть.
В целом идея звучит достаточно разумно. Но это всего лишь один из 16 пунктов плана постройки базы. Каждый пункт сейчас описан в виде концепта, поэтому потребуется дальнейшего исследования в этом направлении. Плюс в процессе разработки остальных пунктов плана курс будет корректироваться, а детали уточняться. Поэтому пока не ясны характеристики этого центра, но по крайней мере ясно то, что он не будет предназначен для тяжёлых вычислительных задач, и уж тем более не будет предназначен для коммерческого использования с Земли.
В статье на официальном сайте деталей намного меньше, датацентр упоминается лишь вскользь.
Если бы статья закончилась на этом моменте, то никаких претензий не было бы. Но отсебятину зачем было добавлять, ещё и так неумело?
"Естественная низкая температура" - это без атмосферы-то? Проблема охлаждения аппаратов в условиях вакуума решается очень непросто, потому что от избытка тепла можно избавиться лишь излучением. Из-за этого на том же МКС половина панелей, выглядящих как солнечные батареи, на самом деле являются огромными радиаторами для отвода тепла. Да, на Луне есть поверхность, которая может чуть активнее отводить тепло, но просто поместив датацентр в пещеры или достаточно глубокие кратеры на полюсах особого выигрыша не будет - к реголита теплопроводность как к минеральной ваты, т.е. он скорее отличный теплоизолятор. Больший смысл имеет разве что его закопать, хотя теплоёмкостью он тоже не особо блещет (примерно на уровне гипса), а вот с обслуживанием в таком могут возникнуть проблемы.
"Проблема физической безопасности" - нет атмосферы, значит некому тормозить и разрушать микрометеориты. А разрушительная способность у них может быть достаточно большой.
Все эти проблемы определенно придется решить в процессе исследования, простого ответа тут нет. И уж тем более не нужно описывать их так, будто это наоборот преимущества, совсем нет.
Бывало всякое, но не со snap, а с пакетами в AUR (Manjar).
Zoom в течение нескольких месяцев после каждого обновления то нормально воспринимал системный DPI (у меня 2к монитор), то использовал вшитое в пакет значение. С ним приложение растягивалось на весь экран (причем в процессе возникало сильное размытие интерфейса), кнопки становились в несколько раз больше обычного, но текст на них наоборот становился меньше.
Telegram и Discord из-за вшитой в них функции автоматического обновления пытаются скачать и установить пакет самостоятельно, но либо падают из-за нехватки прав на запись в системную директорию, либо в процессе перезапуска не могут найти исполняемый файл по стандартному пути и просто завершаются, из-за чего их приходится запускать руками.
Intellij Idea и основанные на нем продукты (DataGrip, PyCharm) устанавливались в виде двух пакетов, например datagrip и datagrip-jre. Второй был нужен для поставки нужной версии Java, отдельно от системной. Однако оба пакета весили по 2.5Гб, что при установке нескольких продуктов от Intellij быстро съедало место в системном разделе. Как оказалось, JRE зачем-то присутствовал сразу в обоих пакетах, но второй удалить было нельзя, т.к. он был обязательной зависимостью первого.
KeeWeb (аналог KeePassXC, но на Electron), установленный из пакета keeweb, после обновления перестал отвечать на запросы авторизации от браузерного расширения.
Как оказалось, пакет собирается на основе .deb пакета, но вместо полной перепаковки из него только извлекаются некоторые бинарники, а само Electron приложение собирается локально. Но в новой версии работа с расширением была тоже вынесена в один из бинарников, а скрипт перепаковки его не учитывал.
И кроме того, что бинарника не было в системе, само по себе приложение оказалось не готово к новому способу сборки.
Суть в том, что в .deb пакете keeweb был исполняемым файлом (electron + зашитое в нем название приложения и пути). А при пересборке использовался системный Electron, который вместо бинарника создавал архив с ресурсами приложения (в формате .asar), а файл keeweb представлял из себя скрипт:
Приложение получало путь к исполняемому файлу через
app.getPath('exe')
, а по нему получало путь к лежащему рядом бинарнику, необходимому для интеграции с браузером. Но системный electron возвращает при вызов этой функции не путь к архиву (/usr/lib/keeweb/app.asar), а путь к собственному исполняемому файлу (/usr/lib/electron/electron), где нужного файла уж точно быть никак не могло.Проблема решилась после переезда на пакет keeweb-desktop-bin, который просто перепаковывал исходный .deb без дополнительных шагов по локальном сборке всего приложения.
Но и со snap пакетами были различные истории. У одного из сотрудников после ухода ноутбука в сон пропадал доступ к запущенному в докере приложению, запрос к http://localhost:3000 падал с ошибкой Network unavailable. Как оказалось, на интерфейсе docker0 пропадал IPv4 адрес, оставался только IPv6, но в
/etc/docker/daemon.json
IPv6 был выключен. В результате сети хоста и докера оказались полностью изолированы друг от друга. Попытка перезапуска docker ни к чему не привела, т.к. в snap пакете были ещё и неправильные systemd службы - вместо docker.service была своя snap.docker.docker.service с отличными от оригинальной путями и зависимостями. Пришлось сносить и ставить официальный пакет.Идея в целом интересная. Особенно мне нравится то, что реализованные в Coconut функции можно импортировать в Python коде, т.к. это обычный пакет, а значит автоматически становятся доступны функции вроде parallel_map/concurrent_map.
Что касается синтаксиса, во многих случаях сильно страдает читаемость написанного кода:
Это выглядит скорее как смесь Scala и Haskel, чем как Python.
Еще мне интересно, как они будут выкручиваться с введением pattern matching в 3.10 - синтаксис у Coconut и Python здесь заметно различается:
Документации на 1.6.0 не нашел, как и тестов в develop ветке, где можно было бы посмотреть на текущее поведение.
Было бы неплохо добавить в начало статьи описание, что вообще такое этот AirTag.
У меня только один вопрос к переводу:
Откуда это взялось? В оригинале нет ничего подобного, это обычный электролиз, нет тут никакого волшебного управления кислотой.
Ответ на истерические комментарии в ветках выше.
На самом деле, способ далеко не новый. Метод кислотных обработок известен уже несколько десятилетий и активно используется для разных задач: растворение нужных в породе веществ и их выведение из под земли в виде раствора, растворение пород для увеличения проницаемости (водой, например в случае артезианских скважин, нефтью и т.п.).
Растворов бывает целая куча разных видов, в зависимости от породы. Обычно это соляная кислота, т.к. ее соли довольно хорошо растворимы, в отличие от сульфатов (например кальция, бария или стронция), плюс добавки вроде ингибиторов коррозии, ПАВ для образования суспензии и т п. Сама кислота используется не концентрированная, около 10-12%, и она постепенно расходуется на растворение нужных веществ. Плюс по промышленной добыче обязательно уделяют внимание глубине залегания слоя, его изоляции от других из-за наличия водоупорной прослойки из глины. Каналы для подачи и забора раствора прокладывают так, чтобы не повлиять на изолирующие свойства прослойки.
Текущая работа предлагает лишь модификацию в виде прокладки электродов внутри канала для проведения электролиза раствора прямо внутри слоя с породой. Регулируя состав электролита, электродов, а также напряжение (всего-то 5-15в) можно добиться растворения из всей кучи веществ в породе лишь одного конкретного металла или нескольких, схожих по свойствам. Таким образом, тратится намного меньше кислоты, т.к. не надо растворять шлак, плюс сам раствор будет проще очистить.
Преимущества - отсутствие гор пустой породы на поверхности и ее рассеивания по всей округе, меньше отходов производства (обеденный раствор насыщают кислотой и используют повторно), меньше шагов очистки.
Дважды одно и тоже название переменной использовать нельзя, потому что в нее будет записано значение, а не выполнено их сравнение.
Но можно делать вот так:
В соответствующем PEP-0622 есть отличный пример:
vs
У второго варианта читаемость намного выше.
Причем здесь SOLID и OCP — непонятно, оба этих принципа никак не нарушаются. Словари, опять же, не всегда дают ту же выразительность, как pattern matching.
Поищите в настройках приложений, которые пользуются микрофоном, не включена ли там компенсация громкости. У меня была та же проблема в Manjaro, нашел такую настройку в Zoom и Skype, и громкость наконец-то перестала прыгать
Продавцы постоянно пишут в личку рекламные предложения а-ля "Получи супер купон в $0.3 при заказе от $3000". Когда я в ответ прошу не присылать мне их, они пишут, что у меня якобы включены уведомления об акциях и скидках в настройках аккаунта.
Но оба этих пункта в настройках аккаунта выключены, оставил включенным только уведомления о заказах.
Как прекратить это? Особенно раздражает что эти же сообщения выводятся в виде уведомлений в мобильном приложении, а отключать их совсем не самый лучший вариант. Особенно когда запрашиваешь у продавца информацию о характеристиках товара или пытаешься решить вопрос с проблемной доставкой до эскалации спора — ждёшь ответ, а параллельно от кучи продавцов, к которых ты покупал какую-то мелочь 5 лет назад идёт непрерывный поток спама.
У нас на одном из вокзалов поезд стоит всего 3 минуты и никогда неизвестно заранее, ни на какой путь он придет, ни откуда нумерация. Это нужно услышать в здании самого вокзала объявление, чтобы добежать до нужного перехода на путь и чтобы начав искать нужный вагон узнать, что проводники уже закрывают двери вагонов.
Вот на это у меня просто нет слов.
Но только вот облом — студенческая скидка действует только на… купе. Да-да, по мнению нашего дорогого РЖД все студенты катаются на чем угодно, но не на плацкарте.