zHz00 Untitled

вторник, 17 декабря 2024
01:51 Длинные условия
Сколько раз такое было, пишем оператор условия, а там:

if(flag1==True&&flag2==False&&function_call(a,b,c,d)>0)

и что-нибудь ещё.

Ну, начнём с того, что наличие таких условий -- это само по себе плохой код, потому что его сложно понять. Тем не менее, иногда условия выполнения участков кода действительно бывают заковыристые. Может быть, есть какое-то системное решение для упрощения сложных условий, но я такого не знаю. Что всё-таки можно сделать?

1. Если в условиях только флаги, то надо рефакторить всё в конечный автомат -- в этом я убедился на практике. А если там кроме флагов ещё есть диапазоны значений, вызовы функций, проверки вариантов опций? Не знаю. Может быть, это всё тоже приводимо к конечному автомату.

2. Но я хотел написать про минорное упрощение. Нужно записывать условия в столбик. Я давно так делаю. Но недавно я обнаружил, что записывать в столбик можно по-разному. Можно написать:

if(flag1==True&&
flag2==False&&
function_call(a,b,c,d)>0)

А можно написать:

if(flag1==True
&&flag2==False
&&function_call(a,b,c,d)>0)

Я всегда использовал первый вариант, но убедился, что он неудобен. Логическая операция находится в конце строки, её надо постоянно искать глазами. А концы у каждой строки находятся в разном месте. Если расположить оператор в начале, то, во-первых, будет понятнее, что происходит, а во-вторых, можно для удобства дублировать оператор и в конце предыдущей строке, но уже в комментарии, типа //&& .

Но насчёт дублирования я пока не уверен, т.к. никогда так не делал.

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, то это действительно упростит читаемость. Если имена будут условными, то упрощение тоже будет условным.
Во-вторых, упрощается отладка, поскольку вы получаете непосредственный доступ к частям логического выражения, а обычно такого доступа нет, т.к. условие выполняется в отладчике как одна строка.

@темы: Программирование, Говнокод

URL
понедельник, 16 декабря 2024
02:57 Прямые продажи
Остановился на заправке в зоне парковки. ТУТ ЖЕ ко мне подошёл мужчина нерусской национальности. Я думал, будет денег просить. Потому что такое бывало уже не раз. Но всё оказалось куда интереснее.

Он предложил купить у него смартфон. Какой -- я не посмотрел, но в коробочке, а не просто ворованный.

Я так удивился, что закричал: "ЧТОООО?", а потом поднял стекло и уехал.

@темы: Случай из жизни, Автомобили

URL
воскресенье, 15 декабря 2024
02:36 Safety Last!
Периодически натыкаюсь в ютьюбе на видосы по строительной тематике. Там строители нарушают ТБ, иногда с последствиями. За всем этим наблюдает мужик в каске и очках, при этом корчит гримасы ужасания и офигения. Я хотел выяснить, кто это. Но мои поисковые способности меня подвели. Спустя некоторое время я узнал ответ случайно, прочитав комментарии к какому-то другому видео.

Его зовут Adam Rose.

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

www.youtube.com/watch?v=Pj5gU8g1D6o

Вот на что я бы посмотрел с комментариями Адама Роуза.

@темы: Наблюдения

URL
суббота, 14 декабря 2024
02:09 You Never Can Tell
Везу маму в поликлинику.

Я: Сегодня мы слушаем саундтреки из фильмов Тарантино.
Мама: А там будет.... те-те-те-те? (синхронно водит ладонями из стороны в сторону)
Я: Будет!


@темы: Случай из жизни, Музыка

URL
пятница, 13 декабря 2024
05:59 Что мне не нравится в реакциях в Телеграме
Когда реакции только появились, я думал, что это бесполезная фиговина. Но потом оказалось, что это довольно удобно. В больших чатах это, например, уменьшает число сообщений. При личной переписке можно тоже ответить в два клика, а не писать текст.

Тем не менее, пользоваться реакциями не всегда легко. Бесплатных реакций сейчас чуть больше 70 штук. Они расположены в сетке. Но их порядок каждый раз разный! Я подозреваю, что реакции сортируются по числу употреблений, хотя правила какие-то странные.

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

На третий раз всё-таки видишь, где она.

Ну и вот. Располагать частые реакции/смайлики в начале -- это полезно. Но тогда уж оставьте их дубликат в фиксированной сетке! Тогда все остальные реакции не сползут, и можно будет их легко находить.

@темы: UX, Telegram

URL
00:20 Уведомление
Анонимное комментирование временно отключено. Тут две причины:
1. Сейчас идёт очередная спам-атака на старые посты.
2. С середины ноября в дайари сломались "последние комментарии", из-за чего мой удалятор комментариев не видит не только спам, но и нормальные комментарии.

