retrocat
в маркет не
на фдройд незнаю, это пока личный проект
Igor
Понятно
retrocat
Неплохо
идей для модулей у меня очень много было
retrocat
а в андройде ещё способ есть вывести цветной текст поэтому можно преукрасить вывод некоторых команд
retrocat
куда угодно
Igor
Ну я за андроид разработку не шарю от слова совсем, всё моё общение с дроидом на уровне программирования сводится к общению с его linux ядром. Запуску личных прожек на С, Lua к примеру. Именно на котлине или жабе я ни разу ничего дельного не писал, разве что в чужие проекты пуллреквесты делал небольшие.
retrocat
я просто решил модули на луа сделать с использованием luaj
retrocat
хотя это не лучшее решение
retrocat
хотя это не лучшее решение
и решил обратиться сюда просто за ревью кода, потому что В интернете и где то ещё для меня мало инфы про него
retrocat
таких вещей многа..
Igor
LuaJ вообще всегда такое себе решение, его стоит использовать в крайних случаях, как по мне. Когда уже например десятки тысяч строк кода на Lua есть и его нужно как-то всобачить в Java приложение.
retrocat
хотя он багован жестко
retrocat
ну luaj для модулей думаю будет нормально
Пока решений я других не видел, можно phiro, jruby
retrocat
Igor
По всему япу используется flatcase, а написано, что camelCase
В последнее время я заметил, что мало кто за кейсы трясётся
Igor
Разве что в компаниях каких-нибудь с жёстким кодстайлом
retrocat
ну кейсы и нейминг для меня почему то важен
retrocat
поэтому я в прошлом приложении чисто все делал флаткейсом
retrocat
а сейчас перешел чисто на камель
Igor
Я вообще их комбинировать стараюсь по всему текущему моему проекту, допустим. Я считаю, что в крайности ударяться не надо и некая золотая середина нужна, где-то уместен один кейс, где-то другой.
Igor
Между сторонними библиотеками, допустим, они сильно разниться могут. Соответственно код уже не получит однообразия.
RapidCodeLab
Приветствую, как быть в таком случае? нужно что-бы парсилось в 1.00
Snusmumriken
Приветствую, как быть в таком случае? нужно что-бы парсилось в 1.00
Оно и так 1.00, числа в луа это флоаты. Или у тебя луа 5.3+ и оно парсится в инт?
RapidCodeLab
#tarantool> type(res.balance); --- - number так то все верно, это видимо уже таранутловские приколы, он в unsigned внутренний переводит, если нет чисел после запятой, вернее если там 0
Snusmumriken
Ты тарантулом тип проверил?
RapidCodeLab
да
Snusmumriken
Опа
Igor
Чего, обучаться пошёл?))))
Anonymous
/
Anonymous
Хм, такое кажется не работает. local tb = {i = 1} function tb:selfDel() self = nil end Как лучше организовать удаление всей таблицы из самой таблицы?
Snusmumriken
Или организовать хранилище: local store = {} local tbl = {} tbl.__index = tbl function tbl:new(x, y, store) local self = setmetatable({}, self) self.x, self.y = x, y self.store = store table.insert(self, store) return self end function tbl:remove() for i, v in ipairs(self.store) do if v == self then return table.remove(store, i) end end end
Igor
Хм, такое кажется не работает. local tb = {i = 1} function tb:selfDel() self = nil end Как лучше организовать удаление всей таблицы из самой таблицы?
В твоём распоряжении только метаметод __gc, который вызовется для таблицы, когда все сильные ссылки на неё будут удалены
Snusmumriken
Хм, такое кажется не работает. local tb = {i = 1} function tb:selfDel() self = nil end Как лучше организовать удаление всей таблицы из самой таблицы?
В твоём случае self это просто локальная ссылка внутри функции. Ты обнулил ссылку. Их может быть ещё много. Это основы любой динамики.
Anonymous
Выходит лучший способ в методе просто все ключи в nil установить.
Highly Likely
Ты скажи задачу, а мы тебе подскажем решение :)
Aqendo
Зачем?
Тут есть кто-то кроме снуса админ? С ума сойти
Anonymous
Есть объект его надо разрушить, что бы потом нельзя было использовать.
Highly Likely
Я читаю, но пишу редко
Highly Likely
Есть объект его надо разрушить, что бы потом нельзя было использовать.
Удалить ссылку на объект там же, где он создавался
Highly Likely
Если ты занилишь поля объекта, то рано или поздно попадешься на том, что не будешь понимать, почему у тебя ничего не работает, хотя формально объект ~= nil
Igor
Тут есть кто-то кроме снуса админ? С ума сойти
Тут админов 5 вроде, считая снуса
Igor
Ну или около того
Igor
Многих уже давно не видел
Igor
Есть объект его надо разрушить, что бы потом нельзя было использовать.
Таблички разрушать разрешено только мусорщику
Igor
И то при жёстких условиях
Highly Likely
Таблички разрушать разрешено только мусорщику
Кажется, человеку не нужно её разрушить
Highly Likely
В смысле, не нужно освободить память
Igor
Я тогда совсем запутался :)
Highly Likely
Там стоит какая-то пока непонятная мне задача “сделать объект неюзабельным”
Highly Likely
И я до конца пока не понимаю чо конкретно нада :-)
Igor
Ну может и имеется как раз ввиду удаление его из ОЗУ
Igor
Ну мусорщик объект вычистит при одном условии: если на него остались только слабые ссылки. Через метатаблички, кстати, можно указать, что будет слабым в той или иной таблице, ключи или значения через __mode.
Anonymous
Удалить ссылку на объект там же, где он создавался
есть функция которая возвращает объект. То есть таблицу и несколько методов к ней. Я бы мог создать хранилище + метатаблицу, но я именно хотел обойтись без всего этого. Верно что на nil проверке можно попасться. Держать за правило что всегда после деинициализации установить таблицу в nil. или добавить ключ destroyed true/false Надо подумать. У меня есть метод который перезаписывает всю таблицу. Грубо говоря заново перезаписывает все поля. Релевантными данными. Но потом часто где то в будущем хотелось бы сказать. Все она нам не нужна. Если ты попробуешь ее использовать, ничего не получится.
Aqendo
Тупая идея, но мб как-то получить адрес и размер в памяти и через (ffi¿) memset заполнить всё нулями
Highly Likely
Идея не тупая, так безусловно, я почти не сомневаюсь, сделать можно
Highly Likely
Но вот ноги себе отстрелишь сразу же, имхо
Igor
По ...зде пойдёт весь луастейт
Igor
И крашнется в ту же секунду
Highly Likely
t = funcThatReturnTable() — some usage of t — t = nil
Highly Likely
Всё. Объект соберется GC в следующей итерации
Highly Likely
Можно насильно дернуть GC, если оч хочется
Igor
Из самого объекта удалить его же нельзя. Только извне, занилив все ссылки на него, короче.
Highly Likely
Идея “если ты попробуешь использовать, ничего не получится” значит, что ты целенаправленно оставляешь какую-то серую зону, на которой можно поймать рантайм-еррор и долго-долго его выискивать
Highly Likely
Из самого объекта удалить его же нельзя. Только извне, занилив все ссылки на него, короче.
Не, ну мне кажется извратиться то можно. Как-нибудь. Но честно говоря даже не хочу думать как
Igor
Ну через тот же ffi можно заставить мусорщик агрессивно удалить таблицу, конечно
Igor
Но это уже прям лютые хаки
Highly Likely
Просто мне кажется там что-то суперпримитивное
Anonymous
Да все верно буду просто делать что то вроде. tb:destroyed() tb = nil первое для одной функции внутри С. второе уже для Lua.
Highly Likely
И что делает tb:destroyed?
Highly Likely
Просто мне кажется там что-то суперпримитивное
Но человек переусложняет задачу
Anonymous
И что делает tb:destroyed?
выгружает часть ресурсов из списка Си.