ShadoWalkeR
Я проще сделал - взял TCPSocket - в array добавляю строки сообщения - астериск его построчно возвращает, до разделителя между сообщениями - пустой строки. После чего содержимое импровизированного буфера кидаю в функцию обработчик и очищаю его
Snusmumriken
Ну, message queue, да.
ShadoWalkeR
Как результат - на тестовом сервере скрипт уже сутки крутится и отъел 20 мегабайт
ShadoWalkeR
10 на старте и еще 10 в процессе работы за все время
Snusmumriken
У меня сейчас на "основной работе" логирование похожим образом работает. Условно, на каждой машине развёрнуто приложение, принимающее строчки по TCP, и пихающее их в луа-табличку. Когда накопится буфер или по истечению таймаута - каждая машина сгружает всё на сервер логов. Уже месяца полтора крутится с первого тестового запуска, а логов там ~100-500мб в секунду бывает : ) Не каждый раз, конечно, среднее - 5-30мб.
ShadoWalkeR
В руби очень много из коробки есть - поэтому его использую. Просто бездумное написание кода некоторыми людьми убивает))))
Snusmumriken
Это было и будет всегда, пока к комплюхтерам не начнут пускать только тех, кто уже написал пару сотен мильёнов строчек кода и нескольких лет поддержки собственных, кхм, продуктов (и не умер за это время).
Snusmumriken
Некоторые необучаемы - какое говно писали 10 лет назад, такое же могут и сегодня писать 😃
После школ "только сегодня и только сейчас, пройдите курс пыхо-js-погроммиста, начните зарабатывать мульёны за одни выходные" - таких ещё больше.
ShadoWalkeR
а питон не зашел?
Персональная непереносимость логики организации кода в питоне.
Revertron
Некоторые необучаемы - какое говно писали 10 лет назад, такое же могут и сегодня писать 😃
Это всё решается грамотным код-ревью. Новичок поисправляет-поисправляет, а потом таки научится.
ShadoWalkeR
И ОТСТУПЫ!
Co(n)stantine👨‍🔬
Co(n)stantine👨‍🔬
а ты код без них пишешь?
Snusmumriken
Это всё решается грамотным код-ревью. Новичок поисправляет-поисправляет, а потом таки научится.
Боюсь что таких - процентов тридцать из тех кто лезет в кодинг. Ну, плюс это схоже натаскиванию человека на определённый круг задач, как натаскивание на ЕГЭ. Решать ЕГЭ научится, но ничего больше.
ShadoWalkeR
а ты код без них пишешь?
С ними. Просто когда в консоли надо по быстрому поправить скрипт, они превращают это в ад)
Snusmumriken
Нет, ну почему? Когда начальник не пропускает говнокод, заставляет чётко всё писать, тогда по-другому и не попишешь.
"Начальники", в нашей стране, обычно нацелены на скорейшее получение бабла, соответственно, максимально быстрое внедрение фич, а какой ценой - это уже их не волнует : )
Revertron
"Начальники", в нашей стране, обычно нацелены на скорейшее получение бабла, соответственно, максимально быстрое внедрение фич, а какой ценой - это уже их не волнует : )
Знаю, знаю... Это у нас просто ненормальный - разбирается в коде всех наших проектов, под винду, андроид, иос, макось, расширения под несколько браузеров и код всех бэкендов... И заставляет нас писать чётко :)
Yuriy
Это всё решается грамотным код-ревью. Новичок поисправляет-поисправляет, а потом таки научится.
Очень сильно зависит от новичка. со мной вон один как пол года назад копипастил функции ради изменения одной строки, так и копипастит. Думать вообще отказывается...
Yuriy
Я согласен. Начальник лоялен.
Co(n)stantine👨‍🔬
Где можно подробно почитать про таблицы и метатаблицы и метаметоды🤔
Snusmumriken
Ммм
Snusmumriken
Даже не знаю
Co(n)stantine👨‍🔬
понял и спасибо
Snusmumriken
https://habr.com/post/346892/
Co(n)stantine👨‍🔬
https://habr.com/post/346892/
о объемная статья, с примерами и комментариями, годно)
Snusmumriken
Ну а то.
Co(n)stantine👨‍🔬
пиши еще, что-то интересное)
Elmir
/help@FailsBot
FailsBot
/help@FailsBot
USAGE: /help - prints this message; /vzhuh [message] - do vzhuh; /start - info about bot.
Co(n)stantine👨‍🔬
/vzhuh@FailsBot
FailsBot
∧_∧ ( ・ω・。)つ━☆・*。 ⊂  ノ    ・゜+. しーJ   °。+ *´¨)          .· ´¸.·*´¨) ¸.·*¨)           (¸.·´ (¸.·'* ☆
FailsBot
∧_∧ ( ・ω・。)つ━☆・*。 ⊂  ノ    ・゜+. しーJ   °。+ *´¨)          .· ´¸.·*´¨) ¸.·*¨)           (¸.·´ (¸.·'* ☆
FailsBot
∧_∧ ( ・ω・。)つ━☆・*。 ⊂  ノ    ・゜+. しーJ   °。+ *´¨)          .· ´¸.·*´¨) ¸.·*¨)           (¸.·´ (¸.·'* ☆ ddd@FailsBot
B
nani?
Vlad
Omae Wa Mou Shindeiru
Co(n)stantine👨‍🔬
😒
Particle Booster
Ребят, нашел калькулятор https://pastebin.com/HFmKA780 Подскажите, как его использовать из другого файла? Что бы можно было строку в него передавать.
Particle Booster
я прорбовал так str = "1+1" solve(str, a, b) > attempt to call a nil value (global 'loadstring') Писал прям внутри калькулятора
Particle Booster
просто в конце добавил эти 2 строки
Particle Booster
и запустил
Particle Booster
в том то и дело, что я не знаю
Particle Booster
просто наугад ткнул
Particle Booster
я хочу, что бы можно было это использовать не из консоли, а передать стринг, к примеру "1+1/2", в качестве аргумента
Particle Booster
может я не совсем понимаю, что пишу, но мне нужно передавать в калькулятор задачу не через консоль. Что бы он хватал переменную с это й задачей и решал.
Particle Booster
var = 1 + 2 - 4 запихать var в калькулятор надо
Particle Booster
я его буду туда заносить
Particle Booster
я незнаю куда это писать, что бы он это взял и решил)
Particle Booster
мне не надо через консоль
Particle Booster
через консоль он видит, а переменную я незнаю куда ему передавать
Particle Booster
есть эта штука https://pastebin.com/HFmKA780 которая решает задачу, когда я запускаю её через нотпад++ и ввожу в консоль то, что надо решить. Меня не устраивает, что мне приходится что-то вводить через консоль. Нужно, что бы этот калькулятор хватал переменную из файла которая содержит задачу (не решенную) и решал её, возвращая ответ
Particle Booster
он же принимает input через консоль, потому и предположил, что это стринг
Particle Booster
всё. Я кажется понял, что это не эта штука мне решала задачи =/
Particle Booster
спасибо)
Particle Booster
какой?
Particle Booster
есть какой-нить модуль для этого?
Particle Booster
Спасибо!
Snusmumriken
Ууу
Snusmumriken
Если хочется написать нормальный калькулятор, хавающий строчки типа '10 + 20 * (35 + 48)', то нужно курить преобразователь в обратную польскую запись, или читерить через loadstring, да. Но писать сейчас - слишком занят.
Particle Booster
спасибо, щас с лоадстрингом разберусь, может меня это устроит)
Particle Booster
не, мне не нужны логарифмы и т.п. Мне простые 4 операции надо
Particle Booster
нулей вроде тоже не предвидится)
Snusmumriken
Лоадстринг грузит строку как кусок кода (функцию). При ошибках парсинга (невалидный код) возвращает ошибку ещё функцией loadstring (nil, err), а при ошибках в процессе исполнения - на попытке вызвать как функцию (поэтому вызов через pcall/xpcall).
Particle Booster
а вот так оно никак не будет работать? local a = 2 x = loadstring("a+10; return a") print(x())
Particle Booster
j!
Particle Booster
заработало, когда локал убрал!
Particle Booster
a = 2 x = loadstring("local b =a+10; return b") print(x()) вот так заработало
Particle Booster
Спасибо!)
Particle Booster
а можно заставить принудительно искать в локальном пространстве?
Particle Booster
да, что бы искать не в глобальном. К примеру b = 10 function z(b) local b = 2 local a = 2 local r = loadstring("local c = a + b; return c") return r() end print(z(b)) тут странно. Он видит только глобальную b, но не видит локальную, а вот a он видит локальную =/
Particle Booster
он мне пишет - анэкспектед симбол. Понять не могу в чем проблема
Particle Booster
угу, понял)
Particle Booster
пытается в глобальное обратиться
Snusmumriken
Это можно через setfenv, дописываемый к строке с loadstring'а, тогда все переменные будут писаться в определенную табличку.
Particle Booster
я вот сейчас как раз смотрю про сетенв, но чёт не совсем понимаю, как это сделать
Particle Booster
постоянно ошибки выдает
Particle Booster
догнал, как сделать без энвиронментов - local a = 1 local b = 3 local sign = "+" local res = loadstring("local res ="..tostring(a)..sign..tostring(b).." return res") print(res())