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

Лидеры


Популярный контент

Показан контент с высокой репутацией 05.09.2021 во всех областях

  1. 2 балла
    В связи с отделением mineOS от OpenOS установщик больше не актуален. Часик тыканья, шараханья в тоннах кода и собственно вот минисборка на новый установщик. Версии не совсем прям свежие, все библиотеки от 28 декабря 2017 года. Надеюсь кому-то поможет. wget https://www.dropbox.com/s/47kk5fjbva6bp60/imageInsall.lua?dl=1 Скачать, запустить, само все поставит.
  2. 1 балл
    Всё лето я отдыхал, даже про форум забыл, но я снова тут с новой идеей Решил я как-то написать ОС. Дальше новой темы для OpenOS не зашёл. Через месяц повторил попытку, забыл и забросил. Но на этот раз я пгставил себе цель - написать хотя-бы альфа версию СВОЕЙ операционки для опен компов. Разработка пока не началась, думаем над некоторыми вещами. Да, именно ДУМАЕМ. Я теперь не один. Пока что не буду говорить об этом человеке, мало ли... Вы можете нам помочь! Если вы программист, и вы хотели бы учавствовать в жтом, напишите мне в ЛС, с удовольствием приму вас.
  3. 1 балл
    Сколько бы вас там ни было, нет смысла создавать тему в разделе "Программы" без самих программ. Переношу тему в Беседку. В чём именно поучаствовать? В чём суть этой системы? Чем она будет отличаться от других?
  4. 1 балл
  5. 1 балл
    Написал, вот, утилитку для форматирования кассет из аддона Computronics для OC. Вообще, эта утилита планируется как часть программного пакета для упрощения работы с кассетами, но её я решил выложить заранее. Процесс форматирования не быстрый и упирается он, в основном, в моё незнание преобразования форматов в Lua. Так как я не нашёл способа преобразования массива в строку, пришлось использовать вот такой костыль: x = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" В итоге, я тупо храню в коде строку с 256ю терминальными нулями, которыми и забивается кассета (чистые кассеты из мода ими и заполнены). Именно 256 символов за 1 проход цикла я выбрал просто, чтобы не забивать код простынёй нулей, как только я найду способ реализовать это менее банально, планирую увеличить количество терминальных нулей в строке до 512 или 1024. Это ощутимо ускорило бы работу программы. Ссылка на пастебин: https://pastebin.com/3ucbj3fr Скриншотов не прилагаю, так как интерфейс программы прост, как палка. З.Ы. Это далеко не финальная версия утилиты, выставил её на всеобщее обозрение я только, чтобы получить несколько дельных советов по улучшению проги.
  6. 1 балл
    Хочу поделиться с вами конвертером изображений, позволяющим использовать ограниченное пространство мониторов наиболее эффективным образом, а также библиотеками для быстрой отрисовки результата. Поддержка шрифта Брайля позволяет получать изображения размером до 320х200 визуальных точек при физическом ограничении мониторов в 160х50 символов, а алгоритм дизеринга помогает избавиться от визуальных ограничений 256-цветной палитры. Ссылка для загрузки конвертера: https://github.com/IgorTimofeev/OCIFImageConverter/raw/master/out/artifacts/ImageConverter_jar/ImageConverter.jar Команда для установки ПО для отрисовки: pastebin run ng73uZqT Практический пример: Чтобы отобразить картинку на экране, для начала ее необходимо сконвертировать и скопировать любым удобным образом на диск комьютера (напрямую в папку мира, через файловый хостинг и т.п.). В моем случае картинка называется Triss.pic: Затем напишем следующий код или запустим установившуюся программу draw.lua с аргументом "Triss.pic": local args = {...} local image = require("image") local buffer = require("doubleBuffering") -- Очищаем экранный буфер черным цветом buffer.clear(0x0) -- Загружаем и рисуем изображение в буфер buffer.image(1, 1, image.load(args[1])) -- Отрисовываем содержимое буфера в принудительном режиме buffer.draw(true)Результат не заставит себя ждать: Также привожу в качестве демонстрации несколько отрисованных изображений:
  7. 1 балл
    Спасибо большое, разобрался помогло! На будущее если что можно скачать JavaFX SDK, распаковать его в удобную папку и выполнить в консоли следующую команду (я понимаю что это есть в документации на JavaFX SDK): java --module-path "D:\javafx-sdk-11.0.2\lib" --add-modules javafx.controls,javafx.fxml -jar "D:\javafx-sdk-11.0.2\ImageConverter.jar" "D:\javafx-sdk-11.0.2\lib" - Это путь по которому лежит папка lib от JavaFX SDK "D:\javafx-sdk-11.0.2\ImageConverter.jar" - путь до Конвертера изображений. Или сделать ярлык на запуск...
  8. 1 балл
    А что до стиля, я перебежчик с Си, там вообще then нет, потому по привычке и перенёс строку, как делаю с фигурными скобками.
  9. 1 балл
    Ух, сколько всего. В общем-то, да. Все замечания, кроме Event по делу и я учту их при доработке утилиты, да и всего пакета ПО для работы с кассетами. А что, касается Event/event, он прекрасно линкуется и с большой буквы.
  10. 1 балл
    Критика принимается? Вот и отлично, пора бы мне набивать количество постов здесь. Итак, что мне не нравится. Хотя нет, сначала отмечу, что эта утилита является велосипедом с tape.lua (см. tape wipe). А теперь отбросим этот факт в сторону и проедемся уже по коду. Стиль кода необычный. Обычно люди так ифы делают: -- Вариант 1 if condition then doCode() end -- Вариант 2 if condition then doCode() end Хотя я второй вариант не люблю и так не делаю. Ещё по стилю: всякие операторы типа ==, ~= и т. д. лучше отбивать пробелами. Дальше буду проходиться по порядку строк в пасте. Сначала будет номер строки, потом комментарий, затем под спойлером оригинальный код, а потом как надо. L3. Я сомневаюсь, что "Event" будет работать. Замени на "event" local event = require("event") L11-12. Переменные size и label объявлены без указания local, поэтому они стали глобальными. Глобальные переменные редко когда требуются, а чаще они просто мешают и творят лишние баги. Поэтому когда без них можно обойтись, делайте переменные локальные. local size = tape.getSize() local label = tape.getLabel() L14-19. Ветки отличаются лишь тем, что при not label пишется "N/A". Дальше нигде отсутствие значения не используется, поэтому код можно сократить, просто присвоив "N/A", если соблюдается not label. Для таких ситуаций офигенно подходит оператор or (подробнее). Кроме того, print уже и так ставит \n, поэтому лучше разделить на два принта. label = label or "N/A" print("Tape label: " .. label) print("Size: " .. size .. " bytes") Кроме того, зачем просить пользователя самому отмотать кассету в начало, если то же самое делается одной строчкой кода? tape.seek(-math.huge) L28. Для повторения одного символа несколько раз используется функция string.rep. Переменная опять не локальна. И что значит "x"? local blockSize = 256 local block = string.rep("\0", blockSize) L30-31. Используем вместо 256 переменную blockSize. И устанавливаем её в качестве шага цикла (0, 256, 512, 768, 1024, ...), потому что так логичнее. И мы не цикл итерируем, поэтому имя у переменной i не соответствует цели использования. for pos = 0, size, blockSize do L32-33. Используем переменную block. tape.write сама уже отматывает кассету на позицию, следующую за последним записанным байтом, зачем ещё раз отматывать? tape.write(block) L34. Нет, конечно, можно дать ему заспамить всю консольку прогрессом, но я бы предпочёл немного украсить: заставить его прогресс писать на одной и той же строке. Для этого можно использовать функцию term.clearLine (библиотека term) для очистки строки и io.write вместо print, чтобы не переносился курсор на следующую строку. Первый кусок, который с require, надо поместить в начало файла, где остальные реквайры. local term = require("term") term.clearLine() io.write(pos .. "/" .. size) L37. С ней проблем нет в оригинальном коде. Однако мы изменили вывод прогресса, так что после выхода из цикла на строке, где стоит курсор, будет находиться ещё какой-то текст с прогрессом. Поэтому надо очистить её перед принтом. term.clearLine() print("Tape has been wiped.") Конец. Итого мы получаем вот такой код мечты: local component = require("component") local event = require("event") local term = require("term") local tape = component.tape_drive if tape.getSize() == 0 then print("Tape drive is empty!") os.exit(1) end local size = tape.getSize() local label = tape.getLabel() label = label or "N/A" print("Tape label: " .. label) print("Size: " .. size .. " bytes") print("Press [Y] to wipe the tape. It may take a while.") local _, _, keyCode = event.pull("key_down") if keyCode ~= 121 then os.exit(1) end tape.seek(-math.huge) local blockSize = 256 local block = string.rep("\0", blockSize) for pos = 0, size, blockSize do tape.write(block) term.clearLine() io.write(pos .. "/" .. size) end term.clearLine() print("Tape has been wiped.")
  11. 1 балл
    Если ты про ссылку на скачивание, то точки - это просто форум её так сократил. В полном виде она выглядит так: https://github.com/IgorTimofeev/OpenComputers/raw/master/ImageConverter/out/artifacts/ImageConverter_jar/ImageConverter.jar И это программа не для OC, а для настоящего компьютера. Написана на Java.
  12. 1 балл
  13. 1 балл
  14. 1 балл
    8 на 4 это опять таки символы - символы алфавита Брайля. А вообще не вижу смысла придираться к словам. Слово "точки" ничем не хуже слова "символы" для определения разрешения монитора. А учитывая, что речь не о тексте, а именно о способности монитора отрисовывать растровые изображения, слово "точки" куда лучше чем "символы" или "пиксели" передаёт смысл того, что хотел сказать автор.
  15. 1 балл
    Все-таки это не очень важно но, я уже на ютубе писал что: 160х50 точек это некорректно, разрешение монитора ОС: 160х50 Символов, а не точек. Символ в ОС вроде 8х4 точек.
  16. 1 балл
    Спасибо, спасибо, приятно. К слову о проге: в конвертер добавлена поддержка более совершенного метода кодирования OCIF6, в результате чего пикчи на дисках весят в разы меньше.
  17. 1 балл
    Ну ты как обычно) Давно слежу за твоими прогами. Отлично делаешь!
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...