
Snusmumriken
28.04.2017
09:52:47
А я не люблю хранить лишние исходники. Скрипты - на то и скрипты, что в них всегда можно залезть и поправить.
Поэтому я не очень люблю компилируемые языки.
Можно, конечно, подключать свои либы ООП. Но тем не менее, тут же появляется куча "если". Я могу заменить почти весь сахар мунскрипта библиотеками, и получить крайне читаемую штуку.

Рома
28.04.2017
09:53:31
Гитхаб вовсе не запрещает хранить все хоть пол года, хоть 10 лет

Snusmumriken
28.04.2017
09:54:25
Хех, тем не менее.
А теперь смотри, что мне нужно сделать для проверки кода на мунскрипте:
1. Пересобрать сурцы
2. Запустить проект
Это ровно в два раза больше действий чем в луях.
Скрипты на то и скрипты, что их можно запускать прям сразу.
Ну блин, мунскрипт хорош, но он убирает почти все плюшки скриптов, за которые лично я их люблю.
Это хорошая штука для крошечных проектов, но для крупных - фигня.

Google

Рома
28.04.2017
09:56:38
Я как веб разработчик в этом ничего плохого не вижу. Там тебе и coffee, и stylus, и ещё куча всякой фигни, которую прекомпилировать надо, сейчас странные нехорошие веяния ещё кучу страшных вещей насаждают, вроде бабеля

Snusmumriken
28.04.2017
09:56:59
Крошечные проекты, чувак. Но и в крошечных - лень.
Попробуй прочитать стактрейс глубины 20 луа-кода, скомпилированного в мунскрипт.

Рома
28.04.2017
09:57:35
А тут в дело вступает jit

Snusmumriken
28.04.2017
09:57:44
Стактрейс.
Ты знаешь что это?
Его надо читать, при падениях.

Рома
28.04.2017
09:57:53
На руби стактрейс раз в 50 больше, чем в самом сложном проекте на луях

Плюшка
28.04.2017
09:58:13

Tverd
28.04.2017
09:58:19
Да ладно, не все так страшно, как Снус описывает, с удовольствием пользуюсь мунскриптом, когда надо побыстрому

Snusmumriken
28.04.2017
09:58:21
Там он за счёт рельсов, которые делают 100500 оболочек над базовыми вещами.

Рома
28.04.2017
09:58:25
Да, руби == рельсы же

Плюшка
28.04.2017
09:58:33

Snusmumriken
28.04.2017
09:58:35

Tverd
28.04.2017
09:58:42
Неа, целая игра

Snusmumriken
28.04.2017
09:59:13
Боюсь что в твоём варианте, это всё равно крошечный проект.
Сколько файлов используется? Какой уровень абстракции?

Google

Рома
28.04.2017
09:59:20
Что означает крошечный проект?
По сравнению с некрошечным

Tverd
28.04.2017
09:59:48

Snusmumriken
28.04.2017
10:00:19
Хех, ну тут может и не шибко крошечный.
И как отлаживается?

Tverd
28.04.2017
10:00:51
да ошибок мало на удивление, отладка не фонтан конечно, но скорость написания и читабельность прямо радуют

Snusmumriken
28.04.2017
10:00:52
Или ты в zerobrane?

Tverd
28.04.2017
10:01:01
не, в саблайме

Snusmumriken
28.04.2017
10:02:41
Да, предупреждаю что это только моё мнение о мунскрипте, основанное на том что у меня всё очень большое и очень стрёмное, а ещё необходимость в безумной производительности, и я снабжён кучей собственных библиотек на любой чих. И не люблю компилировать/пересобирать, но мне нужен максимально удобный дебаг.

Tverd
28.04.2017
10:03:36
Ну гуд, каждому свое, я говорю что не надо бояться пробовать, может кому-то и понравится )

Рома
28.04.2017
10:08:53
Можно немного оффтопика?
Говорю заказчику, что реакт говно и с него лучше бы проект переводить.
Он говорит, как говно, вот на нем фейбук сделали и ничего.
Открываю фейсбук, никакого реакта там не нахожу.
Кто знает, где на фейсбуке есть реакт?

Snusmumriken
28.04.2017
10:09:27
https://facebook.github.io/react/

