Pull to refresh

Классы в lua, или избавляемся от двоеточия

Reading time 4 min
Views 28K
Abnormal programming *ООP *Lua *
Как всем известно, в lua нет как таковых классов и объектов. Однако есть метатаблицы и синтаксический сахар.
С помощью указанных механизмов достаточно просто реализовать подобие классов.
В итоге и получается нечто такое:
Самый простой класс
local MyClass = {} -- the table representing the class, which will double as the metatable for the instances
MyClass.__index = MyClass -- failed table lookups on the instances should fallback to the class table, to get methods

-- syntax equivalent to "MyClass.new = function..."
function MyClass.new(init)
  local self = setmetatable({}, MyClass)
  self.value = init
  return self
end

function MyClass.set_value(self, newval)
  self.value = newval
end

function MyClass.get_value(self)
  return self.value
end

local i = MyClass.new(5)
-- tbl:name(arg) is a shortcut for tbl.name(tbl, arg), except tbl is evaluated only once
print(i:get_value()) --> 5
i:set_value(6)
print(i:get_value()) --> 6

(взято с lua-users.org/wiki/ObjectOrientationTutorial)

Всё это конечно хорошо, даже при определённой сноровке можно реализовать наследование…
Но где public и private члены класса? Дефакто в этом примере они все public. Да ещё и надо помнить, где использовать двоеточие:
MyClass:myFunc()

а где просто одну точку:
MyClass.myOtherFunc()

А статические члены класса? Неужели придётся отказываться?
Вот я и не захотел отказываться, и начал колхозить...
Total votes 10: ↑5 and ↓5 0
Comments 13

Компактный расширитель USB портов для зарядки

Reading time 1 min
Views 5.5K
DIY


В свободное время мне нравится разработать какое-нибудь полезное устройство для дома, например: датчик температуры или влажности с экранчиком, WiFi-IR шлюз и др. Всем этим устройствам нужно питание, я использую USB зарядки от телефонов. Т.к. каждое устройство потребляет небольшой ток, а зарядное устройство от iPad выдает 2.4А, то я решил сэкономить розеток и подключить все мои устройства к одной зарядке, для этого я сделал компактный расширитель USB портов для зарядки, который почти не увеличивает размеры самой зарядки.
Читать дальше →
Total votes 23: ↑7 and ↓16 -9
Comments 17

Колхозим мониторинг ИБП с протоколом Megatec в Zabbix

Reading time 8 min
Views 19K
Statistics in IT
Возникла необходимость в мониторинге зоопарка ИБП, в наличии были Ippon, Powercom и Krauler. В качестве средства мониторинга использован Zabbix.

Естественно, задачу необходимо было решить 1) дешево 2) еще дешевле, поэтому вариант с SNMP модулями был отвергнут сразу. Было решено использовать соединение по serial портам, благо имелся опыт разработки к Ippon и APC. К слову сказать к APC на вторичном рынке есть SNMP модули по вменяемой цене, а вот к недорогим ИБП я смог найти только новые модули по цене 11-20 тыс. рублей.

В ходе работы были поставлены следующие дополнительные задачи:

  1. найти и проверить кабели для подключения каждого ИБП, ибо таковые в комплекте отсутствовали
  2. Реализовать некий модуль, который бы с одной стороны имел интерфейс RS-232 и понимал протокол обмена данными с каждым ИБП, а с другой — имел сетевой интерфейс и мог отправлять данные в виде zabbix_trapper.
  3. Протестировать модель сбора и передачи данных, части кода, а также формат данных.


В ходе реализации второго и третьего пункта хотелось собрать в одном месте все данные, которые бы в будущем позволили реализовать отдельное устройство на м/к.
Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Comments 13

Чем ИТ может сильно помочь колхозу «Путь коммунизма» или агрохолдингу

Reading time 9 min
Views 18K
SAS corporate blog Programming *System Analysis and Design *Project management *

Было-стало после кластеризации и оптимизации культур

Колхозы и агрохолдинги в России почти не автоматизированы. А там на почти ровном месте с минимальными затратами можно получить до 10 % прироста доходности за счёт выбора оптимального портфеля выращиваемых культур, точного распределения техники по работам и вообще нормального планирования. Мы пришли на несколько объектов и провели расчёты для них, о чём сейчас я и расскажу.

Сформулировали три фундаментальных вопроса:

  1. В каких пропорциях что нужно вырастить и где, чтобы больше заработать?
  2. Когда какая техника и где будет работать?
  3. Что должно быть в парке техники, чтобы не возникало рисков срывов сроков проведения агроопераций или больших затрат на найм?

Мы решали все эти задачи, и там море интересных особенностей. Обсуждать мы будем абстрактный колхоз «Путь коммунизма», расположенный в случайном месте (нам просто понравились поля на спутниковой карте), потому что настоящих заказчиков я называть пока не могу.

В таких местах, конечно, действуют рациональные агенты. Но иногда встречается пьющий агроном, иногда попадается косячник-механизатор и другие узнаваемые персонажи из реальной жизни. Нас ждут град, сломанный комбайн и другие приключения. И вот мы пойдём в это всё со своей автоматизацией.
Читать дальше →
Total votes 62: ↑61 and ↓1 +60
Comments 40

Как подобрать дизайнера для проекта?

Reading time 7 min
Views 2.9K
Web design *Interfaces *Graphic design *Project management *Freelance

