Anonymous
Или скипает
Snusmumriken
Ну типа у нас есть буфер strbuf. Мы ищем в нём фигню регуляркой. Нашли — отпиливаем этот кусок и парсим, не нашли — добавляем туда ещё кусок и снова ищем.
a и b — начало и конец найденной регулярки.
Цикл while a and b нужен чтобы распарсить все подходящие под регулярку куски в текущем strbuf, их там может быть много.
Anonymous
Спасибо дружище
Snusmumriken
Хммм, а что ты предлагаешь взамен?
В норме — основные элементы набиваются по шаблонам.
Есть условный общий шаблон странички, в него набиваются разные части типа результатов работы шаблонизатора для шапки, для ленты новостей, для всяких таких штук.
В результате под каждый отдельный элемент какой-нибудь веб-странички есть свой шаблон, который как правило состоит из шаблонов попроще. Обычное дерево.
Лепикоршев
Snusmumriken
Инлайн-вставки — типа такого:
<?for i = 1, 100 do?>
<div><?i?></div>
<?end?>
Куски кода в шаблоне. Вот этот вот должен сгенерить 100 div'ов на этом месте, каждый со своей внутренней фигнёй.
Лепикоршев
Хммм, а что ты предлагаешь взамен?
В норме — основные элементы набиваются по шаблонам.
Есть условный общий шаблон странички, в него набиваются разные части типа результатов работы шаблонизатора для шапки, для ленты новостей, для всяких таких штук.
В результате под каждый отдельный элемент какой-нибудь веб-странички есть свой шаблон, который как правило состоит из шаблонов попроще. Обычное дерево.
Значит, я тебя неправильно понял. Подумал, что шаблоны типа приведённого тобой строятся по принципу "вся начинка в одном шаблоне", и он описывает все элементы в себе, от заголовков, до цветов кнопок.
И, что такой шаблон плох только своей нечитаемостью.
На мой взгляд минус такой работы с шаблонами был бы в крайне низкой гибкости.
Snusmumriken
Ну у меня на работе применяются примерно так:
<?for i, v in ipairs(self.table) do?>
<div>Наш <?v.foo?> является частью <?v.bar?></div>
<?end?>
То есть, хтмла генерится например по табличкам.
Snusmumriken
Значит, я тебя неправильно понял. Подумал, что шаблоны типа приведённого тобой строятся по принципу "вся начинка в одном шаблоне", и он описывает все элементы в себе, от заголовков, до цветов кнопок.
И, что такой шаблон плох только своей нечитаемостью.
На мой взгляд минус такой работы с шаблонами был бы в крайне низкой гибкости.
А, не, стили можно снаружи провесить. А вот сама разметка хтмлы, то есть структура — принципиально делается только шаблонами или чем-то таким:
local html = "<html>"
for i, v in ipairs(v) do
local str = "<div>Наш " .. v.foo ..
" является частью " .. v.bar ..
"</div>"
html = html .. str
end
html = html .. "</html>"
Но тут читаемость ещё ниже ))
Лепикоршев
Я обычно использую конструкции разметки, и внутри просто накидываю сами переменные.
Вечером до компа доберусь, скину пример
Лепикоршев
Скорость работы статического фронтэнда - не то, за что нужно бороться в ущерб читаемости)) имхо
Snusmumriken
Дык тут динамический, сам смотри: в зависимости от содержимого таблички — меняется контент. И мы можем подставить другой шаблон и сделать контент совсем другим. Статический фронт — это просто заглушки того что у всех одинаковое, просто готовые куски хтмл которые вклеиваются или просто выдаются (как 404).
Лепикоршев
Лепикоршев
Да, генерация динамическая, но страничка на выходе - просто html-документ. А не сложное приложение с интерфейсом интерактивного взаимодействия
Snusmumriken
Это уже на стороне js, к нам не относится.
Благо зачастую, даже на ответ аяксов, сервер всё равно выплёвывает куски точно так же шаблонно-сгенерированной хтмлы, которые потом жсом втыкается в страничку. Я точно знаю, потому что парсил много сайтов, в т.ч. "динамических" ))
Лепикоршев
Ну т.е. без js у нас любой сайт можно назвать условно статическим?)) вот на их рендере, как мне кажется, экономить не очень рационально.
За исключением ситуации, когда мы упираемся в производительность браузера клиента. Но это тоже не попытка сэкономить время сервера.
Snusmumriken
Под статикой обычно имеют ввиду картинки, файлы и заглушки по типу 404. Они не меняются, их обычно не надо генерить (разве что сервер очень умный, и ресайзит картинки под клиента), они просто отдаются как есть без допобработки и какой либо генерации.
Лепикоршев
Snusmumriken
Так и называть.
https://ru.wikipedia.org/wikiДинамический_сайт
Лепикоршев
А чтобы его не путать с тем, что работает через апплеты на js?)
Snusmumriken
Аяксосайт ))
Можно "веб два-ноль", потому что это определение как раз пошло с появлением и популяризацией аякса.
Лепикоршев
Ок =) как насчёт идеи не оптимизировать динамические сайт без аякса ценой читаемости шаблонов?)
Snusmumriken
Как например? : )
Snusmumriken
Первое что приходит в голову — тупо превратить динамику в статику кешированием. Типа, был запрос за динамическим контентом — мы его закешировали и ближайшие пол минуты отдаём данному пользователю его. На случай если у него к кнопке f5 приложен сервопривод.
Snusmumriken
Второе, то что предлагаешь ты — какими-то хитрыми алгоритмами изменить схему генерации хтмлов.
Лепикоршев
Как например? : )
Не использовать конструкции вида
<?for i = 1, 100 do?>
<div><?i?></div>
<?end?>
? =)
Snusmumriken
А что делать? : )
Чем такое заменить?
Лепикоршев
Нужно время на размышление)) буду готов напишу. Сперва код потестить надо
Tom
Блин, я чот думал, что луарокс готовые пакеты подкачает. А оно сорцы гоняет и пытается на винде цигвином из скомпилять
Tom
Вообще не интересно. Можно где-то уже готовые бинарники скачать?
Tom
Вон у питона яйца с колесами есть, и прям красота. А тут сишные исходники одни
Snusmumriken
Snusmumriken
И да, схема работы луарокса — типичная линуксовая. Менеджеры пакетов так и работают, мало ли какая у тебя архитектура, а держать сервер со всеми версиями бинарей для всех архитектур — как-то не очень. То что под вендой приходится развлекаться — ну щито поделать, це ж не линукс : )
Snusmumriken
Так-то пришлось бы держать для каждой либы:
1. Все сочетания lua5.1/5.2/5.3/luajit x32/x64 для x86
2. Все сочетания lua5.1/5.2/5.3/luajit x32/x64 для ARM
3. Аналогично PPC, PPC/3500
4. Аналогично MIPS
5. Ещё десяток архитектур бинарей
А ведь скоро ещё 5.4 ))
Это каждая либа разрастается на несколько (десятков) мегабайт, ещё включая сорцы ))
Tom
Snusmumriken
Есть шанс что у них тупо больше бабла. Или они собирают на стороне сервера и выгружают.
Snusmumriken
Ещё есть одно маленькое правило: софт лучше работает если собран одним и тем же компилятором ))
Tom
Tom
А оно умеет в кросскомпиляцию? Мне б на линухах скомпилить под венду, но чтоб оно там все само, а не вручную
Snusmumriken
Не собирают точно. Не у всех библиотек полное покрытие архитектур
Ну вот тебе и ответ, чем это хуже: требует больше места, требует перекомпиляции при выходе новой версии (а уж если держать историю сборок для каждой версии — ваще закачаешься), отсутствие поддержи всех архитектур по дефолту, потенциально хуже с производительностью.
> А оно умеет в кросскомпиляцию
Луарокс — не думаю. Но ты можешь залезть на репу нужной либы и собрать экзешники/дллки через mingw.
Snusmumriken
Или поставить луарокс с каким-никаким компилером на виндовс ))
Snusmumriken
Я ваще собираю большую часть всего кроссплатформенно через WLS и TCC. В плюсы оно не умеет, но обычно и не нужно. Правда, TCC не очень умеет оптимизировать.
Snusmumriken
Луарокс требует сыгвина? Чот странное. Оно должно требовать только какой-нибудь компилятор, можно настроить tcc/mingw/VS.
Snusmumriken
Так-то для работы луарокса, помнится, требуется только компилятор и curl, который с некоторых пор есть в десятой венде (плюс поставляется с самим луароксом), и который заменяется luasec'ом если установлен.
Tom
Snusmumriken
Там схема работы в целом аналогична gcc, так что должно прокнуть.
Alexey
LuaRocks вполне работает с mingw/msvc под виндой
и да если разные либы собраны с разной версией рантайма/компиляьтора то могут быть сюрпризы
Alexey
libzmq определяла разные значения констант в зависимости от версии MSVC. И получалось что libzmq отдает некоторое значение, а Lua либа считала что это не валидное значение. Поэтому пришлось пересобирать одну из либ
Anton
Небольшой пост от Игоря Мунькина про особенности поведения FFI в LuaJIT: https://blog.imun.cloud/Oh-Mike-Pall-1/
🐅🤦♂️
В теле функции записываю значение в глобальную переменную. Правильно понимаю, что если создать корутину из этой функции и вызвать ее, то записи в глобальную таблицу не произойдет? Те корутина имеет свою глобальную таблицу.
Snusmumriken
Помнится, нет. Окружение закорутиненной функции совпадает с тем, которое было бы если бы ты не использовал корутины вообще.
Окружение определяется при создании, в той точке где функция описана. Глобальное окружение одно и то же, если не указано обратное (setfenv/_ENV).
🐅🤦♂️
Попробовал на изолированном примере - работает. Где-то я накосячил..
Tom
Мля, как же мне бомбит с вашего луарокса! Инструкция по венде - говно какое-то. Скачайте и запустите INSTALL.BAT. Качаю - один экзешник
Tom
Ок. Запускаю этот экзешник. Вдруг так заработает. Ага, щаз. Пишет, что конфиги по дефолтным путям отсутствуют. Длеаю генерацию конфига, кладу рядом с экзешником... Пишет, что по дефолтным путям конфига нет!
Tom
Ну оно вообще слепое и умеет только в две папки смотреть чтоле?
Tom
А прямо перед собой вообще конфиги не воспринимает?
Tom
Jr
Tom
Ок
Tom
Читаем в справке - After installation, a default config file called config.lua will be installed at the directory defined by /CONFIG.
Tom
Угу
Tom
Делаю
my\path\luarocks.exe /CONFIG my\path
а в ответ
Error: unknown command '/CONFIG'
ПРОСТО ОХЕРЕННО!
Tom
Спустя пару экранов оказывается, что вся инструкция не про запуск luarocks, а про запуск того самого INSTALL.BAT, которого нет в дистре!
Tom
Шедеврально просто\
Tom
Два вечера млять пытаюсь это раскурить и чет прям все более отвратное ощущение от этого поделия
Tom
И только к концу второго вечера я СОВЕРШЕННО СЛУЧАЙНО тыкаю на страничке LuaRocks releases в строчку legacy Windows package, includes Lua 5.1 и ВНЕЗАПНО это оказывается тот самый ALL-IN-ONE пакет со всеми скриптами! И ТЕМ САМЫМ ГРЕБАННЫМ INSTALL.BAT!!! АВТОРОВ ЭТОГО ГОВЕНОГО САЙТА ЧТО, В ШКОЛЕ ПО РУКАМ БИЛИ ЧТОЛЕ??? ПОЧЕМУ БЛДЖАД НЕЛЬЗЯ НАПИСАТЬ В ЭТОЙ СТРОКЕ ИМЕЕНО ALL-IN-ONE, ЕСЛИ ИМЕННО ПРО НЕГО ГОВОРИТСЯ В ИНСТРУКЦИИ??? ЗАЧЕМ Я ДОЛЖЕН ГАДАТЬ И ТЫКАТЬ ВО ВСЕ ВАРИАНТЫ ЗАГРУЗОК, ПОКА НЕ НАЙДУ НУЖНЫЙ???\
Anton
Tom
Tom
Список рассылки здесь при чем? Больше чем уверен, что первым же ответом послали в инструкцию
Anton
Alexey
https://github.com/moteus/lua-windows-environment
Там под MSVC но можно подпихнуть и другие бинарники при желании
Alexey
Последний all-in-one бинарник честно не пробовал, но через бат оно у меня ставилось для mingw когдато. Но когда понадобилось несколько версий LuaRocks - тогда пришлось делать что-то самому
Anatoliy
Лепикоршев
Snusmumriken
(а в линуксовых тулзах для параметров часто используются дефисы)