ᴠɪᴋᴀʀɪ ʜᴏɴᴇsᴛ
значок установлен постоянно с завода
Hello, World! 🎄
Рут не обязательно иметь
Если есть twrp, то можно пакет с анимацией создать и поверх прошивки прошить
UtoECat
Рут не обязательно иметь
Чтобы заменить - нужен :)
Hello, World! 🎄
хорошо, вы можете показать это и как это произошло
Я использовал данную библиотеку: https://github.com/max1220/lfb Она позволяет рисовать пиксели поверх linux frame buffer. Для поддержки мышки я читал файл /dev/input/mice и обрабатывал события
Aqendo
ураа поздравьте меня
Aqendo
я сделал музыкального бота
Aqendo
ещё одного
Aqendo
ᴠɪᴋᴀʀɪ ʜᴏɴᴇsᴛ
Hello, World! 🎄
Я действительно не понимаю, что происходит
Там просто библиотека, её нужно собрать и можно писать графику которая будет работать поверх fb
Hello, World! 🎄
есть ли разница с java gui?
Большая разница
Aqendo
Викари подменили мне кажется
Aqendo
Ну не может человек который делал такие шедевральные шифровки так тупить
Aqendo
Или он не делал🧐
Hello, World! 🎄
есть ли разница с java gui?
Вот пример, того что я делал поверх linux frame buffer, окно и фон сделаны вручную
0xSU
Или он не делал🧐
А что он делал
Aqendo
А что он делал
в плане может он не делал, а тыбзил
Hello, World! 🎄
Вот пример, того что я делал поверх linux frame buffer, окно и фон сделаны вручную
Сейчас продолжаю писать DE (если можно это так назвать). Приложения это просто lua файл: return function() while true do coroutine.resume() end end Открываются вот так: tasks.add('test', 100, 100, 300, 200) tasks.add('test', 500, 500, 150, 100) А в task update просто перебираются процессы и возобновляется работа coroutine: coroutine.resume(tasks.processes[i]._coroutine_)
Hello, World! 🎄
Да, наверно самое простое решение возвращать таблицу, где будут находится действия для обработчика графики: return function() while true do array = {{'rect', 10, 10, 50, 50}} coroutine.yield(array) end end
Hello, World! 🎄
Обработчик: for j = 1, #data do if data[j][1] == 'rect' then buffer:set_rect(data[j][2]+tasks.processes[i].x, data[j][3]+tasks.processes[i].y+20, data[j][4], data[j][5], 200, 200, 200, 255) end end
Hello, World! 🎄
Зачем тебе тут корутины? Почему не return function() return {{'rect', 10, 10, 50, 50}} end?
Смотри, приложения это отдельные Lua файлы, они должны выполнятся в цикле, через корутины я в конце цикла возвращаю управление кодом основному скрипту. Если делать просто через функцию без корутины, то придется каждый раз передавать функции локальные переменные приложения и получать от неё еще и измененные локальные переменные (переменные приложения).
Snusmumriken
Ляяя
Hello, World! 🎄
А вообще мне лучше отказатся от Lua, в пользу Си. Чтобы все графическое окружение было на Си и возможно туда добавить vm, чтобы приложения запускались внутри виртуальной машины (которая будет просто перебирать инструкции и выполнять их), плюс своей vm, это-то что я смогу к примеру сделать так, чтобы если у приложения не было доступа к файловой системе, он не смог получить к ней доступ, пока пользователь не выдаст права.
Snusmumriken
Есть подозрение что ты дичайше переусложняешь ерунду
Snusmumriken
Давай начнём с того, что у тебя за приложения?
Snusmumriken
Разные луа файлы, которые что-то там делают
Hello, World! 🎄
Давай начнём с того, что у тебя за приложения?
Их еще нету, но они скорее всего будут на Lua
Hello, World! 🎄
+
Snusmumriken
Так вот, что же они делают?
Hello, World! 🎄
Работают с памятью
Snusmumriken
Как? Что именно?
Snusmumriken
Туда впихивается реакционная модель? А ля пользовательские колбеки под разную ерунду.
Hello, World! 🎄
Как? Что именно?
Создаются переменные, вычисляются различные значения. Я думаю, то что все что связано с программированием это работа с памятью.
Snusmumriken
Не трахай мне мозги, пожалуйста. Что именно должны делать приложения (допустим) на луа?
Snusmumriken
Что за оригинальное сишное ядро? Что оно делает?
Snusmumriken
Это графический редактор? Музыкальный проигрыватель?
Hello, World! 🎄
Не трахай мне мозги, пожалуйста. Что именно должны делать приложения (допустим) на луа?
Допустим графический калькулятор, различные игры (WireWorld симулятор, Game of Life)
Snusmumriken
Или это кусок ОС? Типа, хочешь сделать сервисы на луа?
Snusmumriken
Так вот.
Snusmumriken
Во все юзерские игры и прочие калькуляторы — элементарно делаются колбеки. Смотри на ловкину модель.
Hello, World! 🎄
Или это кусок ОС? Типа, хочешь сделать сервисы на луа?
Там все в пространстве пользователя, я в Linux ядро не лезу (код не меняю)
Snusmumriken
function love.load() ... end function love.update(something) ... end function love.draw() ... end Всё вот это вот. Пользователь может выгрузить тебе элементарную табличку с функциями.
Hello, World! 🎄
Во все юзерские игры и прочие калькуляторы — элементарно делаются колбеки. Смотри на ловкину модель.
Проблема в том, что у меня щас все на Lua сделано, а Си только для fb (взял библиотеку), и своя мини библиотека для мышки.
Snusmumriken
Ты берёшь и дёргаешь функции по списку событий например из графического/событийного ядра например.
Snusmumriken
Юзер там себе придумывает что хочет в локальных переменных, а ты просто такой берёшь и дёргаешь. Хочешь — под каждое приложение по стейту заебошишь. Хочешь — распараллелишь на потоки. И так далее.
Hello, World! 🎄
Ты берёшь и дёргаешь функции по списку событий например из графического/событийного ядра например.
Это понятно, что при создании задачи я могу вот так: load() При обновлении: update(var1, var2,...) draw()
Snusmumriken
Так вот.
Snusmumriken
Зачем нужны корутины?
Snusmumriken
В целом, ты понимаешь для чего они в принципе нужны?
Hello, World! 🎄
В целом, ты понимаешь для чего они в принципе нужны?
Чтобы упростить написание кода, допустим у меня на Unity была генерация мира, чтоб проект не зависал там корутины были, которые проходили несколько циклов и останавливались (чтобы unity отрисовал часть чанка).
Snusmumriken
И что это значит?
Snusmumriken
Вообще, ты мог бы на юнити написать всё ровно то же самое без корутин.
Hello, World! 🎄
Вообще, ты мог бы на юнити написать всё ровно то же самое без корутин.
Я знаю, я могу переписать корутины так, чтобы они там не использовались и все работало как на корутинах, но тогда код будет выглядеть больше и менее читаем (возможно).
Snusmumriken
Например: world_generator = { current_chunk = 0 max_chunks = 10 map = {} } function world_generator:step() self.current_chunk = self.current_chunk + 1 if self.current_chunks > self.max_chunks then return true end local chunk = not_so_long_generation_of_map_chunk(self.current_chunk) table.insert(self.map, chunk) end
Snusmumriken
Это называется "держать состояние в структуре".
Hello, World! 🎄
Окей, допустим это и так понятно
Snusmumriken
Что ты делаешь когда берёшь корутину?
Snusmumriken
Простой ответ: ты начинаешь держать состояние в функции. Зачем? Чтобы асинхронный код начинал выглядеть как синхронный. Основная задача корутин — переоформлять код, чтобы тот не превращался в лапшу из колбеков.
Snusmumriken
Например, вот жаваскрипт. Если бы этот сценарий был бы не на async-await, он бы превратился в лапшу из колбеков. Сам жаваскрипт, офк, имеет собственный внутренний цикл который автоматом оформляет задачки и гоняет их пока те не выполнятся.
Igor
Не нравится мне эта тенденция майков, которая идёт последние несколько лет, бетатест на проде производить
Hello, World! 🎄
Собственно, мне лучше вообще переписать реализацию посмотрев как работает xorg и wayland, т.к в идеале нужно написать простое графическое ядро, которое будет получать сигнал от приложения и отрисовывать в окне приложения, то что передал процесс приложения. Сами приложения должны быть отдельные Linux процессы, которые используют библиотеку для посылания сигнала графическому ядру.
Igor
Все так делают. Никто не делает иначе.
Ну в целом да, но блин, раньше кудаааа меньшк было критикал багов
Igor
А сейчас баг на баге и багом погоняет
Snusmumriken
У яндекс-диска был баг. Который полностью очищает твой хард при попытке его удалить ))
Snusmumriken
Очепятка в путях, лол кек.
Snusmumriken
Разумеется нет. Подобная ошибка — худший маркетинг который можно придумать. Инстант полная потеря доверия.
Igor
А у яндекса всегда продукция низкосортной была
Igor
Они только в последнее время что-то более-менее внятное делать начали
Igor
Я даже представить не могу в какой вселенной это может быть маркетинговым ходом))
Igor
Через несколько дней - это уже намеренно, иначе никак
Igor
А это уже уголовка, если что