Иногда неработающий чат на сайте лучше, чем работающий.
Папа дал задание -- купить ему АКБ для машины. Я выбрал один магазин, но хотел уточнить кое-что. На сайте магазина был чат. Там отвечали. Состоялся примерно следующий диалог:
Я: Здрасьте, а вот у вас есть приём старых АКБ за скидку к новому. А АКБ от ИБП дополнительно примете? Чат: Конечно. А какой АКБ вас интересует? Я: Тюмень 64. Я: А сколько будет резерв храниться? Чат: А вы какой АКБ выбрали? Я: Тюмень 64. (жду) Я: Так что там со сроком хранения резерва? Чат: Так нужно понимать, о каком АКБ речь. Некоторые быстро разбирают, надолго не резервируем. Я: Я уже два раза написал название АКБ. Вам не пришло? Чат: Не пришло. Я: Ладно, ещё раз пишу, что речь про Тюмень-64. Я: Не понял, у вас срок резерва различается для разных моделей? (больше ни одного сообщения мне не прислали)
Мне это надоело, и я заказал в другом магазине. Они, к сожалению, ИБПшные АКБ не приняли...
Если у нас идут какие-нибудь политические или экономические переговоры, то договариваться напрямую не всегда возможно, и тогда без посредников не обойтись. Но в такие игры играют на очень высоком уровне. Обычные люди с этим не сталкиваются.
А сталкиваются они с посредничеством при оказании услуг. Вы хотите сделать Х, но для этого надо хорошо понимать, как это делается, договариваться с пятью контрагентами и за всем следить. Вы или не знаете нюансов, или не хотите с ними разбираться. Вы договариваетесь только с одним человеком, который делает всё "под ключ". Вы получаете Х, все танцуют?
Есть минусы. Посредник берёт за свою работу деньги. И вы, как не специалист, даже не знаете, вменяемые он деньги берёт или нет. Часто бывает, что невменяемые, например вы платите 2x. Результат работ тоже может оказаться неожиданным.
Получается, что лучше всё делать самому? Но в этом случае оплата идёт временем на изучение и ошибками из-за незнания. Виноваты, однако, в этом будете только вы. (хотя некоторым может быть приятнее быть обманутыми, чем принять, что они виноваты сами)
Посредники существуют, потому что на их работу есть спрос. Потому что самостоятельное решение вопросов не всегда можно себе позволить. Потому что минусы посредничества в некоторых случаях перекрываются плюсами. Так что можно ругаться на них или косо смотреть, но они будут продолжать делать своё дело.
***
Но откуда посредники вообще берутся? Они берутся из тех, кто когда-то мог себе позволить разобраться самостоятельно. Вот пример с риэлторами, продажа и обмен квартир на вторичном рынке. История, которую мне рассказали.
Мужик сначала сам продал квартиру, без риэлтора. Получилось. Потом помог другану продать. Потом уговорил другого другана обменять на лучшую. И вот -- он уже начинающий риэлтор. А через пару лет он открывает агентство.
Так что, если есть возможность, то надо решать вопросы напрямую. Это не только выгодно и развивательно, но и может помочь в будущем.
Считаю, что сейчас звонить без особых причин -- уже неприлично. Всегда можно написать в какой-нибудь чат. Да, это работает не всегда. Иногда быстрее рабочий вопрос обсудить по телефону. Иногда человек не отвечает в чате. Иногда требуется "онлайн"-обсуждение происходящих процессов.
Но в большинстве случаев для решения вопроса достаточно чата.
Кроме того, в рабочие чаты я смотрю всё время, а вот телефон может быть неизвестно где.
Я уже жаловался на коллег, которым приходится звонить, но есть и обратная ситуация. Некоторые коллеги наоборот -- сразу звонят, хотя могли бы написать в чате. Но это не было бы серьёзной проблемой, если бы после неответа они писали в чате, чего хотят. Но они не пишут. Позвонил-позвонил (через телеграм!), я не ответил. И молчание. Приходится перезванивать, чтобы выяснить, в чём там было дело.
При упаковке можно поставить галочку "непрерывный". Это позволит немного уменьшить размер архива. Велик ли эффект от этой галочки, я точно не знаю. Но я знаю, что у неё есть недостаток.
Чтобы распаковать файл из середины такого архива, надо распаковать все предыдущие файлы! Конечно, архиватор берёт всю работу на себя. Он распаковывает файлы и сразу выбрасывает, а нам отдаёт только нужный. Но эта предварительная распаковка занимает время.
Тут, конечно, надо смотреть, что за файлы, сколько их, из чего они состоят. Может быть, они по отдельности никому и не понадобятся. А может быть, размер архива настолько небольшой, что предварительная распаковка не занимает много времени.
Но зачем думать и смотреть, когда можно просто не ставить эту галочку? Если занимаемое место критично, лучше уж увеличить степень сжатия. А галочку не ставьте.
Да, предварительная распаковка это, как правило, несколько секунд. Но -- это неудобство, которое вы кому-то создаёте. Возможно, самому себе из будущего.
Не знаю, часто ли это присутствует в списке преимуществ, но кто-то где-то это упоминал, и я видел краем глаза.
Что типа если коробка передач механическая, то вам приходится постоянно дёргать ручку, и поэтому вам тяжелее заснуть за рулём.
Но мне кажется, что это не так. В смысле, ручку приходится дёргать, это правда. Но не спать это не помогает. Почему?
Потому что передачи переключаешь при езде по городу. А заснуть в городе сложновато по многим другим причинам. Нет, на меня пару раз сонливость нападала и в городе, но это случалось крайне редко.
Чаще сонливость возникает на трассе, где всё монотонно и ничего не происходит. Но. Скорость езды при этом постоянна, и никакие переключения не требуются. Вот и получается, что МКПП не помогает не засыпать.
Есть, наверное, какое-то слово для обозначения человека, который восстанавливает старую технику. Инженер-археолог?
В общем, надо было запустить комп примерно 2006 года. Это не супер-старый комп, но уже неактуальный. Он вроде как на днях даже работал, но не при нас.
Ну а сейчас комп не стартует. Меняли БП -- не стартует всё равно. А сколько гудков он издает, а? Нисколько. Нету PC-спикера.
Ладно, у нас полно старых ненужных компов, берём с полки какой-то комп примерно такого же года, достаём писи-спикер и... всё.
В нерабочей материнской плате нету для него раз'ёма! Спикер должен являться частью раз'ёма F_PANEL, который везде разный, но прямо на платах всегда написана распиновка, чтобы можно было понять, что делать. И на этой плате не было пометки SPEAK.
Отсутствие выхода на спикер меня удивило. Во-первых, даже на платах 2024 года с этим всё в порядке. Я отцу комп собирал, там выход был. Во-вторых, технология эта, конечно, полностью устаревшая, но необходимая. Кто-то должен сообщать о неисправностях в тот момент, когда в компьютере ещё ничего не работает. Кто, если не писи-спикер?
Вариантов была масса: могла вылететь сама мать, проц, память. Заниматься диагностикой всего этого очень не хотелось. А нужен нам был не конкретный комп, а конкретная модель мат. платы, совместимая с каким-то там оборудованием. И о чудо, у нас на полке был ещё один такой же комп. И он оказался рабочий.
Нерабочий поставили на полку, а рабочий пустили в работу.
Есть типовое название книжек, в первую очередь -- учебных пособий. "Современный Х". Например, "Современная палеонтология" или "Современные методы управления самокатом". Когда видишь такие заголовки, начинаешь думать -- а насколько современные-то?
Первая проблема. До учебных пособий информация доходит с опозданием. Поэтому если книжка о чём-то современном, то это, скорее всего, уже устаревшее.
Вторая проблема -- по названию непонятно, насколько современной считал информацию автор. Надо книжку взять, открыть, посмотреть год издания. Но год издания -- лишь косвенный признак. Это может быть 15-е издание. Можно посмотреть предисловие и пометку к номеру издания. Например, издание 15-е, исправленное и дополненное. Но насколько осовременил автор издание, непонятно. Можно ориентироваться на дату первого издания, но вычислить её не так-то просто.
Третья проблема, на самом деле, главная. Слово "современный" ничего не добавляет к смыслу названия. Если авторы делают учебное пособие, то они по крайней мере собираются выдавать актуальный материал, а не исторический. Если же они намеренно выдают исторический материал, то это уже относится к области истории, и вот как раз такое надо помечать, например, "Развитие методов управления самокатами с XV по XVIII век".
В общем, если пишете учебник, то уберите слово "современный" из названия. Действительно современные вещи рассказывают на конференциях и в научных статьях. И только потом превращают в учебники.
Я починил постинг картинок на телегра.ф (при помощи стороннего хостинга), так что надеюсь наделать обзоров на всё, на что не наделал.
Симулятор тракториста и симулятор бомжа мы уже видели. Теперь у нас симулятор работы отдела ОТК. С конвейера сходит кукла, надо проверить, что она не проклятая. Удивительно, что при ошибке директор завода сразу тебе говорит, что ты ошибся. Если он и так знает, какие куклы плохие, то зачем нужен ОТК? И почему все остальные операции на заводе происходят без участия человека?
Симуляторы бывают разной степени реалистичности. Например, в аркадных симулятор реалистичность ставится на второй план, главное -- увлекательный геймплей. В учебных симуляторах увлекательность не нужна вообще, главное -- точное соответствие реальности.
Здесь мы видим что-то вроде третьей категории симуляторов. Геймплей не слишком аркадный, но реалистичность... отсутствует. Потому что это фантастический симулятор. Часть кукол будут иметь понятные дефекты типа отсутствия ноги (как она вообще стоит на конвейере?). Но часть дефектов... будут носить мистический характер. Когда кукла всё время за вами следит и сама ходит -- это ещё ладно. Но как вам такой дефект? При перевороте куклы экран становится чёрно-белым. Отлавливать такие уникальные дефекты сложновато, если не знать о них заранее. А каждый пропущенный дефект -- это штраф.
Игра короткая, состоит всего из пяти рабочих дней. И это хорошо, что она короткая, потому что если бы дней было 10, 100 -- играть было бы скучновато. Нас пытаются развлечь, каждый день добавляя новые правила для проверки кукол и новые задания, но всё-таки монотонная работа -- это не увлекательно. Есть другой полюс -- медитативность. Но чтобы монотонная работа стала медитативной -- нужно делать геймплей совершенно иначе.
Не весь геймплей состоит из проверки кукол. На заводе всё время что-то происходит, а кроме вас заняться проблемами больше некому. Благодаря различным неполадкам оборудования вы сможете попасть в служебные помещения завода и даже в подвал, который в 1000 раз больше, чем сборочный цех. А кто живёт в подвале... Скажем так, разработчикам действительно удалось сделать хоррор без скримеров и погонь, как они и обещали. Но из-за этого он получился недостаточно страшный.
Мало кто знает, но у этой игры есть продолжение, и оно называется MiSide.
Записываю, какой тренд я наблюдаю в мемах в последние месяцы (приблизительно с ноября 2024).
Появляются картинки из детских книжек, на картинках изображены животные, которые сидят за столом и пьют чай, или спят в кроватках, укрытые одеялом, или сидят перед камином, в общем, живут в своё удовольствие в сказочных домиках. И, конечно, у этих картинок есть подпись.
Как правило, подпись агрессивная и сообщает о том, что ничто не помешает зверюшке отдыхать. Вот примеры подписей: "Как же всё похуй" "Всеобъемлюще поебать" "Let me relax, i'll exist later"
Естественно, такие картинки играют на контрасте, потому что жёсткая надпись не сочетается со сказочной картинкой. И тем не менее... что стало причиной появления этих разных, но сходных по смыслу картинок? Наличие английской надписи не является строгим доказательством, но намекает, что это может быть общемировой тенденцией...
Гит позволяет указать при локальных коммитах любой емейл (там отдельно указывается ник автора и его емейл). Этот емейл никак не проверяется. Но если вы хотите, чтобы гитхаб считал коммиты вашими, то должен быть указан емейл из списка подтверждённых емейлов на аккаунте.
Честно говоря, не знаю... если какой-то перец укажет ваш емейл и начнёт орудовать на гитхабе, приплюсуют его к вашей статистике или нет. Может, ему откажут в пушах/PR? Но что я знаю точно, что если вы укажете не тот емейл при локальных коммитах, а потом сделаете пуш, то на главной странице вы ваши коммиты не увидите, они будут видны только в списке коммитов конкретного репозитория.
Моя проблема оказалась в том, что в одном из проектов у меня был указан не просто не тот емейл. У меня был указан вообще не емейл. В качестве емейла стояла просто строка zHz00. Почему -- загадка. Теперь у меня написано на главной, что коммитов я не делал, а в списке репозитория указано, что их делал некий zHz00, но не тот, который я. Добавить такую строку в качестве своего емейла на аккаунте я, конечно, не могу. Задним числом поменять емейлы коммитов, скорее всего, тоже.
Если вы знаете, как исправить эту ситуацию, сообщите, пожалуйста.
Меня тут спросили, какой мой любимый трек в Caves of Qud. А я не знаю. Какой нелюбимый -- вспомнил (Golgotha). А любимый? Стал переслушивать. И вот что понял.
Музыка в CoQ звучит на фоне постоянно. Поэтому события, в которых ты участвуешь, привязываются к музыке. Когда её слушаешь -- получаешь вьетнамские флешбеки. CoQ -- сложная игра, поэтому под каждый трек у меня была какая-нибудь жесть. Даже под мирные треки деревень я испытывал проблемы, например, пытался что-то нароллить у торговца, а оно не роллилось.
В общем, не для расслабления эта музыка. А для размышлений о тщете всего сущего.
Я уже не раз писал про curses, но зачем вообще мне понадобилась эта библиотека? Для нетерпеливых сразу ссылка: github.com/zHz00/KGBC
Я играю в Kittens Game, там у меня цивилизация котят, у них разные фабрики-заводы-газеты-параходы, и всё это надо строить. При этом следующая постройка стоит на 15% больше предыдущей. А иногда не на 15%. Есть ещё один нюанс: некоторые ресурсы, из которых собирают постройки, имеют "ёмкость". Допустим, уран имеет ёмкость 10000. Если следующий ускоритель стоит 11000, то хоть ты тресни, ты его не построишь, потому что не сможешь накопить 11000 урана. Сначала надо поднять ёмкость урана на 1000, для чего надо построить новый реактор. Он не требует урана, но он требует титана. И стоит на 15% больше предыдущего реактора. Есть ли у меня достаточная ёмкость титана, чтобы построить следующий реактор? Вопрос.
(читать дальше) Передо мной постоянно возникало две задачи: 1. Узнать, сколько ещё я могу собрать зданий заданного типа до тех пор, пока не упрусь в предел ёмкости по какому-нибудь ресурсу. А постройки обычно строятся не из одного ресурса, а из нескольких, поэтому упереться я могу в один ресурс, а могу в другой. В процессе игры блокирующий ресурс может меняться. 2. Узнать, сколько всего мне понадобится ресурсов, чтобы собрать все здания от текущего до последнего. Если не хватает, то сколько я могу собрать зданий с текущими ресурсами?
Сначала я использовал эксель. Но каждый раз делать таблицу под новую постройку утомительно. Сделать же таблицы под все постройки -- это долго, потому что построек несколько десятков.
Мне пришла идея сделать универсальную программу, которая считает все эти постройки и выдаёт мне то, что надо. Вопрос был -- на чём это написать? Конечно, на питоне. Но на питоне можно написать по-разному. -- Графическое приложение на wxWidgets (нужно учить wxWidgets) -- Текстовое приложение на curses (нужно учить curses) -- Веб приложение на flask+AJAX (нужно разбираться с какими-то веб-технологиями)
Ну и я выбрал текстовое приложение на curses. Было ли это ошибкой? Не знаю. Знакомые веб-программисты топили за веб-вариант. По понятным причинам. Но я далёк от веба. И не хочу к нему приближаться.
Так или иначе, приблуду я сделал, и постоянно ей пользуюсь. Показываю приблуду и вам.
Итак, первое, что у меня есть -- это защита от спойлеров:
При каждом старте вам будет выдаваться предупреждение о том, что программу надо выключить. Чтобы его закрыть, надо нажать F4, а не что-нибудь ещё. Предупреждение можно отключить, и это запоминается, но чтобы его отключить, надо нажать F7. Надо было сделать, чтобы программа закрывалась при нажатии любой клавиши, кроме F4 и F7, но это было бы слишком злобно.
Далее отображается список построек. Я замазал большинство из них, чтобы не было спойлеров больше, чем на несколько часов игры (если вы запустите программу, то, конечно, там ничего замазано не будет):
Как видно, в программе есть несколько вкладок с постройками, и тут видна только первая. Это, конечно, замороченная система, когда надо нажимать буквы с контролом или альтом, чтобы выбрать постройку. Но вообще-то работает мышка (и на практике я пользуюсь только ей).
В игре есть развитая система скидок, поэтому увеличение стоимости следующей постройки может быть не 15%, а значительно меньше. Но эти скидки могут распространяться только на конкретную постройку или на группу построек. Для того, чтобы назначить скидки, надо выбрать вкладку Workshop. Тут, конечно, тоже всё замазано:
Скидки сохраняются в настроечном файле, поэтому их не надо выставлять каждый раз.
Ну ладно, кликнули мы по постройке или нажали клавишу, дальше что? Дальше -- таблица. Вот пример:
Таблицу можно вращать в обе стороны с тремя разными скоростями. И вращать её можно до самых 1.7e+308, потом будете видеть только inf и overflow. В верхней строке будет отображаться информация о включённых скидках. Тут, например, мы имеем скидку 1% к основанию показательной функции.
Чтобы посчитать общее число ресурсов, нужно выделить несколько построек. Для этого используется система, похожая на выделение нортон коммандера. Есть вторая система, использующая квадратные скобки. Их можно комбинировать. После выделения в нижней строке увидим сумму:
После того, как я написал эту программу, играть стало значительно приятнее. Есть и минусы. В KG некоторые ресурсы первичные, а некоторые производные. Моя программа не показывает пересчёт производных ресурсов в первичные. Сделать такую функцию не так-то просто! Дело в том, что преобразование идёт с определённым коэффициентом, и для различных производных ресурсов коэффициент тоже получается различным, зависящим от нескольких факторов. Может быть, сделаю это в будущем.
Программа тестирована на python 3.8 (windows 7 x64, windows 8 x32) а также на python 3.11 (Debian 12, MX Linux 23.4).
P.S. А ещё я составил детальное описание того, как работает каждая скидка. Я не уверен, что программой воспользуется хотя бы один человек, кроме меня, а уж справку вообще никто не прочтёт. И тем не менее, я это сделал.
В Перекрёстке подхожу к кассе самообслуживания. Кура не считывается по штрих-коду -- не реагирует. Ищу кнопку "ввести номер", а её нет! Замялся.
Подходит кассир, тычет в правый нижний угол, где никакой кнопки нет. Открывается окно ввода штрих-кода! (лайфхак!)
Начинаю вводить и вижу, что не только сам штрих-код затёрт, но и последние цифры видны плоховато. Пытаюсь угадать, на что похожи ошмётки цифр. С трепетом ввожу последнюю и... "Куриное филе, 892 г".
Кассир кричит ура, я кричу ура, все танцуют.
А дома я стал изучать чек и упаковку. В магазине я опасался, что получу сообщение "товар не найден", но опасаться надо было не этого. Я заметил, что в чеке указана масса 892 грамма, а на упаковке 852 грамма. Я обсчитал себя на 40 грамм, но почему это стало возможным?
Оказалось, что последние цифры штрих-кода были похожи на 892, что я и ввёл. Но на самом деле это были 852. Я посмотрел другие сохранившиеся упаковки -- для весового товара действительно последние цифры совпадают с массой в граммах. Ничего не зашифровано. Но.
Вообще-то, есть ещё контрольная цифра. Последняя. То есть, вес идёт не в последних цифрах, а в предпоследних, допустим, 00892X. И цифра должна быть правильная.
Я нашёл в интернете онлайн-проверку штрих-кодов и стал подбирать контрольную цифру для обоих весов. Она была разная.
Тут два варианта. Либо я случайно угадал последнюю цифру (шанс чего 10%), либо в Перекрёстке контрольную цифру не проверяют...
Вообще, это надо в пост про curses, и я туда добавлю, но сейчас там никто не прочитает.
В винде мы привыкли, что можно определить любое сочетание клавиш. В графическом режиме линукса, по-видимому, тоже. Но если мы работаем в терминале, то всё не так. Я много поел говна, пока разбирался с сочетаниями с альтом, с хоум-эндом, с задержкой после нажатия эскейпа (а в винде всё тоже самое работает без проблем, тоже в терминале).
Но когда я решил провести углублённое тестирование, то обнаружил ещё две вещи.
1. Tab невозможно отличить от Ctrl+i. Потому что они оба возвращают один код. (это поведение присутствует и в винде, как выяснилось) 2. Ctrl+M невозможно получить. Потому что когда нажимаешь Ctrl+M, в программе получаешь Ctrl+J. То же самое происходит и при нажатии Enter (поэтому различить Ctrl+J и Enter невозможно тоже).
В некоторых терминалах поведение отличается. Там нажатие энтера генерирует Ctrl+M. Тогда не получится сгенерировать Ctrl+J, поскольку его нажатие будет генерировать Ctrl+M. Такое поведение связано с различием управляющих кодов CR/LF. И если в настройках терминала стоит одно, то во всех трёх случаях будет генерироваться Ctrl+J, а если другое -- Ctrl+M.
Есть очень окольные способы настроить такое под себя. Но если я пишу программу для терминала, которая должна более-менее работать в любом линуксе, то надо отказаться от Ctrl+J, Ctrl+M, Ctrl+i, Tab, а ещё, желательно, от Ctrl+H, который легко путается с Backspace. Но вот именно настройка управляющего кода бэкспейса в эмуляторах терминалов всегда расположена на видном месте.
Распространение файлов в запароленных архивах часто бывало в 2000-е и в 2010-е годы. Но иногда встречается и сейчас.
Сайт не может или не хочет хостить файлы сам, поэтому выкладывает их на файл-хостинг (которые сейчас тоже стали редки). Рядом со ссылкой на скачивание публикуется пароль, часто состоящий из имени сайта. Я не знаю, зачем так делали и делают. Видимо, смысл в том, чтобы человек, получивший ссылку через иной источник или наткнувшийся на файл просто на хостинге, не мог им воспользоваться. Но зачем ставить такое ограничение -- вопрос.
Потому что этим файлом не сможете воспользоваться вы сами, найдя его на диске через год. А там может быть что-то важное. Ну и попробуй вспомнить, что откуда ты качал и какой там пароль.
В таких случаях надо действовать с упреждением.
1. Сразу распаковываем. 2. Оригинальный файл удаляем, чтобы не мозолил глаза. 3. Если оригинальный файл должен сохраниться, вписываем пароль в имя файла.
В детстве, если у кого-нибудь случался понос, бабушка всегда выдвигала предположения насчёт того, почему так произошло. "Ой, наверное от творога" (творог ели каждый день, понос только у одного человека).
Сейчас тоже хочется затеять детектив и понять причину. Но это очень редко имеет смысл делать.
1. Даже если вычислить виновника, польза будет только если осталась ещё такая же еда. Её можно будет выбросить. 2. Вычислить виновника сложнее, чем кажется. Очень часто после подозрительных продуктов ничего не бывает. Ну, живот поурчит. А когда происходит отравление, то оказывается, что подозрительных продуктов нет. Вот как такое возможно?