#фишка дня от Никиты Голубова
Как всегда самые интересные штуки в Google Chrome DevTools прячутся в неведомых панелях.
Вот и на этот раз: чтобы получить возможность поменять таймзону на странице, в девтулзах нужно добавить панель Sensors (см. More tools) и там выбрать или ввести нужную.
Почему Sensors? Пёс его знает. Часовые пояса всегда всех раздражали.
#tz #chrome #devtools
Как всегда самые интересные штуки в Google Chrome DevTools прячутся в неведомых панелях.
Вот и на этот раз: чтобы получить возможность поменять таймзону на странице, в девтулзах нужно добавить панель Sensors (см. More tools) и там выбрать или ввести нужную.
Почему Sensors? Пёс его знает. Часовые пояса всегда всех раздражали.
#tz #chrome #devtools
Media is too big
VIEW IN TELEGRAM
#codepen дня
Спирограф, слышали о таком развлечении? Если нет, крайне рекомендую найти себе, прокрастинация будет рада.
А пока давайте сделаем свой генератор спирограф-фигур в SVG на базе библиотек SVG.js, GSAP и generative-utils:
https://codepen.io/michellebarker/pen/GRMBVYX
Пакет generative-utils вообще довольно интересный, там приличное количество утилит для создания генеративного арта (не путать с дегенеративным, это что-то времён Хрущёва).
#svg #art #gsap
Спирограф, слышали о таком развлечении? Если нет, крайне рекомендую найти себе, прокрастинация будет рада.
А пока давайте сделаем свой генератор спирограф-фигур в SVG на базе библиотек SVG.js, GSAP и generative-utils:
https://codepen.io/michellebarker/pen/GRMBVYX
Пакет generative-utils вообще довольно интересный, там приличное количество утилит для создания генеративного арта (не путать с дегенеративным, это что-то времён Хрущёва).
#svg #art #gsap
#статья дня
Информации по градиентам не бывает много. В дополнение к моему посту, прилетел неплохой перевод статьи Джоша Камю, опубликованный на хабре: https://habr.com/ru/post/645165/
Ну и там же и ссылка на очередной инструмент их создания, от автора: https://www.joshwcomeau.com/gradient-generator/
Крайне рекомендую ознакомиться и ещё больше рекомендую использовать.
#css #gradient #hsl
Информации по градиентам не бывает много. В дополнение к моему посту, прилетел неплохой перевод статьи Джоша Камю, опубликованный на хабре: https://habr.com/ru/post/645165/
Ну и там же и ссылка на очередной инструмент их создания, от автора: https://www.joshwcomeau.com/gradient-generator/
Крайне рекомендую ознакомиться и ещё больше рекомендую использовать.
#css #gradient #hsl
#инструмент дня
Когда я в очередной раз уронил продакшен, мне было сказано сесть и отрисовать диаграммы работы системы и пометить на них точки сбора логов, трекинга.
Чтобы знание было доступно всем.
В нашем Confluence (wiki) конечно же был инструмент для рисования, на базе draw.io. Штука хорошая, но мне хотелось создавать и хранить диаграммы в коде, если уж не на базе кода. Совместно с текущей документацией по развёртыванию.
И такой инструмент нашёлся! И назвывается он Mermaid:
https://mermaid-js.github.io/mermaid/#/
Прекрасно встраивается в Markdown, имеются и плагины для предпросмотра в VS Code, Confluence, WebStorm и так далее.
И конечно же, библиотеки для интеграции с различными языками.
Естественно, Mermaid не один такой, есть Kroki, blockdiag и ещё несколько. Но мне Mermaid зашёл больше всех.
Задачу я решил, CTO в восторге. Поддерживать легко.
А недавно поступило предложение о поддержке в GitHub Markdown, будет круто!
#markdown #mermaid #diagram
Когда я в очередной раз уронил продакшен, мне было сказано сесть и отрисовать диаграммы работы системы и пометить на них точки сбора логов, трекинга.
Чтобы знание было доступно всем.
В нашем Confluence (wiki) конечно же был инструмент для рисования, на базе draw.io. Штука хорошая, но мне хотелось создавать и хранить диаграммы в коде, если уж не на базе кода. Совместно с текущей документацией по развёртыванию.
И такой инструмент нашёлся! И назвывается он Mermaid:
https://mermaid-js.github.io/mermaid/#/
Прекрасно встраивается в Markdown, имеются и плагины для предпросмотра в VS Code, Confluence, WebStorm и так далее.
И конечно же, библиотеки для интеграции с различными языками.
Естественно, Mermaid не один такой, есть Kroki, blockdiag и ещё несколько. Но мне Mermaid зашёл больше всех.
Задачу я решил, CTO в восторге. Поддерживать легко.
А недавно поступило предложение о поддержке в GitHub Markdown, будет круто!
#markdown #mermaid #diagram
#статья дня
Цветовая схема... казалось бы, что может быть проще, не так ли?
Ну с точки зрения пользователя-то да, а с точки зрения разработчика этой самой цветовой схемы?
Мало определить токены и их значения, надо ещё подобрать цвета так, чтобы они были одной яркости, чтобы не выделить одну сущность больше, чем другую, но при этом — разнести в пространстве.
Чтобы в конце-концов на любом мониторе смотрелось сносно.
И вот Дима Семьюшкин создал целое руководство, посвящённое созданию цветовых схем: https://devgru.github.io/tutorial16/
Начинается с определения цветовых моделей RGB, HSL, HSV, цветовых пространств. И дальше — собственно — к схемам, в качестве примеров рассмотрена известная серия Solarized.
К сожалению, руководство полностью не закончено, но и той информации, что есть, вполне достаточно.
А если есть желание продолжить — от него же имеется #инструмент формирования и анализа палитр: https://devgru.github.io/palette16
Вполне себе неплохое дополнение.
#design #rgb #hsl #color
Цветовая схема... казалось бы, что может быть проще, не так ли?
Ну с точки зрения пользователя-то да, а с точки зрения разработчика этой самой цветовой схемы?
Мало определить токены и их значения, надо ещё подобрать цвета так, чтобы они были одной яркости, чтобы не выделить одну сущность больше, чем другую, но при этом — разнести в пространстве.
Чтобы в конце-концов на любом мониторе смотрелось сносно.
И вот Дима Семьюшкин создал целое руководство, посвящённое созданию цветовых схем: https://devgru.github.io/tutorial16/
Начинается с определения цветовых моделей RGB, HSL, HSV, цветовых пространств. И дальше — собственно — к схемам, в качестве примеров рассмотрена известная серия Solarized.
К сожалению, руководство полностью не закончено, но и той информации, что есть, вполне достаточно.
А если есть желание продолжить — от него же имеется #инструмент формирования и анализа палитр: https://devgru.github.io/palette16
Вполне себе неплохое дополнение.
#design #rgb #hsl #color
This media is not supported in your browser
VIEW IN TELEGRAM
#фишка дня
TIL что в CodePen можно просто бросать файлы и он их подхватит. Подумалось, а нет ли возможности извлекать разметку, стили и скрипты из локальных файлов и забрасывать их в CodePen максимально автоматизированно?
Так вот, есть! Утилита буквально называется codepen-prefill и создана именно для этой цели: https://github.com/yuanchuan/codepen-prefill
npx codepen-prefill index.html
Извлечёт все встроенные стили и скрипты из файла и закинет их в окно редактора. Останется лишь сохранить.
#codepen #npm #npx #utility
TIL что в CodePen можно просто бросать файлы и он их подхватит. Подумалось, а нет ли возможности извлекать разметку, стили и скрипты из локальных файлов и забрасывать их в CodePen максимально автоматизированно?
Так вот, есть! Утилита буквально называется codepen-prefill и создана именно для этой цели: https://github.com/yuanchuan/codepen-prefill
npx codepen-prefill index.html
Извлечёт все встроенные стили и скрипты из файла и закинет их в окно редактора. Останется лишь сохранить.
#codepen #npm #npx #utility
#игра дня
Я в курсе, что вы у нас бронтозавры и отписываетесь пачками, когда я выкладываю очередную игру для закрепления уровня разработки, но я продолжу это делать!
Потому что мне они нравятся :)
Итак, вашему вниманию CSS Speedrun. Кажется, в объяснении не нуждается :)
https://css-speedrun.netlify.app/
Я чота был невнимательный в паре заданий (или считал себя дофига умным) и прошёл в итоге аж за 07:25:7 :(
#css #game
Я в курсе, что вы у нас бронтозавры и отписываетесь пачками, когда я выкладываю очередную игру для закрепления уровня разработки, но я продолжу это делать!
Потому что мне они нравятся :)
Итак, вашему вниманию CSS Speedrun. Кажется, в объяснении не нуждается :)
https://css-speedrun.netlify.app/
Я чота был невнимательный в паре заданий (или считал себя дофига умным) и прошёл в итоге аж за 07:25:7 :(
#css #game
#статья дня
Там на самом деле статья-то… #заметка скорее.
В общем, если вы в своих React-проектах часто используете логику отображения-скрытия чего-либо, то это всё превращается в повторение одного и того же кода: setOpen(true), setOpen(false) и так далее.
Напрашивается метод toggle, который переключал бы значение в зависимости от текущего на обратное.
Плюс, было бы неплохо добавить насильную установку значения, а не просто обратное.
И тут на ум приходит реализация хука вроде useToggle, который вынес бы весь повторяющийся код: https://levelup.gitconnected.com/react-custom-hooks-3-usetoggle-and-useboolean-af842c5b8b47
А если вы любите более… литературный код с чётким значением названий методов, там же описывается и вариант useBoolean, который вернёт методы включения, выключения и переключения состояния, а дальше уж используйте как надо.
#js #react #toggle
Там на самом деле статья-то… #заметка скорее.
В общем, если вы в своих React-проектах часто используете логику отображения-скрытия чего-либо, то это всё превращается в повторение одного и того же кода: setOpen(true), setOpen(false) и так далее.
Напрашивается метод toggle, который переключал бы значение в зависимости от текущего на обратное.
Плюс, было бы неплохо добавить насильную установку значения, а не просто обратное.
И тут на ум приходит реализация хука вроде useToggle, который вынес бы весь повторяющийся код: https://levelup.gitconnected.com/react-custom-hooks-3-usetoggle-and-useboolean-af842c5b8b47
А если вы любите более… литературный код с чётким значением названий методов, там же описывается и вариант useBoolean, который вернёт методы включения, выключения и переключения состояния, а дальше уж используйте как надо.
#js #react #toggle
#баг дня
Не каждый день простое if-условие чинит угрозу приватности миллиарду людей.
https://github.com/WebKit/WebKit/commit/f73005ed826014988f8ee447de23927749fb56e5
Ошибка в WebKit-реализации IndexedDB позволяет отслеживать поведение пользователей между сайтами: https://fingerprintjs.com/blog/indexeddb-api-browser-vulnerability-safari-15/
#safari #webkit #privacy
Не каждый день простое if-условие чинит угрозу приватности миллиарду людей.
https://github.com/WebKit/WebKit/commit/f73005ed826014988f8ee447de23927749fb56e5
Ошибка в WebKit-реализации IndexedDB позволяет отслеживать поведение пользователей между сайтами: https://fingerprintjs.com/blog/indexeddb-api-browser-vulnerability-safari-15/
#safari #webkit #privacy
#фишка дня
Обратите внимание на иллюстрацию, если я её не сильно зашакалил, конечно. Ничего интересного не замечаете?
Действительно, три раза гружу страницу и три же раза подгружается разное число изображений.
Все изображения при этом имеют атрибут loading=“lazy”, знаменитая “ленивая” загрузка. Грузятся только те изображения, что видны. И ещё те, до которых вы (вероятно) планируете скроллить.
Так вот, три раза — разное число. Почему же?
И тут кроется самое интересно: первый — без троттлинга (замедления) сети, второй — Fast 3G, третий — Slow 3G.
Т. е. Chrome грузит тем больше картинок, чем медленнее сеть. Казалось бы, где логика? Но давайте подумаем. Slow 3G редко значит “просто медленно”, скорее всего — ваше соединение нестабильно (поезд, метро). А ничего так не раздражает на нестабильном соединении, как ожидание ленивой подгрузки изображений.
Такая вот казалось бы вывернутая наизнанку логика, не лишённая изящества.
Попробуйте сами: https://mathiasbynens.be/demo/img-loading-lazy
#chrome #lazy #img
Обратите внимание на иллюстрацию, если я её не сильно зашакалил, конечно. Ничего интересного не замечаете?
Действительно, три раза гружу страницу и три же раза подгружается разное число изображений.
Все изображения при этом имеют атрибут loading=“lazy”, знаменитая “ленивая” загрузка. Грузятся только те изображения, что видны. И ещё те, до которых вы (вероятно) планируете скроллить.
Так вот, три раза — разное число. Почему же?
И тут кроется самое интересно: первый — без троттлинга (замедления) сети, второй — Fast 3G, третий — Slow 3G.
Т. е. Chrome грузит тем больше картинок, чем медленнее сеть. Казалось бы, где логика? Но давайте подумаем. Slow 3G редко значит “просто медленно”, скорее всего — ваше соединение нестабильно (поезд, метро). А ничего так не раздражает на нестабильном соединении, как ожидание ленивой подгрузки изображений.
Такая вот казалось бы вывернутая наизнанку логика, не лишённая изящества.
Попробуйте сами: https://mathiasbynens.be/demo/img-loading-lazy
#chrome #lazy #img
#видео дня
Тем временем, Илья Куликов упомянул в нашем @htmlshitchat свой доклад о работе с изображениями с канала Podlodka (хороший канал, между прочим).
Видео про работу с изображениями в вебе вообще. Думаю, будет хорошим дополнением к “Картинки как коробки” от Полины Гуртовой.
И да, в докладе есть часть про ленивую подгрузку (было-стало) и её пороги, почему и выкладываю сразу же. TL;DR: не всё так просто. В общем, рекомендую ознакомиться
Собственно: https://www.youtube.com/watch?v=yp3G0FUOQhM&ab_channel=Podlodka
#podlodka #video #img
Тем временем, Илья Куликов упомянул в нашем @htmlshitchat свой доклад о работе с изображениями с канала Podlodka (хороший канал, между прочим).
Видео про работу с изображениями в вебе вообще. Думаю, будет хорошим дополнением к “Картинки как коробки” от Полины Гуртовой.
И да, в докладе есть часть про ленивую подгрузку (было-стало) и её пороги, почему и выкладываю сразу же. TL;DR: не всё так просто. В общем, рекомендую ознакомиться
Собственно: https://www.youtube.com/watch?v=yp3G0FUOQhM&ab_channel=Podlodka
#podlodka #video #img
Telegram
Будни разработчика
#ссылка дня
#video #img #png #jpg #webp
Многие до сих пор страдают от карго-культа при выборе формата изображений для своих проектов. Кому-то сказали использовать webp везде и прикрутить к сайту декодер, кто-то до сих пор считает, что SVG всегда лучше PNG…
#video #img #png #jpg #webp
Многие до сих пор страдают от карго-культа при выборе формата изображений для своих проектов. Кому-то сказали использовать webp везде и прикрутить к сайту декодер, кто-то до сих пор считает, что SVG всегда лучше PNG…
#codepen года
Итак, рубрику "codepen дня" ждёт переформатирование, заморозим её. Но не выкатить итоги года (как в прошлый раз) просто нельзя.
Встречайте, лучшие работы на CodePen за 2021 год по версии пользователей сервиса: https://codepen.io/2021/popular/pens/
Первое место, конечно, неожиданное. Надо попробовать на Flutter переписать...
#top
Итак, рубрику "codepen дня" ждёт переформатирование, заморозим её. Но не выкатить итоги года (как в прошлый раз) просто нельзя.
Встречайте, лучшие работы на CodePen за 2021 год по версии пользователей сервиса: https://codepen.io/2021/popular/pens/
Первое место, конечно, неожиданное. Надо попробовать на Flutter переписать...
#top
Telegram
Будни разработчика
#codepen года
Я не то чтобы часто веду рубрику CodePen дня, но тут пропустить нельзя.
Встречайте, самые залайканные кодпены за 2020 год! Учитывались не только лайки на работах, но и на самих авторах.
Мой любимый синтезатор Roland там тоже имеется, вот…
Я не то чтобы часто веду рубрику CodePen дня, но тут пропустить нельзя.
Встречайте, самые залайканные кодпены за 2020 год! Учитывались не только лайки на работах, но и на самих авторах.
Мой любимый синтезатор Roland там тоже имеется, вот…
#заметка дня
Разработка продукта с Google AppsScript в основе означает, что вместо нормального API у вас будет вызов функций через объект google.script.run.
Я завернул это в Promise, но вот проблема: хочется же разрабатывать локально с комфортом, накидать JSON с тестовыми данными от сервера, замокать глобальные переменные и стор (приложение гибридное). Конечно, удобнее всего просто эти данные импортировать.
Но очень не хотелось бы, чтобы замоканные данные попали в итоговую сборку. Значит, надо модули эти на лету заменять.
Вторая похожая проблема — это A/B-тесты: одним пользователям показываем одно, другим — другое. А собирать хотим из одних исходников.
И вот эту проблему решает модуль webpack с простым названием NormalModuleReplacementPlugin.
Документация модуля максимально проста, но я бы хотел обратить внимание вот на такой момент: не стоит привязываться в названиях таких модулей к среде выполнения (development/production). Вы можете очень легко случайно заменить вообще все загружаемые модули, где есть слово development, например.
Также обратите внимание на путь до модуля. В моём приложении одни и те же компоненты могли импортироваться из разных его частей и собираться отдельно, что делало почти невозможным указывание от корня. Эту проблему придётся решать отдельно на уровне разрешения путей.
В итоге, я остановился на таком подключении и пока доволен:
Подменяю глобальный стор и моки на их пустые альтернативы и всё прекрасно работает.
Быстрой сборки вам! Кстати, об этом: хочу достичь того же на Parcel 2. Знаете, как? Делитесь!
#webpack #build #module
Разработка продукта с Google AppsScript в основе означает, что вместо нормального API у вас будет вызов функций через объект google.script.run.
Я завернул это в Promise, но вот проблема: хочется же разрабатывать локально с комфортом, накидать JSON с тестовыми данными от сервера, замокать глобальные переменные и стор (приложение гибридное). Конечно, удобнее всего просто эти данные импортировать.
Но очень не хотелось бы, чтобы замоканные данные попали в итоговую сборку. Значит, надо модули эти на лету заменять.
Вторая похожая проблема — это A/B-тесты: одним пользователям показываем одно, другим — другое. А собирать хотим из одних исходников.
И вот эту проблему решает модуль webpack с простым названием NormalModuleReplacementPlugin.
Документация модуля максимально проста, но я бы хотел обратить внимание вот на такой момент: не стоит привязываться в названиях таких модулей к среде выполнения (development/production). Вы можете очень легко случайно заменить вообще все загружаемые модули, где есть слово development, например.
Также обратите внимание на путь до модуля. В моём приложении одни и те же компоненты могли импортироваться из разных его частей и собираться отдельно, что делало почти невозможным указывание от корня. Эту проблему придётся решать отдельно на уровне разрешения путей.
В итоге, я остановился на таком подключении и пока доволен:
new webpack.NormalModuleReplacementPlugin(
/(window|mocks)\.dev/,
function (resource) {
resource.request = resource.request.replace(
/dev/,
'production'
);
}
),
Подменяю глобальный стор и моки на их пустые альтернативы и всё прекрасно работает.
Быстрой сборки вам! Кстати, об этом: хочу достичь того же на Parcel 2. Знаете, как? Делитесь!
#webpack #build #module
webpack
NormalModuleReplacementPlugin | webpack
webpack is a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser, yet it is also capable of transforming, bundling, or packaging just about any resource or asset.
This media is not supported in your browser
VIEW IN TELEGRAM
#фишка дня
Если ты увлёкся добавлением pointer-events: none к элементам: может чтобы люди не копировали, а может, чтобы UX был получше, — есть вероятность, что дебаг в девтулзах превратится в мучение.
Вот как выделить объект, который не слушается мыши?
Все очень просто, зажми Shift и выделяй. Работает в Chrome, Edge и Firefox.
#devtools #tips #chrome #firefox
Если ты увлёкся добавлением pointer-events: none к элементам: может чтобы люди не копировали, а может, чтобы UX был получше, — есть вероятность, что дебаг в девтулзах превратится в мучение.
Вот как выделить объект, который не слушается мыши?
Все очень просто, зажми Shift и выделяй. Работает в Chrome, Edge и Firefox.
#devtools #tips #chrome #firefox
This media is not supported in your browser
VIEW IN TELEGRAM
#репозиторий дня
Все же помнят, что в репозиториях на GitHub можно нажать точку и поковыряться в коде прямо внутри всамделишного VS Code?
Я всё думал, куда же это пойдёт, ведь там особо не разгуляться. Но магия workspaces творит чудеса и вот уже можно предложить установить пару расширений прямо внутри браузерного редактора.
Каких? Ну, например, CodeSwing и CodeTour, чтобы продемонстрировать свою работу. Как в CodePen, да.
Попробуйте прямо тут: https://github.com/lostintangent/rock-paper-scissors
Кажется, это прекрасно.
#vscode #github
Все же помнят, что в репозиториях на GitHub можно нажать точку и поковыряться в коде прямо внутри всамделишного VS Code?
Я всё думал, куда же это пойдёт, ведь там особо не разгуляться. Но магия workspaces творит чудеса и вот уже можно предложить установить пару расширений прямо внутри браузерного редактора.
Каких? Ну, например, CodeSwing и CodeTour, чтобы продемонстрировать свою работу. Как в CodePen, да.
Попробуйте прямо тут: https://github.com/lostintangent/rock-paper-scissors
Кажется, это прекрасно.
#vscode #github
#статья дня
Помните библиотеку FingerprintJS? Вот, напомню: https://t.me/htmlshit/509
Отличная штука чтобы следить за вашими пользователями, особенно когда с кукисами проблемы. Но почему-то все забывают, что с помощью CSS можно сделать не сильно-то и меньше.
Вот, попробуйте: https://csstracking.dev/
И что ещё забавнее, т. н. CSS4 может всё сделать ещё хуже с точки зрения приватности.
#css #fingerprint #privacy
Помните библиотеку FingerprintJS? Вот, напомню: https://t.me/htmlshit/509
Отличная штука чтобы следить за вашими пользователями, особенно когда с кукисами проблемы. Но почему-то все забывают, что с помощью CSS можно сделать не сильно-то и меньше.
Вот, попробуйте: https://csstracking.dev/
И что ещё забавнее, т. н. CSS4 может всё сделать ещё хуже с точки зрения приватности.
#css #fingerprint #privacy
Telegram
Будни разработчика
#библиотека дня
#security #tracking #fingerprinting
Методы однозначной идентификации пользователя и/или его браузера называют fingerprinting. Буквально – снятие отпечатков пальцев. Малоприятная процедура, согласитесь :)
Существует известная библиотека…
#security #tracking #fingerprinting
Методы однозначной идентификации пользователя и/или его браузера называют fingerprinting. Буквально – снятие отпечатков пальцев. Малоприятная процедура, согласитесь :)
Существует известная библиотека…
This media is not supported in your browser
VIEW IN TELEGRAM
#видео дня
Да, я нашёл это на Reddit (но я хотя бы признаюсь в этом, в отличие от… 😇).
Оригинальное название — как создать визуальный XOR-эффект на одном только CSS filter и mix-blend-mode (инвертирование по маске, короче). Но для этого стоило бы заодно код переписать в кодпен… а мы заморозили рубрику, помните?
Поэтому делаем так: теперь это видео о том, как использовать Emmet будто ты бог вёстки.
Эффективность 9000, короче.
#emmet #filter #blend
Да, я нашёл это на Reddit (но я хотя бы признаюсь в этом, в отличие от… 😇).
Оригинальное название — как создать визуальный XOR-эффект на одном только CSS filter и mix-blend-mode (инвертирование по маске, короче). Но для этого стоило бы заодно код переписать в кодпен… а мы заморозили рубрику, помните?
Поэтому делаем так: теперь это видео о том, как использовать Emmet будто ты бог вёстки.
Эффективность 9000, короче.
#emmet #filter #blend
#инструмент дня
Делитесь, кто что использует для работы с API?
Postman? cUrl в терминале? REST Client для VSCode? Thunder Client?
Ладно, к чему это я. Есть же прекрасный инструмент HTTPie для веба, десктопа и терминала. Вот он как раз недавно обновился до версии 3.
Изменения в основном, конечно, косметические, но вот в версии для терминала появился менеджер плагинов. Точнее, он всегда там был, но не был открыт для сторонних разработчиков. А теперь — да.
В общем, ребята так отметили десятилетие своего проекта, порадуемся же за них.
#httpie #api #tool
Делитесь, кто что использует для работы с API?
Postman? cUrl в терминале? REST Client для VSCode? Thunder Client?
Ладно, к чему это я. Есть же прекрасный инструмент HTTPie для веба, десктопа и терминала. Вот он как раз недавно обновился до версии 3.
Изменения в основном, конечно, косметические, но вот в версии для терминала появился менеджер плагинов. Точнее, он всегда там был, но не был открыт для сторонних разработчиков. А теперь — да.
В общем, ребята так отметили десятилетие своего проекта, порадуемся же за них.
#httpie #api #tool
#тред дня
Помните, недавно я выкладывал руководство по созданию цветовых схем в редакторах? Ну вот это вот: https://t.me/htmlshit/914
Тема на самом деле достаточно обширная и касается не только, собственно, редакторов кода, но и, наверное даже в первую очередь, наборов UI виджетов. UI-китов, по-простецки. Или правил HIG.
Итак, возьмём, например, Material Design от Google. Кто-то же сидел и придумывал палитру цветов для кнопок, теней, акцентов… По каким же принципам?
Вот наш сегодняшний Твиттер-тред как раз об этом: https://twitter.com/mobileunderhood/status/1486965874351386625
Кому неудобно читать в Твиттере, как всегда — сохранённый тред: https://threadreaderapp.com/thread/1486965874351386625.html
Stay tuned!
#material #ui #color #twitter
Помните, недавно я выкладывал руководство по созданию цветовых схем в редакторах? Ну вот это вот: https://t.me/htmlshit/914
Тема на самом деле достаточно обширная и касается не только, собственно, редакторов кода, но и, наверное даже в первую очередь, наборов UI виджетов. UI-китов, по-простецки. Или правил HIG.
Итак, возьмём, например, Material Design от Google. Кто-то же сидел и придумывал палитру цветов для кнопок, теней, акцентов… По каким же принципам?
Вот наш сегодняшний Твиттер-тред как раз об этом: https://twitter.com/mobileunderhood/status/1486965874351386625
Кому неудобно читать в Твиттере, как всегда — сохранённый тред: https://threadreaderapp.com/thread/1486965874351386625.html
Stay tuned!
#material #ui #color #twitter
#статья дня
Я большой фанат CSD. Скорее всего, вы не в курсе, что это такое…
Это client-side decorations.
Короче, у окон в вашей операционной системе есть контент (приложение), рамка и заголовок. Рамка и заголовок отрисовываются менеджером окон. Собственно, “оформление” — decorations.
Иногда менеджер окон сидит глубоко в системе (Windows), иногда — нет (Linux), но у приложений не так много вариантов перерисовать оформление своего окна.
Понятно, что есть разные хаки, но некоего стандарта системы не предоставляли.
И вот сначала в среде GNOME для Linux, а потом в macOS и теперь в Windows стали появляться API для отрисовки оформления окна на стороне клиента. То бишь, приложения.
Вот эти вот тулбары и меню в заголовке окна, рядом со стандартными кнопками закрытия, это вот оно (на иллюстрации).
И вот это API доступно и в Electron! Вылезайте из коробки, так сказать.
Собственно, статья так и называется — Breaking Out of the Box: https://alistapart.com/article/breaking-out-of-the-box/
#os #csd #hig #window
Я большой фанат CSD. Скорее всего, вы не в курсе, что это такое…
Это client-side decorations.
Короче, у окон в вашей операционной системе есть контент (приложение), рамка и заголовок. Рамка и заголовок отрисовываются менеджером окон. Собственно, “оформление” — decorations.
Иногда менеджер окон сидит глубоко в системе (Windows), иногда — нет (Linux), но у приложений не так много вариантов перерисовать оформление своего окна.
Понятно, что есть разные хаки, но некоего стандарта системы не предоставляли.
И вот сначала в среде GNOME для Linux, а потом в macOS и теперь в Windows стали появляться API для отрисовки оформления окна на стороне клиента. То бишь, приложения.
Вот эти вот тулбары и меню в заголовке окна, рядом со стандартными кнопками закрытия, это вот оно (на иллюстрации).
И вот это API доступно и в Electron! Вылезайте из коробки, так сказать.
Собственно, статья так и называется — Breaking Out of the Box: https://alistapart.com/article/breaking-out-of-the-box/
#os #csd #hig #window