Pull to refresh
55

Люблю делать UI и офисные приложения

1,1
Rating
19
Subscribers
Send message

Я уж отвыкнуть успел. В детстве было пять окон, и переключаться между ними Alt + Tab’ом было удобно. Сейчас окон десятки. Перебором замучаешься по ним ходить. Активацию некоторых я посадил на глобальные хоткеи, среди остальных хожу мышкой.

Вкладок в браузере всё-таки поменьше.

учёные говорят, что мир ещё может вернуться к повышению на 1,5 °C, если быстро и радикально сократить выбросы

Это не учёные, а… У Владимира Георгиевича есть хорошее определение.

Настоящие учёные не предлагают сворачивать промышленность («радикально сократить выбросы»), тем более, что это нереально. Настоящие учёные предложили проект планетарного кондиционера, и не один. Эти проекты были научно раскритикованы и объявлены нерабочими? Нет. И стоят они относительно недорого. Намного меньше, чем заварушка на Ближнем Востоке в год.

Плохая новость в том, что на природу всем пока что наплевать. А хорошая в том, что когда жёппки начнут пригорать по-настоящему, никуда не денемся, пойдём красить Сахару, дружно взявшись за руки. У любых межнациональных разногласий есть своя температура испарения. (Мне так кажется).

А News.YCombinator, или как там его? Не из той же оперы?

По описанию прикольная штука. Спасибо.

Жаль, что в виндах так нельзя. Повесить FTP на A:, например. Понятно, почему нельзя: OneDrive сам себя не продаст.

Вряд ли это предложение пройдёт. Не потому, что оно плохое, и не потому, что вы не заслуживаете рассмотрения. А просто… вот, сколько всего прикрутил к C++ Герб Саттер: контекстно-свободную грамматику, единый универсальный синтаксис, в котором, однако, функции выглядят как функции, а лямбды — как лямбды, и ещё куча всего. Ну и где это всё? Зато в C++29 запретили ранее разрешённые исключения в таком месте, где ни один здоровый человек их бы всё равно не выкинул.

Однако, есть, к счастью, механизм, который позволяет накручивать такие вещи сверху. Герб Саттер как раз им воспользовался. Я только не знаю, можно ли выстраивать цепочки.

Так вот, к чему это я. Я бы не стал ждать пока предложения забобрят в самом Комитете, а воспользовался бы вашим препроцессором хоть завтра. Он выглядит адекватно. Только вот насчёт цепочек непонятно. На C++2 я, скорее всего, всё-таки перейду. Но и #for мне бы тоже хотелось. Лично я не смотрю на известность инструмента, я смотрю только на то, решает он мои проблемы, или нет.

Вот обратите внимание, кстати.

https://ru.wikipedia.org/wiki/Яндекс

https://en.wikipedia.org/wiki/Palantir

Раздел с критикой в статье про Яндекс называется «Критика». Раздел с критикой в статье про Palantir называется “Controversies and conspiracy theories”. Вот так.

Я думаю, он просчитался. Решил, что через годик-другой получит назад свой «Яндекс» и «ВК» на проценты, а тем временем посидит вне санкций. План надёжный, как швейцарский сыр, но что-то пошло не так.

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

Что-то посмотрел я примеры…

using namespace std::meta;

constexpr auto info = reflect(Point);
constexpr auto members = nonstatic_data_members(info);

// Iterate over members at compile time
[: expand(members) :] >> []<auto M>()
{
	constexpr std::string_view name = name_of(M);
	std::cout << "Member: " << name << '\n';
};

Сравнил #for с вот этой гармошкой: [: expand(members) :] >> []<auto M>()… Очень жаль, что @VADemon не работает в комитете!

Не, ну, конечно, лучше такая рефлексия, чем никакой. На макросах это вообще не сделать.

Кстати, недавно видел замечательный пример того, что такое ООН. Человек расказывает, как компания Honda 10 лет протаскивала через ООН темку по безопасности мотоциклов.

А зачем?

Резолюции ООН не имеют обязательной силы

Autoruns хорош разве что как TODO-list на удаление. И вообще, для диагностики. Но не для управления: вы всё отчекните, а потом кто-то чекнет всё назад, например, при обновлении. Наверное, те самые гномики, которых в Майкрософте заставляют считать на собеседованиях. На должность маркетологов и менеджеров по злодейству.

Мой рецепт: файлы надо вычистить, забрать ownership на папку и явно запретить к ней доступ всем, кроме себя, чтобы при обновлении восстановить не получилось. Так надо сделать с Edge, WinStore и всеми остальными из их братии. Но, наверно, умнее поступить как @MrBotikkk — поставить сразу корпоративную LTSC. Лично я просто хотел посмотреть на 11-ую глазами среднего юзера, а когда насмотрелся до тошноты, переставлять стало лень.

P.S. Если кто-то хочет сказать мне, что я ламер и ещё пожалею о кощунственном вмешательстве в священные винды своими кривыми руками (такое периодически пишут), то да, я ламер и пожалею. Всенепременнейше. Помолитесь о моей заблудшей душе.