Рома
28.04.2017
10:10:28
Не сам реакт, а в соц сети фейсбук где он используется

Snusmumriken
28.04.2017
10:10:57
Ну, соцсеть и есть разработчик реакта.
Подозреваю что для чего-то они его писали.

Рома
28.04.2017
10:13:29
Имеет место скрытый замысел, они его сделали, чтобы сайты конкурентов тормозили, а сам фейсбук на него переводить не спешат

Snusmumriken
28.04.2017
10:15:09
Подозреваю что где-то он используется.
Ой, ну блин, такая подстава - это как-то по детски : )
У меня на работе делают часть простых вещей с реактом. Ничего страшного.
Он жирен, это да, но свои задачи исполняет.
На хабре есть забавное описание: https://habrahabr.ru/post/249107/
Он захайпован, это да. Но в интернете сейчас слишком много хайпа по поводу веб-библиотек и фреймворков. Сам вебом не занимаюсь, потому что о-о-о-о-очень скучно.
Да, за это платят, но ещё и работать, занимаясь скучным делом - я не настолько убийца времени.

Alex Фэils?︙
28.04.2017
10:19:35

Snusmumriken
28.04.2017
10:19:50
После компиляции - тоже не ноль времени. Просто меньше.
Тот же квиксорт на динамически изменяемой структуре - и после компиляции будет занимать не меньше n log(n) времени.

Рома
28.04.2017
10:20:15
Это самое худшее, с чем приходилось сталкиваться, он ужасен во всем, от клонирования всех состояний каждый раз при изменении состояния, до загрузки стилей в сами элементы, что какие грибочки привели к идее дома теней - вообще молчу, </offtopic>

Snusmumriken
28.04.2017
10:21:04
Кому как. Я работаю с довольно разумными людьми в данном плане. Если бы им было не норм - они выбрали бы что-то другое.

Google


Snusmumriken
28.04.2017
10:25:12
Но сам веб сейчас, имхо, слишком стрёмен: людям лень писать три строчки ajax-запроса, они хотят одну строчку, поэтому подключают десять фреймворков по 5-10мб каждый. Низкий порог входа провоцирует обилие макак-с-лептопом, которые не умеют в оптимизацию и даже простейший sql, поэтому подрубается ещё одна orm-либа. А то и не одна. А потом проект становится таким жирным, что только v8 спасает его от зависаний на минуты, пока все скрипты отработают. Самое противное то, что потом эти люди фигачат свои фреймворки, рекламируют их, и остальные сайты становятся ещё более говёными чем были.
Браузер им в этом помогает, кешируя всё что можно и что нельзя в оперативке, в результате имеем вкладки по пол гига каждая. Спасибо конечно, но имхо, веб 1.0 был честнее. Хоть там и надо жмакать f5 ))))
По моему мнению, веб = раковая опухоль. Там давно нужна смена парадигмы на "загружаемое приложение, использующее почти только стандартные библиотеки браузера, и минимум загружаемых"


Alex Фэils?︙
28.04.2017
10:26:47
Но сам веб сейчас, имхо, слишком стрёмен: людям лень писать три строчки ajax-запроса, они хотят одну строчку, поэтому подключают десять фреймворков по 5-10мб каждый. Низкий порог входа провоцирует обилие макак-с-лептопом, которые не умеют в оптимизацию и даже простейший sql, поэтому подрубается ещё одна orm-либа. А то и не одна. А потом проект становится таким жирным, что только v8 спасает его от зависаний на минуты, пока все скрипты отработают. Самое противное то, что потом эти люди фигачат свои фреймворки, рекламируют их, и остальные сайты становятся ещё более говёными чем были.
Браузер им в этом помогает, кешируя всё что можно и что нельзя в оперативке, в результате имеем вкладки по пол гига каждая. Спасибо конечно, но имхо, веб 1.0 был честнее. Хоть там и надо жмакать f5 ))))
По моему мнению, веб = раковая опухоль. Там давно нужна смена парадигмы на "загружаемое приложение, использующее почти только стандартные библиотеки браузера, и минимум загружаемых"
+


Рома
28.04.2017
10:28:05
А какой там результат?

