Snusmumriken
Аа, ну это уже другое. Мелкое вредительство.
Snusmumriken
С другой стороны, когда я работал тестером - по совместительству был справкой для девелоперов: им быстрее обратиться к тому кого не жалко, и кто типа знает что и как надо нафигачить, вместо того чтобы шариться по куче плохо связанных и постоянно меняющихся доков. Обязанности справки я выполнял отвратительно, ибо очищал голову при выходе из офиса, и не мог контролировать данный момент. Сам пол часа рылся в проектных доках, поэтому от меня быстро избавились (и правильно сделали).
vitaly
срач на пустом месте
vitaly
луа это швецарский нож встраиваемый на броню танка
vitaly
танком в этом случае явсляется нгинкс - котрый сам по себе неуклюж и бесполезен
vitaly
а прикрутив туда луа - получаем себе такой афигенский мнстр-трак - с тюнингом
vitaly
чтобы полюбить луа нужно немного делать сайты на пхп - джаваскрипте и иногда запускать софт на перле 😂
vitaly
луа тогда кажется божественной 😂
ShadoWalkeR
А я вот не в восторге от луа - мне он кажется недоработанным
ShadoWalkeR
😈
vitaly
все зависит от задачи
ShadoWalkeR
Чорд, я надеялся на провокацию поведешься 😃
vitaly
один знакомый делает все на питоне - я смотрел как он работает - он сидит в гугле и ищет модули под его задачи - вссе
vitaly
тупо пол дня гуглит- потом ставит готовое и едет дальше
vitaly
последнее что я видел это он нашел алгоритм размпознования на нейроных сетях и научил его распознавать лица людей на фотографиях и это стандартное решение чтоли
vitaly
те для православной луы нету столько кода - вот и все
ShadoWalkeR
У нейронщиков так принято
vitaly
а если обвязку хтмлом данных которые прочитал с редиса и выдача в браузер - те питон будет гдето далеко позади по скорости от нгинкс + луа
ShadoWalkeR
Питон в принцие не сильно шустрый язык
vitaly
отож
vitaly
я когда переехал с пхп - первое я нагуглил функцию explode
vitaly
вот блин зависимость от удобства пхп - на всю жизнь - теперь - в голове - эексплоде - нужно заюзать эксплоде
ShadoWalkeR
Ну функция разбить строку по разделителю в стандартной библиотеке не помешала бы
vitaly
ну все фунции пхп написанны на луа и гугляться легко
vitaly
кто то постарался за нас до нас
vitaly
недавнее откровение это было gsub второй парметр может быть фунцией - на пхп так не сделать
ShadoWalkeR
Тут вопрос в том, что типовую задачу приходится решать с нуля каждому программисту на lua. Explode в stdlib не просто так во всех языках добавлено
Yuriy
Тут вопрос в том, что типовую задачу приходится решать с нуля каждому программисту на lua. Explode в stdlib не просто так во всех языках добавлено
ниче там не надо решать - 90 процентов типовых задач гуглится первым же запросом по этой задаче Та же функция по разделителю гуглится и приведена в официальном руководстве по lua
ShadoWalkeR
В стандартную библиотеку обычно заносят наиболее используемые функции. Или для решения разного типа задач, чтобы не пришлось гуглить
ShadoWalkeR
Но это мнение, а не крики "Луа плохой!", а то я вас знаю 😃
Snusmumriken
Ну, лично мне сильно не хватает быстрой сериализации или строкофикации табличек, постоянно local render = require'inspect' или local render = require'serpent'.block (это две весьма неплохие либы), тупо потому что постоянно надо смотреть внутренности, после написания модуля можно отключить. Но имхо, вполне можно было встроить в язык простейшую инспекцию. То же самое с подсчётом ссылок (имхо, сборка мусора с подсчётом ссылок была бы несколько мощнее, в 5.4 вроде обещали пофиксить, надо глянуть что там с этим). Да, несколько дополнительных функций работы со строками. К счастью, лично мне это нужно довольно редко, но таких людей не очень много.
Snusmumriken
Есть что улучшать, в общем, но увы, я повязан на 5.1, которой поможет только написание кастомных интерпретаторов, в которых вшита нужная фигня, или смирение : )
Snusmumriken
Пойду переписывать стандартный комплект python-либ на луа, в общем ))
vitaly
Мсгпак
vitaly
Сериализация.
vitaly
Гуглится :)
vitaly
Luajit
Snusmumriken
Я привёл целых две библиотеки для сериализации в первых четырёх строчках сообщения. Прекол в другом: их приходится постоянно цеплять, вместо того чтобы не цеплять : ) Это чисто моя лень. Из лени состоит 90% моей деятельности.
Snusmumriken
Вот такую конструкцию - тоже можно было бы макросицировать (или просто выдать функцию, генерирующую аналогичный класс).
Snusmumriken
Пофигу что без "приватных" полей, всё равно они никому на самом деле не нужны (а если типа нужны - значит врут и выпендриваются, проверено мной на протяжении пяти лет).
Snusmumriken
Если вам за это платят, то продолжайте
В рабочей среде, это всё уже подключено. Там наша (советская, в первых версиях) БД со встроенной луа (и взаимодействием с элементами БД напрямую из луа-кода), плюс дичайшее количество либ в стандартной поставке, уже подрублено в виде глобалов. Это, правда, несколько противно, потому что некоторые штуки перетирают стандартные луёвые функции, а подход к ним другой.
Snusmumriken
У меня на работе лень уже победила, в общем.
Vyacheslav
Я не понимаю чего-то. Значения по умолчанию можно сразу в класс занести.
Vyacheslav
Именованные аргументы Луа умеет
Snusmumriken
Карочи. Я уже написал что получается выбор: 1. Мы делаем для себя "кастомный интерпретатор в который вшиваем всё что хочется", но если передаём скрипт "нормальному человеку" - у него ничего не работает и надо для него дописывать-доадаптировать; 2. Постоянно таскаем с собой и подключаем здоровенный ворох либ. Дело не в классах, а в том что их нет по дефолту.
vitaly
Голанг
Vyacheslav
Чего нет, можно самому дописать в виде либ
Vyacheslav
Ворох либ оборачивается в одну либу и подключается она вместо вороха
Vyacheslav
Все либы можно аккуратно сложить в папочку отдельную
Snusmumriken
Свой интерпретатор, в котором вшиты основные фичи, дабы не подгребать. Ну на самом деле я уже сделал себе "кастомный интерпретатор" который автоматически запускает файл "main.lua" в той же папке что и exe-шник (elf), дабы делать что-то похожее на standalone-приложения.
Vyacheslav
Или batch. -- я не знаю, под какую ось вы пишите
Snusmumriken
Ох. А теперь прикинь, что я даю кому-то свою тулзу. А он - вообще не программист. И я ему такой: "Ну кароч сначала ставишь lua-интерпретатор, потом качаешь вот этот ворох либ (или luarocks и конпелятором всё канпилируеш), прописываешь путь до них в глобальных переменных LUA_PATH/LUA_CPATH и запускаешь в командной строке бла-бла". Или я кидаю ему исполняемый файл со скриптом и всеми либами в одном архиве, который он запускает мышкой. Разница?
Snusmumriken
Мир состоит не из одних только программистов. И как раз фича того же golang'а - один исполняемый файл без внешних зависимостей. То что мне было нужно, зачем я писал такой интерпретатор.
Vyacheslav
Если положить run.bat и lua.exe, в папку с main.lua, который выполняет указанную выше команду, то запускаться будет всё по одному клику в run.bat
Vyacheslav
Хватит изобретать велосипед
Snusmumriken
Мм. Что для этого нужно сделать: 1. Поставить отдельный интерпретатор 2. Под вендой - прописать путь до него в PATH 3. Учить людей пользоваться командной строкой 4. Если сложить либы рядом с запускаемым скриптом, луа их не найдёт, инфа сотка. Она не умеет в "проекты", поэтому нужно или делать чот такое: package.path = arg[0]:match('(.*[\\/])') .. '?.lua;' .. package.path, или ещё что-то такое делать.
Snusmumriken
Ты в курсе что такое standalone-приложения?
vitaly
Хватит изобретать велосипед
пора выкинуть дурацкую винду просто и перейтина линукс
Snusmumriken
Карочи, не надо меня учить, я сам - всё знаю, но у меня несколько отличающиеся обстоятельства, ферштейн?
Snusmumriken
На батники, народ вообще очень странно реагирует, хе.
Saphire
Это как так?
Snusmumriken
Нормальные люди. Белые. Под вендой. Плохо реагируют на батники.
Snusmumriken
Половина - не знает что это такое (если объяснить - забудут), другая половина - боится что это страшный вирус. Да, я для таких пишу гуёвые тулзы на луа. Подавай exe-шник.
Vyacheslav
Мм. Что для этого нужно сделать: 1. Поставить отдельный интерпретатор 2. Под вендой - прописать путь до него в PATH 3. Учить людей пользоваться командной строкой 4. Если сложить либы рядом с запускаемым скриптом, луа их не найдёт, инфа сотка. Она не умеет в "проекты", поэтому нужно или делать чот такое: package.path = arg[0]:match('(.*[\\/])') .. '?.lua;' .. package.path, или ещё что-то такое делать.
1. Зачем? Интерпретатор спокойно живёт в папке рядом со скриптом. 2. Путь не нужен в PATH для старта интерпретатора. 3. Запустить run.bat - это не пользоваться командной строкой. 4. Луа умеет относительные пути, относительно текущей директории. Да, эти пути нужно будет разок прописать. Если нужно стартовать разные скрипты и в каждом прописывать одно и то же, то создайте отдельный файл с этим кодом и подключайте его через require. В package.path уже есть ./*.lua
Vyacheslav
Карочи, не надо меня учить, я сам - всё знаю, но у меня несколько отличающиеся обстоятельства, ферштейн?
Ну всё понятно, вы тут самый умный душу изливаете и ленитесь. Не понимаю ваших ожиданий от этих действий
Snusmumriken
Да не, спал давно, сползаюсь за сползающей темой )) Прекол не в том, прекол в кучке вещей которыми луа неплохо было бы расширить, и которые не надо было бы тащить с собой/подключать ибо лень, тащемта всё.
Snusmumriken
Типо "пофиксить стандарт 5.1", который не пофиксишь ибо он уже совсем стандарт, и довольно древний ))
Snusmumriken
СТРЕЛОЧНЫЕ ФУНКЦИИ! foo = (a, b) => a + b Я такое кстати делал, правда в виде foo = l'(a, b) => a + b', грузится loadstring'ом после превращения в "функцию", кешируется, очень (очень) стрёмно падает на ошибках.
Vyacheslav
Луа не надо расширять. Там всё есть. Если индивидуально что-то нужно, то компилируйте свою луа. В 5.1 проблемы только с GC таблиц, остальное в нём всё есть. Если вам надо, то фиксите. Исходники есть. Лицензия MIT
Snusmumriken
С GC таблиц в 5.1 проблем нет через хаки, оно подробно описано в статье по метатаблицам на хабре. С сериализацией таких таблиц, правда, могут возникнуть некоторые проблемы, и без подсчёта ссылок, вызовется финалайзер неизвестно когда, но сильно позже удаления последней ссылки.
Snusmumriken
Да. Лень же! Короткие лямбды! Там где реально сокращают/повышают читабельность, в 1% задач, зато красиво!
Snusmumriken
*провокатор_MODE* Я ещё goto использую, ты понимаешь с каким пропащим человеком говоришь? ))
Snusmumriken
Фу, провокации не работают ((