igrishaev
515 subscribers
76 photos
3 videos
2 files
381 links
Ivan Grishaev on everything // grishaev.me
Download Telegram
Господа хорошие, подскажите вот что. Мне нужно передать в урле key-val параметры. Пока вложенность нулевая, все идет хорошо через query-string:

backend://test.com/foo?a=1&b=2

Но как быть, если один из параметров -- вложенная мапа? Привести ее у виду xxx=1&yyy=2, и передать как строку?

backend://test.com/foo?a=1&b=2&params=xxx%201%26yyy%202

Или передать ее джейсончиком? За прием и передачу отвечаю я, ограничение одно -- все должно быть в урле, никаких body.
Может быть, вы не знали, но есть программа с выразительным названием The Fuck. Написана на Питоне, 90 тысяч звезд, работает следующим образом.

Предположим, вы запустили что-то в терминале, но получили ошибку. Не указан такой-то флаг, это депрекейтед, то-се. Если ввести fuck, то программа считает предыдущую команду и повторит ее, но на этот раз правильно.

Звучит непонятно, так что рассмотрим пример. Скажем, я сделал новую ветку и хочу запушить ее на сервер:

git checkout -b ssl-no-validation
git add .
git commit -m "some changes"
git push

Вот что я получу:

fatal: The current branch ssl-no-validation has no upstream branch.
To push the current branch and set the remote as upstream, use

git push --set-upstream origin ssl-no-validation

Гит прекрасно понял, что я имел в виду, но предлагает ввести команду повторно. Если же ввести fuck, то утилита считает bash_history и выполнит то, что нравится Гиту.

В последнем Гите это починили: теперь git push делает апстрим самостоятельно. Однако долгое время меня выручал fuck.

Сегодня я им не пользуюсь, но вспомнил вот почему. Программа хорошо расширяется регулярками, и народ собрал целую кладезь fuck-рецептов. Получилась своего рода энциклопедия бредовых случаев. Мне кажется, они достойны изучения просто затем, чтобы знать, как делать не надо. Если же ваша программа оказалась среди рецептов -- это нужно быстро исправить.
Если вы работаете вне штата (контрактор, ИП, самозанятый), то получить даньги с закачика — ваша работа. Получение денег может быть трудным и долгим, и обычно о нем не говорят. Но чем раньше вы примите тезис из первого предложения, тем скорее на вас снизойдет благодать.

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

Некоторые думают, что у ИП и контракторов то же самое: поработал — получил деньги. Это не так: сотрудник должен заполнить часы, посчитать зарплату, выпустить квитанцию и отправить ее нужным людям. Потом ждать и пинать тех, кто отправляет деньги. Потом пройти валютный контроль в банке: предоставить документы, контракт, квитанцию, в сотый раз доказать, что все законно. Если затупить на любом этапе, деньги не придут, и заказчик лишь пожмет плечами: сам виноват.

Штатные сотрудники полагают, что бухгалтер переводит им зарплату по доброте душевной. На самом деле бухгалтер делает это из страха перед государством. Дело вот в чем: с каждой зарплаты фирма платит налог. В России мало об этом думают, потому что получают зарплату уже после вычета налогов. Но если кому-то не выплатили зарплату, то и налог с нее тоже не заплатили. Если государство узнает, что Иванову удержали зарплату, оно накажет фирму — но не за то, что Иванову нечего есть, а за то, что не уплачен налог.

Получается, что у штатного работника есть "крыша" в виде государства, которая, разумеется, оказывает свои услуги за ренту. А поскольку ИП платит налоги по-другому, то волноваться о том, получил он деньги или нет, не нужно. Точнее, нужно, но в другом ключе: от кого и за какие услуги.

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

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

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

Проходит месяц, девушка выходит замуж и улетает в свадебное путешествие. Программа автоматом рассылает деньги всем, кроме меня. Жду.

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

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

Возникли вопросы у налоговой: в контракте указано N тысяч фантиков, а приходит на четверть больше. Как так? Пришлось выставлять квитанции якобы за переработки и допуслуги.

