Признаюсь вам - я не очень шарю за базы данных. Я могу сделать запрос, написать какой-то простой sql, но вот проектировать базы это точно не то чем я люблю заниматься.
Если возможно использую базу как сервис, типа того же supabase.com.
А сегодня я узнал что они запилили бесплатный онлайн инструмент postgres.new, который позволяет таким хомячкам как я с легкостью задизайнить базу потягав прямоугольники и нажаловавшись AIшке.
Причем есть возможность эту базу потестить прямо в браузере благодаря pglite.dev (postgress на WASM)
Можете потыкать сами или посмотреть как это тыкают на Ютубе.
Если возможно использую базу как сервис, типа того же supabase.com.
А сегодня я узнал что они запилили бесплатный онлайн инструмент postgres.new, который позволяет таким хомячкам как я с легкостью задизайнить базу потягав прямоугольники и нажаловавшись AIшке.
Причем есть возможность эту базу потестить прямо в браузере благодаря pglite.dev (postgress на WASM)
Можете потыкать сами или посмотреть как это тыкают на Ютубе.
YouTube
I gave AI full control over my database (postgres.new)
Introducing database.build (formerly postgres.new), the in-browser Postgres sandbox with AI assistance.
https://database.build
https://pglite.dev
Features:
- Unlimited Postgres databases directly in your browser
- AI assistance
- Drag-and-drop CSV import…
https://database.build
https://pglite.dev
Features:
- Unlimited Postgres databases directly in your browser
- AI assistance
- Drag-and-drop CSV import…
👍9🔥4🎉2
А вы пользуетесь PWA (не клей, а устанавливаемые вэб приложения)
Anonymous Poll
3%
Первый раз слышу
34%
Слышал о таком, но не пользовался
17%
Раньше было
28%
У меня установлено одно такое
17%
У меня установлено больше чем одно приложение PWA
Одна деталь меня всегда занимает в js - все что касается ошибок (Errors) и исключений (Exceptions) в нашем коде перевернуто сверх на голову.
Для контекста - что есть что:
Error - это когда ваша приложение сломалось полностью, пишем в логи трейс и умираем. Например - закончилась оперативная память.
Exception - это когда случилась неприятность, но мы можем с этим что-то сделать или вообще проигнорировать. Например - мы не нашли лог файл в который раньше писали.
в JavaScript нету нормального разделения на ошибки и исключения. у нас есть только объект Error, который мы используем часто для того чтобы выбросить исключение и как то его обработать.
Но как найти где она там будет обработана? А вы точно catch вашему промису добавили?
В связи с этим я для себя выбрал практику в ситуациях где я ожидаю эксепшены которые должны быть обработаны (на практике это основное их отличие от ошибок) я возвращаю из функции массив.
Например.
Таким образом я всегда могу быть уверен (благодоря тсу) что я эту ошибку отловил и учел в коде выше.
В ситуациях где я хочу чтобы приложение завершило работу - я делаю throw Error(...)
Ну и напоследок пример очень странного кода который часто вижу и никогда не понимал. Что это дает и как ловить эту ошибку кто-нибудь знает?
Для контекста - что есть что:
Error - это когда ваша приложение сломалось полностью, пишем в логи трейс и умираем. Например - закончилась оперативная память.
Exception - это когда случилась неприятность, но мы можем с этим что-то сделать или вообще проигнорировать. Например - мы не нашли лог файл в который раньше писали.
в JavaScript нету нормального разделения на ошибки и исключения. у нас есть только объект Error, который мы используем часто для того чтобы выбросить исключение и как то его обработать.
Но как найти где она там будет обработана? А вы точно catch вашему промису добавили?
В связи с этим я для себя выбрал практику в ситуациях где я ожидаю эксепшены которые должны быть обработаны (на практике это основное их отличие от ошибок) я возвращаю из функции массив.
Например.
function someFn(data) {
if (!someCheck(data)) return [Error('Can not do something because....'), null]
// ...
return [null, something]
}Таким образом я всегда могу быть уверен (благодоря тсу) что я эту ошибку отловил и учел в коде выше.
В ситуациях где я хочу чтобы приложение завершило работу - я делаю throw Error(...)
Ну и напоследок пример очень странного кода который часто вижу и никогда не понимал. Что это дает и как ловить эту ошибку кто-нибудь знает?
const onClick = useCallback(() => {
...
throw Error(...)
}, [])
<div onClick={onClick} />👍6👏2
Ну вот и чего ему не сиделось в эмиратах
Контекст: Дуров был арестован в Франции, ему грозит до 20 лет
Контекст: Дуров был арестован в Франции, ему грозит до 20 лет
🫡3🤨2
*Звук очищающихся серверов телеграмма от сомнительного контента в сохраненках*
🫡3
Если вы когда-нибудь публиковали свой npm пакет то у вас наверняка была куча вопросов о том, что писать в main, exports, module, default поля в package.json
К счастью теперь есть либа @arethetypeswrong/cli которая призвана подсказать и проверить что все заполнено правильно
К счастью теперь есть либа @arethetypeswrong/cli которая призвана подсказать и проверить что все заполнено правильно
❤8👍2🤗1
В JS в какой ситуации выполнение функции дойдет до
(ответ дам через 10 минут)
return 'success' но функция никогда не вернет эту строчку (ответ дам через 10 минут)
Typenoscript официально не поддерживает функции-конструкторы потому что... да прост впадлу им, на самом деле все (типизация this, и конструкторов) у них для этого есть, просто это все приходится кастовать руками
playground.ts
interface ChangeSet {
added: File[];
removed: File[];
}
const ChangeSet = function (this: ChangeSet) {
this.added = new Array<File>();
this.removed = new Array<File>();
} as unknown as new () => ChangeSet;
const changeSet = new ChangeSet()playground.ts
😁3
Что объединяет Twitter, Notion, Telegram, Uber, React и Minecraft?
Все они стали очень популярными в своей сфере, и в каждом из них вижу одну общую черту - они тщательно маскируют свою сложность, пряча ее от юзера до момента когда он будет более лоялен и более уверен. Мастерство UX дизайнеров этих приложений заключается в том чтобы не показывать фичи до момента пока они не станут нужны, сосредоточив пользователя на какой-то очень простой базовой задаче.
Пользователь пришел, легко адаптировался, выполнил свою первую простую задачу без туториалов подсвечивающих какую кнопку для чего нажимать, а потом по тихоньку открывает для себя "хмм, а мне бы ещё вот это, интересно а тут так можно" и только в этот момент для него "появляется" эта фича.
Да, вторая половина успеха в том что бы фича находилось легко в тот момент когда она станет нужна, для чего надо очень хорошо понимать ситуации в которых это происходит.
Мне кажется наиболее ярким примером в этом списке является Minecraft - самая продаваемая и долгоживущая игра в мире.
В нем нет квестов, нет четкой сюжетной линий, нет никаких npc которые бы рассказали кто наш главный герой и что он должен делать. Нет даже тутора (не считая надпись "ударь дерево" в самом начале игры). Игрок просто занимается тем чем хочет, и он открывает те аспекты игры которые интересны именно ему, и играет в такую игру в которую ЕМУ нравится. А рядом люди играют в том же мире но совсем в другую игру. В этом весь секрет
Все они стали очень популярными в своей сфере, и в каждом из них вижу одну общую черту - они тщательно маскируют свою сложность, пряча ее от юзера до момента когда он будет более лоялен и более уверен. Мастерство UX дизайнеров этих приложений заключается в том чтобы не показывать фичи до момента пока они не станут нужны, сосредоточив пользователя на какой-то очень простой базовой задаче.
Пользователь пришел, легко адаптировался, выполнил свою первую простую задачу без туториалов подсвечивающих какую кнопку для чего нажимать, а потом по тихоньку открывает для себя "хмм, а мне бы ещё вот это, интересно а тут так можно" и только в этот момент для него "появляется" эта фича.
Да, вторая половина успеха в том что бы фича находилось легко в тот момент когда она станет нужна, для чего надо очень хорошо понимать ситуации в которых это происходит.
Мне кажется наиболее ярким примером в этом списке является Minecraft - самая продаваемая и долгоживущая игра в мире.
В нем нет квестов, нет четкой сюжетной линий, нет никаких npc которые бы рассказали кто наш главный герой и что он должен делать. Нет даже тутора (не считая надпись "ударь дерево" в самом начале игры). Игрок просто занимается тем чем хочет, и он открывает те аспекты игры которые интересны именно ему, и играет в такую игру в которую ЕМУ нравится. А рядом люди играют в том же мире но совсем в другую игру. В этом весь секрет
🔥12👍8❤1
Меня спрашивают почему остальные не расписал. Вам будет интересно почитать разбор каждого придется из списка?
Anonymous Poll
86%
Да, хотим
14%
Нет, не нужно
Work & Beer Balance
Что объединяет Twitter, Notion, Telegram, Uber, React и Minecraft? Все они стали очень популярными в своей сфере, и в каждом из них вижу одну общую черту - они тщательно маскируют свою сложность, пряча ее от юзера до момента когда он будет более лоялен и…
Рассмотрим остальные - Twitter (x.com) в своем UX сделал тот же трюк. Все соц сети что я видел до него (майспейс, ЖЖ, Фейсбук, ныне покойная google+) предлагали сходу сразу много фичей в виде менюшек и кнопочек на главной, и всеми силами протаскивали пользователя через флоу наполнения профиля (потому что им так надо было). Друзья, стена, новостная лента, приложения внутри приложения, группа, статусы вываливаются на голову нового пользователя. Регистрация в Твиттере произошла у меня как то между прочим, на ходу. Это ощущалось как то что я зашёл на курилку - люди о чем то говорят и тебе предлагают вставить свои пять копеек. Простая задача "Послушать чужое мнение и высказать свое" решена почти идеально, все остальное, вроде личных сообщений и профиля, управление подписками, запрятано по-глубже, и находится в случае надобности.
Ремарка для тех у кого настроение подушнить:не все ux решения там хороши, но принцип - спрятать все лишнее и решить идеально главное - на месте.
Ремарка для тех у кого настроение подушнить:
👍6
Work & Beer Balance
Рассмотрим остальные - Twitter (x.com) в своем UX сделал тот же трюк. Все соц сети что я видел до него (майспейс, ЖЖ, Фейсбук, ныне покойная google+) предлагали сходу сразу много фичей в виде менюшек и кнопочек на главной, и всеми силами протаскивали пользователя…
Ремарка на тему:
А бывает наоборот? Чаще чем хотелось бы. Многое научное ПО, и часто open source ПО с GUI - не может себе позволить или не считает нужным исследовать UX, и просто фигачат все фичи как безумные в бесчисленное количество панелек.
А потом индусы снимают видео длинной в несколько часов чтобы объяснить как сделать hello world проект.
Во первых - так проще разработчику. Во вторых - это кажется логичным - "спрячешь фичу - ее не найдут, значит надо выпячивать каждую следующую прямо пользователю в глаз. Ведь в противном случае он может подумать что такой фичи нет."
Вот только чем больше фич тем более пользователь "слепой". Он перегружен информацией и не может найти то что ищет. У вас бывала ситуация когда вы открываете полный холодильник и не можете найти бутылку молока, хотя вот же она прямо перед вами?
Но как быть, нельзя же выкинуть из приложения все фичи и оставить только одну!
Приведу пример - представьте себе что пользователь ищет дорогу к решению своей проблемы. Например, ему нужно прийти в город Б. Каждая фича видимая с главной - это еще одна дорога на перекрестке сразу в начале его путешествия.
В магазин, в туалет, к лавочке в тени, к колонке с водой. Это фичи. Вместо того чтобы идти в город Б - пользователю надо стоять искать нужную дорогу и думать о остальных вариантах (может зайти в магазин купить в дорогу воды?), он отвлекается и фрустриуется. Это плохой UX, (хороший если вы Японец)
Будет лучше если UX дизайнер походит с пользователями по дороге и отметит место где пользователи обычно хотят попить, а где отлить, и на протяжении пути сделают соответствующие ответвления - это уже будет простой выбор (да/нет), и если вы угадаете момент правильно - обрадует вашего пользователя и оставит положительные эмоции.
А бывает наоборот? Чаще чем хотелось бы. Многое научное ПО, и часто open source ПО с GUI - не может себе позволить или не считает нужным исследовать UX, и просто фигачат все фичи как безумные в бесчисленное количество панелек.
А потом индусы снимают видео длинной в несколько часов чтобы объяснить как сделать hello world проект.
Во первых - так проще разработчику. Во вторых - это кажется логичным - "спрячешь фичу - ее не найдут, значит надо выпячивать каждую следующую прямо пользователю в глаз. Ведь в противном случае он может подумать что такой фичи нет."
Вот только чем больше фич тем более пользователь "слепой". Он перегружен информацией и не может найти то что ищет. У вас бывала ситуация когда вы открываете полный холодильник и не можете найти бутылку молока, хотя вот же она прямо перед вами?
Но как быть, нельзя же выкинуть из приложения все фичи и оставить только одну!
Приведу пример - представьте себе что пользователь ищет дорогу к решению своей проблемы. Например, ему нужно прийти в город Б. Каждая фича видимая с главной - это еще одна дорога на перекрестке сразу в начале его путешествия.
В магазин, в туалет, к лавочке в тени, к колонке с водой. Это фичи. Вместо того чтобы идти в город Б - пользователю надо стоять искать нужную дорогу и думать о остальных вариантах (может зайти в магазин купить в дорогу воды?), он отвлекается и фрустриуется. Это плохой UX,
Будет лучше если UX дизайнер походит с пользователями по дороге и отметит место где пользователи обычно хотят попить, а где отлить, и на протяжении пути сделают соответствующие ответвления - это уже будет простой выбор (да/нет), и если вы угадаете момент правильно - обрадует вашего пользователя и оставит положительные эмоции.
💯6👍2
Work & Beer Balance
Ремарка на тему: А бывает наоборот? Чаще чем хотелось бы. Многое научное ПО, и часто open source ПО с GUI - не может себе позволить или не считает нужным исследовать UX, и просто фигачат все фичи как безумные в бесчисленное количество панелек. А потом индусы…
Uber когда то выглядел вот так. Посмотрите какой простой и чистый интерфейс, им может пользоваться бабушка, уставший после работы человек, и я полагаю даже алкогольное опьянение не станет большим препятствием что б нажать кнопку "домой".
Но, к сожалению, все это было бездарно просрано
Но, к сожалению, все это было бездарно просрано
❤12🤬1
Решил я тут попробовать Cursor IDE (кто не в курсе - это такой vscode, но с полностью закрытым кодом, и нашпигованый аишкой по самые помидорки)
Но на Linux (Gnome) у меня задвоились заголовки окна (как на картинке).
Написал баш скрипт который скачает иде, и пофиксит ее, вдруг пригодится
Но на Linux (Gnome) у меня задвоились заголовки окна (как на картинке).
Написал баш скрипт который скачает иде, и пофиксит ее, вдруг пригодится
🔥2
после третьего вылета за 20 минут мой эксперимент с Cursor IDE закончился =)
😁21