swg2you
-
Публикации
219 -
Зарегистрирован
-
Посещение
-
Победитель дней
20
Сообщения, опубликованные пользователем swg2you
-
-
Вот такой пример программы:
s = "privet" a = string.len(s) for l=1, a do m = string.byte(s,l) print (m) end
На выходе получим 112, 114, 105, 118, 101, 116
Но если текст будет русским, то на каждый символ будет по два трехзначных числа. А это уже не очень удобно.
Читал, что можно как-то разделить с помощью string.gmatch(s, "%w+"), но как это сделать я не понял.
... s = 'С Новым Годом" for i = 1, unicode.len(s) do print( unicode.sub(s, i, i) ) end ...
-
2
-
-
1. код
elseif(type(v) == "function") then error("value in function.") endдолжен выглядеть
else error("unsupported type of value") endв луа есть еще парочка типов отличных от булей чисел и строк.
2. Типы ключей тоже нужно проверять. Насколько я помню, ключем в луа может выступать любой тип кроме нила и нана.
3. Не совсем понятно где может понадобиться такая сериализация.
-
Оставлю это здесь:
https://en.wikipedia.org/wiki/ASCII_art
https://en.wikipedia.org/wiki/ANSI_art
https://en.wikipedia.org/wiki/AAlib
http://ansilove.sourceforge.net/examples.html
P.S.
ANSI запилите, велосипедисты. Тонны арта же за пару десятилетий скопилось.

upd (aalib умеет не только картинки):
-
1
-
-
Ха, а я думал ты уже наигрался с луа и пошел дальше ПО для турбин писать

Правильно думал, я вообще с программированием уже давно наигрался. Сейчас играюсь проектируя лазерный гравер, уже вторую модификацию выпускаем.
А в кодирование меня ЛУА потянул(-а, -о). Концепция языка, красивая, зараза, вызвала довольно длительный рецидив. Пришлось, скрипя мозгами, погружаться в ночные медитации
Да и приятно было тряхнуть стариной, и с себе подобными пообщаться. -
.Шутки шутками, а я правду говорю, вы же тут странное поведение lua обсуждаете, ответ можно найти в исходниках почему такая логика.Можно даже разработчикам сообщить, что бы пофиксили.
Ноп. Коротко говоря, - Это не баг это фича!
Это не странное, а более чем нормальное поведение ЛУА. Это поведение "оператора пакетного присваивания" освещено в официальной документации, но такое поведение "пакетного присваивания" порождает некоторые не совсем очевидные моменты, которые я, обозвав "забавными", и счел нужным запостить в отдельную тему.
С образовательной целью, так сказать. Чтобы те, кто этой фичи не знает, могли поразмышлять над примерчиком, понять почему так происходить и уяснить для себя правило ЛУА, "Пакет только в конце". Ну и чтобы потрындеть над забавностями столь чудесного языка, чего уж там греха таить.
-
Читай исходники, там всё расписано.
Орехи грецкие кушай ты. Йода много в них есть.