Но дело шло: мало-помалу долг закрывался. Вот и первую зарплату погасили, вторую, третью... а потом случилась банальная для стартапа история. Не прошли очередной раунд ивестиций — и все, денег нет. Собрали звонок и говорят: мы не будем возражать, если найдете другую работу. Можете работать на нас, но без каких-либо гарантий выплат.
Я пишу, что за вами осталась одна непогашенная зарплата, на что отвечают — держись, денег нет. Я решил, что ничего не поделать и был рад хотя бы тому, что выбил три зарплаты — ведь если бы ничего не делал, то попал бы на все четыре. Но неожиданно за меня вступился технический руководитель, и последнюю зарплату все-таки выплатили. Буквально за день или два до того, как банк перестал принимать платежи из-за границы.

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

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

SOLID возник в момент, когда в ООП-тусовке царил упадок. До повсеместного перехода на ООП говорили, что объекты решат все проблемы. Достаточно выразить сущности классами и нарисовать UML-схему — и все станет понятно. Звучит примерно как "Земля плоская", но тогда в это верили. И когда ООП-модель стала буксовать, придумали SOLID, чтобы вдохнуть в нее новую жизнь.

У SOLID есть даже не аналогия, а буквальный пример из жизни. Каждый тренер знает, что главное у спортсмена — настрой (разумеется, не исключая питание и тренировки). Если настрой в упадке, есть не совсем честные способы его поднять. Скажем, когда команда проигрывает всухую, тренер берет таймаут и выдает "заряженные" клюшки, которыми играли великие спортсмены. Или переставляет участников местами, говоря, что сейчас будем играть по "секретной" тактике. Поскольку спортсмены суеверны, это работает.

Та же самая история у военных, полицейских, пожарных. У них есть церемонии раздачи "заряженных" девайсов, например, касок погибших героев. Надевая такую каску, боец буквально получает +100 к отваге. Вопрос о том, действительно ли герой носил эту каску, тактично обойдем стороной.

С принципом SOLID то же самое. Когда стало ясно, что нагромождение классов не решает прошлых проблем, а только добавляет новых, кто-то придумал SOLID. Посыл в том, что отныне мы не блуждаем в потемках, а идем к некой цели. Пишем не просто быдлокод, а по некой методичке. И пусть она спорна и расплывчата, это неважно — есть ориентир. Спортсмен снова мотивирован и готов брать рубежи.

Поэтому отношение к SOLID у меня спорное. Смысловая составляющая высосана из пальца, но запал колоссальный. Уже десятки лет люди спорят о том, как писать код по SOLID правильно. В этом смысле я снимаю перед создателем шляпу, потому что ведь надо так уметь! — вдохновить толпы народа без какой-либо конкретики.

Но у любой легенды есть запас прочности, и актуальность SOLID подходит к концу. Я понимаю, когда о нем пишут в рекламных блогах или курсах для новичков. SOLID — это все и ни о чем, универсальный рецепт, из которого можно выжать тысячи текстов. Но удивляет, когда кто-то всерьез рассуждает о том, как в 2025 году писать код по SOLID. Здесь можно сказать одно: как бы ни держалась стюардесса, ее пора закопать.
Читатель Дмитрий снял с языка одну мысль, которую я приберег для отдельной заметки. Если коротко, все удачные аббревиатуры вроде SOLID, как правило, высосаны из пальца. Вероятность, что первые буквы пяти слов образуют другое емкое слово, равна нулю. Поэтому слова подгоняют под аббревиатуру.

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

В своем комментарии Дмитрий приводит пример. Берем выразительную аббревиатуру, например ANALSEX и просим чат-ГПТ придумать расшифровку. Чат справился прекрасно:

A: Abstraction
Focus on hiding complex implementation details and exposing only essential features.

N: Normalization
Ensure that data structures and databases are designed efficiently, avoiding redundancy.

A: Automation
Prioritize automating repetitive tasks and workflows to increase efficiency and reduce errors.

