Кисель в АйТи | AI, Python, технологии – Telegram
Кисель в АйТи | AI, Python, технологии
3.04K subscribers
154 photos
4 videos
49 links
Я – Александр, и это мой авторский канал, на котором я пишу про AI, разработку и работу в айти.
Download Telegram
Ну что, друзья, вот нас и 2000! 💪

Чуть больше года назад эта цифра казалась недосягаемой, невозможной. А получилось!
Даже сложно поверить. Спасибо всем! Рад, что вы со мной. Рад, что вы читаете, оставляете реакции, пишете комменты ❤️

Обещаю и дальше радовать вас вкусным и полезным контентом. Ура! 🎂

P.S На фото можем видеть, как NanoBanana видит праздничный вайб (торт между прочим настоящий)
Please open Telegram to view this post
VIEW IN TELEGRAM
516🎉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
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍64🔥3
Просто тащусь с того, как Cursor считывает паттерн ручных действий и предлагает через Tab перейти к следующему месту и повторить.
К примеру - подчищаем старые комментарии, ненужные переменные, меняем нейминг и т.д. Понимает суть на лету и всё превращается в Tab-Tab-Tab 💪

P.S Tab-разработчики на месте? 😂
Please open Telegram to view this post
VIEW IN TELEGRAM
💯9😁4👍3🤡1
Вашему вниманию лучшие фоны для пятничных созвонов 🍷

🔛 @kisel_it

#memes
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
3158😁33🔥1
Накину вам очередной use-case для Cursor.

Он очень хорошо ищет баги в коде. Причем баги обычно прячутся в взаимодействии между несколькими функциями/классами/модулями и накинуть такой контекст в тот же ChatGPT это просто мучение. А в случае с Cursor из коробки появляется простой инструмент, который в один промпт сделает именно то, что нам требуется.
Часто бывает, что просто глаз замылился и уже в упор что-то не видишь. Ну или просто не учёл, что какое-то из изменений выстрелит в другой части проекта.
Причем полезны даже ложные срабатывания. Они обычно подсвечивают очень "неочевидные" места, где не помешало бы накинуть комментарий.

На мой взгляд достаточно простого промпта в ask моде по типу "Найди все потенциальные проблемы, ошибки и нарушение бизнес-логики в новом коде/в фиче N/в модуле M".

В любом случае нужно код-ревью. И тестировщики. И хорошее покрытие кода тестами. Cursor ни один из этих этапов не исключает. Просто помогает поднять качество кода минимальным количеством усилий.

🔛 @kisel_it

#cursor #vibecoding #programming
Please open Telegram to view this post
VIEW IN TELEGRAM
15👍3🔥3🤡2
У кого-то понедельник не удался. Docker registry и много других сервисов упали. Полностью. И уже много часов не могут ожить 🤔

Интересно, что же у них случилось?
Please open Telegram to view this post
VIEW IN TELEGRAM
1🗿8🔥31
О как, на часок отвлёкся, а уже все интернеты умерли. 😂
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
288🙈3
Ура! Наконец-то дописал статью про войну FastAPI и Django.
Всегда был уверен в том, что вокруг Django слишком много неоправданного негатива.
Многие вещи этот фреймворк умеет делать так хорошо, как "фастаперам" и не снилось. Но кто будет себя утруждать тем, чтобы детально разобраться перед тем как критиковать?)

Приятного прочтения 😺
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍93🔥21
Пользователь: исправь ошибку, тесты падают.
Cursor: ни слова больше, всё сделаю!

Было бы смешно, если бы не было так грустно. Я сталкивался с таким поведением дважды 😂

В какой то момент Курсор ловит падающий assert в тестах в try/except (на самом деле ошибку нужно было ловить в коде проекта), потом запускает тесты. В результатах тестов видит, что всё прошло успешно и с чувством выполненного долга рапортует о том, что тесты исправлены и ошибки больше нет.

Ошибки и правда больше нет, но...
Please open Telegram to view this post
VIEW IN TELEGRAM
210👍1🔥1
Каким бы не был классным Pydantic, он принёс в Python и кое-что плохое - страх использовать словари. Да, тот самый обычный dict. Ходит слух, что нужно обмазывать весь код моделями со всех сторон (важно ничего не пропустить), чтобы было лучше. Понятнее. Надежнее. Мммм, вкусно.

Зачем нам словарь вообще словари? DEPRECATED! Ни типизации, ни валидации. Никакого контроля! Еще и в отдельный файл не вынести... А если там целых ПЯТЬ ключей, о таком лучше не думать. А вдруг опечатка в названии ключа? А вдруг передадут не тот тип данных? А как мы узнаем какие типы данных нужно передать?

Точно ли это нужно всегда и везде? Сомневаюсь. Когда Я передаю данные СЕБЕ - мне не нужно ничего валидировать. Если я ошибусь - значит я ошибся. Пойду и исправлю. Если без типизации всё непонятно - поверь, главная проблема не в отсутствии моделей.

P.S Совет с пикчи влияет на качество кода даже сильнее, чем Pydantic-модели. Проверено! 😂


🔛 @kisel_it

