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

eu_tomat

Модераторы
  • Публикации

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

  • Посещение

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

    331

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


  1. Сделайте порт на OC

    Читерные черепашки ComputerCraft превращали топливо в энергию мгновенно, а предел заряда был практически недостижим.

     

    Роботы OpenComputers, напротив: и топливо сжигают медленно, и предел заряда достигается довольно быстро. Стандартный робот не вместит заряд даже от двух ведер лавы, а если бы и смог вместить, то времени на превращение этих двух ведер в энергию ушло бы более 30 минут.

     

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


  2. С этой фразы, пожалуй, можно начать небольшое повествование.

    – Скажите, пожалуйста, а нельзя вот эту последнюю фразу взять и выбросить?

    – Да ты чо, ради нее всё и писалось.

    «День выборов»

    • Нравится 5

  3. Нужно написать функции getComponent и freeComponent, которые будут разрешать коллизии компонент. ( когда два окна требуют одну и ту же компоненту ) Функции должны распределять компоненты одинакового типа между окнами. Например если есть 2 редстоун-адаптера и 2 окна потребовали компонент "redstone", то каждое окно должно получить свой редстоун-адаптер

    Тут еще можно подумать о виртуальных компонентах, т.к. некоторые приложения не нуждаются в монопольном доступе к компонентам. Например, два сетевых приложения могут разделять сетевой адаптер, задействуя только нужные им порты. Другие приложения могут использовать лишь одну сторону красной платы.
    • Нравится 1

  4. Вот исходники.

    https://github.com/RccHD/WinOS/tree/master/WinOS/dd243563-b2e6-4ba8-8c28-28ca278f0402/home

    Скопировать в таком виде в папку /home. Реализовано примерно 50% необходимого функционала.

    Все оптимизировать буду после того, как будет готов хоть немного доработанный вариант.

     

    Рабочий скрипт: test1.lua(змейка, матрица и проч.)

    Нерабочий -- test.lua(использует term, tty)

    Чтобы закрыть программу нужно нажать backspace. Помогает не всегда

    Какие файлы OpenOS были изменены? Я не понял, как извлечь эту информацию из репозитория, а просматривать все файлы в поисках изменений выше моих сил.

  5.  

    Решил еще добавить возможность ставить приложения на паузу(coroutine позволяют и такое делать) Кроме того, что любую программу можно поставить на паузу, можно будет еще 'выключать графику' этой программы

    Какие могут быть подводные камни?

     

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

     

    Если речь идет о приостановке экранного вывода, то при условии аккуратной реализации виртуального gpu не должно возникать каких-либо проблем.


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

    Словом «все», взятым в кавычки, я надеялся выразить свою иронию. Но твоя новая формулировка меня устраивает: большинство программ – это не все программы, тем более с таким выделением жирным шрифтом:

    Важно: все OpenOS-программы можно будет запустить на моей OC

    Многозадачность можно реализовать двумя путями:

     

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

     

    2) Подменить буквально все методы всех компонент, которые неявно выполняют уступку времени. Начать, конечно, следует с computer.pullsignal, но этого недостаточно. Например, есть программы, которые не выполняют sleep/listen, а длительно работать без TLWY им позволяют обращения к периферии. Если ты готов подменить методы всех компонент, добавляя в каждый из них вызов yielding – пожимаю руку. Еще надо не забыть, что периферия может динамически подключаться и отключаться от компьютера, и таблицы методов нужно будет подменять на лету.

     

    Предполагаю, что ты выбрал второй способ, удовлетворившись подменой pullsignal, да gpu

     

    Приведи пример такой коллизии. Я пока не придумал ни одного

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

  7. Программы, запускаемые многозадачно, вовсе не обязаны быть ориентированными на многозадачность. Здесь я показывал вариант как можно реализовать такую многозадачность.

    Без доработки приложений этот пример последовательно выполнит сначала одно, затем другое приложение. Вряд ли @RccHD стремится к такому результату.

    Оборудование доступно программам через объект component. Если система подменит этот объект своим, то она сможет разруливать аппаратные коллизии. Например, если одна программа использует редстоун-карту, то другой программе можно не давать к ней доступ.

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

     

    Поэтому данное утверждение не соответствует действительности:

    Важно: все OpenOS-программы можно будет запустить на моей OC

    «Все» программы придется сначала адаптировать к новой OS, а это уже заметный недостаток.

  8. Также планируется написать несколько очень простых программ для демонстрации возможностей ОС

    Важно: все OpenOS-программы можно будет запустить на моей OC

    Запустить можно будет все программы, но работать будут не все. Если, конечно, речь идёт не о самых простых программах, написанных для демонстрации.

     

    Основные проблемы:

    * Кооперативная многозадачность потребует обязательной доработки запускаемых программ. А в случае подвисания одной из программ подвиснет вся система.

    * Для совместного использования оборудования запускаемые программы тоже потребуют доработки, а в отдельных случаях такая доработка невозможна.


  9. К тому же пытался.Вроде сделал,а ошибка есть.Пригорело у меня,вот и всё.Поэтому я и не стал заваливать форум всякими краш-логами своих программ.Я бы завалил форум тонну вопросами.Я пытался,так что это я на крайний припас.

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

     

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


  10. то есть туда тоже название библиотеки надо? ну ок [это не 1, а л]

    Не обязательно. Ошибка возникла в шестой строке при обращении к несуществующей таблице "forms"

    А в первой строке создается таблица "formsl".

    Поэтому ошибка либо в первой строке, либо в шестой.

    Если в первой строке таблица намеренно названа "formsl", то и в шестой строке нужно использовать ту же таблицу.


  11. Система, которую предложил @Alex, меня, как казуальщика, почти полностью устраивает. Она повысит мой вклад в общий онлайн.

     

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

     

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

     

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

    • Нравится 1

  12.  

    Alice = {1, 2, 3}
    print(_ENV["Alice"][1])
    

     

    Пожалуй, для глобальных переменных это самый удобный вариант доступа по имени.

    Сложность лишь в том, что само использование глобальных переменных чаще всего нежелательно в Lua.


  13. Сама схема улья мне кажется слишком вытянутой. Может, лучше использовать схему из проспектов и улиц? Вот так, например:

     

    ho7ILfy.png

     

    Путь на противоположный край такой карты будет короче, чем вдоль вытянутой в линию.

     

    Каждый квадрат на схеме соответствует одному чанку. Схема масштабируется блоками 32x32 чанка и соответствует одному файлу региона Майнкрафта. В каждом регионе помещается 28 сот размером 48x96 блоков. Останется только заглушить выходы с проспектов на пустые участки карты, а при расширении карты – снова прорубить проходы.

    • Нравится 2

  14. Ну вот. Всё как всегда.

    Собрались - пофлудили - выхлопа ноль. Сказали, мол, раз ты инициатор, то ты и инициируй.

    Поэтому я создал свою группу.

     

    Для чего я её создал? Для социального эксперимента.

    Я собираюсь проиллюстрировать сказанные мной слова и доказать одну вещь:

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

    Отлично. Живые учителя – лучшее средство для преодоления инертности мышления.

    Ради эксперимента даже я буду заглядывать в VK.

    • Нравится 2

  15. Ты сам ответил на свой вопрос

    Ок. Если VK используется для фоток, лайков и прочей имитации социальной активности, то как продвижение группы VK поможет притоку новых участников проекта?

    Достаточно, а то и много, ибо даже тут онлайн упал.

    А, кстати, почему? Мне казалось увлекательным осваивать программирование через игру. Майнкрафт идеален для этого. Юные программисты слишком серьезны, чтобы играть в игры? Или, наоборот, программирование в Майнкрафте слишком сложно для них?

     

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

    И не надо транслировать на стену ВСЕ топики. Я имел в виду только отдельные посты и только значимых тем и какую-то автоматизацию переноса форматированного текста.

     

    Интересно Томат тебе сколько лет, если у тебя такое мировоззрение. Мне кажется тебе уже за 30+ точно

    Да ладно. В ОК тем же самым: фотки, лайки и котики. Разве что, не так много пони и единорогов. Сам же говоришь:

    ОК  = соц.сеть для тех кому за 40+.

    Ну если сравнивать другие проекты [здесь должна была быть реклама], то там чуваки просто сделали из группы оповещалку, типа "сервер выключен, технические работы", "у нас обновление" и т.п. Больше тоже ничего особого там и нет.

    Так если этого достаточно, то и прекрасно. Можно даже пойти немного дальше и публиковать дайджест более-менее значимых тем и блогов. Вопрос в том, будет ли это кому-нибудь интересно. Даже я могу публиковать подобное:

    «Обычный школьник за 15 минут накопал стак алмазов. Он запустил программу...»

    «Наши инженеры разработали ядерный реактор на 15000 EU/t. Для его работы нужно всего лишь...»

    «Как не потерять нажитое непосильным трудом во время вайпа. Сейфы будут доступны в...»


  16. Объясните отсталому человеку: зачем нужна группа в VK; почему не на OK или FB; почему недостаточно форума.

     

    Зашел сейчас в группу, потыкал в статьи (или как оно там называется). Опять же, не понимаю, зачем дублировать инфу на двух ресурсах. Почему недостаточно просто оставить ссылку? А если важен полноценный текст, то, может, проще написать транслятор из форумного кода в ВК? Или статьи должны быть адаптированы? И если да, то какова цель адаптации?

     

    Возможно, я тут не один такой, кто не понимает смысла ВК, и пользоваться им тоже не умеет. Я в свое время создал учетку только для того, чтобы голосовать за проект на Топах. На этом моя активность в ВК закончилась. Что там еще можно делать? Народ в ВК выкладывает свои фоточки, ставит лайки, повсюду всякие чмоки-чмоки, котики, пони и единороги.

     

    Почему этой публике вдруг будут интересны ComputerCraft или OpenComputers? Даже если группа будет наполнена интересным для них контентом, то как потенциальная аудитория узнает о ней? А если нужно как-то рекламировать группу, то почему сразу не рекламировать форум? Что вообще требуется делать для раскрутки группы? Как это поспособствует развитию форума?

     

    Извините за нубские вопросы, это не троллинг. Если что, можете не отвечать. Может, я в принципе не способен понять смысла ВК.

    • Нравится 1

  17. Нет. В OC они похоже работают как и в CC

    Память мне не изменила. Проверил на ComputerCraft1.75.jar

    -- демонстрация параллельной обработки потоков черепашками ComputerCraft
    
    -- движение вперед-назад
    local function f1()
      for i=1,20 do
        turtle.forward()
        turtle.back()
      end
    end
    
    -- вычисления
    local function f2()
      for i=1,40 do
        for j=1,2e+5 do
          k=j*j
        end
        sleep(0)
      end
    end
    
    turtle.refuel()
    
    -- затраты времени на движения, на вычисления, и на все сразу:
    t0=os.clock() parallel.waitForAll( f1     ) t1=os.clock() print(t1-t0)
    t0=os.clock() parallel.waitForAll( f2     ) t1=os.clock() print(t1-t0)
    t0=os.clock() parallel.waitForAll( f1, f2 ) t1=os.clock() print(t1-t0)
    
    Запустил три раза:

    zxWIa6z.png

    Экономия времени очевидна.

     

    А как провернуть подобный трюк на OpenComputers?


  18. А у OC разве нет? Вон, в OpenOS даже уже встроили либу потоков.

    В OC потоки выполняются псевдопараллельно. А, если мне не изменяет память, библиотека Parallel в CC позволяла выполнять вычисления во время движения черепахи.

     

    Про периферальные возможности вообще непонятно. Хочется так, что в одном блоке максимум один компонент мог быть? Или на две стороны или инструмент (бесконечный), или модем?

    Робот не может напрямую подключиться, например, к монитору или к радару. А черепаха могла. С переходом на ОС некоторые из мобильных схем стали менее мобильными.
×
×
  • Создать...