Регулярно читаю как ещё один автор <PROGRAM_NAME> объявил, что не будет поддерживать Wayland, потому что они опять что-то сломали и не хотят чинить. Кажется, недавно вспоминали jitsi и захват рабочего стола или типа того.
в арче консоль по дефолту, иксы или вейланд ставят по желанию.
Я в курсе, что Арч ничего не навязывает из коробки. Но уровень поддержки xorg и wayland сообществом сильно отличается. Сужу по арчвики - в гайде предлагается ставить xorg, в статье про mate предполагается xorg и ни слова про связку с wayland.
Экспертиза - далёк от иксов, читаю комменты, раз в месяц обновляю свою систему. Идти на до сих пор нестабильный wayland не вижу ни одной причины.
В смысле автор получает отчисления с продаж иксов? Wayland недружелюбен к разработчикам, Поттеринг недружелюбен ни к кому, в Арче вэйланд пока ещё не по дефолту, и Mate (gnome 2), кажется, тоже с ним не до конца дружит.
Тоже недавно заметки на Obsidian перевёл. К сожалению, настольный клиент на электроне, и ссылки Obsidian не подходят для других markdown редакторов. Ну хотя бы так. Поскольку я чужим облакам не доверяю, то синхронизацию сделал через Syncthing в своей VPN - крутая штука, всем советую.
Длинно - это соответствует принципам Single Responsibility и Dependency Inversion. Бэкенд не должен заниматься настройкой адаптера к базе и вообще не должен знать о том, что адаптер реально собой представляет. Коротко - разгружаем init, проще расширяться, проще делать мок-тесты - не возимся с флагами внутри Backend, а просто передаём туда MockAdapter для тестов.
Я его как-то случайно переизобрёл когда из ФП в Питон вернулся. Потом уже вспомнил, что в SOLID'е чёт такое было. В ФП просто это совершенно естественный ход вещей.
Я лично даже стараюсь не использовать конструкцию DbAdapter(config["uri"], config["password"]). Для каждой сущности своя секция в конфиге: DbAdapter(config["database"]). Или DbAdapter(**config["database"]) для самоуверенных.
Примеры неубедительные, что и понятно, потому что они слишком простые. И если они простые, нет нужды упарываться по паттернам, это частая ошибка. Ок, допустим, у нас большая сложная инициализация, которую мы хотим упростить. Ну, я бы предпочёл простые поля развернуть как обычно, а объекты передать через Dependency Injection - пока не встречал кода, где этого было бы недостаточно.
Как написан fib_closed_form? Возводим double в степень, вычитаем, делим на double, округляем? Тогда вопрос - начиная с какого n даблы начнуть давать ошибки?
Например, мне ещё далеко до того чтобы упереться в производительность. Зато баги случаются постоянно - поле не того типа, поле пропущено. Плюс замедляется разработка - каждое добавление колонки требует кучу переписываний, пропустишь одно - см. предыдущие предложение.
Прямо сейчас пишу себе микро-орм для Монги с поддержкой motor_asyncio. Мне не нравится дизайн многих орм в которых параметры соединения и сессии передаются через глобальные переменные и плохо работают с asyncio. Поэтому я начал с класса Adapter, который хранит в себе сессию и является фабрикой для моделей. Хочу чтобы интерфейс выглядел примерно так:
class User(metaclass=orm.Model):
id_ = orm.Field(index=ASCENDING)
name = orm.Field()
adapter = Adapter("mongodb://localhost:27017")
# protected определяет, будут ли методы типа insert, delete, update среди методов user_class
user_class = adapter.retrieve_model(User, database="test", collection="users", protected=False)
await user = user_class.find(name="test")
await user_class.insert(User(name="test2"))
orm.Model делает свои классы наследуемыми от ProtectedModel / FreeModel, которые имеют разный набор CRUD операций. Adapter.retrieve_model добавляет инстанс AsyncIOMotorCollection в новый класс. В принципе, всё вроде получается, но если кто-то подскажет хороший проект для референсов или ещё чего - будет круто.
Скажите в чём лучше держать и я переложу туда часть портфеля. В баксах? Ну у меня там комиссия 1% в месяц и $1000 за перевод. В бумагах? Nvidia год не могу продать, а Газпром - увольте. Биткоин будет скакать туда-сюда, но я смогу так или иначе его вывести и он стоит столько, сколько стоит вера его энтузиастов. Холодный кошелёк, конечно. Чем вот для обычного Васяна, вроде меня, биток отличается от ценных бумаг, например? Инвестиции и инвестиции. Но не сбережения, ок.
В результате совершенно не представляю зачем нужны vi/vim/emacs
в итоге перешел на свою программу с WYSIWYG редактором и прочим функционалом таким как я хочу
Вот примерно за этим - сделать как удобнее самому, только не нужно совсем уж строить с нуля. Я тоже перебрал разные редакторы на пути к виму и под виндой по мелочи в саблайме сижу (ну чисто одностраничники в питоне набросать), но пока не вижу замены виму как основной ide. У остальных редакторов есть фатальные недостатки (как минимум необходимость мыши), а у вима ничего, что нельзя было бы исправить плагинами.
Регулярно читаю как ещё один автор <PROGRAM_NAME> объявил, что не будет поддерживать Wayland, потому что они опять что-то сломали и не хотят чинить. Кажется, недавно вспоминали jitsi и захват рабочего стола или типа того.
Я в курсе, что Арч ничего не навязывает из коробки. Но уровень поддержки xorg и wayland сообществом сильно отличается. Сужу по арчвики - в гайде предлагается ставить xorg, в статье про mate предполагается xorg и ни слова про связку с wayland.
Экспертиза - далёк от иксов, читаю комменты, раз в месяц обновляю свою систему. Идти на до сих пор нестабильный wayland не вижу ни одной причины.
В смысле автор получает отчисления с продаж иксов? Wayland недружелюбен к разработчикам, Поттеринг недружелюбен ни к кому, в Арче вэйланд пока ещё не по дефолту, и Mate (gnome 2), кажется, тоже с ним не до конца дружит.
Исключения ещё можно на континуациях сделать.
Поддерживаю - ключом может быть любой объект с методом
__hash__
. Даже__hash__ = lambda _: return 42
подойдёт.На самом деле, это подлянский вопрос из разряда бинарного поиска.
Так же как Солнце и Галактика - это наши солнце и галактика. Экзопланеты "землями", впрочем, не называют.
Тоже недавно заметки на Obsidian перевёл. К сожалению, настольный клиент на электроне, и ссылки Obsidian не подходят для других markdown редакторов. Ну хотя бы так.
Поскольку я чужим облакам не доверяю, то синхронизацию сделал через Syncthing в своей VPN - крутая штука, всем советую.
Длинно - это соответствует принципам Single Responsibility и Dependency Inversion. Бэкенд не должен заниматься настройкой адаптера к базе и вообще не должен знать о том, что адаптер реально собой представляет.
Коротко - разгружаем init, проще расширяться, проще делать мок-тесты - не возимся с флагами внутри Backend, а просто передаём туда MockAdapter для тестов.
Я его как-то случайно переизобрёл когда из ФП в Питон вернулся. Потом уже вспомнил, что в SOLID'е чёт такое было. В ФП просто это совершенно естественный ход вещей.
В питоне отсутствие return эквивалентно return None. Если мы аннотируем функции, то возращаемый тип тоже будет type(None) -> None
Пример чего? Dependency injection?
Вместо
Делаем так
Я лично даже стараюсь не использовать конструкцию
DbAdapter(config["uri"], config["password"])
. Для каждой сущности своя секция в конфиге:DbAdapter(config["database"])
. ИлиDbAdapter(**config["database"])
для самоуверенных.Примеры неубедительные, что и понятно, потому что они слишком простые. И если они простые, нет нужды упарываться по паттернам, это частая ошибка.
Ок, допустим, у нас большая сложная инициализация, которую мы хотим упростить. Ну, я бы предпочёл простые поля развернуть как обычно, а объекты передать через Dependency Injection - пока не встречал кода, где этого было бы недостаточно.
Как написан fib_closed_form? Возводим double в степень, вычитаем, делим на double, округляем? Тогда вопрос - начиная с какого
n
даблы начнуть давать ошибки?Лунный кратер - готовое зеркало для телескопа, кстати.
Много ли на "чистом" sql можно написать такого что нельзя сделать через orm? Зато orm даёт больше безопасности.
Например, мне ещё далеко до того чтобы упереться в производительность. Зато баги случаются постоянно - поле не того типа, поле пропущено. Плюс замедляется разработка - каждое добавление колонки требует кучу переписываний, пропустишь одно - см. предыдущие предложение.
Прямо сейчас пишу себе микро-орм для Монги с поддержкой motor_asyncio. Мне не нравится дизайн многих орм в которых параметры соединения и сессии передаются через глобальные переменные и плохо работают с asyncio. Поэтому я начал с класса Adapter, который хранит в себе сессию и является фабрикой для моделей. Хочу чтобы интерфейс выглядел примерно так:
orm.Model делает свои классы наследуемыми от ProtectedModel / FreeModel, которые имеют разный набор CRUD операций. Adapter.retrieve_model добавляет инстанс AsyncIOMotorCollection в новый класс.
В принципе, всё вроде получается, но если кто-то подскажет хороший проект для референсов или ещё чего - будет круто.
Это шутка? Или как вообще браузеры поддерживались в языке?
Скажите в чём лучше держать и я переложу туда часть портфеля. В баксах? Ну у меня там комиссия 1% в месяц и $1000 за перевод. В бумагах? Nvidia год не могу продать, а Газпром - увольте.
Биткоин будет скакать туда-сюда, но я смогу так или иначе его вывести и он стоит столько, сколько стоит вера его энтузиастов. Холодный кошелёк, конечно.
Чем вот для обычного Васяна, вроде меня, биток отличается от ценных бумаг, например? Инвестиции и инвестиции. Но не сбережения, ок.
Да я ж не спорю, что командный режим у вима отличный. Просто лично я выбираю вим за эргономику и отсутствие необходимости в мышке.
Вот примерно за этим - сделать как удобнее самому, только не нужно совсем уж строить с нуля. Я тоже перебрал разные редакторы на пути к виму и под виндой по мелочи в саблайме сижу (ну чисто одностраничники в питоне набросать), но пока не вижу замены виму как основной ide. У остальных редакторов есть фатальные недостатки (как минимум необходимость мыши), а у вима ничего, что нельзя было бы исправить плагинами.