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

Taruu

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

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

  • Посещение

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

    4

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


  1.   

    В 04.04.2022 в 00:37, Krutoy сказал:

    Моя версия проще. Лешего, не нужно учить луа. Скрафтил и вперёд.

    Идея крутая, но чую что тут не хватает аля SPA простого который тупо рисовал блок-схемы или человеко читаемый код. А при желании еще и разжевывал что каждая команда делает с примерами и видосами. Но там кол-во работы настолько большое что повеситься можно >_<


  2. Когда писал свои часы для биоса, нашел на формуе готовый код с объяснениями.
    Если хочется дублировать картинку на все мониторы то как вариант отредачить lua bios и посмотреть что будет, но стоит понимать что скорость зависит от уровня видеокарты 
    https://oc.cil.li/topic/1596-multi-screenscreen-mirroring/


  3. 9 часов назад, Bs0Dd сказал:

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

    Хорошо. Пни тогда меня. Есть идеи как улучшить NFPL, имхо в случае длинных страничек есть большие проблемы и неперевариемость со стороны стерилизатора, и нужно это исправлять... для чтения очень больших страничек :/

    • Ха-ха 1

  4. Нашел еще более критичный баг. Браузер не умеет в большие страницы в целом.
    Пределом возможности стал serialization.unserialize.
    Скорее всего у компа кончается память или в нем есть предел для размера.
    Решать это нужно через чтения файла и изменения принципа прокрутки.
    Так как код браузера я не особо понял и контакты на вк устарели, то прошу @Bs0Dd мне постучатся в контаткты :^


  5. В 19.05.2021 в 14:13, Krutoy сказал:

    Эх, ностальгия.

     

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

    Но правда, уже полтора года программирую свой 1.12.2 "Эксперт" модпак на ZenScript, и поэтому LUA пока ждет на полке.

     

    Еще, изучив VueJS, хочется сразу делать реактивный браузер. Это будет сразу возможностью использовать браузер как GUI.

     

    Но, думаю, не скоро.

    Если кто то всё еще сильно хочет исходников - пишите. Попытаюсь нарыть и залить.

     

    Я как понимаю там парсер html был с 0 написан? ибо то что находил готовое жрало таблицы и комп уходил в отказ,
    А как начал думать, понял что нужен парсер SGML и уже дальше плясать от этого...

    И понял что я это заколебусь рожать его на lua / - /


  6. 9 минут назад, BrightYC сказал:

    Нельзя. Программа на уровне EEPROM может подменить вызовы и к component.invoke. В том числе и к очереди сигналов и прокси компонентов.

    А если робот выключен, и тыкнуть его анализатором то там тоже подмена сработает? 


  7. 7 минут назад, BrightYC сказал:

    какой смысл, если EEPROM могли подменить? Ну засунешь дискету - а какой смысл, если код был запущен еепромой, которая пожет подменить *все*.

    Кстати, немного оффтопа, но дата-карта не обязательна. Она медленнее, чем software решения.

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


  8. А можно ли сделать защиту при помощи внешнего ключа?
    Те зашифровать все данные в роботе, а для его запуска юзать дискету с ключом и автораном.
    На ходу юзать Дата карту 2-3 уровня (можно даже карту достать) что бы запустить весь код, и после можно вынуть дискету.
    И если у нас сперли робота то результату будет ноль. Ведь для его запуска нужно засунуть дискету.

    И для того что бы узнать код, нужно тоже юзать дискету или знать ключ.
    Сработает ли такой вариант? 


  9. В 15.04.2021 в 02:29, daniilFigaSystem сказал:

    нее с майн ос 100% нет я ненавижу макось

    Я буду делать ос на Основе OpenOS

    пока почти сделал boot.lua и bin файлы

    Кстати а как инсталлятор сделать я просто не умею

    Может тогда стоит сделать пародию на Windows 3.0 и 95, 98?

    Которые вообще через DOS работали и сделать так же для начала? Только вместо DOS, openOS.

    А то в свое время MineOS так работала, но только от бесчисленного кол во костылей Игорь решил писать ось с 0....

    Так что как минимум советую тебе техническое задание составить :)


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

    В этом месте я всё-таки ожидал увидеть экспериментальное подтверждение «эффективности» этого трюка. Но именно это заблуждение надо развеять в первую очередь.

    Эксперимент:

    
    local a,b = 23,76
    
    local computer = require("computer")
    local mem0 = computer.freeMemory()
    
    for i=1,1e7 do
      a,b=b,a
    end
    print(mem0 - computer.freeMemory())  -- Результат: 0
    
    for i=1,1e7 do
      a=a~b  
      b=a~b
      a=a~b   
    end
    print(mem0 - computer.freeMemory())  -- Результат: 6631

     

     

     

    Тут ошибочка получается. У тебя print в памяти остается ?:/ Так что каждый раз нужно в переменную записывать.

    local a,b = 23,76
    
    local computer = require("computer")
    local mem0 = computer.freeMemory()
    
    for i=1,1e7 do
      a,b=b,a
    end
    print(mem0 - computer.freeMemory())  -- Результат: 0
    mem0 = computer.freeMemory()
    for i=1,1e7 do
      a=a~b  
      b=a~b
      a=a~b   
    end
    print(mem0 - computer.freeMemory()) 
    print()
    mem0 = computer.freeMemory()
    print("test")
    print(mem0 - computer.freeMemory()) 

    И вот что мне вывело:

    image.png.9105b53b7cd04a052b325b78f62e1dc7.png

     

    • Нравится 2

  11. Скрытый текст
    7 часов назад, eu_tomat сказал:

    Пффф.. Ну, раз я влез в эту тему, то продолжу обсуждение.

     

    Не совсем. Как долго работает компьютер, скажет computer.uptime(), а os.clock() скажет, сколько из этого времени компьютер потратил на, собственно, вычисления. Конечно, с некоторыми оговорками, но в целом именно os.clock() позволяет оценить нагрузку, создаваемую тем или иным кодом на игровой сервер.

     

    Это грязный эксперимент с неправильной интерпретацией результата. В нём извлечение поля из таблицы выполняется два раза, о чём не упомянуто в описании.

     

    Также эксперимент не сообщает о том, имеет ли смысл создавать локальную переменную для функции math.sin, если её планируется использовать всего два раза. Или пять, например.

     

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

     

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

     

    В этом месте я всё-таки ожидал увидеть экспериментальное подтверждение «эффективности» этого трюка. Но именно это заблуждение надо развеять в первую очередь.

    Эксперимент:

    
    
    local a,b = 23,76
    
    local computer = require("computer")
    local mem0 = computer.freeMemory()
    
    for i=1,1e7 do
      a,b=b,a
    end
    print(mem0 - computer.freeMemory())  -- Результат: 0
    
    for i=1,1e7 do
      a=a~b  
      b=a~b
      a=a~b   
    end
    print(mem0 - computer.freeMemory())  -- Результат: 6631

    Результат: Обмен значений переменных через a,b=b,a потребляет ровно 0 дополнительной памяти и быстро работает. Зато обмен посредством XOR и память потребляет, и работает медленно, да ещё и код загромождает.

     

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

     

    И даже если бы этот трюк оказался эффективным, почему нет упоминания о том, что xor работает не для всех типов переменных?

     

    И раз пошёл такой разговор, разберу предыдущее обсуждение:

    Эффективнее со всех точек зрения.

    Lua для любых операций создаёт буферные переменные для хранения временных результатов. Но, в случае a,b=b,a они уничтожаются незамедлительно в отличие от xor. Операция a,b=b,aтребует на выполнение столько же времени, как три отдельных операции присваивания, но потребления памяти не увеличивает.

     

     

     

    Сейчас поправим тогда.


  12. Итак делаю более структурированный пост чем был до этого...

     

    Для показания производительности используются:

    os.clock() - дает приблизительное время работы CPU во время исполнения программы.

    computer.freeMemory() - дает нам узнать сколько памяти есть у компа.

     

    Локализация функций:

    Делайте функции в программе локальными. Это работает как и с локализацией существующих функций.

    Пример с функцией math.sin и ее локальной версией:

    local computer = require("computer")
    local unicode = require("unicode")
    local x = 0
    local sin = math.sin
    local start = os.clock()
    local memory_start = 0
    for i=1,1e5 do
      x = math.sin(i)
    end
    print("1e5 math.sin",os.clock()-start)
    start = os.clock()
    
    for i=1,1e5 do
      x = sin(i)
    end
    print("1e5 local.sin",os.clock()-start)
    
    --Замер для редкого вызова
    start = os.clock()
    x = math.sin(3)
    x = math.sin(10)
    x = math.sin(16)
    x = math.sin(42)
    print("rare math.sin",os.clock()-start)
    
    
    start = os.clock()
    x = sin(3)
    x = sin(10)
    x = sin(16)
    x = sin(42)
    print("rare local.sin",os.clock()-start)
    
    --Замер для одиночного вызова 
    memory_start = computer.freeMemory() -- проверка на кушание памяти
    start = os.clock()
    x = math.sin(42)
    print("one math.sin",os.clock()-start, "memory take", memory_start-computer.freeMemory())
    
    x = 0
    
    memory_start = computer.freeMemory()
    local sin2 = math.sin
    start = os.clock()
    x = sin2(42)
    print("one local.sin2",os.clock()-start, "memory take",memory_start-computer.freeMemory())
    

    image.png.22d7dba130365843bad6cbd0523bd34a.png

     

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

    Так же я решил проверить данный метод на openOS библиотеке unicode

    local computer = require("computer")
    local unicode = require("unicode")
    local x = 0
    local start = os.clock()
    local memory_start = 0
    local un_len = unicode.len
    
    for i=1,1e5 do
      x = unicode.len(tostring(i))
    end
    print("1e5 unicode.len",os.clock()-start)
    
    start = os.clock()
    
    for i=1,1e5 do
      x = un_len(i)
    end
    print("1e5 local.len",os.clock()-start)
    
    --Замер для редкого вызова
    start = os.clock()
    x = unicode.len("Арбуз")
    x = unicode.len("Помидор")
    x = unicode.len("Капитализм")
    x = unicode.len("Ракета")
    print("rare unicode.len",os.clock()-start)
    
    
    start = os.clock()
    x = un_len("Арбуз")
    x = un_len("Помидор")
    x = un_len("Капитализм")
    x = un_len("Ракета")
    print("rare local.len",os.clock()-start)
    
    --Замер для одиночного вызова 
    memory_start = computer.freeMemory() -- проверка на кушание памяти
    start = os.clock()
    x = unicode.len("Hello world!")
    print("one unicode.len",os.clock()-start, "memory take", memory_start-computer.freeMemory())
    
    x = 0
    
    memory_start = computer.freeMemory()
    local un_len2 = unicode.len
    start = os.clock()
    x = un_len2("Hello world!")
    print("one local.len",os.clock()-start, "memory take",memory_start-computer.freeMemory())

    image.png.697751ec99d183a314e031bc3df1a15e.png

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

     

    Так же можно локализовать и свои функции:

    local computer = require("computer")
    local x = 0
    local start = 0 
    local memory_start = 0
    
    memory_start = computer.freeMemory()
    function func1(a,b)
      return a + b
    end
    start = os.clock()
    x = func1(9,0.3)
    print("norm func",os.clock()-start, "memory take",memory_start-computer.freeMemory())
    
    
    memory_start = computer.freeMemory()
    local func2 = function(a,b)
    return a + b
    end
    start = os.clock()
    x = func2(9,0.3)
    print("local func",os.clock()-start, "memory take",memory_start-computer.freeMemory())
    
    start = os.clock()
    for i=1,1e5 do
      local x = func1(i,i)
    end
    print("func1 \t",os.clock()-start)
    
    start = os.clock()
    local sin = math.sin
    for i=1,1e5 do
      local x = func2(i,i)
    end
    print("func2 \t",os.clock()-start)

    image.png.ea16aaa1e082ecc93f0e02a544f315e3.png

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

     

     

    Локальные переменные

    Используйте локальные переменные в зависимости от своей задачи. Если вам нужно сэкономить память то создавайте локальные переменные в функциях а если вам нужна переменная которая нужна множеству функций то лучше ее объявить глобально.
    Локальные переменные в функциях удаляются после завершения работы функции что позволяет сэкономить место в памяти.

    --var_global
    local computer = require("computer")
    local memory_start = computer.freeMemory()
    local test_table = {1,2,3,4,5,6,7,8,9,10}
    function work_on_test_table()
    --Что то делаем с test_table
    end
    print("memory take", memory_start - computer.freeMemory())
    
    --var_local
    local computer = require("computer")
    local memory_start = computer.freeMemory()
    function work_on_test_table()
    local test_table = {1,2,3,4,5,6,7,8,9,10}
    --Что то делаем с test_table
    end
    print("memory take", memory_start - computer.freeMemory())

    4w4POAPIln_nz-C1Gkxs6Rb3GtVO0VVNWIeknF3s

     

    Подготовка объектов (таблиц)

    Лучше подготовить таблицу с частью необходимых значений и их уже дополнять.

    print("create obj")
    start = os.clock()
    
    local t = {}
    for i = 1970, 2000 do
      t[i] = os.time({year = i, month = 6, day = 14})
    end
    
    print("direct insertion time", os.clock()-start)
    
    start = os.clock()
    t = {}
    local aux = {year = nil, month = 6, day = 14}
    for i = 1970, 2000 do
      aux.year = i
      t[i] = os.time(aux)
    end
    
    print("prepared insert time", os.clock()-start)
    
    
    
    start = os.clock()
    for i = 1, 1e5 do 
      local a = {}
      a[1]=1; a[2] = 2; a[3] = 3
    end
    print("num insert", os.clock()-start)
    
    start = os.clock()
    for i = 1, 1e5 do 
      local a = {true,true,true}
      a[1]=1; a[2] = 2; a[3] = 3
    end
    print("prepared insert", os.clock()-start)

    tPC1ihHgURvxoQsevGldwE60RygYknJXwjem5z9P

     

     

    X*X вместо X^2

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

    
    local start = os.clock()
    for i=1,1e7 do
      local x = i * i
    end
    print("*",os.clock()-start)
    
    start = os.clock()
    for i=1,1e7 do 
      local x = i ^ 2
    end
    print("^",os.clock()-start)
    
    start = os.clock()
    for i=1,1e7 do
      local x = i * i * i * i * i
    end
    print("* X5",os.clock()-start)
    start = os.clock()
    for i=1,1e7 do 
      local x = i ^ 5
    end
    print("^ 5",os.clock()-start)

    image.png.17126800d285174693f3b9d502666173.png

     

    Swap переменных

    Самый быстрый способ это использовать временную переменную,

    красивый и почти такой же эффективный метод перестановки переменных будет a,b = b,a

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

    Скрытый текст
    
    local a,b = 23,76
    
    local computer = require("computer")
    local memory_start = 0
    local start = 0
    
    print("test 1e7")
    memory_start = computer.freeMemory()
    start = os.clock()
    for i=1,1e7 do
      a,b=b,a
    end
    print("swap a,b = b,a", os.clock()-start, memory_start - computer.freeMemory())  -- Результат: 0
    
    memory_start = computer.freeMemory()
    start = os.clock()
    local temp1 = 0
    for i=1,1e7 do
      temp1 = a
      a = b
      b = temp1
    end
    print("temp \t",os.clock()-start, memory_start - computer.freeMemory()) 
    
    memory_start = computer.freeMemory()
    start = os.clock()
    for i=1,1e7 do
      a=a~b  
      b=a~b
      a=a~b   
    end
    print("swap ~ \t",os.clock()-start, memory_start - computer.freeMemory()) 
    
    print()
    print("test 100")
    memory_start = computer.freeMemory()
    start = os.clock()
    for i=1,100 do
      a,b=b,a
    end
    print("swap a,b = b,a", os.clock()-start, memory_start - computer.freeMemory())  -- Результат: 0
    
    memory_start = computer.freeMemory()
    start = os.clock()
    local temp2 = 0
    for i=1,100 do
      temp2 = a
      a = b
      b = temp2
    end
    print("swap temp",os.clock()-start, memory_start - computer.freeMemory()) 
    
    memory_start = computer.freeMemory()
    start = os.clock()
    for i=1,100 do
      a=a~b  
      b=a~b
      a=a~b   
    end
    print("swap ~ \t",os.clock()-start, memory_start - computer.freeMemory()) 
    
    print()
    print("one swap")
    memory_start = computer.freeMemory()
    start = os.clock()
    a,b=b,a
    print("swap a,b=b,a ",os.clock()-start, memory_start - computer.freeMemory()) 
    
    memory_start = computer.freeMemory()
    start = os.clock()
    local temp = 0
    temp = a
    a = b
    b = temp
    print("swap temp",os.clock()-start, memory_start - computer.freeMemory()) 
    
    memory_start = computer.freeMemory()
    start = os.clock()
    a=a~b 
    b=a~b
    a=a~b
    print("swap ~ \t",os.clock()-start, memory_start - computer.freeMemory()) 

     

    image.png.0e166306086cc5bd86a482ecc8e3a2ff.png

     

     

     

    Вот все что смог более менее конкретное накопать и проверить. Прошу кинуть в лицо ошибки или вопросы. Вместе подумаем.... Теперь поправили.

    image.png

    • Нравится 2

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

    Изначально я не хотел комментировать этот «урок», т.к. объём комментариев в несколько раз превысил бы изначальный текст. Главная претензия к нему в отсутствии конкретики и каких-либо примеров, позволяющих читателю прийти к тем же выводам.

     

    @Taruu , приведя конкретный пример, спасает этот урок.

     

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

     

    Демонстрация: локальная функция sin работает в два раза быстрее, чем функция math.sin. Замедление происходит два раза: при извлечении поля math из таблицы глобальных переменных и при извлечении поля sin из таблицы math.

    
    кусочек кода

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

     

    А ещё важно продемонстрировать, начиная с какого числа использований становится выгодным копировать функцию math.sin в локальную переменную. Потому что если бездумно повторять советы из этого «урока», то вместо оптимизации может получиться пессимизация.

     

    Также я советую для записи чисел с большим количеством нулей использовать научную форму. Чтобы понять, сколько нулей содержит число 100000, мне приходится задерживать взгляд на этом числе, а запись 1e5 считывается мгновенно.

    Я больше как пример того что смог найти. Оформлять это точно еще надо (я просто протестировал наскоряк).

    Ихмо я бы залез на уровень языка и посмотрел почему это работает быстрее :/
    Сейчас попробую оформить это хоть во что-то читабельное. 


  14. Если кратко у любителей факторки поймал вот эту книжку.

    Написал вот этот код:

    Скрытый текст
    
    local computer = require("computer")
    
    function freeMemory()
      local result = 0
      for i = 1, 10 do
        result = math.max(result, computer.freeMemory())
        os.sleep(0)
      end
      return result
    end
    function memoize (f)
    local mem = {} -- memoizing table
    setmetatable(mem, {__mode = "kv"}) -- make it weak
    return function (x) -- new version of ’f’, with memoizing
    local r = mem[x]
    if r == nil then -- no previous result?
    r = f(x) -- calls original function
    mem[x] = r -- store result for reuse
    end
    return r
    end
    end
    
    
    print("function")
    local start = os.clock()
    for i=1,100000 do
      local x = math.sin(i) --0.026591985
    end
    print(os.clock()-start)
    
    start = os.clock()
    local sin = math.sin
    for i=1,100000 do
      --local x = math.sin(i) --0.026591985
      local x = sin(i)        --0.01030093
    end
    print(os.clock()-start)
    
    print("tables")
    start = os.clock()
    for i = 1, 100000 do 
      local a = {}
      a[1]=1; a[2] = 2; a[3] = 3
    end
    print(os.clock()-start)
    
    start = os.clock()
    for i = 1, 100000 do 
      local a = {true,true,true}
      a[1]=1; a[2] = 2; a[3] = 3
    end
    print(os.clock()-start)
    
    print("fill nil")
    t = {}
    lim = 20000
    for i = 1, lim do t[i] = i end
    
    start = os.clock()
    for k in pairs(t) do
      t[k] = nil
    end
    print(os.clock()-start)
    
    t = {}
    for i = 1, lim do t[i] = i end
    
    start = os.clock()
    while true do -- хорош для малых таблиц и поиска по ним. Но крашит комп при больших таблицах
      local k = next(t)
      if not k then break end
      t[k] = nil
    end
    print(os.clock()-start)
    
    print("time demo")
    start = os.clock()
    local t = {}
    for i = 1970, 2000 do
    t[i] = os.time({year = i, month = 6, day = 14})
    end
    print(os.clock()-start)
    
    start = os.clock()
    local t = {}
    local aux = {year = nil, month = 6, day = 14}
    for i = 1970, 2000 do
    aux.year = i
    t[i] = os.time(aux)
    end
    print(os.clock()-start)
    
    print("memory demo")
    print("start \t \t",computer.freeMemory())
    freeMemory()
    for i = 1, lim do t[i] = i end
    print("with normal table ", computer.freeMemory())
    t_m = memoize(t)
    t = {}
    print("with memoryzed \t",computer.freeMemory())
    
    
    
    
    

     

    И вот какой результат:

    0w-W8BFTGkkERaIfJR-k4cx8_ImaI-SJhBxVCfaR
    Как видно некоторые моменты реально спасают а некоторые не очень. 
    Там еще есть совет о корутинах но я не проверял.
     

    • Нравится 2

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

    А почему б и нет. В теории можно парсить страницу и превращать ее в подобные объекты в NFPL, но

    • Нужно сделать конвертацию картинок в OCIF и резать их по разрешению, ибо даже при невысоких разрешениях отрисовка существенно замедляется
    • Нужно рассчитывать координаты объекта, ибо NFPL - координатно ориентированный язык и каждый объект имеет свои координаты
    • NFPL пока не подразумевает наличие скриптов (однако Lua-подобные скрипты планируются) поэтому пока что страницы будут исключительно статичные

    В остальном, в принципе, ничего невыполнимого нет, хоть на ходу их конвертировать на сервере (получится туннель HTML-NFPL), но я в HTML не слишком специалист, поэтому сам заниматься этим не буду. Так что если кто хочет - мануал по языку в шапке есть, дерзайте!

    Я просто уже находил упрощятор html на питоне. Попробую сделать хотя бы какой то конвертор и повесить на расберю. Как только руки дойдут конечно)

    • Нравится 1
    • Грусть 1

  16. 11 час назад, VladG24_YT сказал:

    - Добавлен алгоритм запуска OCEmu для Ubuntu и Arch Linux (требует предустановленного интерпретатора Lua 5.2 и библиотек luaffib, luafilesystem, luautf8 и SDL2)

    Там вроде и 5.3 работает. И на нем лучше и писать ибо там ось новой версии.


  17. Очень полезным считаю автодополнение кода.
    Причем как и lua кода в папочках, так и прямое API к OC.
    Ибо сейчас юзаю tabnine в Atom (Vscode не влюбился мне) что бы он периодически подсказывал код и то в слепую)

    Идея годная, главное что-бы было логическое завершение.


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

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

    Но в таком случае для работы вместо жесткого диска потребуется карта данных:unsure:

    Ну зато система будет монолитом. И хакнуть не получится.


  19. 2 часа назад, NEO сказал:

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

    Там больше проблем будет в плане написания ихмо велосипед.

    Хотя сделать базу на уровне sqlite было бы за глаза для майновского уровня.
    И больше идет вопрос как делать? SQL или свои мини костыли....

    Как вариант можно попробовать упоротся и сделать хотя бы быстрый csv ридер.

    Уже будет хоть что то.


  20. 10 часов назад, whiskas сказал:

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

    Ну тогда тут все утыкаетя в базу данных :/
    Странно что никто еще не делал СУБД под opencomputers...

×
×
  • Создать...