Тут ситуация следующая. Если вы хотите видеть и управлять всеми процессами, вам нужны админские права. Единственный способ запустить приложение с админскими правами при логине — создать задачу в скежулере с повышенными привилегиями и повесить её на событие входа. Но из-за бага в Explorer’е при этом происходит race condition, и запросы на создание иконок в трее не выполняются с вероятностью, зависящей от скорости компьютера. Имейте в виду, если будете писать приложение, создающее иконки в трее, которому нужны повышенные права и которое запускается при логине.

Не знаю, связан ли запуск за «секунды 3» с попыткой закостылить этот баг, это надо у Руссиныча спрашивать. Что касается меня, лично я поставил задержку задаче запуска PE целых 30 секунд. И только после этого ни разу не было так, что PE запустился, а иконок в трее нет. Даже с учётом того, что у меня запускается при логине до черта всего. И всё с админскими правами. Спасибо за это Майкрософту, который отключает глобальные клавиатурные хуки у приложений, когда в фокусе окно с более высоким Integrity. Даже AIMP приходится запускать с админскими правами. Тоже через задачу, и тоже с задержкой, но уже 35 секунд (5 секунд отдано PE).

И даже если PE 3 секунды тратит на что-то своё, не связанное с этим багом, на фоне задержки в полминуты я этого всё равно не вижу. А окно из трея он открывает мгновенно.

Долго искал, как настроить фон колонок, и не нашёл. Функционала много, но оформлен неудобно. Типичный опенсорс. Решил, что остаюсь пока на PE.

PE не тормозит, а на исходники мне наплевать. Но по функционалу он действительно понавороченнее. Например, сходу мне показал, когда я в трей вынес иконку физического расхода памяти, кто главные проглоты.

Спасибо за рекомендацию.

Это надо говорить не мне, а коллеге, который перевёл тему на поделки. Если качество кода — самостоятельное понятие и не зависит от того, где код использован, в домашней поделке или огромном проекте, зачем тогда было упоминать домашние поделки? Понятно, что это было сделано, чтобы унасекомить. Так я тоже так умею 8-P

Если возразить по сути, без личных нападок, типа, что будет при несовпадении "IsFolder" и entry.is_folder, так я и отвечу по сути. Какая разница, где я это использовал. Хотя, конечно, приятно вспомнить, что этот код не сломался у (без малого) миллиона моих юзеров. Во многом благодаря тому, что я фанатично уничтожаю копипасту.

Так в этом же суть.

Когда я задал вопрос про стрингизацию в C++23, то ждал, пока кто-нибудь спросит, а зачем мне вообще маппинг имён 1:1. Ответ (на незаданный вопрос): во-первых, в C++ очень строгие требования к идентификаторам. Я это знаю, потому что пытался их обойти, соорудив новый синтаксис лямбд из символа (сделать из простой клавиатуры типографическую в любом случае полезно). Такой выразительности позавидовали бы и C#, и JS. Но не вышло, не фартануло. Как оказалось, C++ хорошо знает, где буква, а где нет. Вот так можно:

const int π = 3;

А вот так — нельзя:

#define →(expr) -> decltype(expr) { return expr; }

Во-вторых, при маппинге обеспечивается уникальность пары «категория + настройка». Иначе код просто не скомпилируется. В чистом итоге, чего мы добились, гарантировав (пришлось это сделать макросами, хотя я бы предпочёл рефлексию) маппинг 1:1? Добились мы того, что компилятор проверяет валидность имён (нет спецсимволов, которые могут озадачить сериализатор и парсер) и проверяет непротиворечивость формата файла. Что может быть прекраснее, чем нагрузить компилятор ещё одной проверкой, да ещё и данных?

Подумать, какое это отношение имеет к item.set_item("IsFolder", entry.is_folder) остаётся в качестве самостоятельного упражнения.

У последнего зарелизенного проекта с внутренней логикой на C++, над которым я работал (с ещё одним коллегой), было немногим менее миллиона пользователей. Пойдёт такая поделка?

«В большом проекте писать потенциально опасные макросы» — если вы это про глобальные макросы, которые реально потенциально опасны, то не надо приплетать к ним меня. Я практикую другой препроцессинг: написал, тут же использовал, тут же уничтожил. Как бы, я привёл два разных примера на эту тему, можно было увидеть паттерн (если есть желание понять).

А вообще, любой желающий отлить свой негатив к макросам во что-то общественно-полезное приглашается вот сюда: Как сделать простую рефлексию (стрингизацию имён типов) на C++23?. Вот куда я бы точно не хотел совать макросы, так это туда, но как всегда, когда коснулось, оказалось, что завезли один magic_enum.

1
23 ...

Information

Rating
1,956-th
Location
Россия
Registered
Activity

Specialization

Десктоп разработчик, Разработчик приложений
HTML
CSS
JavaScript
Windows API
C++
UI/UX дизайн
Разработка интерфейсов
Дизайн продукта
Adobe Photoshop
Проектирование интерфейсов