В результате этого я могу удалять спам только вручную и только в момент его обнаружения. Это неудобно.

@темы: Другое

URL
четверг, 12 декабря 2024
05:37 Начнём с чистого листа
Вот какая система безопасности на одном предприятии.

Удалённые сотрудники получают доступ к корпоративным ресурсам через впн. При этом впн общесистемный, поэтому через этот впн идёт доступ не только к корпоративным ресурсам, а вообще ко всем.

На стороне предприятия работает интеллектуальная система безопасности, которая проверяет, кто и куда обращается. У неё свои списки запрещённых адресов.

Если пользователь пытается обратиться к запрещённому адресу, то запрос, разумеется, блокируется. Но это не всё. При таком обращении сразу блокируется вся учётная запись. Далее необходимо об'яснить ИБ, почему ты обращался к этому адресу.

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

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

@темы: Программы, Борьба с техникой

URL
среда, 11 декабря 2024
03:22 А город подумал -- ученья идут
В новостях про упавшие самолёты почему-то часто встречается приписка о том, что пилоты пытались отвести самолёт от городской застройки и, таким образом, спасли жизни людей на земле. Я не пилот, но такой тезис вызывает у меня сомнения.

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

Но если самолёт пассажирский или малолитражный?

Если речь идёт про "отведение самолёта от городской застройки", то скорее всего у нас ситуация по типу "отказ всех двигателей, самолёт управляем, планирует". Эта ситуация, безусловно, нештатная. Но типовая. Несмотря на то, что шанс погибнуть в такой ситуации высок, есть определённый алгоритм действий -- направленный на выживание. Надо искать место для посадки! И, конечно же, городская застройка НЕ входит в список мест для посадки.

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

Вот реальные посадки:
www.youtube.com/watch?v=mk33A-yXa34
www.youtube.com/watch?v=2MEapiGMbxw

@темы: Мысли

URL
вторник, 10 декабря 2024
03:04 Blender
Профессиональное ПО всегда такое -- ты оказываешься перед пультом управления космическим кораблём. Чё делать -- непонятно. Но потом проходит час, пять часов... "ага, вот что это было". "Ну, в принципе, довольно логично устроено".

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

Что не понравилось:
1. Низко контрастный интерфейс. Чёрный текст на тёмно-сером фоне виден очень плохо. Особенно со включённым сглаживанием.
2. Гугление проблем показывает, что одна и та же проблема может иметь разнообразный генезис. И отвечающие начинают гадать, почему рендер показывает серый фон. Это означает, что программа сама не распознаёт проблему и не подсказывает пути решения. У меня, например, рендер ничего не показывал, потому что был неправильно настроен клип камеры. Но. ОКАЗЫВАЕТСЯ, что у камеры для рендера есть один клип, а у "камеры, которая вращается мышкой" есть другой клип совсем в другом месте. И я настраивал не тот клип.
3. Примитивы забывают о том, что они примитивы, после первичного создания. Поэтому если понял, что у тора неправильное соотношение большого и малого радиусов или неправильное разбитие на полигоны, то нельзя это просто поменять. Надо либо использовать трансформации "на общих основаниях", либо пересоздавать об'ект.

К сожалению, сделать в Компасе абсолютно всё -- нельзя. Будем прорываться.

@темы: Программы

URL
понедельник, 09 декабря 2024
04:54 Неожиданное препятствие
Я вожу машину не первый год, и множество раз оказывался в ситуациях, близких к аварийным. Если одна и та же ситуация происходит несколько раз, значит я недостаточно осторожен. Надо пересматривать систему.

И вот пример.

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

Машина тормозит, начинает поворот, но не заканчивает его. Машина совершает полную остановку, а её зад всё ещё находится в моей полосе. То есть, передо мной неожиданно возникает стационарное препятствие.

Причины этому могут быть разные. Однажды на Профсоюзной машина заехала в зону для разворота (там таких много), но предыдущая машина была грузовиком, поэтому две машины в карман просто не влезли. В другой раз, на днях, я ехал по рыхлому снегу. Машина передо мной, как я потом увидел на регистраторе, не смогла вовремя затормозить перед поворотом и в'ехала в бордюр. Не мог вовремя затормозить и я, чтобы остановиться. Вместо этого я вырулил и об'ехал её слева. Это был опасный манёвр, т.к. во второй полосе могла быть другая машина. Я, конечно, проверил, но если бы ДТП произошло, я бы 100% был признан виновником.

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

@темы: Мысли, Автомобили, Наблюдения

