Перейти к содержимому

hohserg

Пользователи
  • Публикации

    433
  • Зарегистрирован

  • Посещение

  • Победитель дней

    37

Сообщения, опубликованные пользователем hohserg


  1. Что это

    Маленькая библиотека для работа с последовательностями бит

    Как юзать

    local bit_array = require("bit_array")
    
    --Создаем массив битов разметом 100, заполненный единицами
    local a = bit_array.create{sizeInBits = 100, fill = 1}
    --можно еще так и так
    local a = bit_array.create(100, 1)
    local a = bit_array.create(100, true)
    
    --Создаем массив битов разметом 100, заполненный нулями
    local a = bit_array.create{sizeInBits = 100, fill = 0}
    --можно еще так и так
    local a = bit_array.create{sizeInBits = 100}
    local a = bit_array.create(100)
    local a = bit_array.create(100, false)
    
    --Устанавливаем первый бит на 1
    a:set(1, true)
    --можно еще так
    a:set(1, 1)
    
    --Устанавливаем первый бит на 0
    a:set(1, false)
    --можно еще так
    a:set(1, 0)
    
    --Получаем значение второго бита
    local second = a:get(2)
    
    --Схватываем ошибку выхода за пределы массива
    a:set(101, true)
    a:get(101)
    
    --Получаем количество единичных битов
    local ones = a:countOf(true)
    --можно еще так
    a:countOf(1)
    
    --Получаем количество нулевых битов
    local zeros = a:countOf(false)
    --можно еще так
    a:countOf(0)
    
    --Устанавливаем биты одного массива другому начиная с индекса 3
    local b = bit_array.create(10, 1)
    a:setArray(3, b)
    
    --Создаем новый массив, который содержит биты из массива а, с первого по девятый
    local c = bit_array.createBasedOn{array = a, fromIndex = 1, toIndex = 9}
    
    --Преобразовываем в строку
    local stringRepr = a:toString()
    
    --Создаем из строки
    local b = bit_array.fromString(stringRepr)

    Исходный код

    https://github.com/hohserg1/OpenComputersPrograms/blob/master/simple_libs/bit_array.lua

    Команда для скачивания

    wget https://raw.githubusercontent.com/hohserg1/OpenComputersPrograms/master/simple_libs/bit_array.lua /home/lib/bit_array.lua

    • Нравится 2

  2. А можно сделать фичу,  чтобы оценивало необходимое место на диске и если влезает, то записывало расшифрованный файл в tmp? И где-нить в уголке показывало иконкой, куда был сохранен файл, чтобы понимать, насколько безопасно текущее использование


  3. Представляю вам сервер, специализированный для игры с OpenComputers: ProjectOC3

    Особенности:

    • Возможность работать со своими HDD и дискетами через FTP
    • Куча аддонов для ОС
    • Крафт чанклоадеров выключен, но в кит-старте есть 10 шт :DD
    • Весь контент из ОС разрешен, даже дроны
    • Инструменты ломаются в руках робота медленней в 100 раз
    • В дискорде сервера иногда(я еще ни разу не застал) проводятся конкурсы(джемы)
    • Версия майна 1.12.2
    • Лицензионный

     

    Модпак:

    Скрытый текст
    • OpenComputers и аддоны:
      • Computronics
      • OCDevices
      • OCSensors
      • OpenGlasses
      • OpenLights
      • OpenModularTurrets
      • OpenScreens
      • OpenPrinter
      • OpenPython
      • OpenSecurity
      • OpenFM
      • Zettaindustries
    • Alchemistry
    • AliensVsPredator
    • AppliedEnergistics2
    • ArchitectureCraft
    • AE2Stuff
    • BetterFPS
    • BiomesOPlenty
    • ChestTransporter
    • Chisel
    • ChiselAndBits
    • Clipboard
    • Comforts
    • Controlling
    • CompressedBlocks
    • DoggyTalents
    • EnchantingPlus
    • EnderIO
    • EnderIO Conduits
    • EnderStorage
    • FastLeafDecay
    • FTBUtilities
    • Gravestone
    • IronChest
    • IronJetpacks
    • LittleTiles
    • MalisisDoors
    • MmmMmmMmmMmm
    • ModernLights
    • Morpheus
    • Morph-o-Tool
    • MouseTweaks
    • MultiHotbar
    • NuclearCraft
    • PneumaticCraft:Repressurized
    • ProjectRedBase
    • ProjectRedCompat
    • ProjectRedFabrication
    • ProjectRedIntegration
    • ProjectRedLighting
    • Railcraft
    • RetroComputers
    • RSGauges
    • SimpleFluidTanks
    • ThermalExpansion
    • ThermalDynamics
    • Thut'sElevators
    • Tinkers'Construct
    • Tinkers'ToolLeveling
    • VeinMiner
    • WirelessCraftingTerminal

    Клиентские:

    • ChunkAnimator
    • Jei
    • SoundFilters
    • TheOneProbe
    • InventoryTweaks

    Дискорд: https://discord.gg/v927kk7

    Модпак на технике: https://www.technicpack.net/modpack/projectoc-reboot.1745971

    Тред на англоязыком форуме: https://oc.cil.li/topic/2604-projectoc-3-oc-focused-suvival-server-with-ftp-disk-access/

     

     

    • Нравится 4
    • Одобряю 1

  4. 7 часов назад, eu_tomat сказал:

    Куда возвращать управление? В зависшую программу while true do end?

    Туда, куда возвращает управление computer.pullSignal и некоторые методы компонентов

      

    7 часов назад, eu_tomat сказал:

    злонамеренно зацикленные скрипты.

    А можешь привести пример таких скриптов?


  5. 13 часа назад, eu_tomat сказал:

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

    Почему механизм защиты от лагливого кода вообще должен вырубать компы 

    Насколько я понимаю, логика выбрасывания TLWY находится тут: https://github.com/MightyPirates/OpenComputers/blob/master-MC1.7.10/src/main/resources/assets/opencomputers/lua/machine.lua#L45-L54

    Почему бы вместо error(tooLongWithoutYielding) не возвращать управление? Таким образом управление будет возвращаться всегда, даже если в выполняющемся коде оно не предусмотрено


  6. 13 часа назад, ProgramCrafter сказал:

    а выполняется уже системой (то есть система выполняет роль виртуальной машины Lua).

    Имеешь ввиду свою систему? Предлагаешь сделать среду выполнения луа внутри среды выполнения луа?


  7. 10 часов назад, Bs0Dd сказал:

    Не совсем. Да, ее можно в теории загрузить с еепром, но вес в 15кб этого не позволит, поэтому она загружается обычным Lua BIOS

    Ну т.е. программа не требует какой-то оси, работает с голым железом. Поэтому она уже совместима с HoverHelm


  8. 16 часов назад, Bs0Dd сказал:

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

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

    ~~~

    Ох, а программа замка в текущем состоянии для eeprom, верно? Тогда она уже совместима с HoverHelm и конечные пользователи могут запускать ее, не выделяя отдельный жесткий диск для компа-замка


  9. Можно использовать HoverHelm в качестве платформы. Там и библиотеки можно будет подключать и физический жесткий диск один на всю систему и при этом не будет ограничение на объем программы и хранимых данных


  10. Для начала разберись, как работать с одним компонентом.

    local all = component.list("redstone") --its a table with iterator
    local fisrtAddress = all() --use as iterator
    local first = component.proxy(fisrtAddress)
    
    first.setOutput(...)

    Подробнее:

    https://minecraft-ru.gamepedia.com/OpenComputers/Component_API

    https://ocdoc.cil.li/api:component


  11. 36 минут назад, Bs0Dd сказал:

    При необходимости можно перенастроить программу, нажав на "(c)" в строке копирайта (а вы думали он тут просто так?)

    В режиме перенастройки также можно очистить список "отпечатков" доверенных пользователей (система отпечатков работает аналогично таковой в CodeDoors).

    А можно эту фичу заблокировать?


  12. При любом приземлении на ванильную слизь свинка не получает урона.

    Слизь из тинкерса немного продавливается(когда ходишь в ней, то погружаешься примерно на пол блока), кажется, из-за этого свинка может иногда дамажиться, при тестах у меня один раз ударилась, хотя воспроизвести не смог.

    • Грусть 1

  13. На форуме было как минимум две программы, которые позволяют летать на свинье, которую несет на поводке дрон. Одна из главных проблем такого метода в приземлении: если свинка ударится о блоки, то умрет от падения.

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

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

    Например, в версии 1.12 есть блоки слизи. При достаточно точном позиционировании приземления можно использовать минимум один блок слизи на возвышении.

    В 1.7.10  можно использовать похожие блоки слизи из TinkersConstuct

    T3xZfIl.png

    • Грусть 1

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

    • Грусть 1

  15. 14 часа назад, Bs0Dd сказал:

    На сервере может находиться до 14 человек, но каждый может открыть только по одному файлу.

    А почему бы не сделать в этом случае виртуальные файлы с очередью записи на диск?

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

    Если юзер открывает файл для записи, то запись идет в таблицу, а при закрытии добавляется в очередь записи на диск.

    Плюс еще какие-то условия для соблюдения прозрачности.

    • В шоке 1
    • Грусть 1
×
×
  • Создать...