cObj - ещё одна программа для разработчиков

...
  • С опцией -c я явно погорячился, 54.2 выполняется успешно,
    НО ни CEdit, ни TINYPAD не видят данных, хотя друг с другом обмениваются успешно
    Здесь
    - либо я "забыл" правильно оформить посылаемую информацию (что скорее всего точно верно);
    - либо CEdit c TINYPAD используют legacy interface не использующий sysfn 54.
    Скорее всего и то и другое ...

    Конечно я не использовал и половину времени - "ещё не вечер",
    но считаю правильным оставить -c для версии 0.3 :
    TODO (ver.0.3)
    помещение информации в карман:

    [а также поместить кнопку и <Ctrl + C> для той же функции]
    заголовок .def файла:
    [поместить кнопку <Ctrl + D> переключения отображения .def заголовка]
    обмен информацией по IPC:
    -i
    Вывод информации об использовании при отсутствии командной строки
    (возможно при наличии опции -h)


    А для версии 0.2:
    TODO (ver.0.2)
    (1) Закомментировать нерабочий код для опции -c
    (2) Обкатать на реальном компьютере
    (3) Проверить вывод ошибок в случае, когда окно не отображается
    (4) Выслушать и как-то учесть пожелания команды разработчиков Kolibri OS


    Код и исполняемый файл: https://drive.google.com/file/d/17_FUrb ... sp=sharing
    Исполняемый файл cobj_c находится в папке bin .
    Видео сессии использования: https://drive.google.com/file/d/1D1_ty ... sp=sharing
    Надеюсь Google у вас не заблокирован и у меня с cсылками всё получилось правильно ...

    И да - я переключаюсь на экзекуцию ассемблерного варианта (считается, что GUI версия - это оригинал).
  • Сразу предупреждаю, я так удачно реализовал опцию -c.
    что Clipview падает намертво ... [Edit: была старая версия, новая бы не упала]

    Edit:
    Уже разобрался с -с , как только нашёл пример, так и разобрался ...
    Сообщил, чтобы кто-то не бросился мне помогать - не тратил зря время.
    Так что всё-таки направляюсь в направлении ver.0.3 - и как же я -i буду тестировать ?..

    Однако выстрел выявил сразу два бага:
    - ядро по идее не должно принимать некорректный контейнер; [Edit: но у разработчиков ядра есть своё мнение, и это правильно]
    - Clipview не должен вылетать, получив неожиданные данные на вход. [Edit: а новая версия и не вылетает]

    Edit2: (v.0.3 "пре релиз")
    Демонстрация использования:
    https://drive.google.com/file/d/1ufAvrm ... sp=sharing
    Исходники и исполняемый файл (в bin/):
    https://drive.google.com/file/d/1UdH45G ... sp=sharing
    Last edited by Valery on Sun Jul 31, 2022 4:31 pm, edited 1 time in total.
  • ядро не производит проверку содержимого контейнера, кроме размера вроде, проверка на содержимое происходит в программе, которая получает эти данные. Какую версию clipwiev вы используете и какие данные туда вводите(полностью всю структуру)?
  • ядро не производит проверку содержимого контейнера, кроме размера вроде
    Похоже ничего не проверяет ... Размер то можно было проверить ... Ну ладно: хозяин - барин.
    какие данные туда вводите
    Вводил текст по прямой, без контейнера ...
    Разведка боем: решил попробовать и ... ядро приняло, а clipview вылетел намертво.

    Но версия была устаревшая - прошлогодняя,
    в версии из (почти) последнего дистрибутива clipview не падает а выдаёт информацию,
    что тип данных неизвесте: то есть работает корректно.
    (Я прямо дальше писал - что не разобрался, потому и оказалось:
    - поведение ядра соответствует замыслу разработчиков (не баг);
    - баг устаревшей версии в новой версии полностью устранён.
    Так что простите пожалуйста, если кого нечаянно обидел. )
  • ничего, бывает, но всё же стоит сделать копирование в соответствии с документацией(если кратко то записать перед самой строкой 3 dword, в первом длина сообщения, включая эти данные, во втором тип содержимого, то есть 0, в третьем кодировка, 0-utf8 1-866(ASCII) 2-cp1251)
  • но всё же стоит сделать копирование в соответствии с документацией
    Уже сделано - в "пре релизе" копирование работает в соответствии с документацией.
    (о чём я сразу сообщил: "Уже разобрался с -с , как только нашёл пример, так и разобрался ...", но видимо невнятно ...)
    Дополненная ассемблерная версия уже на подходе и там -c тоже работает (в соответствии с документацией).

    В любом случае спасибо за помощь !
  • Уже готов пре релиз версии CObj на ассемблере:
    cObj.kex (1.32 KiB)
    Downloaded 72 times
    , только надо убрать расширение .kex .
    Код: https://drive.google.com/file/d/1Yz45GM ... sp=sharing
    Демонстрация работы: https://drive.google.com/file/d/181-u6 ... sp=sharing

    От изначальной версии (автор Albom) остались лишь код загрузки console.obj, да инициализация с "финализацией".
    Ввиду введения дополнительных возможностей и более 50% собственного кода, считаю вправе
    - не упоминать ни себя, ни автора изначальной версии в заголовке программы (есть упоминание в тексте кода);
    - установить "лицензию" Public Domain.

    P.S.
    Замечу, что пре релиз подразумевает условно законченную работу (с удовлетворительным качеством - "на троечку").
    Так что задачу с версией на C также удалось выполнить в срок (который завтра истекает) - "на троечку".
    [смотрите ранее по теме]
    Для ассемблерной версии "троечка" уже есть, но есть и более чем 20 дней срока.

    Основная проблема - для тестирования IPC требуется писать отдельную программу (либо довести shell).
  • ох как опций много стало) это круто, надо только предусмотреть хэлпу в самой программе
    The best way to predict the future is to create it.
  • Для ассемблерной версии есть минимальная подсказка (если вызвать без аргументов [cObj] или с -h [cObj -h] (сейчас только что прокрутил в голове алгоритм и возник хороший вопрос, а сработает ли так? [cObj xxx -h] точно сработает - надо будет проверить)).
    C версия в этом случае выводит более развёрнутый текст но несколько корявый.
    Учту в версии 0.4 - постараюсь улучшить текст в C - версии и перенести его также в ассемблерную версию.

    TODO1: надо поправить алгоритм так, чтобы первый аргумент до опции -f , не начинающийся с '-' был интерпретирован как
    имя obj - файла, (сейчас имя obj-файла обязательно должно идти самым первым)
  • Главная проблема преодолена - появилась возможность протестировать опцию -i :
    https://drive.google.com/file/d/11_Q7a5 ... sp=sharing
    Теперь остаётся править баги ...
    P.S.
    Самым лёгким способом оказалось сделать fork программы shell и прикрутить там взаимодействие с вызываемыми программами по IPC.
  • круто! ждем релизов
    The best way to predict the future is to create it.
  • Пришла пора бета релиза (с этого момента разработка постепенно переходит в стадию поддержки) ...
    Процесс совершенствования - это бесконечный процесс, но надо вовремя остановится.
    Если не потребуется серьёзно переделывать программу, то после полугода версия будет изменена на 1.0 - полноценный релиз.

    C-версия (полностью автономная):
    cObj.kex (2.16 KiB)
    Downloaded 65 times
    Архив с исходным кодом: https://drive.google.com/file/d/1mKNOu ... sp=sharing
    Демонстрационное видео: https://drive.google.com/file/d/1mTMBjv ... sp=sharing
    Лицензия: Public Domain

    FASM-версия (70% зависимлсть от console.obj, но работает и без, хотя "пользователи вряд ли захотят использовать её без console.obj"):
    cObj.kex (1.63 KiB)
    Downloaded 62 times
    Архив с исходным кодом:https://drive.google.com/file/d/1_SQjdb ... sp=sharing
    Демонстрационное видео:https://drive.google.com/file/d/1jMAiSW ... sp=sharing
    Лицензия: Public Domain

    В видео используется изменённая версия программы shell:
    sh.kex (8.02 KiB)
    Downloaded 63 times
    Лицензия GNU GPL требует распространения только предоставив иходный код:
    https://drive.google.com/file/d/1ba08b5 ... sp=sharing

    С-версия вряд ли будет Вам нужна, а вот насчёт ассемблерной - хорошо бы было чтобы кто-то из команды разработчиков предоставил услугу по размещению исходников в автосборку ... Макросы здесь не используются, локализации тоже нет, так что размещение должно быть тривиальным.

    P.S.
    (1) Поддержка коммуникации по имеющемуся протоколу shell (с использованием разделяемой памяти) мною отвергается - она в разы сложнее, этот протокол вроде как нигде не используется (IPC правда тоже), она также shell специфичная (правда это означает, что придётся мне взяться за shell - в изменённой версии, в частности, доведены до ума обёртки системных вызовов - иначе они просто не собираются компилятором clang);
    (2) C-версия только на 30% больше, чем FASM-версия пр том, что самостоятельно занимается графическим интерфесом. Так что если код на ЯВУ написан грамотно - 30% экономии места является абсолютным пределом.
    (3) Предыдущая версия использует заимствование одной тривиальной стандартной функции из dietlibc. От неё пришлось отказаться (ибо dietlibc имеет лицензию GNU GPL, а я хочу Public Domain)- надо было не рыться по библиотекам, а написать свою версию - сэкономил бы часок другой времени.
  • Who is online

    Users browsing this forum: No registered users and 2 guests