URL
воскресенье, 08 декабря 2024
03:09 Всё пройдёт, пройдёт и это
Сестра: Я же налоги заплатила!
Я: Ого! Первый раз заплатила из собственных средств, с зарплаты!
Сестра: Нет. В прошлом году тоже сама платила. Я же в библиотеке работала.
Я: Блин. Я про это забыл.
Сестра: Я тоже иногда хочу об этом забыть...

@темы: Случай из жизни, Викторика

URL
суббота, 07 декабря 2024
01:25 Ручка удобнее кнопки
Вместо микроволновки, у которой таймер крутится не в ту сторону, купили новую. У неё только кнопки. И я припух. Пока инструкцию не прочитал, находился в недоумении. Чувствую себя лохом, что не понял, как ей пользоваться. Хотя чья это проблема? Моя? Или микроволновки?

В общем, как выбирать мощность, я нашёл. Но если после этого нажать старт, ничего не происходит. Если нажать "таймер", то мощность сбрасывается. Если сразу нажать старт, то разогрев начинается, но на 100% мощности.

ОКАЗАЛОСЬ.
1. Кнопка "таймер" запускает таймер, который просто пикает после того, как время вышло. Он ничего не запускает и не останавливает.
2. Процесс запуска на половинной мощности выглядит так:
а) выбор мощности кнопкой "мощность"
б) нажать "старт"
в) выбрать время нажатием кнопок ВВЕРХ и ВНИЗ
г) нажать "старт" ещё раз

Потому что второе назначение кнопки "старт" -- это "подтвердить".

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

А почему ручки удобнее -- потому что можно выставить время и мощность одним движением, а не тыкать много раз.

@темы: UX, Фейлы, Борьба с техникой

URL
пятница, 06 декабря 2024
03:47 Сенпай, он такой большой
У коллеги с работы его дети забирали наушники, чтобы попользоваться. Чтобы это прекратить, он перепаял раз'ём на 6,3 мм. Потому что в его технике такие гнёзда имелись...

@темы: Лайфхак, Электроника, Музыка

URL
четверг, 05 декабря 2024
06:16 Аполлон-13 научил многому. Но не всех
Раскручивал ноутбук, все винты сложил в коробочку. Стал скручивать и обнаружил, что один винт не лезет. Стал внимательно разглядывать.

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

***

Ну и да, в итоге один винт потерял. Но это ладно.

@темы: Борьба с техникой

URL
среда, 04 декабря 2024
07:12 Но писать в Спортлото всё ещё можно
Оказывается, с 2021 года в магазинах не обязательно наличие "книги отзывов и предложений". Тем не менее, когда коллега такую книгу попросил в пункте Озона, её выдали. Но книга была не проштампована и не пронумерована...

Ситуация была в том, что он делал возврат повреждённого товара, ему сотрудник всё пропикал, а когда он уже дома открыл профиль Озона, оказалось, что возвращал он 5 единиц, а отображается, что он вернул только 4...

Недостаток Озона тут заключается в том, что покупатель не только не получает документов о полученных/возвращённых товарах, но и даже не видит, что там сотрудник переключает на экране. Если бы список дублировался со стороны покупателя, несоответствие можно было бы обнаружить сразу.

@темы: Наблюдения

URL
вторник, 03 декабря 2024
01:44 Второй проход
Если при добавлении функционала в программу приходится вносить массовые правки, то у программы плохая архитектура. И тем не менее, массовые правки вносить иногда приходится.

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

Потому что при массовых правках легко пропустить что-нибудь по невнимательности. А поиск этих пропусков будет гораздо быстрее, если сделать его сразу.

Одна из проблем, которая может возникнуть -- это поиск всех исправленных мест. Тут есть три варианта:
1. Все места для правок могут быть уже помечены ещё до начала (например, вы исправляете поведение программы при определённом значении какой-либо опции, и сравнение с этим значением есть во всех исправленных местах).
2. Можно вручную помечать все места, куда вносятся правки, но делать это надо было заранее
3. Система контроля версий.

@темы: Лайфхак, Программирование, Говнокод

URL
понедельник, 02 декабря 2024
05:10 Парадокс бустов в телеге
Бусты каналу могут давать только премиум-пользователи. У них есть обычно 4 буста, которые они могут дать одному или нескольким каналам. Если у канала достаточное число бустов, канал получает "левел-ап", что даёт некоторые условно-бесполезные функции. Одна из них -- разрешение кастумных реакций под постами. При этом чем больше уровень, тем больше реакций разрешено.

