Mark ☢️
И оно делает как будто это указатель на чар
Igor
Хм, GCC варнингов не кидал
fgntfg
кажется в си нужно знать размер типа, чтоб к указателю прибавлять корректно. Но я не писал на си лет 10, точно не помню что к чему
Igor
Вот такой код, к примеру, не имеет ни единого варна #include <stdio.h> int main() { void* test = (void*)100; void* test2 = test + 10; printf("%x", test2); }
Igor
А, всё, понял. Спасибо за ответ.
Mark ☢️
Igor
Просто по быстрому накидал, чтобы показать, что варны отсуствуют
Anonymous
Наоборот луа строже оказалась чем гцц
Super
Ребята, подскажите плиз, как обработать через ngx.base64_decode большой имадж?
Super
я так понял есть какой-толимит и оно не хочет выше его обрабатывать
Snusmumriken
Пилите, Шура, пилите! На чанки!
Snusmumriken
Я тут успел хорошенько задуматься, как сбрасывать на клиент файлы на предельной скорости в опенресте. и у такой функции, на выходе — при большом bufsize — быстро но переполняется буфер отправки, а при маленьком — медленна. local bufsize = 8192 local chunk = file:read(bufsize) while #chunk > 0 do ngx.print(chunk) ngx.sleep(.01) chunk = file:read(bufsize) end file:close() Ну кароч нормальное решение — ngx.flush(true) вместо sleep'а, оно типа ждёт когда текущий буфер отправится.
Super
так а как мне сделать base64 при этом?
Snusmumriken
А тебе — пилить на чанки.
Super
у меня пришел файл такой большой, я ему могу сделать echo, но не могу разбейзить
Snusmumriken
Ну смотри, тебе условно пришла строка: 0KjQu9CwINGB0LDRiNCwINC/0L4g0KjQvtGB0YHQtSDQuCDRgdC+0YHQsNC70LAg0YHRg9GI0LrRgw== (Шла саша по Шоссе и сосала сушку) Пилишь её на две части (добавляя "==" в конце): 0KjQu9CwINGB0LDRiNCwINC/0L4g0KjQvtGB0YHQtQ== (Шла саша по Шоссе) и SDQuCDRgdC+0YHQsNC70LAg0YHRg9GI0LrRgw== ( и сосала сушку) Надо только определить где нужен распил, потом можно клеить.
fgntfg
Тебе прилетел большой кусок в base64? Я точно не уверен, но вроде как если расбейзить каждый кусок по отдельности и склеить результаты, то получится тоже самое что разбейженный целый. Я бы проэксперементировал, но не на чём.
fgntfg
3 байта исходных = 4 символа бейзу
Snusmumriken
Хммм, я только что кажется обфукался, надо перепроверить.
Snusmumriken
🤔
Snusmumriken
Надо подумать на тему потокового декодера.
Serezha
я так понял есть какой-толимит и оно не хочет выше его обрабатывать
А это не лимиты самого Nginx? В PHP с этим постоянно проблемы - надо несколько констант дефолтных изменить чтобы с большими файлами работать
Super
видимо придется поменять логику и обойтись без base64
Snusmumriken
у меня пришел файл такой большой, я ему могу сделать echo, но не могу разбейзить
Echo ты им можешь сделать потому что это фактически запись на диск твоего файла, и дальше ТСП-стек его будет пересылать, пока не перешлёт. А вот бейз64 — видать таки лимитирован по размерам.
Snusmumriken
добавь пробел в первую строку
Ты имеешь ввиду, добавить первым пробел в первую строку?
Snusmumriken
добавь пробел в первую строку
Да, таки с пробелом строка кардинально меняется, давно не смотрел b64, таки предыдущие символы влияют на последующие.
Super
странное ограничение конечно
Serezha
видимо придется поменять логику и обойтись без base64
Но этими стоит поиграться если ты проксируешь контент
Super
вывести я могу ее, в переменную или мемкеш загнать могу, а вот разбейзить нет
fgntfg
Да, таки с пробелом строка кардинально меняется, давно не смотрел b64, таки предыдущие символы влияют на последующие.
3 символа исходной строки = 4 символа base64. Делишь строки на кратные по длине трем и радуешься.
Snusmumriken
Хоба, надо затестить
fgntfg
Я не тестил, я читал википидоров
fgntfg
надо бы RFC почитать, но я стар для этого
Serezha
ну вы чо base64 тупая штука совсем 🙂
Snusmumriken
ну вы чо base64 тупая штука совсем 🙂
Ацтань, тут все так привыкли что забыли базовые свойства. Дай заново изобрести велосипедиков.
Snusmumriken
3 символа исходной строки = 4 символа base64. Делишь строки на кратные по длине трем и радуешься.
Кстати нет, первая строка отпиливается нормально, а остальные уже не очень. Пошли читать RFC.
Snusmumriken
Надо ещё небось что-то вытаскивать из последнего символа первой строки, или завершать как-то хитро.
fgntfg
у тебе небось ещё и кирилица двубайтная
fgntfg
а пробелы однобайтные
Snusmumriken
utf8, ясен красен. Но в норме должно быть пофигу.
Snusmumriken
Так, дальнейшие эксперименты с роспилом (и откатом) показали, что при разной обрезке рядом с местом роспила (и отката) можно получить второй чанк но без начального символа. Копаем дальше!
Serezha
там надо корректно добавлять удалять паддинги (=) а может и еще химичить
Snusmumriken
Ненене, карочи, бинарные и ascii-данные нормально пилятся на числа кратные трём, а вот с русеком я как раз накосячил из-за многобайтности.
Super
это слишком сложно
Super
я подумаю как в байнари виде их передавать, так проще будет
Super
просто придется повозиться с заливкой в админке, хотел на скорую руку через форму сделать
Serezha
это слишком сложно
не сложно если решить проблемку с паддингами
Serezha
рубишь картинки на чанки по 1 мег например
Snusmumriken
это слишком сложно
Нене, всё оче просто. function decode(str) local res = {} local bufsize = 1024 * 3 local i = 1 while i < #str do local chunk = str:sub(i, i + bufsize) res[#res + 1] = base64.decode(chunk) i = i + bufsize + 1 end return table.concat(res) end Прогнать-пофиксить эту фигню, и вот тебе потоковый декодер. UPD: Кажись похоже но не совсем.
Super
спасибо, сейчас попробую
Snusmumriken
А то.
Snusmumriken
работает на каринке 1023 и 1025 байтов длины?
По крайней мере, должно по rfc ))
Serezha
По крайней мере, должно по rfc ))
Чот мне кажется все сложнее :)
Snusmumriken
Ужасть
Serezha
я ашипся про бейс64 - это заморочная кодировка
Serezha
В x16 все просто - один байт на входе два на выходе
Snusmumriken
Чот мне кажется все сложнее :)
Кстати, эта фигня уже должна быть в коде. Не будет тебе бейз64 в 1023 байта, оно типа так не закодирует (или закодирует, нацело делится на три, хе, а вот 1025 не будет).
Serezha
но это именно граничные случаи на конце - если с ними пошаманить то будет клеить дальше влет 🙂
Snusmumriken
Карочи, на самом деле, бейз64 действительно элементарная штука, но тем не менее, она довольно замороченная )) Ууу, сложна.
Snusmumriken
Карочи, ща скочаю питоновый потоковый декодер и нахально перекатаю.
Snusmumriken
Спустя двадцать минут: слишком сложно, пойду посмотрю мультики и чуть позже покопаю
mva
крысы фчяти
Super
я заморочился и обошелся без base64
Super
просто передаю как есть через прокси, оно как есть получает и кладет в мемкеш
Super
сделал форму, там выбор файла и заливка на js без сабмита формы через ajax запрос
Super
в ообщем пришлось чуть заморочиться, но даже лучше в итоге вышло )
Super
и теперь я знаю про это ограничение
Anonymous
Пацаны где правильный чат по машинлёрнингу?
Anonymous
Телеграмный
Super
мне тоже интересно, а еще интересно если на луа что-то для этого
Super
я знаю, что у редиса есть какая-то нейросетка и у луа к нему есть доступ соответсвенно
Anonymous
Написать несложно простенькую