Трудоголизм и прокрастинация
294 subscribers
603 photos
46 videos
22 files
486 links
Продукт блоговый, идентичный натуральному by @Pozitronik
От создателя "Вестника Апокалипсиса" и всего такого прочего.
Kinda digest: https://t.me/pozitronik_blog/2492
Download Telegram
Печальное горе: сдох основной ноут.
Не рабочий, которым я себе и вам полоскал мозги некоторое время назад, а тот, другой. Точную причину поломки я определить не могу, но если рассуждать логически — это выход из строя видеокарты.
Сначала ноут пару раз выключился по перегреву, разборка обнаружила, что не вращается одна из турбинок СО. После чистки и сборки работать ноут уже не захотел — питание включает, а видеосигнала ни на каком выходе нет. Зная (по собственному опыту, в том числе) как замечательно видеочипы переносят перегрев, я и предполагаю эту причину.
Замена материнской платы выльется где-то в полтос, что эквивалентно амортизационной стоимости ноутбука. С ремонтными организациями в текущей обстановке тоже не очень понятно.
Ноут использовался в качестве стационарной машины, для игр в том числе. Какое-то время я, конечно, перебьюсь на втором нубуке, но мне очень хочется продолжать резать кубы в Beat Saber (на самоизоляции это единственная реальная нагрузка, которую я мог организовать). Значит, надо всё-таки собирать системник.
А для этого время сейчас самое неудачное. Не только по деньгам (хотя и по деньгам тоже). Если уж собирать систему, то такую, чтоб надолго хватило. А это лучше всего делать где-то в середине очередного витка развития технологий: предыдущее поколение железок уже неинтересно в плане долгой жизни, а новое поколение уже не так дорого и ненадёжно, как на старте продаж.
Для меня такой виток — новые карты nVidia (вот-вот должны объявить что-то про гипотетическую 30xx серию) и то, чем Intel сможет ответить AMD. Плюс, я жду выхода очередного поколения консолей: на пять лет следующих лет все игроделы будут рассчитывать на их мощности, а значит и железо перкарен останется на эти годы более-менее актуальным.
Но это всё — ещё через полгода минимум. Буду думать.
Время, высвобожденное самоизоляцией, дало мне возможность перечитать полностью всё семикнижие о Гарри Поттере. Последний раз я это делал в год выхода последней книги, кажется, то есть лет двенадцать назад. Фильмами марафонил, конечно, не раз, но они, хоть и хороши, всегда оставляли ощущение, будто в них чего-то не хватает.
Видимо, я дожил уже до такого возраста, когда получаешь удовольствие не только от истории, а даже от того, насколько хорошо она собрана. Я говорю не о отсутствии ляпов и недомолвок (если хотите безупречно логического Гарри Поттера, то вы знаете, где взять), а о сюжетной стыкованности что ли. Я не знаю, была ли вся история продумана изначально, или же идеи развивались на ходу — но результат в любом случае свидетельствует о таланте Роулинг.
С другой стороны — я уже не так искренне ощущаю и сопереживаю героям. Помнится, в первое своё прочтение, я люто ненавидел Снейпа, ух, какая ж мразь, бе-бе-бе. А сейчас описания снейповых козней не трогают мою огрубевшую душонку — в реальной жизни приходилось сталкиваться с настолько мерзкими людьми и попадать в настолько несправедливые ситуации, что уже не считаешь это всё столь важным.
А если кто пропустил, то у меня есть своя версия книжных событий, называется "Гарри Поттер и иерархия доминирования".
Никогда бы не подумал, что напишу такое, но вот, пишу. Никогда не имейте дело с тем, что сейчас называется браузером Opera. И дело не в том, что сейчас это название переклеили на очередную хромосборку, а в том, как эта хромосборка себя ведёт. Она прописывает в автозагрузку и, видимо, в планировщик задач, свои утилитки, которые время от времени добавляют ярлычок на панель задач (если его там нет), и показывают пользователю сообщение о том, какой у вас тут хороший браузер есть, давайте его сделаем дефолтным.
Софт, уважающий пользователя, не должен ничего делать без его разрешения. Скрытно и неявно работают всякие плохие зонды и прочая подлость.
Вот уж не знаю, может тут дело в том, что политику развития браузера теперь диктуют китайцы, для которых наличие зондов привычно и непредосудительно. А мы, вроде, пока до такого не докатились.
Придумал, как собрать себе рабочий компьютер, не дожидаясь выхода нового поколения железок. Смотрите, каких новинок стоит ждать:
1) GPU на архитектуре Ampere. Ждём увеличенной производительности рейтрейсинга (со всем остальным прекрасно справляется и поколение GTX), интересно посмотреть на DLSS 2.0, ну и если общая производительность вырастет хотя бы на 30% от текущей платформы — будет хорошо. Объявить о фичах должны буквально вот-вот-вот, но в продаже карты появятся всё равно не скоро.
2) 10 поколения Intel Core. По сути, та же архитектура, хотя и с оптимизациями, тот же техпроцесс, но будет больше ядер для бога ядер. Мобильные процессоры уже ставят в нубуки, десктопные вот-вот должны появиться в продаже.
3) DDR5. Всё, как обычно, при смене поколений типов памяти: быстрее и дороже. Но когда эта смена случится — никто не знает.
4) PCI Express 4.0. Intel не умеет, AMD умеет.

