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 тоже очень даже сипатичен
Yogurt
Кстати, чем 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
Alexander
Ох, это похоже на извращение, ну оки :3
пинг, есть вопрос по твоему модулю arrays
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
Покажите хоть модуль
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
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
Сяп, я лох и забыл проверить с граничными значениями. Пишу все это счастье, обычно, часа в три ночи, когда завтра на работу :3 Правда, не знаю как ты будешь её использовать с разреженными массивами.
Alexander
в пхп для этого можно делать ksort и обычный foreach, а в луе - дополнительный массив, в котором проиндексированные обычным способом элементы ссылаются на нужные мне разреженные значения
Alexander
а какой вид массива? { 2 = 10, 5 = 20, 10 = 80, 100 = 4 }
в луа такое не считается упорядоченным. ipairs не будет работать, а pairs может выдать в произвольном порядке
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 мс и выше