Вы хотите вывести сигнатуру функции из тела функции — это гиблый путь, при котором любое мелкое изменение в функции может сломать обратную совместимость
Именно! А это означает, что функция получает полное владение параметром и, если захочет, может уничтожить его. А значит из этой гарантии следует, что использовать параметр после вызова функции нельзя (иначе рискуем получить use-after-free).
В сигнатуре функции нет такой гарантии, будущие версии этой функции могут изменить своё поведение. Если программист хочет гарантировать, что строка будет жить после работы функции - он должен явно объявить такую гарантию в сигнатуре этой функции
И зачем?
Чтобы пользователь этой функции мог полагаться на явно объявленные гарантии, а не что-то там гадать про наличие или отсутствие долгов
Мне вот даже интересно что я делаю не так, все вокруг жалуются, а у меня за примерно восемь лет пользования личным почтовым сервером не было НИКАКИХ проблем
Хотя в Firefox имеется очень интересное сообщение в консоли:
Макет был принудительно применён перед полной загрузкой страницы. Если таблицы стилей ещё не загружены, то это может спровоцировать отображение нестилизованного содержимого.
Видимо, если скрипт успеет загрузиться раньше стиля и стриггерит force reflow — тогда уже появляется шанс увидеть белую страницу. Поэтому не надо говнокодить в скриптах 🙃
Но в Chrome даже такого нет, страница ВСЕГДА чёрная (при всё ещё светлой системной теме)
Скриншоты на вкладке Performance, кстати, врут: они по неизвестной мне причине не захватывают чёрный экран, который я вполне отчётливо вижу
Именно поэтому на гифке я захватил второй запрос, а не первый
А стоит ли игра свеч, если скрипт библиотеки весит 16 кб и 3.5 кб в gzip?
Сравните с Хабром: тема хранится в куках и задаётся бэкендом напрямую в html-коде — скрипт весит 0 байт, потому что JS здесь вообще не задействован. А так как браузеры ждут завершения загрузки стилей — никаких мерцаний на Хабре нет
вы всегда будете видеть дефолтный цвет системной темы
Хм, Firefox ведёт себя странно: при F5 моргает белым, а при Ctrl+F5 моргает чёрным. Ладно, буду считать это багом Firefox)
Но реализацию через JS и localStorage я всё равно осуждаю: если выбранная мной тема отличается от системной, страница всё равно будет моргать (например, чёрным) даже в Chrome
Вы хотите вывести сигнатуру функции из тела функции — это гиблый путь, при котором любое мелкое изменение в функции может сломать обратную совместимость
Именно! А это означает, что функция получает полное владение параметром и, если захочет, может уничтожить его. А значит из этой гарантии следует, что использовать параметр после вызова функции нельзя (иначе рискуем получить use-after-free).
В сигнатуре функции нет такой гарантии, будущие версии этой функции могут изменить своё поведение. Если программист хочет гарантировать, что строка будет жить после работы функции - он должен явно объявить такую гарантию в сигнатуре этой функции
Чтобы пользователь этой функции мог полагаться на явно объявленные гарантии, а не что-то там гадать про наличие или отсутствие долгов
Посетители Хабра и так всё это прекрасно знают, а те, от кого вам приходят письма, эту недостатью всё равно не увидят
Тысячи уязвимостей в сишных программах наглядно демонстрируют что стоит
Ну вы лол конечно
Тогда почему такая проблема есть только у вас?
Ну значит у вас есть что-то другое, что отдаёт некорректные хостнеймы, иначе откуда их гугл взял бы
У вас
У нас с вами точно один и тот же гугл? Мой гугл говорит, что некорректный хостнейм подсовывает Cloudflare
Мне вот даже интересно что я делаю не так, все вокруг жалуются, а у меня за примерно восемь лет пользования личным почтовым сервером не было НИКАКИХ проблем
Уже пытались, оказалось никому не нужно https://daniel.haxx.se/blog/2024/12/21/dropping-hyper/
Для начала — что такое «официальные дрова для интеловских ЦП» на линуксе? Официальный сайт интела предлагает дрова только для винды
Хотя в Firefox имеется очень интересное сообщение в консоли:
Видимо, если скрипт успеет загрузиться раньше стиля и стриггерит force reflow — тогда уже появляется шанс увидеть белую страницу. Поэтому не надо говнокодить в скриптах 🙃
Но в Chrome даже такого нет, страница ВСЕГДА чёрная (при всё ещё светлой системной теме)
Скриншоты на вкладке Performance, кстати, врут: они по неизвестной мне причине не захватывают чёрный экран, который я вполне отчётливо вижу
Так что пусть будет ещё одна гифка
Нет, не будет.
В моей вкладке Performance никаких белых скриншотов нет и страница всегда чёрная при светлой системной теме
Именно поэтому на гифке я захватил второй запрос, а не первый
Сравните с Хабром: тема хранится в куках и задаётся бэкендом напрямую в html-коде — скрипт весит 0 байт, потому что JS здесь вообще не задействован. А так как браузеры ждут завершения загрузки стилей — никаких мерцаний на Хабре нет
На Хабре — не вижу по вышеупомянутой причине
Только потому что ваш пример очень маленький и ничего моргнуть в принципе не успевает.
Если же представить, что, например, скрипт на сервере обновился и нужно заново скачать его из интернета —
Всё замечательно моргает
Хм, Firefox ведёт себя странно: при F5 моргает белым, а при Ctrl+F5 моргает чёрным. Ладно, буду считать это багом Firefox)
Но реализацию через JS и localStorage я всё равно осуждаю: если выбранная мной тема отличается от системной, страница всё равно будет моргать (например, чёрным) даже в Chrome
Скорее всего можно ужать ещё, если не злоупотреблять
format!
ом и дженериками, но это уже в исходниках копаться надо