99.9% технически реально качественного софта помирает на
На Product Radar за недолгую его историю выставлялось около 800 проектов, некоторые из них очень классные.
Вот, например, наткнулся: acetone.ai - супер удобный сервис для удаления фона с фото и картинок
#pet #software #image
GitHub
с парой десятков звезд, а говно типа Facebook
-a "завоёвывает" мирНа Product Radar за недолгую его историю выставлялось около 800 проектов, некоторые из них очень классные.
Вот, например, наткнулся: acetone.ai - супер удобный сервис для удаления фона с фото и картинок
#pet #software #image
Атрибуты хорошего кода
Хороший код (ПО) обладает рядом атрибутов, которые делают его удобным для чтения, поддержки и развития. Вот ключевые характеристики:
1. Читаемость
Понятные имена переменных, функций, классов (например, calculateTotalPrice() вместо calc()).
Единый стиль (консистентность в именовании, отступах, структуре).
Комментарии там, где логика неочевидна (но без избыточности).
2. Модульность и структурированность
Разделение на функции/классы/компоненты (принцип Single Responsibility).
Низкая связанность (low coupling) – компоненты минимально зависят друг от друга.
Высокая связность (high cohesion) – код внутри модуля решает одну задачу.
3. Тестируемость
Покрытие тестами (код легко проверить на корректность).
Изолированность (зависимости можно подменить mock-объектами).
4. Эффективность и производительность
Оптимальные алгоритмы (O-нотация учитывается, но без преждевременной оптимизации).
Минимизация ресурсов (память, процессор, сетевые запросы).
5. Гибкость и расширяемость
Открытость/закрытость (Open/Closed Principle) – код можно расширять без изменения существующей логики.
Использование паттернов проектирования (например, Factory, Strategy, Observer).
6. Надежность и отказоустойчивость
Обработка ошибок (корректные исключения, logging).
Обработка edge-cases (крайние случаи, невалидные входные данные).
7. Поддерживаемость
Документация (хотя бы минимальная: README, docstrings).
Рефакторинг – код можно улучшать без страха что-то сломать.
8. Безопасность
Защита от уязвимостей (SQL-инъекции, XSS, CSRF и др.).
Валидация входных данных.
9. Совместимость и переносимость
Кросс-платформенность (если требуется).
Четкие зависимости (использование package managers: pip, pnpm, maven).
10. Соответствие стандартам и best practices
Следование языковым идиомам (Pythonic way, Java Code Conventions, Vue code style и т. д.).
Интеграция с CI/CD (автоматические тесты, деплой)
#architecture #code
Хороший код (ПО) обладает рядом атрибутов, которые делают его удобным для чтения, поддержки и развития. Вот ключевые характеристики:
1. Читаемость
Понятные имена переменных, функций, классов (например, calculateTotalPrice() вместо calc()).
Единый стиль (консистентность в именовании, отступах, структуре).
Комментарии там, где логика неочевидна (но без избыточности).
2. Модульность и структурированность
Разделение на функции/классы/компоненты (принцип Single Responsibility).
Низкая связанность (low coupling) – компоненты минимально зависят друг от друга.
Высокая связность (high cohesion) – код внутри модуля решает одну задачу.
3. Тестируемость
Покрытие тестами (код легко проверить на корректность).
Изолированность (зависимости можно подменить mock-объектами).
4. Эффективность и производительность
Оптимальные алгоритмы (O-нотация учитывается, но без преждевременной оптимизации).
Минимизация ресурсов (память, процессор, сетевые запросы).
5. Гибкость и расширяемость
Открытость/закрытость (Open/Closed Principle) – код можно расширять без изменения существующей логики.
Использование паттернов проектирования (например, Factory, Strategy, Observer).
6. Надежность и отказоустойчивость
Обработка ошибок (корректные исключения, logging).
Обработка edge-cases (крайние случаи, невалидные входные данные).
7. Поддерживаемость
Документация (хотя бы минимальная: README, docstrings).
Рефакторинг – код можно улучшать без страха что-то сломать.
8. Безопасность
Защита от уязвимостей (SQL-инъекции, XSS, CSRF и др.).
Валидация входных данных.
9. Совместимость и переносимость
Кросс-платформенность (если требуется).
Четкие зависимости (использование package managers: pip, pnpm, maven).
10. Соответствие стандартам и best practices
Следование языковым идиомам (Pythonic way, Java Code Conventions, Vue code style и т. д.).
Интеграция с CI/CD (автоматические тесты, деплой)
#architecture #code
Получил очень интересный и полезный опыт:
1. Выделив
2. Добавив дизайн систему на
3. Выделив в отдельный репозиторий, который ставится как
4. Создав документацию
5. Добавив темизацию и кастомизацию компонентов
6. Переиспользовав его в других проектах
На
Alt-UI
#arkui #altui #ui
1. Выделив
UI
часть проекта Lissa Health
в отдельный модуль (привет, #fsd)2. Добавив дизайн систему на
CSS свойствах
и оформив всё как UI kit
3. Выделив в отдельный репозиторий, который ставится как
Git submodule
и подключается через npm
локально (для быстрых правок)4. Создав документацию
5. Добавив темизацию и кастомизацию компонентов
6. Переиспользовав его в других проектах
На
npmjs.org
не публиковал, на универсальность, полноту (не собираюсь выпускать ее как общую библиотеку) и актуальность документации не претендую, но можно просто посмотреть как работать с Ark-UI
.Alt-UI
#arkui #altui #ui
GitHub
GitHub - vuesence/alt-ui: Atl-UI Vue labrary (based on Ark-UI)
Atl-UI Vue labrary (based on Ark-UI). Contribute to vuesence/alt-ui development by creating an account on GitHub.
Подшлифовал Noema, теперь она может обрабатывать 2000-3000 сообщений за раз. Но это обычно нужно только для ИИ поиска сообщений по какой-то теме или от какого-то пользователя.
Добавил "Историю отчетов" и еще по мелочи. Экспериментирую с промптами, от них зависит результат на 90%. Использую в основном
Добавил два типовых промпта, которые хорошо работают на небольшого саммари для чатов за небольшой период
#pet #noema #ai
Добавил "Историю отчетов" и еще по мелочи. Экспериментирую с промптами, от них зависит результат на 90%. Использую в основном
microsoft/mai-ds-r1
- это допиленный Микрософтом DeepSeek-R1
Добавил два типовых промпта, которые хорошо работают на небольшого саммари для чатов за небольшой период
#pet #noema #ai
У
- "Автокомплит" теперь может работать с несколькими файлами (рефакторинг)
- Можно делать воркспейс с несколькими проектами,
- Правила можно генерить напрямую
- Можно в контекст засунуть всю кодовую базу и много другого
Тем не менее агент их местами тупит нереально, как робопылесос, утыкающийся в тапок на ровном месте...
#ai #cursor
Cursor
большие обновления- "Автокомплит" теперь может работать с несколькими файлами (рефакторинг)
- Можно делать воркспейс с несколькими проектами,
.cursor/rules
у каждого свои будут- Правила можно генерить напрямую
- Можно в контекст засунуть всю кодовую базу и много другого
Тем не менее агент их местами тупит нереально, как робопылесос, утыкающийся в тапок на ровном месте...
#ai #cursor
Самые значимые обновления
- Анимация
-
-
-
-
#css
CSS
в 2024 года:- Анимация
height
: auto
+ calc-size
-
@starting-style
: решает проблему, когда добавление элементов в DOM
ломает анимацию-
Scroll-driven animations
: эта функция добавляет в CSS
анимации, запускаемые скроллом.-
Popover API
: Позволяет создавать всплывающие подсказки и окна на чистом CSS
-
Document view transitions
: позволяет анимировать переходы между HTML
-документами.#css
Forwarded from Illya Klymov 🇺🇦
Во фронтенде нет архитектуры, потому что её заменил вечный карнавал фреймворков, где каждые полгода появляется новый "революционный" подход к решению тех же проблем, что решались 10 лет назад.
Фронтенд-разработчик — это человек, который может написать компонент в React, переписать его на Vue "для опыта", портировать на Angular "для резюме", а затем выбросить всё и начать с нуля на Svelte, потому что "он быстрее компилируется".
Архитектура здесь заменена философией "а что если мы возьмём состояние приложения, разобьём его на 200 мелких кусочков, раскидаем по разным хукам, стейт-менеджерам и контекстам, а потом будем полчаса искать, где лежит булева переменная для показа модального окна?"
Планирование структуры проекта сводится к выбору между 47 бойлерплейтами, каждый из которых обещает "best practices" и включает в себя 15 уровней вложенности папок, конфиг-файлы для 12 различных инструментов и зависимости, которые весят больше операционной системы.
В итоге "архитектура" фронтенда — это package.json на 200 строк, где половина зависимостей нужна только для того, чтобы заставить остальную половину работать вместе, а финальное приложение делает то же самое, что раньше делали тремя файлами: HTML, CSS и немного JavaScript.
Но зато теперь это называется "современная экосистема".
Фронтенд-разработчик — это человек, который может написать компонент в React, переписать его на Vue "для опыта", портировать на Angular "для резюме", а затем выбросить всё и начать с нуля на Svelte, потому что "он быстрее компилируется".
Архитектура здесь заменена философией "а что если мы возьмём состояние приложения, разобьём его на 200 мелких кусочков, раскидаем по разным хукам, стейт-менеджерам и контекстам, а потом будем полчаса искать, где лежит булева переменная для показа модального окна?"
Планирование структуры проекта сводится к выбору между 47 бойлерплейтами, каждый из которых обещает "best practices" и включает в себя 15 уровней вложенности папок, конфиг-файлы для 12 различных инструментов и зависимости, которые весят больше операционной системы.
В итоге "архитектура" фронтенда — это package.json на 200 строк, где половина зависимостей нужна только для того, чтобы заставить остальную половину работать вместе, а финальное приложение делает то же самое, что раньше делали тремя файлами: HTML, CSS и немного JavaScript.
Но зато теперь это называется "современная экосистема".
Если нужно добавить на страницу поле для редактирования текста, можно использовать атрибут
Чтобы ограничить ввод только текстом, можно использовать значение
Дополнительно можно ловить события
Подробнее о тонкостях работы с
#html
contenteditable
, как более приятную замену textarea
(для полей больших форм это не очень хорошая замена). Чтобы ограничить ввод только текстом, можно использовать значение
plaintext-only
у атрибута contenteditable
. Это предотвратит вставку HTML
-разметки, картинок или стилей.<div
contenteditable="plaintext-only"
data-placeholder="Начните печатать..."
></div>
Дополнительно можно ловить события
input
и paste
, чтобы очищать текст от случайного форматирования. Например, при вставке можно заменить HTML
-содержимое на обычный текст через e.clipboardData.getData('text/plain')
.Подробнее о тонкостях работы с
contenteditable
в статье на web.dev#html
web.dev
The contenteditable "plaintext-only" attribute value combination is now Baseline Newly available | Blog | web.dev
The contenteditable "plaintext-only" attribute value combination is now Baseline Newly available. Making an element contenteditable but plaintext-only has advantages over using a textarea in some cases highlighted in this post.
This media is not supported in your browser
VIEW IN TELEGRAM