Work & Beer Balance – Telegram
Work & Beer Balance
1.54K subscribers
117 photos
5 videos
4 files
182 links
Авторский канал @Akiyamka
Поддержать автора можно здесь:
buymeacoffee.com/cherrytea
Download Telegram
У ChatGPT4 появилась недавно бета функция - способность анализровать датасеты и делать по ним выводы.
Интересно, а что будет если я туда засуну вместо датасета?
Результат на скрине
Я уже написал на solid.js аж целых два маленьких приложения.
Поделюсь опытом в сравнении с реактом, раз уж они под реакт мимикрируют.

День первый.
Я полистал документацию, посмотрел ролики, впечатлился качеством материалов.
Нашел необходимый плагин для vite, шаблон конфгиа по ts, запилил hello world, все круто!
Надо было сразу выбросить реакт и взять солид, чего ждал - не понятно. Счас хуяк хуяк и в продакшен супер быстрый апп, с маленьким бандлом, бешеным перфом, гранулярными апдейтами, ууухххх

День второй.
Плагин оказался со странностями. Почему он перетирает часть конфига моего vite, и принудительно заменет happydom на jsdom???

pnpm орет на меня что у меня vite 4, а плагин только до 3 ей версии. К тому же после изменений в стилях у меня появляется копия всего приложения на странице. Одна по другой. +1 копия приложения после каждого обновления.
Потратил время на изучение проблемы
- нашел ишьюс в котором проблемы с happydom известна пол года. И даже вроде мр есть. Но всем плеват. Решается откатом на старую версию. Наконец замерижили фикс.
- по поводу дублирования приложения - оказывается надо плагину hrm комментариями подсказать что index.tsx где я маунчу апп в дом дерево перевызывать не надо /* @refresh skip */
в целом очень странно видеть что фреймворк так сильно завязаный на сбороку - так слабо поддерживает единственный официальнаый плагин для vite который счас мейнстрим сборщик.

День третий.
Два часа пытался понять почему у меня не ренедериться вьюшка.
Если на реакте заработает почти любой говнокод, ужасно, с кучей лишних перерендоров - но заработает, то в solid - малейшая оплошность приводит к тому что рендера не будет.
Без ошибок в рантайме или иде. Я просто смотрю в дэбагере как мой ресурс скачался, обновитлся сигнал, но ничего не происходит - в вьюшке все так же висит ...loading
дэбагер не помогает - надо слишком много знать о внутрянке солида чтоб в этом был толк.
В итоге оказалось что дело в тернарке.
Тернарки в jsx использовать можно, но только один раз. Как с ядовитыми грибами, ага.
Только специальный компонент <Show>, запомните.
про Optional chaining тоже лучше забыть. Один раз ваше выражение foo?.bar() вернет undefined вместо сигнала и больше вы ререндеров не увидите здесь.

День четвертый.
ClassList как будто бы должен был заменить clsx но на самом деле это пятая нога. Не заменяет, а только лишная апи мешается и создает избыточность.
Typenoscript, и так бывает больно писать, а с solid это будет еще веселее.
Подводных камней столько что есть отдельный раздел документации который я почему-то не замeтил когда знакомился с солидом первый раз

Вобщем итого -
если ваше приложение на солиде работает - оно будет работать быстро. Это в реакте можно открыть код и сказать "божеш ты, как это го-но работает то, кто это, какой return первой строкой, кто правила хуков будет соблюдать - и тп"
реакт приложение как то накоряканое будет работать хоть и плохо.
В солиде готовтесь превозмогать, без ошибок и подсказок, девтулзов и т.п. выезжать на опыте, внимательном прочтении доки, знать где тонко и писать jsx с минимум логики.
Я вам вобще не рекомендую по началу в солидовском jsx писать выражения js как бы абсурдно это не звучало.
Но, если вам нужен перф, у вас все обновляется например по сокетам и мигает как новгодняя елка каждая панелкьа отдельно - да, это для солида.
Касательно похожести на реакт - ваш код смогут читать (но не писать) реактеры, на этом все
👍10🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
😁9
Артем напоминает нам про неочвидные моменты фетча.
Это напомнило мне как я пытался из кода обработать CORS ошибку.
Кто не в теме - нет надежного способа программно определить что у вас упал запрос именно из-за CORS, такие респонзы вобще запрещено читать из JS
Huawei психанули чет.
И выдали:
- свою мобильную ось не совместимую с андроидом
- под котрую написали аж целых два ЯП (Cangjie и ArkTS — последний является расширенной версией TypeScript)
- для которых написаи свою IDE DevEco Studio напичканой целым семейством AI-шек Pangu AI

