Roman
cl = {}, {}
cl — таблица
cl.__index = cl — индекс — рекурсия
Snusmumriken
Не рекурсия, подумай лучше.
Roman
smt(cl, mt)
Roman
вроде все четко
Roman
но как-то слишком компактно, больно подозрительно
Snusmumriken
Ехехехе, просто я читак.
Тут нет рекурсии, зато за счёт cl.__index = cl, есть возможность прописывать
function Foo.__add(a, b) ... end
То есть, добавлять метаметоды сразу в класс.
Roman
эх, я к руби привык просто
Roman
методы класса, методы инстанса, приватные методы
Snusmumriken
Приватные не нужны.
Захотят - вскроют. Лучше - локальные функции в модуле, так же как тут - функция C.
Roman
для чисто просто методов эта реализация клевая, мунскриптная все же мощнее
Snusmumriken
А что там? Миксины?
Roman
там отдельно таблица для класса, отдельно для объектов
Snusmumriken
Хм. В чём прикол?
В чём объективная необходимость?
Roman
ну тк, методы класса, методы инстанса
Snusmumriken
Методы инстанса - в чём разница?
Длинная процедура инициализации объекта?
Тут есть Class:init() - возвращает инстанс.
Roman
Post.all() - все посты
Post.take.all - поле "all" у поста, вдруг такое есть
Snusmumriken
А, типа лишние цепочечные методы через извращенскую перегрузку __index.
Roman
клевая перегрузка
Roman
я очень долго делал, не надо, там правда так: Post\take!.column выходит
Snusmumriken
Неочевидно. Хотя кому как, тем кто сидит на мунскрипте мб норм.
Snusmumriken
На тему "если есть такое поле" - rawget(table, field).
rawget/rawset - две функции взаимодействия с таблицами, не дёргая метаметоды. То есть, добровольно-принудительно.
Roman
это значение rawget, а ещё есть методы инстанса, которые через мета
Roman
да ладно, годная реализация, но не на все хватит
Snusmumriken
Ой всё, сложно )))
В реальной жизни такое редко необходимо.
Хотелки - хотелками, и сахар сахаром, но слишком много сахара - схлопочешь диабет.
Snusmumriken
Моя задача дать свободу. Вдруг пользователь захочет перегрузить один из стандартных методов класса.
Эту фигню можно перегружать, а запрещённых полей немного:
Super, init и Type,
Редко вызываемые поля - с большой буквы.
Ну, прост сахар в краткости и в отсутствии необходимости помнить что и как, лепить по наитию и чтобы сразу получалось )))
Поэтому же, например, порядок указания имени класса и родителя не важен. А можно и без них. А можно и без метода init, просто вызывать класс как функцию и получать пустой объект. Ваще пофиг. И можно return'ить значения из инициализационной функции, и они пойдут следующими после объекта при вызове класса. Это не очень очевидно, но удобно, и по наитию такое можно случайно сделать и приятно удивиться что прокатило.
Вот такой сахар я люблю.
Roman
а может ты блог какой ведешь? любишь все время какие-то куски кода генерировать, вдруг когда-нибудь что-то полезное выдашь
Snusmumriken
Хех, у меня есть pastebin.
Думал писать на хабр, но пока лень.
Roman
луа комьюнити не хватает
Roman
думаю об этом, т.к люблю сайтики писать, вот и думаю и думаю
Snusmumriken
>вдруг когда-нибудь что-то полезное выдашь
Мне нравится твой оптимизм!
Прости, не удержался :3
Snusmumriken
думаю об этом, т.к люблю сайтики писать, вот и думаю и думаю
Вот, смотри какая смешная полезняшка:
https://pastebin.com/6K7VWaxZ
Массивная либа. И тут же есть реализация смешных стрелочных функций с кешированием (чтобы не пересоздавать каждый раз).
Тут, правда, где-то мелкая ошибка в бинарном поиске, надо исправить.
Roman
Вот, например, у класса-модели есть метод auth - User.auth(...) который параметры задает, или контроллер PageController.before_action = function, а у инстансов совсем другое
Roman
А блог имею в виду как у Лифо, например, вот статейка интересная http://leafo.net/guides/dynamic-scoping-in-lua.html
И сверстано красиво!
Snusmumriken
https://ilovelua.wordpress.com/%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%87%D0%B0-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%BF%D0%BE-%D1%81%D0%B5%D1%82%D0%B8-%D1%81-luasocket/
Snusmumriken
Вордпресс, да.
Roman
пастебин не плох в плане поиска паролей для прон сайтов (я правда это пишу?), поделки кодовые там хранить - нууу, почему не гитхаб, репы да гисты, все для кода
Snusmumriken
Люблю пастбин )))
Он бесконечно хранит, и у него есть одна крошечная фича, которая крайне полезна лично для меня:
работа по HTTP. Не только HTTPS.
Roman
хочу на луа сайт про луа! с классным дизайном, форумом и статьями как на хабре, и с поиском разных проектов
Snusmumriken
Вот этот чит.
Комментарий окружающих заботливо передан :3
Snusmumriken
Notepad++. Кстати, то что ты тут видишь - чит, позволяющий на лету грабить и исполнять скрипты с сайтов типа pastebin/github.
Snusmumriken
Использовать через raw-ссылки, типа:
Class = webrequire'http://pastebin.com/raw/K1yRyE1T'
Правда, не работает по https, потому что сокеты не работают с https по умолчанию, нужны либы с криптографией, которые есть на линуксах но не на вендах.
Саблайм слишком жирный и медленный, меня это несколько раздражает. И нет нескольких нужных мне фич (особенно - древовидное сворачивание кода, когда внутри свёрнутого блока есть другой свёрнутый блок). Их можно написать, но пока буду адаптировать - пройдёт слишком много времени.
Snusmumriken
Задолбал хвастаться
Roman
https://github.com/bungle/awesome-resty
вот Бангл так ссылки хранит, не удобно же
void *
Го запилим транслятор руби в луа и напишем на рельсе
Roman
фреймворк есть
Roman
в альфе
Roman
lairs :) осталось энтузиастов найти
Snusmumriken
У меня есть контент для заполнения, и я могу хостить, опенрести стоит. Куски бекенда тоже по мелочи, но это будет медленно.
Ударяться в веб и верстать - лень.
Roman
Го!
Roman
У меня есть жгучее желание верстать и бекенд на луа писать
Snusmumriken
Заводи гит.
Подцеплю рести с него, выдам апишку, куда можно посылать json-запрос чтобы тот перезагружал сервак (ssh не дам, я злой )))).
Конфиг рести тоже будет в гите.
Roman
неее, без ссх будет возня ужаснейшая
Snusmumriken
Ну лан )))
Но тогда хоститься будет на raspberry pi, которую не так жалко.
Snusmumriken
На тему возни ужаснейшей - нет же.
Есть гит со всеми конфигами и возможность перезагружать сервак для подцепляния изменений гита.
Заебись, свобода на сервере!
Roman
Сейчас чувство такое воодушевляющее, не верится, правда ли можно сделать что-то правда здоровское, на любимом языке, и ещё помочь ему развитии
Roman
а модули как ставить?
Snusmumriken
Запихивать в гит
Roman
у меня свой пакетный менеджер, как раз для гита
Roman
потом всю статику компилить по-хорошему на сервере
Snusmumriken
Ой какой ты сложный ))
Ладно, я подумаю на тему выделения ноутбука.
Убунту + ssh/vnc + resty, делай чо хошь.
Roman
блин, на самом деле я хостинг могу у заказчика-другана выпросить, надеялся в душе на контрибутинг
Roman
чтобы вот тут луа чат - это зачаток сообщества
Roman
чтобы сообщество направляло по фичам, хотелкам
Snusmumriken
Ну, само сообщество есть и оно приличное.
И много что есть в гите/стаковерфлоу, есть сайты типа ilovelua/leafo/luausers.org.
*а я пожал лапку Роберто Иерузалимши, никогда не буду её мыть )))*
Roman
Задолбал хвастаться
Roman
Думаешь, не нужно очередное?
Snusmumriken
О да, это ровно та реакция которую я ждал ))
Да не, просто чтобы сделать что-то крутое - нужно реально много вкладываться, иначе будет мышиная возня.
Roman
леафо давно не объявлялся, остальное гомно по-моему
Roman
а ты меня не знаешь, я + луа = безумие кодинга
Roman
и конечно есть надежда на контрибутинг
Snusmumriken
А умения преподавания и навыки подачи материала, чтобы даже нубцам зелёным было понятно, а крутым поцам - не обидно, что их считают за детей?
Roman
этого 0, но зато
Snusmumriken
Катаешь кучу смешных библиотечек?
Roman
вообще это было бы очень даже полезно, например, когда искал инфу про многопоточность - нифига непонятно, заброшенные либы, описание черт знает какое
Snusmumriken
lanes - достаточно для всего.
Разные версии lanes - разные типы многопоточности.
Хочешь краткую лекцию про многопоточку?
Roman
спс, у меня есть нода :)
Snusmumriken
Ну, это универсальная краткая лекция. Относится к произвольным потокам.
Если что: поток - это отдельная фигня.
Операционные системы делят их на два типа - "лёгкие" и "тяжёлые" потоки.
Лёгкие - это программа сообщает операционной системе, мол, вот этот кусок кода можно выполнять параллельно. Они легко плодятся и имеют общую память, правда, за переключение между потоками отвечает операционная система, и они могут выполняться только на одном процессоре, единственное различие - асинхронность. Ранний Lanes выполняет именно такие потоки.
Тяжёлый поток - это как будто совсем другое приложение, с которым можно общаться через общие каналы. У них нет ни одного куска общей памяти, а пересылка - только текстовыми сообщениями через пайпы-каналы. Вот эта херовина может выполняться на разных процессорах, и жрать огромную кучу памяти. Но тут лишний дискомфорт в виде невозможности работать с объектами друг друга напрямую, только через посредника, типа "читалка-отправлялка сообщений" в каждом потоке. Это очень, очень похоже на сетевое взаимодействие разных приложений.
А корутины - это считай что очень много GOTO. Функция, которая может в любой момент прерваться через yeld, и продолжить своё выполнение после того как её снова вызвали
Roman
Тяжелые, значит, как воркеры nginx, а легкие - как обычно в скриптовых
Roman
Ладно, все таки, давай хостинг, там много чего хорошего придумать можно
Roman
Надо чтобы заинтересованные люди были