Очевидно, что выходящие процессоры Intel будут иметь производительность, сравнимую с последним поколением процессоров AMD, с которым всё понятно, и которое просто отличное. Поэтому можно смело выбирать из топовых AMD-камней.
Если бы ещё топовые камни имели встроенную графику — на ней я бы спокойно перебился до выхода новых видеоускорителей, их мощности вполне хватит для моих простых забав. Но увы: ни Ryzen 9, ни тредрипперы встроенной графики не имеют; тут есть варианты временно купить какую-то затычку, либо поискать ненужную у товарищей.

С бюджетом неожиданно получается довольно просто. Деньги, которые я откладывал на заграничный отпуск, теперь по понятным причинам освободились. Апгрейд рабочего ноутбука тоже утратил актуальность — ещё пару месяцев явно будем работать по домам, а там видно станет. Примерный бюджет на конфиг без видеокарты (или с минимально подходящей картой) и накопителей — 200k, по первым прикидкам этого хватает даже с некоторым запасом. Так что буду шерстить железячные сайты и подбирать себе конфиг; а если кому-то есть, чем поделиться по теме — велкам в личку.
Решил полностью разобрать поломанный нубук. Во-первых — интересно, во-вторых — с него можно снять хотя бы WLAN-модуль, и попробовать завести на старом ноуте, который умеет только Wi-Fi 2.4 GHz.
Скрутил батарею, радиаторы, распотрошил, посмотрел, собрал — кроме батареи. Воткнул питание на посмотреть.
И ноут, сука, завёлся, как ни в чём не бывало. Даже турбинка, которую я маркировал, как сдохшую — завертелась.
Ставлю батарею на место, ноут включается, но винда падает в режим востановления, а турбинка опять не крутится.
Я не железячник, и не знаю, на что думать. Но, в любом случае, ноутбук без батареи лучше, чем вообще без ноутбука.
Ничего не вредит процессу разработки так, как совещания. Продакт-менеджер, приглашающий разработчика на все подряд да на хоть какие встречи — ты в своём уме, товарищ? Это твоя задача — встретиться и поговорить со всеми причастными, а потом, собрав в единое целое полезную выжимку значимой информации, поднести её в наилучшем виде господину разработчику. Не потому, что этот красноглазый хмырина-кнопокодав такой лентяй и гад, а потому, что его рабочее время на сто порядков ценнее твоего. В этом и состоит твоя, товарищ продакт, нужность, чтобы ты вовремя подвозил информационные кирпичи под руку мозговому ремесленнику. А когда ты выдернул господина разработчика на часовую встречу, на которой он сказал два слова ("привет" и "пока"), ты потратил не час, ты потратил всё время, которое господин разработчик ждал встречи, и всё время, которое господин разработчик восстанавливает контекст у себя в немытой башке.
Товарищ продакт, не обижайся, когда господин разработчик начнёт слать тебя нахер. Потому что он будет прав.
Забава сегодняшнего дня: экспериментально решил выяснить, можно ли использовать телефон с андроидом в качестве переносного рабочего места. В идеале я представляю себе ка-то так: достаю телефон, подключаю к нему через USB-док мышь, клавиатуру и монитор, работаю. Практического смысла в опыте не очень много, больше любопытство.
Программно для работы мне минимально необходимы: среда разработки, лучше всего PHPStorm, любой современный полноценный веб-браузер, веб-сервер, sql-сервер, интерпретатор PHP, ну и git. Здесь есть два решения:
1) Находим и ставим это всё непосредственно под Android. В целом — возможно, но решение так себе: андроидобраузеры очень много чего нужного лишены, а нормальных сред разработки под андроид нет в принципе.
2) Ставим на телефон linux, и уже там разворачиваем всю петрушку. Если есть какой-никакой опыт разработки под linux — предпочтительный вариант, его и реализуем. Это, правда, требует рутованного телефона.