Если вы не хотите, чтобы ваш проект закончился на этапе разработки дизайна, или пользователи не убежали в страхе - дизайнера нужно выбрать с умом, о чем я расскажу в этом материале. 

Я постаралась систематизировать в этой статье свой опыт подбора множества дизайнеров на проекты различной сложности: от пакета баннеров, лэндинга до интерфейса No-code платформы без ТЗ. Материал будет полезен тем, кто слабо разбирается в дизайне, впервые подбирает дизайнера на проект или получает проекты не того качества, которого хотелось бы.  

Читать далее
Total votes 6: ↑4 and ↓2 +2
Comments 9

Восставший из подвала и хлама: Оживляем китайскую нонейм игровую приставку из 2013 года

Reading time 6 min
Views 5.5K
*nix *Reverse engineering *Development for Linux *Games and game consoles

Всем привет! Когда-то, в юности, родители на ДР подарили мне игровую консоль-планшет на андроиде. Юзал я её несколько месяцев, и по итогу разбил на ней дисплей с психу. Так и отправилась консоль практически на 10 лет в подвал, а сейчас я её нашёл и отремонтировал. Консоль абсолютный noname - на неё нет ни прошивок, ни запчастей, и если кому интересен процесс восстановления подобных старых китайских девайсов - добро пожаловать под кат!

Читать далее
Total votes 21: ↑21 and ↓0 +21
Comments 5

Колхоз. Большая история фермы устройств Яндекса

Reading time 20 min
Views 31K
Яндекс corporate blog Development of mobile applications *Mobile applications testing *Computer hardware DIY
Best Tech Author 2022
Все новые сервисы Яндекса, а также апдейты к существующим приложениям и сайтам нужно тестировать: на айфонах, андроидах, десктопах, умных колонках, телевизорах. Раньше часть тестировщиков работали на личных телефонах и компьютерах, а часть — использовали для тестов корпоративные девайсы. Процесс не был гибким и с трудом масштабировался. Поэтому мы сделали свою клауд-ферму устройств. Сначала ей пользовались только отдельные команды тестирования, но со временем ферма стала особенно популярна и среди разработчиков. В итоге мы собрали почти 800 разных девайсов, которые теперь доступны 24/7.



Меня зовут Кирилл Коргов, я отвечаю за то, чтобы ферма устройств работала и развивалась. Кстати, называть её просто фермой было бы скучно, поэтому где-то на заре проекта мы по-доброму назвали её близким по смыслу словом «Колхоз». Если интересно, с чего Колхоз начинался, как пандемия привела к неожиданному росту его популярности и что общего у макбуков с лотками для офисной бумаги, прошу под кат.
Читать дальше →
Total votes 106: ↑106 and ↓0 +106
Comments 52

Пишем 3D игру под Windows Mobile, ч.1

Reading time 10 min
Views 5.2K
Programming *.NET *Development of mobile applications *Game development *Smartphones
✏️ Technotext 2022

На хабре достаточно много пользователей коммуникаторов. Они рассказывали достаточно много историй о том, как их использовали: раскладывали пасьянс, играли в шарики, сидели в интернете, читали книги и в конце-концов, использовали как телефон. А что, если я вам скажу, что на коммуникаторах было аж два API для рисования 3D графики? Причем оба могли уметь хардварное ускорение. В юности я мечтал о кпк, а сейчас я исполнил свою мечту, и у меня есть несколько годных для своего времени коммуникаторов. Так почему бы не написать 3D игрушку под них?

Читать далее
Total votes 41: ↑41 and ↓0 +41
Comments 31

Киберпанк-импланты для PSP. Делаем PSP E1008 из того что было ч. 2

Reading time 5 min
Views 3.7K
Games and game consoles

В предыдущей части статьи мы оживили подсветку консоли, разобрали АКБ для возможности её зарядки от лягушки, и заставили её подавать какие-то признаки жизни. Сегодня мы будем вживлять киберпанк-импланты для нашей стоковой PSP: модификация АКБ увеличенной ёмкости, с возможностью горячей замены (в E1008 АКБ несъёмная), полноценная зарядка от USB, ремонт разъёма для memorystick, покупка переходника на microsd флэшку и установка взломанной прошивки с играми, а также софтовый ремонт передней панели. Интересно? Залетайте в статью!

Читать далее
Total votes 19: ↑17 and ↓2 +15
Comments 2

Дриставрация стиков портативных игровых консолей — маленькое how-to

Reading time 6 min
Views 3.6K
Gadgets Games and game consoles

Вообще, эта статья-заметка не особо подходит к тематике хабра, но вероятно здесь есть любители поиграть, у кого возможно лежит мёртвым грузом PSP. А поскольку я по своей натуре любитель залезть и попытаться сделать всё что можно разобрать, то вот вам минигайд.


Последний месяц мои читатели и подписчики основательно решили меня подсадить на PlayStation. Сначала Фанат Мелины из Elden Ring подарил мне PSP E1008 Street, которую мы с вами оживили в соответствующей статье, затем подписчик Сашка Кондрат, который подарил мне PSVita из далекого края России и мой друг детства, который недавно написал "у меня есть подгон для тебя, нужны две PSP - 2008 и 1008?". Однако все консоли так или иначе требовали ремонта - такова тематика моего блога! И сегодня я покажу вам небольшую дриставрацию сразу двух консолей!

Читать далее
Total votes 9: ↑8 and ↓1 +7
Comments 9