Home
Обсуждение программирования на любых платформах
codingteam@conference.jabber.ru
Воскресенье, 7 июля 2019< ^ >
O01eg установил(а) тему: C, C#, C++, Clojure, Cobol, Common Lisp, D, Erlang, F#, Go, Groovy, Haskell, Java, JavaScript, Julia, Kotlin, MATLAB, OCaml, PowerShell, Python, R, Racket, Refal, Ruby, Rust, Scala, Scheme, TypeScript
Telegram channel: https://t.me/codingteam
HQ, логи: https://codingteam.org.ru/
Код постить сюда: http://lpaste.net/
Юным погромцам сюда: http://e-maxx.ru/algo/ , а ещё читать Кнутца, Корменца, Седжвикца и др.
Let's Dev (когда Капитан на мостике): http://www.youtube.com/playlist?list=PLK6mcZkmN4QTusFvp_0GVtscQbCiIg81Y
Tsoding: https://tsoding.github.io/schedule.html
http://i.imgur.com/slnyI6a.jpg
Упоминания о Flash, PHP, Pascal/Delphi/Borland, Basic, 1С караются съедением поциента.
Конфигурация комнаты
Участники комнаты

GMT+3
[01:44:55] <unclechu> Minoru: насчёт изоляции интернетов, пора наверное рубрику ввести, "блокировка дня"
[01:45:07] <unclechu> https://jabjab.de:5443/upload/72abe737b5fd3bbecb40a5d42db6b5c238f80ada/ZNOC009MGsFSWdDQTFZTswB1UXxVwozVPu5KSILZ/Screenshot_from_2019-07-06_18-03-51.png
[01:45:31] <unclechu> сайт финской школы для юных погромистов
[02:25:42] unclechu вышел(а) из комнаты
[02:37:23] unclechu вошёл(а) в комнату
[03:02:02] ma1uta вышел(а) из комнаты: Replaced by new connection
[03:02:03] ma1uta вошёл(а) в комнату
[05:34:01] uggur вышел(а) из комнаты: Replaced by new connection
[05:34:02] uggur вошёл(а) в комнату
[08:10:33] portnov вошёл(а) в комнату
[08:30:28] portnov вошёл(а) в комнату
[08:46:05] portnov вышел(а) из комнаты
[09:26:19] <tg> <@fvnever> >> <ttldtor> Почему-то нет желания даже мокать их сервак...
Вообще-то кто надо уже замокал
[09:27:47] <tg> <@fvnever> >> <Devel29A> У меня до сих пор бомбит от того, что, сука, каждый говносайт мне предлагает включить нотификации с него
Это можно выключить нахер в настройках браузера, если чо.
[09:28:09] <tg> <@fvnever> Правда, тут внезапно выделился FireFox на мобиле, в нём почему-то нельзя.
[10:13:59] <tg> <@Devel29A> >> <fvnever> Это можно выключить нахер в настройках браузера, если чо.
Чтобы не предлагало?
[10:14:58] <tg> <@fvnever> Да.
[10:15:09] <tg> <@fvnever> Ну чтобы автоматом отклоняло такие глупые запросы
[12:26:56] <tg> <@fvnever> https://fornever.me/ru/posts/2019-07-05-icfpc-2019.html
[12:43:11] Minoru вошёл(а) в комнату
[12:45:15] <Minoru> m4n71k0r: почему позор? Никогда раньше не занимался кросс-компиляцией, вот и не знал. Теперь знаю. Но до сих пор не знаю ещё тысячи вещей. Мне от позора прям щас помереть, или можно продолжать обучаться?
[12:46:25] <portnov> о
[12:46:41] <portnov> а мы аж выше 90-го места залезли!
[12:46:43] <tg> <@fvnever> > позор
PhoSor, помните такого?
[12:47:05] <tg> <@fvnever> Да, у нас 89 место. Непонятно, как это получилось, у меня по заметке было 113 или около того. Пересчитали они там чтоль?
[12:47:26] <portnov> мы же перед самым концом всё подряд сабмитили
[12:47:32] <portnov> когда лидерборд был уже заморожен
[13:12:11] m4n71k0r вошёл(а) в комнату
[13:17:19] <j123123> Minoru: кросскомпиляция с x86-64 на x86-32 это фигня
[13:17:36] <j123123> вот если на арм что-то кросскомпилировать... там начинаются приколы
[13:18:24] <j123123> некоторый софт в сборочных скриптах пытается запускать некую скомпилированную фигню, ну типа каких-то тестов компилятора
[13:19:01] <j123123> проверки что вот эта штука собирается и нормально работает. И такой софт кросскомпилировать уже не выйдет так просто, надо через Qemu извращаться
[13:28:33] <Minoru> заплахло autotools :)
[13:51:30] <Minoru> > Most of our customers tend to use about 2-3 containers per full-time developer.
[13:51:51] Minoru ждёт, пока Travis прожуёт 19 задач
[13:52:17] <Minoru> чото этот Circle CI неправильно посчитал! Они, видать, нолик забыли. 20–30 на разработчика — вот это норм
[13:53:46] <Minoru> я вот думаю, если CI распределить по разным облакам, можно выиграть в скорости (4 контейнера на Travis, 8 на Cirrus, 4 на Circle, ещё сколько-то на Droid, ещё один на Appveyor). Всё это будет параллельно билдится, красота. Единственный минус — нужно держать в голове пяток разных способов описания контейнеров
[14:05:08] <tg> <@fvnever> А я так и делаю для tdlib.native
[14:05:22] <tg> <@fvnever> У меня билды для мака делаются в Travis, а билды для винды и линукса — в Appveyor.
[14:05:48] <tg> <@fvnever> Потом каждый билд загружает собранные артефакты на GitHub releases, а я скриптом оттуда скачиваю и делаю итоговый пакет.
[14:06:56] <Minoru> похоже, ты так делаешь просто потому, что на AppVeyor нет macOS?
[14:07:09] <Minoru> а я хочу ради того, чтобы все эти 19 задач быстрее завершались
[14:07:25] <tg> <@fvnever> Да, я так делаю именно поэтому.
[14:07:47] <Minoru> наверное, придётся предварительно перевести всё на Docker, чтобы было меньше сюрпризов с окружением в разных облаках
[14:08:00] <Minoru> и чтобы наконец-то можно было нормально отлаживаться, а не «пушнул и 20 минут ждёшь»
[14:08:04] <tg> <@fvnever> А все ли облака норм умеют в Docker?
[14:08:28] <tg> <@fvnever> Я подумываю тоже докеризировать свой билд
[14:08:36] <Minoru> а вот это нужно ещё исследовать!
[14:08:43] <tg> <@fvnever> А то там для разных линуксов, похоже, нужно по-разному линковаться
[14:08:53] <Minoru> пока что проблема в первую очередь в том, что *я* не умею в докер
[14:08:56] <tg> <@fvnever> Дебианщики одолели: постоянно приходят и ноют, что у них чота не работает
[14:09:23] <tg> <@fvnever> Я их начинаю спрашивать подробности и просить, чтобы они мне помогли собрать под дебиан, но обычно разговор заканчивается тем, что я пидор ._.
[14:10:08] <Minoru> ничо, они вчера Debian 10 выкатили, теперь у них времени чуток побольше станет — помогут
[14:10:15] <tg> <@sarakerrigan> [Sticker 😂]
[14:10:33] <tg> <@fvnever> Вот ты зря ржёшь, Керниган
[14:47:18] O01eg вышел(а) из комнаты
[15:11:39] <Minoru> ну вот, началось. Борюсь с дефолтным окружением в Travis CI, удаляя пакеты amd64 и заменяя их на i386. В локальной виртуалке такого не было, т.е. очевидно, что это Travis что-то поставил
[15:11:57] <Minoru> их, конечно, тоже можно понять — они хотят, чтобы в виртуалке сразу всё было и ничего не приходилось ставить
[15:47:53] <tg> <@ttldtor> >> <fvnever> Я их начинаю спрашивать подробности и просить, чтобы они мне помогли собрать под дебиан, но обычно разговор заканчивается тем, что я пидор ._.
а дай почитать
[15:48:17] <tg> <@fvnever> Хочешь почитать, какой я пидор?
[15:50:12] <tg> <@ttldtor> >> <fvnever> Хочешь почитать, какой я пидор?
хочу почитать нытьё доебанщиков
[15:53:59] <tg> <@fvnever> >> <ttldtor> хочу почитать нытьё доебанщиков
Я не смог его найти
[15:54:24] <tg> <@fvnever> Потому что они
1) пишут в рандомные тикеты или пул-реквесты
2) нигде не могут внятно написать «я дебианщик, у меня не работает то-то по такой-то причине»
[15:54:30] <Minoru> у Форневера фантомное нытье в багртрекере, вызывайте врача!
[15:54:32] <tg> <@fvnever> Из них слова надо клещами вытягивать
[15:56:10] <tg> <@ttldtor> Может написать правила оформления тикетов?
[15:56:55] <tg> <@ttldtor> Ну или пусть пишут ось, объём рамки, оконный менеджер
[15:58:42] <tg> <@fvnever> Дак ну пусть пишут хотя бы ось.
[16:05:41] <tg> <@eaeee> Я думаю в клиентах телеги должны дать возможность отключать анимацию в стикерах
[16:06:02] <tg> <@ttldtor> Я думаю отказаться от телеги
[16:06:48] <tg> <@fvnever> Всё из-за анимированных стикеров?
[16:06:59] <Minoru> ходить пешком гораздо полезнее!
[16:07:44] <tg> <@Private Cash M> https://bit.ly/Cloud_Token_Review
[16:07:59] <tg> <@eaeee> >> <eaeee> Я думаю в клиентах телеги должны дать возможность отключать анимацию в стикерах
Ну или хотя бы когда курсором на них наводишь
[16:08:34] <tg> <@fvnever> Надо же, а тут как раз прибежала причина, по которой можно хотеть отказаться от телеги.
[16:08:40] <tg> <@ttldtor> >> <fvnever> Всё из-за анимированных стикеров?
ну есть же энтот матрикс
[16:08:49] <tg> <@ttldtor> та мтелефон указывать не надо и всё такое
[16:08:58] <tg> <@fvnever> А, ну это доброе дело, да.
[16:09:03] <tg> <@eaeee> >> <fvnever> Надо же, а тут как раз прибежала причина, по которой можно хотеть отказаться от телеги.
Кажется его уже расстреляли
[16:09:13] <tg> <@fvnever> >> <eaeee> Кажется его уже расстреляли
Дак я же его и пизданул
[16:09:33] <tg> <@fvnever> >> <ttldtor> ну есть же энтот матрикс
Кароч щас для телеграма-XMPP бота допишем, и попробую туда матрикс шматрикс прикрутить.
[16:09:44] <tg> <@fvnever> Надеюсь, у него не как у телеграма и XMPP, есть норм либы
[16:09:47] <tg> <@ttldtor> >> <Minoru> ходить пешком гораздо полезнее!
я больше 5 км со своей ного, наверное, не пройду
[16:09:51] <tg> <@fvnever> Которые блец не мне придётся саппортить
[16:10:23] <tg> <@ttldtor> у xmpp плохие либы?
[16:10:38] <tg> <@ttldtor> даже сраный qxmpp нормальный был
[16:10:49] <tg> <@ttldtor> да даже swiften
[16:10:52] <Minoru> @ttldtor: я так понимаю, что либы охуенные, единственный минус — их нужно написать
[16:12:21] <tg> <@ttldtor> Я почему хоч уотказываться от телеги... тут не в телеге даже дело. Вся тенденция отстой. То есть, банк-клиент привязан к телефону даже... это бред
[16:12:43] <tg> <@fvnever> >> <ttldtor> у xmpp плохие либы?
Просто сраное говно
[16:12:46] <tg> <@fvnever> Либы две
[16:12:53] <tg> <@fvnever> Одна из них говно и её мейнтейню я
[16:12:59] <tg> <@fvnever> Вторая… говно и её мейнтейню я
[16:13:02] <tg> <@ttldtor> >> <fvnever> Одна из них говно и её мейнтейню я
они шарповые?
[16:13:05] <tg> <@fvnever> Да.
[16:13:07] <tg> <@ttldtor> ааа
[16:13:13] <tg> <@fvnever> Есть ещё третья, её мейнтейню не я
[16:13:23] <tg> <@fvnever> Но она в MUC не умеет
[16:13:28] <tg> <@fvnever> То есть там ещё хуже, чем в тех двух.
[16:13:32] <tg> <@eaeee> Про какие либы речь?
[16:13:36] <tg> <@ttldtor> Они архтектурно говно или у них просто фич нет?
[16:13:57] <tg> <@fvnever> >> <eaeee> Про какие либы речь?
https://github.com/ForNeVeR/Jabber-Net
https://github.com/vitalyster/SharpXMPP
[16:14:17] <tg> <@fvnever> >> <ttldtor> Они архтектурно говно или у них просто фич нет?
Первая архитектурно говно, там под капотом такие рейс кондишоны что я их месяцами не могу пофиксить
[16:14:29] <tg> <@fvnever> Вторая вроде не настолько говно, но в целом довольно глючновата
[16:14:44] <tg> <@fvnever> Ну и там API на событиях, а это имхо так себе затея
[16:14:54] <tg> <@fvnever> А, ну и в асинхронность чот не умеет никто
[16:15:04] <tg> <@fvnever> В общем, я вообще хз как их так люди пишут
[16:15:20] <tg> <@fvnever> Ктому ж лицензии крайне дебильные у всех
[16:15:28] <tg> <@fvnever> Надо блин взяться и свою написать, нормальную.
[16:15:30] <tg> <@ttldtor> ээээ охуеть, платная https://matrix-xmpp.io/pricing
[16:15:38] <tg> <@fvnever> В JVM, кстати, тоже всё очень глупо сделано
[16:15:45] <tg> <@fvnever> И тоже надо переписывать, проблемы примерно такие же.
[16:16:11] <tg> <@fvnever> Не умеют в асинхронность, везде подход на event handlers/listeners
[16:16:38] <tg> <@fvnever> И очень стрёмное поведение по умолчанию, какие-нибудь там автоматические реконнекты которые рушат тебе всю жизнь
[16:17:29] <tg> <@ttldtor> ну если завести абстракцию Сессия, то с хэндлерами по идее жить можно
[16:18:05] <tg> <@eaeee> >> <fvnever> Есть ещё третья, её мейнтейню не я
всего три либы для XMPP на шарпе?
[16:18:15] <tg> <@fvnever> >> <eaeee> всего три либы для XMPP на шарпе?
Ну я знаю три.
[16:18:47] <tg> <@fvnever> https://github.com/ubiety/Ubiety.Xmpp.Core вот третья
[16:19:09] <tg> <@eaeee> это все для написания клиентов?
[16:19:13] <tg> <@fvnever> Да.
[16:19:20] <tg> <@fvnever> В Jabber-Net вроде и для сервера были тулы
[16:19:28] <tg> <@fvnever> Но автор очень просил не делать сервер с её помощью %)
[16:19:36] <tg> <@fvnever> Короче везде дурь
[16:19:57] <tg> <@ttldtor> не делать сервер, а тем более под виндой)
[16:20:18] <tg> <@ttldtor> разрабы nginx просят под виндой его не юзать в пердакшене)
[16:20:27] <tg> <@fvnever> Автор либы был ещё и автором RFC'шек каких-то для XMPP, и он за деньги делал сервера
[16:20:34] <tg> <@fvnever> >> <ttldtor> разрабы nginx просят под виндой его не юзать в пердакшене)
Ну потому что они вафлежуи
[16:20:46] <tg> <@fvnever> И просят вафлежуйское поделье своё не юзать. Я с ними согласен.
[16:20:54] <tg> <@ttldtor> >> <fvnever> Ну потому что они вафлежуи
Барнаульское ругательство?
[16:21:04] <tg> <@fvnever> Это… э, тюремное, наверное?
[16:21:11] <tg> <@fvnever> Хуесосами я их назвал, короче.
[16:21:15] <tg> <@fvnever> Потому что иначе ну никак.
[16:21:38] <tg> <@fvnever> Отвратительно они пишут свой нгинкс под винду, там с воркерами до сих пор траблы.
[16:21:42] nightmare вошёл(а) в комнату
[16:21:55] <tg> <@fvnever> Дожили до того, что IIS лучше работает.
[16:22:03] <tg> <@fvnever> А это ну прям стыд.
[16:22:13] <tg> <@matwey_kornilov> А зачем запускать nginx под Windows?
[16:22:20] <tg> <@fvnever> >> <matwey_kornilov> А зачем запускать nginx под Windows?
А если ты портабельно хочешь
[16:22:27] <tg> <@matwey_kornilov> Портабельно что?
[16:22:37] <tg> <@fvnever> Неохота под каждый сервер отдельный конфиг писать, и ты просто пишешь конфиг для nginx, и везде его юзаешь
[16:22:47] <tg> <@matwey_kornilov> Конфиг чего?
[16:22:53] <tg> <@fvnever> Конфиг сервера, ну.
[16:23:03] <tg> <@matwey_kornilov> Зачем тебе сервер запускать на венде?
[16:23:09] <tg> <@matwey_kornilov> Не запускай и конфиг не нужен будет
[16:23:12] <tg> <@fvnever> Не советуй
[16:23:15] <tg> <@fvnever> Да не советуем будешь
[16:23:34] <tg> <@fvnever> Или как правильно, обсоветован?
[16:24:06] <tg> <@ttldtor> тебя назховёт форневер вафлежуем и потом ты будешь всю жизнь на него обижаться...
[16:24:16] <tg> <@fvnever> Может назвать, да.
[16:25:51] <tg> <@ttldtor> >> <matwey_kornilov> Зачем тебе сервер запускать на венде?
Ну я вижу это только в контексте скайнета, который захватит каждую машину. Придётся ему сервер запустить на винде, а так - хз...
[16:26:00] <tg> <@ttldtor> хоть и линукс - дерьмо
[16:26:31] <tg> <@ttldtor> всё - дрек кроме пчёл, да и пчёлы - тоже дрек
[16:28:01] ma1uta вышел(а) из комнаты
[16:28:04] ma1uta вошёл(а) в комнату
[16:28:34] <tg> <@ttldtor> @fvnever что-то тут твоих либ нету https://xmpp.org/software/libraries.html
[16:28:47] <tg> <@ttldtor> все какие-то платнодерьмовые
[16:29:00] <tg> <@fvnever> Дак там, наверное, надо место проплачивать.
[16:29:33] <tg> <@fvnever> Вот gloox норм была либа, человечная.
[16:30:05] <tg> <@ttldtor> ну она там и есть
[16:30:15] <tg> <@fvnever> Я потому и вспомнил про неё.
[16:30:17] <tg> <@ttldtor> но к ней же биндиться надо
[16:30:35] <tg> <@fvnever> О, а gloox живой
[16:30:37] <tg> <@ttldtor> а я swiften юзал. Очень просто и тупо
[16:30:47] <tg> <@fvnever> https://camaya.net/news/gloox-1-0-22-released/ в этом году последний релиз
[16:32:57] <tg> <@eaeee> >> <fvnever> Дак там, наверное, надо место проплачивать.
Ничего себе
[16:33:01] <tg> <@ttldtor> а хрена оно не на гитхабе или чём-то таком? Лицензия же там жопель 3
[16:33:16] <tg> <@fvnever> Автор наверняка очень старый
[16:33:23] <tg> <@fvnever> У него там про SVN что-то написано
[16:33:35] <tg> <@fvnever> И ещё, блин, спасибо, что хоть так?
[16:34:17] <tg> <@ttldtor> >> <ttldtor> а хрена оно не на гитхабе или чём-то таком? Лицензия же там жопель 3
или не жопель 3 ... там что-то странное, чтобы дружить с опенссл
[16:34:33] <tg> <@eaeee> А я даже не помню какую либо под андроид использовал
[16:34:51] <tg> <@eaeee> Smack что ли
[16:45:25] <tg> <@fvnever> >> <eaeee> Smack что ли
Вот на ней хорта написана, шляпная либа.
[16:45:30] <tg> <@fvnever> Я, кажись, придумал, как правильно либу писать
[16:45:53] <tg> <@fvnever> Надо шоб у неё был реактивный асинхронный API с лайфтайм трекингом для различных объектов
[16:49:08] <tg> <@fvnever> Ну типа
var c = Connect("xmpp:server")
  .ObserveConnection((lifetime, connection) => {
    connection.OnMessage(lifetime, msg => Process());
    connection.JoinRoom(lifetime, room);
  })
  .ObserveRoomSession((lifetime, room) => {
    room.SendMessageAsync(lifetime, "hellow")
      .Then(res => {
        if (res.Success) Console.WriteLine("succ");
        else Console.WriteLine("suck");
      });
  });
[16:50:23] <tg> <@fvnever> Шоб все объекты нормально жили внутри вот этих лямбочек, и всем было понятно, у кого кокой лайфтайм, и они правильно терминировались/не пытались работать, если лайфтайм завершён.
[16:51:49] <tg> <@fvnever> Я ещё помучаюсь с существующими либами, а потом их попытаюсь заврапать в подобный API, короче.
[16:52:34] <tg> <@fvnever> Похоже, уже сейчас нужно, потому что в SharpXmpp внезапно Connect() неявно асинхронный %)
[16:53:35] <tg> <@ttldtor> >> <fvnever> Я ещё помучаюсь с существующими либами, а потом их попытаюсь заврапать в подобный API, короче.
а потом ты захерачишь акторы
[16:53:41] <tg> <@fvnever> >> <ttldtor> а потом ты захерачишь акторы
Кажись, нет
[16:53:46] <tg> <@fvnever> Акторы тоже шляпа
[16:54:01] <tg> <@ttldtor> ну воот
[16:54:04] <tg> <@fvnever> Как раз из IM-кода я выпилил последних акторов только что.
[16:54:21] <tg> <@fvnever> Там слишком много state management в таком виде, в каком акторы не очень пригодны.
[16:54:25] <tg> <@ttldtor> ок, значит реакторы
[16:54:33] <tg> <@fvnever> А что это такое?
[16:54:57] <tg> <@ttldtor> хз, в ASIO реакторы какие-то
[16:55:36] <tg> <@ttldtor> реакторы, проакторы....
[16:56:47] <Minoru> по-моему, реактор это просто нить, которая обрабатывает события. Т.е. это просто деталь имплементации асинхронных примитивов вроде future
[16:57:18] <tg> <@ttldtor> по мне так это просто хэндлер
[16:57:29] <tg> <@ttldtor> перебираем хэндлеры и дёргаем
[16:57:41] <tg> <@ttldtor> либо люди не понимаю, что пишут
[16:58:04] <tg> <@ttldtor> блин, там ещё муксы
[16:58:25] <tg> <@ttldtor> где-то я это уже видел
[17:04:13] <tg> <@fvnever> Во блин, обругал я SharpXMPP за неявную асинхронность
[17:04:27] <tg> <@fvnever> А оказывается, что я это делаю уже не первый раз, и в прошлый раз я ругался там в пул-реквестах прямо
[17:04:41] <tg> <@fvnever> Причём это было успешно, и я заставил контрибьютора всё пофиксить!
[17:07:07] <Minoru> а я правильно понял, что для использования Docker на Travis мне нужно написать Dockerfile, который будет ставить в контейнер все зависимости, копировать в контейнер текущую директорию (в которую Travis заботливо склонировал мой репозиторий), и выполнять make -j9?
[17:07:18] <Minoru> я думал, что контейнер это только окружение, а команды в него можно снаружи подавать
[17:07:38] <Minoru> ну и действительно можно делать docker run имяобраза команда, но у контейнера нет доступа к локальной файловой системе
[17:07:40] <tg> <@fvnever> Ну вот эта наружка и есть Dockerfile
[17:07:41] <Minoru> моей ФС
[17:07:56] <tg> <@fvnever> ФС можно пробросить через volume, так делают
[17:08:16] <Minoru> а это «правильно»?
[17:08:23] <tg> <@fvnever> Думаю, да.
[17:09:06] <Minoru> пойду прочту про volume тогда. Спасибо!
[17:09:21] <tg> <@fvnever> Может, LGPL — это не совсем плохо, а?
[17:10:20] <Minoru> кажется, volume это не совсем то. Вот bind mounts это самое подходящее
[17:11:40] <tg> <@fvnever> Про такое я не слыхал!
[17:11:46] <Minoru> https://docs.docker.com/storage/bind-mounts/
[17:12:30] <tg> <@fvnever> Очень похоже на volumes.
[17:12:53] <Minoru> volumes более тяжеловесные, насколько я понял
[17:13:08] <tg> <@fvnever> Они просто не дают доступа к локальной ФС
[17:13:11] <Minoru> bind mounts это как симлинк, а volumes это какая-то копия моей директории, что ли
[17:13:16] <tg> <@fvnever> В общем, ты правильно нашёл
[17:19:53] <Minoru> о, во, народ примерно так и предлагает этими вещами пользоваться:
> docker run -v $PWD:/build_dir -w /build_dir -t liuchong/rustup:musl cargo build --release
( https://github.com/liuchong/docker-rustup )
Т.е. монтируем текущую директорию ($PWD) в /build-dir контейнера, выполняем в нём нужные нам команды, результаты имеем в своей локальной директории
[17:20:42] <tg> <@fvnever> Кот какой-то
[17:23:22] <tg> <@fvnever> Булин, теперь всю архитектуру на асинхронщину перепиливать
[17:23:28] <tg> <@fvnever> Нафиг я им её посоветовал только
[17:25:14] <Minoru> а что LGPL не так, кстати? Если видишь в своём коде очевидную коммерческую пользу и не хочешь, чтобы её получал кто-то другой — используешь LGPL, и проблема решена
[17:25:32] <tg> <@fvnever> Я не вижу в своём коде никакой коммерческой пользы
[17:25:44] <Minoru> можно на всякий случай использовать dual licensing и продавать коммерческие лицензии
[17:25:46] <tg> <@fvnever> Но я хочу, чтобы пользу от моего кода получали все, если это возможно.
[17:26:00] <tg> <@fvnever> Не хочу никакого всякого случая, хочу всё и для всех
[17:26:19] <Minoru> тогда LGPL не для тебя (насколько я понимаю)
[17:26:34] <tg> <@fvnever> Да, я не люблю LGPL.
[17:26:39] <tg> <@fvnever> Но либа уже под LGPL написана :(
[17:26:55] <tg> <@fvnever> И тут перспективы — либо переписывать нахер, либо пытаться использовать.
[17:27:03] <tg> <@fvnever> Непригодная лицензия — это, ну, довольно суровая проблема.
[17:29:22] <Minoru> жесть, сколько промежуточных образов Докер создаёт. Надо его с SSD убирать поскорее
[17:30:11] <tg> <@fvnever> Он кэширует же
[17:30:29] <tg> <@fvnever> Ты должен свои образы так построить, чтобы он кэшировал всё, кроме самых последних слоёв.
[17:31:00] <tg> <@fvnever> Каждая строчка в докерфайле создаёт новый слой, и будет перевыполняться только если поменялись входы (либо входные файлы, либо предыдущие слои).
[17:32:40] <Minoru> ага, это я уже сообразил. Но в процессе насоздавал тонну образов :)
[17:32:43] <Minoru> 2,5 Гб уже
[17:34:05] <tg> <@fvnever> Удоли
[17:34:14] <tg> <@fvnever> Там есть какая-то клёвая команда, которая удаляет ненужное
[17:34:19] <tg> <@AlexFails> >> <sarakerrigan> но сделать их можно только в платном проприетарном софте
Да пиздец. Хотя для Sketch есть лотти-плагин
[17:34:22] <tg> <@fvnever> docker prune system вроде
[17:34:43] ForNeVeR вошёл(а) в комнату
[17:34:49] <tg> <@sarakerrigan> >> <AlexFails> Да пиздец. Хотя для Sketch есть лотти-плагин
ага, а скетч платный и только под макосью
[17:34:53] <tg> <@sarakerrigan> 10/10
[17:35:04] <tg> <@sarakerrigan> со скетча вся эта срань и началась
[17:35:11] <tg> <@AlexFails> >> <a1batross> [Sticker ✌]
Даввф запилим
[17:35:31] <tg> <@AlexFails> >> <sarakerrigan> ага, а скетч платный и только под макосью
Бля, перепутал с инксейпом
[17:36:33] <tg> <@sarakerrigan> >> <AlexFails> Бля, перепутал с инксейпом
там поддержки анимации никогда не было
[17:36:57] <tg> <@AlexFails> >> <ttldtor> Почему-то нет желания даже мокать их сервак...
Уже @kaffeine сделал это за тебч
[17:37:11] <tg> <@AlexFails> >> <sarakerrigan> там поддержки анимации никогда не было
А какой-то опунсурсь умел же
[17:37:29] <tg> <@AlexFails> >> <Devel29A> У меня до сих пор бомбит от того, что, сука, каждый говносайт мне предлагает включить нотификации с него
+
[17:37:34] <tg> <@sarakerrigan> [Sticker 😂]
[17:37:57] <tg> <@sarakerrigan> какая-никакая векторная анимация есть только в драгонбонес и блендере
[17:38:14] <tg> <@AlexFails> >> <a1batross> Но я бы даже платил за такой браузер. Со всеми сорцами, конечно же.
Пошли
[17:38:32] <tg> <@AlexFails> >> <sarakerrigan> какая-никакая векторная анимация есть только в драгонбонес и блендере
Пошли к ним хуцнем плагин
[17:38:43] <tg> <@sarakerrigan> никто из них не умеет экспортить в анимированный свг(у блендера там тупо экспорт каждого кадра в свг)
[17:38:52] <tg> <@AlexFails> >> <sarakerrigan> никто из них не умеет экспортить в анимированный свг(у блендера там тупо экспорт каждого кадра в свг)
Блетб
[17:38:57] <tg> <@sarakerrigan> >> <AlexFails> Пошли к ним хуцнем плагин
сорь, у меня переезд на носу
[17:39:20] <Minoru> docker system prune, да. Спасибо, @fvnever
[17:39:55] <tg> <@AlexFails> Надо его научить!
[17:40:17] <tg> <@AlexFails> >> <a1batross> Я там с владельцем шарю домены xash.su и fwgs.ru
На втором домене сломалась гитхаб-странтца
[17:47:28] <tg> <@AlexFails> >> <j123123> вот если на арм что-то кросскомпилировать... там начинаются приколы
cl.exe норм собирает
[17:47:38] <tg> <@AlexFails> >> <j123123> некоторый софт в сборочных скриптах пытается запускать некую скомпилированную фигню, ну типа каких-то тестов компилятора
Смак например
[17:47:43] <tg> <@AlexFails> >> <fvnever> А я так и делаю для tdlib.native
А зачем тебе тдлиб
[17:48:00] <tg> <@fvnever> >> <AlexFails> А зачем тебе тдлиб
https://github.com/egramtel/egram.tel
[17:48:21] <tg> <@fvnever> Я занимаюсь нативной инфраструктурой вот для этого няшного клиента.
[17:49:43] <tg> <@AlexFails> >> <fvnever> Надеюсь, у него не как у телеграма и XMPP, есть норм либы
Да там рест апи, можно самому нахуячить легко
[17:50:01] <tg> <@fvnever> >> <AlexFails> Да там рест апи, можно самому нахуячить легко
О, это хорошие новости.
[17:51:00] <tg> <@fvnever> Кароч, у Emulsion очередной технологический прорыв, я отсоединил акторов от реализаций IM.
[17:51:12] <tg> <@fvnever> Уже почти можно запускать в чат.
[17:52:15] <tg> <@fvnever> Хотя, может, и совсем даже можно запускать в чат?
[17:52:18] <tg> <@AlexFails> >> <fvnever> Надо шоб у неё был реактивный асинхронный API с лайфтайм трекингом для различных объектов
Пошли сделаем
[17:52:42] <tg> <@fvnever> >> <AlexFails> Пошли сделаем
Я думаю, что с Emulsion ещё немножко поковыряюсь, и будем делать.
[17:52:53] <tg> <@fvnever> Ну чтоб более чётко понять, какой формы API мне нужен.
[17:53:27] <tg> <@fvnever> Мне хочется иметь идеологически похожие клиенты под все IM
[17:53:37] <tg> <@AlexFails> [Sticker 😂]
[17:54:12] <tg> <@fvnever> Ну потому что у нас вот в цодингтиме это самая частая задача — взять и пилить штуку, которая единообразно с разными мессенжерами работает.
[17:54:15] <tg> <@AlexFails> >> <fvnever> ФС можно пробросить через volume, так делают
С относительными путями на каждой платформе говнина
[17:54:49] <tg> <@AlexFails> >> <fvnever> Может, LGPL — это не совсем плохо, а?
BSL!
[17:55:05] <tg> <@fvnever> >> <AlexFails> BSL!
Щас самая крутая лицензия — это Blue Oak, наверное.
[17:55:15] <tg> <@fvnever> Minoru, ты кстати слыхал про Blue Oak?
[17:55:17] <tg> <@AlexFails> >> <Minoru> https://docs.docker.com/storage/bind-mounts/
#docker #синий_кит
[17:55:21] <tg> <@AlexFails> >> <fvnever> Щас самая крутая лицензия — это Blue Oak, наверное.
Да
[17:55:31] <tg> <@AlexFails> >> <fvnever> Minoru, ты кстати слыхал про Blue Oak?
Он и кидал сюда линк
[17:55:36] <tg> <@fvnever> Кароч эта
[17:55:52] <tg> <@fvnever> Щас будем тестово переезжать на нового бота, я вот что решил.
[17:56:13] <tg> <@fvnever> Там ещё херова гора всего не допилена, но попробовать-то нужно
[17:56:59] <tg> <@ttldtor> >> <AlexFails> Уже @kaffeine сделал это за тебч
хорошо, что у кого-то было на это время ...
[17:57:37] <tg> <@ttldtor> >> <sarakerrigan> сорь, у меня переезд на носу
ты куда?
[17:57:56] <tg> <@sarakerrigan> >> <ttldtor> ты куда?
в другой район
[17:58:06] <tg> <@ttldtor> >> <sarakerrigan> в другой район
врач посоветовал?
[17:58:17] <tg> <@ttldtor> Слуш, тебе надо съеёбывать из Питера, бро...
[17:58:19] <tg> <@sarakerrigan> >> <ttldtor> врач посоветовал?
другой район питера, лол
[17:58:46] <tg> <@eaeee> >> <fvnever> Щас самая крутая лицензия — это Blue Oak, наверное.
синий дуб?
[17:58:51] <tg> <@fvnever> Да.
[17:58:54] <tg> <@fvnever> Совсем как я!
[17:59:02] <tg> <@ttldtor> синяя борода
[17:59:07] <tg> <@ttldtor> убивец женсчин
[17:59:35] <tg> <@ttldtor> Форневер Синедуб  Форневерсон
[17:59:38] <tg> <@ttldtor> кхм
[17:59:41] <tg> <@ttldtor> у нас тут жарко
[18:01:15] <tg> <@AlexFails> >> <fvnever> Там есть какая-то клёвая команда, которая удаляет ненужное
docker prune --all
[18:01:41] <tg> <@AlexFails> >> <sarakerrigan> какая-никакая векторная анимация есть только в драгонбонес и блендере
А кинь на них линки
[18:01:54] <tg> <@ttldtor> >> <AlexFails> docker prune --all
а я как-то через ls и такую-то матерь делал
[18:01:56] <tg> <@sarakerrigan> >> <AlexFails> А кинь на них линки
на што
[18:02:13] <tg> <@ttldtor> но мне надо было левые вольюм ыприбивать
[18:02:15] <tg> <@sarakerrigan> https://www.blender.org/
http://dragonbones.com/en/index.html
[18:02:43] <Minoru> @fvnever: Blue Oak няшен, я даже собирался под ним маленький проектик лицензировать, но потом раздумал его писать
[18:02:46] <tg> <@AlexFails> >> <sarakerrigan> на што
На эти проги (на первую например)
[18:02:51] <tg> <@AlexFails> >> <sarakerrigan> https://www.blender.org/
>> http://dragonbones.com/en/index.html
Спс
[18:03:09] <tg> <@sarakerrigan> но довольно странно не слышать о блендере
[18:03:15] <tg> <@ttldtor> >> <AlexFails> А он пилит телепатию же
омг, я, видимо, в каком-то информационном пузыре и не ебу кто это и что он пилит. Надо менять это.
[18:05:12] <tg> <@AlexFails> >> <sarakerrigan> но довольно странно не слышать о блендере
Слышал про него. Не знал, что в нем вектор есть. Думал на блендер после максимки сваливать
[18:05:24] <tg> <@sarakerrigan> >> <AlexFails> Слышал про него. Не знал, что в нем вектор есть. Думал на блендер после максимки сваливать
он умеет в 2д-анимацию
[18:05:38] <tg> <@AlexFails> Вообще збс тогда
[18:05:41] <tg> <@sarakerrigan> я какой-то плагин для скелетной анимации еще юзал
[18:06:55] O01eg вошёл(а) в комнату
[18:06:55] <tg> <@ttldtor> гм, надо сказать дедфуду, чтобы он телепатию себе целиколв впилил в личкрафты
[18:06:57] O01eg вышел(а) из комнаты
[18:07:00] <tg> <@ttldtor> у него заодно и телега появится
[18:07:14] O01eg вошёл(а) в комнату
[18:08:39] <tg> <@ttldtor> а, гм... telegramqt
[18:10:56] ForNeVeR вышел(а) из комнаты: Disconnected: closed
[18:15:49] <tg> <@a1batross> >> <AlexFails> На втором домене сломалась гитхаб-странтца
Та это нестрашно
[18:15:55] <tg> <@a1batross> Давай запилим, да ))
[18:16:09] <tg> <@AlexFails> [Sticker 😂]
[18:34:32] ForNeVeR вошёл(а) в комнату
[18:36:40] <tg> <@fvnever> Кароч я потыкал нового бота в докере — кажись, с реконнектами у него дела получше, чем у старого.
[18:36:52] <tg> <@fvnever> Во всяком случае, к телеграму он со скрипом, но переподключается.
[18:37:00] <tg> <@fvnever> Щас попробую уронить сервер, держитесь за снасти
[18:37:59] ForNeVeR вышел(а) из комнаты: Disconnected: Received SIGTERM
[18:37:59] tg вышел(а) из комнаты: Disconnected: Received SIGTERM
[18:38:20] tg вошёл(а) в комнату
[18:38:25] ForNeVeR вошёл(а) в комнату
[18:44:15] tg вышел(а) из комнаты: Disconnected: closed
[18:44:18] tg вошёл(а) в комнату
[18:44:24] <ForNeVeR> Ок, не работает.
[18:52:26] tg вышел(а) из комнаты: Disconnected: Received SIGTERM
[18:52:26] ForNeVeR вышел(а) из комнаты: Disconnected: Received SIGTERM
[18:52:27] tg вошёл(а) в комнату
[18:52:47] tg вышел(а) из комнаты: Disconnected: closed
[18:52:50] tg вошёл(а) в комнату
[18:55:11] <tg> <@ttldtor> гм, эта хрень для одноразовых алертов? https://code.woboq.org/qt5/qtbase/src/widgets/dialogs/qdialog.cpp.html#612
[19:01:15] ForNeVeR вошёл(а) в комнату
[19:01:41] ForNeVeR вышел(а) из комнаты: Disconnected: Received SIGTERM
[19:01:41] tg вышел(а) из комнаты: Disconnected: Received SIGTERM
[19:01:43] tg вошёл(а) в комнату
[19:02:03] tg вышел(а) из комнаты: Disconnected: closed
[19:02:07] tg вошёл(а) в комнату
[19:18:34] <Minoru> вау, у меня что-то в докере собирается!
[19:18:54] <tg> <@fvnever> У меня уже всё собирается
[19:19:15] <tg> <@fvnever> https://github.com/codingteam/emulsion/blob/feature/docker/Dockerfile вот так вот
[19:19:31] <Minoru> чото мультилиб в виртуалке гораздо проще ставился. Тут пришлось повозиться: видимо, написать «libblahblah-dev:i386» недостаточно, чтобы всё работало, приходится просить и libblahblah:i386, и libblahblah-dev
[19:19:46] <Minoru> причём для libstfl это не работает, там приходится и для -dev тоже указывать архитектуру
[19:20:04] <tg> <@fvnever> У них отдельные dev-пакеты под каждую архитектуру? Любопытно.
[19:21:52] <Minoru> @fvnever: насколько я понял, это потому что в пакете лежит конфиг для pkg-config. Для каждой архитектуры у pkg-config своя директория
[19:22:48] ForNeVeR вошёл(а) в комнату
[19:29:02] ForNeVeR вышел(а) из комнаты: Disconnected: Replaced by new connection
[19:29:03] ForNeVeR вошёл(а) в комнату
[19:45:46] <Minoru> Форневера, видать, не отпускают спать, пока он бота не починит. Извещения от GitHub летят как из пулемёта!
[19:46:06] <tg> <@fvnever> Ну я там всё разломал, но теперь вполне понятно, что делать.
[19:46:46] <tg> <@fvnever> Починить баги в либе, опубликовать её новую версию в репозиторий пакетов, и поправить наш код, чтобы он корректно новую версию использовал.
[19:46:57] <tg> <@fvnever> После этого, вроде, всё заработает, и автореконнекты будут, и ваще шик.
[19:47:20] <tg> <@fvnever> На прод всё равно едем прям щас, из экспериментального бранча с разломанной библиотекой.
[19:47:29] <tg> <@fvnever> Betta than nothing!
[19:49:16] ForNeVeR вышел(а) из комнаты: Disconnected: closed
[19:49:17] <Minoru> главное чтобы не beta then nothing
[19:52:56] <Minoru> а я правильно понимаю, что Docker Hub хранит финальный образ, т.е. если я делаю docker pull, то мне сразу прилетает squashfs с уже готовой системой, и локально у меня уже ничего не собирается?
[19:53:43] <Minoru> жесть ×2, мои эксперименты насоздавали 14 гигабайт промежуточных образов
[19:54:42] <portnov> докер место любит, да
[19:55:54] <tg> <@fvnever> Чувачки, я кому надо навыдавал админских прав
[19:56:02] <tg> <@fvnever> Если бот устроит булгур — мочите его нахрен
[19:56:09] ForNeVeR вошёл(а) в комнату
[19:56:31] <portnov> материться начнёт в чят?
[19:58:35] <tg> <@fvnever> Булин, чота докер ещё не хочет работать
[19:59:13] <ForNeVeR> Minoru: про docker hub — да, верно.
[20:01:51] <Minoru> отлично! Наверное, нужно тогда свой Dockerfile там опубликовать и образ залить, чтобы Travis CI потом каждый раз его не пересобирал
[20:02:25] <Minoru> правда, я ещё не научился всё это добро на Travis запускать. Да и локально оно чото какие-то заголовочные файлы до сих пор найти не может
[20:02:42] <tg> <@fvnever> Это норма, коммить в прод!
[20:13:44] dzhon вошёл(а) в комнату
[20:15:06] <ForNeVeR> Похоже, я нечаянно весь сервер обновил, хотя хотел просто поставить свежий докер ._.
[20:15:26] <portnov> I ACCIDENTIALLY
[20:15:30] <portnov> THE WHOLE SERVER
[20:18:42] dzhon вышел(а) из комнаты
[20:31:43] <tg> <@fvnever> И короче всё зря, докер у меня всё равно остался старый.
[20:31:49] <tg> <@fvnever> Ладно, на fornever.me запущу тогда.
[20:36:10] тг вошёл(а) в комнату
[20:36:43] tg вышел(а) из комнаты: Disconnected: closed
[20:36:51] <ForNeVeR> Эм, как слышно?
[20:37:18] <ForNeVeR> Так, не работает.
[20:38:21] <тг> <@fvnever> [DATA UNRECOGNIZED]
[20:38:24] <тг> <@fvnever> Тест.
[20:38:40] <ForNeVeR> Ну что ж, товарищи, встречайте, это теперь наш новый бот!
[20:38:47] <тг> <@winged_pegasus> Ура!
[20:38:54] <тг> <@fvnever> test reply
[20:38:57] <тг> <@winged_pegasus> Восславим Омниссию!
[20:39:02] <тг> <@fvnever> Восславляем.
[20:39:11] <тг> <@winged_pegasus> [DATA UNRECOGNIZED]
[20:39:13] <тг> <@eaeee> Чем он лучше?
[20:39:21] <тг> <@winged_pegasus> На фшарпе
[20:39:34] <тг> <@fvnever> Тем, что он теперь написан на человеческом языке, и в него можно запилить все наши многочисленные фичреквесты.
[20:39:48] <тг> <@eaeee> А до этого на чем был?
[20:39:50] <тг> <@fvnever> Ну и стикеры, конечно, прекрасно отображаются в жаббере теперь
[20:39:56] <тг> <@fvnever> Примерно так:
[DATA UNRECOGNIZED]
[20:40:21] <тг> <@winged_pegasus> [DATA UNRECOGNIZED]
[20:40:24] <тг> <@fvnever> Прости господи, на жабаскрипте с примесью flow
[20:40:39] <тг> <@eaeee> Звучит интересно
[20:40:43] Orhideous вышел(а) из комнаты
[20:41:41] <тг> <@fvnever> 1
[20:41:42] <тг> <@fvnever> 2
[20:41:46] <тг> <@fvnever> Мда
[20:42:08] <тг> <@fvnever> Работать нам ещё и работать над этим ботом.
[20:42:29] <тг> <@fvnever> Ну, кстати, быстрая отправка сообщений — это как раз то, что мне очень сложно было починить в жаваскриптовом боте, и это я рассчитываю пофиксить в новом.
[20:44:25] <Minoru> > [DATA UNRECOGNIZED]
Ну вобщем-то я примерно так стикеры и воспринимал до сих пор, так что регрессий нет, всё збс, Форневер молодец :)
[20:45:26] <Minoru> о, там же новые Ryzen вышли!
[20:53:10] <тг> <@fvnever> А, ну и ещё он к разнообразным сетевым неполадкам заметно толерантнее.
[20:53:39] <тг> <@fvnever> Во всяком случае, точно станет толерантнее после того, как я все баги в SharpXMPP починю :)
[20:53:54] <тг> <@fvnever> _vt там мне оставил пару подарочков.
[20:55:56] <ma1uta> Он так и не научился в double-puppet?
[20:56:14] <тг> <@fvnever> Вшто?
[21:02:57] <ma1uta> Это когда для каждого пользака из одной сети создаётся его shadow-копия в другой. И наоборот. И все сообщения от пользователя транслируются от shadow-копии в другой сети. В итоге, например, в ростере жаббера видно всех участников канала из телеграмма, видно кто из участников телеграмма пишет, ему можно по-человечески ответить. И наоборот, в ростере канала в телеграмме видно всех участников конференции в жаббере и т. д. А не это вот самое с трансляцией через одного бота
[21:03:34] <тг> <@fvnever> Нет, пока такую фичу мы не запилили.
[21:04:13] <ma1uta> Ясно
[21:04:22] <тг> <@fvnever> Но я так и не понял, как её пилить. Мне рассказывали, что надо для этого делать какой-то XMPP-компонент
[21:04:32] <тг> <@fvnever> А потом оказалось, что это какая-то фигня
[21:05:00] <ma1uta> Да, через компонент (он же транспорт) можно сделать.
[21:05:26] <тг> <@fvnever> Дак его же на сервер надо ставить?
[21:05:57] <ma1uta> Я делал так для моста jabber - matrix. Правда пришлось повоевать с бабблер и с забавным поведением жабберного s2s.
[21:06:00] <тг> <@fvnever> Алсо в телеграм вообще никак список жабберных участников не проксировать
[21:06:29] <ma1uta> > <@fvnever> Дак его же на сервер надо ставить?
Можно ставить где угодно. Но да, надо отдельно регистрировать на сервере.
[21:06:40] <тг> <@fvnever> А на каком?
[21:06:59] <тг> <@fvnever> Если я на своём зарегистрирую, то смогу своих участников водить на жаббер-ру?
[21:07:06] <ma1uta> Да, не запроксировать, телеграмовское апи так не умеет.
[21:07:48] <ma1uta> Да, можно.
[21:09:07] <ma1uta> Транспорты (или компоненты) используют c2s, чтобы прицепиться к серверу, а дальше через s2s могут зайти в конфу на другом сервере.
[21:09:40] <тг> <@fvnever> Ок, я покурю эту тему.
[21:10:00] <ma1uta> Отличие в том, чтобы прописать токен он же пароль, чтобы компонент смог на сервер зайти.
[21:10:04] <ma1uta> Спасибо!
[21:12:27] <ma1uta> А так, у компонентов есть фича, для компонента можно выделить поддомен, в котором он может делать что угодно. Например, для компонента заводим поддомен mycomponent.jabber.ru, и компонент может из-под пользаков user1@mycompoment.jabber.ru, user2@mycomponent.jabber.ru заходить куда угодно как обычный клиент.
[21:24:29] nightmare вышел(а) из комнаты
[21:27:33] <portnov> >> В Москве задержали программиста, который с огромной скоростью писал абсолютно нечитаемый код. От комментариев он отказался.
[21:31:09] <m4n71k0r> надо бахнуть чайку
[21:31:25] <m4n71k0r> Блин, руки обгорели после рыбалки
[21:33:37] <тг> <@ttldtor> Гм, у чувака и ник и имя просто издевательские какие-то https://github.com/Heromyth
[21:37:32] <m4n71k0r> а не проходят что-то сообщения из телеги...
[21:38:12] <тг> <@ttldtor> пинг
[21:47:39] Akon32 вошёл(а) в комнату
[22:41:06] Minoru вышел(а) из комнаты
[22:41:38] portnov вышел(а) из комнаты
[22:57:49] <тг> <@Devel29A> понг
[23:41:14] <m4n71k0r> нет, не проходит ни фига( Надо доделывать ботца
Powered by ejabberd - robust, scalable and extensible XMPP server Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!