Snusmumriken
Это очень странная логика.
Snusmumriken
И совсем неочевидная.
Snusmumriken
То есть, кто бы мог подумать.. Нарушение принципа KISS, вот ты с ним и столкнулся : )
Snusmumriken
KISS — это когда не возникает вопросов "почему оно сдела[л/н]о именно так". То есть, для того чтобы реализовать штуку которую ты предлагаешь, мне нужно: 1. Нагромоздить кучу списков для каждого варианта колбека; 2. Написать кучу проверок наличия функций в списках, добавления/удаления, изменения порядка; 3. Задокументировать эту фигню, заставить пользователя вызубрить как оно работает, и то, он будет регулярно сталкиваться со странным поведением из-за собственных мелких оплошностей (либа перетёрла нафиг всё старое и порядок поменяла, а он был важен). И всё для того, чтобы сделать код медленнее, а свою жизнь и жизнь юзера — сложнее, когда пользователь может сам сделать как ему нужно, хоть так, хоть иначе. Вопрос: зачем? Тем более, что люди не любят когда их держат за идиотов, а подобная схема им явно это намекает. Даже ЖСная схема, благодаря айдишкам, более конкретна и однозначна.
Snusmumriken
Поэтому, мой очень страшный совет: если делаешь библиотеки или апи — делай их как можно проще одновременно для написания и использования. Это сложная задача, нужно думать головой, но чем меньше автоматизации за бортом — тем лучше и меньше шанс факапов: функции должны делать ровно то что написано на упаковке, но не более. А то в пользовательском коде вроде бы всё в порядке — а всё ломается, и надо лезть в исходный код/доку оригинальной библиотеки и крайне внимательно полностью читать её, потому что по ключевым словам ты такое не найдёшь: юзер забьёт на эту либу, и через десять лет случайно прочитает: "ан вот оно что!", но поезд уже ушёл ))
Snusmumriken
Зачем делать что-то на сишной стороне, когда это можно не делать, оставив луёвой луёвое? : ) В моём случае, сами колбеки обязательно вызываются сишной, тут я мало что сделать могу.
Snusmumriken
Но если делать дырки — это ещё придётся вставлять на место дырки, искать место вставки. Оно может быть не тем которое #tbl + 1. Но с этим вполне справится юзер. Просто не надо делать ничего лишнего. У юзера есть целая одна функция для данного колбека, пущай делает с ней что хочет, хоть завод на ней городит : )
Snusmumriken
А что дало написание Стим библиотеки ? Функцию позвать друга и ачивки или что то ещё?
Функция "позвать друга" — немножко более объёмная чем кажется. Там целая система лобби, сетевая библиотека для связи с пользователями по ID (причём как с гарантированной доставкой, так и без, с шифрованиями и подтверждениями личности), таблицы рейтингов, выделенные серверы или p2p. Ещё войсчат, проверка наличия/отсутствия DLC (и их покупка-установка-удаление через апи), сами друганы и их переписка, кланы, "те с кем недавно играл", группы. Облачное хранилище сейвов, плюс кеширование этого на жд. Мастерская стима (закачка своего контента или загрузка чьего-то) и стимовый инвентарь. Управление встроенным в стим музыкальным проигрывателем. Функции для стриминга картинки, совместной игры на одном ПК по сети (стримингом), либа геймпадов (xbox/ps3-4/switch/steam-controller) и встроенный браузер а ля surface для использования внутри игры (можно накодить внутриигровой монитор, отображающий реальный тырнет )) ).
Alxius
Это уже куча функций а не одна.
Alxius
Выглядит впечатляюще
Snusmumriken
Первый абзац — это то, во что выливается "позвать друга". Потому что связь или линковка производится стимовыми сетевыми либами через стимовые серверы. Хотя можно и иначе, там есть механизмы, которыми можно звать друзей на не связанные со стимом серверы, хотя это настолько редко и мало используется, что далеко не дефолтная опция.
Snusmumriken
Дык сделай аналогично. Если есть функция в табличке — вызови её из сишки. Если нет — нет. Это будет достаточно просто и удобно одновременно. А вот дёргать из сишки луёвые библиотеки — вредно. Какая квака-то?
Anonymous
10
Snusmumriken
@Stunni_original, are you jyshynosylashe7503?
Anonymous
Нет крч
Anonymous
Это я прикальнулся. Если нельзя, то не буду.
Snusmumriken
А, ну лады : ) Просто ты такой проходишь проверку на бота вместо бота.
Snusmumriken
Ботам не подсказывать!
Snusmumriken
Можно и так, но мне показалось логичнее выделить для структуризации.
Roma
Хехей. Есть кто-нибудь с опытом работы с LPeg? Чет сложно пока даётся.
Snusmumriken
Оче мало, всё больше обычные pcre. Ты можешь погуглить просто peg grammar, там много всего
Хехей. Есть кто-нибудь с опытом работы с LPeg? Чет сложно пока даётся.
Есть, но не то, что бы прям большие грамматики писал.
Хехей. Есть кто-нибудь с опытом работы с LPeg? Чет сложно пока даётся.
Можешь посмотреть мой Brainfuck на LPeg, там есть код и слайды с объяснением, что происходит. https://github.com/Penguinum/brainfuck2lua
Roma
Глобально мне нужно целый язык переварить в свои таблицы и это будет моей головной болью) но вот если конкретно... например, почему этот код должен возвращать 2 а не 1? )) lpeg.P('a'):match('aaa')
> почему этот код должен возвращать 2 а не 1? Сие есть секрет. Почему-то всегда возвращает на 1 больше, чем съедено символов, да. Кто может здесь знать? @agladysh?
Roma
А, т.е. так задумано ))
Знаешь, возможно это то что мне нужно, раз у тебя тоже язык там 😄
Насчёт больших языков — рекомендую посмотреть Moonscript, Typed Lua.
У меня предположение, что возвращается индекс следующего символа, а не количество съеденных.
The matching function. It attempts to match the given pattern against the subject string. If the match succeeds, returns the index in the subject of the first character after the match, or the captured values (if the pattern captured any value).
Roma
Похоже так и есть
Roma
Хоть и странно, и так индекс с нуля сдвинулся, а тут еще на единицу )))
В Lua принято с 1 считать.
Roma
Да, к этому и говорю, что Lua с 1 считает, так lpeg решил пойти дальше и возвращает 2, что забавно.
Один (первый) символ съеден, возвращаем индекс 2. Всё правильно.
Т.к. возвращаем индекс следующего символа.
Roma
Я про то что символ съедается собственно, когда я ожидал что будет скорее найденный индекс этого символа. Не понимаю пока концепцию зачем так.
fgntfg
Снус едет на работу
fgntfg
Snusmumriken
Примерно так это и выглядело
Egor
😂😂😂😂👍🏻
Snusmumriken
Лайфхак: камеры не палят лицо
Mikhail
от армии бегаешь? О_О'
Snusmumriken
Ну, книжный Снус очень не любил правила. Таблички "не бегать по траве", "не курить", сторожей, и ещё много всякого.
Ж
Всем привет. А сталкивался кто-нибудь с апдейтом ssl.https до использования TLS 1.2 ?
Ж
тут внезапно телеграм боты перестали работать, поковырялся, копнул, а там: Please note that the Bot API only accepts incoming TLS 1.2 connections (or higher). Kindly update your bot if it was using the outdated TLS 1.0 or TLS 1.1 protocol.
Snusmumriken
Оче сложно, если у тебя там хттп-запросы обычные — мб проще курлом.
Ж
хм... жаль, придётся переписывать библиотечку, то место, где запросы делаются...
Snusmumriken
Ну, лёгких способов явно не будет, плюс у luasec есть некоторые проблемсы с автодетектом серверного типа шифрования, и ещё много чего. То есть, лично я её юзаю с большой голодухи, например.
Ж
в доках нашёл, что можно явно указать protocol = "tlsv1"
Ж
но это старо, как г. мамонта.... т.е. 1.0 сменился на 1.1 и на 1.2 с тех пор
Snusmumriken
Да що за фигня
fgntfg
Дай банхаммер, я аккуратно
Snusmumriken
Нимагу, нужен @AlexFails : )
Валентин
Парни, вопрос - по луа, так что не баньте. Нужен пример небольшого пркси который станет прокладкой между двумя программами (одна сервер, втроая клиент) и запишет сеанс общения в файл. Может что-то подобное уже есть готовое?
Валентин
http
fgntfg
Ищи mitm proxy
Yuriy
http
openresty
Валентин
гляну, спасибо
Валентин
он от ngninx зависит
Yuriy
он от ngninx зависит
Он и есть nginx
Валентин
полностью задача - есть сервер 1с на нем отладка по http, отладчик общается по http с ним (в wiresharke смотрел) - мне надо сессию записать что бы в протоколе разобраться
Валентин
щас тогда почитаю
Yuriy
ну так зачем фигачить самому сервер если он уже есть
Валентин
спецификации протокла нет, мне именно поэтому прокладка и нужна
Валентин
протокола отладки имеется в виду
fgntfg
А точно доков нет? Это же 1С. Кто-нибудь такое уже точно делал
fgntfg
А вообще то что ты описал - mitm
Валентин
неа, не делал. а если и делал - в открытом доступе нет
Валентин
я знаю что mitm - но далье названия уже не знаю. с сетевыми приблудами не работал. вот и спрашиваю совета
Валентин
логику прокси то понимаю - принять на одном порту сообщение, записать, подменить как надо порты, отправить, получить ответ, записать, подменить порты обратно и отослать
fgntfg
Я б не стал изобретать свое, а поискал готовое
Валентин
вот и спрашиваю готовое, хотя и поизобретать - тоже интересно
Anonymous
Ахахаха
Валентин
опачки! к сокету подключился. прикольно - даже не сложно выходит