L: Loose Coupling
Design components to have minimal dependencies, making systems more modular and easier to maintain.

S: Scalability
Build systems capable of handling growth in users, data, and operations effectively.

E: Encapsulation
Keep implementation details private within modules or classes, exposing only necessary interfaces.

X: eXpandability
Design with future growth and adaptability in mind, ensuring that new features can be added without major rewrites.

Особенно хорош последний пункт. Слов на X мало, поэтому чат выделил вторую букву в eXpandability.

И главное, все по делу: абстракции — нужны, автоматизация — нужна, масштабирование — нужно, расширяемость — тоже. Не прикопаешься. Так что всем внедрять ANALSEX! Обсудите с коллегами и расскажите начальству.
Иногда снабжающие организации присылают письма:

Иван Викторович!

Давайте беречь бумагу и планету! Перейдем на электронные квитанции во имя добра. Согласны? Если да, откройте файл из вложения, заполните и отправьте.

Конечно, я за природу, планету и все такое. Открываю файл ???????????????????.doc из вложения, смотрю, а там: укажите ФИО, адрес, юридический адрес, ИНН, реквизиты счета, телефон, номер и дату договора, почту, а еще — название документооборота и фирму-эмитент электронной подписи. Всего-то...

Смотрю на этот файл минуту, а потом отправляю в корзину вместе с письмом. До следующего раза.

Хочется спросить: ребята, если вам так нужно перетащить меня в какую-то систему, нельзя ли этому поспособствовать? Скажем, поручить кодеру Васе написать скрипт, который вытащит мои данные из базы — я указывал их при заключении договора — и состряпает PDF, который останется только подписать. Что, нельзя так?

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

Самое забавное — фирма уже высылает документы по электронной почте, но вдобавок зачем-то кладет в почтовый ящик распечатки толщиной с палец. Уже который раз пишу им, мол, перестаньте слать бумагу, электронка вполне устраивает. Но им нужно заявление в Ворде.

Удивительно, как быстро у людей деформируются мозги в больших фирмах.
Друг интересуется: кто-нибудь видел/трогал прошки с нанотекстурированном экраном? Я видел нанотекстуру четыре года назад в ЦУМе (огромный 6K-монитор), но с тех пор технологии шагнули вперед. Смотрел пару обзоров на Ютубе, но интересно живое мнение. Страдает ли четкость шрифтов? Снижается ли угол обзора? Удобней для глаз по сравнению с глянцем?
Старинная русская мудрость: заставь дурака фронтендера сделать выбор города — он лоб расшибет.
Когда работаешь на корпоративном ноуте, постигаешь всю беспощадность обновлений. Ничего нельзя отключить, в фоне работают программы, которые следят за обновлениями. Раз в несколько дней обновится то Хром, то Idea, и начинаются выпадашки: Иван, чтобы защитить себя от угроз, поставь обновление! Откладывать можно фиксированное число раз, и в какой-то момент обновление ставится силой — конечно, перед релизом или звонком. Поэтому со временем я стал накатывать обновления на выходных.

Так вот, в который раз попадаюсь на дурацкое поведение Эпла. Вылазит выпадашка: обновись до Секвойи, тянуть больше нельзя. И кнопочка "Install update". Я закрываю все программы, все реплы, докеры и остаюсь с выпадашкой наедине. Жму кнопку и вижу: отлично, загружаю обновление, осталось 3 часа. Три часа, Карл! Я мог бы ничего не закрывать и работать чуть ли не полдня, пока качается обновление!

Нажимая "Install update", я рассчитываю, что оно уже загружено и я в шаге от того, чтобы начать установку. А загрузка даже не начиналась! И качать там не три мегабайта, а 5-7 гигов.

Спрашивается, что мешало скачать обновление в фоне? Если от него нельзя отделаться, так скачай сам, зачем парить мне мозги?

Дизайнер тоже хорош: если кнопка запускает загрузку обновления, ее нужно назвать "Download & Install update". Я ведь хочу самую малость: чтобы на кнопке было написано то, что она делает на самом деле.

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

