Лидеры
Популярный контент
Показан контент с высокой репутацией 19.04.2020 в Сообщения
-
1 баллОперационная система LunaOS (Самописное ядро) Всем доброго времени суток. Однажды я решил узнать, как же создать операционную систему в OpenComputers, однако создавать вторую OpenOS я не хотел. Потому пытался придумать "изюминку" своей ОС. Тут пришла мысль о том, чего очень не хватает в ядре OpenOS - многопоточность. Я уже читал на форумах, что данная особенность "не нужна", "нет смысла" и т. п. Однако данная возможность добавит несколько особенностей в OpenComputers: SSH клиент. Подключение к компьютеру; Удаленный рабочий стол; Система пользователей; Сервера; Кластер. Само собой это не полный список возможных программ, которые можно написать в многопоточной системе. Однако это уже большой аргумент, для ее создания. Начал я с реализации многопоточности. Я надеялся, что в Lua есть удобные потоки, через которые данный процесс не вызовет проблем, однако такой возможности не оказалось. Я уже думал забросить создание многопоточности и просто создать операционную систему, а вскоре и совсем забросить создание операционки. Спустя неделю, я все же придумал как реализовать многопоточность и все благодарю моему другу, который не дал мне "опустить руки". Идея пришла не сразу и как и все идеи - в дУше (на самом деле в уборной). На помощь мне пришли coroutine. Среди читающих наверняка есть 3 типа: те кто понял, как все это работает; те кто знает, что такое coroutine, но не знает как на их основе создать псведо-многопоточность; те кто в танке. Настоящая операционная система является многопоточной, хотя процессор - однопоточный. Но как? На самом деле, все достаточно просто. Операционная система переключается с одного процесса на другое через определенные промежутки. Это зоны являются атомарными (неделимыми). Так же я решил поступить и с OpenComputers. Многие думают, что это невозможно, но тут к нам приходят на помощь coroutine'ы. Через некоторое время мне удалось проработать ядро операционной системы. Вот структура операционной системы: Вот диаграмма жизни операционной системы: На данный момент ядро уже почти готово. Уже скоро я начну работать над самой операционной системой. Как только мне будет что показать (помимо исходного кода) я выложу это в этой теме. На данной момент у меня есть к вам несколько вопросов и предложений: [Вопрос] Будет ли иметь смысл данная операционная система? [Вопрос] Какие еще возможности вы хотите предложить? [Вопрос] Из-за многопоточности, прямая работа с компонентами должна быть недоступна. Как вы думаете, стоит ли программно запрещать это. Так же я уже придумал реализацию и буду писать следующие программы: apt-get ssh client and server ftp client and server teamviewer cluster software raid sudo Спасибо за внимание и ждите обновлений! Обновления: Обновление 25.08.2016 (не известно) ==================== Теперь в этой области будут появляться все обновления системы. Обновление 26.08.2016 (22:40) ==================== Реализованы модули control, hardware и signals в ядре. В процессе - исправление ошибок и недочетов. Разработка модуля filesystem. Обновление 27.08.2016 (1:50) ==================== Написана текстовая документация на 50% После завершения и доработок - будет выложен для совместной доработки. P.S. В нем будет виден принцип работы ядра, но я думаю это не столь так важно, ибо отыскать к нему доступ смогут лишь только опытные пользователи OpenComputers. Обновление 29.08.2016 (12:10) ==================== Ядро реализовано. Написание API. Решение проблем с удобством написания программ при работе по SSH.
-
1 баллИногда, особенно когда вы занимаетесь строительством реакторов, необходимо очень много укрепленного камня. Можно конечно и вручную залить нужную территорию, но согласитесь, лучше когда за вас это все сделает кто-то еще. Итак представляю вашему вниманию небольшую автоматическую систему по производству укрепленного камня. Вам всего то надо обеспечить эту ферму (генератор укрепленного камня) железными лесами, песком и энергией. Перейдем к постройке: Главным центром всей постройки является робот. Его устройство рассмотрим позднее. Справа от робота необходимо установить любую зарядку для бура/ваджары. Ну или если вы совсем бедные, и планируется что робот будет работать киркой, то установите сундук. Слева от робота устанавливайте Жидкостный/Твердотельный наполняющий механизм. Он заправляет распылитель сразу, за 1 прогон. Это будет наполнитель для зарядки распылителя. Рядом с зарядником распылителя рекомендую установить еще один Жидкостный/Твердотельный наполняющий механизм, который будет генерировать сжатую пену. В слоты улучшения обязательно установите "Выталкиватель жидкости". С подачей воды и смеси думаю разберетесь сами. Не забываем выставить настройки в механизмах как показано на скрине: За роботом нужна зарядка, чтоб он мог работать вечно! И не забываем её стукнуть ключиком, чтоб не заморачиваться с рычагами. Конвертор энергии не забудьте подключить к энергобуферу (или можете не устанавливать его, провода из ИС2 с ОС коннектятся) Над роботом установите сундук, и желательно побольше. В него необходимо засыпать железные леса и песок. Учтите, на 1 блок укрепленного камня необходимо 1 железные леса и 1 песок. Автоматизация засыпания расходников, уже на вас. Под роботом распологается сундук в который будет ссыпаться укрепленный камень. Так как наш робот будет нереально дешевым, не забываем сделать подставку на которой будет готовиться ваш камушек. Рекомендую вообще оградить это место, чтоб ни курица ни игрок не залезли перед роботом (иначе распылитель запенит все в округе). Собственно это все что необходимо вам знать при постройке этой фермы. Переходим к роботу. Программу я сделал для двух типов роботов, простейший Т1 и супердешевый на eeprom. Простой робот-генератор укрепленного камня: Супердешевый робот-генератор укрепленного камня: Настоятельно не рекомендуется лезть перед роботом иначе рискуете получить такое Не лезте своими шаловливыми ручками в слоты к работающему роботу. Можете забрать готовый камень, но расходники не трогайте, так как скорость смены инструмента огромная, и если робот что-то не найдет, вам грозит быть залитым в пену. (смотри скрин выше) Одной заправки распылителя хватает на 80 применений, потом робот автоматически перезаряжает инструмент и распылитель. А в остальном данная ферма работает довольно стабильно и исправно. А рассказал вам о ферме Asior, фармите укрепленный камень, гоняйте кур от фермы и удачи в тяжком труде реактостроителя! P.S. Укрепленный камень выдерживает ядерный взрыв, но радиацию сдержать увы не сможет. Осторожнее.
-
1 баллЖесть какая. У меня есть нормальная французская рулетка, кушает виртуальную игровую валюту, любое количество игроков может делать ставки, каждые полминуты крутится колесо и раздаются выигрыши. Никаких комнат, алмазов и сундуков, тупо два монитора - один изображает стол, второй показывает ставки. Пока еще не доработал, т. к. пытаюсь впихнуть весь функционал в один комп без диска и чтобы все работало быстро, но на днях думаю допинать.
-
1 баллНезнаю ли считаеться нормальным теперь писать что-то здесь через полгода, после создание этой темы, когда я был проще и наивнеё, что создал конкурентноспособную операционную систему. Понял я уже это недавно, когда уже здесь были отзывы о том, что эта ОС помогла им починить "кирпич", или была инструментом для отладки кода на EEPROM. Они немного смотивировали меня сделать это. Обновление 2.0 : Редактор кода почти полностью переписан, и стал чуть удобнее Добавленна возможность редактирования программы из EEPROM Вся система теперь работает на архитектуре Lua 5.3, и сжата в 1 файл размером 16 KB Немного изменён внешний вид Прочие мелкие изменения... Планы: В будущем добавить возможность пересылать исходный код системы через сеть на другие устройства.
-
1 баллСервер STEM был обновлён до 0.2.4 и перезагружен. (Прошу прощения у всех у кого посыпались коннекты. ) Был исправлен баг, который не позволял посылать пакеты длиной более 1.5 килобайт. Теперь можно без проблем слать пакеты до 64 кб размером (это уже ограничение протокола STEM - если нужны пакеты жирнее, просто разбивайте данные на чанки). Кроме того, я чуть чуть обновил OC клиент stem.lua - теперь можно делать просто stem.connect() не указывая никакого адреса, и библиотека законнектит на stem.fomalhaut.me. Спасибо @BrightYC за то что как обычно пинал и требовал фиксов, спасибо @Fingercomp и @NEO за помощь в установлении причин, и конечно же спасибо @Totoro за то что баг обнаружил и исправил несмотря на жестокую лень.
-
1 баллНе-е, нельзя быть таким пессимистичным. Всё можно, и вопрос решается очень легко. В HTTP/1.1 есть хедер Range, который позволяет скачивать файлы кусками. Кроме того, OC умеет посылать и получать хедеры. local socket = component.internet.request("https://logs.s7.mcskill.ru/Hitechcraft_Public_Logs/public_logs/Hitechcraft_Public_Logs/14-02-2020.txt", nil, { Range = ("bytes=%d-"):format(start) }) local data = "" while true do local chunk = socket.read() if not chunk then break end data = data .. chunk end local _, _, headers = socket.response() print("Got: " .. #data) print("Content-Length: " .. headers["Content-Length"][1]) print("Content-Range: " .. headers["Content-Range"][1]) Вместо start подставить количество байт, уже прочитанных. Там указывается начало диапазона номером байта (начиная с 0), от которого нужно выдать ответ. См. доки. Поэтому тактика такая: Посылаем запрос с методом HEAD (4 параметр к component.internet.request), чтобы получить только хедеры. Читаем в хедерах значение Content-Length. Начинаем запрашивать куски файла с конца, пока не наберём нужно кол-во строк. После получения начальных строк запомним позицию последнего байта и дальше запрашиваем инфу после него.
-
0 баллов
Эта таблица лидеров рассчитана в Москва/GMT+03:00
