Перейти к публикации
Форум - ComputerCraft
NEO

Program Downloader (v0.1)

Рекомендованные сообщения

Здравствуйте форумчане, пришла мне идея,создать программу для систематизации программ ,и скачивания их.

Использование:

key:d= открывает описание программы если таково есть.

key up= поднимает указатель на 1 вверх.

key:down= опускает указатель на 1 вниз.

key:space= выходит из под меню.

Pastebin:

http://pastebin.com/VhdQt94A

P.S все кто хочет,что бы их программа попала в список писать в эту тему таким форматом.

краткое название PD0.1(служит для имени скачанного файла) адрес pastebin , с конца до первого слеша.Пример есть адрес такой http://pastebin.com/VhdQt94A, а нужно такой VhdQt94A. получается PD0.1 VhdQt94A.

И написать Краткое описание программы. Пример Program Downloader 0.1 by NEO.This program serves to organize programs and for easy download.

можно длиннее.

Все баги , и ошибки отписывать сюда.

В скором будет поддержка большого описания.

Первая программа Файловый менеджер Zer0Galaxy , для примера.

Изменено пользователем NEO
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
function parseD(adress)
   lines= pastebin(adress)
   tokens= {}
   s= {}
   c= 0
   for i=1,#lines do
          for q=1,#lines[i] do
                 c= c+1
                 s[c]= string.sub(lines[i],q,q)
          end
   end
    temp= ''
    forS= false
    i= 0
    while i<#s do
       i= i+1
           forS= false
           if (s[i] == ';') then
                  forS= true
          tokens[#tokens+1]= temp
          temp= ''
           end
           if (s[i] == '=') then
          forS= true
          tokens[#tokens+1]= temp
          tokens[#tokens+1]= '='
          temp= ''
           end
           if (forS~= true) then
                  if (s[i+1] == nil) then
                         temp= temp..s[i]
             tokens[#tokens+1]= temp
                  end
          temp= temp..s[i]
           end
   end
 
   name_list= {}
   id_list= {}
   i= 0
   while i<#tokens do
        i= i+1
          if (tokens[i+1] == '=') then
         name_list[#name_list+1]= tokens[i]
         id_list[#id_list+1]= tokens[i+2]
         i= i+2
          end
 
   end
   return name_list,id_list
end

Всё это делается в три строчки. Читай тему "Шаблоны"

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

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

function parseD(adress)   lines= pastebin(adress)   tokens= {}   s= {}   c= 0   for i=1,#lines do          for q=1,#lines[i] do                 c= c+1                 s[c]= string.sub(lines[i],q,q)          end   end    temp= ''    forS= false    i= 0    while i<#s do       i= i+1           forS= false           if (s[i] == ';') then                  forS= true          tokens[#tokens+1]= temp          temp= ''           end           if (s[i] == '=') then          forS= true          tokens[#tokens+1]= temp          tokens[#tokens+1]= '='          temp= ''           end           if (forS~= true) then                  if (s[i+1] == nil) then                         temp= temp..s[i]             tokens[#tokens+1]= temp                  end          temp= temp..s[i]           end   end    name_list= {}   id_list= {}   i= 0   while i<#tokens do        i= i+1          if (tokens[i+1] == '=') then         name_list[#name_list+1]= tokens[i]         id_list[#id_list+1]= tokens[i+2]         i= i+2          end    end   return name_list,id_listend
Всё это делается в три строчки. Читай тему "Шаблоны"

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

Почему-то мне проще так делать. Чем писать 3 строки 1 из них не зная как работает.

Изменено пользователем NEO

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Почему-то мне проще так делать. Чем писать 3 строки 1 из них не зная как работает.

Неверный подход к проблеме.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Просьба: для простыней кода лучше использовать тег спойлер.... Находится он в разделе специальных ББ кодов (в редакторе третья иконка слева)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А раньше код сворачивался в спойлер автоматически. Ну не в спойлер, но сворачивался

Изменено пользователем Zer0Galaxy

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

патч:

Изменения:

Добавлено:

функция update:

Добавлены новые программы,такие

NewEdit() by Dimus

GUI by 1Ridav

CraftNetAPI

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@NEO, а как быть, если программа состоит не из одного файла, а из нескольких (у меня 5 файлов, которые должны работать вместе)? Нужно писать Installer? Это, конечно, не проблема, но просто интересно узнать.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@NEO, а как быть, если программа состоит не из одного файла, а из нескольких (у меня 5 файлов, которые должны работать вместе)? Нужно писать Installer? Это, конечно, не проблема, но просто интересно узнать.

Конечно писать инсталлер. Откуда Нео знает, что там подтягивают программы пользователей. И, видимо, надо выработать общие принципы и какие-то стандарты. Даунлоадер Нео качает выбранный из списка инсталлер в папку ТЕМР и закрывается.

 

Далее запускаем инсталл_имя_программы_№версии - этот инсталлер создает папку ProgramFiles(если ее нет) в корне папки ROM, далее создает папку для самой программы с одноименным именем(например MiddayCommander_v.1.2) и туда все запихивает вместе с необходимыми файлами, далее инсталлер на всякий случай бэкапит startup с новым именем startup_old_d_t , где d  и t , дата и время майна, записывает строку shell.run("bg ProgramFiles/MiddayCommander_v.1.2/mc") в startup  сам себя удаляет и ребутает комп.

 

В итоге у нас все программы по отдельным папочкам в главной папке ProgramFiles, при старте компа в фоновом мультизадачном режиме запущен Midday Commander, в корне ROM валяются бекапы всех старапов, так как пользователи очень любят в них хранить код программы какой-то. Не пробовал и не знаю пока как запустить несколько программ в мультизадачном многооконном режиме одновременно автомачически сартапом, но делать надо как-то так, в таком ключе по идее. 

 

Ну и фишка в том, что обычно ПК из мода КК мы используем для одной проги и одной задачи (замок на дверь, например), там не критично, можно и в стартап запихнуть прогу. А вот для планшета задумка даунлоадера, мультизапуск многооконный и хранение программ по папкам упорядоченным вполне может быть актуальной.

  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

AlexCC, да ты правильно говоришь, только инсталлер , потому что в много-файловой программе, нужно разпарсить весь файл найти все os. loadAPI() записать туда правильный путь, это будет куча проблем, а разработчику написать инсталлер намного легче.

 

@NEO, а как быть, если программа состоит не из одного файла, а из нескольких (у меня 5 файлов, которые должны работать вместе)? Нужно писать Installer? Это, конечно, не проблема, но просто интересно узнать.

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

Да и если нет инсталлера, мне пока будет проще его написать.

Изменено пользователем NEO

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Изменено пользователем NEO
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Так и надо, видимо, уговорить всех программеров начинать писать свой код с инсталятора. А тело программ (папки и файлы) хранить в ROM/ProgramFiles/Name_prog/...  тем более, что есть чудо файловый менеджер, а в сети можно найти подобие графических операционных систем, для КК по крайней мере.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так и надо, видимо, уговорить всех программеров начинать писать свой код с инсталлятора. А тело программ (папки и файлы) хранить в ROM/ProgramFiles/Name_prog/...

Я вообще привык всё делать, как в Linux: либы в /lib, а проги в /usr/bin.

Уже пишу инсталлер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добавление:

+BRController by Nick_alps.

+KrutoyTurtle by Krutoy.

  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Скоро добавлю много нововведений.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Скоро добавлю много нововведений.

 

Нравится мне, когда темы заканчиваются такими фразами  :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×