Snusmumriken
Notepad++. Кстати, то что ты тут видишь - чит, позволяющий на лету грабить и исполнять скрипты с сайтов типа pastebin/github.
Snusmumriken
Использовать через raw-ссылки, типа:
Class = webrequire'http://pastebin.com/raw/K1yRyE1T'
Правда, не работает по https, потому что сокеты не работают с https по умолчанию, нужны либы с криптографией, которые есть на линуксах но не на вендах.
Саблайм слишком жирный и медленный, меня это несколько раздражает. И нет нескольких нужных мне фич (особенно - древовидное сворачивание кода, когда внутри свёрнутого блока есть другой свёрнутый блок). Их можно написать, но пока буду адаптировать - пройдёт слишком много времени.
Yogurt
Задолбал хвастаться
Yogurt
"слишком жирный и медленный"
Фига у тебя запросы
Snusmumriken
Ну, эта фигня может кому-то понадобиться, для быстрого юзания скриптов.
Нет, git-консоль на love2d я пока не сделал :<
Запросы - какие есть, щито поделать, у меня синдром утёнка после np++, и синдром петуха после.. Оу, лишнее :3
Да, ты догадываешься, почему для меня VS - образец тотального ожирения?
Tverd
Кстати, чем VS не устраивает?
Ixtis
Да, мне VS тоже очень даже сипатичен
Tverd
Ну это дело хозяйское )
Snusmumriken
Он считает, что она медленная и много весит и не стоит себя
Стоит, при довольно специфических требованиях, типа "рулить проектом на тысячи файлов и мегабайты кода", при избыточном железе для разработки. А для создания небольших прог из десяти файлов по 500 строк каждый - бессмысленно и беспощадно.
Snusmumriken
Ixtis
Кажется я неверно написал VC имел в виду, атом от MS
Tverd
Visual studio code, что бы не было недоговоренности ))))
Snusmumriken
Да, это лучше, но все равно тяжеловато.
Хе-хе. На самом деле, мне просто лень привыкать к новым шорткатам и писать плагины, потому что в голом виде он довольно уныл для кодинга на луях.
И да, это браузер, со всеми прелестями (тормозами и лагами) жаваскрипта.
Tverd
А для нотепада для луёв все есть?
Tverd
Или тоже искать надо?
Snusmumriken
Смотря что тебе нужно :3
Я своровал парсер функций и объектов, теперь они отображаются в списке функций справа (можно и карту документа пихнуть, но не нужно), а автодополнение луа-кода на месте.
Плюс тут нормальный поиск/замена с регулярками, оно нормально открывает огромные файлы и вообще ведёт себя как спартанская, но ide. Плюс можно замутить набор шорткатов для запуска проекта. Тоже ничего так.
Snusmumriken
Единственное что расстраивает - нет на ARM-процессоры (ибо даже вайна нема).
Под вайном, кстати, работает как нативное приложение.
Tverd
А под арм зачем? На распберри?
Tverd
Или на планшете? )
Snusmumriken
И тишина : )
Alexander
Вот например, араб, влетающий на самолете в два здания-близнеца. Ничего не напоминает? :)
Snusmumriken
Да, меня тоже нарягло, довольно известный прикол с Wingdings и "Q33 NY", который в нём отображается как ✈️🏢🏢 ☠✡
Snusmumriken
А "NYC" (NewYorkCity) - ☠✡👍 :3
Snusmumriken
Если кому неожиданно нужны http(s) post/get на луях - обращайтесь.
Alexander
в смысле?
Snusmumriken
Ну, знаешь, нужен контент веб-странички, или запостить что-то ботом. Ну, или написать на чистых луях телеграмм-бота.
Https мой, правда, только с ffi, ибо биндинг libcurl. Обнаружил что на чистых луях нет почти ничего мультиплатформенного, что тянет https.
Alexander
Alexander
вот у меня такой https для телегам бота
Snusmumriken
А чем ты делаешь https.request? :3
И на какой платформе?
Alexander
local https = require "ssl.https"
Alexander
дебиан х64
Snusmumriken
Во-от, у тебя luasec. Это потому что у тебя линуксы. Без линуксов, проблематично получить рабочий https, ибо luasec не компилится под вендой. А если и компилится - то криво.
Alexander
теперь понял проблему
Alexander
пойду спать, ночи )
Snusmumriken
Моя цель - мультиплатформа. Потому и предлагаю биндинг libcurl, который работает везде (с luajit), и умеет далеко не только в https, но и 'DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TFTP. libcurl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, Kerberos), file transfer resume, http proxy tunneling and more!'
Можно почту принимать. И отправлять. И файлики.
Приятных.
Tverd
Ты юзаешь его асинхронно?
Tverd
этот либкурл
Snusmumriken
Если в отдельном треде или передача через UDP - то да : )
Я просто почти всегда делаю что-то сетевое многопоточным.
Alexander
а у меня же задача, которую я сейчас решаю - это телеграмный бот.
и сервер либо отвечает моментально, либо висит (в очень редкие моменты тотального выпаления сервиса, которые случаются 2-3 раза в год).
и в том и в другом случае смысла в асинхронности нет - при нормальной работе обработка запроса идет гораздо быстрее, чем длится разрешенный интервал между сообщениями в серии.
Поэтому мне достаточно двух потоков - один принимает сообщения по вебхуку, генерит ответы в базу и подает сигнал второму - демону, и тот рассылает все накопленное в базе
Alexander
еще у меня есть большая и сложная программа на Си, работающая с несколькими сетевыим интерфейсами и в ней на каждый интерфейс свой поток.
Tverd
меня вот что интересует, я могу прикрутить libev, и будет асинхронный tcp и udp. А async dns?
Snusmumriken
еще у меня есть большая и сложная программа на Си, работающая с несколькими сетевыим интерфейсами и в ней на каждый интерфейс свой поток.
lanes в помощь, хуле, мутишь отдельные трэды.
Правда, тут смотри как это можно организовать:
Вспомогательный тред, который занимается только приёмом/передачей, высылает тебе на главный поток - текст и id, ты их обрабатываешь в главном, и отправляешь обратно на воркер, который ассоциирует соки (sock/соединение с конкретным челом) с id.
Вспомогательный должен быть неблокирующим (срабатывающим только тогда, когда что-то законченное пришло на сокет), крутится в бесконечном цикле, смотрит, что пришло от главного треда и отправляет по соку, ассоциированному с ID, и проверяет, не пришло ли чо входящее по сети.
Конкретно с телеграммом - проще, потому что тут практически всё - твои запросы с сервака, т.е. мы оперируем клиентом.
Тут уже можно вплоть до блокирующие соединений в один поток мутить.
Alexander
lanes в помощь, хуле, мутишь отдельные трэды.
Правда, тут смотри как это можно организовать:
Вспомогательный тред, который занимается только приёмом/передачей, высылает тебе на главный поток - текст и id, ты их обрабатываешь в главном, и отправляешь обратно на воркер, который ассоциирует соки (sock/соединение с конкретным челом) с id.
Вспомогательный должен быть неблокирующим (срабатывающим только тогда, когда что-то законченное пришло на сокет), крутится в бесконечном цикле, смотрит, что пришло от главного треда и отправляет по соку, ассоциированному с ID, и проверяет, не пришло ли чо входящее по сети.
Конкретно с телеграммом - проще, потому что тут практически всё - твои запросы с сервака, т.е. мы оперируем клиентом.
Тут уже можно вплоть до блокирующие соединений в один поток мутить.
дык, в общем случае логично. но телеграм упрощает же.
Входящий блок написан на php (потому что привычнее, и уже есть наработанная база скриптов с телеграмом) и работает по запросу с сервера (вебхук же). Определив, что надо сделать, он кладет ответ в базу (это может быть и рассылка по нескольким юзерам бота), шлет udp-пакет на конкретный порт на 127.0.0.1
а на этом порту слушает луа-скрипт, работающий в бесконечном цикле, по такому UDP пакету он выгребает из базы подготовленные сообщения и рассылает их по клиентам.
Snusmumriken
Ох, это похоже на извращение, ну оки :3
Ixtis
https://daurnimator.github.io/lua-http/
Ixtis
В копилку lua http
Snusmumriken
Лучше сразу задавай, пинговка не нужна!
Snusmumriken
Ну так чего там?
В той массиво-либе только чекер может чуть странно работать без luajit, по пока неизвестной мне причине, ибо нет использования расширенных синтаксисов.
Alexander
кхм
Alexander
да, сорри
Alexander
я хотел убедиться, что она именно твоего авторста и саркастически поинтересоваться, использовал ли ты сам ее алгоритм бинарной вставки )
ибо там две ошибки, из-за которых я потерял вечер, сначала доверяясь твоему опыту :(
Snusmumriken
Да, сам писал, бинарку тестил, хм.
Где ошибки?
Snusmumriken
Эй-эй! Что там с ошибками!
Alexander
1. если вставлять в пустой массив, то получается цикл от 1 до 0 с обращением к несуществующему array[1]
пришлось вставить строку
local i, j = 1, #array
if j == 0 then return 1 end
fcomp = fcomp or default
2. никогда не вставляет в конец массива, и может вставить в порядке 2 1
потому что вместо
return #array
должно быть
return #array + 1
Tverd
Покажите хоть модуль
Alexander
Tverd
Alexander
обсужаем local function binsearch(array, value, fcomp)
Alexander
а в остальном годная библиотека. мне как раз нужен упорядоченный массив с разреженными индексами (т.е. идущими не подряд 1 2 3 4, а в духе 5 10 25 30 35)
Tverd
а какой вид массива?
{ 2 = 10, 5 = 20, 10 = 80, 100 = 4 }
Snusmumriken
Alexander
в пхп для этого можно делать ksort и обычный foreach, а в луе - дополнительный массив, в котором проиндексированные обычным способом элементы ссылаются на нужные мне разреженные значения
Tverd
ну да, не будет, по этому и спрашиваю
Alexander
вот и для такого я использую сию библиотеку.
для меня это очередь отправки сообщений, а "разреженные индексы" - это время, когда можно отправить очередное сообщение
Tverd
Я как раз таймеры пишу, интересно
Alexander
и я выбираю из упорядоченного array первый элемент очереди и жду, когда указанный в нем момент времени наступит. и просле этого уже шлю.
Tverd
это что бы не перебирать весь массив?
Alexander
конечно
Alexander
многократный поиск минимума - неэффективно
Tverd
блин, идея хорошая... надо бы мне развить ее
Tverd
а как ты обращаться будешь к первому элементу?
Alexander
это тупо queue[1]
Alexander
в нем уже есть ссылка на нужный мне объект
Snusmumriken
Хех, я делал эту штуку для хранения элементов коллизии с индексацией расположения объектов по одной из осей через sweep and prune : )
Гномья сортировка - для тех же целей: при движении, объекты незначительно меняются местами, поэтому гномы оказываются быстрее quicksort.
Функциональщину прикрутил для лулзов.
Tverd
понятно, то есть в момент добавления события в очередь, оно записывается в нужный индекс исходя из времени?
Alexander
и функция сравнения выглядит так
local row_compare = function(a, b).
return a.planned < b.planned
end
где planned - этто таймстамп в миллисекундах, я работаю с точностью до 1 мс. этого достаточно, так как мне нужны интервалы от 30 мс и выше
Alexander