retrocat
в маркет не
на фдройд незнаю, это пока личный проект
Igor
Понятно
retrocat
Неплохо
идей для модулей у меня очень много было
retrocat
а в андройде ещё способ есть вывести цветной текст поэтому можно преукрасить вывод некоторых команд
retrocat
retrocat
куда угодно
Igor
Ну я за андроид разработку не шарю от слова совсем, всё моё общение с дроидом на уровне программирования сводится к общению с его linux ядром. Запуску личных прожек на С, Lua к примеру. Именно на котлине или жабе я ни разу ничего дельного не писал, разве что в чужие проекты пуллреквесты делал небольшие.
retrocat
retrocat
я просто решил модули на луа сделать с использованием luaj
retrocat
хотя это не лучшее решение
retrocat
хотя это не лучшее решение
и решил обратиться сюда просто за ревью кода, потому что В интернете и где то ещё для меня мало инфы про него
retrocat
retrocat
таких вещей многа..
Igor
LuaJ вообще всегда такое себе решение, его стоит использовать в крайних случаях, как по мне. Когда уже например десятки тысяч строк кода на Lua есть и его нужно как-то всобачить в Java приложение.
retrocat
retrocat
хотя он багован жестко
retrocat
Igor
Igor
Разве что в компаниях каких-нибудь с жёстким кодстайлом
retrocat
ну кейсы и нейминг для меня почему то важен
retrocat
поэтому я в прошлом приложении чисто все делал флаткейсом
retrocat
а сейчас перешел чисто на камель
Igor
Я вообще их комбинировать стараюсь по всему текущему моему проекту, допустим. Я считаю, что в крайности ударяться не надо и некая золотая середина нужна, где-то уместен один кейс, где-то другой.
Igor
Между сторонними библиотеками, допустим, они сильно разниться могут. Соответственно код уже не получит однообразия.
RapidCodeLab
Приветствую, как быть в таком случае? нужно что-бы парсилось в 1.00
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
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
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
Если использовать саму таблицу как ключ, можно быстрее удалять.
Но в принципе, зачем ты планируешь такую фигню?
Snusmumriken
Anonymous
Выходит лучший способ в методе просто все ключи в nil установить.
Highly Likely
Highly Likely
Ты скажи задачу, а мы тебе подскажем решение :)
Aqendo
Зачем?
Тут есть кто-то кроме снуса админ? С ума сойти
Anonymous
Есть объект его надо разрушить, что бы потом нельзя было использовать.
Highly Likely
Я читаю, но пишу редко
Highly Likely
Highly Likely
Если ты занилишь поля объекта, то рано или поздно попадешься на том, что не будешь понимать, почему у тебя ничего не работает, хотя формально объект ~= nil
Igor
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
По ...зде пойдёт весь луастейт
Igor
И крашнется в ту же секунду
Highly Likely
Highly Likely
t = funcThatReturnTable()
— some usage of t —
t = nil
Highly Likely
Всё. Объект соберется GC в следующей итерации
Highly Likely
Можно насильно дернуть GC, если оч хочется
Igor
Из самого объекта удалить его же нельзя. Только извне, занилив все ссылки на него, короче.
Highly Likely
Идея “если ты попробуешь использовать, ничего не получится” значит, что ты целенаправленно оставляешь какую-то серую зону, на которой можно поймать рантайм-еррор и долго-долго его выискивать
Igor
Ну через тот же ffi можно заставить мусорщик агрессивно удалить таблицу, конечно
Igor
Но это уже прям лютые хаки
Highly Likely
Просто мне кажется там что-то суперпримитивное
Anonymous
Да все верно буду просто делать что то вроде.
tb:destroyed()
tb = nil
первое для одной функции внутри С.
второе уже для Lua.
Highly Likely
И что делает tb:destroyed?
Highly Likely