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

Totoro

Гуру
  • Публикации

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

  • Посещение

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

    289

Все публикации пользователя Totoro

  1. Итак, вы написали крутую программу. Всё работает отлично, не глючит, и вы горите желанием поделиться своим творением с общественностью. Какие есть варианты? 1) Pastebin Это самое популярное, простое и идеальное решение для программ из одного файла. Заливаете файлик, даёте юзерам ссылку или код файла - и дело в шляпе. Консольная утилитка для скачивания программ с Pastebin доступна прямо в составе OpenOS. 2) Wget Здесь тоже всё достаточно просто. Кидаете файл куда угодно в интернете, лишь бы прямую ссылку можно было получить. Юзер пишет: wget <url> и получает ваш файл. 3) Копи-паст Просто, но геморно. Сначала надо создать файл, потом скопировать в него код (откуда-нибудь). Потом сохранить. Причём длинный листинг за одни раз скопировать не выйдет. Размер буфера обмена в ОС - 256 строк. Ну, тут вроде всё ясно. Но как быть если программа состоит из нескольких файлов? Или если она использует какую-нибудь прикольную библиотечку? Залить десятью файлами и заставлять пользователя скачать всё? 4) OPPM Многие наверное слышали, но мало кто использует. Это клиент к репозиторию OpenPrograms на GitHub. Он предназначен специально для программ под OpenComputers. Однако, тут тоже не всё безоблачно. Во первых надо владеть Git'ом. Во вторых - получить личный репозиторий в OpenPrograms. В третьих, надо будет заполнить специальный конфиг для своей программы. Если в нём будет хоть одна ошибка - всё сломается. 5) Pastebin с самописным инсталлятором Многие в итоге приходят к этому. Вы делаете небольшой скрипт и заливаете его на Pastebin, как обычно. Когда пользователь запустит скрипт, тот уже самостоятельно докачает остальные файлы, раскидает их по нужным папкам и настроит конфиги как надо. Это гибкий способ. Но хлопотный. Надо морочиться с инсталлятором. Надо постоянно обновлять его код под новые версии программы или библиотек. Надо объяснять юзерам, как именно установить программу. А если у пользователя две программы, которые используют одну библиотеку, то на жёстком окажется две копии этой библиотеки = лишние затраты места. Было бы здорово этот процесс как-то облегчить или даже автоматизировать, не правда ли? И тут на помощь приходит репозиторий Hel. 6) Hel Repository Репозиторий - это сайт, которых хранит инфу о программах, и облегчает их поиск и установку. Общая идея такова. Вы пишете программу как обычно. Там, где вам удобно. Вы можете заливать её на Pastebin, GitHub, C9, файлохранилище или вообще на свой личный сайт. Главное - чтобы была прямая ссылка на файлы. Когда пришла пора релизиться, вы заходите на сайт репозитория и создаёте там новый пакет с простым и понятным именем, которое легко запомнят ваши пользователи. Интерфейс создания пакета несложен. Но позволяет многое. Вы можете указать лицензию, под которой распространяется код. Добавить короткое описание для каталога (не более 120 символов). Плюс длинное описание для странички пакета. Тут можно описать подробно ньюансы использования программы. Приложить примеры кода, если это библиотека. Длинное описание поддерживает форматирование кодом Markdown и подсветку синтаксиса 20 с лишним языков программирования (включая Lua и MoonScript). Далее можно приаттачить несколько скриншотов (они потом будут показаны в слайдере наверху странички пакета). Тегами указываются авторы проекта, а также пользователи Hel, которые имеют доступ к редактированию пакета (обычно это вы сами, но можно "допустить" к рулю кого-то ещё). Плюс контент теги. Это обычные теги, которыми можно потом пользоваться, чтобы найти вашу программу по ключевым словам. И наконец главное. Версии программы. Обычно, ваша первая программа имеет версию вида 0.1.0 или 1.0.0. Но потом вы решаете добавить немного функциональности, пару фич и печенек. Появляется версия 0.1.1. Потом 0.2.0. А то и 2.0.0. Но не всем юзерам нравятся нововведения. Какие-то ретрограды остались сидеть на версии 0.1.0, "потому что раньше лучше было". Можно сказать им, что они дураки. Но они ведь обидятся, и свалят к конкурентам. Однако, есть решение получше. Репозиторий Hel позволяет каждому пакету иметь одновременно несколько версий. Каждая будет доступна для скачивания и установки. И все юзеры останутся довольны. На вкладке версии вы указываете ссылки на все нужные файлы, на все части программы. Тут тоже есть дополнительная плюшка. Если нужная вам библиотека уже есть в репозитории, в виде пакета, можно не морочиться с её файлами, а просто указать её название как "зависимость". Тогда репозиторий будет автоматически устанавливать эту библиотеку всем, кто захочет воспользоваться вашей программой. Когда настройка завершена - просто сохраняете пакет и всё. Теперь любой пользователь может найти его в каталоге на главной странице репозитория и установить себе. Установить любой пакет (любой версии) с репозитория крайне легко. И не имеет значения, сколько в нём файлов, сколько библиотек и зависимостей. Просто пишете: hpm install mypackage@version И пакет будет скачан, все нужные файлы распиханы по нужным папкам, а программа полностью готова к запуску. Удалить пакет, если он вам вдруг больше не нужен, тоже очень просто: hpm remove mypackage А если вы вдруг прознали, что доступна свежая версия пакета, можно сделать: hpm upgrade И все пакеты будут обновлены. Сам клиент hpm - это по сути универсальный установщик. Типа того, который могли бы написать вы сами. Но он уже написан за вас. =) Ставится всего одной командой. Умеет обновляться сам, при помощи апгрейда с репозитория Hel (он там тоже в виде пакета есть). Плюс он тоже обладает несколькими интересными плюшками. Например его можно расширять дополнительными модулями. В базовой комплектации он как раз имеет один дополнительный модуль, который позволяет ему работать c OPPM. Так что оригинальный oppm можно в принципе и не ставить, если у вас уже стоит hpm. Вы можете написать свой собственный модуль, и научить hpm работать не только с Hel и OPPM, но и Pastebin (Hastebin, Asiebin), С9, Яндекс.Диск или вообще своей системой пакетов. Подробности я раскрою в одном из следующих гайдов (в относительно недалёком будущем). А пока заходите на репозиторий по ссылке: https://hel.fomalhaut.me/ (Эта же ссылка есть в шапке форума, в разделе Lua.) Клиент HPM можно установить командой: pastebin run vf6upeAN P.S. Репозиторий сейчас находится в статусе Beta. Поэтому пишите каких фич ему не хватает по вашему мнению, или какие баги вам особенно досаждают. Будем постепенно допиливать. Enjoy!
  2. Спустя ровно год (всё строго по традиции), выкатываю патч-версию 0.7.1. Здесь пофикшен баг с призрачным слоем, а также ещё пара тройка багов. Прокачаны текстбоксы. Теперь они должны стать немного нагляднее и удобнее. Ссылка на пакет: https://hel.fomalhaut.me/#packages/holo Ставить с HPM (конкретная версия): hpm install holo@0.7.1 или просто (самая новая версия, что на текущий момент тоже 0.7.1): hpm install holo Программы тут же станут доступны, под названиями holo и holo-view. P.S. Если нету HPM, ставьте его командой: pastebin run vf6upeAN
  3. Так в чём проблема? Видишь этот принт в цикле? Он распечатывает временную переменную file. В ней лежит как раз то, что тебе нужно. Название очередного файла. Всё что от тебя требуется - куда-то его положить. Например в другую переменную. Или сложить в таблицу. И будет именно то, что ты хочешь.
  4. Ты попробовал мой пример? Там идёт как раз получение списка файлов. В виде названий.
  5. Тебе получить список файлов в каталоге? Это делается фунцией filesystem.list(path: string): function -> string or nil, string из Filesystem API. Пример: for file in filesystem.list("/home") do print(file) end
  6. Тут требуется развёрнутое пояснение.
  7. Кому интересно, те ждут уже 2 с половиной месяца :P
  8. Ну, да, я согласен. С нулевыми слипами - это сейчас просто лагомашина. Анекдоты были бы поприкольнее. Можно мой Баш-принтер модифицировать под это дело =)
  9. Вот кстати, не факт. =) Если сделать PNG-слайдшоу, будет весма и весьма затратнее такой простой пиксельной каши, мне кажется.
  10. Смысл будет - забитый гвоздь. =) Просто стоимость такого способа неоправданно высока.
  11. Эта инфа зависит от конфига. Смотреть в секции power.cost. Дефолтный: # The amount of energy a robot consumes per tick when running. This is # per default less than a normal computer uses because... well... they # are better optimized? It balances out due to the cost for movement, # interaction and whatnot, and the fact that robots cannot connect to # component networks directly, so they are no replacements for normal # computers. robot=0.25 ... # The conversion rate of exhaustion from using items to energy # consumed. Zero means exhaustion does not require energy, one is a # one to one conversion. For example, breaking a block generates 0.025 # exhaustion, attacking an entity generates 0.3 exhaustion. robotExhaustion=10 # The amount of energy it takes a robot to move a single block. robotMove=15 # The amount of energy it takes a robot to perform a 90 degree turn. robotTurn=2.5 На детект нету специальных трат, так что полагаю, во время детекта идёт только общий расход энергии.
  12. Вижу, уже отступы появились. В Lua обычно используются отступы пробелами, размером в 2 пробела. Вместо этого всего, можно было залить всё на pastebin, hastebin. Либо на худой конец выделить важный для контекста кусочек кода не больше 20 строк, и засунуть его в тег
  13. Давненько никто генераторов булыжника не писал. Я аж соскучился. P.S. @Laine_prikol, советую обратить внимание на такую штуку, как форматирование кода. В частности - отступы.
  14. Это будет другая архитектура. В сети Zn трафик передаётся всеми узлами текущего облака. И если оно слилось с другим облаком - оно будет получать весь трафик клиентов из первого облака и наоборот.
  15. Тут я согласен, наш проект был и остаётся уникальным в этом плане. Всё что я хотел сказать - что моды и изменения конфига - это неинтересно и не спортивно. Да, любой пакет обойдёт все узлы. Что ты имеешь ввиду под облаками? Сейчас устройство сети таково, что если существует две отдельные сети (в разных концах карты, например), то стоит появиться хотя бы тоненькуму мостику между ними (юзер с планшетом прошёл) они тут же сольются в одну большую сеть, и пакеты с западной (условно) подсети будут бегать в восточную через планшет юзера.
  16. Всё это очень хорошие идеи, которые разбиваются об одно но - они не работают на рандомном серваке с нетвикнутым модом OC. Ну и да, Лёха прав.
  17. Ну, в каком-то смысле - да. Она предлагается как фундамент такой сети. По Zn можно гонять обычные мессаги в публичном режиме. Она просто обеспечивает доставку через цепочку модемов. А если требуется что-то сложнее - то уже пилишь "надстройку". Добавляешь end2end шифрование, или ограничиваешь список доверенных узлов и т.п. В том и фича, что тут всё гибко, и не принуждает к какой-то одной модели общения.
  18. Опеннеты на мой вкус были немного переусложнены. Это как с UT. Первоначальная тема очень громоздкая, и там никто понятия не имеет, как оно должно выглядеть. Но потом мы взяли идею, вытряхнули весь мусор и оставили замое простое и интересное. И получился нормаьный эвент. Так и ОпенНет. Он работает, и в общем хорошо. Но он сложен. По нему нет внятных гайдов. Его исходники не вдруг модифицируешь. У него централизованная структура, что само по себе имеет как плюсы так и минусы. Но мне кажется в атмосфере постоянных изменений p2p сети рулят. И вот сейчас мы взяли идею серверной сети, вытряхнули из неё всё лишнее и оставили предельно простую, гибкую и удобную систему. Поставить ноду Zn-сети на компьютер сейчас можно двумя командами: hpm install zn -- ставим либу с терминала require('zn').connect() -- запускаем ноду с интерпретатора (или из программы-однострочника) Она не обеспечивает никакой безопасности данных? Да, не обеспечивает. Хакеры будут отдыхать в Zn-сети как на Гавайах? Я буду очень раз если так. Это будет значить, что есть ещё одно интересное программерское занятие на серве.
  19. Надо бы финал захватить. И пару прикольных моментов, когда сервер падал, или мы стены забыли убрать перед запуском.
  20. Нет, конечно. Потому что она нафиг не нужна. Эта сеть - это просто длинные руки для модема. Нужно шифрование - делаешь шифрование. Нужен вайтлист - пилишь вайтлист. Всё просто. Заддосить, взломать и положить можно всё что угодно. Это не значит, что сеть не нужна. Да, можно сделать похожую фигню. Подключиться к сети с плашета например, на котором будет стоять спец. утилитка. И проверить чистоту трафика. Например автоматом детектить и отмечать как "подозрительные" потоки однообразного спама, или одинаковые мессаги с разными хешами и т.п.
  21. Хешировалка не помешает злодею слать невалидные значения. Просто надо добавить защиту от дурака.
  22. От самой сети опасности нет. Она убивает дубли и петли. Кто-то может влезть и всунуть свою левую ноду в сеть и менять хеши сообщений постоянно. Но тут и на обычных компах можно такой хрени понаписать. Это уже прямое злодеяние и попытка положить серв. Тут придётся обычными способами его выслеживать. Ну и можно поставить сниффер в сеть и отследить гада по адресу сетевой платы. =)
  23. В общем сеть на мой взгляд получилась очень простая, очень гибкая и очень удобная. Этакий расширенный модем, с плюшками. Свой следущий проект я как раз планирую построить с использованием Zn.
  24. Товарищ призывается в тред. Вроде он что-то записывал? Я видел он с флайкой летал вокруг.
  25. Первый этап прошёл неплохо. Так что я думаю мы ещё соберемся на второй. =) Где-нибудь поближе к лету.
×
×
  • Создать...