Проще всего линупс поставить, скачав с маркета Linux Deploy. Собственно, эта программа сделает вам всё зашибись: скачает выбранный дистрибутив, организует для него chroot-окружение, создаст пользователей, подготовит все скрипты и прочую магию. Останется только нажать "Старт" и убедиться в отсутствии ошибок в протоколе. Ещё раз: операционка ставится в chroot, я сам не очень вникаю в это колдунство, но в целом это что-то вроде способа запустить в работающей среде другую среду как отдельный процесс, не пересекающий с основным. То есть сломать телефон так нельзя, linux и android будут работать параллельно. Есть и другие способы (вплоть до нативной установки), но они требуют больше времени и меньшей кривизны рук.
Для работы с установленной операционкой есть четыре варианта.
1. SSH. Соединяемся любой терминальной программой, быстро, удобно — но работа только с консолью. Если разработка идёт не в vim (бррр), то не годится.
2. Вывод напрямую в framebuffer. Т.е. linux попытается выводить изображение на экран телефона. Скорее всего — не заработает (дисплей уже оккупирован работающим андроидом), у меня это приводило даже к перегрузке телефона.
3. X11. Подробности мне писать про иксы лень, отправлю в википедию; вкратце — передаёт графику по сети, но не картинками, как в VNC/RDP, а по своему протоколу, а рендеринг уже происходит на эндпойнте. Можно заморочиться и запустить x-server, но с ним много возни, пропускаем.
4. Собственно, VNC. Самый изи, просто коннектимся любым vnc-клиентом на адрес телефона и тут же наблюдаем рабочий стол нашего debian:
Удалённый доступ — он и есть удалённый доступ. Работаем, как работаем, ставим весь нужный софт. Софт, естественно, должен иметься под архитектуру процессора телефона, но в линуксе, к счастью, с этим проблем нет (и это в линуксе одна из немногих вещей, о которых так можно сказать).
Понятно, что соединяться надо откуда-то. Клиента VNC можно запустить или с любого другого сетевого устройства, имеющего доступ к сети телефона, или непосредственно на самом телефоне. В этом случае сам телефон и будет дисплеем переносного рабочего места: технически, так можно работать (воткнув мышь и клавиатуру через переходник, либо через bluetooth), но на практике глаза вытекут сразу же (ну с планшетом, возможно, ещё туда-сюда будет).
Можно ли присоединить к телефону монитор?
Вообще — да, можно. Некоторые модели планшетов и телефонов умели выводить сигнал в HDMI, опять же через переходник. Некоторые, кажется, умеют выводить изображение через USB-C. Мой телефон, увы, ни того, ни другого не умеет, так что для меня остаётся только вариант с терминальным подключением по сети.

