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

Лидеры


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

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

  1. 1 балл
    Продолжу рассказывать про знаки препинания. В этом посте — 3 разных истории про пару круглых скобок. 1. Вызовы функций Если функция вызывается с одним аргументом — строковым или табличным литералом, то скобочки необязательны. local function identity(x) return x end print(identity "test" == "test") print(table.unpack(identity {"test"}) == "test") Это чисто синтаксическая фишка, которая никак не влияет на исполнение кода. Очень удобно, чтобы вызвать функцию и передать ей таблицу с опциями. local logger = getLogger { name = "main", level = "info", output = {stdout}, } Если несколько литералов так разместить подряд, получится ряд последовательных вызовов: myFunc "hello" "world" {"how do you do"} -- myFunc("hello")("world")({"how do you do"}) Используя эту фичу, можно воплотить всякие норкоманские вещи. Как вам вот такой форматтер с интерполяцией? local myVar = 42 print(format "myVar = " {myVar} ", and I'm running " {_VERSION} ()) --> myVar = 42, and I'm running Lua 5.3 2. Ещё про литералы У всех строк есть метатаблица, у которой __index = string. Это значит, что можно вместо string.gsub(str, ...) писать str.gsub(str, ...), или str:gsub(...). Очень удобно, особенно последнее. Но вот просто так заменить str литералом нельзя. "test":gsub(...) — синтаксически неправильный код. Выручат скобки вокруг литерала: ("test"):gsub(...). Постоянно этим пользуюсь. Та же ситуация, если мы хотим проиндексировать табличный литерал: {foo = "bar"}.foo выдаст ошибку. Лечится аналогично: ({foo = "bar}).foo. Кроме индексации, скобочки нужны при вызове: вместо function() return 42 end() нужно писать (function() return 42 end)(). Наконец, есть ещё литералы численные: 42, например. В обычной Lua оборачивать их в скобки смысла, пожалуй, и не имеет, но с небольшим шаманством опять потребуются скобочки: debug.setmetatable(0, {__call = function(self) print(self) end}); (42)() --> 42 Правда, в OpenComputers отключён debug.setmetatable. 3. Функции с множественным выхлопом В Lua функция может вернуть несколько значений: local function test() return 1, 2, 3 end print(test()) --> 1 2 3 Однако бывает, что нужно достать только одно значение, а про остальные забыть. Для этого нужно обернуть в скобки вызов функции, вот так: print((test())) --> 1 Скобочки возьмут только первое значение и отбросят остальные. С помощью функции select можно выбрать и другое по счёту: local function identity(...) return ... end print((select(3, identity(10, 9, 8, 7, 6, 5, 4, 3, 2, 1)))) --> 8
  2. 0 баллов
    Почти с месяц назад я представил во флудилке пару скриншотов разрабатываемого мной браузера и приличному количеству людей оно тогда понравилось. Поэтому сегодня, спустя пол года кодинга, нескольких переходов с одного движка на другой и кучи потраченных нервов я могу наконец представить его вам. Знакомьтесь, Memphisto. Примите во внимание, что браузер находится в тестовой стадии, еще предстоит сделать много всего, поэтому возможно наличие неприятных багов (два глаза все не отловят). Основные характеристики: Используется движок NyaDraw, который является портом движка Screen из MineOS. Поэтому браузер весьма быстро (для таких ПК) отрисовывает и прокручивает страницы. Для страниц используется язык NFPL, специально разработанный с учетом особенностей OpenComputers. Поддержка гиперссылок, загрузочных ссылок, рисование векторной графикой и многое другое. Поддержка картинок формата OCIF5-8. А так же их использование в качестве графических ссылок. Возможность просматривать страницы оффлайн, то есть с жесткого диска (полезно при написании страниц). Для поднятия своего сайта достаточно обычного HTTP(S) сервера. Системные требования: Процессор: Уровень 1. Видеокарта: Уровень 3. ОЗУ: 1Мб или больше. Жесткий диск: не меньше 52Кб свободного места. Интернет карта Скачать: pastebin run EUZQRkwF Репозиторий на GitHub Полезное: Руководство по языку NFPL (Network Formatted Page Language). Первый NFPL сайт - bs0dd.github.io (запущен в тестовом режиме). Руководство по графическому движку NyaDraw. Увы, одного человека слишком мало для реализации задуманного, поэтому ищутся люди, хорошо понимающие в Lua, которые смогут помочь в устранении багов и расширении функционала как языка NFPL так и браузера для него.
  3. 0 баллов
    В данный момент, увы, не имею при себе ни компьютера, ни даже постоянного доступа в Интернет. Через недельку, если доберусь, поправлю инсталлер.
  4. 0 баллов
    Программу в общем следует писать так, чтобы она в любой ситуации выстояла. Программе никогда никто не рад. Её все будут тестировать, потрошить, разрывать на части, ругать и пытаться взорвать. Поэтому ошибки нужно обработать, отрапортовать, ввод отвалидировать; надеяться, что у проги всё будет прекрасно, нельзя. Как здесь: кто-то не узнал, что файл не открылся, потому что ошибка съелась. Проблема не его.
  5. 0 баллов
    Ой, всё, короче, добавил ваш вАнючий глобальный принт, сдаюсь
  6. 0 баллов
    Да я посчитал, что юзер будет достаточно умен и не попытается поставить программу на readonly файловую систему. Но у новичков, как оказывается, бывает все((((.
  7. 0 баллов
    Если лень человечески ошибки обрабатывать, файлы советую открывать так: local f = assert(io.open(path, mode)) Просто обернуть опен в ассёрт. Творит чудеса.
  8. 0 баллов
  9. 0 баллов
    Да, пожалуй, нужно обозначить. Пока что в планах: Прикрутить скрипты. Наверное будет что-то Lua-подобное, но нужно как-то организовать ограниченную среду, чтоб через браузер нельзя было, например, потереть файлы или повесить компьютер через while true do os.sleep() end Если получится сделать скрипты, можно сделать и строки ввода. Ввел текст и передал его скрипту для, например, отправки на сервер или каких-то внутренних расчетов Немножко расширить функционал самого браузера, там, история (в пределах сеанса), закладки, еще что-нибудь. Можно и настройку сделать в самом браузере, дабы не лазить редактором в конфиг У меня сейчас серьезный учебный завал, поэтому пока хочу немного отодвинуть это дело в сторонку, с короткими ковыряниями А насчет WYSIWYG, кстати, хорошая идея, а то я конкретно наморочился, "рисуя" странички в Notepad++.
  10. 0 баллов
    Я бы помог, например, но что делать - непонятно. Стоит обозначить фронт работ. Пока попробую сделать что-то вроде WYSIWYG-редактора, может, получится чего
  11. 0 баллов
    Я просто уже находил упрощятор html на питоне. Попробую сделать хотя бы какой то конвертор и повесить на расберю. Как только руки дойдут конечно)
  12. 0 баллов
    А почему б и нет. В теории можно парсить страницу и превращать ее в подобные объекты в NFPL, но Нужно сделать конвертацию картинок в OCIF и резать их по разрешению, ибо даже при невысоких разрешениях отрисовка существенно замедляется Нужно рассчитывать координаты объекта, ибо NFPL - координатно ориентированный язык и каждый объект имеет свои координаты NFPL пока не подразумевает наличие скриптов (однако Lua-подобные скрипты планируются) поэтому пока что страницы будут исключительно статичные В остальном, в принципе, ничего невыполнимого нет, хоть на ходу их конвертировать на сервере (получится туннель HTML-NFPL), но я в HTML не слишком специалист, поэтому сам заниматься этим не буду. Так что если кто хочет - мануал по языку в шапке есть, дерзайте!
  13. 0 баллов
    А теперь вот интересно. Можно ли сделать переводчик из html + css в nfl сторонним языком. и стоит ли игра свеч...
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...