Неделя подошла к концу, резюмирую свой опыт работы с #framework.
Софт
Это мой первый linux-овый ноутбук, и я впервые сталкиваюсь с тем что все* просто работает, сразу же, из коробки.
Что самое интересное - на винде, хоть и не из коробки, но после установки пака драйверов одним универсальным экзешником все заработало идеально. Даже не смотря что это был пак на 11 винду поставленый на 10ую. (Да, без вендор софта сомнительного качества в автозагрузке и трее). Итого - времени потраченного на устранение софтверных проблем - 0 минут, я впечатлен. (Возможно на моделях с интелом все не так гладко было бы)
* Энэргосбережение работает в федоре не так же хорошо как в убунте, но, будем честны, не носись я с замерялками и не читай форумы я бы и не догадывался о том, что там пару ват лишних кушается.
Железо
- Тачпад 10/10
- Экран 10/10
- Сканер отпечатков 10/10
- Звук - 8/10. Намного лучше чем во всех ноутах что я трогал, но это все еще даже не блютуз колонка. Фильм посмотреть - да. Музыку слушать - нет.
Как будто про мак расказываю ей богу.
А нет, стойте, клавиатуру же забыли. Она тут куда лучше чем в маках (так говорят, у меня не было возможности сравнить). Если сравнивать с моим леново - то она разве что немного по-тише и мягче.
Про сканер скажу отдельно - все таки офигеть какая удобная штука для linux, одна из тех вещей про которые не знал что я это хочу. И даже продумали момент с тем что кнопка не работает во время сканирования - случайно его не выключишь (а я уже два раза так случайно нажал пока сканил). А еще, просто факт, это сканер рабоатет на RISC-V чипе, оказывается.
Но это все детали от сторонних производителей, А теперь поговорим про - детали которые делались самим фреймворком.
Защелки работают ничего не отваливается, но есть огрехи чисто эстетического характера - засчелки не учитывают что панельки не идеально ровные и не прижимают их как следует друг к дургу, порты в "слотах" болтаются, система охлаждения дискретки слишком шумная. Но это их первый 16ти дюймовик так что со скидкой на это я считаю это отлично, тем более что на эстетическую часть быстро перестаешь обращать внимание. (Но если вам это важно возьмите лучше 13 дюймов без панелек)
Есть еще такой дефект - зарядка по usb-c сейчас выдет максимально возможный ток предусмотернный стандартом. И этого едва едва хватает чтобы прокормить райзен с ардеоном на полной загрузке. Загрузив ноутбук полностью модно наблюдать как батарейка очень медленно но разряжается не смотря на то что ноут подключен к сети (где-то 1% в 40 минут)
Комьюнити
Вобще странно видеть такой пункт в обзоре ноутбука, но в случае ферймворка в этом как минимум половина его крутости
Оно огромное, очень активное, печатает доп акссесуары и даже делает свои запчасти (Я уже планирую докупить Вот такую RGB панельку, можно почтиать как заводиться NixOS, можно найти как люди продают полу-кустарные OcuLink порты для сетапов 13шки внейшней видюхой, кто-то там в серьез пробуем заменить экран а e-link, а я активно слежу за тем как люди делают доп батарейку в слот видеокарты (ноут на 18 часов заряки видали еще где-то?)
Короче опен сорс ноутбук это еще и билет в клуб очумелых ручек!
Стоимость
Стоит ли он своих денег? Все таки она не маленькая. Вобще весь DIY что я когда либо собирал был дороже сериного, поэтому для меня она не кажется высокой. Запчатси тут все качественные, а партии маленькие (уничтожительно мизерные по сравнению с эплом например). Но я понимаю что него нету премиумного вида и дизайн не выдающийся. Скажу прямо - эта штука не для красоты и понтов, не берите его для этого, будете рачарованы.
Короче я очень доволен. Когда там уже опенсорс телефоны начнут делать
Софт
Это мой первый linux-овый ноутбук, и я впервые сталкиваюсь с тем что все* просто работает, сразу же, из коробки.
Что самое интересное - на винде, хоть и не из коробки, но после установки пака драйверов одним универсальным экзешником все заработало идеально. Даже не смотря что это был пак на 11 винду поставленый на 10ую. (Да, без вендор софта сомнительного качества в автозагрузке и трее). Итого - времени потраченного на устранение софтверных проблем - 0 минут, я впечатлен. (Возможно на моделях с интелом все не так гладко было бы)
* Энэргосбережение работает в федоре не так же хорошо как в убунте, но, будем честны, не носись я с замерялками и не читай форумы я бы и не догадывался о том, что там пару ват лишних кушается.
Железо
- Тачпад 10/10
- Экран 10/10
- Сканер отпечатков 10/10
- Звук - 8/10. Намного лучше чем во всех ноутах что я трогал, но это все еще даже не блютуз колонка. Фильм посмотреть - да. Музыку слушать - нет.
Как будто про мак расказываю ей богу.
А нет, стойте, клавиатуру же забыли. Она тут куда лучше чем в маках (так говорят, у меня не было возможности сравнить). Если сравнивать с моим леново - то она разве что немного по-тише и мягче.
Про сканер скажу отдельно - все таки офигеть какая удобная штука для linux, одна из тех вещей про которые не знал что я это хочу. И даже продумали момент с тем что кнопка не работает во время сканирования - случайно его не выключишь (а я уже два раза так случайно нажал пока сканил). А еще, просто факт, это сканер рабоатет на RISC-V чипе, оказывается.
Но это все детали от сторонних производителей, А теперь поговорим про - детали которые делались самим фреймворком.
Защелки работают ничего не отваливается, но есть огрехи чисто эстетического характера - засчелки не учитывают что панельки не идеально ровные и не прижимают их как следует друг к дургу, порты в "слотах" болтаются, система охлаждения дискретки слишком шумная. Но это их первый 16ти дюймовик так что со скидкой на это я считаю это отлично, тем более что на эстетическую часть быстро перестаешь обращать внимание. (Но если вам это важно возьмите лучше 13 дюймов без панелек)
Есть еще такой дефект - зарядка по usb-c сейчас выдет максимально возможный ток предусмотернный стандартом. И этого едва едва хватает чтобы прокормить райзен с ардеоном на полной загрузке. Загрузив ноутбук полностью модно наблюдать как батарейка очень медленно но разряжается не смотря на то что ноут подключен к сети (где-то 1% в 40 минут)
Комьюнити
Вобще странно видеть такой пункт в обзоре ноутбука, но в случае ферймворка в этом как минимум половина его крутости
Оно огромное, очень активное, печатает доп акссесуары и даже делает свои запчасти (Я уже планирую докупить Вот такую RGB панельку, можно почтиать как заводиться NixOS, можно найти как люди продают полу-кустарные OcuLink порты для сетапов 13шки внейшней видюхой, кто-то там в серьез пробуем заменить экран а e-link, а я активно слежу за тем как люди делают доп батарейку в слот видеокарты (ноут на 18 часов заряки видали еще где-то?)
Короче опен сорс ноутбук это еще и билет в клуб очумелых ручек!
Стоимость
Стоит ли он своих денег? Все таки она не маленькая. Вобще весь DIY что я когда либо собирал был дороже сериного, поэтому для меня она не кажется высокой. Запчатси тут все качественные, а партии маленькие (уничтожительно мизерные по сравнению с эплом например). Но я понимаю что него нету премиумного вида и дизайн не выдающийся. Скажу прямо - эта штука не для красоты и понтов, не берите его для этого, будете рачарованы.
Короче я очень доволен. Когда там уже опенсорс телефоны начнут делать
Jschroedl
Store – Joe Schroedl
Joe's Engineering Blog
👍7❤1
#linux
Я очень давно пользуюсь gnome, и при всех его плюсах есть в нем одна казалось бы простая задача - добавить какой-то собственный бинарник в меню приложений и в док (dock).
И вечно с этим какие-то сложности возникают.
Сегодня я потратил почти час на то, чтобы изучить спеку и наконец-то научился делать ярлычки, ура.
Делюсь опытом (уникальное, в сети такого нету):
1. Чтобы добавить иконочку вам надо создать текстовый файл с расширением
2. Необходимый минимум для вашего бинарника (в {} указаны плейсхолдеры):
Проверить валидность можно с помощью консольной утилиты
3. Кладем файл в
4. Если файл валидный но иконка не появляется, стоит попробовать тригернуть обновление вручную.
5. Если иконка появилась но, по клику на нее ничего не происходит:
- добавьте в конец Exec
- если совет выше не помог -
6. Если приложение появилось но не хочет закрепляться в доке в избранном, запустите его, наведите на иконку в доке, посмотрите название которое вывелось в тултипе по ховеру на нее - это название класса окна. Как вариант можно открыть дебаггер гнома (alt + f2) и посмотреть название класса окна там
Добавьте строку в файл
Ресурсы для чтения
Спека
Вики
Я очень давно пользуюсь gnome, и при всех его плюсах есть в нем одна казалось бы простая задача - добавить какой-то собственный бинарник в меню приложений и в док (dock).
И вечно с этим какие-то сложности возникают.
Сегодня я потратил почти час на то, чтобы изучить спеку и наконец-то научился делать ярлычки, ура.
Делюсь опытом (уникальное, в сети такого нету):
1. Чтобы добавить иконочку вам надо создать текстовый файл с расширением
.desktop2. Необходимый минимум для вашего бинарника (в {} указаны плейсхолдеры):
[Desktop Entry]
Type=Application
Name={имя приложения}
Icon={полный путь с ico файлу, символ ~ не поддерживается}
TryExec={полный путь с бинарнику, символ ~ не поддерживается}
Exec={команда запуска бинрника}
Path={рабочая директория бинрника}
Проверить валидность можно с помощью консольной утилиты
desktop-file-validate <your desktop file> 3. Кладем файл в
~/.local/share/applications, ждем 5 сек. Если вам сегодня везет - все готово. Если нет начинается самое интересное.4. Если файл валидный но иконка не появляется, стоит попробовать тригернуть обновление вручную.
update-desktop-database ~/.local/share/applications5. Если иконка появилась но, по клику на нее ничего не происходит:
- добавьте в конец Exec
%u. Не спрашивайте почему.- если совет выше не помог -
gtk-launch <то что вы написали в Name> - смотрим на ошибки.6. Если приложение появилось но не хочет закрепляться в доке в избранном, запустите его, наведите на иконку в доке, посмотрите название которое вывелось в тултипе по ховеру на нее - это название класса окна. Как вариант можно открыть дебаггер гнома (alt + f2) и посмотреть название класса окна там
Добавьте строку в файл
StartupWMClass=<класс окна>Ресурсы для чтения
Спека
Вики
🤯6👍2😁2😢1
Баги 40 гнома (обновляемое):
1. Телеграм (5.7.1) не может отрендерить выпадающее меню на всех экранах которые не с 100% масштабированием, если они выходят за пределы экрана. В этом случае он либо рендерит меню на соседнем экране, если с той стороны там другой монитор, либо вобще не рендерит его если с той стороны экрана нет.
Пока искал где включить в телеграмме дебаг логи, нашел галччку в эксперементальных настройках которая фиксит этот баг
2. Первый запуск хрома - всегда неудачный - Error code: SIGILL. Второй всегда удачный. Странное.
Пока искал где включить в телеграмме дебаг логи, нашел галччку в эксперементальных настройках которая фиксит этот баг
Settings -> Advanced -> Experemental Settings -> Enable Precise HiDPI Scaling
2. Первый запуск хрома - всегда неудачный - Error code: SIGILL. Второй всегда удачный. Странное.
❤2
пост @artalar про то Что такое бизнес логика (БЛ) и как ее писать вынуждает меня написать своё мнение по этому поводу.
Моя версия того что такое бизнес логика:
1. Во первых давайте сразу определимся что за "бизнес". В русском языке и в английском языке это слово имеет схожие, но все же разные смыслы.
В русском языке бизнес это то, что приносит прибыль. В английском языке это - дело или занятие. Спрашивая "в чем твой бизнес" - спрашивают о том что зачем ты интересуешся.
Таким образом, бизнес логика это Зачем логика (или "логика дела") - звучит смешно но передает суть. Она отвечает на то, какие цели должны быть достигнуты. С зарабатыванием денег напрямую не связано, у опенсорс и бесплатных проектов тоже есть бизнес логика, потому что они зачем-то существуют. Бизнес логика может быть и на уровне системы, и даже на уровне одного модуля. Например, логгер для приложения не является бизнес логикой, это вспомогательная логика, но на уровне самого логера (когда мы выступаем в роли разрабочтика логгера) там так же есть бизнес логика и вспомогательная логика
2. Как вы уже догадались ответ на вопрос "зачем" будет разным в зависимости от того, кого мы спросим - дизайнера, разработчика, менеджера, пользователя, владельца бизнеса или священика. Когда мы говорим о "бизнес логике" мы всегда подразумеваем какой-то контекст из которого понятно с чьей точки зрения мы ее выделяем.
3. Теперь поговорим о том что такое бизнес логика с точки зрения разработчика. Бизнес логика это то, что вы пытаетесь сохранить при рефакторинге. После рефакторинга могут меняться зависимости, перфоманс, надежность, стэк технологий, стоимость серверов, а бизнес логика остается. Если эта логика может быть выкинута при рефакторинге потому что стала не нужна - это не бизнес логика
4. Почему разработчику важно понимать где тут бизнес логика а где нет - это напрямую влияет на то, насколько удачной будет ваша архитектура. В идеале - изменения в бизнес логике вобще не должны приводить к внесению изменений во всей остальной логике. Ровно как и наоборот - изменения остальной части должны оставлять не тронутой бизнес логику. Это не только сделает его надежнее, и более тестируемым (тестируется как правило именно бизнес логика), это так же позволит вам рефакторить его паралельно с тем, как туда будут вноситься новые функциональные изменения. Идеального разделения на практике не бывает, но это можно использовать в качестве ориентира
@BANOnotIT предлагает использовать "Полезная логика" и "Вспомогательная логика" по аналогии с полезной и паразитной нагрузкой из техники, как вам?
Моя версия того что такое бизнес логика:
1. Во первых давайте сразу определимся что за "бизнес". В русском языке и в английском языке это слово имеет схожие, но все же разные смыслы.
В русском языке бизнес это то, что приносит прибыль. В английском языке это - дело или занятие. Спрашивая "в чем твой бизнес" - спрашивают о том что зачем ты интересуешся.
Таким образом, бизнес логика это Зачем логика (или "логика дела") - звучит смешно но передает суть. Она отвечает на то, какие цели должны быть достигнуты. С зарабатыванием денег напрямую не связано, у опенсорс и бесплатных проектов тоже есть бизнес логика, потому что они зачем-то существуют. Бизнес логика может быть и на уровне системы, и даже на уровне одного модуля. Например, логгер для приложения не является бизнес логикой, это вспомогательная логика, но на уровне самого логера (когда мы выступаем в роли разрабочтика логгера) там так же есть бизнес логика и вспомогательная логика
2. Как вы уже догадались ответ на вопрос "зачем" будет разным в зависимости от того, кого мы спросим - дизайнера, разработчика, менеджера, пользователя, владельца бизнеса или священика. Когда мы говорим о "бизнес логике" мы всегда подразумеваем какой-то контекст из которого понятно с чьей точки зрения мы ее выделяем.
3. Теперь поговорим о том что такое бизнес логика с точки зрения разработчика. Бизнес логика это то, что вы пытаетесь сохранить при рефакторинге. После рефакторинга могут меняться зависимости, перфоманс, надежность, стэк технологий, стоимость серверов, а бизнес логика остается. Если эта логика может быть выкинута при рефакторинге потому что стала не нужна - это не бизнес логика
4. Почему разработчику важно понимать где тут бизнес логика а где нет - это напрямую влияет на то, насколько удачной будет ваша архитектура. В идеале - изменения в бизнес логике вобще не должны приводить к внесению изменений во всей остальной логике. Ровно как и наоборот - изменения остальной части должны оставлять не тронутой бизнес логику. Это не только сделает его надежнее, и более тестируемым (тестируется как правило именно бизнес логика), это так же позволит вам рефакторить его паралельно с тем, как туда будут вноситься новые функциональные изменения. Идеального разделения на практике не бывает, но это можно использовать в качестве ориентира
@BANOnotIT предлагает использовать "Полезная логика" и "Вспомогательная логика" по аналогии с полезной и паразитной нагрузкой из техники, как вам?
Telegram
artalog
Что такое бизнес логика (БЛ) и как ее писать
БЛ - это базворд, забейте вообще и прекратите использовать этот термин :) Причин несколько, но главная - бизнес сам не умеет ее описывать и даже формулировать.
Логика и ее автоматизация может быть реализована…
БЛ - это базворд, забейте вообще и прекратите использовать этот термин :) Причин несколько, но главная - бизнес сам не умеет ее описывать и даже формулировать.
Логика и ее автоматизация может быть реализована…
👍8🤔2🔥1
Для всех кто хочет попробовать Linux обычно советуют определенный дистрибутив.
Хотя это влияет не так сильно на опыт будущего линуксовода, как то какое железо он выберет.
Ведь именно с железом будут самые сложные дурацкие и выматывающие проблемы если выбрать не то.
1. Самый надежный вариант - взять сразу ноут который создавался для linux. Все они будут хорошо работать с любым linux с пол пинка, но на некоторых дистрибутивах опыт их использования шлифуется так чтоб все работало сразу из коробки (будет указано в скобках на каких):
- System76 (PopOS)
- Frame.work (Ubuntu, Project Bluefin, Bazzite)
- Slimbook (Fedora)
- Некоторые модели Dell, HP и Lenovo (Ubuntu)
- Pine64 (Manjaro)
- Starlabs Systems (Manjaro)
- Manjaro Computer (угадайте!)
- Tuxedo Computers (Tuxedo OS - форк Kubuntu)
- Librem (Librem OS)
2. Если ни один из вариантов выше вам по какой-то причине не подходит, при выборе учитывайте что:
- Nvidia - видео карточки работают только с проприетарными закрытыми драйверами. CUDA - закрытая проприетраная технология. Вы будете полностью зависеть от их желания и планов чинить что-то.
- Radeon - публикуют свои драйвера в опенсорс, для всех закрытых технологий связаных с видеокартами разрабтывают или активно участвуют в разработке опенсорс альтернатив (Vulcan, Open CL)
- Intel - комитят свои драйвера в linux ядро, но часть драйверов все равно закрыта, часть обложена лицензиями, и туда боятся лезть. У проходных моделей поддержка сносная, но она для них не в приоритете. У моделей расчитанных на сервера - все замечательно (не ваш случай). Если берете intel, лучше берите что-то массовое, и не этого года выпуска, в идеале те модели что есть на ноутбуках из первого списка.
- AMD - основную ставку делают на linux и опенсорс, все драйвера открытые, проблемы совместимости с linux мной замечены не были
P.S. Если вам очень нужна CUDA, и на линукс тоже хочется - посмотрите на польскую ZLUDA!
Хотя это влияет не так сильно на опыт будущего линуксовода, как то какое железо он выберет.
Ведь именно с железом будут самые сложные дурацкие и выматывающие проблемы если выбрать не то.
1. Самый надежный вариант - взять сразу ноут который создавался для linux. Все они будут хорошо работать с любым linux с пол пинка, но на некоторых дистрибутивах опыт их использования шлифуется так чтоб все работало сразу из коробки (будет указано в скобках на каких):
- System76 (PopOS)
- Frame.work (Ubuntu, Project Bluefin, Bazzite)
- Slimbook (Fedora)
- Некоторые модели Dell, HP и Lenovo (Ubuntu)
- Pine64 (Manjaro)
- Starlabs Systems (Manjaro)
- Manjaro Computer (угадайте!)
- Tuxedo Computers (Tuxedo OS - форк Kubuntu)
- Librem (Librem OS)
2. Если ни один из вариантов выше вам по какой-то причине не подходит, при выборе учитывайте что:
- Nvidia - видео карточки работают только с проприетарными закрытыми драйверами. CUDA - закрытая проприетраная технология. Вы будете полностью зависеть от их желания и планов чинить что-то.
- Radeon - публикуют свои драйвера в опенсорс, для всех закрытых технологий связаных с видеокартами разрабтывают или активно участвуют в разработке опенсорс альтернатив (Vulcan, Open CL)
- Intel - комитят свои драйвера в linux ядро, но часть драйверов все равно закрыта, часть обложена лицензиями, и туда боятся лезть. У проходных моделей поддержка сносная, но она для них не в приоритете. У моделей расчитанных на сервера - все замечательно (не ваш случай). Если берете intel, лучше берите что-то массовое, и не этого года выпуска, в идеале те модели что есть на ноутбуках из первого списка.
- AMD - основную ставку делают на linux и опенсорс, все драйвера открытые, проблемы совместимости с linux мной замечены не были
P.S. Если вам очень нужна CUDA, и на линукс тоже хочется - посмотрите на польскую ZLUDA!
👍3
Как думаете сколько Bazel-у нужно нагенерить bash кода чтобы вызвать node.js бинарник? (pnpm в моем случае)
(и все равно работает абы как)
$ wc bazel-bin/external/pnpm/pnpm.sh
617
(и все равно работает абы как)
И так каждый раз когда я перехожу по ссылке из Гугла
https://youtube.com/shorts/iV3js9pd5IE?si=a8oxfWu0xxd1VtDx
https://youtube.com/shorts/iV3js9pd5IE?si=a8oxfWu0xxd1VtDx
YouTube
*Websites in 2023*
Full video on channelhttps://m.youtube.com/watch?v=pq7NLMwynYg
😁2
Vite дико тупит в дев моде при первом открытии странички?
Возможно я знаю как вам помочь.
У vite и vitest есть особенность в том, что в дев режиме они не делают полноценную сборку, не формируют бандлы, чанки, и как следствие - не делают тришейкинг.
С этим связана проблема - некоторые библиотеки экспортируют ооочень много модулей, расчитывая на то, что неиспользуемые модули будут убраны тришейкингом.
Представьте что это лодаш, или какая-нибудь библиотека с сотнями иконок - т.к. как каждый модуль это http запрос - происходит коллапс и браузер "подвисает" на несколько секунд в попытке все это загрузить.
Если это ваш случай, обратите внимание на vite-plugin-entry-shaking, он как раз исправляет эту пробелму возращяя тришейкинг в дев режим.
И черт меня побери зацените эти превосходные девтулы плагина, мне кажется на их создание ушло больше времени чем на сам плагин
Возможно я знаю как вам помочь.
У vite и vitest есть особенность в том, что в дев режиме они не делают полноценную сборку, не формируют бандлы, чанки, и как следствие - не делают тришейкинг.
С этим связана проблема - некоторые библиотеки экспортируют ооочень много модулей, расчитывая на то, что неиспользуемые модули будут убраны тришейкингом.
Представьте что это лодаш, или какая-нибудь библиотека с сотнями иконок - т.к. как каждый модуль это http запрос - происходит коллапс и браузер "подвисает" на несколько секунд в попытке все это загрузить.
Если это ваш случай, обратите внимание на vite-plugin-entry-shaking, он как раз исправляет эту пробелму возращяя тришейкинг в дев режим.
👍12
Прочитал обзор одного интересного исследования - насколько качественный код генерирует ChatGPT.
TLRD: Проверяли на задачках литкода.
C, C++, Java, JavaScript, Python.
Вероятность успеха в зависимости от сложности:
Easy: 89%
Normal: 71%
Hard: 40%
(Обратите внимание, 100% нету даже у easy)
Дальше лучше, сделали тоже самое но в этот раз только на задачках которые появились после 2021 года (т.е. запрос для которых chat gpt решений не видел, и ему надо было решать их "самому".)
Easy уровень упал до 52% а hard до 0.66% успеха...
Причём подсказки и указания на ошибки не помогали, АИ не мог понять даже сути задачи которую надо решить
Все ещё думаете что когда-нибудь мы будет хранить только промпты в Гите?
TLRD: Проверяли на задачках литкода.
C, C++, Java, JavaScript, Python.
Вероятность успеха в зависимости от сложности:
Easy: 89%
Normal: 71%
Hard: 40%
(Обратите внимание, 100% нету даже у easy)
Дальше лучше, сделали тоже самое но в этот раз только на задачках которые появились после 2021 года (т.е. запрос для которых chat gpt решений не видел, и ему надо было решать их "самому".)
Easy уровень упал до 52% а hard до 0.66% успеха...
Причём подсказки и указания на ошибки не помогали, АИ не мог понять даже сути задачи которую надо решить
Все ещё думаете что когда-нибудь мы будет хранить только промпты в Гите?
🔥5❤3💯3
В Gnome у приложений есть ярлычки, а у ярлычков может быть иконка.
Но в 99% случаев в настройках ярлыка путь к ионке не указан, только название.
Мне в моем приложении надо воссоздать это поведение, а биндинги GTK к ноде весят в трое больше всей приложухи, так что я решил эту логику воссоздать самостоятельно.
Там же все просто должно быть, подумал я в 12 часов дня. Спустя 4 часа я понял как я ошибался.
Алгоритм следующий:
1. Найти в переменных окружения тему иконок и список папок где могут хранится файлы темы.
2. Темы могут быть определены в разных папках одновременно, надо следовать логике спецификации чтобы определить какая имеет больший вес.
3. Когда мы определили тему надо просканивароть еще один список вохможных директорий, где могут быть файлы темы.
4. Когда мы определили где лежат файлы темы, надо найти ее index файл. В нем описано иконки на какие темы (контексты) лежат в каких подпапках, и в диапазоне каких размеров (min-max), и в каком коофиценте скейлинга
5. Тема может наследоваться от других тем, причем наследование множественное, так что для всех тем от которых она наследуется нужно повторить все пункты выше, и в случае если чего-то не будет в этой теме, брать ее из родительских тем
6. Так как все это куча логики для резолва одной иконки, а показывать их надо много и быстро, в оригинале еще реализован бинарный кэш который пишется на диск, чтобы не делать всю эту работу повторно
я остановился на пункте 4 и думаю - может и хрен с ним с этими 16 лишними мегабайтами биндингов
Но в 99% случаев в настройках ярлыка путь к ионке не указан, только название.
Мне в моем приложении надо воссоздать это поведение, а биндинги GTK к ноде весят в трое больше всей приложухи, так что я решил эту логику воссоздать самостоятельно.
Там же все просто должно быть, подумал я в 12 часов дня. Спустя 4 часа я понял как я ошибался.
Алгоритм следующий:
1. Найти в переменных окружения тему иконок и список папок где могут хранится файлы темы.
2. Темы могут быть определены в разных папках одновременно, надо следовать логике спецификации чтобы определить какая имеет больший вес.
3. Когда мы определили тему надо просканивароть еще один список вохможных директорий, где могут быть файлы темы.
4. Когда мы определили где лежат файлы темы, надо найти ее index файл. В нем описано иконки на какие темы (контексты) лежат в каких подпапках, и в диапазоне каких размеров (min-max), и в каком коофиценте скейлинга
5. Тема может наследоваться от других тем, причем наследование множественное, так что для всех тем от которых она наследуется нужно повторить все пункты выше, и в случае если чего-то не будет в этой теме, брать ее из родительских тем
6. Так как все это куча логики для резолва одной иконки, а показывать их надо много и быстро, в оригинале еще реализован бинарный кэш который пишется на диск, чтобы не делать всю эту работу повторно
я остановился на пункте 4 и думаю - может и хрен с ним с этими 16 лишними мегабайтами биндингов
👍4
У меня такая же фигня была пока мой гугл не обучился : )
Что такое programmers socks?
Есть одна мелочь, о которой если не подумать при написании скрипта, то можно сломать пол системы неопытному пользователю.
Если вы писали на node.js консольные утилиты, то там с 99% вероятностью был параметр принимающий путь к файлу (по крайней мере у меня было так).
И рано или поздно туда прилетит что-то вроде
В худшем случае (если вы создаете директорию если она не найдена) будет создана папка с названием
Что же поменялось?
Дело в том что
А когда вы читаете файл, или stdout - этого не происходит, и в приложение путь попадает как есть. Но далеко не все пользователи это осознают.
По этой причине, было бы здорово в вашей апке учесть этот момент, и при чтении пути интерпретировать символ
В npm полно либ которые это делают, но это легко сделать без них
(P.S. вот поэтому нельзя запускать скрипты рукожопам вроде меня с правами админа!)
Если вы писали на node.js консольные утилиты, то там с 99% вероятностью был параметр принимающий путь к файлу (по крайней мере у меня было так).
И рано или поздно туда прилетит что-то вроде
--path ~/logs/debug.txt - и ничего страшного не произойдет. А потом это перенесут в конфиг - и вот тут начнется дичь.В худшем случае (если вы создаете директорию если она не найдена) будет создана папка с названием
~ прямо в корне, что не только взорвет дно вашего пользователя пока он будет пытаться найти этот файл, но и может плохо сказаться на системе в целом, ведь теперь в системе путь ~/... может вести в совершенно разные места. Что же поменялось?
Дело в том что
`~` это алиас который понимает ваш шэл (bash например). Когда вы задаете параметр ~/logs/debug.txt оно преобразуется в /home/username/logs/debug.txt перед тем как будет передано программе.А когда вы читаете файл, или stdout - этого не происходит, и в приложение путь попадает как есть. Но далеко не все пользователи это осознают.
По этой причине, было бы здорово в вашей апке учесть этот момент, и при чтении пути интерпретировать символ
~ в начале пути.В npm полно либ которые это делают, но это легко сделать без них
import os from "node:os"
const resolveHomeDir = (path) => (path === '~' || path.startsWith('~/')) ? path.replace('~', os.homedir()) : path
(P.S. вот поэтому нельзя запускать скрипты рукожопам вроде меня с правами админа!)
👍7🔥2
В вашем вэб приложении есть шорткаты (горячие клавиши)?
Проверьте что для определения нажатой клавиши вы используете
Проверьте что для определения нажатой клавиши вы используете
keycode а не keychar, люди с нестандартной раскладкой клавиатуры вам спасибо скажутX (formerly Twitter)
Ilia Blinov (@goodhoopoe) on X
29/31. Какие еще минусы? Некоторые сайты шорткаты делают не на основе keycode, а на основе keychar(если вы погромист фронтендер не делайте так). Но такого скорее единицы.
👍2
Warp терминал портировали на linux, потому что очень просили. Но это была пуcтая трата времени и сил, вот почему:
1. В отличии от macOS юзерей, в linux экосистеме уж чего чего, а отличных терминалов пруд пруди. И все они бесплатные.
2. В отличии от macOS юзерей, пользователи linux очень скептически настроены к проприетарному софту с закрытым кодом. Особенно если это терминал в который они вводят пароли и много другой "sensitive" информации
3. В отличии от maсOS юзерей, пользователи linux очень скептически настроены в том что терминал отправляет все в какое-то облако и требует (можете себе это представить?) за это деньги!. Терминал!
4. В отличии от maсOS юзерей, пользователи linux сидят на очень разных железках и софте, от чего терминал сразу же посыпался на большинстве систем
5. В отличии от maсOS юзерей, пользователи linux не сидят на голых (или почти голых) терминалах, у них уже есть куча каких-то oh-my-zsh плагинов которые делают все эти автокомплиты и другую магию, с которыми warp тут же попадает конфликт и ломается (а вариант - выключите сначала все все с трудом настроенное, прежде чем попробовать наш терминал - заведомо будет проигнорирован)
6. В конце концов даже с чисто эстетической точки зрения все эти градиенты, свечения, и скругленные уголки выглядят настолько чужеродно в кедах или гноме что хочется это развидеть уже через 10 минут
Жаль их потраченного времени, знай они все вышеописанные пункты пошли бы пилить версию для винды
1. В отличии от macOS юзерей, в linux экосистеме уж чего чего, а отличных терминалов пруд пруди. И все они бесплатные.
2. В отличии от macOS юзерей, пользователи linux очень скептически настроены к проприетарному софту с закрытым кодом. Особенно если это терминал в который они вводят пароли и много другой "sensitive" информации
3. В отличии от maсOS юзерей, пользователи linux очень скептически настроены в том что терминал отправляет все в какое-то облако и требует (можете себе это представить?) за это деньги!. Терминал!
4. В отличии от maсOS юзерей, пользователи linux сидят на очень разных железках и софте, от чего терминал сразу же посыпался на большинстве систем
5. В отличии от maсOS юзерей, пользователи linux не сидят на голых (или почти голых) терминалах, у них уже есть куча каких-то oh-my-zsh плагинов которые делают все эти автокомплиты и другую магию, с которыми warp тут же попадает конфликт и ломается (а вариант - выключите сначала все все с трудом настроенное, прежде чем попробовать наш терминал - заведомо будет проигнорирован)
6. В конце концов даже с чисто эстетической точки зрения все эти градиенты, свечения, и скругленные уголки выглядят настолько чужеродно в кедах или гноме что хочется это развидеть уже через 10 минут
Жаль их потраченного времени, знай они все вышеописанные пункты пошли бы пилить версию для винды
😁6🥴2
Сегодня я хотел сделать пост про то как мне bing понравился больше чем google search.
Но вместо этого я вас поздравляю с международным днем синего экрана
Но вместо этого я вас поздравляю с международным днем синего экрана
😁6
Forwarded from r/ретранслятор
Вы наверняка уже знаете, что сегодня произошёл сбой Windows по всему миру из-за сервиса Crowdstrike, который отвечает за безопасность. И, кажется, был найден виновник.
r/#ProgrammerHumor
Мой первый рабочий день в Crowdstrike. Выпустил небольшое обновление, и теперь можно отдыхать.
Уволен. Совершенно несправедливо.
r/#ProgrammerHumor
Кто-то сделал для фреймворка модуль с впаяным донглом Logitech.
Кто не в курсе - у Logitech-a донглы программируемые, и даже продаются отдельно.
Т.е. любой их девайс можно прицепить на такой донгл выполнив небольшой ритуал.
Донглы (Dongle) общаются с вашей мышью / клавиатурой по средствам радио канала, у которого задержка значительно меньше чем от Bluetooth. Минус всегда был в том что он занимает usb порт. В данном случае мы получили И донг И свободный порт, красиво!
https://github.com/LeoDJ/FW-EC-DongleHiderPlus
Кто не в курсе - у Logitech-a донглы программируемые, и даже продаются отдельно.
Т.е. любой их девайс можно прицепить на такой донгл выполнив небольшой ритуал.
Донглы (Dongle) общаются с вашей мышью / клавиатурой по средствам радио канала, у которого задержка значительно меньше чем от Bluetooth. Минус всегда был в том что он занимает usb порт. В данном случае мы получили И донг И свободный порт, красиво!
https://github.com/LeoDJ/FW-EC-DongleHiderPlus
GitHub
GitHub - LeoDJ/FW-EC-DongleHiderPlus: Framework Expansion Card that includes a USB hub to hide a bare dongle inside and still have…
Framework Expansion Card that includes a USB hub to hide a bare dongle inside and still have a USB-A port externally - LeoDJ/FW-EC-DongleHiderPlus
🔥5