Anonymous
Anonymous
в первой строке 4 таба, во второй три
Snusmumriken
Ага. Вот тот код который я скопипастил в телеграмм такой красивый и в том же виде - потому что пробелы.
Изначально, табуляция сделана для форматирования колонок таблиц.
И ширина таба должна быть в соответствии с ПОЛНОЙ шириной колонки.
В колонке десять символов? Лепи таб на десять символов. Но только для этого документа, и для последующей печати.
Anonymous
что самое интересное
Anonymous
я заставлял какой-то опцией geany вести себя как nano
Anonymous
и выравнивание было корректное везде
Anonymous
но потом что-то пошло не так
Snusmumriken
Карочи, если тебе очень нужно красивое табличное выравнивание - ставь табы только до текста.
Snusmumriken
Вот тут - тоже пробелы. Если это копипастить - везде будет красиво. Но до текста на каждой строке - табы, чтобы нормально смотрелось у любого человека, использующего и табы и пробелы.
Snusmumriken
Табопользователь, при открытии скрипта, оставит как есть, пробелопользователь - заменит табы на желаемое количество пробелов. Все счастливы, ничего не поехало после процедуры.
Дзен - это способ усидеть на обоих стульях )))
(осторожно, гифка на 40мб:
https://vk.com/doc75175715_449282586?hash=19ad9890fb2a2eaf05&dl=2dd8c1470c37d89fd9)
Anonymous
ура, я нашёл, как сделать так, чтобы geany вёл себя как остальные редакторы
Anonymous
ㅤ
Как Vim или Emacs?
Anonymous
lf
Anonymous
da
Snusmumriken
fgntfg
Roman
Странно, но для луа уже видел обертку, скорее всего, их не одна существует.
Зачем, спрашивается, в стандалон луа проще читать доки вк и писать самому запросы.
В опенрести или ещё где, где свои сокеты, оно вообще работать не будет.
Тем временем, многие жалуются на нехватку либ и заброшенное состояние существующих.
Anonymous
с амазоном кто-нибудь работал?
Anonymous
не, с сервисами их злоебучими
Anonymous
они под одно API вроде сделаны
Anonymous
конкретно - Amazon Polly
Snusmumriken
Странно, но для луа уже видел обертку, скорее всего, их не одна существует.
Зачем, спрашивается, в стандалон луа проще читать доки вк и писать самому запросы.
В опенрести или ещё где, где свои сокеты, оно вообще работать не будет.
Тем временем, многие жалуются на нехватку либ и заброшенное состояние существующих.
Luasocket/luasec - считай что луа-стандарт для http/https.
Достаточно низкоуровневые чтобы можно было написать заменитель для любых других сокетов, влючая resty.
Если тебе нужна сетевая апишка - делай на нём, не прогадаешь.
mva
mva
ШТОА
mva
а для кого же мы с @moteus пилили Lua-cURL?!?!?
Snusmumriken
ШТОА
Они распространены больше всех.
Курл - узкооспециализирован для загрузки файлов.
Не для "произвольной сетевой связи"
mva
нет
mva
для загрузки URL
mva
он умеет разные протоколы
mva
и он не слишком низкоуровневый в отличие от работы с голыми сокетами
Snusmumriken
Курл молодец, это да. Но специализация - не приём-передача а приём. Причём, как правило - файлы.
Roman
В resty сокеты от nginx, там все специальное неблокирующее.
Ещё пример luvit, где все асинхронное и luasec тоже не катит.
Да я не о том, никогда не понимал, вместо нескольких строчек кода для запроса на любой сервис люди тянут гемы, роки, либы, работают почему-то не напрямую с сервисами, а через эти либы
Alexey
там есть curl_send/curl_recv
Я думаю добавить в биндинг
Snusmumriken
Почему luasec не катит в "асинхронном" luivit?
Roman
потому что он синхронный?
Alexey
тогда можно будет, например, устанавливать TLS соединение с помощью cURL
А далее читать и писать поток байт
Snusmumriken
потому что он синхронный?
Там такая же асинхронность как у ноды. То есть, как бы асинхронность, но на самом деле нет.
Это первое. Второе - luasec можно сделать асинхронным без особых проблем : )
Alexey
luvit реализовал tls сам.
Ну и асинхронность там настоящая :)
Snusmumriken
Настоящая многопоточка?
Во, а какая модель памяти? Отдельные виртуальные машины под тред?
Roman
Я пока далек от низкоуровневого, надеюсь, скоро буду шарить. Как мне кажется, для синхронного сокета нужно просто сделать запрос. А для асинхронного нужно сказать какой-то системной штуке, вроде livub, что я хочу сделать запрос, а ты меня потом дернешь. И когда запрос прошел, libuv открывает определенное вхождение виртуальной машины, как-то так
Alexey
При чем тут многопоточность?
Но libuv использует пул потоков и очереди,
но клиентский код однопоточный, что не мешает ему быть асинхронным
Snusmumriken
Пул потоков - каких?
Потоки - это что, в данном случае?
Alexey
https://github.com/libuv/libuv/blob/v1.x/src/threadpool.c
mva
сочувствую :)
Alexey
Под windows например используются порты завершения
Alexey
не надо путать асинхронность и многопоточность. Это разные вещи
Roman
Чувак, есть за и против. За: вроде как меньше кода писать. Против: эта либа может измениться в любой момент, потом переписывать, это черный ящик, запросто может работать не как ожидаешь, делать что-то не как хочешь, в крайнем случае может отвалиться. И если можно вместо этого самому написать простой запрос, то никаких преимуществ.
Snusmumriken
Потому что я знаю довольно много реализаций параллелизма.
1. Нода - бесконечный цикл с проходом по списку активных событий и дёрганье колбеков.
Асинхронность там достигается нулевым таймаутом на все потенциально блокирующие действия, и переход к следующему процессу, пока всё таки что-то не придёт в буфер. Пример подобной асинхронщины с luasocket от самого Роберто Иерузалимски: https://www.lua.org/pil/9.4.html
Ну, труЪ-многопоточкой тут не пахнет, просто как бы несколько дел одновременно.
2. Треды - как отдельные виртуальные машины под каждый процесс, тут можно хоть блокировать хоть не блокировать - всё одно. Память, как правило, разделённая. Я предпочитаю такие треды. У меня где-то есть аналог ноды многопоточный, с той же сутью (lanes).
Snusmumriken
Так вот. Сокеты можно сделать асинхронными с комплектом: "оболочка + колбеки на входящую лабуду". Это обычный подход. Луасек - туда же.
Roman
Просто не работал ты на legacy проектах, с кучей зависимостей на устаревшие версии либ, где ничего нельзя обновлять, ибо все отвалится, а менять нужно, и приходиться монкипатчить это старье.
Snusmumriken
Alexey
node.js использет libuv для IO
В общем да, но не совсем.
Там весь IO происходит в отдельных потоках.
Например в Windows это реализовано на уровне OS,
и далее по завершению операции результат передается
в клиентский поток.
Есть другая модель когда клентский поток оповещается
только о том что необходимо произвесть операцию.
На счет многопоточности. Мне нравится модел share nothing.
Просто запускаешь поток (с начальными параметрами) и далее
использешь некий канал связи.
Lanes делает примерно тоже, только проблема что его
каналы нельзя привязать ни к какой модели IO, крому как polling
Snusmumriken
В ноде нет ОС-потоков :<
Это легко проверяется диспетчером задач, с отображением активных потоков.
Нода однопоточна.
IO там происходит в том же потоке что и основной код. Просто колбеки.
Посмотри пример от роберто, который в моём посте. Там корутины, но и без корутин можно всё то же самое.
Saphire
Snusmumriken
https://habrahabr.ru/post/150788/
Судя по статье, многопоточность - только в отдельном модуле cluster, который, как я понимаю, автоматически запускает несколько копий ноды и выдаёт им задачки. Вне этого - однопоточка с эвентлупом.
Snusmumriken
Но сокеты умеют быть неблокирующими => ничто не мешает использовать luasocket/luasec в luvit'е.
Что и требовалось доказать.
mva
Snusmumriken
как и Lua
Ну, у меня есть lanes : )
mva
а у них - cluster ;)
mva
не так
mva
в lua нет многопоточности ИЗ КОРОБКИ
mva
как нет и gui ИЗ КОРОБКИ
mva
сама суть Lua в том, чтобы было только самое необходимое
mva
поэтому ты вполне можешь прикрутить многопоточность любым из доступных способов и делать гуй в отдельном потоке
Saphire
Saphire
Вместо того, что бы делать нормальный гуй через QT, они тупо обещали браузер...
Alexey
ОС выполняет ввод.вывод в своих потоках. (там где это поддерживается)
Alexey
да,
Обычно GUI предоставляют свой собственный цикл событий
Alexey
Я использовал IUP
Snusmumriken
Вот тут смотрим гуишку. Она, правда, хочет кучи либ, но зато много что умеет:
https://luapower.com/
Snusmumriken
Есть ещё биндинги qt/tcl.
Snusmumriken
А что ты хочешь? : )
Если очень хочется - можно в opengl/sdl замутить ТАКОЙ гуй, который и не снился никому : )
ㅤ
Сейчас Electron жирно. Qt ругать за жирноту уже не в моде.
Dika
Много кто
ㅤ
*для электрона
Очень много.
Dika
https://electron.atom.io/apps/
Snusmumriken
Можно взять love2d и заюзать какую-нибудь пользовательскую графическую либу. Всегда так делаю : )
Snusmumriken
Смотри какой пафосный
https://github.com/SSYGEN/yaoui