Сломался домофон -- трубка. Вызвали мастера от конторы, которая обслуживает домофон.
-- У вас 6,5 вольт есть, значит проводка исправна. Нужно менять трубку. -- Они все одинаковые или какая-то особая нужна? -- Нужна цифровая. Можете у нашей фирмы заказать, будет 4 тыщи стоить. -- А у вас с собой есть? (он усмехнулся) -- Есть, но тогда будет неофициально. -- И сколько тогда будет стоить? -- Тогда 3,5. -- А работы сколько стоить будут? (он опять усмехнулся) -- А сколько дадите. Хотите -- ничего. Хотите -- 500 рублей. -- И... интересное у вас ценообразование. Вы что, на окладе? -- Ага. Мне что 3 вызова за день, что 10 -- заплатят одинаково.
Кхм, в первый раз вижу, чтобы не-аварийные ремонтники работали на окладе...
В общем, доплатили мы ему. А я теперь знаю, что надо проверять напряжение 6.5 вольт.
Когда устройство не работает, иногда помогает его переподключение. Иногда -- перезагрузка. Но не хочется перезагружаться без острой необходимости. А передёрнуть устройство возможности может просто не быть: мы работаем с компами, которые расположены от нас в сотнях и тысячах километров.
Есть лайфхак, позволяющий решить эту проблему. Помогает это не всегда, но проделать следующую операцию точно не помешает, раз уж устройство и так не работает.
Откройте Диспетчер устройств и удалите ваше устройство! (только не надо ставить галочку "удалить драйвер")
А потом нажмите Scan for hardware changes. И вуаля! Только что удалённое устройство снова найдено.
Почему это работает? Потому что происходит перезагрузка драйвера. Почему это может не работать? Я не знаю, но вот один из примеров, когда метод не помогает.
Одно из наших устройств (USB) имеет особую вкладку свойств, и там есть галочка, которую надо поставить, а потом перезапустить устройство. Так вот, если устройство выдернуть и воткнуть -- всё работает, и галочка применяется. А если устройство удалить программно, то галочка сбрасывается. Поэтому применить нужную опцию можно только при очном отключении устройства.
На об'екте есть столовая, но нас туда не пускают, т.к. мы всего лишь арендаторы. Тем не менее, арендаторы могут сделать заказ. Эти заказы развозят по территории на машине. И нам стучат в окно. Мы открываем, нам выдают из машины еду.
Смотрю я на это и думаю -- это же мак-авто наоборот!
Ну, начнём с того, что наличие таких условий -- это само по себе плохой код, потому что его сложно понять. Тем не менее, иногда условия выполнения участков кода действительно бывают заковыристые. Может быть, есть какое-то системное решение для упрощения сложных условий, но я такого не знаю. Что всё-таки можно сделать?
1. Если в условиях только флаги, то надо рефакторить всё в конечный автомат -- в этом я убедился на практике. А если там кроме флагов ещё есть диапазоны значений, вызовы функций, проверки вариантов опций? Не знаю. Может быть, это всё тоже приводимо к конечному автомату.
2. Но я хотел написать про минорное упрощение. Нужно записывать условия в столбик. Я давно так делаю. Но недавно я обнаружил, что записывать в столбик можно по-разному. Можно написать:
Я всегда использовал первый вариант, но убедился, что он неудобен. Логическая операция находится в конце строки, её надо постоянно искать глазами. А концы у каждой строки находятся в разном месте. Если расположить оператор в начале, то, во-первых, будет понятнее, что происходит, а во-вторых, можно для удобства дублировать оператор и в конце предыдущей строке, но уже в комментарии, типа //&& .
Но насчёт дублирования я пока не уверен, т.к. никогда так не делал.
3. Есть ещё один метод, назначить каждому условию в выражении отдельную логическую переменную.
bool b1=(flag1==True); bool b2=(flag2==False); bool b3=(function_call(a,b,c,d)>0);//скобки необязательны, но пусть будут на всякий случай if(b1&&b2&&b3)
Какие есть особенности у этого метода? Во-первых, если удастся дать условиям краткие понятные имена, а не b1, b2, b3, то это действительно упростит читаемость. Если имена будут условными, то упрощение тоже будет условным. Во-вторых, упрощается отладка, поскольку вы получаете непосредственный доступ к частям логического выражения, а обычно такого доступа нет, т.к. условие выполняется в отладчике как одна строка.
Остановился на заправке в зоне парковки. ТУТ ЖЕ ко мне подошёл мужчина нерусской национальности. Я думал, будет денег просить. Потому что такое бывало уже не раз. Но всё оказалось куда интереснее.
Он предложил купить у него смартфон. Какой -- я не посмотрел, но в коробочке, а не просто ворованный.
Я так удивился, что закричал: "ЧТОООО?", а потом поднял стекло и уехал.
Периодически натыкаюсь в ютьюбе на видосы по строительной тематике. Там строители нарушают ТБ, иногда с последствиями. За всем этим наблюдает мужик в каске и очках, при этом корчит гримасы ужасания и офигения. Я хотел выяснить, кто это. Но мои поисковые способности меня подвели. Спустя некоторое время я узнал ответ случайно, прочитав комментарии к какому-то другому видео.
Его зовут Adam Rose.
Тем не менее, жанр строительных видео появился не в ютьюбе, а гораздо раньше. И об этом я узнал (вспомнил) тоже случайно. В "Ну, Погоди" есть сцена на стройке. И сделана она в лучших традициях. Можете сами убедиться:
Когда реакции только появились, я думал, что это бесполезная фиговина. Но потом оказалось, что это довольно удобно. В больших чатах это, например, уменьшает число сообщений. При личной переписке можно тоже ответить в два клика, а не писать текст.
Тем не менее, пользоваться реакциями не всегда легко. Бесплатных реакций сейчас чуть больше 70 штук. Они расположены в сетке. Но их порядок каждый раз разный! Я подозреваю, что реакции сортируются по числу употреблений, хотя правила какие-то странные.
Ну и вот, ты лезешь в список реакций чтобы найти нужную и... не находишь. Просматриваешь список ещё раз, снова нет. Но она должна быть.
На третий раз всё-таки видишь, где она.
Ну и вот. Располагать частые реакции/смайлики в начале -- это полезно. Но тогда уж оставьте их дубликат в фиксированной сетке! Тогда все остальные реакции не сползут, и можно будет их легко находить.
Анонимное комментирование временно отключено. Тут две причины: 1. Сейчас идёт очередная спам-атака на старые посты. 2. С середины ноября в дайари сломались "последние комментарии", из-за чего мой удалятор комментариев не видит не только спам, но и нормальные комментарии.
В результате этого я могу удалять спам только вручную и только в момент его обнаружения. Это неудобно.
Вот какая система безопасности на одном предприятии.
Удалённые сотрудники получают доступ к корпоративным ресурсам через впн. При этом впн общесистемный, поэтому через этот впн идёт доступ не только к корпоративным ресурсам, а вообще ко всем.
На стороне предприятия работает интеллектуальная система безопасности, которая проверяет, кто и куда обращается. У неё свои списки запрещённых адресов.
Если пользователь пытается обратиться к запрещённому адресу, то запрос, разумеется, блокируется. Но это не всё. При таком обращении сразу блокируется вся учётная запись. Далее необходимо об'яснить ИБ, почему ты обращался к этому адресу.
Загвоздка в том, что на компьютере, которым активно пользуются, за годы накапливается большое количество программ, которые могут обращаться куда угодно. И это приводит к неожиданным срабатываниям системы защиты.
При такой политике работы для доступа необходимо держать дома отдельный чистый компьютер, на котором будет установлено только самое необходимое ПО, о котором известно, что оно никуда не обращается. И пользоваться интернетом с этого компа тоже не следует. Потому что неизвестно, какие адреса система сочтёт запрещёнными.
В новостях про упавшие самолёты почему-то часто встречается приписка о том, что пилоты пытались отвести самолёт от городской застройки и, таким образом, спасли жизни людей на земле. Я не пилот, но такой тезис вызывает у меня сомнения.
Если самолёт предусматривает систему катапультирования, парашюты и т.п., то можно себе представить, что у пилотов был выбор -- пилотировать до конца или бросить самолёт. Тогда да, можно оценивать их поведение с такой точки зрения.
Но если самолёт пассажирский или малолитражный?
Если речь идёт про "отведение самолёта от городской застройки", то скорее всего у нас ситуация по типу "отказ всех двигателей, самолёт управляем, планирует". Эта ситуация, безусловно, нештатная. Но типовая. Несмотря на то, что шанс погибнуть в такой ситуации высок, есть определённый алгоритм действий -- направленный на выживание. Надо искать место для посадки! И, конечно же, городская застройка НЕ входит в список мест для посадки.
Поэтому я не знаю, зачем дописывать, что пилоты не хотели садиться в застройку. Конечно не хотели. Сесть на ровное и пустое место -- это не только в интересах жителей, но и в интересах самих пилотов.
Профессиональное ПО всегда такое -- ты оказываешься перед пультом управления космическим кораблём. Чё делать -- непонятно. Но потом проходит час, пять часов... "ага, вот что это было". "Ну, в принципе, довольно логично устроено".
Я глубоко не копался и делал, в целом, простейшие вещи. Тем не менее, мне показалось, что блендер сложнее и неудобнее, чем Компас. Но у них несколько разное предназначение.
Что не понравилось: 1. Низко контрастный интерфейс. Чёрный текст на тёмно-сером фоне виден очень плохо. Особенно со включённым сглаживанием. 2. Гугление проблем показывает, что одна и та же проблема может иметь разнообразный генезис. И отвечающие начинают гадать, почему рендер показывает серый фон. Это означает, что программа сама не распознаёт проблему и не подсказывает пути решения. У меня, например, рендер ничего не показывал, потому что был неправильно настроен клип камеры. Но. ОКАЗЫВАЕТСЯ, что у камеры для рендера есть один клип, а у "камеры, которая вращается мышкой" есть другой клип совсем в другом месте. И я настраивал не тот клип. 3. Примитивы забывают о том, что они примитивы, после первичного создания. Поэтому если понял, что у тора неправильное соотношение большого и малого радиусов или неправильное разбитие на полигоны, то нельзя это просто поменять. Надо либо использовать трансформации "на общих основаниях", либо пересоздавать об'ект.
К сожалению, сделать в Компасе абсолютно всё -- нельзя. Будем прорываться.
Я вожу машину не первый год, и множество раз оказывался в ситуациях, близких к аварийным. Если одна и та же ситуация происходит несколько раз, значит я недостаточно осторожен. Надо пересматривать систему.
И вот пример.
Машина едет передо мной, начинает мигать поворотником. Я вижу, где она собирается повернуть, и прогнозирую её дальнейшие действия. Что она плавно затормозит, потом сделает поворот на низкой скорости. Но уже не первый раз прогноз не сбывается. Вместо этого происходит следующее.
Машина тормозит, начинает поворот, но не заканчивает его. Машина совершает полную остановку, а её зад всё ещё находится в моей полосе. То есть, передо мной неожиданно возникает стационарное препятствие.
Причины этому могут быть разные. Однажды на Профсоюзной машина заехала в зону для разворота (там таких много), но предыдущая машина была грузовиком, поэтому две машины в карман просто не влезли. В другой раз, на днях, я ехал по рыхлому снегу. Машина передо мной, как я потом увидел на регистраторе, не смогла вовремя затормозить перед поворотом и в'ехала в бордюр. Не мог вовремя затормозить и я, чтобы остановиться. Вместо этого я вырулил и об'ехал её слева. Это был опасный манёвр, т.к. во второй полосе могла быть другая машина. Я, конечно, проверил, но если бы ДТП произошло, я бы 100% был признан виновником.
По нашей судебной практике обязанность соблюдать дистанцию лежит на заднем водителе, а передний может тормозить так, как ему хочется. Это означает, что дистанция, которую я соблюдаю, на самом деле недостаточна для безопасной езды. Лааадно уж, все так едут, да ещё поближе, чем я. Но тут дело в том, что резкое торможение и полная остановка в "обычном" потоке -- ситуация редкая. А вот полная остановка перед поворотом мне встречается регулярно. Ну и если я вижу, что машина собирается делать поворот, то надо закладываться не на "оптимальную" траекторию езды, а на худшую, т.е. начинать заранее тормозить в расчёте на полную остановку.
Сестра: Я же налоги заплатила! Я: Ого! Первый раз заплатила из собственных средств, с зарплаты! Сестра: Нет. В прошлом году тоже сама платила. Я же в библиотеке работала. Я: Блин. Я про это забыл. Сестра: Я тоже иногда хочу об этом забыть...
Вместо микроволновки, у которой таймер крутится не в ту сторону, купили новую. У неё только кнопки. И я припух. Пока инструкцию не прочитал, находился в недоумении. Чувствую себя лохом, что не понял, как ей пользоваться. Хотя чья это проблема? Моя? Или микроволновки?
В общем, как выбирать мощность, я нашёл. Но если после этого нажать старт, ничего не происходит. Если нажать "таймер", то мощность сбрасывается. Если сразу нажать старт, то разогрев начинается, но на 100% мощности.
ОКАЗАЛОСЬ. 1. Кнопка "таймер" запускает таймер, который просто пикает после того, как время вышло. Он ничего не запускает и не останавливает. 2. Процесс запуска на половинной мощности выглядит так: а) выбор мощности кнопкой "мощность" б) нажать "старт" в) выбрать время нажатием кнопок ВВЕРХ и ВНИЗ г) нажать "старт" ещё раз
Потому что второе назначение кнопки "старт" -- это "подтвердить".
С кнопочными микроволновками я не работал, только с ручечными. Скажите, это стандартный алгоритм работы для кнопочных?
А почему ручки удобнее -- потому что можно выставить время и мощность одним движением, а не тыкать много раз.
У коллеги с работы его дети забирали наушники, чтобы попользоваться. Чтобы это прекратить, он перепаял раз'ём на 6,3 мм. Потому что в его технике такие гнёзда имелись...
Оказывается, с 2021 года в магазинах не обязательно наличие "книги отзывов и предложений". Тем не менее, когда коллега такую книгу попросил в пункте Озона, её выдали. Но книга была не проштампована и не пронумерована...
Ситуация была в том, что он делал возврат повреждённого товара, ему сотрудник всё пропикал, а когда он уже дома открыл профиль Озона, оказалось, что возвращал он 5 единиц, а отображается, что он вернул только 4...
Недостаток Озона тут заключается в том, что покупатель не только не получает документов о полученных/возвращённых товарах, но и даже не видит, что там сотрудник переключает на экране. Если бы список дублировался со стороны покупателя, несоответствие можно было бы обнаружить сразу.
Если при добавлении функционала в программу приходится вносить массовые правки, то у программы плохая архитектура. И тем не менее, массовые правки вносить иногда приходится.
Чтобы уменьшить время последующей отладки я советую вот что: после внесения всех правок и первичной проверки на компиляцию надо не сразу начинать отлаживать, а надо все исправленные места ещё раз просмотреть долгим вдумчивым взглядом.
Потому что при массовых правках легко пропустить что-нибудь по невнимательности. А поиск этих пропусков будет гораздо быстрее, если сделать его сразу.
Одна из проблем, которая может возникнуть -- это поиск всех исправленных мест. Тут есть три варианта: 1. Все места для правок могут быть уже помечены ещё до начала (например, вы исправляете поведение программы при определённом значении какой-либо опции, и сравнение с этим значением есть во всех исправленных местах). 2. Можно вручную помечать все места, куда вносятся правки, но делать это надо было заранее 3. Система контроля версий.