Snusmumriken
А вот ета штука жесть какая крутая. В своё время делал её на сишные многострочные комменты, но в луях тоже тащит. Принцип действия элементарный, одно регулярное выражение на многострочные комменты. https://github.com/HDPLocust/snus_stuff/blob/main/snus_md.md Автодоки? Каждый лепит свою версию для каждого языка, лепит двадцатый формат и свои "фишечки" которые "надо обязательно использовать иначе будет никрасиво", и каждому блин надо учиться, каждый раз как в первый раз блин. Маркдаун же — и в африке маркдаун.
Snusmumriken
Этот файл выдирает блоки --[[!MD ... ]] И выплёвывает их в заданный файл, да. Пихаешь кучу файлов — их содержимое аккуратно мержится в тот же файл.
Snusmumriken
Тут блин сам скрипт snus_md.lua является инструкцией по его применению, потому что в нём точно такой же камменты с докой, он успешно пережёвывает себя же ))
Hello, World! 🎄
Этот файл выдирает блоки --[[!MD ... ]] И выплёвывает их в заданный файл, да. Пихаешь кучу файлов — их содержимое аккуратно мержится в тот же файл.
Ну типо в коде помечать что идет в readme, полезно) Написал коментарий к коду и тут же readme создаешь и не надо нечего писать.
Snusmumriken
Да, именно так. Автодоки в принципе делаются примерно для этого.
Highly Likely
Snusmumriken
Чел, я в разработке не меньше тебя, но ты продолжай делать бэкапы копированием в проводнике и пуш мышкой.
Вопрос не "сколько в разработке" а насколько много разноплановых проектов ты пережёвываешь и сколько в них варишься )) Если ты десять лет разрабатываешь одно и то же на одной и той же платформе, один раз её настроил и пять лет одними и теми же движениями пушишь изменения — это одно. Если у тебя двадцать тысяч разных проектов под разные платформы на разных хостингах с разными системами (SVN/GIT такой/GIT сякой/что-то просто в гугл папке), и ты сам сидишь с десятка разных устройств — ты делаешь минимум движений если не настраиваешь всё это. И ты ничего не получишь если будешь двести тысяч раз настраивать одно и то же под разным соусом.
О, боевые картинки в дело пошли, это победа ящитаю.
Snusmumriken
О, боевые картинки в дело пошли, это победа ящитаю.
О, бордосленг не по делу пошёл (вместо аргументации например), это слив.
Hello, World! 🎄
Новая папка (1)
Так лучше: mkdir new_dir
Snusmumriken
А разве на картинке не показан какой-то сервис планирования задач? А слева и справа просто просят дать текст задания?
Челик по центру фрустрирует от того, что не соблюдается вся бюрократия (суть которой лишь шелуха вместо полезной деятельности, хотя местами может быть надо но не в каждом случае). Товарищ слева не понимает зачем бюрократия в принципе нужна, а правый — настолько преисполнился, что ему есть чем заняться помимо этого, и до него уже доходит когда это смело можно опускать ничего не потеряв.
Snusmumriken
Новая папка (1)
Аргумент отклонён, кстати. Это булшит и ты сам это знаешь.
Snusmumriken
О. Внезапно вспомнилась штучка которой настройка клиента гита на каждый чих таки может принести какую-то пользу. Вот эта фигня на собесе. Эйчар такой смотрит на картиночку и видит: "Вы только посмотрите на этого активного активера, вон как он коммитит замечательно, и на выходных поддерживает свои пет прожэкты, наверное и работать будет так же активно (нет)". Но устраиваясь в место, где на это смотрят, нужно быть готовым к последствиям, что все вокруг будут отобраны по тем же критериям, такие же имитаторы бурной деятельности ))
Snusmumriken
А, тут есть очепятки ) Саму фигню прогонял луачеком, явных мегапроблем быть не должно.
Snusmumriken
Кста, забавное решение для бинарного поиска, подсмотренное в сорцах мелкософта. Чтобы не сравнивать элементы N и N + 1 на границах, когда N может быть как 1 так и длины массива, мы такие можем взять и отобрать некоторый небольшой диапазон (например < 8 элементов), и его уже перебрать. В общем, рассуждения на тему "перебор это плохо, On и так далее" это замечательно, но пока этот перебор чем-то не ограничен.
Snusmumriken
Ну пральна, это кусок string.len. Но не тут.
R
Прям чётко-чётко видно, кто из спорщиков работал в команде, а кто сугубо индивидуалист.
Snusmumriken
М? У меня просто обширный опыт и того и другого, но наличие команды — это дополнительные вводные данные, которых изначально не было, и которое было описано изначально как отдельный случай.
Snusmumriken
Вот ты хотел добыть немного снюса (18+), а тут целая таблица.
Godruma-vihari Dasa
Чтобы не пугать народ можно здесь было использовать ln, а не len 😊
Snusmumriken
Ой, да никто не боится, вон какие довольные жизнью
Snusmumriken
Хех, так дело в том что на самом деле никто никому не нужен, и ничей код в общем-то никому тоже не нужен. И так будет продолжаться до тех пор пока ты не полезешь в персональные данные или финансы.
Mike_Went
Почему же? В петоне есть пара библиотек для создания мтпрото ботов, я бы сам этого не написал
дело не в этом. пофиг на код. если ты его написал, то либо за чьи-то деньги, либо сам для себя.
Snusmumriken
Почему же? В петоне есть пара библиотек для создания мтпрото ботов, я бы сам этого не написал
У тебя максимум полтора человека в окружении, которые действительно написали что-то, что более-менее активно используется другими людьми. И я не из них, кстати.
Aqendo
(zero)
Aqendo
Вообще это тема для размышления, но как-нибудь потом
Snusmumriken
И даже если кто-то действительно смог написать нечто, что активно используется — нет смысла его старательно скрывать, пока оно не затрагивает персональные данные или финансы. И даже если кажется что твоя штука может заработать очень много денег — в 95% случаев это не так, и можно смело открывать. Кто заюзает тот заюзает. Не заюзает так не заюзает, нет разницы.
Aqendo
Был модуль к одному боту который переделывает сообщения в телеграме в картинки, автор зашифровал свой скрипт и им всё равно пользовались
Snusmumriken
Ну и в случае какого-нибудь обосрямса он не получит фидбека, придётся самому лезть вместо того чтобы запушить пул реквест. В общем-то его проблемы, но он скорее всего ничего бы не потерял если бы открыл. (и сразу вылезают подозрения, не делает ли этот модуль чего лишнего, не встраивает ли в картинки ватермарки и не посылает ли тексты ему лично на сервер чтобы читать переписочки, потому что так-то модуль который делает из текста джыпег с тем же текстом — дело пятнадцати минут на imagemagik)
Snusmumriken
Он тупо текст в картинки переводил? Делал картинку с тем же текстом?
Aqendo
Aqendo
Вот так
Snusmumriken
Это всё равно выглядит как дело получаса в imagemagik. Можно даже на ловке запилить мини-сервер генератор (с хардварным ускорением и кешем шрифтов межпрочим).
Kirill
всем привет, туплю на ровном месте. нужно проверить строку на наличие слова в квадратных скобках: str='[abc]' str:match('^[abc]') -- как скобки экранировать?
Snusmumriken
str:match('^%[abc%]') Или можно воспользоваться find, там есть режим поиска plain-текста.
Snusmumriken
Kirill
благодарю
fgntfg
🏳️
Alex
Целых два часа уже учу lua и пока что самая непонятная вещь для меня:
Alex
в примере про конкатенацию
Alex
s = '' for i=1,10 do s = s .. math.random() .. '\n' end print(s)
Alex
почему на каждой итерации пропечатывается рендом? насколько я понимаю для s должно присвоится последнее значение и пропечатался одним принтом
Потому что пример о том, чтобы склеить текст из 10 случайных чисел?
> изменил код Так это пример, или что-то своё?
Alex
все я сообразил, это он не 10 раз делает принт, а один раз делает принт в котором 10 раз добавлен рендом. s .. непривычный синтаксис, глаза немного в кучу
Alex
еще кстати мне очень понравился оператор подсчета длины #
Alex
пока я не начал им массив мерять
Надёжно им можно получить длину массива, полностью заполненного элементами от 1 до N (т.е. внутри нет nil'ов). Для дырявых массивов и таблиц с нечисловыми ключами его использовать не нужно.
Alex
подскажи плз - метод проверки типа объекта, не могу найти в документации. что то типа аналога isinstance()
🌗
type(object) == 'нужный тип'
Alex
попробовал первым делом
Alex
x = {1,2,3} print(type(x) == Table)
Alex
почему то фальш
🌗
type(x) == 'table'
Alex
🌗
🌗
type возвращает строку
Alex
тип как строка... все понял
Alex
да, спасибо
Alex
подскажи, item:extend() синтаксис двоеточия что тут означает? похоже на вызов метода, но чем тогда отличается от item.extend()
Snusmumriken
подскажи, item:extend() синтаксис двоеточия что тут означает? похоже на вызов метода, но чем тогда отличается от item.extend()
function mytable:foo(a, b, c) return self, a, b, c end == function mytable.foo(self, a, b, c) return self, a, b, c end == mytable.foo = function (self, a, b, c) return self, a, b, c end mytable:foo(10, 20, 30) == mytable.foo(mytable, 10, 20, 30) Двоеточие — синтакстческий сахар. При объявлении функции, оно инициализирует первый аргумент под названием "self". При вызове он пропихивает таблицу, в которой находится функция, первым аргументом в вызываемую функцию. item:extend() == item.extend(item) У этого даже есть применение, например ты можешь вызвать "метод" объекта с другим объектом, а ля object.callsome(anotherobject). Потом привыкнешь и у тебя будут вопросы, почему у других яп не так, и почему методы у остальных яп графически не отличаются от функций.
Snusmumriken
Ты даже можешь написать что-то такое: bar = {} function bar:add(other) return self + other end bar.add(10, 20) --> 30 10 придёт в self, 20 в other. Просто потому что это буквально то что описано, сахар и не больше.
Alex
это сложновато
Alex
как раз читаю про именные функции