Roman
Что означает крошечный проект?
Roman
По сравнению с некрошечным
Tverd
Snusmumriken
Хех, ну тут может и не шибко крошечный.
И как отлаживается?
Tverd
да ошибок мало на удивление, отладка не фонтан конечно, но скорость написания и читабельность прямо радуют
Snusmumriken
Или ты в zerobrane?
Tverd
не, в саблайме
Snusmumriken
Да, предупреждаю что это только моё мнение о мунскрипте, основанное на том что у меня всё очень большое и очень стрёмное, а ещё необходимость в безумной производительности, и я снабжён кучей собственных библиотек на любой чих. И не люблю компилировать/пересобирать, но мне нужен максимально удобный дебаг.
Tverd
Ну гуд, каждому свое, я говорю что не надо бояться пробовать, может кому-то и понравится )
Roman
Можно немного оффтопика?
Говорю заказчику, что реакт говно и с него лучше бы проект переводить.
Он говорит, как говно, вот на нем фейбук сделали и ничего.
Открываю фейсбук, никакого реакта там не нахожу.
Кто знает, где на фейсбуке есть реакт?
Snusmumriken
https://facebook.github.io/react/
Roman
Не сам реакт, а в соц сети фейсбук где он используется
Snusmumriken
Ну, соцсеть и есть разработчик реакта.
Подозреваю что для чего-то они его писали.
Roman
Имеет место скрытый замысел, они его сделали, чтобы сайты конкурентов тормозили, а сам фейсбук на него переводить не спешат
Snusmumriken
Подозреваю что где-то он используется.
Ой, ну блин, такая подстава - это как-то по детски : )
У меня на работе делают часть простых вещей с реактом. Ничего страшного.
Он жирен, это да, но свои задачи исполняет.
На хабре есть забавное описание: https://habrahabr.ru/post/249107/
Snusmumriken
Он захайпован, это да. Но в интернете сейчас слишком много хайпа по поводу веб-библиотек и фреймворков. Сам вебом не занимаюсь, потому что о-о-о-о-очень скучно.
Да, за это платят, но ещё и работать, занимаясь скучным делом - я не настолько убийца времени.
🦥Alex Fails
Snusmumriken
После компиляции - тоже не ноль времени. Просто меньше.
Тот же квиксорт на динамически изменяемой структуре - и после компиляции будет занимать не меньше n log(n) времени.
Roman
Это самое худшее, с чем приходилось сталкиваться, он ужасен во всем, от клонирования всех состояний каждый раз при изменении состояния, до загрузки стилей в сами элементы, что какие грибочки привели к идее дома теней - вообще молчу, </offtopic>
Snusmumriken
Кому как. Я работаю с довольно разумными людьми в данном плане. Если бы им было не норм - они выбрали бы что-то другое.
Snusmumriken
Но сам веб сейчас, имхо, слишком стрёмен: людям лень писать три строчки ajax-запроса, они хотят одну строчку, поэтому подключают десять фреймворков по 5-10мб каждый. Низкий порог входа провоцирует обилие макак-с-лептопом, которые не умеют в оптимизацию и даже простейший sql, поэтому подрубается ещё одна orm-либа. А то и не одна. А потом проект становится таким жирным, что только v8 спасает его от зависаний на минуты, пока все скрипты отработают. Самое противное то, что потом эти люди фигачат свои фреймворки, рекламируют их, и остальные сайты становятся ещё более говёными чем были.
Браузер им в этом помогает, кешируя всё что можно и что нельзя в оперативке, в результате имеем вкладки по пол гига каждая. Спасибо конечно, но имхо, веб 1.0 был честнее. Хоть там и надо жмакать f5 ))))
По моему мнению, веб = раковая опухоль. Там давно нужна смена парадигмы на "загружаемое приложение, использующее почти только стандартные библиотеки браузера, и минимум загружаемых"
🦥Alex Fails
Но сам веб сейчас, имхо, слишком стрёмен: людям лень писать три строчки ajax-запроса, они хотят одну строчку, поэтому подключают десять фреймворков по 5-10мб каждый. Низкий порог входа провоцирует обилие макак-с-лептопом, которые не умеют в оптимизацию и даже простейший sql, поэтому подрубается ещё одна orm-либа. А то и не одна. А потом проект становится таким жирным, что только v8 спасает его от зависаний на минуты, пока все скрипты отработают. Самое противное то, что потом эти люди фигачат свои фреймворки, рекламируют их, и остальные сайты становятся ещё более говёными чем были.
Браузер им в этом помогает, кешируя всё что можно и что нельзя в оперативке, в результате имеем вкладки по пол гига каждая. Спасибо конечно, но имхо, веб 1.0 был честнее. Хоть там и надо жмакать f5 ))))
По моему мнению, веб = раковая опухоль. Там давно нужна смена парадигмы на "загружаемое приложение, использующее почти только стандартные библиотеки браузера, и минимум загружаемых"
+
🦥Alex Fails
Roman
А какой там результат?
Roman
print "все сделано" на луа тоже быстро сработает
🦥Alex Fails
Но он не посчитает ж)
Snusmumriken
Угу. Так можно.
А если у тебя вычисление ханойской башни только после того как ты принял состояние игры с сервера, и там могут быть очень разное количество и расположение этажей?
Ну да, квиксорт на этапе компиляции тоже не работает с заполняемыми в процессе исполнения структурами. Но тогда теряется суть квиксорта: можно сортировать хоть пузырьком. Просто чуть дольше компилиться будет.
🦥Alex Fails
Тогда никого компайл-тайм, эт да
Snusmumriken
Карочи, всю статику можно обрабатывать на этапе компиляции.
Это как макросы.
Roman
Ещё насчет веба, если сказать, что все можно сделать на ванильном js, код будет понятнее, работать будет во многом раз быстрее, это сейчас означает выглядеть нубом, который *ничего* не умеет, и просто не может осилить современный веб, вот в чем цимес
Snusmumriken
Ну, ванильный js бедноват, и ты будешь очень долго писать простые вещи.
Просто сами библиотеки должны быть крошечными и выполнять те самые простые вещи, подключаясь только при необходимости, и не подключая иных библиотек (хоть это и может выдать некоторое дублирование кода). Вместо пихания фреймворка-на-все-случаи-жизни.
Roman
луа тоже бедноват, истинный фанат (я) самую сложную задачу примет как вызов и зад всем надерет
Snusmumriken
Только ты будешь это делать долго.
Я тоже долго (пару лет) писал себе либы на каждый чих.
Часть из них не нужна, другая часть требует переписывания, третья часть - отличный инструментарий.
Это всё равно велосипедописательство, но я это делал в основном для самообучения, и потому что существующие библиотеки не такие сахарные.
FailsBot
Alex Ф-ф-фэils!🌠︙ вспомнил свои велосипедолибы начала 2000-х
Roman
Там есть геттеры и сеттеры, вот и вся реактивность, ничего в этом долгого нет
Snusmumriken
Мы про разное говорим.
Дзен - в отсутствии крайностей.
Фронтэнд склонил баланс сил в сторону жирноты, и потянул за собой бекенд.
Ладно, я успешно пожаловался на "четырёх гигов оперативки не хватает для хрома((((". Пора заканчивать оффтоп.
Yuriy
Всем привет, все еще работаю с gsub
3 параметром может быть функция
Она точно может в себя принимать более одного Аргумента?
Сейчас я делаю так
string.gsub(str,pattern,function(s,myVar) print(myVar) end)
Мою переменную функция ен видит
fgntfg
А если сказать function (...)?
Yuriy
так она анонимная
Yuriy
gsub ругается если ему подставить не анонимную функцию
Yuriy
точнее описанную ранее
Yuriy
то есть если написать
function myFn(...)
end
и потом
gsub(str,pattern,myFn(a,b))
то gsub ругнется
Tverd
gsub(str,pattern,myFn)
Yuriy
без входных параметров?
Tverd
ну да
Yuriy
то есть передат ьв нее свой параметр не вариант получается...
Tverd
никогда не пробовал) но тогда придется динамическую делать
Yuriy
Окей.
То есть крмое как через глобальную туда передавать что то других путей нет..
Snusmumriken
Эм. Можно сделать генератор с замыканием.
function stringirator(arg1, arg2, arg3)
return function(char)
return char .. arg2 .. arg3 .. arg1
end
end
str = str:gsub('.', stringirator('.', '.', '.'))
Snusmumriken
Эта хрень будет добавлять каждому символу многоточие, если что.
Snusmumriken
Это стандартное правило: если куда-то что-то нельзя передать никак как через глобальную - фигачим замыкания.
Yuriy
Не .Я не против) надо просто понять как это работает) Пока не въехал
Snusmumriken
Смари: Функция которая возвращает функцию, которая использует переменные, объявленные в первой функции.
Внешняя функция работает оболочкой над второй.
И всё что объявлено в первой - работает во второй, но не работает нигде больше, потому что локальное пространство замкнуто.
Yuriy
Не. Я это понимаю))
Я не совсем пока что одупляю как эт оприменить к gsub
Yuriy
чтобы передать переменную
Snusmumriken
Пихнуть вторым аргументом функцию, сгенерированную стрингиратором, которая использует всякую фигню которую ты передал стрингиратору.
Yuriy
У gsub вторая переменная это же паттерн
Так ведь?
Snusmumriken
Смотря как вызывать.
string.gsub('str', 'patt', 'str'/func/{table})
str:gsub('patt', 'str'/func/{table})
Я имею ввиду второй вариант.
Yuriy
а. ну мне по идее 1 нужен
У меня во втоорм арг паттерн который должен мачиться
Snusmumriken
Пофигу как вызывать. Результат один и тот же. Строки = объекты с методами, которые можно дёргать через двоеточие.
Yuriy
а
Yuriy
Все
Yuriy
Туплю
Yuriy
Понял
Yuriy
Спасибо!
Snusmumriken
Карочи, если функцию из стрингиратора в качестве третьего аргумента - эта функция сможет использовать всё что ты передал стрингиратору.
Вот такой я умный :В
Yuriy
да да)) я уже понял)
Yuriy
Спасиб)
Snusmumriken
Напрямую сразу создать строку и дёрнуть её метод выражением типа такого, нельзя:
a = 'yormammaisfat':match('yo.')
Но можно заключив в скобки:
a = ('yormammaisfat'):match('yo.')
Теперь print(a) --> 'yor'
Yuriy
Я ж говорил что lua крутой язык) мне никто не верит))
Snusmumriken
Нужны доказательства.
Почему луа - крутой язык? Тут же всё не как у людей.
Индексация - с единицы, нельзя пихать в функции множественные результаты нескольких функций, типа:
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
Синтаксис похож на древний вонючий бейсик! do-end - это омерзительно!
Они не могли скобки завести? С сишки же кальку делали!
Yuriy
Если сравнивать с JS то тут все гораздо круче.
Как минимум все гибче
꧁Александр
Yuriy
вообще не напрягают do end then и тд
Yuriy
удобнее чем скобки кстати
Snusmumriken
Ну, тебя не напрягают, а у меня есть множество знакомых, которых напрягает.