Alex Фэils?︙
28.04.2017
10:28:25

Рома
28.04.2017
10:28:25
print "все сделано" на луа тоже быстро сработает

Alex Фэils?︙
28.04.2017
10:28:51
Но он не посчитает ж)

Snusmumriken
28.04.2017
10:29:12
Угу. Так можно.
А если у тебя вычисление ханойской башни только после того как ты принял состояние игры с сервера, и там могут быть очень разное количество и расположение этажей?
Ну да, квиксорт на этапе компиляции тоже не работает с заполняемыми в процессе исполнения структурами. Но тогда теряется суть квиксорта: можно сортировать хоть пузырьком. Просто чуть дольше компилиться будет.

Alex Фэils?︙
28.04.2017
10:30:15
Тогда никого компайл-тайм, эт да

Snusmumriken
28.04.2017
10:32:03
Карочи, всю статику можно обрабатывать на этапе компиляции.
Это как макросы.

Рома
28.04.2017
10:32:06
Ещё насчет веба, если сказать, что все можно сделать на ванильном js, код будет понятнее, работать будет во многом раз быстрее, это сейчас означает выглядеть нубом, который *ничего* не умеет, и просто не может осилить современный веб, вот в чем цимес

Snusmumriken
28.04.2017
10:33:19
Ну, ванильный js бедноват, и ты будешь очень долго писать простые вещи.
Просто сами библиотеки должны быть крошечными и выполнять те самые простые вещи, подключаясь только при необходимости, и не подключая иных библиотек (хоть это и может выдать некоторое дублирование кода). Вместо пихания фреймворка-на-все-случаи-жизни.

Рома
28.04.2017
10:34:19
луа тоже бедноват, истинный фанат (я) самую сложную задачу примет как вызов и зад всем надерет

Snusmumriken
28.04.2017
10:35:59
Только ты будешь это делать долго.
Я тоже долго (пару лет) писал себе либы на каждый чих.
Часть из них не нужна, другая часть требует переписывания, третья часть - отличный инструментарий.
Это всё равно велосипедописательство, но я это делал в основном для самообучения, и потому что существующие библиотеки не такие сахарные.

FailsBot
28.04.2017
10:36:33
Alex Ф-ф-фэils!?︙ вспомнил свои велосипедолибы начала 2000-х

Рома
28.04.2017
10:36:36
Там есть геттеры и сеттеры, вот и вся реактивность, ничего в этом долгого нет

Snusmumriken
28.04.2017
10:37:29
Мы про разное говорим.
Дзен - в отсутствии крайностей.
Фронтэнд склонил баланс сил в сторону жирноты, и потянул за собой бекенд.
Ладно, я успешно пожаловался на "четырёх гигов оперативки не хватает для хрома((((". Пора заканчивать оффтоп.

Чай
28.04.2017
16:06:59
Интересный трюк, спасибо.

Yuriy
28.04.2017
18:02:43
Всем привет, все еще работаю с gsub
3 параметром может быть функция
Она точно может в себя принимать более одного Аргумента?
Сейчас я делаю так
string.gsub(str,pattern,function(s,myVar) print(myVar) end)
Мою переменную функция ен видит

fgntfg
28.04.2017
18:06:37
А если сказать function (...)?

Google

Yuriy
28.04.2017
18:09:04
так она анонимная
gsub ругается если ему подставить не анонимную функцию
точнее описанную ранее
то есть если написать
function myFn(...)
end
и потом
gsub(str,pattern,myFn(a,b))
то gsub ругнется

Tverd
28.04.2017
18:17:45
gsub(str,pattern,myFn)

Yuriy
28.04.2017
18:18:09
без входных параметров?

Tverd
28.04.2017
18:18:17
ну да

Yuriy
28.04.2017
18:18:43
то есть передат ьв нее свой параметр не вариант получается...

Tverd
28.04.2017
18:19:44
никогда не пробовал) но тогда придется динамическую делать

Admin
ERROR: S client not available

Snusmumriken
28.04.2017
18:22:53

Yuriy
28.04.2017
18:24:02
Окей.
То есть крмое как через глобальную туда передавать что то других путей нет..

