openapi.yaml:1049:15 | warning | got string, want integer| oas3-valid-schema-example | Examples| $.paths['/v1/
openapi.yaml:1049:15 | warning | got number, want string | oas3-valid-schema-example | Examples| $.paths['/v1/
Вот так работает Vacuum для валидации OpenAPI. А это чуть ли не единственное решение для этого.
И так работают очень многие правила, выдавая приколы на ровном месте.
2🤔5❤2 2😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
2 14😁8❤2👍2
Совсем недавно релизнулся Postgres 18! А еще не все 17 успели попробовать. Выглядит очень вкусно.
Совсем кратко из основных нововведений выделил:
Асинхронный ввод-вывод (AIO). Параллельные чтения без блокировок. Прирост производительности в 2–3× на последовательных/bitmap-сканах и VACUUM.😘
Skip Scan для B-tree индексов. Можно использовать составной индекс даже без первых колонок.💪
При pg_upgrade сохраняется статистика оптимизатора. Не нужно заново ждать ANALYZE.🚬
Оптимизация OR в WHERE через индексы. Теперь планировщик умеет эффективнее использовать индексы для каждого условия и объединять результаты.🍷
Параллельная сборка GIN-индексов (JSON, full-text). Теперь ощутимо быстрее🤔
Улучшены соединения: hash join, merge join, сортировки. Движок стал лучше выбирать планы и эффективнее использовать память и многопоточность — такие запросы будут быстрее.☺️
Поддержка UUIDv7. Очередной формат ЮИДов. Временно упорядоченные UUID для лучшей локальности индексов и меньшей фрагментации.😺
Ссылочка на Release Notes тут.
🔛 @kisel_it
#news #postgres
Совсем кратко из основных нововведений выделил:
Асинхронный ввод-вывод (AIO). Параллельные чтения без блокировок. Прирост производительности в 2–3× на последовательных/bitmap-сканах и VACUUM.
Skip Scan для B-tree индексов. Можно использовать составной индекс даже без первых колонок.
При pg_upgrade сохраняется статистика оптимизатора. Не нужно заново ждать ANALYZE.
Оптимизация OR в WHERE через индексы. Теперь планировщик умеет эффективнее использовать индексы для каждого условия и объединять результаты.
Параллельная сборка GIN-индексов (JSON, full-text). Теперь ощутимо быстрее
Улучшены соединения: hash join, merge join, сортировки. Движок стал лучше выбирать планы и эффективнее использовать память и многопоточность — такие запросы будут быстрее.
Поддержка UUIDv7. Очередной формат ЮИДов. Временно упорядоченные UUID для лучшей локальности индексов и меньшей фрагментации.
Ссылочка на Release Notes тут.
#news #postgres
Please open Telegram to view this post
VIEW IN TELEGRAM
3 7❤3🔥2
Ну что, друзья, вот нас и 2000! 💪
Чуть больше года назад эта цифра казалась недосягаемой, невозможной. А получилось!
Даже сложно поверить. Спасибо всем! Рад, что вы со мной. Рад, что вы читаете, оставляете реакции, пишете комменты ❤️
Обещаю и дальше радовать вас вкусным и полезным контентом. Ура! 🎂
P.S На фото можем видеть, как NanoBanana видит праздничный вайб (торт между прочим настоящий)
Чуть больше года назад эта цифра казалась недосягаемой, невозможной. А получилось!
Даже сложно поверить. Спасибо всем! Рад, что вы со мной. Рад, что вы читаете, оставляете реакции, пишете комменты ❤️
Обещаю и дальше радовать вас вкусным и полезным контентом. Ура! 🎂
P.S На фото можем видеть, как NanoBanana видит праздничный вайб (торт между прочим настоящий)
Please open Telegram to view this post
VIEW IN TELEGRAM
5❤16🎉10👍5🐳1
Недавно открыл для себя Supabase. Невероятно, у них 89к звёзд на гитхабе и я не слышал об этом проекте буквально НИГДЕ. На Хабре буквально две статьи и их просто так не найдешь. Наткнулся случайно в одном из видео про Cursor. В двух словах - это мега-бэкенд-комбайн на основе Postgres.
Основные фишки:
- Интерфейс для создания и просмотра БД
- Автоматическая генерация REST/GraphQL API
- Полноценный мониторинг
- Встроенная поддержка всех видов аутентификации
- Всё что нужно для файлового хранилища.
Насколько я понял - это что-то в духе Firebase, только SQL и OpenSource. Т.е этого монстра можно затащить к себе в пет-проект просто в докер-контейнере😘
И главным образом позиционируется, как полноценная "замена" бэкенда. Т.е вместо привычной схемы Front -> Back -> DB мы получим Front -> DB. Она же Database Centric Architecture. Но в интернетах вижу другую картинку - народ приспособил это дело вместо обычного Postgres для FastAPI, получая тем самым максимальную выгоду от двух решений. Ну и в вайб-кодинге это стало чуть-ли не бест-практис и дало очередную огромную волну популярности.
В общем заманчиво. Сразу захотелось втыкнуть это себе в петпроект, красиво же💪
Но стоит помнить и про обратную сторону таких комбайнов:
- Сложность. В них очень много компонентов и в каждом из них могут быть свои тонкости/баги/подводные камни и узнать об этом можно только изучив всё вдоль и поперёк.
- Вендор-лок. Однажды подсадив свой проект на такой "комбайн" — с него очень больно переехать.
P.S Там кстати есть фри-тариф в облаке, это если хочется поглядеть в живую.
🔛 @kisel_it
#postgres #databases
Основные фишки:
- Интерфейс для создания и просмотра БД
- Автоматическая генерация REST/GraphQL API
- Полноценный мониторинг
- Встроенная поддержка всех видов аутентификации
- Всё что нужно для файлового хранилища.
Насколько я понял - это что-то в духе Firebase, только SQL и OpenSource. Т.е этого монстра можно затащить к себе в пет-проект просто в докер-контейнере
И главным образом позиционируется, как полноценная "замена" бэкенда. Т.е вместо привычной схемы Front -> Back -> DB мы получим Front -> DB. Она же Database Centric Architecture. Но в интернетах вижу другую картинку - народ приспособил это дело вместо обычного Postgres для FastAPI, получая тем самым максимальную выгоду от двух решений. Ну и в вайб-кодинге это стало чуть-ли не бест-практис и дало очередную огромную волну популярности.
В общем заманчиво. Сразу захотелось втыкнуть это себе в петпроект, красиво же
Но стоит помнить и про обратную сторону таких комбайнов:
- Сложность. В них очень много компонентов и в каждом из них могут быть свои тонкости/баги/подводные камни и узнать об этом можно только изучив всё вдоль и поперёк.
- Вендор-лок. Однажды подсадив свой проект на такой "комбайн" — с него очень больно переехать.
P.S Там кстати есть фри-тариф в облаке, это если хочется поглядеть в живую.
#postgres #databases
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍6❤4🔥3
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Вайб-кодинг уязвимостей или как AI роняет безопасность
Выглядит безопасно. Писать код с LLM — очень легко, просто и весело. Не нужно мучаться с документацией, не нужно фиксить баги. Вообще ничего не нужно. Только инструкцию в чат написать. Раз-два — и всё...
1❤9👍6🔥4
Просто тащусь с того, как Cursor считывает паттерн ручных действий и предлагает через Tab перейти к следующему месту и повторить.
К примеру - подчищаем старые комментарии, ненужные переменные, меняем нейминг и т.д. Понимает суть на лету и всё превращается в Tab-Tab-Tab💪
P.S Tab-разработчики на месте?😂
К примеру - подчищаем старые комментарии, ненужные переменные, меняем нейминг и т.д. Понимает суть на лету и всё превращается в Tab-Tab-Tab
P.S Tab-разработчики на месте?
Please open Telegram to view this post
VIEW IN TELEGRAM
💯9😁4👍3🤡1
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
3 15❤8😁3 3🔥1
Накину вам очередной use-case для Cursor.
Он очень хорошо ищет баги в коде. Причем баги обычно прячутся в взаимодействии между несколькими функциями/классами/модулями и накинуть такой контекст в тот же ChatGPT это просто мучение. А в случае с Cursor из коробки появляется простой инструмент, который в один промпт сделает именно то, что нам требуется.
Часто бывает, что просто глаз замылился и уже в упор что-то не видишь. Ну или просто не учёл, что какое-то из изменений выстрелит в другой части проекта.
Причем полезны даже ложные срабатывания. Они обычно подсвечивают очень "неочевидные" места, где не помешало бы накинуть комментарий.
На мой взгляд достаточно простого промпта в ask моде по типу "Найди все потенциальные проблемы, ошибки и нарушение бизнес-логики в новом коде/в фиче N/в модуле M".
В любом случае нужно код-ревью. И тестировщики. И хорошее покрытие кода тестами. Cursor ни один из этих этапов не исключает. Просто помогает поднять качество кода минимальным количеством усилий.
🔛 @kisel_it
#cursor #vibecoding #programming
Он очень хорошо ищет баги в коде. Причем баги обычно прячутся в взаимодействии между несколькими функциями/классами/модулями и накинуть такой контекст в тот же ChatGPT это просто мучение. А в случае с Cursor из коробки появляется простой инструмент, который в один промпт сделает именно то, что нам требуется.
Часто бывает, что просто глаз замылился и уже в упор что-то не видишь. Ну или просто не учёл, что какое-то из изменений выстрелит в другой части проекта.
Причем полезны даже ложные срабатывания. Они обычно подсвечивают очень "неочевидные" места, где не помешало бы накинуть комментарий.
На мой взгляд достаточно простого промпта в ask моде по типу "Найди все потенциальные проблемы, ошибки и нарушение бизнес-логики в новом коде/в фиче N/в модуле M".
В любом случае нужно код-ревью. И тестировщики. И хорошее покрытие кода тестами. Cursor ни один из этих этапов не исключает. Просто помогает поднять качество кода минимальным количеством усилий.
#cursor #vibecoding #programming
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤5👍3🔥3🤡2
У кого-то понедельник не удался. Docker registry и много других сервисов упали. Полностью. И уже много часов не могут ожить 🤔
Интересно, что же у них случилось?
Интересно, что же у них случилось?
Please open Telegram to view this post
VIEW IN TELEGRAM
1🗿8🔥3❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
2 8 8🙈3
Ура! Наконец-то дописал статью про войну FastAPI и Django.
Всегда был уверен в том, что вокруг Django слишком много неоправданного негатива.
Многие вещи этот фреймворк умеет делать так хорошо, как "фастаперам" и не снилось. Но кто будет себя утруждать тем, чтобы детально разобраться перед тем как критиковать?)
Приятного прочтения😺
Всегда был уверен в том, что вокруг Django слишком много неоправданного негатива.
Многие вещи этот фреймворк умеет делать так хорошо, как "фастаперам" и не снилось. Но кто будет себя утруждать тем, чтобы детально разобраться перед тем как критиковать?)
Приятного прочтения
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Не обижайте Django
Ну вот, уже обидели. Чем популярнее становится FastAPI , тем сильнее критикуют Django . И не просто критикуют. Брезгуют? Пренебрегают? Всего понемножку. Всё чаще слышу, что Django - пережиток...
4👍9❤3🔥2 1
Пользователь: исправь ошибку, тесты падают.
Cursor: ни слова больше, всё сделаю!
Было бы смешно, если бы не было так грустно. Я сталкивался с таким поведением дважды😂
В какой то момент Курсор ловит падающий assert в тестах в try/except (на самом деле ошибку нужно было ловить в коде проекта), потом запускает тесты. В результатах тестов видит, что всё прошло успешно и с чувством выполненного долга рапортует о том, что тесты исправлены и ошибки больше нет.
Ошибки и правда больше нет, но...
Cursor: ни слова больше, всё сделаю!
Было бы смешно, если бы не было так грустно. Я сталкивался с таким поведением дважды
В какой то момент Курсор ловит падающий assert в тестах в try/except (на самом деле ошибку нужно было ловить в коде проекта), потом запускает тесты. В результатах тестов видит, что всё прошло успешно и с чувством выполненного долга рапортует о том, что тесты исправлены и ошибки больше нет.
Ошибки и правда больше нет, но...
Please open Telegram to view this post
VIEW IN TELEGRAM
2 10👍1🔥1
Каким бы не был классным Pydantic, он принёс в Python и кое-что плохое - страх использовать словари. Да, тот самый обычный важно ничего не пропустить ), чтобы было лучше. Понятнее. Надежнее. Мммм, вкусно.
Зачем нам словарь вообще словари? DEPRECATED! Ни типизации, ни валидации. Никакого контроля! Еще и в отдельный файл не вынести... А если там целых ПЯТЬ ключей, о таком лучше не думать. А вдруг опечатка в названии ключа? А вдруг передадут не тот тип данных? А как мы узнаем какие типы данных нужно передать?
Точно ли это нужно всегда и везде? Сомневаюсь. Когда Я передаю данные СЕБЕ - мне не нужно ничего валидировать. Если я ошибусь - значит я ошибся. Пойду и исправлю. Если без типизации всё непонятно - поверь, главная проблема не в отсутствии моделей.
P.S Совет с пикчи влияет на качество кода даже сильнее, чем Pydantic-модели. Проверено!😂
🔛 @kisel_it
#python #programming
dict. Ходит слух, что нужно обмазывать весь код моделями со всех сторон (Зачем нам словарь вообще словари? DEPRECATED! Ни типизации, ни валидации. Никакого контроля! Еще и в отдельный файл не вынести... А если там целых ПЯТЬ ключей, о таком лучше не думать. А вдруг опечатка в названии ключа? А вдруг передадут не тот тип данных? А как мы узнаем какие типы данных нужно передать?
Точно ли это нужно всегда и везде? Сомневаюсь. Когда Я передаю данные СЕБЕ - мне не нужно ничего валидировать. Если я ошибусь - значит я ошибся. Пойду и исправлю. Если без типизации всё непонятно - поверь, главная проблема не в отсутствии моделей.
P.S Совет с пикчи влияет на качество кода даже сильнее, чем Pydantic-модели. Проверено!
#python #programming
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍11😁5
Если вдруг пропустили - вышел Cursor 2.0. Всё труднее назвать его "очередным форком VS Code", прогресс впечатляет.
Самые важные изменения на мой взгляд:
Новый режим Multi-Agent. Это самое главное. Есть возможность выбрать между двумя совершенно разными подходами к разработке. Первый вариант в вкладке Agents и второй вариант в вкладке Editor. В Agents всё похоже на классический "чат", только внутри IDE. В Editor - привычный нам интерфейс редактора. Теперь можно запускать до 8 агентов параллельно, под капотом они используют git worktrees чтобы не конфликтовать.
Новая модель Composer. Говорят, что в скорости она аж х4 быстрее аналогов. Насколько умнее - не говорят. Если всё правда. то это реально круто. Для мелких правок скорость - самый важный фактор.
Переработали Code Review. Должно стать удобнее. Одно окошко, без переключения между файлами. Давно пора, в текущем виде это прям плохо.
Песочница. На маках по умолчанию появился "терминал-песочница" для команд с доступом к контексту проекта. Ох как хотелось бы увидеть такое на Linux, а то разных страшных историй уже целый вагон.
Управление голосом. В чат теперь можно наговорить всякого и посмотреть, что получится. Не представляю, как это использовать, хотя может кому-то и понравится.
В остальном - поработали над производительностью, улучшили качество сбора контекста, всякие разные ui-правки, фичи для командной работы.
P.S Ну, кто уже пробовал? Поделитесь впечатлениями
🔛 @kisel_it
#python #programming
Самые важные изменения на мой взгляд:
Новый режим Multi-Agent. Это самое главное. Есть возможность выбрать между двумя совершенно разными подходами к разработке. Первый вариант в вкладке Agents и второй вариант в вкладке Editor. В Agents всё похоже на классический "чат", только внутри IDE. В Editor - привычный нам интерфейс редактора. Теперь можно запускать до 8 агентов параллельно, под капотом они используют git worktrees чтобы не конфликтовать.
Новая модель Composer. Говорят, что в скорости она аж х4 быстрее аналогов. Насколько умнее - не говорят. Если всё правда. то это реально круто. Для мелких правок скорость - самый важный фактор.
Переработали Code Review. Должно стать удобнее. Одно окошко, без переключения между файлами. Давно пора, в текущем виде это прям плохо.
Песочница. На маках по умолчанию появился "терминал-песочница" для команд с доступом к контексту проекта. Ох как хотелось бы увидеть такое на Linux, а то разных страшных историй уже целый вагон.
Управление голосом. В чат теперь можно наговорить всякого и посмотреть, что получится. Не представляю, как это использовать, хотя может кому-то и понравится.
В остальном - поработали над производительностью, улучшили качество сбора контекста, всякие разные ui-правки, фичи для командной работы.
P.S Ну, кто уже пробовал? Поделитесь впечатлениями
#python #programming
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍4❤2🔥2👀1
Причуды SQLite. Совсем недавно на оф. сайте SQLite набрёл на раздел "quirks", который рассказывает про "приколы" этой БД. Это просто баги и костыли к которым все привыкли. Многие даже не знают, что есть какие-то особенности вообще. Так что хочу с вами поделиться:
1. Типы данных не накладывают ограничений на типы данных в столбце. Это больше рекомендация, а не правило: Столбец с типом INTEGER может хранить текстовую строку. SQLite конечно попытается преобразовать строку в число, но если это не удастся, просто продолжит работать как ни в чем не бывало.
2. Отсутствие отдельных типов для BOOLEAN и DATETIME: В SQLite нет специальных типов для булевых значений или дат и времени. Вместо этого для BOOLEAN обычно используются целые числа 0 и 1, а для DATETIME — TEXT, REAL или INTEGER.
3. Столбцы могут вообще не иметь типа. Вы можете создавать таблицы, в которых у столбцов не указан тип данных.
Да, там появились STRICT-таблицы, но кто их использует?
4. NULL в PRIMARY KEY. Из-за старой ошибки, в SQLite столбец, являющийся PRIMARY KEY, может содержать значения NULL. Хотели пофиксить, но на эту "фичу" очень многие пользователи завязали логику работы своих приложений. Пришлось оставить во благо обратной совместимости.
5. Ключевые слова в качестве идентификаторов. SQLite позволяет использовать многие ключевые слова SQL в качестве имён для таблиц или столбцов без необходимости их экранирования.
6. Проверка внешних ключей (Foreign Keys) отключена по умолчанию. Хотя SQLite поддерживает внешние ключи, их проверка по умолчанию выключена. Чтобы её активировать, необходимо выполнить команду PRAGMA foreign_keys = ON; для каждого соединения с базой данных. Естественно этим тоже никто не пользуется и даже не подозревает в отсутствии проверки.
P.S Это между прочим самая популярная БД в мире, вне конкуренции. При этом её поддерживают всего 3 человека😘
🔛 @kisel_it
#programming #sqlite
1. Типы данных не накладывают ограничений на типы данных в столбце. Это больше рекомендация, а не правило: Столбец с типом INTEGER может хранить текстовую строку. SQLite конечно попытается преобразовать строку в число, но если это не удастся, просто продолжит работать как ни в чем не бывало.
2. Отсутствие отдельных типов для BOOLEAN и DATETIME: В SQLite нет специальных типов для булевых значений или дат и времени. Вместо этого для BOOLEAN обычно используются целые числа 0 и 1, а для DATETIME — TEXT, REAL или INTEGER.
3. Столбцы могут вообще не иметь типа. Вы можете создавать таблицы, в которых у столбцов не указан тип данных.
Да, там появились STRICT-таблицы, но кто их использует?
4. NULL в PRIMARY KEY. Из-за старой ошибки, в SQLite столбец, являющийся PRIMARY KEY, может содержать значения NULL. Хотели пофиксить, но на эту "фичу" очень многие пользователи завязали логику работы своих приложений. Пришлось оставить во благо обратной совместимости.
5. Ключевые слова в качестве идентификаторов. SQLite позволяет использовать многие ключевые слова SQL в качестве имён для таблиц или столбцов без необходимости их экранирования.
6. Проверка внешних ключей (Foreign Keys) отключена по умолчанию. Хотя SQLite поддерживает внешние ключи, их проверка по умолчанию выключена. Чтобы её активировать, необходимо выполнить команду PRAGMA foreign_keys = ON; для каждого соединения с базой данных. Естественно этим тоже никто не пользуется и даже не подозревает в отсутствии проверки.
P.S Это между прочим самая популярная БД в мире, вне конкуренции. При этом её поддерживают всего 3 человека
#programming #sqlite
Please open Telegram to view this post
VIEW IN TELEGRAM
3🤔8✍3👍2
Мышь? Нет, лучше трекбол.
Взял тут себе Logitech MX Ergo S на замену старенькому трекболу с Али. До этого пользовался Zelotes F-33 — дешёвый вариант «на попробовать». Тогда я вообще не понимал, что это за штука такая — трекбол, и можно ли с ним полноценно полноценно работать или это только для дизайнеров и графики. Неожиданно он стал моей основной мышью больше чем на год. И за это время стало понятно: да, это удобно. Даже с простеньким сенсором и сборкой.
Вообще эта эпопея с разными мышками однажды началась из-за боли в кисти. С того времени прошел через 3 вертикальных мышки, но идеальную так и не нашел. Они более "специфичны", не все хорошо лежат в руке. Да и не сильно снимают нагрузку, просто меняют положение руки.
Так что не бойтесь пробовать. Конечно какое-то время нужно привыкнуть, но игра стоит свеч.
Взял тут себе Logitech MX Ergo S на замену старенькому трекболу с Али. До этого пользовался Zelotes F-33 — дешёвый вариант «на попробовать». Тогда я вообще не понимал, что это за штука такая — трекбол, и можно ли с ним полноценно полноценно работать или это только для дизайнеров и графики. Неожиданно он стал моей основной мышью больше чем на год. И за это время стало понятно: да, это удобно. Даже с простеньким сенсором и сборкой.
Вообще эта эпопея с разными мышками однажды началась из-за боли в кисти. С того времени прошел через 3 вертикальных мышки, но идеальную так и не нашел. Они более "специфичны", не все хорошо лежат в руке. Да и не сильно снимают нагрузку, просто меняют положение руки.
Так что не бойтесь пробовать. Конечно какое-то время нужно привыкнуть, но игра стоит свеч.
2👍7🔥3🤔3❤2