@ProLua

Страница 97 из 307
Snusmumriken
25.05.2017
19:54:54
может кто-нибудь знает как на андроиде трафик перехватывать со включенным vpn? весь вечер ковыряюсь
Можно fiddler'ом перехватить http/s трафик, если использовать его в качестве прокси и пихнуть в телефон доверенный сертификат фиддлера. На тему перехвата vpn - не знаю, он обычно отдельно шифруется.

TheRainwildsKeeper
25.05.2017
20:20:48
https://highlightjs.org >174 languages

Это вроде там юзается

Google
Чай
26.05.2017
09:23:12
Да, Discord поддерживает Markdown, и можно сделать ```lua ......

The Dude
26.05.2017
12:46:11
https://hh.ru/analytics_source/vacancy/20275482?query=lua&position=1&requestId=1495802688129359105fb8b2e45e191e&totalVacancies=44&source=vacancies

Tverd
26.05.2017
12:54:53
"разработка визуальной web-части проекта: сам сайт, личный кабинет, различные api и т.п." - веб на луа? фронт? )

Snusmumriken
26.05.2017
14:09:54
Хех, они послушали мой совет : ) https://hh.ru/vacancy/20519107?query=lua

Tverd
26.05.2017
19:03:49
какой совет? они и искали человека... ))

Snusmumriken
26.05.2017
20:10:56
В этой группе

Vadim
27.05.2017
04:06:22
у меня, вот, j4f пару проектов на ngx_lua+ngx_postgres

Group Butler [beta]
27.05.2017
11:10:13
Добро пожаловать в чат pro.lua, Mammet! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.

Philipp
27.05.2017
19:00:23
Дружи. Вопрос. Как правильно забирать аргументы, передаваемые в скрипт из консоли?

И возможно ли такое?

Ну, типа:

script.lua arg1 30 2000

Google
Snusmumriken
27.05.2017
19:03:57
Ну типа при запуске типа такого: lua c:/scripts/scr.lua -path "c:/filepath" Аргументы находятся в таблице arg. for k, v in pairs(arg) do print(k, v) end > 0 c:/scripts/scr.lua > 1 -path > 2 "c:/filepath" Оно может слегка отличаться, я не помню точно, нулевой ли аргумент - путь до самого скрипта. Но суть та же.

Philipp
27.05.2017
19:04:59
А, спасибки

Хочу сделать себе генератор атласов текстурных

А интерфейс делать не хочу

А они же обычно квадратные, да?

Snusmumriken
27.05.2017
19:06:57
А, да, легко. Я свой сжиматель файлов тоже с интерфейсом командной строки пилю. Если будешь выводить результат программы в io.write - то сможешь с линуксом взаимодействовать, как с обычной юникс-тулзой, только запускаемой через lua: cat lua /home/scr.lua /texture.png > dev/null

Philipp
27.05.2017
19:10:09
Так. Надо бы как-нибудь придумать рисование этого самого атласа без запуска окна лава

Есть какие-нибудь создавалки png'шек с нормальной рисовкой в канвас, но без рендера окна?

Snusmumriken
27.05.2017
19:13:37
Или что-то такое мб поможет: https://github.com/LuaDist/libpng

Philipp
27.05.2017
19:13:44
Ме. Если будет рисоваться окно, то тогда надо делать и интерфейс, и показывать то, что в итоге будет создано

Можно же сделать целую тулзу

С разными функциями

Аля собирание атласа из директории с картинками

Snusmumriken
27.05.2017
19:15:23
И обрезкой мышкой картинки, да. Можно всё, но это будет долго. Урезай количество фич, оставляй необходимое.

Philipp
27.05.2017
19:15:33
Это ж клевая штука. Собрал нужные текстуры разного размера, запихнул в папку и дал адрес

Snusmumriken
27.05.2017
19:16:55
Тише, ты в общем чате. Не спамь узкоспециализированной фигнёй в тысячи сообщений. Давай или в ЛС переходи, или оформляй длинные законченные посты.

Philipp
27.05.2017
19:17:06
Ой. Прошу прощения

Всем доброй ночки

Рома
28.05.2017
00:18:56
Есть странная проблема: гружу модуль таким ненормальным образом: f = io.open('path', 'r') content = f:read('*a') -- нахожу кое что в content и меняю связанную глобальную вариаблю fn = loadstring content и все неплохо, но ошибки, производящиеся этим файлом выглядят непригодно, не указывают на файл. Что посоветуете? можно читать файл и потом loadfile, но это значит, что файл 2 раза открывается, не оптимально

Snusmumriken
28.05.2017
02:54:22
Есть странная проблема: гружу модуль таким ненормальным образом: f = io.open('path', 'r') content = f:read('*a') -- нахожу кое что в content и меняю связанную глобальную вариаблю fn = loadstring content и все неплохо, но ошибки, производящиеся этим файлом выглядят непригодно, не указывают на файл. Что посоветуете? можно читать файл и потом loadfile, но это значит, что файл 2 раза открывается, не оптимально
За счёт того что это loadstring, ошибки не будут указывать на файл. Там в debug.getinfo().source не путь до файла сидит, а сама строка, с которой грузили код. Сам ровно прошлой ночью с этим возился, но тут такое дело. У тебя есть целых два варианта решения задачи, и оба - суть "сделаем программирование нормальным": а) вытаскивать новую глобальную переменную из модуля через return var в конце модуля newglobal = require'module' б) Использовать минимум глобальных вариаблей. Модуль должен возвращать объект, не создавать и не модифицировать ничего глобального, и сам - реквайрить минимум другой фигни. В идеальных условиях, всё приложение - это всего лишь один глобальный объект, который является менеджером для всех остальных объектов. Ну, это идеальные условия. В моих игрулях, таким объектом является объект gamestate, который суть конечный автомат с набором состояний: разные менюшки (тоже конечные автоматы, на каждое игровое меню), игровой процесс (который тоже конечный автомат но в квадрате: для "директора" игрового процесса и для всяких пауз/внутриигровых меню) и всякая такая лабуда. В микросервисах, таким объектом является основной объект, с методами init/update, и общая схема проекта выглядит примерно так: main_class = Class() ... -- описываем основной класс ... while true do main_class:update() sleep(n) end Ах да, если одна библиотека используется сразу кучей модулей, я обычно передаю её модулям из корневого объекта в процессе инициализации. Ну, чтобы только в одном месте заменять эту библиотеку, в случае чего (изменение либы/путей).

Google
Рома
28.05.2017
04:55:46
Суть в ленивой загрузке, рекурсивно обходятся вложенные папки и файлы по именам становятся глобальными классами, а потом при обращении к __index лениво загружаются. И родительские классы тоже грузятся лениво. И получается вынос мозга. Видимо, тут open и затем loadfile необходимое зло. А вдруг можно самому подписать loadstring'у его файл? Гуглить это бесполезно, вопрошаю гуру!

Snusmumriken
28.05.2017
06:20:44
Ты хочешь ленивости? Зачем тебе? Микрухи что ли, для экономии памяти? Мб просто загрузчик всей фигни сделаешь? Не надо извращений. Если у тебя есть батон хлеба и мамины спицы, ты конечно же можешь сделать троллейбус. Но подобные штуки имхо лучше делать по-человечески. Например, тот же загрузчик, который через lfs получает список файлов/директорий, обходит их, ищет lua-файлы и реквайрит их типа: require'folder1.folder2.script' Это относительно человеческий способ. Полагаю, в глобальной переменной хранится путь "текущей папки"?

Плюшка
28.05.2017
06:21:42
Юникод, сэр

Snusmumriken
28.05.2017
06:27:17
Да, кстати, ребят, хочу поздравить вас всех с одним замечательным событием! Ровно двадцать три года назад, на свет появился один замечательный человек, которому мы все благодарны за его неоценимую помощь и восхитительные человеческие качества! В телеграме, этот человек известен как @Snusmumriken, прошу любить и жаловать! Ехехехехе.

Плюшка
28.05.2017
06:27:35
Поздравляю :)

Snusmumriken
28.05.2017
06:27:57
О да, передам ему, будет рад : )

Чай
28.05.2017
06:29:03
И от меня передай себе поздравления.

Snusmumriken
28.05.2017
06:29:14
Письмо напишу, секунду

Рома
28.05.2017
06:29:24
Я тут хотел восхвалить ленивость и поведать о том, сколько у неё преимуществ, ладно, с днем рождения, великих свершений Ж)

Snusmumriken
28.05.2017
06:31:14


Я тут хотел восхвалить ленивость и поведать о том, сколько у неё преимуществ, ладно, с днем рождения, великих свершений Ж)
Ну, сама по себе ленивость - хороша при вычислениях. x = fast_function() or slow_function() - это гораздо лучше чем a, b = fast_function(), slow_function() x = a or b Но при require, не вижу особого смысла: вызывается один раз. Если что, require кеширует результат, поэтому если в нескольких модулях require'нуть один и тот же модуль, он будет загружен только один раз, а второй - подтянется из кеша. Плюс сложнее отслеживать ошибки: синтаксические оно выведет сразу, по крайней мере. А с loadstring - только когда модуль будет заюзан, то есть, возможно - никогда. Тут может быть некоторый смысл в том случае, если у тебя очень мало памяти, и весь проект в ней не помещается. Например, если ты пишешь веб-сервер с загрузчиками/шаблонизаторами на ESP (микроконтроллер, довольно сомнительная затея, но некоторым нравится), то да, оказывается эффективнее загружать модули через dofile (ибо не кеширует), и выгружать модули когда те не нужны вот прямщас.

Ну, например, когда я определяю в коллайдере, касаются ли друг друга два объекта сложной формы, я сначала проверяю на AABB (это очень быстро, сравнить четыре точки описывающего прямоугольника объектов), а потом, если AABB прокатил - использую сложные коллизионные функции для уточнения. Это тоже образец оптимизирующей "ленивости".

Рома
28.05.2017
06:51:21
Ладно, восхвалю речь о openresty, раз уже есть сайтец, приходится держать код в строжайшей крутости 1) Да, ощутимо лучше реагирует, когда за один запрос грузится 1 контроллер и пара моделей, а не все что есть 2) Можно натворить дел, например, с помощью гит конфликтов, когда реквайр будет валиться. А с ленивой загрузкой исправляй себе по одному и оно будет работать. 3) Ключевое! Когда заведомо не знаешь, какой класс от какого наследуется, require не в том порядке - все, кранты. С ленивой - цепочка распутывается сама по себе 4) Когда при объвлении модели нужно делать запросы. Объявляешь класс User, и он давай у базы данных спрашивать колонки, типы колонок, первичный ключ, я даже до такого дошел, что из базы берутся кастомные ограничения для валидаций, вроде length(login) > 3 и length(password) > 5. Тогда при каждом запросе в базу пойдут несколько запросов на каждый файл, когда оно все сразу не надо. Для тру модулей require конечно, для MVC'шных вещей - ленивость.

что такое шаблонизатор на ESP? не гуглится

Snusmumriken
28.05.2017
07:05:46
OpenResty кеширует прям байткод всей виртуальной машины на момент первого запуска, и гоняет его раз за разом. Получается сверхбыстро. Правда, всякие math.random перестают работать: застревают на моменте первого запуска, как и os.time(). Не парься с загрузкой, она будет мгновенна когда надо. Разрабатывай без кеширования, на прод выдавай с кешированием.

Когда не знаешь, какой класс от какого наследуется.. Вот это странно. Модуль любого наследника начинается с require родителя. Не важно в каком порядке вызывать: родитель будет вызван до любого наследования.

Рома
28.05.2017
07:08:23
Разработчика волнует девелопмент, а прод с resty - молниеносен по дефолту

> Модуль любого наследника начинается с require родителя. мне нравится такое: class SubController extends ParentController -- code и никаких реквайров

Snusmumriken
28.05.2017
07:10:12
На жаве?

Рома
28.05.2017
07:10:17
на мунскрипте

Google
Admin
ERROR: S client not available

Рома
28.05.2017
07:10:37
ну правда долго очень эту одну строчку писать на луа

Snusmumriken
28.05.2017
07:10:49
Стопэ, все классы висят в глобальном пространстве?

Рома
28.05.2017
07:11:04
Ну да, потом откуда захочешь - оттуда и используй

Post\all! допустим будет в куче контроллеров, везде делать require 'models.post' чтоли?

Snusmumriken
28.05.2017
07:12:16
Ой мама. Вот поэтому я и не люблю такое. Карочи, по-человечески это делается так: local ParentContoller = require'PController' local class SubController extends ParentController ... code ... return SubController

Рома
28.05.2017
07:12:35
возвращается оно автоматом

Snusmumriken
28.05.2017
07:12:37
В мунскрипте можно делать pure-lua-вставки, насколько я знаю.

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

Рома
28.05.2017
07:15:10
как можно путаться, если есть папка controllers и в ней в каждом файле по контроллеру, и models, uploaders и так далее? это здорово

Snusmumriken
28.05.2017
07:16:05
А потом появится новая папка, и ещё одна, и ещё одна. И ты захочешь отправлять почту, роутить, подцеплять лишние модули и всё такое. Не работай в глобале, тебе говорят )) Это всё равно что в сишке перестали бы существовать неймспейсы.

Рома
28.05.2017
07:16:12
они существуют сами по себе и никому не мешают, но иногда наследуются от своих соседей, и тут лези лоад выручает

Snusmumriken
28.05.2017
07:16:40
Поздравляю, ты изобрёл троллейбус из буханки : ) Ну правда.

Глянь более-менее цельный проект с небольшим количеством зависимостей. https://bitbucket.org/16tomatons/galaxio/src/87b99a8085db?at=develop Тут сложно, но в модулях разобраться можно. Наследования, правда, тут нет, но суть наследования - class foo extends require'bar' Хех, кстати, хорошо что вспомнил про проект. Надо влепить в сетевую либу свой RUDP-протокол, чтобы пересылать большие объёмы данных по UDP.

Ща будет визуализация работы крутого RUDP-протокола!

Рома
28.05.2017
07:33:34
Тю, я думал будет как аудио визуализируется, такие кружочки расходящиеся, буквы и так много где

сделаешь?

Snusmumriken
28.05.2017
07:36:04
А ещё, эта фигня не мешает обычным UDP-сообщениями приниматься в обход себя: сигнатура в заголовке, довольно точная. Шанс что попадётся что-то такое даже в бинарном файле очень мал. Ну, все хотят кружочки, расходящиеся буквы и графон. Это проще описывать временной диаграммой.



Vlad
28.05.2017
15:05:37
А ведь UDP не гарантирует порядок

Google
Snusmumriken
28.05.2017
17:09:15
Да не важно. На один-два пакета больше передастся.

Group Butler [beta]
29.05.2017
14:17:24
Добро пожаловать в чат pro.lua, Ihor! Ознакомься с правилами чата (в описании и прикрепленном сообщении), и присоединяйся к обсуждению.

Snusmumriken
30.05.2017
12:30:06
ещё может быть -1 (имя интерпретатора). Но не всегда :)
Мейловцы сейчас вообще мутят свой интерпретатор, на основе luajit и такой-то матери. Развлекаются. Не исключено что луа будет ими сильно популяризироваться.

И привет огромное количество фиговых библиотек от сообщества, как у js : ) Сейчас их мало, но зато качество более-менее нормальное. А мы такие потом: 'Я начал писать на луа до того как это стало мейнстримом' и 'Раньше трава была зеленее'

Страница 97 из 307