кота
кота
еще и малина валяется без дел
Snusmumriken
Берёшь такой бесхозную мобилу, подрубаешь к ней usb-hdd, и пишешь на termux'е с luajit'ом простенький луа-веб-сервер для файлообмена, можно с FTP/TFTP.
кота
Гениально
Snusmumriken
Самое смешное что это работает.
Snusmumriken
Надо кстати чекнуть, можно ли на мобилу с термуксом поставить openresty, ваще бомба.
кота
Можно поставить хттп вебсервер снуса и хостить одностраничники
кота
или нельзя, я хз
Snusmumriken
Можно
кота
смотрел наискось твой пастбин))
кота
Можно
крута
Snusmumriken
Но у меня не под одностранички, а под приложули. Ты такой луями формируешь хттп и выплёвываешь. Или такой смотришь на путь хоста, видишь что это какая-нибудь папка, и выплёвываешь уже файл.
Snusmumriken
Для генерации страничек крайне рекомендую ковырнуть https://github.com/bungle/lua-resty-template Там всё настолько изишно, что прям каеф.
кота
Кстати, как там дела с враппером для рейлиб...
кота
Алсо Может ли быть дело в неэкранизиованных бекслешах? 🤔
кота
Да
кота
В них и дело
Snusmumriken
Гляну обязательно
Вот настолько изично
кота
Красиво, динамический хтмл на луа
кота
Или как это правильно назвать
кота
Не уверен
Snusmumriken
Ну типо луёвые шаблончики. Можно лезть в БД и выплёвывать странички в соответствии с данными из БД. В первую очередь для этого.
Snusmumriken
Ну и там всякие проверки: пользователь не зареган? Редиректнем его туда-то, а то и вовсе выплюнем хтмл регистрации вместо того что он ожидал, а после регистрации просто обновим страничку с новыми куками/сессией, и т.д, и он получит уже то что хочет. Во всяких контактиках, например, то что ссылка на странице стабильно примерно одинаковая (например, залез ты в музон и поискал что-то) — за счёт доп-параметров запроса и/или за счёт вот такой вот генерации.
B
кто напальцах пояснит за макросы в плюсах?
кота
Алсо Может ли быть дело в неэкранизиованных бекслешах? 🤔
вот че echo $f дает не смотрите что у меня двм люка, я свою bspwm сломал недавно утром
Snusmumriken
кто напальцах пояснит за макросы в плюсах?
А шо? Это просто команды для препроцессора: заменить все такие-то вхождения с того-то на это вот.
Snusmumriken
Можно сделать inline-like, можно function-like, можно многострочные, можно всяко-разные. Можно определять ими всякие переменные, можно делать алиасы типов/классов и всякого такого. Можно впихивать/убирать логику в зависимости от наличия или отсутствия какого-то дефайна/опции компилятора.
кота
А шо? Это просто команды для препроцессора: заменить все такие-то вхождения с того-то на это вот.
Тру Если макрос с агрументами, то аргументы подставляются в заменяющий текст и он расширяется (поставляется заменяющий текст вместо идентификатора и список args) А без аргументов он обрабатывается как символическая константа
Snusmumriken
А вот макрос который 1. Многострочный function-like 2. Умеет лезть в неизвестную структуру и присваивать неизвестному полю неизвестное значение 3. Ретурнит из функции, в которой его вызвали ))
B
void function(){ #ifdef ABBA std::magic; #endif #ifndef ABBA std::magic; #endif } но нужно будет в таком случает пересобирать натолкнулся на такой пример кода
кота
ета же условная компиляция
Snusmumriken
А вот макрос который 1. Многострочный function-like 2. Умеет лезть в неизвестную структуру и присваивать неизвестному полю неизвестное значение 3. Ретурнит из функции, в которой его вызвали ))
Используется например так. Прошу заметить последний аргумент, это просто x или y, и оно просто подставляется в макрос как поле данной структуры.
Snusmumriken
void function(){ #ifdef ABBA std::magic; #endif #ifndef ABBA std::magic; #endif } но нужно будет в таком случает пересобирать натолкнулся на такой пример кода
Это и есть "Можно впихивать/убирать логику в зависимости от наличия или отсутствия какого-то дефайна/опции компилятора". Если такой дефайн был определён — значит делаем одно, если нет — другое. В зависимости от этого дефайна, исходный код приложения может хоть полностью отличаться.
Snusmumriken
Карочи, макросы — это те же шаблоны с условиями. Сначала из шаблона с макросами и разными кусками сорцов (например, для разных ОС) делается исходный код (просто обрабатывая каждый макрос, производя замены/добавления/удаления), а потом из того что получилось делается приложение. Всё.
кота
вот че echo $f дает не смотрите что у меня двм люка, я свою bspwm сломал недавно утром
ОХ ЖОПА ТАМ ЖЕ ПРОБЕЛЫ В НАЗВАНИЯХ ПАПОК А он как \пробел отображаются в stdout.......
кота
Типо 1037-Волинська\ ОБЛ/
кота
НУ КТО так делает
кота
кота
Типо 1037-Волинська\ ОБЛ/
и если их сунуть в stdin то он думает что это перенос строки.....
кота
Snusmumriken
void function(){ #ifdef ABBA std::magic; #endif #ifndef ABBA std::magic; #endif } но нужно будет в таком случает пересобирать натолкнулся на такой пример кода
Например, вот. В случае если определены флаги компилятора, мол "мы на венде" — мы инклюдим одни библиотеки, а если мы как бы не на венде — мы считаем что тут сборка для линукса, и делаем нечто совсем другое. На выходе — функция lua_sleep, с совершенно одинаковым интерфейсом в обоих случаях. Внутри программы уже можно вызывать её, и не важно на какой мы в итоге ОС: процедуры будут разными, а суть функции и манера использования — одна и та же.
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 не использовать под виндой
Igor
Написав два интерфейса к одному и тому же, вместо одного? Хм. Я прост предпочитаю использовать одно и то же на разных ОС, если есть возможность, чтобы одновременно минимально совокупляться, и повысить надёжность за счёт других разработчиков которые шарят в теме явно лучше меня ))
Ну мне просто удовольствие доставляет познание новых реализаций того же HTTP, мне нравится одновременно с curl и wininet работать. Ну и получается так, что один заскок на счёт минимального количества бинарей, сочитается со вторым, на любовь к изучению чего-то новенького за счёт внедрения в уже существующую программу)