Я ещё лучше починил TclProDebug
Форк тут: https://tvoygit.ru/budden/TclProDebug/src/branch/budden-2024-11-07
Описание проблем, которые я исправлял, тут:
https://github.com/flightaware/TclProDebug/issues
Видосик тут:
Форк тут: https://tvoygit.ru/budden/TclProDebug/src/branch/budden-2024-11-07
Описание проблем, которые я исправлял, тут:
https://github.com/flightaware/TclProDebug/issues
Видосик тут:
Есть у кого-нибудь? Не гуглится. Я нашёл пакет diagrams в tcl/tk, но нет примера, есть только документация. Также есть пример приложения, но я не смог его запустить (оно не принял параметры, которые у него в доке заявлены, по исходникам за 5 минут тоже не разобрался).
Была вот такая тема, ни много, ни мало, 7 лет назад:
Степпер для SBCL - помогайте (комментарий)
Понятно, что никто не помог, но понадобилось тут откопать CL, 3000 долларов жалко отдавать, а без отладчика не готов. Поэтому пришлось откопать и эти наработки. Как ни странно, удалось их оживить и слегка продвинуться. Можно посмотреть вот здесь на текущее состояние:
https://dzen.ru/video/watch/669adb3527a29379b2274500
Хотя до того, что надо, всё ещё недотягивает. Если будет ещё неделя, может быть, получится доделать установку точек останова мышью и перешагивание. Хотя не факт. К тем, кто в теме - вопрос - не продвинулся ли степпер в SBCL? У меня всё форкнуто и версия ещё с тех времён. В новостях я не нашёл. На тот момент, когда я в прошлый раз смотрел, степпер реально для работы не годился (на мои запросы, во всяком случае, может быть какой акробат или гений техномазохизма и смог бы извлечь из него пользу).
Ситуация такая: у меня есть некий проект на tcl/tk и common lisp, все части которого пермиссивно лицензированы. Есть второй проект под GPL, который я хочу объединить с первым. Как мне сделать это, соблюдая лицензии? Мой текущий план состоит в том, чтобы форкнуть пермиссивный проект и начать сливать уже в форке. Некоторые файлы, которые сейчас не линкуются с GPL кодом, начнут с ним линковаться. Что мне делать с лицензированием этих файлов?
Лет 5 ждал, пока кто-то сделает, и в итоге сам сделал. Задача состояла в том, чтобы сделать шрифт, в котором визуально отличаются пары букв, которые обычно выглядят одинаково, например, „с“ и „c“. Тогда при любой работе с двуязычными текстами в программировании можно будет избегать ошибок, связанных с перепутыванием этих букв.
https://tvoygit.ru/budden/dr_cyr
Сделан необходимый минимум, один моноширинный шрифт - модифицированный Ubuntu Mono, и один пропорциональный - модифицированный Golos Text, одно начертание для каждого. Проигнорировано всё, кроме русской кириллицы и основной латиницы, возможны косяки. Идея, заложенная в шрифты, немного отличается.
Художники обругали, простой народ похвалил, на данный момент порядка 4 внедрений.
Привет, Лор! У меня Ubuntu 18.04, и в ней есть известная проблема с буквами в tigervnc (и в других vnc серверах и клиентах, см. x11vnc пропадают русские буквы)
Вроде как в более новых версиях tigervnc добавили ключ RawKeyboard
https://github.com/TigerVNC/tigervnc/issues/962#issuecomment-584047893
Я сунулся было пересобрать TigerVNC из исходников, но процедура там описана недостаточно подробно и нужно знать немало контекста по поводу X вообще.
Моя идея в следующем: взять с помощью apt-get source более новые пакеты (от 20-й или 22-й Убунты) и собрать их с помощью dpkg-buildpackage под своей 18-й. Как думаешь, Лор, насколько это жизнеспособная идея?
В моей домашней студии мышь лежит на синтезаторе (больше ей лежать негде) и даёт наводки, которые прекрасно слышны. Это достаёт и я пытаюсь решить это двумя способами:
Это несколько неудобно. Поэтому вопрос: бывает ли (USB) мышь, которая не даёт наводок? Я не знаю, что является источником - сама ли мышь или её провод. Подойдёт любое устройство - трекбол или планшет как на ноутбуке.
Дело вообще не в том оказалось. Помеха заходит через USB провод, которым синтезатор подключается к компьютеру для передачи MIDI. Т.е. это как-то связано с работой USB хоста. В моём конкретном случае USB хост находится в клавиатуре и я втыкаю в него мышь и провод для MIDI, ведущий к синтезатору. А дальше всё это через длинный удлинитель подключается к компьютеру, который находится вне звукоизолированной кабинки. Если вместо мыши воткнуть в USB-порт клавиатуры флешку и начать с неё файлы копировать, помеха тоже имеет место.
Даже если присоединить синтезатор прямо к компьютеру, минуя USB-хост клавиатуры, помеха всё равно передаётся. Видимо, на этот раз она передаётся через USB-хост, находящийся в самом компьютере, который тем самым как-то связывает между собой USB порты компьютера. Единственный способ избежать её - задействовать USB2 и USB3 хосты компьютера, т.е. к примеру, воткнуть клавиатуру в USB3, а синтезатор - в USB2. Тогда наступает полная тишина. Я бы мог так делать, но сейчас у меня в USB3 воткнут USB интерфейс аудиокарты. Теперь я уже знаю про помехи, и совсем нет желания, чтобы эти помехи влияли на передачу аудиосигнала с карты. Пусть уж лучше звучат из синтезатора.
Но подозрения остаются. Допустим, мышь я даже выдернул. Но ведь MIDI тоже передаёт информацию. Означает ли это, что вместе с моими MIDI звуками синтезатор озвучивает и сами MIDI-события? Наверно, можно сыграть музыку нулевой громкости и тогда это станет слышно.
В целом шум от мыши, который исходит из синтезатора, порядка -50 Дб по отношению к самим звукам синтезатора. Не знаю, будет ли иметь смысл попробовать беспроводную мышь и клавиатуру - ведь всё равно останется ситуация, когда на USB хосте висит более одного устройства, а значит, и предпосылки для помех.
Помогла вот такая гальваническая развязка для USB за 900 руб, которая установлена на интерфейс, передающий MIDI между синтезатором и компьютером.
Спасибо, ЛОР!
Вопросец.
На самом деле это не вброс был, мне реально было интересно, и я получил ответ. Спасибо, Лор и конкретно fluorite
За 5 минут не нагуглилось. Нашёл onboard, но это не то. Я набиваю тексты, в которых есть особые значки. Некоторое подмножество юникода. Я хочу, чтобы мне было удобно их набивать. Что это означает?
Это означает, что я нажимаю некую глобальную (в рамках оконного менеджера) горячую кнопку. Ну, скажем, AltGr, и отпускаю её. После этого на экране появляется изображение клавиатуры. Далее я нажимаю и/или удерживаю другую кнопку, допустим, Shift, Ctrl, Caps, F1-F7 и т.п. У меня меняется на клавиатуре раскладка (при удержании одних кнопок и при нажатии других) и сразу отображается. Далее я нажимаю, допустим, на кнопку «а» на своей физической клавиатуре и соответствующий символ вводится туда, где находится текущий текстовый ввод. Далее я нажимаю Esc и клавиатура исчезает, ну или сразу исчезает после ввода одной буквы.
Есть такое? У меня LXDE.
Есть слон в удаве, а мне нужен лисп в удаве. В основном для работы с внешним миром, т.е. более удобной сериализации/десериализации, чем JSON. Кроме того, иногда в конфиги своей программы хочу вставлять кусочки кода. Поэтому данный лисп должен уметь обращаться к питоновым функциям. Т.е. этакий вот встроенный лисп.
Я пока нашёл предельно простой
https://github.com/Leden/jsonlisp
И ещё есть https://github.com/e-dorigatti/lispy
Но наверняка кто-то ж сделал что-то серьёзное в этом направлении
Привет, Лор!
Мы сделали одну отечественную программу по всем канонам, т.е. взяли программу с открытыми исходниками, форкнули репозиторий, переименовали программу, внесли 0.1% своих дополнений в алгоритмы и локализовали значительную долю сообщений. Поскольку программа написана на слегка экзотическом языке, который плохо поддерживает локализацию, мы меняли сообщения на русские прямо в исходники, а в каких-то случаях ставили ветвление в зависимости от выбранного языка. В сумме, думаю, порядка 500-800 индивидуальных изменений мы сделали таким путём.
Теперь нам нужно сделать главное, что необходимо для любой правильной отечественной программы, т.е. залить к нам апстрим. Это примерно 3000 коммитов со множественными рефакторингами. Я попытался залить первые 500 и гит сразу залил так, что корректность исходного текста потерялась. Ясно, что разрешить конфликты мы можем, но вряд ли это будет потом работать.
Теперь мне нужна программа-заменялка, которая сделает следующее:
Какие программы могут тут помочь? Я нашёл на гитхабе только неживой «лексический diff», это бы могло подойти для начала, но нужен ещё «лексический patch» к нему.
Есть некий документ, распечатанный в файл pdf, и номер страниц в нём идут то слева, то справа, т.к. он распечатан, чтобы его сшить. А мне нужно, чтобы все номера были в одном месте (допустим, в середине). Документ сложный (ноты). Попробовал открыть в LibreOffice Draw, ничего нормального не вышло. Какая программа позволит мне импортировать документ как изображение, без потери качества, чтобы я мог переместить номера страниц и потом обратно сохранить в pdf или распечатать?
Привет, Лор!
Пытался найти ОС, более хорошую, чем Linux, с точки зрения безопасности - не нашёл не одной, все решето. Ок. Но я точно помню, что какой-то наш соотечественник напиал то ли почтовый сервер, то ли почтовый клиент, в котором за много лет ничего не нашли. Я помню, что с ним было какое-то вроде интервью на Хабре, и он там этим хвалился. Вроде он не хранит никакие данные на стеке, поэтому и переполнения буфера на стеке не могло получиться. И вроде что за все годы у него нашли только одно потенциальное целочисленное переполнение, которое и то фиг проэксплуатируешь.
Кто помнит, что это за программа?
Или может быть, кто-то знает примеры программ с хорошей репутацией, допустим, за 20 лет не найдено уязвимостей?
Сейчас пока ковыряю tcc, он маленький, это приятно. Он формирует инфу в формате STABS. Но желательно что-нибудь под пермиссивной лицензией. LLVM тоже можно рассмотреть, но я в него заглянул и в ужасе отшатнулся, когда не нашёл никаких описаний к функциям, которые отвечают за генерацию отладочной инфы. Т.е. в этом случае нужен хороший и уже работающий компилятор.
Притом инфа у меня сущесвует в виде моих структур данных, а никакого LLVM-кода я генерировать не собираюсь. Так что если без этого нельзя создать отладочную инфу, то LLVM, наверное, мимо.
Притом это не должна быть вставка текста в ассемблер - это должна быть запись прямо в файл.
Злые языки говорят, что одна из возможных причин ошибки 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?
Хорошую тему тут затронули
Если так вдуматься, то двусвязный ссылок вообще опасен. Если дать просто ссылку на узел списка, то возможна куча неприятностей, например, легко сломать список, зациклить, или работать с элементом, который уже удалён. Если же не давать ссылку на узел, то всё становится неэффективным. Вот тут ребята пытаются решить это через курсоры, и вроде это лучшее, что у них есть:
http://contain-rs.github.io/linked-list/src/linked_list/lib.rs.html#11-1388
Или не лучшее? Растаманы и растафобы, собирайтесь на великую битву!
А вот, кстати, ещё про списки:
В Си можно сделать макросы всякие, уродливые, например:
#define OPEN_BRACE {
#define CLOSE_BRACE }
Можно ли так сделать в Расте?
Реально ли?
Нашёл за сегодня много интересного, например,
https://sources.debian.org/stats/#sloc_current
https://dwheeler.com/sloc/redhat71-v1/redhat71sloc.html
Но теперь пытаюсь решить такую задачу: есть типичная голая десктопная инсталляция современного линукса, скажем, Убунты.
Сколько строк кода в её исходниках?
Нигде не нашёл инфы, скачиваю пакеты исходников для всех пакетов, поставленных в моей подходящей виртуалке, с тем, чтобы их потом подходящей программкой (cloc) подчитать, но боюсь, что виртуалка + дачный интернет = fail.
следующие → |