Околодев
165 subscribers
3 photos
23 links
Связь: @robox
Download Telegram
Тест

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

Это всё буллщит! Unit-тесты не замедляют процесс разработки, а ускоряют его!

Приведу пример. Пользователь должен ввести в форму на сайте три известных ему параметра треугольника: углы или длины сторон в любых комбинациях. Ему в ответ должно вывести остальные вычисленные углы и стороны.

Мы пишем функцию с вычислениями, пишем вьюху, что ее вызывает, рендерим ответ. Запускаем браузер, переходим по ссылке, заполняем ручками все длины треугольника, отправляем на сервер, проверяем ответ, который пришел, — не совпало. Правим код, снова заполняем форму, снова проверяем. Опять не сходится. Опять повторяем, каждый раз заполняя форму собственноручно.

Как это могло бы быть с тестами. Пишем функцию с вычислениями, пишем тест к ней (или даже в обратной последовательности — не важно). Вместо постоянного заполнения формы мы единожды указываем данные на входе функции и ожидаемый вывод. Пишем код, прогоняем тест, повторяем, пока результат не совпадет с ожидаемым. Процесс разработки уже ускорился за счет отсутствия необходимости заполнять форму.

«Ой, да ладно, мне нетрудно ручками форму заполнить», — скажет упертый борец с тестами.

Хорошо, теперь нам нужно отладить кейс с углами треугольника на входе вместо сторон. Дополняем функцию, отлаживаем ее, опять каждый раз возвращаясь к заполнению формы в браузере. Вроде бы все ок. Но случайно выясняется, что мы тем самым сломали уже работающий первый кейс. Окей. Снова правим. Проверяем уже попеременно оба кейса.

Что у нас в варианте с тестами? Просто пишем еще один тест и отлаживаем код. Сломали первый кейс — упавший первый тест сразу даст об этом знать.

Думаю, нет смысла расписывать, как быстро начнет расти сложность ручного тестирования, когда мы начнем добавлять кейсы с двумя известными сторонами и одним углом треугольника или двумя углами и одной стороной. И это лишь выдуманный простой пример. В реальности люди тестируют ручками куда более сложные процессы.

Пишите тесты. Это удобнее и быстрее. Я зачастую отмечаю, что мог весь день проработать, даже не запустив свой веб-сервер.

Вдогонку порекомендую пакеты для питона:
factoryboy — многократно облегчает процесс наполнения тестовой базы тестовыми инстансами моделей, заменяет необходимость писать фикстуры.
faker — придумывает фейковые имена, номера телефонов, адреса компаний, почтовые ящики и прочие тестовые данные.
Запуск сниппетов кода

Регулярно возникает нужда быстренько запустить какой-нибудь кусочек кода. И я всё никак не мог найти удобный способ делать это. В браузерных песочницах долго. В каком-нибудь ipython редактировать многострочный сниппет — боль. Ещё было непросто заранее организовать импорт частоиспользуемых пакетов: math, itertools, functools, lodash.js.

Идеальное решение лежало на поверхности. В jetbrains IDE можно создавать scratch-файлы — черновики. Они доступны из любого проекта. Я создаю такой файл, сразу даю ему какое-нибудь запоминаемое имя, сразу импортирую то, что может пригодиться в сниппетах. Затем в любой момент, в любом проекте я поиском нахожу его, накидываю какой-нибудь код и запускаю. Здесь же сразу и дебаггер доступен, не говоря уже о подсветке, автокомплите, знакомых хоткеях и прочих ништяках.


Юбилейный 16-й пост на канале 🎉
Версия приложения на клиенте

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

// package.json
{
"scripts": {
"build": "REACT_APP_VERSION=`date +%m.%d.%H%M` yarn run build"
}
}


// index.js
console.log('APP VERSION: ', process.env.REACT_APP_VERSION);

Результат:
APP VERSION: 11.01.1200
(месяц.день.часыминуты)
Автообновление веб-приложения до актуальной версии