Та же самое с Саблаймом. Поработав минут 20, он начинает показывать модалку с прогрессбаром: загружаю обновление. Тупица, что мешает скачать обновление в фоне? Зачем ты показываешь прогресс-бар? Чтобы пользователь смотрел на него? Других дел у пользователя нет?

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

Я пишу TCP-сервер для многих клиентов. Протокол обмена свой, поэтому не HTTP. Вопрос в том, как обслуживать входящие соедения? Скажем, подключилось восемь человек, на каждого свой сокет. Каждый что-то пишет и читает, и нужно всех обслуживать. Цикл примерно такой: прочитали сообщеньку, обработали, отправили сообщеньку. Как это лучше сделать с точки зрения параллельности или асинхронности?

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

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

Использовать асинхронный серверный сокет? Входящие соединения извлекаются в одном треде асинхронно. А что дальше? Раскидывать сокеты по тредам?

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

На StackOverflow нашелся в точности такой же вопрос: https://stackoverflow.com/questions/71898174/asynchronous-server-sockets-with-multithreading

Прочитал его с интересом. Насколько я понял, автор склонился к доводу "на каждое соедение по треду", а дальше пусть разбирается операционная система. Что думаете?

Один из комментатор пишет о том, как они маппят соедения на несколько IO-тредов с неблокирующим IO. Примеров нет, хотелось бы конкретики.

Что посоветуете? Прошу не предлагать Netty и прочие комбайны, потому сама по себе библиотека не даст понимания, как решать подобные задачи.

UPD: забыл про NIO-селекторы, см. статью: https://www.baeldung.com/java-nio-selector
Графомания бывает не только в русском, но и в английском языке. Хороший пример — страница проекта Disruptor.

Вижу большой заголовок "What is Disruptor?", но ни один параграф не отвечает на вопрос, что это такое.

Первый параграф о том, что в такой-то фирме борются за перформанс.

Второй параграф о том, что Disruptor — это результат исследований и тестов. Мы тестировали кеши процессора и ядра и сделали дружественный к железу фреймворк.

Третий параграф — это не специализированное решение, подойдет всем.

Четвертый параграф — он работает не так как вы привыкли, может быть непривычно.

Далее ссылки и документация, а еще нас залайкал известный чел.

Внимание, вопрос — что такое Disruptor?

Вижу такое постоянно. Автор пишет заголовок, а дальше Остапа понесло: мы работали, исследовали, у фирмы долгая история, а вот был случай...

Не надо так. Отвечайте на заголовок, который сами же написали.
Очень важная новость: в Microsoft Outlook появились реакции к емейлам. Работает так: вы написали письмо, отправили, а под ним появляются пальчики, сердечки и прочее. Пошарить скриншот не могу, поверьте на слово.

Интересно, как это работает? Особая апишка в протоколе Outlook? Или пустое письмо с заголовком? Или какой-то особый пейлоад? Или если в письме только эмодзи, оно показывается по-другому?

В любом случае, шлю лучи добра пользователям Аутлука.
Официальный сайт json.org удивляет. В масштабе 30% схемы становятся огромны и заливают весь экран. В масштабе 300% правый бар наезжает на основную часть, сжимает ее в мышиный хвост, отчего схемы тоже уменьшаются.

В результате схема в масштабе 30% процентов выглядит крупнее, чем в 300%. Разница, на минуточку, целый порядок. Такой вот забавный факт.

У этих выкрутасов есть объяснения: верстка, плавающие дивы, стили, пятое-десятое. Но можно сказать проще: это фронтенд.
У меня тут накладки: вышел из строя личный ноут. Ставить Телеграм и прочие штучки на рабочий ноут я не рискую, поэтому пару дней потратил вот на что: достал с антресолей стренький мак 2014 года. Мой первый мак, в котором, как в греческом корабле, давно заменены все детали. Но я считаю его тем самым маком.

Переустановил ось, накатил софт, и в процессе пришла в голову эта заметка.

