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

Fingercomp

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

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

  • Посещение

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

    283

Записи блога, опубликованные пользователем Fingercomp

  1. Fingercomp
    Вышла новая версия OpenComputers, в основном с самыми разными фиксами. Что изменилось:
    Моды теперь могут добавлять свои кастомные дискеты, которые можно получить перекрафтом их с ключом. (Vexatos) Две функции дебаг-карты: для отправки сообщения на другую дебаг-карту и отправки текста в буфер обмена какого-либо игрока. Опасная штука. (Vexatos) Когда роботы/дроны выкидывают что-либо в мир, они теперь посылают ивент. (Sangar) Добавлен новый предмет — MFU. Позволяет подключить к адаптеру любой блок, находящийся на удалении нескольких блоков. Это позволяет небольшие билды сделать красивее, а сложные схемы — удобнее. (Vexatos) Обновлён перевод на немецкий. (Vexatos) Обновлены LuaJ и JNLua — заявляется, что теперь всё лучше с UTF-8. (gamax92, Sangar) Обновление OpenOS. Как обычно, много изменений, но здесь опять уменьшение потребление памяти и увеличение производительности. (payonel) Дискета oppm теперь использует современные способы установки в OpenOS. А ещё программу обновили. (Vexatos) Обновление Plan9k. (magik6k) В планшетах не работал слот для карт, если было вставлено улучшение. (Vexatos) Очень труднонаходимый баг с экранами, которые после перезагрузки чанка (причём особенного) зависали, был ликвидирован. (Sangar) Больше не получится много раз потыкать ключом по дрону, чтобы получить большее их количество. (Vexatos) Устранены проблемы с вайлой (очень странная логика у неё) (Sangar) [MC 1.8.9+] При выкидывании предметов роботами или дронами некоторые уничтожались. (Vexatos) [MC 1.8.9+] Краш при использовании функции getName на нанонашинах. (Vexatos) [MC 1.9.4+] Компоненты могли не деинициализироваться, когда чанк с ними выгружался. Это приводило, например, к смене UUID компонентов. (Sangar) [MC 1.9.4+] Починили рендер клавиатуры. (Vexatos) [MC 1.9.4+] Команды ломали /help. (Vexatos) [MC 1.9.4+] В наномашинах не было эффектов зелий. (Vexatos) [MC 1.10.2+] Улучшена интеграция с JEI. (Vexatos)

    Релиз на GitHub.
  2. Fingercomp
    Последняя, пятая часть мастеровления полностью посвящена шеллу и его программам. Переменные окружения, алиасы и с ними связанные команды — я не врал.

    Сложность: высокая 75%
    Скучность: высокая 75%
    Дубовость: для продвинутых 80%

    Ключевой частью OpenOS является шелл. Это программа, которая выполняет команды, рисует командную строку, в общем, занимается предоставлением удобства пользователю. 


    ШЕЛЛ OPENOS.
    Сразу предупреждаю, что мы не будем рассматривать в данном гайде именно API шелла, только как программу. Из места — в карьер и...  
    Переменные окружения
    Это такие переменные, доступ к которым есть у всех приложений. По умолчанию создаются:
    "EDITOR" = "/bin/edit". Редактор по умолчанию. "HISTSIZE" = "10". Размер истории. "HOME" = "/home". Домашняя папка. "IFS" = " ". Символ для разделения. "MANPATH" = "/usr/man:.". Пути к папкам с файлами справочной системы. "PAGER" = "/bin/more". Программа типа more, осуществляющая функцию постраничного вывода. "PATH" = "/bin:/usr/bin:/home/bin:.". Основная переменная системы, указывает папки, где искать программы. "PS1" = "$PWD# ". Собственно, выражение, которое указывается в интерактивном режиме шелле перед полем команд. "PWD" = "/". Текущая рабочая директория, меняется, например, при вызове cd. "SHELL" = "/bin/sh". Шелл по умолчанию. "TMPDIR" = "/tmp". Временная директория.

    Таким образом, если изменить эти параметры и запустить использующие эти переменные программы, то можно изменять их поведение по собственным нуждам.
     
    set и unset
    Используются для этого две программы: set и unset. У первой следующий синтаксис: set [<название>[=<значение>]]. Если не указать никаких аргументов, просто перечислятся все переменные окружения. Если указать только название, то под определённым порядковым номером запишется название, если же ему присвоить значение, то возникнет пара <название>=<значение>. Главное — не ошибитесь при изменении важных переменных типа PATH.
    Чтобы снять значение переменной, пропишите unset <название переменной> [название второй переменной] [...].
     
    Алиасы
    Что такое алиасы? Это создание команды, которая будет вызывать другую. В общем, можно считать это ещё одним типом ссылки. Из стандартных алиасов имеются:
    dir = ls list = ls move = mv rename = mv copy = cp del = rm md = mkdir cls = clear less = more rs = redstone view = edit -r help = man ? = man cp = cp -i

    В данном перечне при написании команды слева выполняется команда справа. Это может быть удобно, например, чтобы не писать длинное "redstone", а только "rs".
     
    alias и unalias
    Но не это главное. Вы сами можете устанавливать алиасы!
    Первая команда alias имеет следующий синтаксис: alias [<Ваш вариант> [исполняемая команда]]. Если не указать аргументов в принципе, покажутся все алиасы, если указать только название — значение алиаса. Устанавливается только при указании значения.
    Чтобы снять алиас, достаточно команды unalias. unalias <название>.
     
    user*
    Приватность данных всё больше и больше волнует смертных человекоподобных существ пользователей ПК. OpenOS не остался исключением, и итог тому — предоставляемым самим модом функции управления пользователями. Тут всё просто. Есть в списке — гуляй, нет в списке — сорри, аксесс денайд.
    На основании уже сказанного мной текста, логично предположить, что детальное описание и использование лежит в глубине документации по API OpenComputers, и Вы будете правы. Единственная причина, почему я пишу об этом — для операций управления списком предназначены две простейшие утилиты useradd и userdel.
    Синтаксис useradd: useradd <игрок>. Ограничение состоит в том, что игрок этот должен быть в онлайне. И ограничение это накладывает сам мод, не система. К сожалению.
    Соответственно, логично, что userdel <игрок> удаляет игрока из списка пользователей.
    Если список пуст, то компьютер доступен всем. Если Вы сначала добавили друга, а затем захотели прописать себя — увы и ах. Так что прописывайте себя первым пользователем, если ещё собираетесь пользоваться компьютером. В любом случае, если Вы совершили олошность, то могут спасти ситуацию администратор или этот счастливый игрок.
     
    * и ?
    Обратили внимание на заголовок предыдущей записи? Тогда поговорим о масках. Нет, совсем не карнавальных.
    Представим следующую стркутуру:
    /|+ clones| || + clone001| + clone002| + clone003| + clone004| + clone101| + clone110| + colne001| + colne101| + colne|+ clonesEX|+ docsEX|+ docs | + doc_future-bak + doc*nature+smth + docFcreature_smth + doc2progsmth + doc.no + totallyNOTa.doc
    Задача попроще. Предположим, мы хотим перетащить в папку clonesEX все файлы из папки clones, при этом копировать папку нельзя. Что делать? Здесь нам на помощь придут эти самые маски. Конкретнее — *. Звёздочка в пути заменяет нуль и более символов. Соответственно, команда: mv clones/* clonesEX.
    Отмотаем время назад и допустим, что нужно перетащить только файлы с colne. Подумав, составляем команду: cp clones/colne* cloneEX. К слову, эта команда также захватит с собою colne. А что, если нам нужны именно файлы с номерами?.. Звёздочка тут не поможет, поэтому воспользуемся знаком вопроса (?). Он заменяет ровно один символ. В нашем случае достаточно такого: cp clones/colne??? clonesEX. Или даже такого: cp clones/colne?* clonesEX.
    По этому принципу перетащим все файлы, начинающиееся с doc, заканчивающиеся smth и имеющего название, отделённого двумя символами от doc и smth, из docs в docsEX. Подумайте, какую команду можно использовать.
    Ответ:

     
     
    ТАБ!
    Завершим рассказ о шелле потрясающей кавишей [TAB]. Суть её проста и огромна — если Вы ввели часть пути, то нажатие ТАБа дополнит до первого совпадения. Ещё одно нажатие — следующее совпадение и т. д.
     


    ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ СТАНДАРТНЫХ ПРОГРАММ?
    Удивительно, но мы, наконец-то, рассмотрели все стандартные утилиты и принципы работы (пишите в commentsStart, если это не так). Потому я закрываю цикл "OpenOS. От дуба до Мастера". В будущем будут другие записи, которые, вероятно, рассмотрят вопрос OpenOS в плане предоставляемых АПИ и скрытых открытых возможностей.
    Благодарю за прочтение.




  3. Fingercomp
    tl;dr: https://gist.github.com/Fingercomp/0773bb0714296c0cb00d70a696d39bb3
     
    Понятия не имею, зачем я сюда об этом пишу, ведь если вы можете этот текст понять, и в оригинале можно прочитать.
     
    В любом случае, получил намёк, что три моих статейки про звуковую карту удовлетворительны в какой-то степени, но они на русском. Видите ли, ситуация с документацией спустя полгода после первого поста не улучшилась никак, так что единственный туториал для неё недоступен для понимания тех, кто не говорит по-русски.
     
    Поэтому я потратил выходные на перевод постов на английский язык. Заняло это отчего-то дольше, чем я ожидал. Результат на гисте.
     
    Все три поста в одном месте. Я там подбросил ещё чутка инфы и терминов и подправил фактические неточности. Мне лень было несколько раз перечитывать один и тот же текст, так что где-то могут остаться очепятки и всякие извороты языковые не к месту.
    Но если понимаете английский, то всё равно должно быть удобнее, чем бегать по трём статьям здесь, в блоге. Ну а мне редактировать проще.
     
    В общем, ссылку я оставил, больше мне сказать нечего.
  4. Fingercomp
    Продолжаем беседу об операционной системе Bolge OpenOS. В этой записи речь пойдёт про те самые оставшиеся утилиты, которые облегчат жизнь программисту.


    Сложность: средне 60%
    Скучность: высокая 80%
    Дубовость: для продвинутых 65%

    Операционная система OpenOS в первую очередь покрывает вопросы (относительно) удобного программирования для OpenComputers. Конечно, это не исключает сторонние редакторы типа Sublime Text или Notepad++, но иметь такие средства нужно и важно. Давайте же я расскажу о них. 


    УТИЛИТЫ ДЛЯ ПРОГРАММИРОВАНИЯ.
    Простой перечень утилит с пояснениями.  
    address
    Наипростейшая из наипростейших утилит, может соперничать даже с print("Hello, world!"). Просто выводит адрес компьютера. Интереса ради, пропишите view /bin/address.lua.
     
    components
    Ещё раз я расскажу об этой программке. Она выводит список компонентов, подключённых к системе. Можно задать фильтр, тогда выведутся только указанные компоненты. Если же указать ключ -l (о них в следующей части), то для каждого компонента будут указываться методы.
     
    dmesg
    Данная программа случает все события и выводит информацию о них на экран. Можно указать фильтры событий для просулшивания через пробел.
     
    flash
    Та самая программа, которая записывает код на EEPROM. Ключ -l выводит код о текущего EEPROM, -r записывает код в файл, а -q заставляет не задавать вопросов.
     
    hostname
    Данная программа бессмысленна без пакета network. Но, тем не менее, она может устанавливать и выводить текущее имя компьютера.
     
    lua
    Если запустить без аргумента или с ключом -i, то запустится интерактивный сеанс Lua-интерпретатора, где можно запускать программы. При этом все библиотеки автоматически переносятся в _G, так что дополнительно подключать их не требуется. Если же указать файл, то скрипт предпримет попытку запуститься и выдаст сообщение при обнаружении ошибки.
     
    primary
    Синтаксис: primary <компонент> [адрес]. Если аргумент [адрес] опущен, то выводится информация о первичном компоненте, иначе — предпринимается попытка сделать данное устройство первичным.
     
    rc
    Программа управления сервисами (о них — в следующих частях). Синтаксис: rc <сервис> [команда] [аргументы].
     
    redstone
    Предоставляет простой интерфейс управления редстоун-сигналами на первичной ред-карте/ред-блоке. По умолчанию синтаксис следующий: redstone <сторона> [значение]. Если [значение] не задано, выводится информация о текущем. Иначе — устанавливается.
    Для многожильных кабелей синтаксис следующий: redstone -b <сторона> <цвет> [значение]. Работа необязательного аргумента такая же.
    Для блоков, предоставляющих интерфейс беспроводной передачи ред-сигнала, команды следующие:
    redstone -w [сила]. Если [сила] задана, устанавливается значение на беспроводном передатчике. Иначе — выводится текущее значение силы. redstone -f [частота]. Устанавливает частоту, если задан аргумент, иначе — выводит текущую.

    sh
    Запускает сеанс командной строки, если не передано аргументов и io.stdin не перенаправлен. Иначе — читает команды из этого потока и выполняет их.
     
    umount
    Синтаксис: umount <точка монтирования>. Отмонтирует устройство по данной точке монтирования.

    Вот так. Следующая часть целиком и полностью посвящена шеллу, ему родимому. Это: переменные окружения, алиасы, ключи, аргументы, особенности работы шелла и прочее. Пока жду комментариев по этой части, пишите, если что-то непонятно.  



    ← →

  5. Fingercomp
    ОБНОВЛЕНИЕ OPENCOMPUTERS ДО ВЕРСИИ 1.5.9 RELEASE CANDIDATE 1!


    Приветствую Вас, уважаемый читатель. Автор OpenComputers Sangar продолжает работать над своим модом, поэтому встречаем новую версию 1.5.9! Точнее, первого кандидата на релиз.
    Взглянем на изменения.
    Добавлено: Charger теперь может использовать для зарядки батарейных апгрейдов! И, кроме них, все другие предметы, хранящие и содержащие энергию RF и EU!
    Интеграция с IngameWikiMod. Большая часть страничек из мануала там доступны.
    То, чего мне иногда не хватало. Стандартный шелл теперь поддерживает пайпинг!cat < f1 | cat >> f2

    Поддержка многожильного кабеля из BluePower.
    Больше, БОЛЬШЕ интеграции с GregTech! В рецептах можно использовать машины из Грега.
    Waypoint. Может использоваться с навигационными апгрейдами.

    [*]Изменено:
    Логика и механика рендеринга апгрейдов на роботе была изменена. Аддонам проще ставить свои апгрейды, а на MC1.8 всё работает, как и должно.

    [*]Пофикшено:
    Дроны теряли своё имя при замене EEPROM.
    Потенциальный клиентский лог-спам при открытия ГУИ Dissaembler'а, если функция disassembleAllThings была включена.
    Роботы продолжать анимироваться даже при паузе.
    MC1.8:
    Несколько потенциальных NPE



    Вот и всё. Комментарии как всегда приветствуются, равно как и лайки и даже оценки!
    А ещё...
    Следим за интересными предложениями, багами на баг-трекере OpenComputers! https://github.com/MightyPirates/OpenComputers/issues
    Проверяем обновления ОС! https://github.com/MightyPirates/OpenComputers/releases
    Заходим на официальный сайт... http://oc.cil.li/ ...и форум! http://oc.cil.li/index.php?/index
    И прямые ссылки для скачивания:
    [MC1.7.10] https://github.com/MightyPirates/OpenComputers/releases/download/v1.5.9-rc.1/OpenComputers-MC1.7.10-1.5.9.20-rc.1-universal.jar
    [MC1.8] https://github.com/MightyPirates/OpenComputers/releases/download/v1.5.9-rc.1/OpenComputers-MC1.8-1.5.9.22-rc.1-universal.jar
  6. Fingercomp
    ОБНОВЛЕНИЕ OPENCOMPUTERS ДО ВЕРСИИ 1.5.13 PRE 1.


     
    Спустя 20 дней, наконец-то вышла новая версия OC. Изменений немного, но пусть это не смущает Вас...
    ...Ведь в 1.5.13 появляется новая архитектура процессора: Lua 5.3! Подробнее.
     
    В этом пре-релизе появляется, как уже было сказано, новая архитектура: Lua 5.3, что и является причиной для новой версии.
    Если Вы играли с dev-билдами OC 1.5.13, Вам необходимо выставить значение enableLua53 в true. Необходимо такое было, так как новая архитектура была очень нестабильная по сравнению стабильности архитектуры на данный момент.
     
    Как поиграться с этой штуковиной? Возьмите CPU в руки, зажмите [shift] и кликните процессором. В чате появится надпись об изменении архитектуры.
     
    Кроме того, множество мелких изменений прмсутствует в этой версии, чэйнджлог который приедет уже к полному релизу.
     
    --
    Собственно, вот я и перевёл описание релиза с ГитХаба) Кстати, девелоперские версии ОС можно получить с Jenkins: http://ci.cil.li/job/OpenComputers-dev-MC1.7.10/
  7. Fingercomp
    Обновление OpenComputers до третьей беты 1.6. Сегодня в гостях у нас следующие изменения:
    Добавлено В русский мануал добавлена информация про saveConfiguration (PR #1855 от cyber01). Функция computer.getProgramLocations, которая используется для программы install из OpenOS.
    [*]Пофикшено
    Неожиданный баг с сохранением мира в версиях MC выше 1.8.
    [*]OpenOS
    Команда cat теперь будет читать stdin, если не указан файл. cp: поддержка путей вида /. и более мелкие фиксы. df теперь поддерживает относительные пути. Функция next либы /lib/guid.lua теперь возвращает GUID в корректном формате. head теперь закрывает stdin. install был сильно переработан и теперь с помощью этой программы можно устанавливать файлы с loot-дискет (и не только), мануал в man install. less теперь поддерживает скроллинг, в кои-то веки! Ну и алиас в /etc/profile был, конечно, убран. В mv добавлено несколько проверок: команда будет выдавать теперь ошибку, если путь назначения в режиме только для чтения или путь имени для копирования — точка монтирования. У rm была пофикшена проблема, при которой ссылки на директории не могли быть удалены. Шелл поддерживает экранировку пробелов и может отдавать сигнал SIGPIPE. А ещё позволяет использовать getWorkingDirectory до установки переменной окружения PWD.



    На момент писания этого текста в install был уже обнаружен один баг, который даже пофикшен, остаётся ждать принятия PR.
     
    Github
×
×
  • Создать...