Источник
👏2
Во времена когда появился микимаус (50 лет назад) самым мощным компом в мире был Cray-1.
Стоил ~ 7 000 000 $, весил 4763 кг, потреблял 115 киловатт.
Современная малинка на фоне него просто невероятное чудо иженерии и инопланетная технология (стоимостью 50$).
На картинке бенчмарк который их сравнивает
👍3
Чем отличается красивый градиентный переход от некрасивого?
Некрасивый получается при линейном переходе.
Такой градиент не "растворяется" плавно, из-за чего мы видим момент перехода.
Чтобы пофиксить нам нужно сглаживать не линейно с а применением математичекой функции a.k.a easing.
- Где сгенерить онлайн руками
- Чем сгенерить в postcss
- Как понять что генерить

Снипет для ленивых - добротный fade в черный.
linear-gradient(-180deg, rgba(0, 0, 0, 0) 7%, rgba(0, 0, 0, 0.08) 12%, rgba(0, 0, 0, 0.16) 17%, rgba(0, 0, 0, 0.22) 21%, rgba(0, 0, 0, 0.32) 26%, rgba(0, 0, 0, 0.42) 32%, rgba(0, 0, 0, 0.52) 38%, rgba(0, 0, 0, 0.62) 47%, rgba(0, 0, 0, 0.72) 57%, rgba(0, 0, 0, 0.82) 65%)
👍2
А вы знали что
@media (min-width: 600px) {...}
и
@media (max-width: 600px) {...}

на самом деле это "больше или ровно", и "меньше или равно".

Так что если вам нужен переход из одного медиа запроса в другой, писать надо например вот так
@media (min-width: 599px) {...}
и
@media (max-width: 600px) {...}


Update:
@inoyakaigor подсказывает что с использованием css-media-range-syntax можно еще вот так:
@media (width >= 600px) {...}
@media (width < 600px) {...}

Очень круто, спасибо!


#css
👍4
Вчера прошло 10 лет с тех пор как vue.js появился в публичном доступе
🎉2
Я не знаю причин по которым гугл считает это нормальным, но со стороны выглядит так что фронтендеров там набирали по обьявлениям
😁4
Наверное ничто меня так не раздражает в кодовой базе как компоненты обьявленные через const.
И даже если отбросить полу-субьективные пункты, все равно остается одна большая проблема с тем что дженерики ломаются.
Так зачем же люди продолжают жрать кактус...

P.S. нет, запятая после аргумента в дженерике не помогает в vscode
😢2
Читаю новости и часто попадаются истории про обманутых бабушек у которых телефонные мошенники украли то 150 000 евро, то 260 000, а последняя новость вот 760 000 евро отложенных с пенсии увели.
Обалдеть. У меня тоже такая пенсия будет???
В некоторых странах европы и не только, есть такая штука как почтомат.
После перезда из беларуси в польшу я был удивлен насколько эта штука делает удобнее мою жизнь.
И не только мою, компания inPost которой принаделжит большая часть почтоматов - переслыает 745 миллионов посылок в год.

Но вот странная вещь - в беларуси сначала попробовали поставить почтоматы, но спустя 7 лет инциативу свернули так как никто не пользуется.
И это идеальный случай чтобы показать нам какую важную роль играет UX в продукте.

Технически все аналогично - есть приложение, есть метлический "шкаф" с дверцами который выглядит так же, словно делали на том же самом заводе, есть посылки.
Разница только в сценариях использования, давайте сравнивать.

В Польше:
1. Почтомат в 10 минутах ходьбы от вашего дома, где-то возле магазина в который вы ходите каждый день.
2. Работает круглосуточно, без выходных

Итоговый UX - к почтомату идти ближе чем к почте, как правило я вобще туда специально не хожу а забираю все по дороге пока иду в магазин / гуляю с псом.
Это так же удобнее и быстрее чем ждать курьера и согласовывать с ним время

В Беларуси:
1. Почтоматов 40 шт. на всю республику
2. Они стоят внутри почтовых отделений

Итоговый UX - нафига они вобще нужны, если я уже пришел на почту, в день и время когда она открыта

(P.S. Любопытно как сама белпочта говорит о назначении почтоматов - "должны были разгрузить работников почты". Т.е. они не для людей их ставили, а для работников почты, получается)

Выводы делайте сами
👍9