На том маке, что сейчас в отключке, я работаю четыре года. Там настроено все: блокировщик рекламы и вырезалка плашек с куками; отключены все нотификации; много правил для фаервола Lulu, чтобы программы не лезли в интернет за обновлениями; Фаерфокс работает с полиси, чтобы не показывать модалки и все остальное.

В один момент я всего этого лишился. Ощущения ужасные.

Начнем с того, что каждая программа после запуска хочет показывать нотификации. Неважно какая, неважно зачем. Даже терминал! Уведомления нельзя отключить всем приложениям сразу и позже настроить исключения. Нужно прокликать "нет" для каждой приложеньки.

Про то, что каждое приложение лезет в сеть за обновлениями и показывает модалку, я писал много раз. Приходиться ставить Lulu и затыкать софт.

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

Сюда же Телеграм: если в системе английский язык, предлагает перевести русские каналы. Если русский, то стоит кому-то скопипастить английскую Википедию, как сразу выпадашка с переводом.

Каждый сайт встречает плашкой о том, что использует куки. Каждый без исключения. На StackExchage и StackOverflow плашки размером с могильные плиты. Они не умещаются по высоте, нужно скроллить.

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

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

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

Вырезаю все это по-новой и думаю: что будет через десять лет?
В корпоративной почте пришло сообщение. Я с ним солидарен и поэтому перескажу здесь.

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

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

Картину можно описать так: ебаный стыд. Нашлись люди, которые налепили, казалось бы, логотипы всех конференций и технологий. Node.js, Кубер-Докер, какая-то конфа по Джаве... живого места не оставили. А когда наклейки убрали, ноут выглядит как шкура далматинца -- вся в пятнах. Их уже не оттереть, это навсегда.

Что творилось в голове у этого человека, я не знаю. Даже когда ноут свой, я с сомнением смотрю на обилие наклеек. Блин, ты что, редко видишь свой Кубернетис? Наверняка же он у тебя с экрана не сходит, так еще и на ноут лепить? А клеить на чужой ноут -- это за гранью добра и зла. Я даже подумать не мог, что об этом нужно писать в рассылке -- но оказывается, очень даже нужно. Есть те, кто этого не понимают.

Пожалуйста, не делайте так. Берегите чужую технику.
Похвастаюсь, что ли, обновкой — прикупил новый макбук! Хоть старый и откачали, решил воспользоваться поводом: давненько хотел обновить железку.

Скажу сразу, что обзорщик железа из меня — примерно как бьюти-блогер. Не будет картинок и "продакшена". Этот пост — попытка сказать о маках то, что мне кажется важным.

Новый мак интересен тем, что он кастомный: у него экран с нанотекстурой. Дело в том, что мне нравятся матовые экраны. Дело вкуса, и я за это не топлю, просто нравится. Кто-то гонится за герцовкой, кто-то за матрицей, а мне нужен матовый экран.

Мой первый ноут Thinkpad x220i потому и покорил мое сердце, что был матовым. Я искренне не понимаю, как можно смотреть в экран, который на две трети отражает все вокруг. Я хочу экран, а не зеркало.

Конечно, везде написано "антибликовое покрытие", но это ерунда — оно бликует и отражает.

Эпл так сильно любит пользователей, что не оставляет им выбора. На всех маках стабильно был глянец, но лет пять назад ситуация поменялась. Эплы выпустили огромный 6К-монитор за пять косарей; за лишний косарь можно было сделать поверхность матовой за счет нанотекстуры (а за еще один косарь — купить ногу-подставку).

Что это за нанотекстура такая? Прежде чем ответить, вспомним, как устроен матовый экран. Это обычный глянцевый экран, на который наклеена шершавая пленка. Из-за неровности она рассеивает свет, и получается матовый эффект. Пленка немного скрадывает яркость и угол обзора; ее можно отодрать и получить обычный глянцевый экран.

Эпл добился того же эффекта, но более сложным путем. С помощью лазера на стекле выжигают миниатюрные дорожки, которые рассеивают свет. Расчет на то, что поскольку нет пленки, угол обзора и яркость не пострадают.