Число бустов, необходимых для левел-апа, вычисляет динамически на основании текущего числа подписчиков. И пересчитывается регулярно. Это означает, что уровень канала не является постоянной величиной не только в сторону роста, но и в сторону сокращения.

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

И начинается -- "а давайте добавим мне бустов, чтобы вернуть такую-то кастумную реакцию". Ну, народ добавляет. И тут есть два момента.
1. То, что народ добавил, было раньше отдано другим каналам, а теперь отобрано. В длинной перспективе это означает, что число каналов с уровнем ограничено общим количеством премиум-акканунтов. Дополнительные каналы либо будут перетягивать бусты с тех, которые менее интересны подписчикам, либо останутся без уровня.
2. Админы вынуждены делать периодическую попрошайку, потому что без неё пользователи не догадаются, что какая-то там реакция пропала.

Интересно, насколько был продуман разработчиками баланс этой фичи?

@темы: Telegram, Наблюдения

URL
воскресенье, 01 декабря 2024
04:26 Две головы
Давно не запускал (ресурсоёмких) комп. игр. Запустил. И чувствую, что-то не то. Тормозит невероятно. Мышка перескакивает. Может, 5 фпс?

Это что такое? Да, компьютеру больше 5 лет. Но и игра скорее инди, а не ААА. И тут у меня появляется невероятная догадка.

Дело было в нейронках.

Когда я ставил эксперименты с ComfyUI, я обнаружил, что во время генерации у меня лагает изображение на мониторе. Более удивительным оказалось то, что при доступе через удалёнку никаких лагов не было. Таким образом, я понял, что видеокарта не справляется с двумя задачами сразу. Я переключил видеовыход на встроенное видеоядро процессора, а видеокарту заставил заниматься исключительно нейронкой. И лаги на мониторе пропали.

(дополнение: лаги были только в ComfyUI; при работе с генерацией текста через llama.cpp всё было отлично, хотя видеопамяти обе системы жрут одинаково, только ComfyUI постоянно выгружает и загружает модели, а llama.cpp держит всё вместе)

Ну и вот. Я оставил монитор на встроенном видеоядре, т.к. для текущих задач этого хватало. Было это пару месяцев назад. А теперь, когда я запустил игру, выяснилось, что для игры встроенного ядра уже не хватает. Поскольку на текущий момент я не экспериментировал с нейронками, я переключил видеовыход обратно на видеокарту. И получил многократный прирост производительности. То есть, тормозить перестало.

Это непонятный момент. Я полагал, что встроенное видеоядро (i7-7700) имеет производительность уровня GeForce 1030. Но по ощущениям прирост получился ~десятикратный. При этом 1070 и 1030 имеют разницу всего в 5 раз согласно каким-то там бенчмаркам из интернета.

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

@темы: Борьба с техникой, Игры

URL
суббота, 30 ноября 2024
07:12 Мы друг друга знаем
Сестра говорит: прикрути уголки к стенке, а то на столе стоят коробки с шурупами и мешают.
Я: Я могу убрать коробки с шурупами прямо сейчас.
Сестра: Не, не надо. Если ты их уберёшь, ты уголки к стенке никогда не прикрутишь.

***

Я: Посмотри ту серию аниме, а то мне флешка нужна.
Сестра: Я могу её скопировать, и флешку вернуть.
Я: Не, не надо. Если ты её скопируешь, ты её никогда не посмотришь.

***

Родители в натянутых отношениях. Когда сестра переехала ко мне, папа захотел переехать в её комнату.

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

@темы: Наблюдения

URL
пятница, 29 ноября 2024
04:31 Это были голодающие дети Германии
Сижу в машине на стоянке, подходит какой-то мужик. Начинает что-то рассказывать про то, что нет телефона, ему ехать то ли в Люберцы, то ли в Саларьево... я что-то не очень понимаю, к чему он клонит.

-- Хотите-то что?
-- Деньги на билет, 142 рубля. Я вам потом на карту перечислю!

Обычно я денег не даю. Но тут было что-то странное. Мужик трезвый. Промзона. 150 рублей. Вернёт на карту.

В общем, дал я ему 150 рублей. Написал на бумажке телефон. Он хотел, чтобы я ещё написал, как меня зовут, но я сказал, что при переводе в другой банк имя указывать не нужно и имя всё равно не отображается.

Он предупредил, что сможет перечислить только часа через четыре.

Но он ничего не прислал, ни через 4 часа, ни через 444. И вот что я скажу.

Даже когда обманули всего на 150 рублей -- это всё равно неприятно.

Он говорил -- представляете, первый раз у кого-то деньги прошу!
Штош, а я первый раз деньги даю. И, возможно, последний.

@темы: Мошенники, Восприятие

URL