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

whiskas

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

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

  • Посещение

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

    17

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


  1. 1 час назад, Taoshi сказал:
    
    local allCraftables={}
    local meCraftables = me_interface.getCraftables()
     for v,f in pairs(meCraftables())do if type(f)=='table' then table.insert(allCraftables,f.getItemStack())end end 
      

     

    Я думаю он имел в виду что разобрался з фильтрами для метода. В твоем примере ты тянеш все рецепты из МЕ что может призвести к нехватке ОЗУ.


  2. В МЕ есть АПИ методы для того что б вернуть определенные предметы. Если юзать эти АПИ методы тогда проблем з ОЗУ не должно быть. Назву метода не помню но думаю можешь проверить все методы.

    Я когдато делал похожую програму. Можеш глянуть методы которые я юзал https://github.com/salimAbdulIt/opencraftnet/blob/1.7.10/balancer/balanceService.lua

     

    local itemFromMe = component.me_interface.getItemDetail({ id = item.name, dmg = item.dmg }).basic()


     


  3. Когдато делал прожку которая автомутирует пчелок. Вот парочку моментов:
    1) Нельзя автоматизировать пчелиный улей. (Можна только пасеку или биг улей)
    2) Нельзя ставить/убирать рамки из пасек. 
    3) Метаданные о пчелах (все их особенности) можна получить из пчелы. Но перед этим нужно ее проанализировать. Автоматичиски это можна сделать только через анализаторы которые блочные. 
    4) В пасеки есть АПИ для получения всех возможных рецептов пчелок (мутаций). 


    PS: Рамки в пасеку нельзя запхать никак. Только руками. Ни воронка ни ОС ни любой другой мод не видит слоты рамок.

    • Нравится 1

  4. а я и не знал что мы уже переквалифицировались в решение задач из информатики. Попроси chat GPT. Думаю поможет

    вот ответ от него
     

    def get_divisors_sum(n):
        divisors_sum = 0
        for i in range(1, int(n**0.5) + 1):
            if n % i == 0:
                divisors_sum += i
                if n // i != i:
                    divisors_sum += n // i
        return divisors_sum
    
    max_divisors_sum = 0
    number_with_max_divisors = None
    
    for num in range(268220, 270336):
        divisors_count = 0
        for i in range(1, int(num**0.5) + 1):
            if num % i == 0:
                divisors_count += 1
                if divisors_count > 4:
                    break
        if divisors_count <= 4:
            divisors_sum = get_divisors_sum(num)
            if divisors_sum > max_divisors_sum:
                max_divisors_sum = divisors_sum
                number_with_max_divisors = num
    
    print("Число с максимальной суммой делителей, имеющее не более четырех делителей:")
    print("Число:", number_with_max_divisors)
    print("Сумма делителей:", max_divisors_sum)
    print("Количество делителей:", divisors_count)

     

    • Ха-ха 1

  5. OC тяжелее юзать иза ограничений в памяти и ограничений в действиях. Но это позволяет делать ефективные решения. Помню когда я свою БД писал на ОС. Мне пришлось создавать индексы как в реальной БД что б все ускорить.

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

     

    В ОС даж есть специальный тип роботов (дрон). Он не считается блоком - он ентитя. Потому он позволяет тоже делать много интересных програм. И мне очень нравится что в ОС все идет на енергии а не как в СС (черепашки на угле. Притом тратят уголь ток что б двигатся. Остальные дейсвия бесплатные)

    Помимо этого в ОС даже есть интеграция с многими плагинами/модами. Например роботы не могут ломать чужые приваты (могут ломать ток приваты того кто его поставил).

     

     

    Потому я топлю за ОС. Правда очень большой минус это то что его забросили. Последняя версия для майна 1.12.2. Хотя там люди работают над портированием его на новые версии - даже ПР уже сделан. Но я б не ожидал что ктото его закончит

    • Нравится 4

  6. Когда то была идея сделать нормальные коллекции для OC. К примеру как в джаве. Всякие ArrayList, LinkedList, HashMap, TreeSet, ... .

    Потом я подумал о том что б сделать эти коллекции с записям данных на диск. Но сами понимаете записывая в 1 файл быстро упрёмся в лимит по ОЗУ. Да и парсить большой файл ради 1 элемента глупо. И тут я нашел интересную штуку под названием unmanaged drive

    Сначала я ставился скептически к нему. Думал все равно будет долго и тд. Но позже решил провести тестирование перфоменса

    Я решил сначала попробовать записывать в сектора. И увидеть сколько операций можно сделать в 1 секунду.

    И результаты меня приятно удивили. Я смог записать в 1280 секторов (1 сектор = 512 bytes) за чуть больше 1 секунды.

    unknown.png\

     

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

    Я провел тот же эксперимент, но уже записывал в сектора не по порядку. В предыдущем тесте я записывал в первый сектор потом во второй и тд.

    В этом тесте я записываю в 1 потом в 32 потом  64 и потом когда дойду до 1024 возвращаюсь к 2 и тд ... 

    unknown.png

    В этом случае запись в файл заняло 4 секунды против 1.33. Получается диск, работает приблизительно, как и реальный диск. Где двигать каретку это дорогостоящая операция.

     

    Но даже в таком случае перфоманс меня устраивает.

    В следующем тесте показывается что чтение быстрее чем запись в 2 раза.

    unknown.png

     

    Позже я реализовал какую не какую TreeMap. Очень сырую, но сделал для тестирования перфоменса в реальных условиях.

    Мапка была сырая с багами и тд. Также и либка что позволяет работать с unmanaged disk тож баганутая и сырая. Но я смог увидеть реальные результаты.

    Я записывал в пустую мапку 1000 элементов поочереди. То есть не какой-то putAll механизм. А простой put вызвал 1000 раз.

    На запись этих 1000 элементов ушло 43 секунд. Что очень даже неплохо. ~23 элементов в секунду. Притом что это можно ускорить раз в 100 реализовав putAll метод. Далее я попытался прочить 1000 элементов по ключах. И на это ушло 17 секунд.

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

     

    Притом прошу заметить что это TreeMap а не HashMap. HashMap был бы в раз 10 точно быстрее.

    Выходит что при помощи unmanaged drive мы можем легко обойти 1 тик штрафа при открытии файла. И записывать и читать данные намного быстрее.

    Также мы можем хранить данные в них, а не в ОЗУ используя коллекции. Экономя очень много памяти.

     

     

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

  7. 3 часа назад, Taoshi сказал:

    А разве по умолчанию не выбираются лучшая видеокарта и лучший экран? Или вас интересует 'лучший экран' по размерам в игре?

    Правда. Никогда еще не делал компютер первого или второго лв для программ. Только ради дюпа делал их ибо их быстрее скрафтить). Сейчас делаю ток серверные компы. 


  8. 1 час назад, prop сказал:

    Создается мир с фиксированными версиями IC2 и OC, строиться модель, проводятся замеры.

    Здесь скорее все теоретики. Врятли даже майн еще играют. Лень будет комуто такое строить. Так что можеш сам это замутить и нам написать.

    Хотя могу ошибатся и ктото всетаки захочет сделать такое.


  9. 16 часов назад, eu_tomat сказал:

    Для ненагруженного сервера такое увеличение нагрузки не критично, но там и защита от лагов не требуется. Редкие микролаги не сильно мешают. Зато на перегруженном сервере каждая дополнительная операция в серии увеличивает шанс не закончить её в отведённое время.

    А при чем тут перегруженость сервера? Если ТПС сервера 10 тогда и реактор работает в 2 раза медленее и комп также.

    Если считать по тикам ибо реактор дает в любом случае енергию каждый тик. А нагревается он в свой реакторный тик. 

    Хай будет N количество стержней.

    Выходит если заменять с отключением тогда ты теряеш енергию с всего реактора (R) на протяжение 4 тиков = 4R

    А если менять с освобождением 1 клетки от стержня получается 5 тиков (забрать, поставить новый теплово, поменять местами, забрать поломаный, поставить назад стержень). И мы теряем на протяжение замены всего 1/N * 5R. Что в много раз меньше чем предедущий вариант.

    А если менять с освобожением от всех стержней задействуваных тогда +- (точно считать не хочу) (буду считать что нужно 3 стержня убрать. 8 тиков. 

    И мы теряем 3/N * 5R (даж немного меньше ибо на 1 тике ток 1 стрежня нету, на втором ток 2х, на третем всех 3х)

     


  10. 3 часа назад, eu_tomat сказал:

    Можешь объяснить в каких случаях такой способ замены предпочтительнее полного останова реактора?

     

    Чесно говоря я не хочу сейчас считать сколько оно выиграет. Но уверен что намного быстрее будет работать ибо конденсаторы и так нужно менять в различное время (они ломаются все поразному). И проблема полной остановки в том что ты офаеш фул реактор что б заменить 1 тепловод. Количество инцедентов этот способ не увеличит (или увеличит не на много). Но 1 инцедент вместо 4х операций будет делать около 6-8


  11. Впринципе можна менять конденсаторы через метод из openPeripheral.swapStacks. Просто нужно будет иметь в реакторе 1 пустую клетку. Всегда туда ложить целый конденсатор и потом менять его с поломаным. В этом случае реактор никогда не останется без конденсатора и можна будет заменять их не офая реактор. 

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

    • Нравится 1
    • Спасибо 1

  12. Писать код мне лень уже. Потому оставлю только инфу. В мире минекруфта очень мало казиков было сделано. Самое лучшее это мое с кровьякой

    1). Казино (мое с кровякой).

    Сылка - https://github.com/salimAbdulIt/OpenComputers-Casino

    Поставить изично. Работать будет. Из сложностей это запустить игру на вещи.

    Скрин не последней версии потому количество игр и меню может отличатся

    Скрин:

    unknown.png

     

    2. Казино из серверов MCskill. Создатель SkyDrive_

    сылка - https://pastebin.com/Zmyfjetp.

    Поставить сложностей нету. Только проблема в том что казино админское. Потому нужно будет переписать немного кода.

    Скринов нету.

    • Нравится 1
    • Спасибо 1

  13. Dreamfinity? --- хз 

    cristalix? --- время от времени чанки вайпаются сами по себе. Иногда приходиш а МЕ сети уже нету :). Но такто раздрешено почти все. Чанклодеры имбоавтофермы. И намного больше модов чем на других проектах

    mcskill? --- у админов этого сервера фетиш на то что б небыло автоферм. Потому там нужно жить в шахте. Да и они жёсткие противники чанклодеров. Только на грег теч они осталсь. Но с плюсов ОС даж есть на магике и питается он маной. P.S. на 1.7.10 серверах ОС версии 1.7.2

    • Спасибо 1

  14. Ехх. А это была моя первая прога которую я написал с 0. Та первая версия что я выложил. Код ппц какой гавнокод. Но идея топ проверять что игрок на сервере добавлением его в комп. Кто знал что майнкрафт сделает из меня программиста.

    • Нравится 2
    • Спасибо 1

  15. Использовать вещи не поназначению -_-. Я так когдато пытался подключить 2 компа к 1 монитору и общатся через него). Ибо у сетевой карты задержка 1 тик а вдруг монитор смог бы быстрее. Я уже не помню получилось или нет. Ну подключить точно получилось. Компы общались. Но быстрее чем 1 тик не помню

    • Спасибо 1

  16. 13 часа назад, Asior сказал:

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

    Openperipheral в помощ. Он и на старой версии имеет метод getAllStacks. Я думаю он там есть. Просто автор не указал. Ибо сервер из старой ОС и малым ТПС это только мцскил. 

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

    • Спасибо 1
×
×
  • Создать...