Но главное — рабочая среда на телефоне развёрнута и работает.
Если это можно назвать работой =) PHPStorm на Snapdragon 820 запускается пару минут, а индексация проекта выполняется минут десять (против одной минуты на десктопе). Но с готовым индексом работать становится можно, а если включить Power Save Mode (выключающий ресурсоёмкую подсветку и проверки на лету) — то даже с условным комфортом. Ввод не тормозит, автодополнение появляется всего лишь с секундной задержкой. Лет пятнадцать назад такой кодинг был вполне в пределах нормы. Хотя надо понимать, что Snapdragon 820 — очень не новый чип, актуальные топы выдают производительность где-то вдвое выше.
Жрёт ли такая работа батарею? Ещё как жрёт; по сути остаётся только беспроводной вариант работы с телефоном, потому что порт будет постоянно занят зарядкой.
...вот так компьютерные задроты веселятся на карантине.
Немного продолжу вчерашнюю тему с рабочим местом на телефоне: оказалось, что если запускать vnc-клиента на самом телефоне, то скорость работы становится неотличима от работы на не очень шустром десктопе. Да, ресурсоёмкие процессы выполняются долго, но отзывчивость вполне себе терпимая.
Значит основной лаг — в скорости сети. А что, если всё-таки заменить vnc на x11?
Ставлю на ноут Xming (реализация x-сервера под винды), в настройках Linux Deploy переключаю графическую подсистему на X11, в настройках указываю адрес ноутбука.
В идеале, должно заработать сразу, на практике так никогда не бывает. В логе Xming появляются записи client 4 rejected from IP <IP телефона>, гуглю, обнаруживая, что по умолчанию сервер работает с контролем доступа. Перенастраиваю, перезапускаю, voila:
Работает это, мягко говоря, странно: сама концепция иксов в том, что сервер, работающий, как приложение одной ОС, рисует то, что передаёт ему другая ОС. Это не виртуалка, это не удалённый доступ, это как бы вынесенный вовне чужой интерфейс. При этом, в зависимости от настроек, "чужие" линуксовые окна могут рисоваться как внутри родительского окна x-сервера, так и вне оного, прямо вперемешку с окнами виндовых программ.
Что касается скорости работы в таком режиме: это однозначно лучше, чем с удалённым VNC (но хуже, чем с локальным). Отрисовка тяжёлых окон всё ещё лагает (особенно видно при скролле страницы в браузере), но отзывчивость ввода куда как выше. Работать можно, хотя и не очень комфортно.
Не удивляйтесь, что последние посты почти сплошь про разработку — на самоизоляции я стал работать гораздо больше, потому что тратить время всё равно больше не на что. Впрочем, я уже придумал, чем это нудное айтишное нытьё разбавить, но это чуть позже.
А сейчас — ещё немного технофашизма.

Кажется, на первом курсе мы с другом Васей обсуждали одновременно пришедшую нам в головы мысль: а чего это мы в каждой программе пишем один и тот же код снова и снова? Вот бы было замечательно разобрать код на "кирпичики", а потом уже из этих "кирпичиков" по быстрому собирать новую программу!
Так, подобно Блезу Паскалю, в детском возрасте переоткрывшему Евклидову геометрию, двое диких студентов перепридумали компонентные фреймворки.
Безусловно, тогда уже существовали и VCL и MFC, да и более простые "кирпичные свалки", распространяемые в виде собранной в одну кодовую портянку копипасты, но это всё на нас обрушилось позже. И, наверное, хорошо, что так — это приучило меня видеть чуть глубже.

Сейчас создавая любое мало-мальски серьёзное приложение, ты уже не пишешь всё с нуля. Ты опираешься на огромные библиотеки, созданные предыдущими поколениями разработчиков, да и пишешь уже не на чистом языке, а, по сути, на языке фреймворка. Это не хорошо и не плохо, это естественное развитие событий. Хвала Open Source: любой достаточно продвинутый программист может не только использовать чужую работу, но и поделиться своей разработкой на благо идущих за ним. Ни за деньги, ни за славу, а просто потому, что может.
И вот тут иногда возникают парадоксальные ситуации.