Веб-приложениям, которые запущены круглосуточно и никогда не закрываются, нужен дополнительный пинок о том, что релизнулась новая версия и неплохо бы на неё обновиться. Вот один из велосипедов для решения такой задачи.

Вебпак генерирует asset-manifest.json (плагин webpack-assets-manifest) примерно следующего содержания:

{
"main.css": "static/css/main.ea89508d.css",
"main.css.map": "static/css/main.ea89508d.css.map",
"main.js": "static/js/main.ea1dcc18.js",
"main.js.map": "static/js/main.ea1dcc18.js.map"
}


Тут есть уникальные хеши билда и это можно использовать, чтобы понять, что вышла новая версия. На старте приложения фетчим asset_manifest.json и сохраняем значение. Дальше в setInterval фетчим и сравниваем с сохранённым значением. Если появились расхождения, то можно рестартить или показывать уведомление — смотря, что больше подходит.

const rsp = await fetch(
'/_asset-manifest.json',
{cache: 'no-store'}
);
const data = await rsp.text();
if (idle && data !== manifest) {
window.location.reload(true)
}


У меня nginx рероутит /_asset-manifest.json на /asset-manifest.json, чтобы избежать конфликтов с serviceWorker offline cache — пути, начинающиеся с подчёркивания, блеклистятся.
Как рассинхронизировать анимации в списках

:nth-child(2n) {
animation-delay: -200ms;
}
:nth-child(2n+1) {
animation-delay: -600ms;
}
:nth-child(3n) {
animation-delay: -400ms;
}
:nth-child(5n) {
animation-delay: -800ms;
}
:nth-child(7n) {
animation-delay: -300ms;
}


Было / стало:
Как быстро перекинуть файл между двумя девайсами локально

Ну там с ноута на ноут в одной сети, например. Пользователи экосистемы Apple и их AirDrop (не путать с iCloud) недоумевают с существования данной проблемы, но для всех остальных она актуальна. Но недавно я нашёл интересное решение — snapdrop.net

• Не требует установки каких либо клиентов — работает на браузерных технологиях. Нужно лишь открыть snapdrop.net на обоих девайсах.
• Соответственно, работает на любой платформе, где есть браузер
• Не требует даже логиниться — всё доступно моментально
• Файл передаётся и принимается одновременно, в отличие от варианта закинуть в облако или в мессенджер
• Сервер нужен только для установки соединения — данные передаются между клиентами напрямую и в зашифрованном виде
Отладка элементов, которые меняют своё состояние в зависимости от фокуса

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

setTimeout(() => { debugger }, 5000);
Correct horse battery staple

Вместо того, чтобы допиливать фичу к дедлайну, напрокрастинировал бота в телеге —
@correcthorsebatterystaplebot

Генерирует пароли по заветам популярного xkcd комикса.

Исходники
https://github.com/roboxv/correcthorsebatterystaplebot
Что такое виртуальные десктопы и как их готовить (macOS edition)

Так как я уже два года, как свитчнулся на macOS, пришло время актуализировать старый пост.

Что это такое. Виртуальный десктоп — это Task View в Windows, Spaces в Mac OS, Workspaces в Linux (Gnome). Виртуальный десктоп — это НЕ виртуализация рабочих столов (VDI) и это НЕ подключение к удаленным рабочим столам (RDP)

Пока одни люди не понимают, зачем они нужны, другие не понимают, как без них жить. Объясню на своём примере. У меня создано девять виртуальных десктопов. У каждого есть определённая тематика. Не всегда весь перечисленный софт запущен. Но если запущен, то он всегда автоматически отправляется на определённый десктоп — спасибо macOS, здесь, в отличие от винды, можно штатными средствами прикрепить приложение к определённому столу.

