Ну так всё правильно, лучше быть богатым и здоровым, чем бедным и больным. Как видим, у авторов статьи не получилось перестать вызывать setenv после инициализации приложения. В этом они обвинили libc, и видимо пошли искать другой дивный язык и библиотеки, которые работают идеально и без ошибок :) Эх, подвёл таки "безопасный Rust", а ведь так надеялись, что нашли серебряную пулю.
Ну почему же не поможет? Если уж такая сильная нужда будет в библиотеке, которая невозбранно в getenv лазит, что никак не отказаться от неё, то для неё можно уж и расстараться и результат в tls скопировать :) Вот если кто-то напрямую будет environ шерстить, тогда уже да... Поверьте мне, есть масса способов заставить что-то работать так, как тебе нужно. Это я как автор механизма плагинов для Конфигуратора 1С (которых штатно нет) говорю :)
А что, какая то религия запрещает перехватить вызовы этих функций из сторонних библиотек? Или это уже утерянные знания? Под linux это делается элементарным LD_PRELOAD (https://habr.com/ru/articles/479858/). Кривую библиотеку использовать захочешь - не так раскорячишься. Мне просто странно, что эти разработчики свой гнев не по адресу направили - разработчики libc честно написали, что get/setenv не потокобезопасна, а они теперь плачут, почему в многопотоке у них проблемы. PS. Ошибся, кому ответ отправлять. Это ответ на коммент выше.
На это опытный программист просто перехватит вызовы get/setenv - (это элементарно делается) и завернёт таки в мьютекс. Судя по минусам, опытных программистов на хабре осталось не много.
Обычный программист старой закалки прочтет доку, пожмет плечами, засунет свои вызовы getenv/setenv под мьютекс, и пойдет дальше. Делов на пять минут. Вместо того, чтобы ныть на весь интернет о плохой libc и выдумывания новых языков, которые сами за него будут это делать. Он воспринимает мир таким, каков он есть. Написано же в доке "не потоко безопасна", значит, безопасным вызовом в многопотоке он должен позаботиться сам. Вопросы тут больше не к libc, а почему они используют в многопотоке библиотеку, которая дёргает не потоко-безопасные функции.
Почему вы решили, что ваш тест замеряет отклик сети? Такой тест может замерять что угодно - пропускную способность кэша, скорость парсера sql сервера и т.д и т.п. При выполнении запросов столько всего происходит, почему решили, что уперлись именно в сетку?
Сталкивался с таким в шейдерах на мобильниках, там float вообще может быть 16 бит. Делал процедурный фон, анимировался параметром через время в float секундах. На компе норм, на мобилках через несколько минут начинало всё дёргаться. Пришлось этот параметр на мобилках зацикливать, крутил от 0 до 30, потом обратно от 30 до 0.
Не только тренировки. Сегодня ходил в бассейн, электронный замок шкафчика два раза отказывался закрываться от браслета, думал уже придется вещи перекладывать в другой шкафчик, но на третий раз сработало. Вообще, большая часть жизни и есть повторение одних и тех же действий, с отличающимся раз от раза результатом :)
Никогда не понимал, почему все так носятся с этой фразой. Есть масса примеров, когда повторение одного и того же действия в итоге таки приводит к другому результату и изменениям.
"Тут вообще всё просто так, кроме денег" (c). Скорее всего работающими в компании и получающими равную с основателями зарплату числятся несколько ключевых сотрудников. Остальные (бухгалтерия, уборщицы, водители и т.д.) - не работают в компании, а наёмники на аутсорсе. Ну и не сказано, а участвуют ли работники вместе с основателями в распределении прибыли.
Ещё одна из особенностей sqlite - возможность расширения его возможностей через "виртуальные таблицы". В своё время сделал расширение к нему, которое дергая методы из движка 1С 7.7, представляло его дбфки в виде виртуальных таблиц, позволяя использовать движок запросов sqlite для выполнения sql запросов в дбфной 1С. Прямо из языка 1С :) Работало шустрее и гибче, чем штатные механизмы.
В 2022 году из Яндекса утекли практически все исходники. Карты, Такси и т.п. Вся монорепа утекла. Так что можно не гадать на кофейной гуще, а просто взять и посмотреть. Что-то за два года никаких громких разоблачений не вышло - ни про прослушку, ни по цены на такси...
В своё время Джоэл Спольски в статье "Верблюды и песочницы" писал - "80% пользователей используют 20% функционала программы. Но не думайте, что реализовав 20% функционала, вы удовлетворите 80% пользователей. Потому что эти 20% функционала у каждого разные".
Обычно "Следующий" - это метод объекта, и идёт после точки. Там даже Ctrl+Пробел не надо нажимать. Вообще, восприятие - дело привычки. Хорошо читающий программист видит не код, а реализуемый кодом алгоритм, и на такие мелочи быстро перестаёт обращать внимание. Я когда снегопатом активно занимался, писал и читал одновременно на 1С, С++, javascript, TypeScript, AngelScript, asm, ещё и на ruby шабашил. Нормально совершенно всё воспринималось. Больше напрягало, что в Конфигураторе надо Ctrl+Пробел нажимать, а в других IDE само выскакивало :)
При стремлении к лаконичному синтаксису и бесящих запяточках странно выглядит двоеточие между именем и типом. А так - ничего революционного не увидел, очередной недо-с++. Про управление памятью вообще ничего не написано, кроме того, что оно автоматическое. Как реализуется? Сборщик мусора, перемещения/заимствования, счётчики ссылок, возможен ли прямой доступ к памяти? Мне язык точно не подойдёт - нет шаблонов и метапрограммирования - не люблю повторятся.
Так и не понял, что тогда не реактивное программирование... То есть если какое-то событие происходит 1000 раз в секунду, то тысячекратная перерисовка интерфейса на 60 герцовом мониторе позволит мне "с лёгкостью обрабатывать огромные массивы данных и создавать адаптивный опыт и что-то там ещё из маркетинговой чуши"?
Ну так всё правильно, лучше быть богатым и здоровым, чем бедным и больным.
Как видим, у авторов статьи не получилось перестать вызывать setenv после инициализации приложения. В этом они обвинили libc, и видимо пошли искать другой дивный язык и библиотеки, которые работают идеально и без ошибок :) Эх, подвёл таки "безопасный Rust", а ведь так надеялись, что нашли серебряную пулю.
Ну почему же не поможет? Если уж такая сильная нужда будет в библиотеке, которая невозбранно в getenv лазит, что никак не отказаться от неё, то для неё можно уж и расстараться и результат в tls скопировать :) Вот если кто-то напрямую будет environ шерстить, тогда уже да...
Поверьте мне, есть масса способов заставить что-то работать так, как тебе нужно. Это я как автор механизма плагинов для Конфигуратора 1С (которых штатно нет) говорю :)
А что, какая то религия запрещает перехватить вызовы этих функций из сторонних библиотек? Или это уже утерянные знания? Под linux это делается элементарным LD_PRELOAD (https://habr.com/ru/articles/479858/). Кривую библиотеку использовать захочешь - не так раскорячишься.
Мне просто странно, что эти разработчики свой гнев не по адресу направили - разработчики libc честно написали, что get/setenv не потокобезопасна, а они теперь плачут, почему в многопотоке у них проблемы.
PS. Ошибся, кому ответ отправлять. Это ответ на коммент выше.
На это опытный программист просто перехватит вызовы get/setenv - (это элементарно делается) и завернёт таки в мьютекс. Судя по минусам, опытных программистов на хабре осталось не много.
Обычный программист старой закалки прочтет доку, пожмет плечами, засунет свои вызовы getenv/setenv под мьютекс, и пойдет дальше. Делов на пять минут. Вместо того, чтобы ныть на весь интернет о плохой libc и выдумывания новых языков, которые сами за него будут это делать. Он воспринимает мир таким, каков он есть. Написано же в доке "не потоко безопасна", значит, безопасным вызовом в многопотоке он должен позаботиться сам. Вопросы тут больше не к libc, а почему они используют в многопотоке библиотеку, которая дёргает не потоко-безопасные функции.
Почему вы решили, что ваш тест замеряет отклик сети? Такой тест может замерять что угодно - пропускную способность кэша, скорость парсера sql сервера и т.д и т.п. При выполнении запросов столько всего происходит, почему решили, что уперлись именно в сетку?
Сталкивался с таким в шейдерах на мобильниках, там float вообще может быть 16 бит. Делал процедурный фон, анимировался параметром через время в float секундах. На компе норм, на мобилках через несколько минут начинало всё дёргаться. Пришлось этот параметр на мобилках зацикливать, крутил от 0 до 30, потом обратно от 30 до 0.
Автора ставит в тупик элементарная формула расчета, которую любой одинэсник посчитает в уме за минуту? Вы кем в ИТ работаете?
Не только тренировки. Сегодня ходил в бассейн, электронный замок шкафчика два раза отказывался закрываться от браслета, думал уже придется вещи перекладывать в другой шкафчик, но на третий раз сработало.
Вообще, большая часть жизни и есть повторение одних и тех же действий, с отличающимся раз от раза результатом :)
Никогда не понимал, почему все так носятся с этой фразой. Есть масса примеров, когда повторение одного и того же действия в итоге таки приводит к другому результату и изменениям.
"Тут вообще всё просто так, кроме денег" (c). Скорее всего работающими в компании и получающими равную с основателями зарплату числятся несколько ключевых сотрудников. Остальные (бухгалтерия, уборщицы, водители и т.д.) - не работают в компании, а наёмники на аутсорсе. Ну и не сказано, а участвуют ли работники вместе с основателями в распределении прибыли.
Язык позволяет записать любые данные по любому адресу, это база. Запретите это, и это будет уже не C++. А вы "ошибки", "ошибки"...
Ещё одна из особенностей sqlite - возможность расширения его возможностей через "виртуальные таблицы". В своё время сделал расширение к нему, которое дергая методы из движка 1С 7.7, представляло его дбфки в виде виртуальных таблиц, позволяя использовать движок запросов sqlite для выполнения sql запросов в дбфной 1С. Прямо из языка 1С :) Работало шустрее и гибче, чем штатные механизмы.
В 2022 году из Яндекса утекли практически все исходники. Карты, Такси и т.п. Вся монорепа утекла. Так что можно не гадать на кофейной гуще, а просто взять и посмотреть. Что-то за два года никаких громких разоблачений не вышло - ни про прослушку, ни по цены на такси...
В своё время Джоэл Спольски в статье "Верблюды и песочницы" писал - "80% пользователей используют 20% функционала программы. Но не думайте, что реализовав 20% функционала, вы удовлетворите 80% пользователей. Потому что эти 20% функционала у каждого разные".
Обычно "Следующий" - это метод объекта, и идёт после точки. Там даже Ctrl+Пробел не надо нажимать.
Вообще, восприятие - дело привычки. Хорошо читающий программист видит не код, а реализуемый кодом алгоритм, и на такие мелочи быстро перестаёт обращать внимание. Я когда снегопатом активно занимался, писал и читал одновременно на 1С, С++, javascript, TypeScript, AngelScript, asm, ещё и на ruby шабашил. Нормально совершенно всё воспринималось. Больше напрягало, что в Конфигураторе надо Ctrl+Пробел нажимать, а в других IDE само выскакивало :)
При стремлении к лаконичному синтаксису и бесящих запяточках странно выглядит двоеточие между именем и типом.
А так - ничего революционного не увидел, очередной недо-с++. Про управление памятью вообще ничего не написано, кроме того, что оно автоматическое. Как реализуется? Сборщик мусора, перемещения/заимствования, счётчики ссылок, возможен ли прямой доступ к памяти?
Мне язык точно не подойдёт - нет шаблонов и метапрограммирования - не люблю повторятся.
Так и не понял, что тогда не реактивное программирование...
То есть если какое-то событие происходит 1000 раз в секунду, то тысячекратная перерисовка интерфейса на 60 герцовом мониторе позволит мне "с лёгкостью обрабатывать огромные массивы данных и создавать адаптивный опыт и что-то там ещё из маркетинговой чуши"?
"Чтобы выйти из зоны комфорта, надо сначала войти в зону комфорта, а у нас денег нет."
Женится тебе барин надо :)