#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
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍42🔥2👀1
Чего только HR'ы из Яндекса не придумают. Нигде от них не спасёшься 🤣
213👍2
Причуды 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
Please open Telegram to view this post
VIEW IN TELEGRAM
3🤔83👍2
Мышь? Нет, лучше трекбол.

Взял тут себе Logitech MX Ergo S на замену старенькому трекболу с Али. До этого пользовался Zelotes F-33 — дешёвый вариант «на попробовать». Тогда я вообще не понимал, что это за штука такая — трекбол, и можно ли с ним полноценно полноценно работать или это только для дизайнеров и графики. Неожиданно он стал моей основной мышью больше чем на год. И за это время стало понятно: да, это удобно. Даже с простеньким сенсором и сборкой.

Вообще эта эпопея с разными мышками однажды началась из-за боли в кисти. С того времени прошел через 3 вертикальных мышки, но идеальную так и не нашел. Они более "специфичны", не все хорошо лежат в руке. Да и не сильно снимают нагрузку, просто меняют положение руки.

Так что не бойтесь пробовать. Конечно какое-то время нужно привыкнуть, но игра стоит свеч.
2👍7🔥3🤔32
Кажется, что реально у всех компаний нейро-шиза. У Logitech в приложении для настройки мышки есть AI Prompt Builder для вызова окошка с ChatGPT... Кому? Зачем? А я еще на Еду AI в Яндекс.Еде жаловался 😂

Ждём AI ассистент в калькуляторе, календаре и, самое главное - в приложении с будильником. Всем ведь там очень сильно не хватает AI фичей, правда?

🔛 @kisel_it

#ai
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍7😁55
Зачем нужен новый REST API для Django?

Последний месяц я крайне увлечен созданием https://github.com/wemake-services/django-modern-rest
(Кстати, у нас уже >200 звезд и 26 контрибьюторов при 0 релизов)

Ключевой вопрос – зачем? Что будет нового?

Во-первых, я крайне сильно люблю Django. Основная причина – под него есть буквально любые библиотеки. Все то, что в FastAPI нужно героически писать руками – в джанге уже давно есть и работает.
Но, есть несколько основных причин, почему люди думают, что не любят джангу:
1. DRF, тут без лишних слов – он ужасен. Нет типизации, нет async, очень сложно работать с ним в сложных случаях
2. Многие считают, что джанга - сложная. Однако, она как FastAPI или Litestar может спокойно уместиться в один файл: https://django-modern-rest.readthedocs.io/en/latest/pages/micro-framework.html
3. Есть критика за архитектуру: тут нечего особо даже комментировать. На любом фреймворке можно писать хорошо, на любом можно писать плохо. Слой фреймворка очень тонкий
4. Медленный. А вот тут остановимся подробнее.

На скринах выше можно сравнить, что с django-modern-rest, без нескольких будущих оптимизаций (привет cython и rust!), голая джанга начинает выглядеть не так уж и медленнее FastAPI: бенчи.

Во-вторых, Django на длительный срок был в плену DRF. Который морально устарел еще в середине десятых.
Потом появилась django-ninja, которая хоть и намного лучше, но все равно не решает главную задачу: интеграция с существующими тулами. Конечно, если затащить FastAPI дизайн в чужой мир, то ничего не будет нормально работать 🌚️

Вот такие проблемы мы решаем.

Одной строкой:
- Супер строгая OpenAPI схема и валидация при разработке, что мы ее соблюдаем
- Полная типизация всего
- Нормальный способ создания АПИ, без god-functions a-la FastAPI
- async без sync_to_async
- Быстро: msgspec для парсинга json (самый быстрый способ в питоне), практически 0 работы в рантайме (все делаем при импорте), оптимизации роутера (быстрее дефолтного в 51 раз)
- Пидантик, msgspec, или любой другой способ выражать модели. Хоть adaptix
- Полная поддержка всего существующего в Django. От декораторов до миддлварь (с полной валидацией и OpenAPI схемой!)
- OpenAPI схема из коробки
- Удобное тестирование с polyfactory
- property-based тесты вашего АПИ одной командой благодаря schemathesis

Что еще будет:
- RSGI (да, на #rust скорее всего) под granian, в теории можем побить FastAPI после такого
- SSE с автоматической OpenAPI спекой и умной валидацией схемы
- JWT или любая другая аутентификация
- Какие-то части (скорее всего валидацию) мы компильнем cython, чтобы было еще быстрее

Modern? Modern!
Осталось дождаться. Релиз скоро!
И еще скоро будут несколько новых видео.

Мы регулярно постим задачки в @opensource_findings_python, так что можно нам помочь.
А если кто хочет мне закинуть на развитие опенсорса (за написание 32500 строк кода за 2 недели), то мой бусти открыт: https://boosty.to/sobolevn
Ну и звезды можно ставить, конечно же. Там посмотрите, какие люди нас уже советуют.

Большое спасибо Александру, Алексею, Роману, Максиму и всем остальным за неоценимую помощь. Пацаны, без вас никак! Лучшее сообщество!

Обсуждение: а чего бы вам хотелось в modern rest фреймворке? Чего сильно не хватает сейчас?
1🔥92👍1