-
И еще один примерчик по теме:
function ret123() return 1, 2, 3 end f, g, h, i = 0, ret123() print(f,g,h,i) --> 0 1 2 3 f, g, h, i = ret123(), 4 print(f,g,h,i) --> 1 4 nil nil-
1
-
-
Реализация собственного варианта протокола передачи файлов, да еще и монтированием удаленной файловой системы - хорошая задача.
Второй этап - реализация клиента совместимого с общепринятым протоколом FTP? Было бы круто.
-
1
-
-
Сотни нефти тому, кто реализует XMPP на СС, ну или хотя-бы простенький клиент чтоб к жабке подключаться. )
-
print("10%") ... print("100%")А зачем имитация прогресса? о_О
Лучше уж, выводить диагностическое "lock downloaded"
И как верно подметил AlexCC, инсталлятор это круто, но ссылки на код нужны тоже.
Посмотрел,и только сейчас заметил,что нет скобок у врайтов и принтов.Разве так можно?
Синтаксис Lua разрешает вызов функции без указания скобок, если аргумент это конструктор таблиц или строка.
Т.е. вместо f ({1,2,3}) и f ("text") можно писать f {1,2,3} и f "text". Чтоб не плодить лишних скобочек.
Подробнее смотри п.3.4.9 официальной документации.
-
1
-
-
Можно создать программу, в которой для каждого тьюрмита создается отдельный поток. Например есть один тьюрмит-поток. Ходит-ходит, нажрался и размножается. Создаётся второй тьюрмит-поток и он тоже размножается...
Тьюрмит идет к станции и крафтит там свою детку, а в конце армия тьюрмитов зохавает весь сервер.
Даешь машинный апокалипсис! )
-
Но монитор третьего уровня почему-то выводит больше чем 240 цветов и больше 16 цветов grayscale. Но за формулу все-равно спасибо. Вот таблица цветов, которую я сгенерировал по вашей формуле. Может быть я где-то накосячил.
Код генерации таблицы:
local f = io.open("colors", "w") local line = 0 local x = 0 f:write( "colors = {\n" ) for r=0,5 do for g=0,7 do for b=0,4 do line = " [" .. x .. "] = 0x" .. string.format("%X", r*0x330000 + g*0x2400 + b*0x3F) .. ",\n" f:write( line ) x = x + 1 end end end for i=1, 15, 1 do line = " [" .. 240+i .. "] = 0x" .. string.format("%X", gpu.getPaletteColor(i)) .. ",\n" f:write( line ) end f:write( "}\n" ) f:close()Таблица и код вроде верные.
При записи цвета 0xRRGGBB в монитор, значение 0xRRGGBB приводится к сокращенной палитре, реальное значение записанного цвета можно посмотреть вычитав знакоместо с помощью gpu.get. Т.е. если мы сделаем:
gpu.setForeground(0x123456) gpu.set(5,5,' ') local s, fg, bg = gpu.get(5,5)
То в fg мы получим вовсе не 0x123456, а приведенное значение. Алгоритм приведения неизвестен, но приведенные значения наиболее близки к палитре 6*8*5+16.
Попробуй в sicot.lua покликать по битам меняя цвет, а потом кликнув на цвет посмотреть реальное значение приведенного цвета, чтобы узнать, какие именно цвета выводятся сверх палитры.
В палитре Тир2 я находил аномальный 17-й цвет, возможно такие цвета есть и в Тир3.
ЗЫ
Реальные значения цветов могут немного отличаться от сгенерированных по формуле, это сделано для упрощения формулы генерации. Визуальных отличий быть не должно.
-
1
-
-
Кстати, знаешь, какие костыли мы придумываем, чтобы сделать адекватную трансляцию 0xffffff -> 0xff? Кошмар какой-то - начинали с генерации 8-битной палитры и заканчиваем какими-то совершенно безумными формулами

Сделал пару обновлений библиотеки. Добавил альфа-канал и провел пару оптимизаций.
Кстати, насчет того, что нельзя засунуть в 1 байт целый цвет. Оказывается я ошибался и кодировал цвета в 24 битном формате, что очень избыточно для 8 битного цвета, который используется в OpenComputers. Можно цвет закодировать и 1 байтом. Проверено на практике. А совсем недавно пытался доказать паре человек обратное

