User Tag List

Страница 5 из 27 ПерваяПервая 123456789 ... ПоследняяПоследняя
Показано с 41 по 50 из 265

Тема: ImageUtils

  1. #41

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,505
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    712
    Поблагодарили
    594 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Было
    Код:
          packClusterSize = ImageData.BlkGetWord(1, "0722".Octal());
          firstDirectoryBlockN = ImageData.BlkGetWord(1, "0724".Octal());
          string systemVersion = ImageData.BlkGetWord(1, "0726".Octal()).Rad50Decode();
    Стало
    Код:
          RADImage? homeBlock = ImageData[1];
          packClusterSize = homeBlock.Words["0722".Octal()];
          firstDirectoryBlockN = homeBlock.Words["0724".Octal()];
          systemVersion = homeBlock.Words["0726".Octal()].Rad50Decode();
    - - - Добавлено - - -

    А потом станет совсем просто
    Код:
      HomeBlock homeBlock = new HomeBlock(ImageData[1]);


    - - - Добавлено - - -

    В общем, пока сам программой и кодом не поиграешься - хороших идей в голову не придёт

    Постепенная переделка кода под новый подход.

    В ближайшей перспективе - переделка работы с RT-11 ФС на использование маппера (последняя строка в предыдущем сообщении)

    Потом попытка сделать обратный маппер - то есть пишем в homeBlock, а оно пишется на нужное место в общем образе

  2. #42

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,505
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    712
    Поблагодарили
    594 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Добрался до более-менее полноценного тестирование - как потрошения образов, так и собрания.
    На удивление мало ошибок и некоторая часть связана не с новым подходом работы с образами и некоторая часть не связана с моим кодом вообще - условно говоря - пара ошибок автора и ошибка (при способе автора - не проявлявшаяся) документации

    - - - Добавлено - - -

    А, да
    С RT-11 новый подход - это конечно - круто (хотя на самом деле не всегда), а вот с XXDP/DOS-11 и RSX не совсем - так как там есть и ненепрерывные файлы
    Думаю

  3. #43

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,505
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    712
    Поблагодарили
    594 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Начал переделку работы с ФС RT-11 под испольвание маппера. Можно сравнить куски кода работы с описателем файла:
    Было
    Код:
              F_ESTAT deStatus = (F_ESTAT)currSegment.Words[de + 0 * 2];
    
              if (deStatus.Has(F_ESTAT.E_PERM | F_ESTAT.E_TENT | F_ESTAT.E_MPTY))
              {
                RT11File f = new(); // new file, read dir entry
    
                f.Status = deStatus;
                f.FileName =(  currSegment.Words[de + 1 * 2].Rad50Decode()
                             + currSegment.Words[de + 2 * 2].Rad50Decode()).TrimEnd();  // filnam: 6 chars
                f.Extension =  currSegment.Words[de + 3 * 2].Rad50Decode().TrimEnd();   // extension: 3 chars
    
                f.BlkNum = startBlockN;                     // startblock on disk
                f.BlkCount = currSegment.Words[de + 4 * 2]; // blocks in data stream
    
                if (deStatus.Has(F_ESTAT.E_MPTY))
                  freeBlocks += f.BlkCount;
                else
                  usedFileBlocks += f.BlkCount;
    
                // currSegment.Words[de + 5 * 2]; // ignore job/channel
    
                UInt16 id = currSegment.Words[de + 6 * 2];
                f.CreationDate = RT11Date.Decode(informator, id);    // creation date
    
                ...
    Стало

    Код:
              DirectoryEntry dirEntry = new(currSegment.Bytes, de);
    
              if (dirEntry.Status.Has(F_ESTAT.E_PERM | F_ESTAT.E_TENT | F_ESTAT.E_MPTY))
              {
                RT11File f = new(); // new file! read dir entry
    
                f.Status = dirEntry.Status;
                f.FileName = dirEntry.Name.TrimEnd();
                f.Extension = dirEntry.Extension.TrimEnd();
    
                f.BlkNum = startBlockN;                     // startblock on disk
                f.BlkCount = dirEntry.Length;               // blocks in data stream
    
                if (dirEntry.Status.Has(F_ESTAT.E_MPTY))
                  freeBlocks += f.BlkCount;
                else
                  usedFileBlocks += f.BlkCount;
    
                // dirEntry.JobNum dirEntry.Channel dirEntry.Time // ignore job/channel, but dirEntry.Time (in future)
    
                f.CreationDate = dirEntry.Date.RDateTime;   // creation date
    
                ...
    Какие такие жёстко закодированные смещения?

    Ну и флаги статуса записи о файле уже были доделаны, но имена ещё не были сменены на более юзерфрендли

  4. #44

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,505
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    712
    Поблагодарили
    594 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ImageUtils была доработана для поддержки двухсторонних дисков МС0515.
    По крайне мере тот образ, который ко мне попал, выглядел как – одна сторона (головка) – один диск, другая сторона (головка) – второй диск.

    Этот пользователь поблагодарил Hunta за это полезное сообщение:

    Radon17(27.11.2022)

  5. #45

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,505
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    712
    Поблагодарили
    594 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Улучшена поддержка дисков с МС0515 (добавлен ещё один вариант образа), поправлена и дополнена информация о занятости блоков, добавлена поддержка для польского вундер-устройства - аналог PDP-11 с флопповодами от Apple (35 цилиндров по 16 секторов по 256 байт с интерливом)

  6. #46

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,505
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    712
    Поблагодарили
    594 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Активное использование и, как следствие, активное исправление ошибок и шерховатостей

  7. #46
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #47

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,505
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    712
    Поблагодарили
    594 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Видимо, устал от FPGA - желанию возиться как-то уменьшилось.
    Не помню уже с чего - начал наводить порядок среди файлов для Э85/DEC Pro.
    Ну и плавно опять начал возиться с ImageUtils.
    Задача номер 1 - навести порядок среди образов для тестирования.
    Задача номер 2 - поправить одну или две обнаруженные ошибки-неточности.
    Задача номер 3 - подсовывать битые образы и постараться выправить реакцию - не вылет, а логирование ошибок
    Дальше будет видно.
    Пока - задача номер 1.

    Эти 2 пользователя(ей) поблагодарили Hunta за это полезное сообщение:

    dk_spb(11.04.2023), Radon17(11.04.2023)

  9. #48

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,505
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    712
    Поблагодарили
    594 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  10. #49

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,505
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    712
    Поблагодарили
    594 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Процесс идёт - задача 3

    Но что бы не выгореть на ней - периодически отвлекаюсь (стараюсь фифти-фифти) на параллельную задачу Пока о ней говорить рано, но связана она с переписыванием (опять ) одной (в принципе - достаточно известной проги) с Си на C#. Причина примерно та же, как и с переписыванием TU58fs c Си на C# - потребность допилить функционал и невозможность собрать (Си, я, конечно, не люблю, но допилить прогу мог бы) под VS для Windows.

    Чую, скоро стану мастером в этом деле

  11. #50

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,505
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    712
    Поблагодарили
    594 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ImageUtil у меня достаточно тесно связана с другими делами - в частности - приведением в порядок файло-помойки.

    А с этим делом тесно связаны другие программы, кои писались с очень давним времён - где-то так примерно с VS2010, а одна (xcomp - сравнение и, если надо - удаление одинаковых файлов с заходом в подкаталоги) - вообще первоначально была написана под Delphi, причём - под второй версией - та, которая уже 32-ух битная. К сожалению, этот исходник был утерен, так что какое-то время я ей пользовался как есть - без разных возникавших в голове вариантов доработки

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

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

    И вот в конце прошлой недели меня эти ошибки наконец достали Сначала хотел просто прогнать их под отладчиком. Оппа - а установленной VS2010 нет Плюс в .NET 4.x есть проблема с длинными путями (и как я не старался - так мне и не удалось заставить её с ними адекватно работать).

    Так что достал я исходники и решил все три программы перенести под VS2022 и .NET 7.x (в том числе - вариант под .NET 4.x собирается тоже). Но в тот день было уже два часа - и не дня, а ночи Поэтому побрёл я спать - и как часто - уже засыпая - прокручивал в голове разные варианты доработок.

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

    Так что все выходные и начало недели шёл этот процесс. В том числе - и рефакторинг. В том числе - пофиксил ошибки.

    И весьма занятно было посмотреть на свой код, написанный тогда

    В целом, ещё не все задумки реализованы - но основной функционал уже нарисован. Так что дальше (внутреннее) тестирование, отладка и (потихоньку) допиливание.

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

    Но всё хорошее (в смысле - допиливание этой программы и ImageUtils и перепиливание с Си ещё одной проги) скоро закончится - примерно с середины февраля был у меня своеобразный отпуск (и я слегка поотрывался, в том числе на программировании), а с понедельника выхожу на новую работу. Где этого программирования будет вагон и маленькая ОГРОМНАЯ тележка, так что ещё программировать и для себя - будет не сильно в кайф. И переключусь опять на FPGA - как на сильно отличающееся хобби

Страница 5 из 27 ПерваяПервая 123456789 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •