Pull to refresh
10
0
Денис Гончаров @exe_com

User

Send message
Пункт 2 — вы правы, но есть возможность «костыль» отключить… статья не о том что так надо делать, а о том что есть особенности при преобразовании из луа в жисон и обратно а решение приводится для тех у кого есть проблема и ее надо решить. к примеру в моем проекте с сервера приходит таблица с инвентарем формата {id1=count1, id2 = count2..,idN = countN} и применение доступа ar[tostring(item.id)] — расстраивает:)
Замечательно, что разработчики короны заглядывают на хабр:)
Годная история, когда-то был точно в такой же «своей первой конторе», но вроде до сих пор они живы(и как и раньше слегка на плаву) и да с перегаром на работу и иногда поспать на рабочем месте — это была моя роль :)
я в свое время решал проблемы с utf всякими самобытными костылями вроде этого:
utflen = function(ustring)
	local i = 0
	for uchar in string.gfind(ustring, "([%z\1-\127\194-\244][\128-\191]*)") do
		i = i + 1
	end
	return i
end
Статья рассчитана для новичков. Lua замечательный язык, но исходя из своего опыта мне кажется что не все одинаково допустимо. Я делаю советы типа «плохо / хорошо» и надеюсь что это поможет реже допускать сложные логические ошибки. Касаемо автора книги и языка, я ни в коем случае не оспариваю его авторитет, но нередко творение великих начинает жить своей жизнью сразу после первого выхода в свет и становится не ясно так ли действительно хотел творец. Взять к примеру не простую судьбу оператора goto который из версии в версию мигрирует в угоду просьбам пользователей и почти всегда является злом, пожалуй, кроме случая выхода из вложенного цикла.
Да вы правы, но эти тонкости я думал обсудить уже в разрезе изучения Corona SDK. Добавил пояснение. Спасибо.
Я не забыл про метатаблицы, и раздел про них намечался, но как я писал в последнем разделе было принято решение устранить некоторые разделы и в первую очередь этот, причин как минимум три:
  • статья сильно затянулась и даже в нынешнем варианте больше чем обычно принято читать:)
  • эта статья называется не «Библия Lua», т.е. я изначально не ставил цель рассмотреть весь язык и все его возможности
  • В статье я постарался сделать выборку действительно того что нужно начинающему разработчику Lua, а плохому он и сам успеет научится. Я не отрицаю, что метатаблицы это нечто оригинальное в языке, но их полезность лично для меня крайне сомнительна.

Благо всегда найдутся те люди которые захотят научить людей метатаблицам в Lua, например Вы — все в ваших руках!
print(_VERSION)-->>Lua 5.1
Вы опять ищите то чего нет, примеров применения цикла — нет. Если кодописатель захочет иметь возможность часто менять seed, я показал как это делать. Со скоростью выполнения у короны проблем не больше чем скажем у питона (даже дело раза в 2 лучше), а всякого вычислительного бреда на питоне масса. Искать примеры приложений сейчас не вижу смысла, но то что крупные вендоры пишут на короне отличные юзерские gui — это факт, в настоящий момент я связан по рукам подписанным NDA но есть как минимум один известный мне проект который пока что на стадии и альфы, западный, с ожидаемым многомиллионной аудиторией. После релиза смогу показать ссылку на магазины. Корона там была выбрана именно из соображений отличной производительности и удобного механизма реализации кастомизированных gui-компонентов, кроссплатформенности. Так что не вижу смысла делать удивленный вид — годится корона для приложений не хуже других движков. И хватит уже занудить про сид.
А я не смог в свое время решить эту проблему, жаль что с тем нетбуком уже расстался.
вы думаете randomseed хоть что-то ест? И да ни о каком циклическом присвоении речи не было, все примеры используют randomseed один раз. То что рассматривалась возможность периодической подмены сида по сигналу акселерометра, ну я так пробовал, проблем не заметил отлично работает, особенно хорошо для тех проектов где этот сигнал используется игровой механикой, там это даже не выглядит «костылем». И что плохого в криптографии на короне, на этом движке писалось не мало хороших приложений (не игр)?
На русском статей чуть меньше. В статье делается акцент на особенности применения Lua именно в короне. Да для совсем маленьких, но я нахожу такой вариант более приемлемым чем сразу начинать с 100 страницы. На мой взгляд корона в русскоязычном сообществе редкий гость, чего стоят группы в ВК с 500 подписчиками, т.е. писать статьи для «совсем больших» несколько преждевременно.
боюсь вы правы в обоих случаях… чуть позже доработаю статью. спасибо…
да я проверил в том случае где была проблема я действительно использовал http.request на тот момент опыт был совсем никакой и использовал первое что попалось под руку… http.request действительно лагает и короутины решают с ним вопрос.
В действительности запросы network.request завешивают приложение и пример я приводил именно из личного опыта. По замыслу творцов Corona SDK таймер то же должен выполняться в отдельном контексте но вы можете сами провести эксперимент, разместите этот замечательный код где-нибудь в main, соберите приложение и попробуйте им пользоваться:
timer.performWithDelay(100, function()
network.request( урл ресурса с плохим пингом )
end)

Так же можно попробовать грузить файл на сервер по таймеру каждый тик таймера будет завешивать приложение. Мне короутины помогли. А вообще в примере нужно было просто привести пример объекта типа thread…

IMHO из вышесказанного реальной проблемой можно считать только не достаточно широкий формат регулярок, можно было обойтись и вовсе без работы с файлами, каталогами, командной строкой и прочими нехорошими связями с ОС, то что это добавили в принципе сильно навредило языку, чистый скриптовый язык не должен иметь этих костылей. Как рассчитывалось применение lua в реальных проектах — есть серьезный и полновесный базовый движок системы например реализованный на С++, имеется связка со скриптами и предоставлен набор импортируемых функций которые уже могут включать в себя все полноценные атрибуты «красивой жизни» свойственные профессиональному языку для той или иной платформы. Есть у вас полноценная рекурсивная функция обхода всего дерева каталогов реализованная на C++ которая запускается из скрипта и возвращает в скрипт уже набор формализованный данный в виде таблицы со всем результатом поиска. А дальше с помощью скриптов происходит расширение функционала без изменения базовой реализации на C++. Такой был замысел, ну а если вы пытаетесь писать на lua что-то самостоятельно то приходится довольствоваться малым… Что касается синтаксического сахара, что тут сказать — на вкус и цвет… Существование хоть какой-то связи с ОС делает возможным создания плагина ну скажем для VLC с элементами трояна-шифровщика, что как бы плохо.
Спасибо за оценку! Статья стала квинтэссенцией защитных механизмов против шишек набитых мной в Lua за 5 лет, в Corona SDK за 3 года.
у меня есть свитер, с логотипом Lua, созданный по спецзаказу моей женой специально для меня и Луа мне то же светит в темноте)
>>Ещё можно отметить то, что в таблицах нельзя хранить nil, зато отсутствующие в таблице ключи и неопределённые переменные имеют это значение
я постарался отметить. Это очень печальная сторона языка в отношении отладки, но я на стороне тех людей которые не боятся применять Lua в качестве основы своего пользовательского интерфейса, да неофитам придется пройти нелегкий путь что бы начать чувствовать язык кожей, но я против мнения что Lua это «обмазанный другим Г js» — это совершенно другой язык, да с проблемами любого языка с неявной типизацией, но к счастью без необходимости в тройных равенствах (===).

Information

Rating
Does not participate
Location
Краснодар, Краснодарский край, Россия
Date of birth
Registered
Activity