Черновик постов про лидеров мнений, большие и маленькие компании, тишейп.
Монотонный.
Есть у меня микромечта - монотонный дизайн кит для интерфейсов. Подчеркну, не монохромный (с градациями насыщенности / яркости / прозрачности), а монотонный, где есть только цвет фона и инверсивный цвет контуров.
На every-layout.dev можно посмотреть как это выглядит в качественном исполнении.
Интерфейс с таким подходом разговаривает с вами не цветом, а формой и это доступней и понятней. При этом, в нем пользователь может выбрать любой понравившийся цвет. А еще это просто, и простые и эффективные решения мне кажуться элегантными, красивыми и вдохновляющими.
Но меньше слов, давайте к делу. Есть у меня некоторые наброски в excalidraw, которые нужно: 1) реализовать в css; 0) подправить профессиональным дизайнером и перенести в фигму; 2) дополнить еще какими-то компонентами.
Если кто-то может с этим помочь - пишите в личку, давайте скооперируемся. Понятно, что мы выложим это все в OSS. У меня лично есть пара проектов в голове, которые я бы хотел попробовать сделать с таким дизайном.
#design #mono
Есть у меня микромечта - монотонный дизайн кит для интерфейсов. Подчеркну, не монохромный (с градациями насыщенности / яркости / прозрачности), а монотонный, где есть только цвет фона и инверсивный цвет контуров.
На every-layout.dev можно посмотреть как это выглядит в качественном исполнении.
Интерфейс с таким подходом разговаривает с вами не цветом, а формой и это доступней и понятней. При этом, в нем пользователь может выбрать любой понравившийся цвет. А еще это просто, и простые и эффективные решения мне кажуться элегантными, красивыми и вдохновляющими.
Но меньше слов, давайте к делу. Есть у меня некоторые наброски в excalidraw, которые нужно: 1) реализовать в css; 0) подправить профессиональным дизайнером и перенести в фигму; 2) дополнить еще какими-то компонентами.
Если кто-то может с этим помочь - пишите в личку, давайте скооперируемся. Понятно, что мы выложим это все в OSS. У меня лично есть пара проектов в голове, которые я бы хотел попробовать сделать с таким дизайном.
#design #mono
👍14
artalog
Монотонный. Есть у меня микромечта - монотонный дизайн кит для интерфейсов. Подчеркну, не монохромный (с градациями насыщенности / яркости / прозрачности), а монотонный, где есть только цвет фона и инверсивный цвет контуров. На every-layout.dev можно посмотреть…
Кстати, про дизайн для разработчиков классно рассказывал Алексей Тактаров в докладах:
- Инженеры придумали дизайн: продуктовый подход для разработчиков
- Анимации в мире состояний
Рекомендую к просмотру всем :)
#design
- Инженеры придумали дизайн: продуктовый подход для разработчиков
- Анимации в мире состояний
Рекомендую к просмотру всем :)
#design
Molefrog
Overcoming overcomplication → Alexey Taktarov
Alexey Taktarov (@mlfrg), web engineering consultant. Former resume.io founding engineer. I build things in JS, React, Node.js, Ruby on Rails.
👍5
Transient Data Structures
Я, как ярый фанат иммутабельности, прошу вас - мутируйте! Хуже не знания хороших практик только их избыточное применение.
Часто, можно встретить код редьюса в котором каждая итерация возвращает иммутабельный результат, вроде:
Это абсолютно избыточное применение иммутабельности. Обоснованием такого кодстайла может быть поддержание его консистентности, но это не стоит квадратичной сложности, которая проявляется в этом примере.
Обычно, мутировать боятся, потому что не понимают когда это можно делать безопасно. Ответ - если соблюдается ссылочная прозрачность. Проще говоря, когда мутируемое значение не передается по ссылке куда-то, где эту мутацию можно обнаружить.
Изначальный пример можно переписать так:
Этот код будет намного быстрее и хотя мы мутируем здесь значение это невозможно обнаружить извне функции reduce, а значит и проблем с этим никаких не будет.
Каждую технику нужно применять по необходимости, по ссылке из заголовка вы можете почитать о том когда и как в Clojure используются мутабельные данные, хотя одной из ключевых фич этого ЯП является иммутабельность.
#immutable #perf
Я, как ярый фанат иммутабельности, прошу вас - мутируйте! Хуже не знания хороших практик только их избыточное применение.
Часто, можно встретить код редьюса в котором каждая итерация возвращает иммутабельный результат, вроде:
.reduce((acc, el) => ({ ...acc, [el.id]: el }), {})Это абсолютно избыточное применение иммутабельности. Обоснованием такого кодстайла может быть поддержание его консистентности, но это не стоит квадратичной сложности, которая проявляется в этом примере.
Обычно, мутировать боятся, потому что не понимают когда это можно делать безопасно. Ответ - если соблюдается ссылочная прозрачность. Проще говоря, когда мутируемое значение не передается по ссылке куда-то, где эту мутацию можно обнаружить.
Изначальный пример можно переписать так:
.reduce((acc, el) => {
acc[el.id] = el;
return acc;
}, {})
Этот код будет намного быстрее и хотя мы мутируем здесь значение это невозможно обнаружить извне функции reduce, а значит и проблем с этим никаких не будет.
Каждую технику нужно применять по необходимости, по ссылке из заголовка вы можете почитать о том когда и как в Clojure используются мутабельные данные, хотя одной из ключевых фич этого ЯП является иммутабельность.
#immutable #perf
ru.hexlet.io
Что такое ссылочная прозрачность в программировании?
В функциональном программировании ссылочная прозрачность обычно означает, что выражение в коде может быть заменено результатом выполнения этого кода (или чем-либо, имеющим такое же значение), при этом результаты выполнения всего кода не изменятся. Эта концепция…
👍39🤔6🔥2❤1👎1
За гранью Intel и Linux – необычные процессоры и операционные системы – Дмитрий Завалишин
В продолжении темы иммутабельности хочется посоветовать этот наикрутейший доклад. Как же это связано, спросите вы? 🙂
Пофанатазируйте.
Во второй части доклада автор рассказывает про разрабатываемую им операционную систему Phantom, которая построенна вокруг идей иммутабельности и persistent memory.
Одно из преимуществ такого подхода заключается в безопасном распараллеливании работы с данными, что позволяет собирать мусор исключая проблему stop the world. Это то что меня впечатлило, но там еще много интересного, посмотрите доклад, он почти без слайдов, можно слушать фоном.
@Akiyamka ещё подсказал список статей по теме.
#immutable
В продолжении темы иммутабельности хочется посоветовать этот наикрутейший доклад. Как же это связано, спросите вы? 🙂
Пофанатазируйте.
Во второй части доклада автор рассказывает про разрабатываемую им операционную систему Phantom, которая построенна вокруг идей иммутабельности и persistent memory.
Одно из преимуществ такого подхода заключается в безопасном распараллеливании работы с данными, что позволяет собирать мусор исключая проблему stop the world. Это то что меня впечатлило, но там еще много интересного, посмотрите доклад, он почти без слайдов, можно слушать фоном.
@Akiyamka ещё подсказал список статей по теме.
#immutable
YouTube
007. За гранью Intel и Linux – необычные процессоры и операционные системы – Дмитрий Завалишин
Сложившаяся на сегодня архитектура процессора Intel и операционной системы Unix практически абсолютно доминируют в современном мире. Тем не менее, в истории процессоров и систем существовало множество отступлений от такого порядка вещей. Мы проследим историю…
👍7
clip-path.
Фича не то что бы часто нужная, но вот работая над #mono я прочувствовал на сколько она простая и мощная, в случае когда нужно решить задачу только с помощью css и не хочется / не можется лезть в html. Тогда можно обойтись одним псевдо элементом с заливкой.
А что бы быстро разобраться в этой фиче, можно воспользоваться bennettfeely.com/clippy. Особенно интересны примеры: Frame и Custom Polygon.
Стрелочки кнопок из скрина в предыдущем посте сделаны с помощью полигона.
Фича не то что бы часто нужная, но вот работая над #mono я прочувствовал на сколько она простая и мощная, в случае когда нужно решить задачу только с помощью css и не хочется / не можется лезть в html. Тогда можно обойтись одним псевдо элементом с заливкой.
А что бы быстро разобраться в этой фиче, можно воспользоваться bennettfeely.com/clippy. Особенно интересны примеры: Frame и Custom Polygon.
Стрелочки кнопок из скрина в предыдущем посте сделаны с помощью полигона.
👍13
Пришла таска: падает тест на CI, после апдейта пупетира (5 -> 13).
Падает по таймауту.
Локально проблема не воспроизводится.
Понатыкал консоль.логов и отправил на CI. Тест на 20 строк, но оказалось что падает уже на
Какой-то интуицией меняю
И вот сижу и думаю. Что это, как это, почему это, куда нужно было копать (поиск по доке
Но главный вопрос. Радоваться, что проблема быстро решилась, или грустить от непонимания как.
Падает по таймауту.
Локально проблема не воспроизводится.
Понатыкал консоль.логов и отправил на CI. Тест на 20 строк, но оказалось что падает уже на
goto(…).Какой-то интуицией меняю
waitUntil: ['networkidle0'] на waitForNetworkIdle(). Тест проходит.И вот сижу и думаю. Что это, как это, почему это, куда нужно было копать (поиск по доке
networkidle0 ничего не находит), создавать ли issue (их и так хватает).Но главный вопрос. Радоваться, что проблема быстро решилась, или грустить от непонимания как.
🤔7👍5
🛑 в этом посте есть ошибки 🛑
Идемпотентность.
TLDR: не мутируйте в useEffect!
1. Реакт позволяет с помощью useEffect описать какой-то эффект в ответ на изменение данных.
2. В рамках конкурентного рендеринга эффекты могут перевызываться лишний раз, под StrictMod в дев режиме они намеренно перевызываются дважды.
3. В доке по юзЭффекту не верно указано что это апи для мутаций, см. пункт 2.
Хорошо (получение списка элементов по фильтрам):
Плохо (изменение состояния лайка на посте):
Плохо (трансформация события в состояние):
Мутации не должны описываться реакциями, а должны дергаться как процедуры в месте обработки пользовательского события.
Исключением может быть, например, синхронизация распределенных данных, но это уже отдельная история.
#reactive
Идемпотентность.
TLDR: не мутируйте в useEffect!
1. Реакт позволяет с помощью useEffect описать какой-то эффект в ответ на изменение данных.
2. В рамках конкурентного рендеринга эффекты могут перевызываться лишний раз, под StrictMod в дев режиме они намеренно перевызываются дважды.
3. В доке по юзЭффекту не верно указано что это апи для мутаций, см. пункт 2.
Хорошо (получение списка элементов по фильтрам):
useEffect(
() => api.getList({ filters }),
[filters]
)
Плохо (изменение состояния лайка на посте):
useEffect(
() => api.toggleLike(props.id),
[isLiked]
)
Плохо (трансформация события в состояние):
useEffect(
() => isSubmited && api.buyProducts(shopList),
[isSubmited]
)
Мутации не должны описываться реакциями, а должны дергаться как процедуры в месте обработки пользовательского события.
Исключением может быть, например, синхронизация распределенных данных, но это уже отдельная история.
#reactive
👍15👎2
artalog
🛑 в этом посте есть ошибки 🛑 Идемпотентность. TLDR: не мутируйте в useEffect! 1. Реакт позволяет с помощью useEffect описать какой-то эффект в ответ на изменение данных. 2. В рамках конкурентного рендеринга эффекты могут перевызываться лишний раз, под StrictMod…
Строго говоря, REST или другие конвенции не могут гарантировать идемпотентность по статусу, потому что даже простой запрос товаров по фильтрам может, например, менять категорию пользователя в рекомендательной системе. Которая может сильно ломать персонализацию пользователей и всю систему их ранжирования, при избыточных запросах данных.
Поэтому, useEffect и подобные апи всегда стоит использовать с осторожностью.
Так же, в саму тему идемпотентности и клиент-серверного общения стоит погрузиться поглубже, там есть еще подводные камни:
- Стажёр Вася и его истории об идемпотентности API.
Поэтому, useEffect и подобные апи всегда стоит использовать с осторожностью.
Так же, в саму тему идемпотентности и клиент-серверного общения стоит погрузиться поглубже, там есть еще подводные камни:
- Стажёр Вася и его истории об идемпотентности API.
Хабр
Стажёр Вася и его истории об идемпотентности API
Идемпотентность — звучит сложно, говорят о ней редко, но это касается всех приложений, использующих API в своей работе. Меня зовут Денис Исаев, и я руковожу одной из бэкенд групп в Яндекс.Такси....
👍6
Много интересного и необычного по TypeScript можно подчерпнуть из @why_typescript_is_bad
Если у вас тоже есть находки фрикового поведения ТС пишите в @why_typescript_is_bad_chat, репостним в канал.
Если у вас тоже есть находки фрикового поведения ТС пишите в @why_typescript_is_bad_chat, репостним в канал.
🤔2👍1