LeshaInc
Пользователи-
Публикации
777 -
Зарегистрирован
-
Посещение
-
Победитель дней
68
Тип публикации
Блоги
Профили
Форум
Багтрекер
Магазин
Все публикации пользователя LeshaInc
-
Как писать огромным шрифтом в своей программе?
LeshaInc ответил в вопрос Laine_prikol в Разные (отсортировать)
Используйте OCBF. -
А если Factorio? Там и писать моды на Lua можно.
- 51 ответ
-
- 3
-
-
На этом. Язык компилируется в Lua (поддерживаются версии 5.1, 5.2, 5.3 и даже возможно JIT). Предупреждаю — этот язык является диалектом Lisp. Если ваш дед не оставил в кладовке пачку скобок, возможно у вас не получится на нем писать. Из фич: pattern matching, прикольные циклы, фреймворк для тестов, красивые сообщения об ошибках. Hello world на Urn: (print! "Hello, world!") Работает также арифметика в стиле лиспа: (+ 2 (* 4 5)) Можно создавать функции: (defun times-two (x) (* x 2)) (print! (times-two 2)) (print! (times-two 3)) и макросы: (defmacro show (x) (print! "Compile-time" (pretty x)) `(progn (print! "Run-time" ,(pretty x)) (print! "Value" ,x))) ------------------------------------ > (show (+ 2 3)) Compile-time (+ 2 3) Run-time (+ 2 3) Value 5 Можно использовать библиотеки из Lua: (define bit32 :hidden (require "bit32")) (define & (.> bit32 :band)) (define ~ (.> bit32 :bnot)) и таблицы из Lua: > { :foo 1 . :bar 2 } out = {"bar" 2 "foo" 1} Компилятор языка написан на Lua UPD: компилятор написан на Urn и скомпилирован в Lua; предлагаю энтузиастам поиграться с ним в OpenComputers и сделать отчет. А я пойду дальше употреблять вещества.
-
https://www.youtube.com/watch?v=5GQur67iKCg http://www.wizards-of-lua.net/ Работает только на Minecraft 1.12.2
-
Большие растровые шрифты хорошо подходят для рекламных вывесок — бегающего текста. До появление этой библиотеки не было удобного способа использовать их в OpenComputers. Но теперь есть. pastebin get Mz7Ps5jQ /usr/lib/ocbf.lua Библиотека максимально прозрачна и сама по себе отрисовкой не занимается. Для отрисовки удобно использовать библиотеку Braille Bicycle от товарища @Totoro. Все шрифты хранятся по пути /usr/share/fonts в таком виде: /usr/share/fonts ├── IBM Plex Serif │ ├── Bold Italic.ocbf │ ├── Bold.ocbf │ ├── Italic.ocbf │ └── Regular.ocbf ├── Prosto One │ └── Regular.ocbf └── Roboto ├── Bold Italic.ocbf ├── Bold.ocbf ├── Italic.ocbf └── Regular.ocbf Для конвертирования новых шрифтов можно воспользоваться утилитой на языке Python: ocbf.py. Для ее работы необходимо установить библиотеки PIL, bitarray и tqdm (Python3). OCBF содержит в себе всего две функции: ocbf.load(family: string, style: string) — находит шрифт по указанному семейству и стилем, парсит его и возвращает объект шрифта. Если первый аргумент — это путь, то поиск производится не будет; вместо этого шрифт будет загружен из указанного файла (обязательно с расширением ocbf) ocbf.search(family: string, style: string) — находит шрифт и возвращает путь до него. Все функции ищут шрифт в директориях, указанных в переменной ocbf.path = "/usr/share/fonts:/home/.fonts:.". Из кода видно, что поиск осуществлятся в /usr/share/fonts, /home/.fonts и в текущей директории. Объект шрифта предоставляет следующие методы: font:drawChar(set: function, size: number, char: string, x: number, y: number) — отрисовывает один символ размером size используя шрифт по координатам (x; y). Функция set принимает три аргумента: координаты точки и значение 1 — точка заполнена и 0 — точка пуста. font:draw(set: function, size: number, str: string, x: number, y: number) — работает так же, как и font:drawChar, но отрисовывает сразу все символы. font:width(size: number, str: string — возвращает ширину строки с заданным размерам в точках. Помимо вышеперечисленных методов также есть свойства font.family, font.style и font.sizes. Все функции принимают аргумент size. Это высота шрифта в точках. Поскольку используя растровые шрифты невозможно обеспечить поддержку сразу всех размеров, size для разных шрифтов имеет разные допустимые значения. Для каждого размера в шрифте дублируются символы. Предоставляю также набор шрифтов Roboto — Regular Roboto — Bold Roboto — Italic Roboto — Bold Italic IBM Plex Serif — Regular IBM Plex Serif — Bold IBM Plex Serif — Italic IBM Plex Serif — Bold Italic Prosto One — Regular Все шрифты кроме Prosto One представлены в размерах 16 и 32 точек, Prosto One — 32 и 64. Имеется поддержка латиницы и кириллицы. Также стоит отметить, что для работы библиотеки необходим Lua 5.3 — используется string.unpack, побитовые операции, UTF-8. Для отрисовки текста на изображении в начале поста использовался следующий код: local ocbf = require("ocbf") local braille = require("braille") local matrix = braille.matrix(320, 200) local font1 = ocbf.load("Prosto One", "Regular") local font2 = ocbf.load("Roboto", "Bold") local font3 = ocbf.load("Roboto", "Regular") local function set(x, y, v) braille.set(matrix, x, y, v) end font1:draw(set, 64, "OCBF", 4, 1) font2:draw(set, 32, "Растровые шрифты", 4, 65) font2:draw(set, 32, "для OpenComputers", 4, 98) font3:draw(set, 32, "от LeshaInc", 4, 168) braille.render(matrix, 1, 1)
-
NaN не равен, не больше и не меньше любого числа.
-
А теперь сделай JIT-компилятор.
-
> хотел немного славы
-
GNU gettext
-
Строки иммутабельны в луа, при изменении твоего массива уйдет уйма времени на копирование строк, сборщик мусора будет орать как лютый негр. Я тестил. Пиковое потребление памяти при использовании строк было в несколько раз больше, чем при использовании массива. К тому же, в луа числа 64-битные, поэтому для эффективного хранения нужно упаковывать байты по числам. Небольшой оверхед памяти при таком подходе будет куда менее критичным, чем иммутабельность строк. Что за костыльная библиотека классов, которая не используя метатаблицы, создает копии всего класса на каждый инстанс пожирая память?
-
@@RccHD, а теперь делай сигналы, SIGTERM, SIGKILL, SIGINT и другие.
-
@@RccHD, делай полноценную многозадачность с деревом процессов и сигналами.
-
# resolution 13 11 # yes Hello, World!
- 28 ответов
-
- 2
-
-
- hello
- программирование
-
(и ещё 1 )
Теги:
-
Запусти шелл в одном своих окон.
-
@@RccHD, делай конфиг на Lua и переключение кнопками.
-
event.pull(TIMEOUT, "modem_message", nil, nil, PORT, nil, "nanomachines")
-
Стандарты для нас пустой звук?
-
Ржавеем по полному! #3. Функции и указатели.
LeshaInc прокомментировал LeshaInc запись в блоге в IncluderWorld
4 часть -
Отправление команд на робота дистанционно
LeshaInc ответил в вопрос Darkar25 в Разные (отсортировать)
Это комбо. -
Запуск скрипта луа из другого луа скрипта
LeshaInc ответил в вопрос FrideakisAB в Разные (отсортировать)
dofile -
Возможно.
- 87 ответов
-
- minecraft
- реальность
-
(и ещё 1 )
Теги:
-
- 1 ответ
-
- 7
-
-
- unreal tournament
- robot
-
(и ещё 1 )
Теги:
-
fileindex = {"none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none"}
- 11 ответов
-
- Папки
- Filesystem
-
(и ещё 1 )
Теги:
