@ProLua

Страница 153 из 307
Vadim
08.09.2017
13:04:31
ШТОА

а для кого же мы с @moteus пилили Lua-cURL?!?!?

Snusmumriken
08.09.2017
13:05:06
ШТОА
Они распространены больше всех. Курл - узкооспециализирован для загрузки файлов. Не для "произвольной сетевой связи"

Vadim
08.09.2017
13:05:18
нет

Google
Vadim
08.09.2017
13:05:22
для загрузки URL

он умеет разные протоколы

и он не слишком низкоуровневый в отличие от работы с голыми сокетами

Snusmumriken
08.09.2017
13:05:58
Курл молодец, это да. Но специализация - не приём-передача а приём. Причём, как правило - файлы.

Aydar
08.09.2017
13:06:03
Я вижу вам только тему дай и сразу срач

Рома
08.09.2017
13:06:21
В resty сокеты от nginx, там все специальное неблокирующее. Ещё пример luvit, где все асинхронное и luasec тоже не катит. Да я не о том, никогда не понимал, вместо нескольких строчек кода для запроса на любой сервис люди тянут гемы, роки, либы, работают почему-то не напрямую с сервисами, а через эти либы

Alexey
08.09.2017
13:06:22
там есть curl_send/curl_recv Я думаю добавить в биндинг

Snusmumriken
08.09.2017
13:06:49
Почему luasec не катит в "асинхронном" luivit?

Рома
08.09.2017
13:06:59
потому что он синхронный?

Alexey
08.09.2017
13:07:20
тогда можно будет, например, устанавливать TLS соединение с помощью cURL А далее читать и писать поток байт

Snusmumriken
08.09.2017
13:08:06
потому что он синхронный?
Там такая же асинхронность как у ноды. То есть, как бы асинхронность, но на самом деле нет. Это первое. Второе - luasec можно сделать асинхронным без особых проблем : )

Alexey
08.09.2017
13:09:20
luvit реализовал tls сам. Ну и асинхронность там настоящая :)

Snusmumriken
08.09.2017
13:10:02
Настоящая многопоточка? Во, а какая модель памяти? Отдельные виртуальные машины под тред?

Google
Рома
08.09.2017
13:11:27
Я пока далек от низкоуровневого, надеюсь, скоро буду шарить. Как мне кажется, для синхронного сокета нужно просто сделать запрос. А для асинхронного нужно сказать какой-то системной штуке, вроде livub, что я хочу сделать запрос, а ты меня потом дернешь. И когда запрос прошел, libuv открывает определенное вхождение виртуальной машины, как-то так

Alexey
08.09.2017
13:11:51
При чем тут многопоточность? Но libuv использует пул потоков и очереди, но клиентский код однопоточный, что не мешает ему быть асинхронным

Snusmumriken
08.09.2017
13:12:15
Пул потоков - каких? Потоки - это что, в данном случае?

Alexey
08.09.2017
13:12:50
https://github.com/libuv/libuv/blob/v1.x/src/threadpool.c

Philipp
08.09.2017
13:12:53
а для кого же мы с @moteus пилили Lua-cURL?!?!?
Я вот выбирал-выбирал между вашим и луасокетом, и выбрал луасокет

Там документация лучше))

Vadim
08.09.2017
13:13:06
сочувствую :)

Philipp
08.09.2017
13:13:22
сочувствую :)
И получилось всё замечательно, и наверняка работает везде)))

Alexey
08.09.2017
13:13:55
Под windows например используются порты завершения

не надо путать асинхронность и многопоточность. Это разные вещи

Рома
08.09.2017
13:16:09
Никогда не понимал велосипедостроителей.
Чувак, есть за и против. За: вроде как меньше кода писать. Против: эта либа может измениться в любой момент, потом переписывать, это черный ящик, запросто может работать не как ожидаешь, делать что-то не как хочешь, в крайнем случае может отвалиться. И если можно вместо этого самому написать простой запрос, то никаких преимуществ.

Snusmumriken
08.09.2017
13:17:22
Потому что я знаю довольно много реализаций параллелизма. 1. Нода - бесконечный цикл с проходом по списку активных событий и дёрганье колбеков. Асинхронность там достигается нулевым таймаутом на все потенциально блокирующие действия, и переход к следующему процессу, пока всё таки что-то не придёт в буфер. Пример подобной асинхронщины с luasocket от самого Роберто Иерузалимски: https://www.lua.org/pil/9.4.html Ну, труЪ-многопоточкой тут не пахнет, просто как бы несколько дел одновременно. 2. Треды - как отдельные виртуальные машины под каждый процесс, тут можно хоть блокировать хоть не блокировать - всё одно. Память, как правило, разделённая. Я предпочитаю такие треды. У меня где-то есть аналог ноды многопоточный, с той же сутью (lanes).

Так вот. Сокеты можно сделать асинхронными с комплектом: "оболочка + колбеки на входящую лабуду". Это обычный подход. Луасек - туда же.

Рома
08.09.2017
13:18:38
Ага, велосипедостроитель.
Просто не работал ты на legacy проектах, с кучей зависимостей на устаревшие версии либ, где ничего нельзя обновлять, ибо все отвалится, а менять нужно, и приходиться монкипатчить это старье.

Alexey
08.09.2017
13:27:13
node.js использет libuv для IO В общем да, но не совсем. Там весь IO происходит в отдельных потоках. Например в Windows это реализовано на уровне OS, и далее по завершению операции результат передается в клиентский поток. Есть другая модель когда клентский поток оповещается только о том что необходимо произвесть операцию. На счет многопоточности. Мне нравится модел share nothing. Просто запускаешь поток (с начальными параметрами) и далее использешь некий канал связи. Lanes делает примерно тоже, только проблема что его каналы нельзя привязать ни к какой модели IO, крому как polling

Snusmumriken
08.09.2017
13:50:56
В ноде нет ОС-потоков :< Это легко проверяется диспетчером задач, с отображением активных потоков. Нода однопоточна. IO там происходит в том же потоке что и основной код. Просто колбеки. Посмотри пример от роберто, который в моём посте. Там корутины, но и без корутин можно всё то же самое.

Google
Snusmumriken
08.09.2017
13:53:22
https://habrahabr.ru/post/150788/ Судя по статье, многопоточность - только в отдельном модуле cluster, который, как я понимаю, автоматически запускает несколько копий ноды и выдаёт им задачки. Вне этого - однопоточка с эвентлупом.

Но сокеты умеют быть неблокирующими => ничто не мешает использовать luasocket/luasec в luvit'е. Что и требовалось доказать.

Snusmumriken
08.09.2017
13:59:59
как и Lua
Ну, у меня есть lanes : )

Vadim
08.09.2017
14:02:04
а у них - cluster ;)

Aydar
08.09.2017
14:04:56
Можно ли в lua сделать gui если нет многопоточности?

Vadim
08.09.2017
14:06:59
не так

в lua нет многопоточности ИЗ КОРОБКИ

как нет и gui ИЗ КОРОБКИ

Aydar
08.09.2017
14:07:23
А то есть из c можно?

Vadim
08.09.2017
14:07:28
сама суть Lua в том, чтобы было только самое необходимое

Vadim
08.09.2017
14:07:52
поэтому ты вполне можешь прикрутить многопоточность любым из доступных способов и делать гуй в отдельном потоке

Dika
08.09.2017
14:08:10
а у них - cluster ;)
есть еще это https://github.com/audreyt/node-webworker-threads

Aydar
08.09.2017
14:08:28
Была идея сделать биндинг к nuklear

Saphire
08.09.2017
14:08:34
Вместо того, что бы делать нормальный гуй через QT, они тупо обещали браузер...

Alexey
08.09.2017
14:14:21
ОС выполняет ввод.вывод в своих потоках. (там где это поддерживается)

Можно ли в lua сделать gui если нет многопоточности?
да, Обычно GUI предоставляют свой собственный цикл событий

Я использовал IUP

Google
Snusmumriken
08.09.2017
14:44:47
Вот тут смотрим гуишку. Она, правда, хочет кучи либ, но зато много что умеет: https://luapower.com/

Есть ещё биндинги qt/tcl.

Aydar
08.09.2017
14:47:18
Есть ещё биндинги qt/tcl.
tcl tk старо выглядит

Snusmumriken
08.09.2017
14:48:40
А что ты хочешь? : ) Если очень хочется - можно в opengl/sdl замутить ТАКОЙ гуй, который и не снился никому : )

Чай
08.09.2017
14:49:13
Сейчас Electron жирно. Qt ругать за жирноту уже не в моде.

Aydar
08.09.2017
14:49:39
Admin
ERROR: S client not available

Dika
08.09.2017
14:49:48
Чай
08.09.2017
14:50:05
*для электрона Очень много.

Dika
08.09.2017
14:50:24
Aydar
08.09.2017
14:50:33
*для электрона Очень много.
Я тоже писал но в конечном итоге вес программы все убивает

А что ты хочешь? : ) Если очень хочется - можно в opengl/sdl замутить ТАКОЙ гуй, который и не снился никому : )
Как думаешь лучше перенести только нужные функции или готовый биндинг к sdl использовать?

Snusmumriken
08.09.2017
14:53:47
Как думаешь лучше перенести только нужные функции или готовый биндинг к sdl использовать?
Можно взять love2d и заюзать какую-нибудь пользовательскую графическую либу. Всегда так делаю : )

Snusmumriken
08.09.2017
14:56:27
Смотри какой пафосный https://github.com/SSYGEN/yaoui

Aydar
08.09.2017
14:57:06
Vadim
08.09.2017
14:57:15
https://github.com/keharriso/love-nuklear
так это ж гуй для LÖVE, а не для ОС

Snusmumriken
08.09.2017
14:57:55
так это ж гуй для LÖVE, а не для ОС
> Если очень хочется - можно в opengl/sdl замутить ТАКОЙ гуй, который и не снился никому : ) > Я примерно и собирался

Google
Рома
08.09.2017
14:59:17
Кстати, интересный момент! Слак - удивительно тяжелый мессенджер, как раз разбивается на несколько процессов, каждый проект - отдельный процесс, главный процесс и ещё один процесс. Благодаря сему гениальному разбиению, мессенджер способен сжирать 1.5гб оперативки. А вдруг это значит, что много процессов это плохо? И нодин подход с циклом в одном потоке более выгодный?

Vadim
08.09.2017
15:00:17
на самом деле - говно полностью грузить весь электрон в каждом потоке

если держать в потоках только нужные данные, то можно жрать меньше оперативки

зато если упадёт один поток - остальные могут остаться жить

Рома
08.09.2017
15:02:49
Вон у плазмы один поток и она не падает!

Aydar
08.09.2017
15:06:50
если держать в потоках только нужные данные, то можно жрать меньше оперативки
У меня меньше 2 гб оперативки хоть что делай но электрон не юзабельный

Vadim
08.09.2017
15:07:30
ну, это конкретно электрон

а я про модель многопоточность vs однопоточность

:)

Aydar
08.09.2017
15:08:14
Тут ветка про js и многопоточность?

Vadim
08.09.2017
15:08:53
вообще, тут чатик про Lua :)

Aydar
08.09.2017
15:09:28
А если я вдруг соберусь сделать gui на sdl его выкладывать? Или вы qt довольны?

А то мало ли вы тут все крутые. Для вас все либы велосипеды

Vadim
08.09.2017
15:19:11
как по мне: 1) кути норм 2) делать гуй для скриптов на интерпретируемых языках - кака 3) использовать sdl для ОС-гуя, а не для игорей - СТРАННО

Vadim
08.09.2017
15:20:59
его придумали для облегчения портирования с венды ?

Aydar
08.09.2017
15:22:06
Vadim
08.09.2017
15:22:34
кроссплатформенность - это когда сразу кроссплатформенно

те же кути

Страница 153 из 307