Snusmumriken
что ента такое
Ну типо знаеш, ты такой хочешь что-то откуда-то скочать.
Оно не даёт тебе просто так ево скочать.
Ты такой должен просимулировать цепочку запросов:
— вот я делаю запрос со страничкой того, что хочу скочать, и получаю пачку куков
— вот я делаю запрос с логином, передаю кукисы странички и получаю куку сессии
— вот я делаю запрос за фигнёй которую хочу скочать, ссылку на которую выудил со странички того что хочу скочать
ура ура
Особенно весело когда что-то кочаеш в 50 потоков с пачкой проксей, и у каждой прокси должна быть своя пачка куков, свой юзерагент и прочая лабуда.
Domka
ля как сложна :(
Domka
надо будет когда нибудь занятся интернатом
Domka
Михаил
поздравьте меня
Михаил
я пропатчил луажыт и добавил туда fn
Михаил
Михаил
код действительно расширяемый, не нужно было всё перелопачивать
Snusmumriken
А я в непатченный луажыт добавляю нелегальных штук, всё средствами базовой луашки.
Михаил
Михаил
еще немного - и я смогу добавить { } вместо do end))
Snusmumriken
На табличках навернёшься с некислым шансом.
Михаил
возможно. но я весь lj_parse перечитаю и будет ясно
Михаил
самое главное что я хочу добавить это +=
Snusmumriken
Потому что теряется синтаксическая совместимость.
Луажыт по синтаксису полностью соответствует слегка ограниченному 5.3, например (без битопов).
В общем, если пишешь для луажыт — код спокойно запустится в 5.2/5.3.
Михаил
Михаил
еще континью надо добавить
Snusmumriken
goto есть.
Igor
Snusmumriken
Хотя у меня на работе обычная луашка 5.1, и там именно добавляли continue патчем.
А ещё оформление лямбд через do-end а ля:
local status, result = pcall(do return 10 end)
Михаил
/* List of LHS variables. */
typedef struct LHSVarList {
ExpDesc v; /* LHS variable. */
struct LHSVarList *prev; /* Link to previous LHS variable. */
} LHSVarList;
Михаил
Что может значить LHS?
Igor
Snusmumriken
Ну и ещё можно делать простенькие процедурки а ля
local foo = do doSome1() doSome2() end
foo()
Михаил
Snusmumriken
Хз
Snusmumriken
Мб left hand side
Михаил
RHS еще есть, да, наверно)
Snusmumriken
Точно left hand side.
Полагаю, это что-то типа
LHS == RHS
if foo + 10 == bar - 30 then ... end
https://www.vedantu.com/maths/lhs-and-rhs-examples
Михаил
ну да
Михаил
все что до =
Михаил
parse RHS идет сразу после lex_check(ls, '=')
Snusmumriken
А ещё я накатал простейшую фигню для выдачи кратенькой справочки из официальной доки.
Надо её залить в какой-нибудь гит.
Luсky
Luсky
Михаил
Михаил
и даже с вложенными переменными с фигурными скобками работает
Михаил
fn fib(n) {
if n == 1 then return 1 end
if n == 2 then return 1 end
return fib(n - 1) + fib(n - 2);
}
fn main() {
print("enter a number");
local f = tonumber(io.read())
print("fib: " .. tostring(fib(f)))
}
main();
Михаил
Michael@HPP1322SR:/s/Projects/LuaJIT/src> ./luajit syntaxtest.lua
enter a number
9
fib: 34
Luсky
Колдовство👍
Михаил
следующий - for
Михаил
fn main() {
for k, v in pairs{"foo", "bar", "baz"} do {
print(k, v);
}
for i = 1, 5 { print(i) }
}
main();
Михаил
Все-таки пришлось оставить do. когда я его убираю, тело цикла задевается парсингом выражения после in и не считается телом цикла, а потом парсер требует {
Михаил
Михаил
красота
Михаил
остались ветвления. их я сделаю примерно так же
Михаил
if smth { ... }
elseif smth { ... }
else { ... }
Михаил
надо еще сделать {} опциональными как в с/с++
Lucky
Snusmumriken
Расшаришь?
https://pastebin.com/h2kZnX4u
Lucky
Igor
https://pastebin.com/h2kZnX4u
Производительность не измерял? Интересно, насколько медленнее метавызовы будут работать в данном случае по отношению к чистому коду
Snusmumriken
Ммм.
Snusmumriken
Производительность не измерял? Интересно, насколько медленнее метавызовы будут работать в данном случае по отношению к чистому коду
Но вообще, на чистой луашке, в зависимости от глубины.
Например, вот тут, i:tostring()
local function foo(v)
for i = 1, 10 do
if i % 2 == 0 then
local f = i:tostring()
end
end
end
получается быстрее чем tostring(i) тут
local function foo(v)
for i = 1, 10 do
if i % 2 == 0 then
local f = tostring(i)
end
end
end
Потому что лукапы. Но мы можем закешировать tostring в начале функции, тогда оно в чистой луашке будет чуть быстрее чем метатабличный переход.
У luajit насрать в обоих случаях, оно при сборке трассы сокращает все лукапы/переходы и результат получается одинаковым.
Snusmumriken
Snusmumriken
Ящитаю что незначительно.
Igor
Ну меня именно случай с житом интересовал, ага. В чистом луа очевидно будет медленнее с кучей вложений
Igor
Ну прикольненько
Igor
И удобно
Snusmumriken
Да, я уже вовсю рофляю, даже в бенче накрутил.
Snusmumriken
Меня просто задолбало заворачивать всё подряд в дикое количество функций.
foo = (5):pow(2):format("%.5d"):print("foo: %s")
-- или
foo = string.format("%.5d", math.pow(5, 2))
print("foo: " .. 5)
foo = ("0xBEEF"):match("0x(%x+)"):tonumber(16):print()
-- или
foo = tonumber(("0xBEEF"):match("(0x(%x+))"), 16)
print(foo)
Пусть прямые последовательности действий будут прямыми.
Сергей
Snusmumriken
Должно быть можно.
Snusmumriken
Я вот думаю что скоро испорчусь, и буду давать нубикам примерчики луёвого кода вот с этой фигнёй, а они будут сидеть и страдать что так не могут.
Сергей
skill issue
Igor
Snusmumriken
Они от этого тоже испортятся
Snusmumriken
Фреймворки к жаваскрипту по крайней мере не расширяют синтаксис. Но вообще да.
Сергей
WDMR
Hello, World! 🎄
Hello, World! 🎄
Hello, World! 🎄
Этот код я нашел в своем учебном заведении
Сергей
а что означают интовые word excel access
Igor
Igor