Печальное горе: сдох основной ноут.
Не рабочий, которым я себе и вам полоскал мозги некоторое время назад, а тот, другой. Точную причину поломки я определить не могу, но если рассуждать логически — это выход из строя видеокарты.
Сначала ноут пару раз выключился по перегреву, разборка обнаружила, что не вращается одна из турбинок СО. После чистки и сборки работать ноут уже не захотел — питание включает, а видеосигнала ни на каком выходе нет. Зная (по собственному опыту, в том числе) как замечательно видеочипы переносят перегрев, я и предполагаю эту причину.
Замена материнской платы выльется где-то в полтос, что эквивалентно амортизационной стоимости ноутбука. С ремонтными организациями в текущей обстановке тоже не очень понятно.
Ноут использовался в качестве стационарной машины, для игр в том числе. Какое-то время я, конечно, перебьюсь на втором нубуке, но мне очень хочется продолжать резать кубы в Beat Saber (на самоизоляции это единственная реальная нагрузка, которую я мог организовать). Значит, надо всё-таки собирать системник.
А для этого время сейчас самое неудачное. Не только по деньгам (хотя и по деньгам тоже). Если уж собирать систему, то такую, чтоб надолго хватило. А это лучше всего делать где-то в середине очередного витка развития технологий: предыдущее поколение железок уже неинтересно в плане долгой жизни, а новое поколение уже не так дорого и ненадёжно, как на старте продаж.
Для меня такой виток — новые карты nVidia (вот-вот должны объявить что-то про гипотетическую 30xx серию) и то, чем Intel сможет ответить AMD. Плюс, я жду выхода очередного поколения консолей: на пять лет следующих лет все игроделы будут рассчитывать на их мощности, а значит и железо перкарен останется на эти годы более-менее актуальным.
Но это всё — ещё через полгода минимум. Буду думать.
Не рабочий, которым я себе и вам полоскал мозги некоторое время назад, а тот, другой. Точную причину поломки я определить не могу, но если рассуждать логически — это выход из строя видеокарты.
Сначала ноут пару раз выключился по перегреву, разборка обнаружила, что не вращается одна из турбинок СО. После чистки и сборки работать ноут уже не захотел — питание включает, а видеосигнала ни на каком выходе нет. Зная (по собственному опыту, в том числе) как замечательно видеочипы переносят перегрев, я и предполагаю эту причину.
Замена материнской платы выльется где-то в полтос, что эквивалентно амортизационной стоимости ноутбука. С ремонтными организациями в текущей обстановке тоже не очень понятно.
Ноут использовался в качестве стационарной машины, для игр в том числе. Какое-то время я, конечно, перебьюсь на втором нубуке, но мне очень хочется продолжать резать кубы в 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, по первым прикидкам этого хватает даже с некоторым запасом. Так что буду шерстить железячные сайты и подбирать себе конфиг; а если кому-то есть, чем поделиться по теме — велкам в личку.
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:
Программно для работы мне минимально необходимы: среда разработки, лучше всего 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 можно запустить или с любого другого сетевого устройства, имеющего доступ к сети телефона, или непосредственно на самом телефоне. В этом случае сам телефон и будет дисплеем переносного рабочего места: технически, так можно работать (воткнув мышь и клавиатуру через переходник, либо через bluetooth), но на практике глаза вытекут сразу же (ну с планшетом, возможно, ещё туда-сюда будет).
Можно ли присоединить к телефону монитор?
Вообще — да, можно. Некоторые модели планшетов и телефонов умели выводить сигнал в HDMI, опять же через переходник. Некоторые, кажется, умеют выводить изображение через USB-C. Мой телефон, увы, ни того, ни другого не умеет, так что для меня остаётся только вариант с терминальным подключением по сети.
Но главное — рабочая среда на телефоне развёрнута и работает.
Если это можно назвать работой =) PHPStorm на Snapdragon 820 запускается пару минут, а индексация проекта выполняется минут десять (против одной минуты на десктопе). Но с готовым индексом работать становится можно, а если включить Power Save Mode (выключающий ресурсоёмкую подсветку и проверки на лету) — то даже с условным комфортом. Ввод не тормозит, автодополнение появляется всего лишь с секундной задержкой. Лет пятнадцать назад такой кодинг был вполне в пределах нормы. Хотя надо понимать, что Snapdragon 820 — очень не новый чип, актуальные топы выдают производительность где-то вдвое выше.
Жрёт ли такая работа батарею? Ещё как жрёт; по сути остаётся только беспроводной вариант работы с телефоном, потому что порт будет постоянно занят зарядкой.
Немного продолжу вчерашнюю тему с рабочим местом на телефоне: оказалось, что если запускать vnc-клиента на самом телефоне, то скорость работы становится неотличима от работы на не очень шустром десктопе. Да, ресурсоёмкие процессы выполняются долго, но отзывчивость вполне себе терпимая.
Значит основной лаг — в скорости сети. А что, если всё-таки заменить vnc на x11?
Ставлю на ноут Xming (реализация x-сервера под винды), в настройках Linux Deploy переключаю графическую подсистему на X11, в настройках указываю адрес ноутбука.
В идеале, должно заработать сразу, на практике так никогда не бывает. В логе Xming появляются записи
Значит основной лаг — в скорости сети. А что, если всё-таки заменить vnc на x11?
Ставлю на ноут Xming (реализация x-сервера под винды), в настройках Linux Deploy переключаю графическую подсистему на X11, в настройках указываю адрес ноутбука.
В идеале, должно заработать сразу, на практике так никогда не бывает. В логе Xming появляются записи
client 4 rejected from IP <IP телефона>
, гуглю, обнаруживая, что по умолчанию сервер работает с контролем доступа. Перенастраиваю, перезапускаю, voila:Работает это, мягко говоря, странно: сама концепция иксов в том, что сервер, работающий, как приложение одной ОС, рисует то, что передаёт ему другая ОС. Это не виртуалка, это не удалённый доступ, это как бы вынесенный вовне чужой интерфейс. При этом, в зависимости от настроек, "чужие" линуксовые окна могут рисоваться как внутри родительского окна x-сервера, так и вне оного, прямо вперемешку с окнами виндовых программ.
Что касается скорости работы в таком режиме: это однозначно лучше, чем с удалённым VNC (но хуже, чем с локальным). Отрисовка тяжёлых окон всё ещё лагает (особенно видно при скролле страницы в браузере), но отзывчивость ввода куда как выше. Работать можно, хотя и не очень комфортно.
Что касается скорости работы в таком режиме: это однозначно лучше, чем с удалённым VNC (но хуже, чем с локальным). Отрисовка тяжёлых окон всё ещё лагает (особенно видно при скролле страницы в браузере), но отзывчивость ввода куда как выше. Работать можно, хотя и не очень комфортно.
Не удивляйтесь, что последние посты почти сплошь про разработку — на самоизоляции я стал работать гораздо больше, потому что тратить время всё равно больше не на что. Впрочем, я уже придумал, чем это нудное айтишное нытьё разбавить, но это чуть позже.
А сейчас — ещё немного технофашизма.
Кажется, на первом курсе мы с другом Васей обсуждали одновременно пришедшую нам в головы мысль: а чего это мы в каждой программе пишем один и тот же код снова и снова? Вот бы было замечательно разобрать код на "кирпичики", а потом уже из этих "кирпичиков" по быстрому собирать новую программу!
Так, подобно Блезу Паскалю, в детском возрасте переоткрывшему Евклидову геометрию, двое диких студентов перепридумали компонентные фреймворки.
Безусловно, тогда уже существовали и VCL и MFC, да и более простые "кирпичные свалки", распространяемые в виде собранной в одну кодовую портянку копипасты, но это всё на нас обрушилось позже. И, наверное, хорошо, что так — это приучило меня видеть чуть глубже.
Сейчас создавая любое мало-мальски серьёзное приложение, ты уже не пишешь всё с нуля. Ты опираешься на огромные библиотеки, созданные предыдущими поколениями разработчиков, да и пишешь уже не на чистом языке, а, по сути, на языке фреймворка. Это не хорошо и не плохо, это естественное развитие событий. Хвала Open Source: любой достаточно продвинутый программист может не только использовать чужую работу, но и поделиться своей разработкой на благо идущих за ним. Ни за деньги, ни за славу, а просто потому, что может.
И вот тут иногда возникают парадоксальные ситуации.
Например, в процессе решения задачи, я написал какой-то очень полезный и удобный инструмент. Я вижу, что он может пригодиться много кому, и если я принимаю решение выложить его в паблик, то я должен:
— Написать к нему документацию и примеры;
— Очень желательно — написать к нему тесты;
— Ещё более желательно — описать конфиги для интеграции с пакетными менеджерами, вроде composer/npm;
— Чтобы не было стыдно перед пацанами — привести код в соответствие с принятыми на текущий момент стандартами;
— Чтобы мой инструмент не потерялся в пучинах гитхаба — пойти на профильные ресурсы и рассказать там, желательно хорошо рассказать а не в формате "я сделяль".
Это интересно и весело, когда ты делаешь первый-второй раз, ну там опыт и всё такое. Потом это воспринимается как... ну не то, чтоб рутина, но уже не так радужно.
Затем тебе нужно следить за твоим репозиторием: править в соответствии с новыми стандартами, реагировать на жалобы, по сто раз объяснять одно и то же новичкам, не читающим документацию, принимать критику и пулл-реквесты, добавляющие нужную кому-то фичу, но ломающую совместимость... Список далеко не полный, но сводится всё к тому, что ты изначально планировал совершить очень благое деяние потратив день-два-неделю максимум, а в результате ресурсов уходит на порядок больше.
Это, конечно, не жалоба — открытый код на то и открытый, что ты в любой момент можешь сказать "я устал, я ухожу", а твою работу — если она нужна кому-то — подхватят, и будут дорабатывать другие люди. Это прекрасная вещь!
А сейчас — ещё немного технофашизма.
Кажется, на первом курсе мы с другом Васей обсуждали одновременно пришедшую нам в головы мысль: а чего это мы в каждой программе пишем один и тот же код снова и снова? Вот бы было замечательно разобрать код на "кирпичики", а потом уже из этих "кирпичиков" по быстрому собирать новую программу!
Так, подобно Блезу Паскалю, в детском возрасте переоткрывшему Евклидову геометрию, двое диких студентов перепридумали компонентные фреймворки.
Безусловно, тогда уже существовали и VCL и MFC, да и более простые "кирпичные свалки", распространяемые в виде собранной в одну кодовую портянку копипасты, но это всё на нас обрушилось позже. И, наверное, хорошо, что так — это приучило меня видеть чуть глубже.
Сейчас создавая любое мало-мальски серьёзное приложение, ты уже не пишешь всё с нуля. Ты опираешься на огромные библиотеки, созданные предыдущими поколениями разработчиков, да и пишешь уже не на чистом языке, а, по сути, на языке фреймворка. Это не хорошо и не плохо, это естественное развитие событий. Хвала Open Source: любой достаточно продвинутый программист может не только использовать чужую работу, но и поделиться своей разработкой на благо идущих за ним. Ни за деньги, ни за славу, а просто потому, что может.
И вот тут иногда возникают парадоксальные ситуации.
Например, в процессе решения задачи, я написал какой-то очень полезный и удобный инструмент. Я вижу, что он может пригодиться много кому, и если я принимаю решение выложить его в паблик, то я должен:
— Написать к нему документацию и примеры;
— Очень желательно — написать к нему тесты;
— Ещё более желательно — описать конфиги для интеграции с пакетными менеджерами, вроде composer/npm;
— Чтобы не было стыдно перед пацанами — привести код в соответствие с принятыми на текущий момент стандартами;
— Чтобы мой инструмент не потерялся в пучинах гитхаба — пойти на профильные ресурсы и рассказать там, желательно хорошо рассказать а не в формате "я сделяль".
Это интересно и весело, когда ты делаешь первый-второй раз, ну там опыт и всё такое. Потом это воспринимается как... ну не то, чтоб рутина, но уже не так радужно.
Затем тебе нужно следить за твоим репозиторием: править в соответствии с новыми стандартами, реагировать на жалобы, по сто раз объяснять одно и то же новичкам, не читающим документацию, принимать критику и пулл-реквесты, добавляющие нужную кому-то фичу, но ломающую совместимость... Список далеко не полный, но сводится всё к тому, что ты изначально планировал совершить очень благое деяние потратив день-два-неделю максимум, а в результате ресурсов уходит на порядок больше.
Это, конечно, не жалоба — открытый код на то и открытый, что ты в любой момент можешь сказать "я устал, я ухожу", а твою работу — если она нужна кому-то — подхватят, и будут дорабатывать другие люди. Это прекрасная вещь!
Но у неё есть и тёмная-тёмная сторона.
Иногда, в поисках стороннего решения какой-либо задачи, натыкаешься на компонент или библиотеку, которая, вроде бы, решает проблему. Но — разработчик забросил детище много лет назад, забил на интеграцию присылаемых патчей, а список нерешённых тикетов перевалил за несколько сотен. И хотя форков у компонента больше тысячи, какой из них актуальный — понять невозможно, как раз из-за их числа. Скорее всего, никакой не актуален: разработчик клонирует репу, вносит исправление, нужное только ему, и, в лучшем случае, кидает патч в исходный репозиторий (где тот и погибает в забвении).
Хм, раз никто не сделал ультимативный форк на все времена, возможно мне следует этим заняться? Задача не выглядит нерешаемой, нужно всего лишь вникнуть в чужой код на том же уровне, что был у первоначальных создателей, взять все несколько сотен накопившихся патчей, начать вливать их, следя, чтоб ничего не конфликтовало и не ломало, писать примеры, документацию, тесты, интеграции...
А это уже не веселье, это недели, а то и месяцы серьёзной работы, за которую мне никто не заплатит. Так что, наверное, я сделаю две тысячи первый форк, внесу туда только нужные мне исправления и никому не скажу о том, что я сделал.
Иногда, в поисках стороннего решения какой-либо задачи, натыкаешься на компонент или библиотеку, которая, вроде бы, решает проблему. Но — разработчик забросил детище много лет назад, забил на интеграцию присылаемых патчей, а список нерешённых тикетов перевалил за несколько сотен. И хотя форков у компонента больше тысячи, какой из них актуальный — понять невозможно, как раз из-за их числа. Скорее всего, никакой не актуален: разработчик клонирует репу, вносит исправление, нужное только ему, и, в лучшем случае, кидает патч в исходный репозиторий (где тот и погибает в забвении).
Хм, раз никто не сделал ультимативный форк на все времена, возможно мне следует этим заняться? Задача не выглядит нерешаемой, нужно всего лишь вникнуть в чужой код на том же уровне, что был у первоначальных создателей, взять все несколько сотен накопившихся патчей, начать вливать их, следя, чтоб ничего не конфликтовало и не ломало, писать примеры, документацию, тесты, интеграции...
А это уже не веселье, это недели, а то и месяцы серьёзной работы, за которую мне никто не заплатит. Так что, наверное, я сделаю две тысячи первый форк, внесу туда только нужные мне исправления и никому не скажу о том, что я сделал.
Трудоголизм и прокрастинация
Придумал, как собрать себе рабочий компьютер, не дожидаясь выхода нового поколения железок. Смотрите, каких новинок стоит ждать: 1) GPU на архитектуре Ampere. Ждём увеличенной производительности рейтрейсинга (со всем остальным прекрасно справляется и поколение…
Если думаете, что 200k на новый сетап компа — это оверкилл и мажорство, то перестаньте так думать. Сейчас всё дорого, одна только дешманская клавиатура легко может 360к стоить: пруф.
katalog-rek.ru
Каталог Клавиатура малогабаритная КМГ-84М
огромный каталог, где не последняя роль отведена разделу Клавиатура малогабаритная КМГ-84М
Ехал сейчас в такси, водила при посадке с извинениями спросил пропуск. Да, мол, понимаю, что это незаконно, да, понимаю, что глупо, но если не спрошу, то агрегатор меня отключит.
И я, понимая, что это незаконно и что это глупо, показал ему пропуск, сделанный как раз на такой случай.
Конечно, идеально правильный вариант борьбы с навязываемой подобным образом незаконной идиотией — бунт и игнор на всех уровнях. Но если один уровень прогибается, согласившись исполнить требование — рвётся вся цепочка. Коготок увяз — всей птичке пропасть.
И я, понимая, что это незаконно и что это глупо, показал ему пропуск, сделанный как раз на такой случай.
Конечно, идеально правильный вариант борьбы с навязываемой подобным образом незаконной идиотией — бунт и игнор на всех уровнях. Но если один уровень прогибается, согласившись исполнить требование — рвётся вся цепочка. Коготок увяз — всей птичке пропасть.
Однако: из четырех сегодняшних поездок один таксист удовлетворился устным подтверждением наличия пропуска. Мол, ему лень.
Лень и саботаж — второй способ борьбы с навязываемой идиотией.
Лень и саботаж — второй способ борьбы с навязываемой идиотией.
wheresWaldo_2020_001.png
20 MB
Эпическо-порнографическое панно "Найди Уолдо" за авторством художника Fuckit.
Разглядывать интересно из-за большого количества тематических отсылок, многие из которых угадать и понять можно, только будучи королём задротов.
Разглядывать интересно из-за большого количества тематических отсылок, многие из которых угадать и понять можно, только будучи королём задротов.