1. Браузер для серфинга, документация: Chrome, Finder
2. Среда разработки: PyCharm, Arduino, VSCode
3. Другой софт для разработки: Postman, Docker, Lens, Cyberduck
4. Браузер для разработки: Chrome Canary
5. Дизайн, макеты, фотки, графика, наброски: Figma, Photos, Krita, Inkscape, Draw·io
6. Тайм трекеры, таск менеджеры, календари: Upwork, Hubstaff, Calendar, Stickies, Todoist
7. Мессенджеры: Telegram, Slack, Meet, Zoom
8. Почта: Mail
9. Менеджеры паролей: MacPass, KeePassium

Как выглядит мой рабочий процесс:
Я пишу код на виртуальном десктопе №2
Мне нужно посмотреть, что отрендерилось — я нажимаю Hyper + 4
Мне нужно свериться с макетом — я нажимаю Hyper + 5
Мне нужно вернуться в код — я нажимаю Hyper + 2
Мне нужна документация — я нажимаю Hyper + 1
Мне написали сообщение — я нажимаю Hyper + 7

Не относится непосредственно к спейсам, но тоже важно: терминал iterm2 вызывается глобальным хоткеем Hyper + T на любом спейсе.

Я не переключаю спейсы через ^← и ^→ или свайпами. В отличие от винды, в macOS штатными средствами можно назначить хоткеи для прыжков к конкретному спейсу. У меня это Hyper + 1..9. Однако всё же отсутствует возможность перекидывать окно на определённый спейс с клавиатуры. Это решается сторонней бесплатной утилитой Amethyst в которой эти перемещения у меня назначены на ⌘Hyper + 1..9.

Hyper — вымышленное название для кнопки-модификатора. У меня сильно кастомизирован конфиг клавиатуры через karabiner-elements и в моём случае эта кнопка объединяет модификаторы `^⌥⇧`, а самостоятельное её нажатие переключает язык.

Кроме того, в System PreferencesAccessibilityDisplayDisplay у меня включена опция Reduce motion, которая избавляет от анимации переключения столов.

Ну и ещё стоит упомянуть, что ⌘Tab, который оперирует приложениями, я вообще не использую. Вместо него у меня на ⌥Tab вызывается бесплатная утилита AltTab, которая позволяет переключать все окна приложений, принадлежащие конкретному рабочему столу, подобно виндовому Alt + Tab.

Зачем всё это?

