кота
кота
еще и малина валяется без дел
Snusmumriken
Берёшь такой бесхозную мобилу, подрубаешь к ней usb-hdd, и пишешь на termux'е с luajit'ом простенький луа-веб-сервер для файлообмена, можно с FTP/TFTP.
кота
кота
Гениально
Snusmumriken
Самое смешное что это работает.
Snusmumriken
Надо кстати чекнуть, можно ли на мобилу с термуксом поставить openresty, ваще бомба.
кота
Можно поставить хттп вебсервер снуса и хостить одностраничники
кота
или нельзя, я хз
Snusmumriken
Можно
кота
смотрел наискось твой пастбин))
кота
Snusmumriken
Но у меня не под одностранички, а под приложули. Ты такой луями формируешь хттп и выплёвываешь. Или такой смотришь на путь хоста, видишь что это какая-нибудь папка, и выплёвываешь уже файл.
Snusmumriken
Для генерации страничек крайне рекомендую ковырнуть
https://github.com/bungle/lua-resty-template
Там всё настолько изишно, что прям каеф.
кота
кота
Кстати, как там дела с враппером для рейлиб...
кота
Алсо
Может ли быть дело в неэкранизиованных бекслешах? 🤔
кота
Да
кота
В них и дело
кота
Красиво, динамический хтмл на луа
кота
Или как это правильно назвать
кота
Не уверен
Snusmumriken
Ну типо луёвые шаблончики. Можно лезть в БД и выплёвывать странички в соответствии с данными из БД. В первую очередь для этого.
Snusmumriken
Ну и там всякие проверки: пользователь не зареган? Редиректнем его туда-то, а то и вовсе выплюнем хтмл регистрации вместо того что он ожидал, а после регистрации просто обновим страничку с новыми куками/сессией, и т.д, и он получит уже то что хочет.
Во всяких контактиках, например, то что ссылка на странице стабильно примерно одинаковая (например, залез ты в музон и поискал что-то) — за счёт доп-параметров запроса и/или за счёт вот такой вот генерации.
B
кто напальцах пояснит за макросы в плюсах?
Snusmumriken
Можно сделать inline-like, можно function-like, можно многострочные, можно всяко-разные. Можно определять ими всякие переменные, можно делать алиасы типов/классов и всякого такого. Можно впихивать/убирать логику в зависимости от наличия или отсутствия какого-то дефайна/опции компилятора.
Snusmumriken
А вот макрос который
1. Многострочный function-like
2. Умеет лезть в неизвестную структуру и присваивать неизвестному полю неизвестное значение
3. Ретурнит из функции, в которой его вызвали ))
B
void function(){
#ifdef ABBA
std::magic;
#endif
#ifndef ABBA
std::magic;
#endif
}
но нужно будет в таком случает пересобирать
натолкнулся на такой пример кода
кота
ета же условная компиляция
Snusmumriken
Snusmumriken
Карочи, макросы — это те же шаблоны с условиями. Сначала из шаблона с макросами и разными кусками сорцов (например, для разных ОС) делается исходный код (просто обрабатывая каждый макрос, производя замены/добавления/удаления), а потом из того что получилось делается приложение. Всё.
кота
Типо
1037-Волинська\ ОБЛ/
кота
НУ КТО так делает
кота
кота
Igor
Ох, сколько же у меня таких системозависимых частей кода в одном проекте - это жуть
Snusmumriken
Ага ))
Snusmumriken
А потом всё тестить )))
Snusmumriken
Иногда даже проще написать два приложения, одно для виндовса а другое для линекса.
Igor
Ну у меня, благо, удобнее было всё уместить в одно
Snusmumriken
Но да, фактически написание кроссплатформы провоцирует тебя писать сразу полтора приложения. В случае если половина кода — платформозависима. Если процент больше — соответственно, больше ))
Igor
Я просто создал platform.c и platform.h, где определил все структуры с одинаковым именем в тайпдефе и разным содержанием в разных системах, ну и определения различных методов ещё
Igor
У меня там по большому счёту только IO (сокеты, файлы), мьютексы и потоки
Snusmumriken
Ну ды, так и делают. А в идеале — сразу шесть (девять) приложений: линукс, виндовс и мак, во всех сочетаниях с х32/х64/АРМ ))
Если осталось свободное время — ещё куда-нибудь портировать.
Igor
Всё это было относительно просто уместить в одно
Igor
Правда зачастую ловил сегфолты в самых неожиданных местах, но это мелочи
B
вроде понятно, спасибо
знакомлюсь просто пока с плюсами чуть-чуть
Snusmumriken
Макросы пошли от сишки. Это самая что ни на есть сишная часть.
Igor
Ну конкретно это даже не кресты
Igor
При взаимодействии с Lua API ты делаешь всё через обычный Си
Snusmumriken
Кресты — это типа ООП, темплейты, коллекции, неймспейсы, std::блабла и всё такое.
Igor
Обёртка для конфетки))
Snusmumriken
(куча перемудрёного треша по мне, хотя оптимизация вроде как бы ок)
Igor
+
Igor
Мне больше с чистым си работать нравится
Snusmumriken
Мне в сях таки не хватает худо-бедной работы со строками. С луями вместе есть лайфхак: работать со строками, вызывая из сишки луёвые функции вплоть до регулярок ))
И то же с ООП/хешмапами.
Я так делал и мне даже не стыдно.
Igor
Ну я уже написал себе модуль "string" для таких дел
Snusmumriken
Этих модулей понаписали миллиард, а всё равно ручками всё инициализировать, чистить все хвосты, следить на терминаторами и совершать ещё миллиард бессмысленных и беспощадных действий.
Igor
Правда болтшинства функций, типа конкатенации строк, у меня нету, но и справедливости ради стот заметить, что оно мне и не надо, как станет нужно - перепишу
Igor
Я вот как раз стараюсь как можно меньше внешних зависимостей использовать, чтобы в один прекрасный момент не промахаться с высвобождением памяти
Igor
Или ещё с чем
Igor
По возможности пишу сам что-то нужное. Пытался развивать внутри проекта свой модуль "http", но когда появилась надобность в защищённом соединении, пятая точка слегка подгорать начала, пока я пытался придумать, как решить проблему. В итоге не придумал ничего лучше, чем снести свою реализацию и на винде тыкаться в wininet, а на гнутой в curl.
Snusmumriken
В обеих можно в курл, по крайней мере на текущий момент.
Snusmumriken
Подрубаешь такой дллку с курлом и радуешься. И с экзкшником рядом кладёшь.
Snusmumriken
А у луёв ваще лайфхак: ffi.
Igor
Ну вот как раз от лишних библ в папке с исполняемым я и пытаюсь избавиться
Snusmumriken
А зочем? ))
Igor
У меня там лежит только один файл самой программы и zlib, функции которого самому ну вообще не в кайф реализовывать
Igor
А зочем? ))
Ну вот заскок такой, терпеть не могу кучу библиотек в папке с исполняемым, тем более если от них можно избавиться относительно простым способом
Snusmumriken
Написав два интерфейса к одному и тому же, вместо одного? Хм. Я прост предпочитаю использовать одно и то же на разных ОС, если есть возможность, чтобы одновременно минимально совокупляться, и повысить надёжность за счёт других разработчиков которые шарят в теме явно лучше меня ))
Igor
Обидно, что winapi не предоставляет чего-то для сжатия deflate, gzip, можно было бы и z не использовать под виндой