LINUX.ORG.RU

Избранные сообщения v9lij

Включена ли у вас программная защита от Meltdown, Spectre и т. п.?

Голосования — Голосования

Чтобы увидеть, используется ли программная защита (mitigations), можно выполнить:

find /sys/devices/system/cpu/vulnerabilities/* | while read i; do echo -n "$i: " | cut -z -d"/" -f7; cat "$i" ; done
Выхлоп со включенными mitigations:
itlb_multihit: KVM: Mitigation: Split huge pages
l1tf: Mitigation: PTE Inversion; VMX: conditional cache flushes, SMT disabled
mds: Vulnerable: Clear CPU buffers attempted, no microcode; SMT disabled
meltdown: Mitigation: PTI
spec_store_bypass: Mitigation: Speculative Store Bypass disabled via prctl and seccomp
spectre_v1: Mitigation: usercopy/swapgs barriers and __user pointer sanitization
spectre_v2: Mitigation: Full generic retpoline, IBPB: conditional, IBRS_FW, STIBP: disabled, RSB filling
tsx_async_abort: Not affected

и с выключенными:

itlb_multihit: KVM: Mitigation: VMX disabled
l1tf: Mitigation: PTE Inversion; VMX: vulnerable
mds: Vulnerable; SMT vulnerable
meltdown: Vulnerable
spec_store_bypass: Vulnerable
spectre_v1: Vulnerable: __user pointer sanitization and usercopy barriers only; no swapgs barriers
spectre_v2: Vulnerable, IBPB: disabled, STIBP: disabled
srbds: Not affected
tsx_async_abort: Not affected

Для отключения программной защиты нужно добавить параметр загрузки ядра mitigations=off

  1. Не знаю 222 (47%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. Нет, так как не считаю данные уязвимости достаточно опасными 130 (27%)

    *******************************************************************************************************************************************************************************************

  3. Да, уменьшения производительности не замечаю 74 (16%)

    **********************************************************************************************************

  4. Моя система не подвержена таким уязвимостям 32 (7%)

    **********************************************

  5. Да, уменьшение производительности замечаю, но считаю эти уязвимости достаточно опасными 18 (4%)

    *************************

  6. Нет, так как производительности было недостаточно, но опасаюсь за сохранность данных 16 (3%)

    ***********************

Всего голосов: 492, всего проголосовавших: 474

 ,

r0ck3r
()

Почему решая литкод ты никогда не станешь архитектором (но на самом деле никогда не хотел им быть)

Форум — Talks

Специальный выпуск для linux.org.ru.

Когда я был юношей, то они мне говорили «вырастешь — поумнеешь». Я вырос, но не поумнел. Но иногда я жалею, что не знал тогда того, что знаю сейчас — так и хочется написать тому юноше письмо из будущего, что я и намерен импровизировать в виде треда на LOR.

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

Поскольку первых людей сильно больше, чем вторых (соответственно спросу), то массовый программист, как правило, оценивается по тому, как много решений он может выдать между двумя глотками смузи. Индустрии нужно зарабатывать деньги на массовом конвеерном фуфле, индустрии не нужны оригинальные решения. Как решить большую сложную задачу на подобном конвеере? Взять больше смузи и хлебать чаще, посадить дополнительных смузихлебов на тестирование этого дела. Самое страшное — когда в подобном духе начинает работать Boeing, и самолеты начинают падать. Можно радоваться тому, что упал не ваш самолет, а можно подумать о том, что завтра ваше авто с вами за рулем может внезапно оказаться не ваше, потому что его хакнет 7-летний китайский ребенок, и единственная реальная защита — это тот факт, что Илон Маск платит всем денеги только чтобы уязвимостями в автомобилях и инфраструктуре не пользовались злоумышленники.

Мне вспоминается старый-престарый эпизод моей жизни, как я еще будучи школьником выиграл олимпиаду по информатике. Задача была на поиск кратчайшего пути (пардон, точного условия уже не помню, это было давно и неправда). Грамотный программист быстро выдаст вам «правильное» решение O(N log N) по алгоритму Дейкстры. Но поскольку на тот момент я не знал алгоритма Дейкстры и не был грамотным программистом, то вместо «правильного» решения выдал асимптотику O(N), заэксплуатировав некоторые особенности конкретных условий той задачи.

И второй эпизод, современный. Меня выбесило одно из недавних моих собеседований: некая контора дала мне тестовую задачку, являющуюся также одной из фундаментальных задач, решаемых их продуктом. Мне просто забыли сказать, что «правильный» метод должен быть O(N^3), и я случайно потратил целый день на разработку метода O(N^2), который оказался настолько неожиданным для «сеньоров», что им понадобилась целая неделя для анализа моего решения на 500 строчек (inb4: фу-фу, лапшемес), а на собеседование со мной собрали всю верхушку — на минуту у меня сложилось ощущение, будто меня собеседуют в гугл, а не в местную помойку. Я не удивлюсь, если вся их шарашка уже работает над интеграцией моего метода, и в скором времени получит премию, мол «наш отдел провел тщательные исследования предметной области...», а тебе, мартыха, хрен с маслом. И это собравшееся начальство на собеседовании было серьезно намерено развести меня на решение еще одной важной для их помойки задачки. Большая часть их штата джуно-мидлов занимается обвязками-прокладками-интерфейсами-тестированием, короче говоря, теми задачами, под которые можно нанять горсть рабов с улицы хоть прям щас — но эти люди в жизни не смогут выдать оригинального решения, а только будут ждать команд сверху.

Вишенка на тортике — под конец мне дали задачку с литкода, которая была будто специально подобрана так, чтобы быстрое решение требовало от меня знание специфичных фич стандартной либы, которое я им изначально честно заявил как «слабое». Те функции выучиваются наизусть за пару дней, а аналитическое мышление развивается годами, но нет «ты слабоват, мы можем тебя взять, но на ЗП в два раза меньше». Вот так вот: «не подскажешь, как пройти к вокзалу?... А теперь встань раком и вези меня туда».

Что мы всё про меня да про меня. С точки зрения массовой индустрии Дуглас Крокфорд — посредственный программист, и в недавнем треде большое число отписавшихся доходчиво пояснило, почему это так. Да, подумаешь, он создал какой-то там JSON, на котором работает половина индустрии, а еще создал JSLint, который ведь оказался так себе и был вытеснен ESLint-ом, и вообще «я могу сделать лучше, просто оно мне не надо». Но печальная истина в том, что тысячи смузихлебов писали на JS безо всякого линта, и, я уверен, при возникновении онного долго противились новой технологии. Проходит время, и вот уже каждый школьник считает своим долгом задействовать ESLint и JSON, а пишет, естественно, на ES2015, добрая половина фич которого была реализована при непосредственном участии Крокфорда (кстати, мало кто знает, что Object.keys/Object.values еще в ES5 было внесено по инициативе Крокфорда) — но этот школьник понятия не имеет, откуда взялись «мои любимые технологии».

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

Более того, если допустить, что Крокфорд выдал некое супер-пупер классное решение для вашей фирмы, то возникает проблема — кто его будет поддерживать/развивать? А также так называемый Bus factor — что делать, если Крокфорда убьют Крокфорд уйдет? Типовой сеньор-помидор, посмотрев на код Крокфорда, выпучит глаза и закричит «ты где такое видел? Кто так делает? У тебя своя голова на плечах есть?».

Всё ли так безнадежно, и есть ли более-менее прикладные задачи, которые не сможет решить сеньор-принципал-архитектор даже в обнимку с цистерной смузи, даже выдавая по два заученных решения литкода в секунду? А может быть и есть. Например, быстрой инкрементальной Agile Scrum Kanban Fast-shipping Test Driven методикой постепенной разработки невозможно реализовать распределенную отказоустойчивую БД со строгой согласованностью данных. Отказоустойчивость — это бинарное свойство, БД либо отказоустойчива, либо нет. Не бывает почти отказоустойчивой приблизительно распределенной БД которая чуть ли не сохраняет все подтвержденные транзакции (привет разработчикам MongoDB). Ну то есть она в таком случае не отказоустойчива и не дает гарантий.

Даже Clickhouse можно почти сделать при достаточном стратегическом запасе смузи (только для единственного хоста), но яндекс так и не осилил аналога ZooKeeper (кластер ClickHouse работает через ZooKeeper), поскольку никакое количество костылей, инкрементально разработанных в Яндексе ранее, так и не смогли заменить одного грамотно продуманного решения. Что мы по итогу видим сейчас? Вся инфраструктура Яндекса стоит на ZooKeeper, найди возможность положить ZooKeeper — весь Яндекс встанет колом. Тот же Facebook тоже полагается на ZooKeeper (хоть и меньше, они там саги любят). В Amazon вообще всё печально, и я не поверю, что с любым количеством денег Amazon способен создать аналог ZooKeeper, поскольку я читал статьи их отдела по исследованию распределенных систем, и уровень там совершенно никакущий. Достоверно мне известна ровно одна контора, способная разрабатывать распределенные СУБД с гарантиями согласованности — это Google. Она разработала самое первое подобное решение, Google Chubby, близкой копией которого позже стал ZooKeeper.

Но вот в чем проблема — ZooKeeper уже есть, а значит «ты нам не нужен». Что же еще требует глубокого вдумчивого погружения и нестандартной находчивости? Похожие требования есть у многопоточных приложений. Еще подобного рода мышление нужно при тяжелой глубокой отладке софтины, на отладку которой систематически забивали, предпочитая спринты и быстрые релизы. Правда, с распространением защищенных сред выполенния, вроде JVM, CLR, JS, и Python, неустранимая потребность в отладке сильно снизилось, потому что в крайнем случае можно просто перезапустить контейнер или иметь запасные контейнеры сразу. (Еще есть UI/UX, но про мертвых либо хорошо, либо ничего).

Второй отягчающий фактор — обычно такие вечные дети-экспериментаторы любят знать всё про всё. Следствие — редко можно встретить такого экспериментатора, который знает единственную тематику очень-очень глубоко, как того требует конвверное производство софта. Например, я проектировал и собирал аналоговые схемы, я проектировал и моделировал логические схемы, изучал устройство процессоров и проектировал микроконтроллеры, в конце-концов начал работать программистом, вплоть до самого высокого уровня динамических языков программирования. Я знаком с компьютерами сверху донизу, но эти общие знания не помогают получить теплое место у конвеерной ленты (о чем я был давно осведомлен и систематически игнорировал этот фактор).

Третий отягчающий фактор — вечно детскими глазами не получается избавиться от «о боже, это срань, этим невозможно пользоваться». Вы могли заметить, что я довольно много писал на Си, но не потому, что мне так нравится этот язык — он просто чуть менее страшный и подходит для моих задач, в остальном же нет особой разницы, из чего лепить свою софтину.

Парадокс в том, что смузи-мастеры чуть ли не поголовно мечтают быть творцами. Какой смысл этого стремления? «Хорошо там, где нас нет»? «Полчаса побунтовал - и фатит»? Прежде чем окончательно и бесповоротно решить встать на этот путь, посмотрите на настоящих успешных творцов (не путать с клоунами вроде меня или Илона Маска). Такие люди не заработают заоблачных денег, их не расхватывают на рынке труда, им не так просто устроиться на обычную должность, а даже если устроятся — умрут со скуки, попутно занимаясь ремонтом того, что не ломалось, таким образом выведя из строя какой-нибудь старый добрый сервис на Cobol или MUMPS, написанный в 70-х годах «настоящими программистами, настоящими, не то что новое поколение».

Показательно, что работодатели идут навстречу этому стремлению, мол «пишешь конфиги для CI/CD? Ну ты же архитектор теперь». Аналитический склад ума нельзя поменять за месяц, его нельзя быстро приобрести или положить на полку на период отпуска. Wannabe-творец-на-выходные в лучшем создаст популярный клон существующего софта — даже не потому, что не способен ни на что другое, а потому, что понимает, что сообщество не примет ни одной значимой инновации серьезнее плагина к Emacs или очередных скрипт-костылей для сборки C++. Да и то, плагины к Emacs не нужны, поскольку уже есть настоящее проверенное решение в виде Vim и его аналогов.

И я не могу упрекать работодателей (как правильно заметил Kogrom по ссылке выше): им нужна взаимозаменяемость и предсказуемость, им нужно снижение рисков и издержек; им нужен посредственный сайт, который будет создавать иллюзию наличия этого сайта у компании — а больше и не нужно; заказчикам нужна иллюзия масштабирования и отказоустойчивости, с бессмысленными невыполнимыми требованиями к системы — выдайте ему микросервисную архитектуру со стоимостью и временем разработки в 3 раза больше грамотного монолита, также бонусом дайте ценные инструкции по масштабированию бигдата-серверов монги сверх 500 ГБ (на случай, если его бигдата размещается в кластере из айфонов). Можно упрекать разве что себя (мне — себя, а вам — себя, не меня). Например, много лет назад я имел возможность выбрать семью и карьеру, но я выбрал то, что выбрал — не иметь власти, но знать всё и ничего одновременно. В этом есть свой кайф и неудобство одновременно.

 , , , опус,

byko3y
()

Запуск экспериментального репозитория бинарных пакетов для Gentoo

Новости — Gentoo Linux
Группа Gentoo Linux

Разработчик Gentoo Andreas K. Huettel объявил в своём блоге о запуске экспериментального репозитория бинарных пакетов для систем на архитектуре amd64.

( читать дальше... )

>>> Репозиторий

>>> Подробности

 , ,

grem
()

Pi-KVM вышел на Kickstarter

Новости — Hardware and Drivers
Pi-KVM вышел на Kickstarter
Группа Hardware and Drivers

Спустя год после первого релиза, Pi-KVM представил свое собственное железо на Kickstarter.

Pi-KVM - это проект, объединяющий в себе софт и инструкции, которые позволяют превратить Raspberry Pi в полностью функциональный IP-KVM. Это устройство подключается к HDMI- и USB-портам сервера, и позволяет управлять им удаленно по сети, независимо от операционной системы. Можно включить, выключить или перезагрузить сервер, настроить BIOS и даже полностью переустановить ОС с образа на эмулированном виртуальном носителе. Вся функциональность (в том числе и передача видео) доступна через веб-интерфейс, не требующий никаких дополнительных плагинов и апплетов, и реализованный только средствами HTML5.

( читать дальше... )

>>> Подробности

 , , , ,

liksys
()

Умственные способности отрицательно коррелируют со склонностью к «правой» идеологии и предубеждениям

Форум — Science & Engineering

Оригинальная публикация (платный доступ)

Полный текст (Sci-Hub)

Резюме

Когнитивное функционирование индивидов, строго приверженных «правым» позициям и предубеждениям, привлекает значительный научный интерес. Несмотря на то, что исследованию когнитивных стилей посвящено множество работ, когнитивным способностям уделяется меньшее внимание. Работы, посвящённые этой теме, в целом показывают ассоциацию сниженных когнитивных способностей с более выраженной поддержкой «правых» идеологических установок и повышенным уровнем предубеждения. В то же время, эта взаимосвязь мало учитывается в литературе. Данный мета-анализ выявил среднюю величину эффекта r = −.20 [95% доверительный интервал [−0.23, −0.17] на основании 67 работ, N = 84017] для взаимосвязи между когнитивными способностями и «правыми» идеологическими установками, и r = −.19 (95% доверительный интервал [−0.23, −0.16]; на основании 23 работ, N = 27011) для взаимосвязи между когнитивными способностями и предубеждениями. Величина эффекта для различных когнитивных способностей и характеристик выборки значительно не варьировала. Эффект строго зависел от меры, по которой оценивались идеологические установки и предубеждения, и имел наибольшую величину для авторитарности и этноцентризма. Таким образом, когнитивные способности являются важным фактором, определяющим развитие идеологических установок и предубеждений, и им следует уделять больше внимания при построении теорий и моделей.

Авторы выделяют 4 основных вывода, которые позволяет сделать данная работа:

  1. Люди, располагающие бо́льшими когнитивными ресурсами, с большей вероятностью придерживаются «левых» взглядов и склонны к меньшей предубеждённости, тогда как люди с меньшими когнитивными способностями более склонны к «правым» взглядам и предубеждённости.
  2. Величина эффекта различалась для разных типов широких когнитивных способностей (по теории Каттелла — Хорна — Кэрролла). Самая сильная связь показана для постижения знаний (r = -.23), тогда как для подвижного логического хода мысли и кратковременной памяти корреляция оказалась слабее (r = -.13 и r = -.12 соответственно). Это указывает на то, что вербальные способности сильнее связаны с выбором идеологической позиции, чем численное и математическое мышление.
  3. Величина эффекта различалась для разных типов идеологических позиций и предубеждений. Связь когнитивных способностей с авторитарностью была выражена сильнее, чем с консерватизмом и догматизмом. Среди типов предубеждений величина эффекта для этноцентризма была больше, чем для предвзятости в отношении конкретных аутгрупп (например, этнических меньшинств или представителей ЛГБТ сообщества).
  4. Статистический анализ не выявил значимых признаков систематических ошибок, внесённых избирательностью публикаций или влиянием выбивающихся или непропорционально весомых исследований, что говорит о робастности полученных мета-аналитических выводов.

 journal club, консерватизм, , социальная психология

Axon
()

Серия статей «По языку в день» от Андрея Шитова

Новости — Разработка
Группа Разработка

Андрей Шитов, известый Perl-разработчик, решил в этом году попробовать как можно больше языков программирования и поделиться опытом с читателями.

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

В рождественском календаре этого года (с 1 по 24 декабря), я буду ежедневно публиковать статьи повествующие об основах различных языков программирования: один день - один язык. Чтобы сделать обзоры более полезными, я постараюсь придерживаться единого формата и разобрать аспекты языка, необходимые для написания следующих мини-проектов:

  • Hello, World!
  • Функция, вычисляющая факториал рекурсивно или в функциональном стиле
  • Программу, создающую массив объектов и выполняющую полиморфный вызов методов на них
  • Реализацию сонной сортировки (sleep sort). Данный алгоритм не применяется в боевых условиях, но замечательно демонстрирует возможности языка в разрезе конкурентности

Список языков:

  • День 1. TypeScript
  • День 2. Rust
  • День 3. Julia
  • День 4. Kotlin
  • День 5. Современный C++
  • День 6. Crystal
  • День 7. Scala
  • День 8. Dart
  • День 9. Hack
  • День 10. Lua
  • День 11. Raku
  • День 12. Elixir
  • День 13. OCaml
  • День 14. Clojure
  • День 15. Nim
  • День 16. V
  • День 17. Go
  • День 18. Hy
  • День 19. Red
  • День 20. Mercury
  • День 21. Elm

>>> Подробности

 ,

perl5_guy
()

Для тех, кто думает перейти на Gentoo

Форум — General

Привет

Достаточно часто создаются темы, где люди думают переходить на Gentoo и хотят уточнить некоторые моменты. Чтобы сэкономить время себе и другим, решил создать этот топик, в котором буду собирать ответы на частые вопросы.

TL; DR: Для тех, кто думает перейти на Gentoo (комментарий)

Преимущества
#1 Gentoo очень гибкая и всенастраиваема
Пример того что в Gentoo делается просто:
- Использовать openrc вместо systemd или наоборот; pulseaudio или без него
- Наложить кастомный патч; пример когда это нужно
- Подключить или отключить такие вещи как vaapi, vdpau, opencv и т. п.
- Иметь несколько веток софта; уточню, что это работает только для определённых пакетов; например можно одновременно установить python 2.7, 3.4, 3.5 или qt4 и qt5, но нельзя одновременно установить qt 5.7 и 5.8

#2 Очень удобный и функциональный пакетный менеджер
Примеры удобных фич:
- Прервать установку (вплоть до перегрузки компьютера), а потом ее продолжить. Можно продолжить с последнего пакета (emerge --resume), продолжить но пропустить последний пакет, например, если его установка прервалась с ошибкой (emerge --resume --skipfirst, некоторые нюансы); для больших пакетов можно продолжить саму компиляцию (ebuild <полный путь и имя файла>.ebuild merge).
- Когда при установке обновляется конфиг приложения, определяется редактировался ли предыдущий конфиг пользователем. Если да, конфиг не перезаписывается, а кладётся радом, и выводится сообщение пользователю с предложением обновить конфиг.
- Обновить всю систему, но исключить некоторые пакеты (удобно для исключения больших пакетов из ежедневного обновления)
- Почистить зависимости - удалить те пакеты, которые больше никому не нужны.
- Поскольку ebuild - текстовый файл, то можно пропарсить на предмет требований к количеству ресурсов для установки:

$ for F in $(find /usr/portage -name "*.ebuild") ; do REQ=$(grep "CHECKREQS" "$F") ; if [[ -n "$REQ" ]]; then echo -e "\n$F\n$REQ" ; fi; done
- Вынести компиляцию на другой компьютер (поддержка distcc на уровне пакетного менеджера). Важно когда Gentoo устанавливается на слабый компьютер.


#3 Хорошая документация, по крайней мере на английском. Более того, поскольку Gentoo-специфичные утилиты являются лишь надстройкой на generic механизмами, документация от других дистрибутивов (например от Arch) в большинстве случаев тоже подходит.
Опрос 2014: У какого дистрибутива лучшая документация

#4 Достаточно свежий софт, много сторонних репозиториев.
Список сторонних репозиториев
Gentoo - rolling release, а значит как только новая версия конкретного софта появилась в репозитории, её можно установить. Но здесь не имеется ввиду, что как только новая версия зарелизилась, она моментально становится доступна в основном дереве; лаг есть, но он как правило не большой, хотя зависит от пакета. В тестинг ветке новые версии появляются раньше. Кроме того мейнтейнеры Gentoo могут маскировать некоторые версии, если в них обнаруживаются серьезные баги. Однако всегда можно размаскировать нужную версию. Кроме того для некоторых пакетов есть -live версии, когда исходники скачиваются напрямую из github или аналога.
Пример когда «у меня не самый свежий софт в Gentoo»

#5 Полный порядок в системе, ничего лишнего - эстетическое удовольствие, плюс возможно можно немного улучшить перформанс

#6 В процессе установки и эксплуатации получаешь полное понимание как работает система, а значит возникающие проблемы решаются быстро. На самом деле без должного знания Линукса (или желания его узнать в процессе) Gentoo нормально не установить.

Недостатки
#1 Сложная и долгая первичная установка. Если устанавливать в первый раз, нужно готовиться потратить несколько дней. Для опытных - несколько часов + компиляция.
Время установки (компиляции) Gentoo, еще немного цифр по большим пакетам

#2 Пакетный менеджер хоть и удобный, но очень медленный

#3 Если не обновлять систему долго (полгода и более), то сложность обновления сопоставима с установкой новой системы. Есть мнение, что emerge-webrsync --revert=yyyymmdd должен помочь (лично я не проверял).

Особенности
#1 Высокий порог входа; дистрибутив не для новичков. Если человек не комфортно чувствует себя в командной строке, никогда не компилировал ядро, не разбивал диски на разделы, не привык изучать докуменацию, вчитываться в сообщения и анализировать логи, то Gentoo покажется сложной в обслуживании, а возникающие проблемы будут списываться на дистрибутив.

#2 Обновляться нужно часто.

#3 Основные фичи - в командной строке. Для тех, кто не привык работать в командной строке, это будет минусом. А для тех, кто комфортно чувствует себя в командной строке, это будет плюсом, так как работа в командной строке более эффективна, а типовые сценарии можно обернуть в скрипты и еще больше сократить время на обслуживание системы.

#4 Есть две ветки: stable и testing. В stable меньше шансов встретить проблему, но в testing более свежий софт. Ветки можно комбинировать.

Мифы
Миф #1 Gentoo даст прирост производительности за счет того, что весь софт компилируется под конкретное железо.
Краткий ответ: В 99% случаев при смене дистрибутива X на Gentoo вы не заметите какого-либо улучшения в плане скорости работы. Если вы зададитесь целью сравнить свежеустановленный дистрибутив X с свежеустановленной Gentoo, то в 90% вы не увидите значительной разницы.

Детальный ответ.
Не следует ожидать что просто скомпилировав систему из исходников вы получите сколько-нибудь заметное улучшение перформанса.
Для большинства приложений компиляции под конкретное железо даст прирост производительности в районе 1-2%.
Ложка дегтя: в некоторых случаях даже может быть замедление. Например Firefox, можно ускорить с помощью PGO. В Gentoo по умолчанию это отключено, так как PGO увеличивает время компиляции почти в два раза. В бинарных дистрибутивах соотв. софт может быть скомпилирован с PGO.
Так как добиться улучшения производительности? Узкий круг приложений может быть значительно ускорен при компиляции под конкретную платформу - на 30%-50% и больше. В основном это приложения которые активно занимаются вычислениями. Но для этого требуется соотв. настройки. Например, активация SIMD инструкций, даст прирост производительности в мультимедиа приложениях. Некоторые процессоры имеют аппаратную поддержку шифрования AES. В бинарных дистрибутивах подобные фичи будут отключены, так как не все процессоры это поддерживают, а бинарные дистрибутивы в первую очередь заботятся о совместимости.
Небольшое улучшения перформанса возможно если убрать из системы всё лишнее (мнение 1, мнение 2).
Еще интересный случай

Миф #2 Обновления занимают много времени
Краткий ответ: 5-10 минут на фоне, не мешая основной работе.

Детальный ответ.
Обновления не занимают много времени, но опять же, при правильном подходе.
Во-первых, как было сказано выше, обновляться нужно часто. Для testing ветки это каждый день, или по крайней мере не реже чем в раз 2-3 недели. Для стабильной ветки - раз в неделю достаточно (на стабильной ветке намного реже выпускаются обновления)
Во-вторых, есть пакеты которые правда очень долго компилятся: libreoffice, firefox, chromium... Их всего 10-15. Я их исключаю из ежедневного обновления, а обновляю раз в несколько месяцев.
Еще нужно сказать, что на этом вопросе часто заостряют неоправданно много внимания. Обычно обновления происходят на фоне, и не сильно влияют на работу; так какая разница как долго они выполняются?
В итоге, у меня обновления занимают примерно 5-10 мин ежедневно (у меня тестинг-ветка).
К тому же всё происходит на фоне, в любой момент можно поставить на паузу (Ctrl+Z, fg), продолжить после прерывания (умышленного или случайного).
Мой скрипт ежедневного обновления

Миф #3 Gentoo требует много времени на обслуживание
Краткий ответ: Может быть больше, может быть меньше по сравнению с другими дистрибутивами. Очень зависит от того, насколько вы будете вчитываться в то, что пишет вам пакетный менеджер, и разбираться первопричинах.

Детальный ответ.
Обслуживание Gentoo занимает меньше времени по сравнению с другими дистрибутивами, но только при грамотном обращении, конечно. Достигается это за счет следующего:
- хороший пакетный менеджер: маскировки, глобальные и индивидуальные установки для пакетов (USE флаги, опции компиляции, каталоги), хуки, приоритеты (чтобы компиляция происходила на фоне и можно было работать), много опций для установки и анализа, подсказки после установки.
- всё происходит в CLI, а значит типовые операции можно обернуть в скрипты/алиасы.
- уже существуют много утилит для облегчения обслуживания: eselect, equery, eix, eclean, euse, genlop и др.
Грамотное обращение означает, что вы правильно и регулярно обновляете систему, исполняете предписания emerge, которые он выдает после установки, держите в порядке конфигурационные файлы, а если таки возникает проблема, которую решить вы не можете, то вы обращаетесь в форумы, а не просто жалуетесь на жизнь.
Что до проблем с обновлениями - см. следующий пункт «Миф #4 Установка, обновление постоянно падают; частые блокировки»

Миф #4 Установка, обновление постоянно падают; частые блокировки
Краткий ответ: Не чаще чем в других дистрибутивах

Детальный ответ.
Если говорить про «часто» и «постоянно», то проблемы с обновлением/установкой могут быть если:
- система давно не обновлялась
- система неправильно обслуживается (см. выше про Грамотное обращение)

В редких случаях пакет просто не компилируется. На самом деле это проблема не Gentoo, а тех, кто писал этот софт. И в подавляющим большинстве случаев это не является проблемой, и вот почему. Если это обновление, то можно продолжить процесс запустив emerge с параметрами --resume --skipfirst - он обойдет проблемный пакет, пересчитает зависимости чтобы система осталась консистентной, и продолжит обновление (а можно изначально передать параметр --keep-going, тогда это будет происходить автоматически, прерываний вообще не будет). Если пакет критичен, можно установить предыдущую версию, которая компилировалась (а проблемную замаскировать чтобы пакетный менеджер ее не видел).

Что может заблокировать обновление полностью:
- просьба пакетного менеджера поменять флаги пакета. При этом emerge предлагает сделать это автоматически, но лично я предпочитаю делать вручную. Для ручного способа, решается добавлением строчки в package.use
- просьба пакетного менеджера задать лицензию. Это валидно только для не-свободных лицензий, например EULA, Skype, Adobe Flash и т. п. Если мы говорим имено про обновление, то такое бывает только когда лицензия обновляется, что бывает очень редко (как много у вас пакетов под не-свободной лицензией, и как часто они меняют лицензию?). Решается добавлением одного слова в make.conf
- просьба пакетного менеджера размаскировать пакет. По моему опыту нужно не размаскировывать, а наоборот замаскировывать пакеты, которые тянут замаскированные зависимости. Это, да, требует минут 5-10 на разобраться. Но, если только у вас нет смешения веток и live пакетов, такой вариант случается раз в пятилетку.
- сложные блокировки. Большинство блокировок пакетный менеджер разрешает сам; по моим наблюдениям, качество данного механизма значительно улучшилось пару лет назад. Из своего опыты скажу, что (учитывая частые обновления) блокировок, которые бы совсем останавливали обновление я уже не видел года 1.5. Но если они есть, то это действительно сложный кейс.

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

Миф #5 В Gentoo нет бинарных пакетов
Краткий ответ: Есть там, где это действительно нужно.

Детальный ответ
Во-первых есть Calculate Linux - полностью бинарный форк Gentoo.
Во-вторых даже в самом Gentoo в основном репозитории есть несколько бинарных пакетов: libreoffice-bin, firefox-bin, некоторые другие. Связано это с тем, что из исходников они очень долго компилируются, и иногда проще поставить бинарник.
Бинарный пакет можно сделать самому командой quickpkg --include-config y <установленный пакет> - удобно для бекапов.

FAQ

#1 Установка на слабый компьютер
Смотря что есть слабый компьютер.
Из собственного опыта: Intel Core2 Duo 6600 @ 2.40GHz, 2Gb RAM + 4Gb swap хватало для комфортной работы в Gentoo.
Зачастую ebuld'ы содержат информацию о том, сколько нужно памяти для компиляции пакета. TOP 5:
16G - chromium
8G - ledger, isabelle
7G - ceph
6G - firefox x64 (для x32 нужно 3G), pypy x64 (для x32 нужно 3G)
5G - electron
Если компьютер и вправду слабый, то лучше выбрать не Gentoo (точнее не-source-based дистрибутив). Альтернатива - можно вынести компиляцию на другой «не-слабый» компьютер с помощью distcc.


Опрос 2021: Какую операционную систему и/или дистрибутив GNU/Linux вы используете на ПК?
Опрос 2018: Какой ОС вы пользуетесь на основном ПК?
Опрос 2017: Какую ОС вы используете на основном ПК?
Опрос 2014: Какой дистрибутив вы используете на десктопе?
W3Tech стастика дистрибутивов на серверах
Отличия дистрибутивов, время работы ноутбука
Чем удобны USE флаги
Сколько памяти нужно для РАБОТЫ Gentoo (сколько нужно для компиляции было указано выше)
Сколько места на диске нужно для Gentoo
Правильное полное обновление Gentoo, Мой скрипт ежедневного обновления, Еще вариант
Gentoo для девелоперов
Практика инсталляции Gentoo: в двух словах простым языком
Небольшой скрипт - сборка livecd

 

Kroz
()

Импорт пакетов в Go из подгрупп Gitlab

Форум — Web-development

Начну сразу с того, что эту тему я создал не для обсуждения GOPATH (юзаю модули, не актуально).

Недавно разрабатываю на Go - и очень смущает факт того, что импорт в этом языке завязан на Github и его особенности. Может я чего-то не так понял, но все же. Например, вот обычный импорт:

import "github.com/username/project"

То есть сначала идет домен, потом юзер, потом проект. Но, кроме Github, есть еще и Gitlab, например. И в нем могут быть группы, в которые вложены другие группы, в которых уже идут проекты. Как правильно сделать импорт таких библиотек? То есть что-то типа такого:

import "gitlab.com/username/customgroup/customsubgroup/project"

И это не работает. Уже извращался с replace (https://github.com/golang/go/wiki/Modules#when-should-i-use-the-replace-direc...) - не помогло.

Есть какие-то нормальные способы сделать импорт go-либы из Gitlab, которая находится внутри группы?

 , ,

dimuska139
()

Примочки для терминала

Форум — Talks

Иногда делаю для себя маленькие открытия типа таких:

autojump: https://github.com/wting/autojump/

hstr: https://github.com/dvorka/hstr

О каких ещё полезных при работе в терминале штуках я не знаю?

P.S. Использую zsh без oh-my-zsh.

 , ,

aquadon
()

Мой проект по сбору проксей

Форум — Development

Всем привет, некоторое время назад я написал программу для сбора и проверки проксей, сейчас это уже полноценный проект, который предоставляет от 1000 почти до 9000 рабочих проксей в зависимости от времени суток. Написано на питоне с SQLAlchemy в качестве ORM и aiohttp в качестве клиентской(проверка проксей) и серверной(API) части.

Собрать и почитать описание можно тут: https://github.com/DevAlone/proxy_py

Скачать готовый образ виртуальной машины тут: https://drive.google.com/file/d/1oPf6xwOADRH95oZW0vkPr1Uu_iLDe9jc/view?usp=sh...

Пользователь user, пароль qwerty. Сейчас там чуть больше 4000 проксей.

После импорта, проверьте, что порт форвардинг всё ещё есть. Прокси отдаются с порта 55555, получить 100 самых быстрых проксей можно так:

http localhost:55555 model=proxy method=get order_by=response_time limit=100 offset=0

или используя curl

curl -X POST http://localhost:55555 --data '{"model": "proxy", "method": "get", "order_by": "response_time", "limit": 100, "offset": 0}'

Также есть веб интерфейс в стиле lib.ru:

http://localhost:55555/get/proxy/

http://localhost:55555/get/proxy_count_item/

http://localhost:55555/get/collector_state/

 , , ,

devalone
()

Посоветуйте чем вещать видео

Форум — Multimedia

Дома всё видео раздаётся по dlna (minidlna) через LAN и Wi-Fi. Теперь передо мной стоит вопрос чем это же видео можно вещать через интернет, очень желательно наличие приложения для android + веб-морда. В наличии свой сервер с белым статическим IP. По возможности opensource.

 , ,

ptah_alexs
()

хочу научиться разруливать ошибки emerge

Форум — General

здравствуйте, очередной раз словил ошибку от emerge:

Calculating dependencies... done!
[ebuild     U  ] app-arch/gzip-1.8 [1.6] USE="pic*" 
[ebuild  N     ] www-plugins/chrome-binary-plugins-55.0.2883.75  USE="widevine" 
[ebuild     U  ] media-libs/libvpx-1.6.0-r1 [1.6.0] USE="highbitdepth%* svc*" 
[ebuild  N     ] dev-libs/re2-0.2016.05.01  USE="icu" ABI_X86="(64) -32 (-x32)" 
[ebuild     U  ] media-libs/harfbuzz-1.3.4 [1.2.7]
[ebuild     U  ] media-video/ffmpeg-3.2.2 [2.8.6] USE="-chromaprint% -ebur128% -gcrypt% -gmp% -kvazaar% -libilbc% (-mmal) -nvenc% -openh264% -rubberband% -zimg%" CPU_FLAGS_X86="-aes%" 
[ebuild  N     ] www-client/chromium-56.0.2924.21  USE="cups custom-cflags gnome gnome-keyring hangouts kerberos (pic) proprietary-codecs pulseaudio suid system-ffmpeg tcmalloc widevine (-gtk3) (-neon) (-selinux) {-test}" L10N="am ar bg bn ca cs da de el en-GB es es-419 et fa fi fil fr gu he hi hr hu id it ja kn ko lt lv ml mr ms nb nl pl pt-BR pt-PT ro ru sk sl sr sv sw ta te th tr uk vi zh-CN zh-TW" 

!!! Multiple package instances within a single package slot have been pulled
!!! into the dependency graph, resulting in a slot conflict:

media-video/ffmpeg:0

  (media-video/ffmpeg-3.2.2:0/55.57.57::gentoo, ebuild scheduled for merge) pulled in by
    >=media-video/ffmpeg-3:= required by (www-client/chromium-56.0.2924.21:0/0::gentoo, ebuild scheduled for merge)
    ^^                   ^                                                                                                                                                                   

  (media-video/ffmpeg-2.8.6:0/54.56.56::gentoo, installed) pulled in by
    =media-video/ffmpeg-2*:0/54.56.56= required by (dev-qt/qtwebengine-5.6.1:5/5.6::gentoo, installed)
    ^                   ^^^^^^^^^^^^^^                                                                                                                                          
    >=media-video/ffmpeg-2.2:0/54.56.56= required by (media-video/vlc-2.2.4:0/5-8::gentoo, installed)
                            ^^^^^^^^^^^^                                                                                                 
    media-video/ffmpeg:0/54.56.56= required by (media-video/vlc-2.2.4:0/5-8::gentoo, installed)
                      ^^^^^^^^^^^^                                                                                                 
    <=media-video/ffmpeg-2.9:0/54.56.56= required by (media-video/vlc-2.2.4:0/5-8::gentoo, installed)
    ^^                   ^^^^^^^^^^^^^^^                                                                                                                                       
    =media-video/ffmpeg-2*:0= required by (dev-qt/qtwebengine-5.6.1:5/5.6::gentoo, installed)
    ^                   ^^^^^                                                                                                                                          
    >=media-video/ffmpeg-2.6:0/54.56.56= required by (media-video/mplayer-1.2.1:0/0::gentoo, installed)
                            ^^^^^^^^^^^^                                                                         
в общем решалось всегда как-то рандомно... но теперь решил разобраться основательно... пишет, что несколько версий пакета засунуты в один слот. ну логично предположить, что установленные пакеты media-video/ffmpeg-2.* есть, но они мешают установиться media-video/ffmpeg-3.*, поэтому маскируем их, и новый должен установиться ничего не зная о старых... маскирую старые - проблема не уходит... вот как решать такие вещи? вроде же все логично расписал

 ,

xperious
()

Я вычистил выгребную яму, почисть и ты.

Форум — General

Что заставляет нас красноглазить, тратить время не на организацию реальной жизни, спорт, образование, а именно на оголтелое красноглазие? Я не знаю, у меня нет ответа на этот вопрос, поэтому я решил покрасноглазить, в общем не буду тянуть время, зацените как я организовал себе юзфлаги:

ARCHSUSE="7z bzip bzip2 lz4 lzma lzo p7zip rar tar unrar xar xz zip zlib"
AUDIOUSE="aac aacplus alac ape celt cue faac faad flac id3tag lame m3u mad modplug mp3 musepack ogg opus sndfile soundcloud speex taglib theora twolame vorbis wavpack wma"
FILESUSE="f2fs fat hfs ntfs"
FONTSUSE="cairo cjk corefonts enca fontconfig freetype iconv icu idn infinality nls pango truetype unicode xft"
IMAGEUSE="apng exif gif jbig jpeg jpeg2k jpg lcms pic png raw svg tiff webp xpm"
VIDEOUSE="a52 cdio dirac dts dv dvd dvdnav h264 m4a matroska mp4 mp4v2 mpeg quicktime schroedinger vpx x264 x265 xv xvid"
USE="-consolekit -debug -doc -gnome -handbook -kde -pulseaudio -systemd $ARCHSUSE $AUDIOUSE $FILESUSE $FONTSUSE $IMAGEUSE $VIDEOUSE X alsa bash-completion curl dbus udev vim-syntax"

Вот и всё, возможно, кто-то из вас додумался до этого 10 лет назад, но до меня дошло только с утра. Кстати здесь нет ничего лишнего, я не от фонаря взял, а 99% того, что используется в системе.

 , ,

slon
()

Выбор велика - 3 варианта

Форум — Talks

Привет ЛОР! Очень нуждаюсь в твоей помощи, я же знаю тут сидят специалисты по всему.

Помогите выбрать велосипед, три варианта:

Для поездок на работу и в булочную. Для более дальних расстояний есть мот и машина.

Хочу чтобы один раз настроил и забыл, потом чтобы цепь только смазывать, короче чтобы не ковыряться с ним, чтобы переключатель скоростей четко работал и легкий был он. И крепкий. Ну и смотрелся прилично.

 ,

anterior
()

Как мне поставить systemd на slackware?

Форум — Talks

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

По разным причинам, из хорошо поддерживаемых (относительно) дистрибутивов, не изменившихся в управлении за ...цать лет (и похожих на старую солярку с 386BSD) остались только слака/salix.

И вот гипотетический мысленный эксперимент для тех, кто не понимает нелюбителей systemd в дистрибутивах: представьте, что Вам нужно поставить systemd с вейляндом на slackware. Не важно, зачем... Просто Вы вынуждены.

PS. Решено, надо поставить Fedora.

 ,

Shadow
()

Лучшая материнская плата для процессоров Intel

Форум — Linux-hardware

Решился не ждать новых процессоров Intel 5-й серии, а собирать машину на Intel Core i7-4790. Разгон мне не нужен, а нужна от аппаратной системы только хорошая поддержка виртуализации. В связи с этим, прошу посоветовать материнскую плату под данный процессор. Главные критерии - беспроблемность с GNU/Linux и полная поддержка аппаратной виртуализации (слышал, что бывают нюансы с поддержкой VT-d).

 , , , ,

int13h
()

Syncthing 0.11 — открытая кроссплатформенная программа для синхронизации и резервного копирования

Новости — Open Source
Группа Open Source

Состоялся очередной выпуск Syncthing — открытой кроссплатформенной программы для синхронизации и резервного копирования, написанной на языке Go. По своим возможностям она аналогична BitTorrent Synс: заявлена синхронизация файлов между узлами в P2P-сети без участия сервера. Для этого используется собственный открытый протокол BEP («Block Exchange Protocol»).

Возможности программы:

  • Синхронизация папок, файлов, времени изменения, прав доступа, символических ссылок.
  • Поддержка синхронизации на уровне блоков. При малом изменении в большом файле будет синхронизироваться лишь изменившаяся часть. При переименовании синхронизируются лишь изменившиеся метаданные.
  • Возможность явно указать, каким узлам будет доступна синхронизируемая директория.
  • Опция «master-slave», благодаря которой другие узлы будут лишь синхронизироваться с данной директорией, но не смогут изменять её содержимое.
  • Управление через отзывчивый веб-интерфейс, консольный клиент и графическую оболочку Syncthing-GTK.
  • Кроссплатформенность. Поддерживаются операционные системы Linux, Mac OS X, Windows, Android, FreeBSD, OpenBSD, NetBSD, DragonFlyBSD и Solaris.
  • Одинаково хорошая работа в пределах LAN и через Интернет.
  • Безопасность и приватность. Данные хранятся на клиентских машинах, не требуется взаимодействие со сторонним сервером. Поддерживается TLS.
  • Открытый исходный код приложения (лицензия MPL) и открытый протокол.

Изменения в версии 0.11:

  • Реализован механизм разрешения конфликтов при одновременном изменении файла с нескольких устройств. Конфликтующая более старая копия теперь автоматически переименовывается в «имяфайла.sync-conflict-YYYMMDD-HHMMSS.расширение»
  • Графический интерфейс теперь потребляет меньше ресурсов процессора
  • Сборщик мусора меньше нагружает процессор при работе с большими файлами. Ускорена синхронизация таких файлов.
  • Изменился формат базы данных (для ускорения синхронизации при наличии множества мелких файлов). Syncthing 0.11 несовместима с более ранними версиями.
  • Улучшен интерфейс программы. В веб-интерфейс добавлен выбор языка и отображение времени непрерывной работы узла.
  • В Windows-версии максимальное количество символов в пути и имени файла увеличено с 255 до 32767.

Доступны готовые сборки, скриншоты, руководство по быстрому запуску и прочая документация.

>>> Подробности

 , ,

anonymous
()

Сервер сетевой установки

Форум — Admin

Приветствую, коллеги! Подумалось мне, что парк железа уже весьма большой и разнообразный и надо бы сделать сервак или виртуалку с DHCP/BOOTP-сервером, которая будет грузить по PXE разные образа и раскатывать их в автоматическом режиме. Задача в целом не сложная, но хочется сделать красиво и изобрести минимум велосипедов. В общем, нужен веб-управлятор всей этой системой, что бы можно было сказать ему, вон-тот сервак на реинсталл, раскатать такой-то образ с такой-то разбивкой диска и прописать такой-то айпишник, после чего система пнёт этот сервак по ipmi/ilo/idrac/etc на ребут, сгенерит для его мака загрузочный конфиг в соответствии с тем, что был указан в веб-морде и загрузит его. В общем, интересует, есть-ли какие-то готовые решения для подобных вещей или надо собирать всё самому по кусочкам? Быстрогугл не помог, если скажите, какие есть варианты и как они называются, буду премного благодарен!

 , , ,

dronozavr
()

Где выпить хорошего пива?

Форум — Talks

Питерцам привет

Где можно за разумные деньги в вечер субботы у вас выпить приятного пива? Не мочи сорта «разливное», а чего-то, что не стыдно взять в рот?

Заранее спасибо :)

 , ,

hc
()

Lua, 2 разных потока.

Форум — Development

Приветствую! (далее длинный пост)

Есть некоторая тестовая утилита, которая расширяется луашечкой. В луа импортируются нужные функции/таблицы и далее есть определенная функция уже в самом скрипте, которая запускается после загрузки этого скрипта.

то есть что-то типа

function main(args)
--- тут все, что нужно
end

Все просто сделали load скрипту и выполнили main.

Так же есть события, которые приходят из другого потока и несут нужную инфу. Хочу протянуть возможность регистрации/обработки этих событий.

Совершенно понятно, что дернуть какой-то вызов из другого потока в том же lua_State, в котором исполняется вызов main я не могу. Поэтому я создаю другой lua_State, от главного event_state = lua_newthread(main_state) и, делаю вызовы уже в нем. Пример скрипта

function handler( data )
--- тут обработка события
end

function main( args )

    client.subscribe("on_data_ready", handler) -- тут подписка на событие

end

И это работает! Событие приходит, исполняется в своем lua_State и, казалось бы, ничего не падает. Но что-то тут не так, потому как main_state и event_state делят глобальные объекты и, стало быть должны как-то это разруливать.

Второй момент - это передача параметров с подпиской на событие. Например

function handler( data, param ) -- param тут {"Hello!", "blabla"}
--- тут обработка события
end

function main( args )

    -- тут подписка на событие с доп параметром
    client.subscribe("on_data_ready", handler, {"Hello!", "blabla"}) 

end

параметры я сохраняю как референсы через LUA_REGISTRYINDEX и потом передаю их при вызове обработчика в назначенную функцию. И снова вопрос в том, что LUA_REGISTRYINDEX это одна таблица, и стало быть, ее нужно как-то лочить.

+ у меня есть есть возможность отследить наступление события в event_state из main_state и прочитать, что вернула function handler, опять же через референсы. Стало быть если я в событии делаю return reslut1, reslut2, reslut3 и потом сохраняю их в LUA_REGISTRYINDEX, а в этот момент main_state делает подписку на другое событие и параметры тоже сохраняет в LUA_REGISTRYINDEX, то будет не весело и все навернется.

Собственно в этом вопрос. Как такое c lua делать правильно? И можно ли вообще такое делать с lua? Если нужно как-то лочить таблицы, то нужно ли это делать в _каждом вызове_, который потенциально может быть дернут из 2 разных потоков?

 , ,

ossa
()