Nikolai
а, блин, а я кажись понял вариант еще
Nikolai
Когда мульду меняют, чистую привозят, ставят с одной стороны ниши, подбирают вторую с другой и уезжают, то есть, она чередуется сверху-снизу
Nikolai
И судя по тому, что она сегодня была пустая, сегодня ее как раз пытались поменять
Vlad
Это какой-то аналог LOVE для D?
Snusmumriken
Ну типо.
Snusmumriken
Правда, надо ещё разделить треды на "основной", "для графики и всего такого" и "для звука", чтобы всё вот это вот не останавливалось при перемещении окна.
fgntfg
Отличный способ расслабиться после тяжёлого трудового дня - посидеть в тепле с бокальчиком вина, поиграть и поорать.
Snusmumriken
Великолепно
Snusmumriken
Я где-то видел игрушку на телефон про бегущую лисичку, управлять которой полагается ритмичными ударами пальцев по спинке телефона.
Криками тоже можно.
Snusmumriken
Хоба, не-робот вступил во флудилку, очень подозрительно
Anonymous
ну всм подозрительно
Anonymous
нельзя?
Anonymous
могу выйти
Snusmumriken
Можно ))
Anonymous
ну вот
Snusmumriken
Тут даже есть несколько роботов, которые иногда пишут рандомные фразы.
Anonymous
до чего техника дошла
Snusmumriken
Только сегодня удалял Amos Freeman'а с
your text is event.text
Это всё что он написал.
Hello, World! 🎄
Snusmumriken
кота
А кинешь мне конфиг nginx?
Snusmumriken
Вместо ngx.say лучше использовать ngx.print.
кота
Я просто в вебне ни куку, смущала в каждом примере директива content_by_lua
Snusmumriken
Это просто опенрести-директива.
Означает "после приёма заголовков — сгенерировать контент куском луёвого кода, и выдать в ответ то что будет там ngx.say/print'нуто".
Snusmumriken
Ну и есть директивы типа content_by_lua_file 'html/storage/storage.lua';, которые аналогичны всяким
http://stuffюсщь/file.php, только луёвый скрипт генерит хтмлу, или что там ожидается.
кота
Трижды пытался осилить nginx essentials, от всего этого голова кругом
Каждется чтобы все эти хедеры и директивы понимать нужно три вышки закончить, знать досконально tcp/ip стэк и сертификат цыски иметь
Snusmumriken
Так-то если прописать mime-тип, можно хоть бинари посылать, типа
ngx.header['Content-Type'] = "application/ogg"
local file = io.open("sound.ogg", "rb")
ngx.print(file:read("*all"))
file:close()
Отправит файлик с музоном, и он будет воспроизведён в браузере.
Snusmumriken
кота
кота
Садишься и куришь ietf от корки до корки да
Snusmumriken
В целом, достаточно просто написать несколько приложений, попутно изучая всё подряд.
Твой главный друг — вот эта страничка википедии
https://ru.wikipedia.org/wiki/Список_заголовков_HTTP
Snusmumriken
Она рассказывает больше о хттп, чем тебе хочется. Как раз за счёт гуглинга сопутствующей конкретным заголовкам информации.
Snusmumriken
Например, заголовок Range, и сопутствующая статья по частичным GET, или Content-Disposition и соответствующие множественные запрос-ответы (в один запрос можно запихнуть и хтмлу, и жаваскрипт, и картинки и всё остальное без склеивания).
Snusmumriken
Connection — тоже отличный заголовок для понимания непрерывающихся сессий с кучей запросов через один коннект.
Snusmumriken
Вот с этими заголовками, например, есть одна проблема: они работают только в хттп, у хттпс другая схема: установка ssl-соединения через кастомный протокол с авторизацией, и дальнейший зашифрованный для этой самой прокси поток байт через ещё один слой ssl уже с клиентом.
Snusmumriken
Но я просто бекендщик, с вёрсткой ни бум-бум, знаю как работает браузер только если управлять им изнутри через CEF (общая архитектура хромиума), и схему его коннектов, как раз тот TCP-HTTP-стек.
Snusmumriken
Ой, эта статья — вторая в цикле https://ru.wikipedia.org/wiki/Список_кодов_состояния_HTTP для понимания хттп, отлично дополняет первую.
Но в целом, тут материалов на пару месяцев вдумчивого баловства с openresty, типа сидишь такой и организуешь сервер с докачкой файлов на луях и автоопределением mime-типов.
Snusmumriken
Запросы удобно тестить через Postman, кста. Курл тоже хорош, но не так удобен в ручном виде.
кота
Я наверн пока примерчики поковыряю глядя в апишку луа модуля
кота
Ага, там все равно без стопаря и http не разберешься
кота
Snusmumriken
Есть пара фиговин, на которые стоит обратить внимание.
1. Функция ngx.req.read_body() ждёт пока клиент не отправит тело полностью. До этого момента, тело сообщения может прийти только частично, но если клиент пересылает большой файл — его можно уже начать писать/обрабатывать, если это поток.
2. Если тело большое, оно может быть в файле. И есть две функции для его чтения:
ngx.req.get_body_file() и ngx.req.get_body_data(), если тело не нашлось в одной, оно может быть в другой функции.
3. ngx.print() предпочтительнее чем ngx.say(): второе искажает бинарные данные, производя дополнительные кодирования, преобразования \r и \n в \r\n, и т.д, а первое отправляет как есть, на манер io.open(..., "wb"):write(...)
Snusmumriken
4. Body может состоять из нескольких сущностей, и это желательно проверять на заголовок Content-Disposition. Но тут уже для хардкорщиков, довольно редкая ситуация.
Snusmumriken
Хинт для нубасов: если сервер выставил mime-type для любого контента, то браузер попытается его обработать (нарисовать картинку, вывести хтмлу и т.д.), если там binary/octet-stream — будет качать как файл даже если это хттп или json.
кота
Snusmumriken
Второй хинт: генерить хтмлу удобно в шаблонах.
https://github.com/bungle/lua-resty-template
Snusmumriken
Типа такой пишешь смесь из хтмлы и кода, пропихиваешь в неё табличку с данными и получаешь хтмлу.
Snusmumriken
Не, вообще не сложно.
кота
Ну и как связать фронт кнопки с бэкендом
Snusmumriken
Делаешь директиву для общения с апи, передаёшь всякую фигню по параметрам, типа
Snusmumriken
В самой хтмле — можешь обычную формочку сделать на этот урл, можешь аяксом, функция простейшая даже на чистом жс, можешь ещё сильнее упростить жизнь с jquery.
Snusmumriken
Повесить на кнопку — у формочек есть кнопка, являющаяся её отправкой, по умолчанию — первая же, но можно настроить.
У аякса — делаешь функцию в жаваскрипте, у кнопки прописываешь опцию click="myfunction", выгребая данные с полей по id, формируя json или просто запрос на урл с опциями ?mykey=foo.
Snusmumriken
С формочкой, например, можно так:
Snusmumriken
Первое — направит на определённый урл, редирект на луёвой части нужен чтобы вернуть новую, обновлённую страничку, как "отправить и нажать f5"
Snusmumriken
А не важно.
кота
Рили?
Snusmumriken
Как обработаешь так и будет.
Урл должен быть просто по адресу /note?..., дальше как хочешь так и обрабатываешь.
Snusmumriken
Когда мозги разработаются пробами и ошибками, всё станет гораздо проще, инфа 100%.
Snusmumriken
Я тупо сидел с опенрестей и делал тестовые странички с формочками и аяксами, читал что приходит на сервер, думал что с этим делать, смотрел как работают нгинксовые функции и так далее.
кота
А как ты попадаешь на /note?...
Я понимаю что в локейшен блоке можно прописать статические пути, отдавать папки/файлы по запросам к ним
А вот эти знаки вопросика и кей-вэлью, как они конкретно к тебя формируются?
кота
Например там в гугле если запрос пишешь то оно формируется из текста в поле поисковом, насколько я понимаю
Snusmumriken
<form action="/note" method="post">
— отправить эту формочку на /note, и получить оттуда новое тело страницы.
Snusmumriken
Snusmumriken
Каждая нажатая кнопка запускает скрипт, повешенный на onChange поля с аяксом до сервера гугла. Аякс возвращает предполагаемую фигню, которая встраивается в хтмлу тем же скриптом на success. На ентер или клик — переход на страницу поиска по данной фигне.
кота
А такой вопрос наивный, можно ли на голом штмл динамику делать без js?
Snusmumriken
Нет.
кота
Очень жаль
Snusmumriken
Иногда ты и верстать нормально не можешь без жаваскрипта.
Snusmumriken
Например, у тебя есть поле которое должно быть высотой в страницу, при любом масштабе, и ещё чтобы под этим полем влезал плавающий футер. Тебе нужен жаваскрипт.
Snusmumriken
Я сам был в ужасе.
кота
Ужас
Snusmumriken
Поэтому я и не полез в вёрстку ))
Snusmumriken
Я могу сделать веб-приложение, но выглядеть оно будет как торчащие кнопки ))
кота
А так в альтернативной реальности снус - фронтендер, да?)
Snusmumriken
Надеюсь что нет
Snusmumriken
Было бы жаль этого снуса
кота
Перефразирую
А хотелось?