Я как-то видел 6К-монитор с нанотекстурой в московском ЦУМе. Продавец даже позволил подключить к нему макбук! Но ничего особого я не заметил: обычный матовый экран. За что платить такие деньги?

Я думал, что эксперименты Эпла с текстурой на этом закончатся, но нет. Постепенно ее добавили в другие устройства, например iMac (дополнительной опцией). И вот недавно выкатили в айпадах и макбуках. Устройства с текстурой относятся к категории "кастомных": их собирают не массово, а на заказ, из-за чего вы не найдете их в розничной продаже. У "кастомок" свои заморочки, о которых я напишу ниже, а пока что вернется к экрану.

Итак, матовый экран — это сказка. Он ничего не отражает, он мягкий, щадит глаза. Светишь на него фонариком — почти все рассеивается. Если сфотографировать экран, вы увидите его содержимое, а не селфи с телефоном. Не заметил, чтобы яркость, угол или рендер шрифтов как-то страдали. Все отлично читается.

Видел картинки шрифтов, сделанные микроскопом с разных экранов. На матовом четкость букв чуть меньше, да, но обычному глазу это незаметно.

Экран с текстурой нежный, легче пачкается. К нему прилагается особая тряпка, и она очень хорошо счищает грязь. Другие тряпки Эпл не одобряет.

Архитектура ARM — это, конечно, полная победа Эпла. После Интела ощущение такое, что спали невидимые гири — настолько все быстро. Ноут больше не закипает при запуске Докера. Программы выскакивают почти мгновенно. Батарея живет ощутимо дольше, раза в два точно.

У меня уже была машина на M1, и даже она после Интела казалась прорывом. А чипы M3-M4 просто творят чудеса. Самое важное: подсознательно чувствуется, что это не ARM в разы быстрее, а Интел что-то делал не так. Иначе откуда такой буст в производительности?

С софтом ситуация не такая радостная. Насколько я понял, всех толковых разрабов забрали в айфон, и десктоп пилят по остаточному принципу. Накопил десятки скринов со всякими нелепостями.

Если вы все еще на Интеле, горячо советую перейти на чипы M1-M4. Это буквально вложить деньги в себя, в свою продуктивность.
Теперь о том, что такое "кастомки". Есть стандартные конфигурации макбуков, которые массово клепают на заводах Китая и Индии. Именно их вы видите в магазинах. А есть частные конфигурации, доступные на сайте Эпла. Такие модели собирают в США, и это сказывается на доставке: долго и дорого. Кастомки ввозят в соотношении 1 к 10 относительно стандартных конфигураций, потому что на них меньше покупателей. Вероятность того, что у продавца найдется именно та кастомка, которую хочется вам, низкая.

Немного о грустном. Не все так хорошо, кое-где я просчитался, а именно в клавиатуре. Есть два широких стандарта клавиш: европейский и США. У Европы следующие особенности:

- кнопка Enter вертикальная
- обратный слэш слева от него
- тильда и обратный тик слева от левого шифта

У раскладки США все не так:

- Enter горизонтальный
- обратный слэш сверху
- тильда и обратный тик слева от единицы

Много лет я сидел на европейском стандарте: как на самом ноуте, так и на внешней клавиатуре. А поскольку кастомки собирают в США, то положение клавиш у них тоже по стандарту США. И насколько я знаю, на это нельзя повлиять. Заказал кастомку — получи раскладку США. В конфигураторе можно выбрать дополнительный язык клавиш, но это всего лишь гравировка. Макет клавиатуры не поменяется.

Получаются боль и слезы. В сотый раз нажимаю Enter и попадаю в обратный слэш. Жму тильду -- а там растянутый шифт. Только сейчас понял, насколько важна тильда: она часто встречается в кложурных макросах. Она нужна в маркдауне, а маркдаун нынче везде: в Телеграме, в Слаке, в Гитхабе и так далее.

Ясно, что когда-нибудь переучусь, но подгорает порой знатно.

Вот что я хотел рассказать вам про маки и Эплы. И постараюсь писать почаще.