vvzvlad
ну на символ есть, вроде.
Snusmumriken
Карочи, смотри.
1. Поток приёма - постоянно, в бесконечном цикле считывает фигню с девайса и от главного потока.
2. Если нам начали что-то передавать - считываем (до символа-терминатора), занимаемся исключительно считыванием.
3. Если пришла команда на отправку - отправляем. Потом дальше считываем.
Хм, это просто приёмо-передатчик в потоке.
vvzvlad
надо попробовать, да. боюсь что проц нагрузит постоянное кручение в потоке с нулевым таймаутом
Snusmumriken
Не нулевой таймаут, влепи там слип на 0.05с, если ничего не пришло.
Если пришло - не надо слипать, надо принимать.
Snusmumriken
У меня есть что-то похожее, с таймаутом и неблокирующим сокетом. Слип если ничего не приняли, и отправка ещё одного запроса. Но это - потому что UDP и не факт что сообщение дойдёт.
Snusmumriken
Вот тебе нужно почти то же самое, только вместо повторной отправки сообщения - анализ приёма от основного потока, мало ли ему надо что-то отправить.
Слип если ничего не происходит - присутствует. Грузит не особо, в общем.
P.S. Это - обнаружение устройств в локалке по ssdp.
Anonymous
короче
Anonymous
если кому понадобится
Anonymous
передать в процесс в STDIN что-то и получить из STDOUT
Anonymous
https://pastebin.com/a5Z3TnBd то вот :)
Snusmumriken
Ну, мне не пофиг, поэтому я делаю ffi-биндинги.
Snusmumriken
Snusmumriken
Ага. Ну, ты можешь углядеть, что тут есть подгрузка динамической либы в зависимости от оси/битности.
Snusmumriken
Потому что могу.
Почему нет?
Оверхед нулевой, возможность инициализации всяких сишных буферов/структур для функций - присутствует, и всё такое.
Кроссплатформа - аналогично.
Перекомпиляций виртуальной машины - не нужно.
Писать сишную либу-оболочку тоже не нужно.
Snusmumriken
Боюсь что нулевой : )
Ну, аналогичный вызову обычной луа-функции.
Snusmumriken
Нет этой зависимости.
Luajit содержит ffi.
Snusmumriken
Да, есть необходимость использования luajit. Только одна виртуальная машина, на которой оно работает.
Ну, то есть про ванильную lua/5.2/5.3 стоит забыть.
Правда, я и так пишу исключительно на luajit, поэтому пофигу.
И она используется в 90% случаев на всём высоконагруженном.
Snusmumriken
То есть, openresty/nginx/tarantool = luajit.
Snusmumriken
Обычные биндинги? Это какие?
Snusmumriken
Я могу написать динамическую либу, которая реализует часть функционала, или цепляет другую динамическую библиотеку и работает мостом. Вот это - подключается к любой версии lua.
Но тут меня бесит одна маленькая фиговинка:
Необходимость держать кучу версий сразу двух либ: х32/х64 и unix/win, цепляемой либы и моста, вместо одной.
Snusmumriken
Во, ещё проблема в версии lua, к которой оно цепляется. У 5.1/5.2/5.3 могут быть свои специфичные вещи.
Карочи, получается безумие с количеством биндингов.
Проще написать для ffi, и держать только три(четыре) версии динамической либы.
Snusmumriken
Я считаю что встраивать что-то кроме luajit в новые проекты - плохо.
И только нет майка полла, который бы двигал jit.
Snusmumriken
Когда у меня есть выбор: использовать новую версию, или использовать старую, которая быстрее в 50-300 раз и имеет возможность дописывать виртуалку прямо в процессе исполнения скрипта - я безоговорочно выберу второе.
Snusmumriken
Для iconv : )
И мне не понравилось.
mva
mva
более того, туда подтягиваются вкусные фичи из 5.2/5.3
Snusmumriken
вообще, luajit не старая
Ну типа Айдар считает, что luajit = python 2.7, и начинать новые версии с jit - всё равно что начинать новые проекты на 2.7.
Snusmumriken
Делать - легко. Очень. Экстремально легко.
Но очень муторно, если ты хочешь настоящей кроссплатформы.
mva
//luajit = pypy
mva
а pypy3 пока бета
mva
если вообще не альфа :)
Snusmumriken
Правда, pypy всё равно сливает луям по скорости и оверхеду )))
Но это уже моё "кекеке".
mva
ну, дык
mva
то питон
mva
он не может не сливать lua по оверхеду
mva
потому что (я уже устал цитировать Мэттью Уайлда):
Python trying to give you as MUCH as possible,
while Lua tries to give you as LESS as possible.
Snusmumriken
За милую душу:
https://luapower.com/
Кстати, в love2d тоже luajit.
mva
// love2d зря зовётся 2d, кстати
mva
на нём целый пучок 3d есть :)
Snusmumriken
на нём целый пучок 3d есть :)
Нет, не зря, ибо этот пучок 3d - пользовательские рукоблудия.
А так - добавить лишнее измерение можно в произвольный рендер : )
Тот факт что основные инструменты заточены под 2d.
mva
да на jit (FFI) даже пилить особо не надо. Сишные биндинги тупо копируй, и немного Lua приправляй. Вот тебе и биндинги
Snusmumriken
Snusmumriken
love2d называется : )
Его можно использовать как библиотеку.
Snusmumriken
Snusmumriken
Ага.
Snusmumriken
Без проблем.
vvzvlad
да, прочитать-записать получилось, с таймаутом в 1мс
Snusmumriken
vvzvlad
вроде работает. посмотрим на продакшене на задержку реальную еще.
vvzvlad
а то! спасибо)
mva
кстати, а куда из love хрюшка делась? :)
mva
а вселенная стабильна?
Snusmumriken
Вторая - да. Третья - ну такое. Но зато третья х64 не имеет ограничений на память.
У luajit есть свой набор недостатков:
1. Вторая - жрёт максимум 2-4гб оперативки, больше - давится. Третья - не давится, но сейчас не особо стабильная.
2. Хеширование строк - странное. Если есть куча почти одинаковых (несколько миллионов) - это плохо
3. Туповатый сборщик мусора, но это и у ванильной, это стоит учитывать.
mva
> x64
mva
Snusmumriken
Ну тогда тебе вообще пофиг : )
Вторую бету - и вперёд.
mva
и это не то, что ты думаешь, между прочим
mva
x86_32, x86_64 и x86_x32 это три разные вещи, например
mva
ну, я иногда, под настроение, троллю авторов
Snusmumriken
Jabber - считай что протокол (XMPP).
Телега - продукт с закрытым кодом + набор сервисов.
Это просто разные вещи, их нельзя просто так сравнивать.
Snusmumriken
Как пользователю телеги, на протокол - абсолютно пофигу. Разве что за исключением бот-апи, но в плане формата - они почти идентичны (ну там, json вместо xml, например). Протоколы у них почти одинаковые. Но вот только телега - централизованная херня, которая, тем не менее, предоставляет хранилище для текста/картинок/гифок/звучков, а жаббер - децентрализованная фиговина, где хостишь или ты сам, или твой друган/иная организация, но зато не заблокируют.
Почитай эту фигню: https://habrahabr.ru/post/272937/
Snusmumriken
Я думаю, что ты - уран.
Хайп вокруг телеги потому, что есть возможность пересылать мессаги сомнительного содержимого и КООРДИНИРОВАТЬ ТЕРРОРИСТОВ, да так, что никто не перехватит. А Дуров отказывается выдавать ключи от сейфа, наверное, он тоже координирует.
А ещё, телега миленькая, маленькая, быстренькая, лёгенькая и жрёт мало траффика, с ботами которые могут постить в группы и ещё кучей фич.
Даже html+js-игры тянет, с ботами : )
Ну, то есть почти то же самое что жаба, но в чуть более милой форме, плюс лучше рекламировалась, плюс все накладные расходы берёт контора.
Snusmumriken
А если твой провайдер читает все исходящие сообщения?
А https ломается "человеком посередине" и ещё несколькими атаками.
Телега, за счёт закрытости шифрования - не даёт такого.
Snusmumriken
tls/ssl ломаются человеком посередине и ещё несколькими атаками.
В телеге - просто никто не знает протокола, поэтому ещё некоторое время не смогут сломать )))
Хотя можно не доверять своему серверу, но это извращение.
Anonymous
Anonymous
Он построен на костылях и сомнительных криптографических решениях, в отличие от jabber, который построен на расширяемой архитектуре и протоколе tls, испытанным годами
Snusmumriken
Anonymous
Я вот запилил простенький протокол для проксирования jabber и наслаждаюсь. Приложение ест батарейку ещё меньше, чем телеграм и тупит ещё меньше.
Anonymous
Тут есть стикеры. Думаю, поэтому.
Snusmumriken
Вот, точно!
Snusmumriken
Anonymous
К сожалению, да.
Snusmumriken
Snusmumriken
Бли-и-и-ин, стикеры ))
Совсем забыл про них.
Anonymous
А ещё стикеры люто жрут трафик, но всем пофиг.
Snusmumriken
Ну, это минимально отличается от пересылки смешных картинок.
mva
Я думаю, что ты - уран.
Хайп вокруг телеги потому, что есть возможность пересылать мессаги сомнительного содержимого и КООРДИНИРОВАТЬ ТЕРРОРИСТОВ, да так, что никто не перехватит. А Дуров отказывается выдавать ключи от сейфа, наверное, он тоже координирует.
А ещё, телега миленькая, маленькая, быстренькая, лёгенькая и жрёт мало траффика, с ботами которые могут постить в группы и ещё кучей фич.
Даже html+js-игры тянет, с ботами : )
Ну, то есть почти то же самое что жаба, но в чуть более милой форме, плюс лучше рекламировалась, плюс все накладные расходы берёт контора.
> маленькая
ХАХАХАХАХАХАХАХА
> мало траффика
ХАХАХАХАХАХАХАХАХАХАХАХАХАА
Snusmumriken
Fuck Fuel Economy )))
Snusmumriken
Посмотри на гугл-хром, который десятью вкладками выжирает 4-6гб.
На микрософт-офис, который тоже потребляет раз в десять чем нужно.
mva
всего лишь за 0.2