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

1Ridav

Администраторы
  • Публикации

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

  • Посещение

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


  1. Bundled работает по принципу бинарника

    00000000 = 0 нет сигналов

    00000001 = 1 сигнал только на одном цвете

    00000010 = 2 сигнал на другом цвете

    00000011 = 4 сигнал на обоих цветах

    00000111 = 8 сигнал на 3 цветах

    00001111 = 16 сигнал на 4 цветах

     

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


  2. Нет Рид, не в этом случае. Если запускать отдельно каждую функцию результат идентичный.

    Пруф для 100 000: http://ideone.com/JZODo2

    После создания таблицы и её обработки - она попадает в кэш. Она может быть там часами, если её не заменит что либо другое. Так что единственный способ исключить это влияние - заполнять таблицу другими данными перед каждым тестом.

    Заполнил

    Сериализовал

    Заполнил

    Разсериализовал


  3. Итак, я провел тесты. Результаты потрясающие - почти мой код сериализует в десятки раз быстрее.

     

    Для двухмерного массива с 1 000 000 полей замеры времени выполнения:

    //CC textutils
    serialize(): 45.94
    unserialize(): 1.73
    
    //OC serialization
    serialization.serialize(): 40.00
    serialization.unserialize(): 0.87
    
    //Krutoy table.tostring:
    table.toString(): 1.80
    table.fromString(): 1.19
    

    Пруф для меньшего количества полей:

    http://ideone.com/ICpS0L

    Не забываем про КЭШ, он сильно искажает показатели тестов, поэтому его надо очищать


  4. Гораздо более рационально делать так:

    2 пастбина.

     

    1 - Центр обновлений

    2 - Программа

     

    Центр обновлений - это обычный файл на пастбине, который имеет в себе лишь 2 строки

     

    v1.0.0.7 - к примеру версия текущая

    BlaHbLah - код пастбина с программкой

     

     

    Обновляясь прога GET запросом получит текущую актуальную версию и пастбин, на которой её можно скачать.

    Если есть более новая версия, то прога её скачает с указанного пастбина

     

    С учетом того, что размеры данного GET запроса незначительны + хедеры + офсет пакета так же не велики(офсет и тело)

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

    • Нравится 3

  5. Просмотрел код, чистый, понятный.

    Я увидел там лишь кнопки, текущая структура не предусматривает добавление других объектов типа прогрессбаров, текстинпутов и тд лабуды.

    Или это у вас из объекта суперкнопки выходит?

    Еще вопрос, для чего обрабатывать клик по группе кнопок? Они оверлапятся на экране? Если да, то как при этом они отображаются?


  6. Для этого и есть статус программера.

    Делаешь что нибудь интересное на компьютерах - постишь статью на сайт и получаешь доступ к китам со всеми комплектующими для компов.


  7. http://pastebin.com/Dp8nc55U
     

    pastebin get Dp8nc55U /lib/pref.lua

    pastebin get Dp8nc55U pref.lua

    В свободное время написал такую вот библу для более удобного хранения структурированных данных в файлах.
    К примеру часто видел, что в файлах стоит такая вот причуда:

     


    Bob
    Marley
    34
    Trololo street

     
    Если из слов еще можно понять, что хранится на строке, то с цифрами это сложнее:
     

    11
    1
    true
    3

     
    Более простой способ привести это в понятный вид - использовать параметризацию.
    Файл будет выглядеть так:
     

    name=Bob
    surname=Marley
    age=34
    address=Trololo street

     


     
    Вот и библа. Ссылка на пастбин сверху.

     

     

    Создаем новый файл с данными:

    local pref = require("pref") --так же можно использовать local pref = dofile("pref.lua") для загрузки из текущей папки, а не из папки lib
    local table = pref.create("newPrefFilePath") --к примеру новый файл "bob"
    table["name"] = "Bob"
    table["surname"] = "Marley"
    table["age"] = 34
    table["address"] = "Trololo street"
    pref.save(table) -- мы внесли изменения в таблицу, их надо сохранить. Если изменений не вносилось - можно не сохранять

    Загружаем существующий файл с данными:

    local pref = require("pref") --так же можно использовать local pref = dofile("pref.lua")
    local table = pref.load("newPrefFilePath") --к примеру файл "bob"
    print(table["name"], table["age"])
    --изменений в не производили, так что можно не сохранять
    table["age"] = 35
    table["weight"] = 70 --Добавили новое поле в существующий файл
    pref.save(table) --изменили возраст, сохраним

    Функции:

    pref.create("путь до нового файла данных")
    pref.load("путь до существующего файла данных")
    pref.save(таблица с данными)
    • Нравится 5

  8. Было бы очень хорошо, если бы ты документировал все API в этой теме. Как что называется, что делает и что возвращает. в деталях.

    Плюс привел несколько примеров использования

     

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


  9. Ценою неимоверных усилий удалось портировать уже известную вам библиотеку thread в ОС.

    Библиотека доступна для скачивания по команде

    pastebin get E0SzJcCx thread.lua

    По сравнению с версией для СС, библиотека имеет еще две функции, вызываемых без параметров:

    thread.init() - инициализирует многозадачный режим. Должна вызываться один раз перед вызовом других функций библиотеки.

    thread.waitForAll() - ожидает завершения всех дочерних потоков.

    Функции create, kill и killAll работают аналогично версии для СС.

     

    Пример работы с библиотекой:

    local thread = require("thread")
    -- Инициализируем многозадачность
    thread.init()
    -- Функция, которая выводит строку str несколько раз с интервалом секунда
    function foo(str,n)
      for i=1,n do
        print(str)
        os.sleep(1)
      end
    end
    -- Запускаем два экземпляра функции с разными параметрами
    thread.create(foo,"AAA",5)
    thread.create(foo,"BBB",7)
    -- Ждем завершения
    thread.waitForAll()
    

    Результат работы программы

    attachicon.giftest.png

    У меня 2 вопроса:

    1 - thread'ы убиваются сами после завершения функции или их надо убивать в ручную?

    2 - Можно ли убивать thread'ы вручную не дожидаясь их завершения?


  10. Трудность работу с большими проектами растет в разы. С файлом в 1000 строк работать в 10 раз труднее чем с 100 строками.

    В принципе код можно разбивать на части и использовать "библиотеки". Я именно так и поступаю. Библа строк на 500-700. сама прога на 150


  11. блин, точно OC, забыл, что это англ

    у меня в качестве ошибки пишет, что возможно синтаксическая ошибка, а после того как скачал, надо что-то настраивать?

    Что не так?

    в функции у тебя bottomAPI. стоит. Это незавершенный вид - поэтому и ошибка


  12. С динамическим нахождением пути всегда были и будут сложности. За это придется расплачиваться нагрузкой из-за вычислений наименее нагруженного и короткого пути; проверки доступности хостов


  13. Хоть я появился здесь недавно, но пожалуй тоже хотел бы себе :D  

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

     

    Я тоже хочу! :)

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


  14. Используются библиотеки 1Ridav: генерация чисел и передача файлов по RedNet сети.

     

    Я писал такие библиотеки? Когда? Где? И почему я об этом ничего не помню?

    • Нравится 1

  15. В моем api есть большой и жирный минус, исправить который возможно лишь преписав мост, который связывает андроид и ОС компьютер. Я не использовал библиотеки в роде netty. На каждое подключение создается 2 потока. 1 для андроид и второй для игровых компьютеров. При большом количестве подключений(от 10-15и выше) процессор, который обрабатывает мост - начнет захлебываться в обилии потоков, переключаясь между ними.

    Исправляется это довольно банально - требуется использовать библиотеку-обработчик подключений, которая позволит обрабатывать до 100 тыс подключений всего в 4 потоках. Переписать все руки не доходят.

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