За один хоткей я моментально добираюсь до нужного мне окна. Мне не нужно перебирать приложения через ⌘Tab и их окна через ⌘`, не нужно смотреть на иконки, анализировать — вместо этого работает мышечная память. Виртуальные десктопы сохраняют видимость, размеры и положения окошек. Если мне нужно, чтобы телеграм был справа, а слак слева, то на седьмом десктопе всегда всё будет именно так. Независимо от того, по каким окошкам я прыгал.

Именно последнее и сподвигло меня начать пользоваться виртуальными десктопами.
Как посмотреть историю покупок приложений в App Store

Может быть в приложении App Store? Нет. Нужно нагуглить на сайте эппла инструкцию, где подскажут, что мне нужно приложение Music, где я обнаружу почти ту же самую форму, но с бонусным параграфом Purchase History.

Обожаю Apple!
Не понимаю шумихи вокруг процентов в индикаторе батарейки

Я эти проценты везде отключаю, если где-то включены дефолтно — иконки достаточно, чтобы оценить ситуацию. Если прям уж сильно нужны точные данные, всегда можно одним жестом вытянуть шторку и увидеть. А когда оно постоянно перед глазами, то это никакой пользы не несёт, одни только переживания:

— Я тут 10 минут потупил в телефончик и у меня 2% как ни бывало!
Подборочка программ на мак от роббана, часть 1


Подборка будет полезна в первую очередь таким же, как я, веб-разработчикам или перебежчикам на macOS. Но и остальные, включая пользователей других ОС, уверен, что-нибудь интересное тоже обнаружат.

Принципы, по которым составлялся список:
- Ищу бесплатные варианты и зачастую ими удовлетворяюсь, воровство неприемлемо.
- Если альтернатива сильно хороша и одновременно это разовая покупка 💰 без подписок, то покупаю.
- Если я зарабатываю на этом деньги, либо софт исключительно хорош, либо безальтернативен, то готов оформлять подписку 💳
- Приведённые цены актуальны были на момент моей покупки. Ваша цена может отличаться в зависимости от региона, скидок, удорожаний.
- Только десктоп, без веб-приложений.
- Бо́льшая часть ставится из homebrew, меньшая из appstore . Совсем изредка ставится с сайта 🌐
- Самые любимые приложения отмечены

Homebrew 🌐
Менеджер пакетов для мака и через него устанавливать / обновлять / удалять / синхронизировать программы гораздо удобнее, нежели руками качать с сайта разработчика. А вот под капотом homebrew качает именно оттуда. Собственно, через homebrew и ставится почти вся подборка.

Raycast
Почему-то только на макоси распространён целый класс программ — лаунчеры. В рейкасте сразу всё: поиск по файлам/контактам/интернетам, калькулятор, конвертер валют, менеджер окон, история буфера обмена, сотни расширений с моментальной установкой из «магазина», скрипты, кастомные команды, легко писать свои расширения на JS. Всё это в одном месте, в одном окне, с быстрым доступом через поиск, алиасы или хоткей. За один только рейкаст стоит переходить на макось.

Bartender 💰
В рожу плюньте тому, кто будет рассказывать, что макось — идеально вылизанная ОС. На ноутбуках с чёлкой настолько мало места в менюбаре, что значки попросту перестанут помещаться. А что макось делает со значками, которые не поместились? Скроллит? Скрывает под выпадайку? Нет, она просто прячет их в пространство, до которого невозможно добраться. Проблеме существует с 2020 года, а решается она только бартендером за 16$. Может показаться, что бесплатные ⌥ Dozer или ⌥ Hidden Bar её решают, но они не решают. А макось всё равно лучшая. Это не значит, что хорошая. Просто остальные ещё хуже.

AltTab
Аналогичное убожество в макоси с переключением окошек через ⌘Tab и ⌘Ё. AltTab возвращает добротный виндовый alt+tab в честь которого, собственно, и назван.

Shottr
А вот скриншотилка в макоси и так хороша. Погуглите, кстати, её неочевидные фишки. Но shottr гениален тем, что все эти фишки аккуратно скопировал и прикрутил сверху отличный редактор: рисует стрелочки и подписи, стирает или блюрит ненужное, распознаёт текст и QR-коды.

Maccy
Хранит историю буфера обмена и позволяет быстро её просмотреть и быстро вставить. И это прям сильно меняет рабочий процесс, если вы раньше никогда не пользовались менеджерами буфера. Например, можно сразу скопировать несколько картинок с сайта, а потом один раз переключиться в другое окно и поочерёдно вставить. Вместо скачков туда-обратно между окнами.
Впрочем, та же самая функциональность есть и в ⌥ Raycast, но maccy мне нравится больше.

BetterDisplay
Стандартные клавиши управления яркостью или громкостью работают лишь с некоторыми моделями мониторов. А с этой прилагой список мониторов существенно расширяется.

Dato 💰
Альтернативные часы в менюбар с настраиваемым форматом за 9$ (в составе Sindre's Menu Bar Bundle). А по клику/хоткею показывается календарь, список событий, часовые пояса и самое крутое — перемотка времени 😎. Бесплатная альтернатива, которой пользовался раньше: ⌥ Itsycal


1 • 2345
Подборочка программ на мак от роббана, часть 2


KeeWeb
Кроссплатформенный опенсорсный менеджер паролей. Пользуюсь уже лет 10. Все пароли хранятся в файле, который можно синхронизировать через любое облачное хранилище. В моём случае это Syncthing. Клиенты для других платформ: 🤖Keepass2Android, 🍏KeePassium, 🪟KeePass

Warp
Терминал, сделанный по-человечески. Присылает уведомление, когда отработает долго выполняющаяся команда. Текст в выводе терминала или в строке ввода — просто текст. По нему можно перемещаться по словам обычными системными хоткеями, удалять по словам, выделять. Казалось бы, ерунда, но я только лишь из-за этого моментально ушёл с ⌥ iTerm2. В остальном же терминал на любителя: требует регистрации аккаунта, внедряет AI фичи. Не то чтобы это всё было необходимо, но изредка может быть удобно нажать одну кнопку и сразу получить AI-консультацию по ошибке в выводе.

oh-my-zsh 🌐
Если честно, понятия не имею, что именно он делает. Знаю, что как-то там улучшает шелл. Установил и забыл.

tldr
Совершенно гениальная штука, заменяющая по-человечески man. Выдаёт для любой консольной команды короткий список часто используемых сценариев и пример команды с нужными аргументами.

Lunchy
Человеческая обёртка к нечеловеческому интерфейсу launchctl (launchd).

mackup
Бекапит конфиги популярных софтин и заодно позволяет синхронизировать их через какое-нибудь облачное хранилище между разными машинами.

Cyberduck
Аналог виндового WinSCP. Клиент для SMB, WebDAV, SCP, SFTP, FTPS, AWS S3 и пачки других протоколов и облачных хранилищ.

PyCharm 💳 🌐
Мне некогда настраивать плагины, чтобы заколхозить подобие IDE, проще отдавать 59$ / год.

Jetbrains HTTP Client 🌐
Рекомендую попробовать HTTP-клиент в любой Jetbrains IDE. Поддерживает переменные, среды, скриптинг на JS. А задумка, что запросы описываются просто текстом в файлах — гениальна. Избавляет от борьбы с гуём как в ⌥ Postman, автоматически решает проблему синхронизации запросов в команде — просто закинь в репозиторий.

Github Copilot 💳 🌐
Настолько хороший ИИ-ассистент для кода, что порой, бывает жуткое ощущение, что он мысли читает. Заметил, что многие даже не видят разницы между ИИ-ассистентом и чат-ботом, но в рамках данного поста нет смысла расписывать. Рекомендую просто попробовать триал, а дальше определиться, стоит ли он своих 10$ / месяц.

Disk Inventory X
Аналог виндового WinDirStat — сканирует весь диск и затем показывает, какая папка сколько весит. Страшненькая, но меня целиком устраивает. Любителям красоты может понравиться ⌥ DaisyDisk 💰за 10$

App Cleaner
Подчищает мусор за программами в процессе их удаления: логи, кэш, конфиги. Хотя аналогичная функциональность есть и в ⌥ Raycast.

coconutBattery
Отслеживание деградации аккумулятора.

Macs Fan Control
И температур.

Little Snitch 💰
Многие понимают необходимость файрвола, но отталкивает мучительный процесс одобрения каждого соединения. А эти запросы после установки файрволла вываливаются тысячами, что чаще принуждает либо разрешать всё бездумно, либо вообще отложить файрвол до лучших времён. Интерфейс литл снитча позволяет вкатываться в этот процесс постепенно, хотя и требует за это каких-то конских 50€. Для тех, кто пока не готов к таким тратам, есть бесплатный аналог ⌥ LuLu.

Karabiner-Elements
Аналог виндового AutoHotKey. Позволяет переназначить клавиши, настраивать макросы, отдельные слои для хоткеев. Но мало-мальски сложные сценарии потребуют составления своего конфига, описываемого JSON-файлами. Вариант для менее продвинутых пользователей: ⌥ BetterTouchTool 💰 за 10$.

Phoenix
Стандартные манипуляторы окнами типа ⌥ Raycast и ⌥ Rectangle оказались недостаточно гибкими. Phoenix позволяет написать на JS свою логику распределения окон по экрану. В паре с карабинером, составляет основу моего рабочего процесса, о чём стоит рассказать отдельно.


1 • 2 • 345
Подборочка программ на мак от роббана, часть 3


Velja 
Браузеры я держу все подряд. Потому что и по работе в отладке пригождается, и есть уникальные фичи, и в принципе мне удобнее разделять задачи по разным браузерам, нежели профилям одного браузера. Так проще раскидывать браузеры по разным виртуальным десктопам. А управляет всем этим зоопарком Velja — ссылочный роутер. Можно задать, в каком браузере и профиле браузера ссылка откроется, в зависимости от ссылки или от приложения, из которого она открыта.

Arc
Мой основной браузер. Если все остальные браузеры по сути своей отличаются примерно никак, то арк тут выделяется. У него своеобразный подход к табам, закладкам, навигации, но рекомендую просто попробовать. Мне поначалу только табы сбоку мозг ломали, а в остальном переход с хрома был бесшовным.

Firefox
Открывая видосик во весь экран, любой браузер порождает лишний виртуальный десктоп, что может быть создавать проблемы, если вы привыкли прыгать по десктопам шорткатами. Файрфокс этой проблемы лишён. Поэтому у меня все ютюбы и рутюбы заворачиваются конкретно в файрфокс с помощью Velja.

Canary 🌐
Исторически сложилось, что канарейка — это мой основной браузер для разработки, хотя с тем же успехом это мог быть ⌥ Chrome. Напичкан расширениями, которые могут помешать обычному сёрфингу.

Replay
Не совсем браузер, скорее инструмент для отладки. Позволяет сделать запись некоторого взаимодействия в браузерном окне, а потом по этой записи прыгать в любой момент на таймлайне, вызывать дебаггер для этого момента, инспектировать. Как основной браузер для разработки мне не подошёл, поскольку девтулзы там файрфоксовские вместо привычных хромовских. Но вот изредка, бывает, пригождается.

Edge
Держу ради бесплатного выхода на GPT4 через Bing AI.

Яндекс.Браузер
Встроены интересные нейронки. В особенности та, что делает выжимку из видео.

Safari 
Нужен исключительно для отладки проблем, специфичных для сафари.

Obsidian
Заметочница на стероидах, персональная википедия (PKM), замена notion. Заметки хранятся в markdown файлах локально, обрастают связями друг с другом, отображаются в виде графа. А самое вкусное — огромное комьюнити, написавшее сотни плагинов на любой случай. И на мобилках они тоже работают (за некоторыми исключениями). И писать свои плагины на JS тоже очень просто.

LibreOffice
Вполне сносный офисный пакет, когда нет желания платить за микрософтовский.

VSCode
Может, среди прочего, выполнять роль дефолтного текстового редактора. Однако я предпочитаю делать это в ⌥ PyCharm ввиду наличия привычных возможностей и хоткеев.

Типографская раскладка Ильи Бирмана 🌐
Всем рекомендую — она бережно сохраняет стандартную PC-раскладку, но при этом в ⌥ слое даёт доступ к символам типа тире, кавычек-ёлочек, копирайта, градуса, плюс-минус, диаметра. Причём символы расположены логично и найти нужный нетрудно даже без шпаргалки.

Ukelele
Я же, попользовавшись раскладкой Бирмана на протяжении лет десяти, пошёл дальше и на её основе собрал в Ukelele свою.


12 • 3 • 45
Подборочка программ на мак от роббана, часть 4


Keka
Просто архиватор

Shareful 
Расширяет стандартное Share меню приложений банальными действиями
• Copy
• Open In...
• Save As...
• Save to Downloads
Изредка, но пригождается. Особенно актуально для мобильных приложений, запускаемых на apple silicon маках.

Transmission
Простенький и приятно выглядящий торрент-клиент. Фанатам всратого µTorrent придётся по вкусу такой же всратый ⌥ qBittorrent, но мне он не зашёл из-за регулярных зависаний намертво.

QuickLook плагины 🌐
Одна из лучших фишек макоси — быстрый предпросмотр содержимого текстового файла или изображения по нажатию на пробел в файндере. Но стандартно поддерживаются далеко не все форматы. А по ссылке подборка плагинов, расширяющих этот список.

Peek  💰
У меня же некоторые плагины из вышеприведённого списка не заработали. Докупил Peek за 9$ и все потребности по предпросмотру закрылись.

TickTick 💳
Навороченная тудушница, хотя я пользуюсь лишь малой частью фич. Но когда нужна кроссплатформенность и синхронизация, то выбор тудушниц сильно сокращается и приходится мириться с подпиской за 22$ / год. До тиктика года 4 пользовался ⌥ Todoist. У него слабее интеграция с календарём, зато лучше NLP. Обе хороши, но тиктик мне нравится немного больше.

Structured 💰
Для меня это планировщик повторяющейся ежедневной рутины и привычек. Отдал 11$ чисто за виджет с таймлайном. А так-то эту задачу можно решить в календаре или экселе.

How Long Left 💰
Интегрируется в календарь и показывает время до ближайшего совещания (или любого другого события) в виде виджета или таймера в менюбаре. Отдать 2$ не жалко.

Stocks 
Польза в том, что виджет может показывать не только акции, но и курсы валют — просто вбейте в поиск трёхбуквенный код валюты.

Timemator 💰
Тайм-трекер с функцией автотрекера — автозапуск по правилам в зависимости от активного приложения или сайта. А чтобы без подписок, просто 20$ разово — совсем редкий зверь.

Pandan
Сам отслеживает длительности работы и перерывов, а не требует ручного запуска всратых pomodoro. Чтобы было труднее проигнорировать приглашение отдохнуть, можно настраивать уведомления разной степени инвазивности. У меня наивысшая — весь экран перекрашивается в ядовитые цвета через интеграцию с betterdisplay.

LetsView 
Позволяет транслировать экран айфона / айпеда на мак и при этом, в отличие от стандартного screen mirroring, не парализует весь мак целиком. В отличие от ⌥ QuickTime Player, не требует подключения через кабель.

Syncthing
Волшебная синхронизация файлов подобно Dropbox / iCloud / Google Drive, только лучше: гибкие настройки, размер хранилища ограничен вашим диском, хранится всё напрямую на ваших железках, не на чужих серверах. Причём на андроиде тоже хранятся именно файлы оффлайново, а не ссылки. Только на айфонах будет больно — там, ввиду ущербности ОС, только через отдельный платный клиент и с ограничениями.

KDE Connect 🌐
Использую для синхронизации буфера обмена с мак на андроид и уведомлений с андроида на мак. UI отвратителен, зато всё работает локально, без сторонних серверов. Любителей подобных извращений так же может заинтересовать ⌥ Join by joaoapps

Neardrop 🌐
Передача файлов с андроида на мак подобно AirDrop. Клиент ставится только на мак, на андроиде всё через стандартные Quick Share / Nearby Share.


123 • 4 • 5
Подборочка программ на мак от роббана, часть 5


Pixelmator Pro 💰
Шикарный редактор изображений, причём не только для растра, но и для вектора, и pdf. По возможностям обработки фото, осмелюсь предположить, не хуже фотошопа для большинства пользователей, а местами и превосходит его. Точно стоил своих 22$ разово.

Seashore 
А вот какой-нибудь простенький и бесплатный редактор для макоси тяжело. Seashore — ближе всего.

ImageOptim
Сжималка картинок.

Sweet Home 3D
Планировщик помещений, интерьеров. Пригождается, чтобы перед ремонтом накидать план, чтобы понимать, где возводить перегородки и какая мебель куда встанет.

NotBoringWallpapers
Персональная разработка. Ежедневно подгружает новые обои Bing на рабочий стол. Только работает стабильно уже два года в отличие от того, что предлагает сам микрософт.

IINA
Видеоплеер с приятным интерфейсом в духе самой макоси и её QuickTime.

Amphetamine 
Не даёт заснуть макбуку, в том числе обесточенному и при закрытой крышке. Полезно, если смотреть кинчик с телека, подключенного по HDMI.

CapCut 🌐
Простой, но в то же время в меру мощный видеоредактор под все мобильные и десктопные платформы от создателей тиктока. Есть ощущение, что может поменять ценовую политику и скатиться в говно как VN, но пока ещё остаётся бесплатным. С натяжкой для совсем примитивных подрезок даже встроенный ⌥ QuickTime Player годится. Главное — выучить хоткеи ⌘T и ⌘Y. Альтернативы для монтажа: ⌥ iMovie или ⌥ DaVinci Resolve. В последнем монтируют даже голливудское кино.

Handbrake
Видеоконвертер. Крайне рекомендуется, если вы часто заливаете видео в телегу. Объяснение и сразу хороший гайд: Учимся сжимать видео для Telegram.

Gifski 
Просто конвертер видео в гифки

OBS
В макоси и встроенный рекордер экрана хорош, но если нужно записывать продвинуто, то OBS выручает. Ну а стримерам-то он и без меня известен.

Blackhole-2ch
На маке не получится просто так записать звук с аудиовывода (звуки системы, голос собеседника, звук из проигрываемого видео), понадобится аудио-роутер. Это бесплатный вариант, но интерфейс совершенно неинтуитивный. Богачи могут купить ⌥ Loopback 💰 за 111$.

krisp
Очень мощный шумодав микрофона. Лучше стандартного Voice Isolation. Пригождается, когда нужно созвониться в шумном месте.

Отдельно хочу поблагодарить Sindre Sorhus. В подборке много полезных утилиток за его авторством и они по большей части бесплатны. Рекомендую мониторить его сайт на предмет появления чего-то новенького.
На этом пока всё, но пост будет изредка обновляться.

Реакт 👍, джоин 👥 и до связи 👋!


1234 • 5
Please open Telegram to view this post
VIEW IN TELEGRAM
Хм. А неплохо выглядят девтулзы edge. Есть возможность развернуть панель вкладок девтулзов вертикально. А-то в хроме меня убивали эти вкладки, которые никогда не помещались.

И есть кнопка, чтобы ошибку из консоли сразу выгрузить в чат-бота. Хотя тут не уверен, что часто буду пользоваться.
Жопа горит от эппловской фичи, что якобы можно на apple silicon маке запустить приложение с iOS/iPadOS. И контроль над этой фичей отдали разрабам, а в последующих апдейтах ещё и усилили этот контроль, запретив sideloading.

При этом:
• От разраба требуются дополнительные усилия — нужно, кажется, айпедовские скриншоты нарезать для аппстора. А скриншоты должны пиксель в пиксель попадать в требуемые размеры.
• Разрабы хотят маковские прилаги издавать и монетизировать отдельно от мобильных.

Половине разрабов лень подгонять скриншоты, другой половине жалко отдавать прилагу. По итогу получаем приложений, работающих по этой фиче, в количестве: нихуя. 😂
Please open Telegram to view this post
VIEW IN TELEGRAM
Напоминаю:

• Включите пин-код для симки.
• Скройте тело писем и смсок из уведомлений на экране блокировки.
• Проделайте то же самое с девайсами своих родственников.

Будет меньше поводов переживать о потерянном телефоне.
Посмотрел подряд обе дюны. Как говорится, гора родила залупу конскую.

Главный замут — все воюют друг с другом за спайсы. А почему? А потому что иди на хуй. Ведь такое невозможно вместить в пять часов хронометража. Ограничимся двумя предложениями, зачитанных вслух за кадром каким-то википедиком.

А в целом там каждая сцена противоречит логике. Да хуй с ней с логикой — противоречит собственным же правилам. Сюжета нет, есть набор красивых анимированных картинок.

Зато хоть породили желание познакомиться с книгой.