Злые языки говорят, что одна из возможных причин ошибки 137 при сборке программок - это нехватка оперативной памяти на машине. А о факте такой нехватки делается ли запись в какой-нибудь журнал, чтобы потом можно было посмотреть? Интересуют два варианта ОС - Ubuntu 18.04 и Red OS не знаю какая.
я чиню диспетчер задач в ЯОС. В ЯОС есть процедура для замера времени выполнения треда. В юникс-версии она была сломана и вызывала, по сути, rdtsc,
проц -ДайКвоТактовПроцессораСМоментаПерезапуска* (): цел64;
машКод
XOR RAX, RAX
RDTSC ; set EDX:EAX
SHL RDX, 32
OR RAX, RDX
кон ДайКвоТактовПроцессораСМоментаПерезапуска;
Поэтому в местном диспетчере задач у всех тредов было одинаковое CPU. Я поправил процедуру, которая лежит в основе замера, и теперь она выглядит так:
проц GetCpuCycles*( process : Process; перем cpuCycles: CpuCyclesArray; all: булево );
перем temp : цел64;
перем t: Unix.Timespec;
перем кодЧасов: Unix.ClockId_t;
перем успехТочногоЗамера: булево;
нач
утв(process # НУЛЬ);
если Unix.pthread_getcpuclockid(process.threadId, адресВПамяти из кодЧасов) = 0 то
если Unix.clock_gettime(кодЧасов, адресВПамяти из t) = 0 то
(* Вот здесь что надо сделать??? *)
cpuCycles[0] := цел64(t.tv_sec)*1000000000 + цел64(t.tv_nsec);
успехТочногоЗамера := истина всё всё;
если ~успехТочногоЗамера то
cpuCycles[0] := ЭВМ.ДайКвоТактовПроцессораСМоментаПерезапуска() всё;
если ~all то
temp := process.lastThreadTimes;
process.lastThreadTimes := cpuCycles[0];
cpuCycles[0] := cpuCycles[0] - temp;
всё;
кон GetCpuCycles;
Т.е. я пытаюсь воспользоваться clock_gettime, и если у меня всё получается, то считаю, что 1 цикл = 1 наносекунда. Если не получается, то использую старое решение. В результате всё вызвалось нормально и я увидел, какие треды работают, а какие спят. Но единицы измерения вряд ли правильные. Как пересчитать, чтобы было похоже на те циклы, которые считает rdtsc?
Иными словами, как узнать частоту, с которой тикают часы, показания которых возвращает rdtsc?
Если так вдуматься, то двусвязный ссылок вообще опасен. Если дать просто ссылку на узел списка, то возможна куча неприятностей, например, легко сломать список, зациклить, или работать с элементом, который уже удалён. Если же не давать ссылку на узел, то всё становится неэффективным. Вот тут ребята пытаются решить это через курсоры, и вроде это лучшее, что у них есть:
Но теперь пытаюсь решить такую задачу: есть типичная голая десктопная инсталляция современного линукса, скажем, Убунты.
Сколько строк кода в её исходниках?
Нигде не нашёл инфы, скачиваю пакеты исходников для всех пакетов, поставленных в моей подходящей виртуалке, с тем, чтобы их потом подходящей программкой (cloc) подчитать, но боюсь, что виртуалка + дачный интернет = fail.
Пишу телегу против плюсов. В связи с этим вопрос - насколько широко в плюсах используются нуль-терминированные строки, юнионы, неумные указатели и всё такое плохое, что делает Си опасным языком.
Даже интересует не столько то, насколько они используются в существующих программах, а есть ли примеры программ, где хорошие средства плюсов сконсолидировались и поставили заслон от опасных конструкций Си, позволив полностью избежать их использования и избавиться от типичных ошибок Си. Можно ли так написать что-то существенно сложное? Сделано ли это в любимых библиотеках (Буст, QT и иже с ними)? Вторая часть вопроса - это неопределённое поведение. В Си его много. Это подаётся как фича, но с точки зрения безопасности это дыра. Меньше ли неопределённого поведения в С++?
Есть две полярные точки зрения на вопрос:
а) С++ перекрывает Си, поэтому там всё сделано по-другому, поэтому безопасность выше
б) С++ - наследник Си и в целом наследует его недостатки.
Поскольку я мало пишу на Си и ещё меньше на Си++, у меня нет сложившегося мнения на эту тему. А у ЛОРа наверняка есть мнение, даже несколько.
Мы решили начать кое-какую разработку и встал вопрос о юридическом оформлении. В разработке участвуют физ. и юр. лица (возможно, НКО) и мы хотим сделать код общедоступным. Исходный код - под MIT лицензией. Как нам перенести всё это в российское правовое поле, чтобы оно работало? Есть ли адаптированные тексты лицензий и таблица, какую лицензию с чем совмещать? На каком основании вкладчики будут передавать права на код и кому? Кто уже ходил такой дорогой, может есть у кого списать готовое решение?
Мне на ум пришли такие примеры для подражания:
шрифты PT, которые заказаны государством у паратайпа и написана лицензия, явным образом разрешающая всем пользоваться, но это не совсем то - тут законченное изделие, и к тому же не программа
Расскажите пожалуйста. Ходят слухи, что Альт достаточно давно и далеко отпочкован от мейнстрима Линукса. Для меня это первый критерий качества. Правда это или нет? Какой российский линукс наиболее хорош для установки на домашний или офисный компьютер?
Я понимаю, что тема холиварная, но зато я перестал ругать линукс и стал его рассматривать. Видите, как хорошо. Поэтому прошу тему не убивать, а вместо этого хорошо и подробно рассмотреть.
Между тем уже появились люди, которые за 3000 рублей предлагают пригласить мастера и поставить запасной Linux, «пока Windows и Mac OS не заблокировали и вы не потеряли свои данные». Выглядело бы резонно, если бы этим линуксом была не убунта.
Впрочем, в моей параноидальной версии мира, блокировать будут не Windows, а сразу превращать весь компьютер в кирпич. Наверняка для этого есть инструменты. В этом случае линукс не поможет. Не поможет он и в случае, если новые поколения шифровальщиков успеют добраться до ваших данных до момента, когда вы уйдёте с Windows. Но при некоторых сценариях и Linux может сгодиться.
Поскольку недолго поднять локальную копию гитлаба, наверняка кто-то уже запилил «наш российский гитхаб» и наверняка таких гитхабов не один. Кто поделится ссылками?
Что-то не могу ничего найти, хотя помню, что полгода назад где-то обсуждал и находил какую-то инфу на эту тему. Спор начался с того, что кто-то утверждал, что в Open Source на 3 порядка меньше ошибок на 1000 строк, чем в коммерческих программах. Это оказалось враньём и по ходу дела нашлись цифры и о плотности ошибок, и о стоимости программы.
Ну вот, опять довелось покодить на CL ради хлеба насущного. Поскольку емакс в этом году уже приходилось расчехлять, он почти не ранит. Но всё же, кто пробовал новое расширение для VS Code?
Имеется git-репозиторий А размером за 2 гига и историй за овердофига лет с детальными подробностями. Хочется сделать другой репозиторий Б, поменьше, мегов на 200, но чтобы можно было перетягивать новые изменения из А в Б и обратно. Позволяет ли гит в принципе такое сделать? Например, можно ли сделать, чтобы в репозитории Б вся история до 2021-01-01 была тупо удалена и при этом сохранилось бы взаимопонимание между А и Б?
Что-то не гуглится строка запуска. Меня больше всего интересует raspberry pi 2. На железке всё запускается и работает. На QEMU пока только доходит до показа объёма доступной памяти.
Клиент - C++, Сервер - программа на языке со сборкой мусора. Вызов только локальный. Нужно уметь описывать интерфейсы, хранить ссылки на удалённые объекты, генерировать обёртки и всё вот это вот.
Основное требование - это простота реализации и независимость от библиотек, т.к. придётся портировать на новый язык, в котором ничего нет (даже json).
Поэтому ищется какая-то компактная многоязычная библиотечка.
Второе требование - пермиссивная лицензия.
В текущем самодельном прототипе используются сокеты. Вроде этого пока должно быть достаточно.
Посмотрел:
SOAP - на базе XML = тормоза.
Protobuf - формат можно рассмотреть, хотя у меня нет цели слишком сжимать данные, а они там похоже на это запарились.
grpc - оказывается, там какое-то http/2, заточенное под оптимизацию веба. Мне это абсолютно не нужно
Наверное, это FAQ. Простите. Но всё же вопрос такой актуален. Программа под GPL v.2, использует QT 5. Залезаю в примеры Qt и вижу там двойное лицензирование - либо коммерческое, либо BSD.
Обновился с lubuntu 18.04 до lubuntu 20.04, и снова возник вопрос, как переключаться по клавишам Super-1, Super-2 в нужные окна (как я делал это в предыдущей теме).
Ничего не работало, до тех пор, пока я не удалил у себя ~/.config/lxqt, ~/.config/openbox, и затем не сделал из текстового терминала (Ctrl-Alt-F3) следующее:
После этого стало возможным задать новые сочетания клавиш с Meta-1 и т.п. через приложение «сочетания клавиш», оно же - «управление глобальными настройками». Сначала пришлось назначить действие «показать/скрыть главное меню» на кнопку Super_l, затем удалось добавить сочетания с Meta+1, Meta+2, там задаём команду, которую нужно выполнять (/home/моё-имя/.config/горячие-клавиши-openbox.ш W-1), и к тому же поставить «при наличии нескольких действий выполнять последнее», а действия по умолчанию для Meta+1, Meta+2 и иже с ними отключить.
Полдня убил на это. Куча багов в lxqt про кнопку super, плюс попытка применения мной старого рецепта существенно запутала ситуацию.