Forwarded from artalog (artalar)
https://github.com/artalar/react-router-typed-object
Как и обещал (пол года назад 🫢), делюсь с вами типизированным конфигом роутера. Очень важно заметить, что либа лишь выводит пути и типы роутов и не требует никакого дополнительного синтаксиса (апи), а использует "нативный"
Реализовать это было для меня очень тяжело, могу рекомендовать энтузиастам как мозгодробительную задачку по типам.
Накидайте звездочек! https://github.com/artalar/react-router-typed-object
Как и обещал (пол года назад 🫢), делюсь с вами типизированным конфигом роутера. Очень важно заметить, что либа лишь выводит пути и типы роутов и не требует никакого дополнительного синтаксиса (апи), а использует "нативный"
RouteObject из react-router.Реализовать это было для меня очень тяжело, могу рекомендовать энтузиастам как мозгодробительную задачку по типам.
Накидайте звездочек! https://github.com/artalar/react-router-typed-object
код, дизайн, UI, тесты и т.п. должны быть логичны, последовательны, соответствовать общепринятым (среди пользователей/команды) практикам и вообще не удивлять негативно
https://ov7a.github.io/2022/01/27/principle-of-least-astonishment.html
https://en.wikipedia.org/wiki/Principle_of_least_astonishment
ov7a
Принцип наименьшего удивления
Как говорится, единственный нормальный способ измерения кода — это количество WTF в минуту.
Знаю, что это не совсем по теме канала, но всё же. Сегодня приснилось, как я программировал на PHP для CMS Drupal. А занимался этим минимум лет 5 назад. Трекер сна показал высокий стресс 🙂
😁7🕊1
Если вы пользуетесь tailwind и у вас привязка LTS ноде, на данный момент это 22.12.0, то вам надо перенастроить кофигурацию Tailwind на ESM. Потому что вы последней LTS ноде включили ESM по умолчанию.
import animate from "tailwindcss-animate";
/** @type {import('tailwindcss').Config} */
export default {
content: [],
theme: {
extend: {},
},
plugins: [animate],
}
Tailwindcss
Tailwind CSS v3.3: Extended color palette, ESM/TS support, logical properties, and more
Tailwind CSS v3.3 is here — bringing a bunch of new features people have been asking for forever, and a bunch of new stuff you didn't even know you wanted.
Интересно, почему большинство JS разработчики среди новеньких в Кложе?
https://clojure.org/news/2024/12/02/state-of-clojure-2024#newusers
https://clojure.org/news/2024/12/02/state-of-clojure-2024#newusers
Любопытый материал.
На рисунке — знаменитый тест, придуманный Карлом Данкером в 1935–ом году для экспериментов в области продуктивного мышления. Имеются: свеча, коробка спичек и коробка кнопок, требуется закрепить свечу на стене так, чтобы воск не капал на пол или на стену. Тест простой, решить задачу могут все, это лишь вопрос времени, либо творческого подхода.
Подумали? По ссылке ответ, и то как предпосылки влияют на время решения этой творческой задачи.
https://pikabu.ru/story/test_karla_dankera_7996920
На рисунке — знаменитый тест, придуманный Карлом Данкером в 1935–ом году для экспериментов в области продуктивного мышления. Имеются: свеча, коробка спичек и коробка кнопок, требуется закрепить свечу на стене так, чтобы воск не капал на пол или на стену. Тест простой, решить задачу могут все, это лишь вопрос времени, либо творческого подхода.
Подумали? По ссылке ответ, и то как предпосылки влияют на время решения этой творческой задачи.
https://pikabu.ru/story/test_karla_dankera_7996920
Это восхитительно и жутко одновременно https://www.reddit.com/r/Damnthatsinteresting/comments/1hvwk92/openai_realtime_api_connected_to_a_rifle/
Reddit
From the Damnthatsinteresting community on Reddit: OpenAI realtime API connected to a rifle
Explore this post and more from the Damnthatsinteresting community
Forwarded from How2AI
У дипсик нашлись серьезные проблемы😅
База нашумевшей компании оказалась полностью открытой... Там не было защиты... Вообще...
Внутри — миллион+ строк логов, среди которых:
🔹 Истории диалогов пользователей
🔹 Секретные ключи
🔹 Внутренние серверные данные
Всё это стало известно благодаря расследованию, которое опубликовала компания Wiz. Оказалось, что все запросы deepseek легко ищутся в открытых таблицах на субдоменах с нестандартными портами
"Поскольку ИИ глубоко интегрируется в бизнес по всему миру, отрасль должна осознать риски... и применять методы безопасности наравне с теми, которые требуются для поставщиков публичных облаков и крупных поставщиков инфраструктуры." - заканчивают статью
@how2ai #deepseek #security #игорян
База нашумевшей компании оказалась полностью открытой... Там не было защиты... Вообще...
Внутри — миллион+ строк логов, среди которых:
🔹 Истории диалогов пользователей
🔹 Секретные ключи
🔹 Внутренние серверные данные
Всё это стало известно благодаря расследованию, которое опубликовала компания Wiz. Оказалось, что все запросы deepseek легко ищутся в открытых таблицах на субдоменах с нестандартными портами
"Поскольку ИИ глубоко интегрируется в бизнес по всему миру, отрасль должна осознать риски... и применять методы безопасности наравне с теми, которые требуются для поставщиков публичных облаков и крупных поставщиков инфраструктуры." - заканчивают статью
@how2ai #deepseek #security #игорян
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔3
Последние пару месяцев пишу на Python. Раньше он мне никогда не нравился — меня отталкивал сам синтаксис. Но появилась возможность попробовать себя в бэкенде, и я решил отбросить вкусовщину. Как мне кажется, у Python какое-то “расслабленное” сообщество, без занудства и возведения в абсолют.
Вот моменты, которые особенно зацепили и запомнились:
1. Мне показалась неочевидной логика использования встроенных типов и типов из Pydantic: что откуда импортируется и почему.
2. Не понял, почему мой клиент к базе данных работал в отдельном event loop при запуске тестов.
Несмотря на всё это, я тоже постепенно заразился этой расслабленностью и перестал стремиться выжать максимум из всего. Возможно, повлиял и тот факт, что проект был на MongoDB, а денормализация там — это нормальный паттерн. Так что я тоже отбросил занудство и чрезмерную детализацию.
Вот моменты, которые особенно зацепили и запомнились:
1. Мне показалась неочевидной логика использования встроенных типов и типов из Pydantic: что откуда импортируется и почему.
2. Не понял, почему мой клиент к базе данных работал в отдельном event loop при запуске тестов.
Несмотря на всё это, я тоже постепенно заразился этой расслабленностью и перестал стремиться выжать максимум из всего. Возможно, повлиял и тот факт, что проект был на MongoDB, а денормализация там — это нормальный паттерн. Так что я тоже отбросил занудство и чрезмерную детализацию.
❤2🤔1
Некоторое время назад решил попробовать платные подписки разных чат-ботов. Claude совсем не зашел. Сейчас тестирую Gemini.
Первые субъективные впечатления — так себе. Ответы часто не устраивают: бот будто топчется на месте, и его всё время надо подпинывать. Нет ощущения, что это твой копилот, как с ChatGPT.
Особенно тупо реализовано поведение в NotebookLM: чат отвечает на языке, выбранном в настройках аккаунта Google. Я задал вопрос на английском, предварительно загрузил контекст тоже на английском — а он выдал ответ на русском.
Даже просьба “отвечай на английском” не сработала.
После смены языка аккаунта на английский — чат на русском просто исчез.🗿
UPD:
Вспомнил, добавлю еще что у Gemini нет десктопного клиента.
У Claude клиент есть, но ощущается не таким плавным и удобным, как у ChatGPT.
Пока мой персональный лидер — ChatGPT (использую только модель 4o).
Первые субъективные впечатления — так себе. Ответы часто не устраивают: бот будто топчется на месте, и его всё время надо подпинывать. Нет ощущения, что это твой копилот, как с ChatGPT.
Особенно тупо реализовано поведение в NotebookLM: чат отвечает на языке, выбранном в настройках аккаунта Google. Я задал вопрос на английском, предварительно загрузил контекст тоже на английском — а он выдал ответ на русском.
Даже просьба “отвечай на английском” не сработала.
После смены языка аккаунта на английский — чат на русском просто исчез.🗿
UPD:
Вспомнил, добавлю еще что у Gemini нет десктопного клиента.
У Claude клиент есть, но ощущается не таким плавным и удобным, как у ChatGPT.
Пока мой персональный лидер — ChatGPT (использую только модель 4o).
⚡1
The channel has no name!
Последние пару месяцев пишу на Python. Раньше он мне никогда не нравился — меня отталкивал сам синтаксис. Но появилась возможность попробовать себя в бэкенде, и я решил отбросить вкусовщину. Как мне кажется, у Python какое-то “расслабленное” сообщество, без…
Прочитал интересный пост с похожим вайбом, который натолкнул меня на размышления.
Иногда, когда задираешь планку слишком высоко, не вывозишь. А это бьёт по морали. Но ведь можно же сделать просто приемлемо, не идеально — и этого будет достаточно?
И тут начинается внутренний конфликт между личностями.
Детская часть говорит:
“Бери больше, кидай дальше! Пока летит — отдыхай. Даже не думай упрощать!”
Взрослая часть уже не такая прыткая:
“Давай лучше делать ставку на качество, а не на количество. Есть ведь решения, которые приемлемы и по усилиям, и по результату.”
Я видел много людей, для которых второй подход — по умолчанию.
Но с учётом моего типа личности, внутри часто происходит столкновение ребёнка и взрослого.
Иногда провожу терапевтические сессии с ChatGPT, и он дал мне важный инсайт:
“Не надо себя ломать и пытаться быть другим. Пользуйся своими сильными сторонами.”
Очевидно? Ага.
Но себя сложно менять. Работаем над этим.
Иногда, когда задираешь планку слишком высоко, не вывозишь. А это бьёт по морали. Но ведь можно же сделать просто приемлемо, не идеально — и этого будет достаточно?
И тут начинается внутренний конфликт между личностями.
Детская часть говорит:
“Бери больше, кидай дальше! Пока летит — отдыхай. Даже не думай упрощать!”
Взрослая часть уже не такая прыткая:
“Давай лучше делать ставку на качество, а не на количество. Есть ведь решения, которые приемлемы и по усилиям, и по результату.”
Я видел много людей, для которых второй подход — по умолчанию.
Но с учётом моего типа личности, внутри часто происходит столкновение ребёнка и взрослого.
Иногда провожу терапевтические сессии с ChatGPT, и он дал мне важный инсайт:
“Не надо себя ломать и пытаться быть другим. Пользуйся своими сильными сторонами.”
Очевидно? Ага.
Но себя сложно менять. Работаем над этим.
Telegram
Тимлид Очевидность
Надо много делать. Или не надо?
Читал в одном чатике айтишных управленцев мысль, что надо делать много, и тогда будет успешный успех. Я и согласен, и не согласен. Давайте разбираться.
Делать много одинакового
Это больше про нарабатывание объема и получение…
Читал в одном чатике айтишных управленцев мысль, что надо делать много, и тогда будет успешный успех. Я и согласен, и не согласен. Давайте разбираться.
Делать много одинакового
Это больше про нарабатывание объема и получение…
🔥1
Минутка нового: оказывается, существует венгерская нотация — стиль, при котором тип данных указывается в виде префикса. Например: strFirstName. В языках со статическими типами использовать смысла нет.
👍2
.
├── users
│ ├── users_controller.py
│ ├── users_model.py
│ ├── users_repository.py
│ ├── users_schema.py
│ └── users_service.py
Возможно вы уже применяли такой подход к именованию ваших файлов, переменных, или классов. Этот подход называется Semantic Naming. Мне нравится так именовать файлы, потому что удобно обращаться к ним через поиск.