Например, в процессе решения задачи, я написал какой-то очень полезный и удобный инструмент. Я вижу, что он может пригодиться много кому, и если я принимаю решение выложить его в паблик, то я должен:
— Написать к нему документацию и примеры;
— Очень желательно — написать к нему тесты;
— Ещё более желательно — описать конфиги для интеграции с пакетными менеджерами, вроде composer/npm;
— Чтобы не было стыдно перед пацанами — привести код в соответствие с принятыми на текущий момент стандартами;
— Чтобы мой инструмент не потерялся в пучинах гитхаба — пойти на профильные ресурсы и рассказать там, желательно хорошо рассказать а не в формате "я сделяль".

Это интересно и весело, когда ты делаешь первый-второй раз, ну там опыт и всё такое. Потом это воспринимается как... ну не то, чтоб рутина, но уже не так радужно.
Затем тебе нужно следить за твоим репозиторием: править в соответствии с новыми стандартами, реагировать на жалобы, по сто раз объяснять одно и то же новичкам, не читающим документацию, принимать критику и пулл-реквесты, добавляющие нужную кому-то фичу, но ломающую совместимость... Список далеко не полный, но сводится всё к тому, что ты изначально планировал совершить очень благое деяние потратив день-два-неделю максимум, а в результате ресурсов уходит на порядок больше.
Это, конечно, не жалоба — открытый код на то и открытый, что ты в любой момент можешь сказать "я устал, я ухожу", а твою работу — если она нужна кому-то — подхватят, и будут дорабатывать другие люди. Это прекрасная вещь!
Но у неё есть и тёмная-тёмная сторона.
Иногда, в поисках стороннего решения какой-либо задачи, натыкаешься на компонент или библиотеку, которая, вроде бы, решает проблему. Но — разработчик забросил детище много лет назад, забил на интеграцию присылаемых патчей, а список нерешённых тикетов перевалил за несколько сотен. И хотя форков у компонента больше тысячи, какой из них актуальный — понять невозможно, как раз из-за их числа. Скорее всего, никакой не актуален: разработчик клонирует репу, вносит исправление, нужное только ему, и, в лучшем случае, кидает патч в исходный репозиторий (где тот и погибает в забвении).
Хм, раз никто не сделал ультимативный форк на все времена, возможно мне следует этим заняться? Задача не выглядит нерешаемой, нужно всего лишь вникнуть в чужой код на том же уровне, что был у первоначальных создателей, взять все несколько сотен накопившихся патчей, начать вливать их, следя, чтоб ничего не конфликтовало и не ломало, писать примеры, документацию, тесты, интеграции...
А это уже не веселье, это недели, а то и месяцы серьёзной работы, за которую мне никто не заплатит. Так что, наверное, я сделаю две тысячи первый форк, внесу туда только нужные мне исправления и никому не скажу о том, что я сделал.
Ехал сейчас в такси, водила при посадке с извинениями спросил пропуск. Да, мол, понимаю, что это незаконно, да, понимаю, что глупо, но если не спрошу, то агрегатор меня отключит.
И я, понимая, что это незаконно и что это глупо, показал ему пропуск, сделанный как раз на такой случай.
Конечно, идеально правильный вариант борьбы с навязываемой подобным образом незаконной идиотией — бунт и игнор на всех уровнях. Но если один уровень прогибается, согласившись исполнить требование — рвётся вся цепочка. Коготок увяз — всей птичке пропасть.
Однако: из четырех сегодняшних поездок один таксист удовлетворился устным подтверждением наличия пропуска. Мол, ему лень.
Лень и саботаж — второй способ борьбы с навязываемой идиотией.
wheresWaldo_2020_001.png
20 MB
Эпическо-порнографическое панно "Найди Уолдо" за авторством художника Fuckit.
Разглядывать интересно из-за большого количества тематических отсылок, многие из которых угадать и понять можно, только будучи королём задротов.