Snusmumriken
28.04.2017
18:25:58
Эм. Можно сделать генератор с замыканием.
function stringirator(arg1, arg2, arg3)
return function(char)
return char .. arg2 .. arg3 .. arg1
end
end
str = str:gsub('.', stringirator('.', '.', '.'))
Эта хрень будет добавлять каждому символу многоточие, если что.
Это стандартное правило: если куда-то что-то нельзя передать никак как через глобальную - фигачим замыкания.

Yuriy
28.04.2017
18:29:43
Не .Я не против) надо просто понять как это работает) Пока не въехал

Snusmumriken
28.04.2017
18:30:36
Смари: Функция которая возвращает функцию, которая использует переменные, объявленные в первой функции.
Внешняя функция работает оболочкой над второй.
И всё что объявлено в первой - работает во второй, но не работает нигде больше, потому что локальное пространство замкнуто.

Yuriy
28.04.2017
18:31:12
Не. Я это понимаю))
Я не совсем пока что одупляю как эт оприменить к gsub
чтобы передать переменную

Snusmumriken
28.04.2017
18:31:30
Пихнуть вторым аргументом функцию, сгенерированную стрингиратором, которая использует всякую фигню которую ты передал стрингиратору.

Google

Yuriy
28.04.2017
18:31:55
У gsub вторая переменная это же паттерн
Так ведь?

Snusmumriken
28.04.2017
18:33:05
Смотря как вызывать.
string.gsub('str', 'patt', 'str'/func/{table})
str:gsub('patt', 'str'/func/{table})
Я имею ввиду второй вариант.

Yuriy
28.04.2017
18:33:49
а. ну мне по идее 1 нужен
У меня во втоорм арг паттерн который должен мачиться

Snusmumriken
28.04.2017
18:34:08
Пофигу как вызывать. Результат один и тот же. Строки = объекты с методами, которые можно дёргать через двоеточие.

Yuriy
28.04.2017
18:34:31
а
Все
Туплю
Понял
Спасибо!

Snusmumriken
28.04.2017
18:35:42
Карочи, если функцию из стрингиратора в качестве третьего аргумента - эта функция сможет использовать всё что ты передал стрингиратору.
Вот такой я умный :В

Yuriy
28.04.2017
18:35:56
да да)) я уже понял)
Спасиб)

Snusmumriken
28.04.2017
18:38:32
Напрямую сразу создать строку и дёрнуть её метод выражением типа такого, нельзя:
a = 'yormammaisfat':match('yo.')
Но можно заключив в скобки:
a = ('yormammaisfat'):match('yo.')
Теперь print(a) --> 'yor'

Yuriy
28.04.2017
18:40:22
Я ж говорил что lua крутой язык) мне никто не верит))

Snusmumriken
28.04.2017
20:43:23
Нужны доказательства.
Почему луа - крутой язык? Тут же всё не как у людей.
Индексация - с единицы, нельзя пихать в функции множественные результаты нескольких функций, типа:
function foo() return 1, 2 end
function bar() return 3, 4 end
function foobar(a, b ,c ,d) print(a, b, c, d) end
foobar(foo(), bar()) --> 1, 3, 4
Это вообще законно?
Нельзя делать цепочки сравнений: a > b > c - ошибка!

Philipp
28.04.2017
20:43:58
Нужны доказательства.
Почему луа - крутой язык? Тут же всё не как у людей.
Индексация - с единицы, нельзя пихать в функции множественные результаты нескольких функций, типа:
function foo() return 1, 2 end
function bar() return 3, 4 end
function foobar(a, b ,c ,d) print(a, b, c, d) end
foobar(foo(), bar()) --> 1, 3, 4
Это вообще законно?
Нельзя делать цепочки сравнений: a > b > c - ошибка!
Луа - хороший инструмент

Snusmumriken
28.04.2017
20:44:08
Синтаксис похож на древний вонючий бейсик! do-end - это омерзительно!
Они не могли скобки завести? С сишки же кальку делали!

Philipp
28.04.2017
20:44:08
Но не скажу, что прям зе бест :D
(Хотя и любимый язык)

Yuriy
28.04.2017
20:44:50
Если сравнивать с JS то тут все гораздо круче.
Как минимум все гибче

Alexandr
28.04.2017
20:44:59