OC, для мониторов тир3, юзает стандартную программную 8-битную палитру 6*8*5+16
Внутри кода sicot.lua есть простая формула генерации, и комментарии по безопасной палитре.
-
2
-
-
Пожалуйста, реализовывайте. Покажите что это будет.
Пока что я лишь поверхностно понимаю вашу суть.
Но повторюсь еще раз, в частности для меня это скучно и не интересно.
Ну поиграешься пару раз, потом надоест (выгоды для меня нет никакой, кроме как убивание времени в игре).
Выгоды? о_О
-
P.S. @swg2you, не забывай главное правило экономики (игровой фондовой биржи) - необходимо чтобы в финансовых операциях участвовало более 1 человека, иначе экономика (игровая) упадет и не будет интересна никому.
Так что нужно завлечь в разработку больше игроков чтобы продукт был успешен, интересен и востребован.
Концепция которую я описал рассчитана именно на многопользовательскую "игру".
1 сервер - депозитарий, на котором реализовано мат. обеспечение "биржи".
Несколько "информационных терминалов" для отображения общего состояния "биржи", котировок, сделок, и т.п.
И множество "торговых терминалов" которые собственно и используются игроками для игры на бирже.
Причем, если протокол обмена продумать тщательно, то можно организовать даже межсерверное взаимодействие через "интернет" карты, и подтянуть "брокеров" с других проектов.
-
Идеологи, вы для начала определитесь какими фондами будет торговать биржа, тогда и формат проявится.
В качестве гипотетических внутриигровых фондов могут выступать: владение "землёй" определенными чанками, разрешение на рудную разработку чанков, разрешение на торговлю рудами, разрешение на торговлю изделиями, разрешение на постройку перерабатывающих предприятий эксплуатация таких предприятий, и т.п.
Но такая тема годится скорее для специализированного сервера с "экономическим уклоном". Для "програмерского" сервера лучше подойдет написание симулятора биржевых торгов, где будет торг виртуальных заводов-газет-пароходов, тугриков и прочих абстракций. В этом случае и администрацию беспокоить не нужно, и задача менее экономическая и более программистская.
- Определить алгоритм колебаний "цены" торгуемых абстракций.
- Выделить отдельный комп под депозитарий.
- Определить протокол работы с депозитарием.
- Написать депозитарий.
- Написать информационный терминал.
- Написать торговый терминал.
1-й пункт самый сложный.
Можно конечно тупо рандомную цену и бесконечный объем предложений/спроса. Но это, извините, симулятор рулетки, а не биржи.
Более "биржевой" вариант, когда амплитуды случайных флуктуаций объемов спроса и объемов предложения обратно пропорциональны частотам, а цена формируется косвенно из соотношений объемов спрос/предложение. Проще говоря, спрос и предложения постоянно немного колебаются, изредка случаются большие скачки, а очень редко наступает "большой переполох" и "паника на бирже". Чем выше амплитуда скачка, тем реже он случается, а в качестве коэфициентов "случания" и "уровня паники/колебаний"- Великий Рандом.
Действия игроков с депозитарием должны суммироваться с текущим состоянием биржи влияя на следующее состояние. Т.е. размещение игроком предложения или спроса - приведет к изменению соотношения спрос/предложение и качнет цены.
Симулятор должен выступать в роли тысяч виртуальных игроков. Так, чтобы передавить его и взять под контроль биржевые колебания было очень сложно.
-
Улыбнули алгоритмы круга и кольца.
function es.create_circle(rad) local model={} for x=-rad,rad do for y=-rad,rad do if math.sqrt(x^2+y^2)<=rad then table.insert(model,{x,y}) end end end return model end function es.create_ring(rad) local model={} for x=-rad,rad do for y=-rad,rad do if math.ceil(math.sqrt(x^2+y^2))==rad then table.insert(model,{x,y}) end end end return model endЯ оставлю это здесь:
-
1
-
-
Ну здравствуй Forex@openComputers
-
Ну раз он предложил, значит он и будет главным спонсором сервиса

@swg2you, вам нужно всего лишь оплатить какой-нибудь никудышный смс-шлюз и ваши мечты будут реализованы

Если мне нужен какой-нибудь смс-шлюз для АСУ, я подключаю какой-нибудь GSM-модем к компьютеру с АСУ )
Тот-же siemens mc-35i умеет и СМС и факс, а если голосовой разъем закинуть на вход/выход звуковой карты - то и голос умеет, еще и с интернетом по gprs, вполне достаточным для мониторинга состояния объекта.
Еще проще, когда свободно-программируемый контроллер умеет АТ-команды по RS-232. Тогда и компьютера никакого не нужно. Научить контроллер, при аварийке, АТ-командой СМС-ить через модем - как два пальца.
-
Библиотека шикарна.
Дает возможность строить полнофункциональные промышленные системы управления.
Сеть контроллеров на bios-net, управляемая центральным узлом + эта библиотека = современная промышленная АСУ.
irl, автоматика viessmann для котелен работает по такой же схеме. + там еще выход за уставки и аварийные ситуации через шлюз СМС-ятся на телефон диспетчера, и отчеты по факсу можно отправлять.
Для полного фарша только SCADA с каким-то modbus-ом не хватает.
-
ну приблизительно они так и видят свои программы) Но так как у нас мозгов не хватает создать что-то свое и мы жили и живем в застое и мы дикий народ и очень отстали в ИТ, нам приходится пользоваться всем заморским пиратским ПО, языками разработки и пить кока-колу с чипсами

Мы вовсе не дикий народ, и это не от нехватки мозгов. Мозгов полно везде, и очень даже светлых. Просто у нас много поколений вытравливали элементарное самоуважение, в результате презрение к своему и любовь к заморскому. Принцип жизни, - Импортное лучше, - кажется еще с Петра первого начался и, к сожалению, продолжается по сей день.
...
Я еще застал в школе преподавание алгоритмического языка по Ершову. Со своими "пока" "нц" и "кц".
-
1
-
-
Немного не соглашусь.
У неологизма "метатаблица" есть как минимум пара преимуществ, по сравнению с другими вариантами.
Первое - он широко распространен (в контексте Луа). Как в английском так и в русском языке.
Второе - это наиболее точный перевод термина "metatable" на русский. То что перевод так похож на оригинал - лишь облегчает понимание мануалов.
Так что тут уже все решено за нас создателями языка.
Термин "суб-таблица" возможно прижился бы. Но он звучит менее определенно. "Под-таблица". Это таблица-элемент? Таблица операторов? Или что-то еще?
Приставка "мета-" носит в русском языке (хотя она несомненно иностранного происхождения) смысл абстрактности и обобщенности. Что вполне подходит к случаю, на мой взгляд.
мета- из греческого "рядом с" перекочевало как приставка в английский и русский, и укоренилось в узких значениях: на другом уровне, выше, ниже, после, между.
Мета-фора, мета-язык, мета-физика, и т.п.
А насчет распространенности это да. Мы любим кальку. Большая часть слов в современном Русском - заимствованы.
-
Однако, на мой взгляд, в статье на подобную тему это неизбежно. И уж тем более не стоит заменять термин "метатаблица" на неологизм собственного сочинения, вводя в заблуждение читающих статью новичков.
Тут как раз "метатаблица" и есть неблагозвучный калькированный с английского неологизм.
Если бы документацию писали, а не переводили, то термин скорее всего был бы "суб-таблица" или составной, но более точный по сути "таблица операторов". А в случае с __index и __newindex было бы оговорено, что в качестве таблицы операторных методов может выступать обычная таблица индексов-значений.
ЗЫ
"метаметод" - тоже, еще та корявость ) мета-метод это как?
-
Немного странный результат у последнего примера, правда? Попробуйте это объяснить.--Если первый аргумент - таблица, то присваиваем ему значение 42, иначе его изначальное значениеШутишь?
---
Ме-та-та-бли-бли-бли-цы - уж-жасное название. Еще ужаснее конструкции вида:
при работе с метатаблицами, она устанавливает таблице метатаблицу. Первый аргумент здесь — таблица, второй — метатаблицаПрочитал, теперь заикаюсь.
Материал хорош, и грамотен, но та-та-та-блицы с ме-ме-ме-та-методами нужно подавать проще и другими словами.

Разделить строку на символы - русский текст
в Разные (отсортировать)
Опубликовано:
В unicode есть gmatch?
о_О