Home
codingteam
codingteam@conference.jabber.ru
03.12.2016< ^ >

Тема: C, С++, D, Java, C#, Haskell, Ruby, Scheme, Common Lisp, Erlang, OCaml, JavaScript, TypeScript, Clojure, Scala, Nemerle, F#, Groovy, R, Rust, Kotlin.
Backup channel: codingteam@conference.codingteam.org.ru
HQ: https://codingteam.org.ru
Код постить сюда: http://lpaste.net/
Логи: http://tinyurl.com/ctcjr-logs
Юным погромцам сюда: http://e-maxx.ru/algo/ , а ещё читать Кнутца, Корменца, Седжвикца и др.
MIDI Looper in Rust Ep.31: https://www.youtube.com/watch?v=pkRyR2ywtpc
Let's Dev (когда Капитан на мостике): http://www.youtube.com/playlist?list=PLK6mcZkmN4QTusFvp_0GVtscQbCiIg81Y
http://i.imgur.com/slnyI6a.jpg
[00:08:05] eaeee вышел из конференции
[00:15:32] <m4n71k0r> Товарищ Чпок: жсонолибка обновилась https://github.com/nlohmann/json/blob/develop/ChangeLog.md
[00:15:50] <m4n71k0r> появилась работа с файлами, например
[00:23:43] eaeee зашёл в конференцию
[00:56:13] dzhon вышел из конференции
[01:16:14] Маздайщик вышел из конференции
[01:35:36] eaeee вышел из конференции
[01:36:45] eaeee зашёл в конференцию
[02:01:44] sss|zombie вышел из конференции
[02:28:12] eaeee вышел из конференции
[02:31:42] m4n71k0r вышел из конференции
[03:24:36] Mr.Purple зашёл в конференцию
[03:52:47] sleepyvenom вышел из конференции
[03:52:48] sleepyvenom зашёл в конференцию
[04:08:31] Mr.Purple вышел из конференции
[06:04:16] unclechu зашёл в конференцию
[07:36:47] <ForNeVeR> Hortamarines!
[07:51:07] ForNeVeR вышел из конференции
[07:51:19] ForNeVeR зашёл в конференцию
[08:11:12] portnov зашёл в конференцию
[08:53:03] Mr.Purple зашёл в конференцию
[09:23:16] <Mr.Purple> утра!
[10:03:58] dzhon зашёл в конференцию
[10:17:30] dzhon вышел из конференции
[10:21:23] sss|zombie зашёл в конференцию
[10:55:08] Minoru зашёл в конференцию
[10:58:43] <Minoru> утра, да
[11:05:24] <Mr.Purple> $send rexim https://aliensproduction.bandcamp.com/album/fragments-of-time
[11:11:00] <ForNeVeR> Щас я до хорты доберусь.
[11:11:02] <ForNeVeR> Уже скоро.
[11:24:57] dzhon зашёл в конференцию
[11:29:19] <Minoru> пост про какого-то известного в кругах node.js-разработчиков чувака, который старается всё выносить в микроскопические модули: https://gist.github.com/khoomeister/5010943 Видимо, leftpad появился из-за слепого следования такой философии
[11:30:52] <Minoru> погуглил про maintainer burnout, нашёл два поста на GitHub и… статью про burnout у пасторов
[11:47:39] <ForNeVeR> Выжигание пасторов? Ок.
[11:48:46] <Minoru> у homebrew хорошая дока, в общем: https://github.com/Homebrew/brew/blob/master/docs/Maintainers-Avoiding-Burnout.md
[11:54:47] unixorn вышел из конференции
[11:56:58] sss|zombie вышел из конференции
[12:05:58] m4n71k0r зашёл в конференцию
[12:06:50] O01eg вышел из конференции
[12:11:47] grouzen зашёл в конференцию
[12:12:55] Маздайщик зашёл в конференцию
[12:39:24] <ForNeVeR> Маздайщик: \o
[12:39:41] <Маздайщик> Приветствую.
[12:40:13] <Маздайщик> Практика показала, что чаты сильно отвлекают от работы.
[12:40:20] <ForNeVeR> Да, это так
[12:40:22] <Mr.Purple> i say!
[12:40:22] <Маздайщик> Поэтому прошлую неделю не выходил в онлайн.
[12:40:39] <Маздайщик> Сейчас дома установил Квип, вышел.
[12:41:06] <ForNeVeR> А я обычно в логи чата посматриваю. Если что-то интересное — тогда захожу с работы, а если нету — тогда только вечером.
[12:41:43] <Маздайщик> Ясно. Подумаю об этом.
[12:42:07] <Маздайщик> .ping
[12:42:08] <Маздайщик> .ping
[12:42:11] <DeadBot> Маздайщик: понг от тебя 3.05 секунды
[12:42:29] <ForNeVeR> .ping
[12:42:29] <DeadBot> ForNeVeR: понг от тебя 0.30 секунды
[12:42:43] <Маздайщик> А второй пинг не дошёл.
[12:42:44] <Маздайщик> .ping
[12:42:45] <DeadBot> Маздайщик: понг от тебя 0.37 секунды
[12:43:10] Mr.Purple вышел из конференции
[12:46:49] horta test зашёл в конференцию
[12:48:09] horta test вышел из конференции
[12:48:35] horta hell зашёл в конференцию
[12:50:28] horta hell вышел из конференции
[12:50:39] horta hell зашёл в конференцию
[12:53:00] horta hell вышел из конференции
[12:53:11] horta hell зашёл в конференцию
[12:53:59] horta hell вышел из конференции
[13:00:54] horta hell зашёл в конференцию
[13:02:10] horta hell вышел из конференции
[13:02:21] horta hell зашёл в конференцию
[13:02:43] horta hell вышел из конференции
[13:08:03] horta test зашёл в конференцию
[13:28:56] horta test вышел из конференции
[13:29:07] horta test зашёл в конференцию
[13:29:17] horta test вышел из конференции
[13:29:28] horta test зашёл в конференцию
[13:29:58] horta test вышел из конференции
[13:30:09] horta test зашёл в конференцию
[13:30:59] horta test вышел из конференции
[13:31:10] horta test зашёл в конференцию
[13:32:20] horta test вышел из конференции
[13:32:31] horta test зашёл в конференцию
[13:39:05] horta test вышел из конференции
[13:39:16] horta test зашёл в конференцию
[13:39:35] horta test вышел из конференции
[13:39:54] horta test зашёл в конференцию
[13:49:35] Славный капитан зашёл в конференцию
[13:52:24] Graf зашёл в конференцию
[13:52:33] Graf вышел из конференции
[14:09:47] horta test вышел из конференции
[14:09:58] horta test зашёл в конференцию
[14:16:50] horta test вышел из конференции
[14:17:06] horta hell зашёл в конференцию
[14:18:23] horta hell вышел из конференции
[14:18:29] horta hell зашёл в конференцию
[14:21:37] horta hell вышел из конференции
[14:21:47] horta hell зашёл в конференцию
[14:23:04] horta hell вышел из конференции
[14:23:15] horta hell зашёл в конференцию
[14:24:31] horta hell вышел из конференции
[14:24:42] horta hell зашёл в конференцию
[14:25:58] horta hell вышел из конференции
[14:26:09] horta hell зашёл в конференцию
[14:26:47] <ForNeVeR> Чуваки, а чойта пинг на дебиане мне говорит "invalid option -- 'M'"? Его тут как-то принято обновлять или устанавливать альтернативный пинг?
[14:27:48] horta hell вышел из конференции
[14:27:58] horta hell зашёл в конференцию
[14:29:35] horta hell вышел из конференции
[14:29:46] horta hell зашёл в конференцию
[14:30:14] horta hell вышел из конференции
[14:31:18] horta test зашёл в конференцию
[14:36:54] horta test вышел из конференции
[14:37:17] horta hell зашёл в конференцию
[14:37:55] <m4n71k0r> алиас стоит?
[14:38:19] <m4n71k0r> что-то хорта тудэма-сюдэма бегает
[14:39:41] horta hell вышел из конференции
[14:39:47] horta hell зашёл в конференцию
[14:41:03] horta hell вышел из конференции
[14:41:14] horta hell зашёл в конференцию
[14:42:35] horta hell вышел из конференции
[14:42:44] <ForNeVeR> m4n71k0r: какой алиас? Как поставить?
[14:43:04] <ForNeVeR> Хорта бегает потому что https://github.com/codingteam/horta-hell/issues/414#issuecomment-264631975
[14:57:48] Akon32 зашёл в конференцию
[15:00:31] Graf зашёл в конференцию
[15:00:37] Graf вышел из конференции
[15:11:06] rexim зашёл в конференцию
[15:11:28] * rexim расчепокнулся
[15:13:02] <ForNeVeR> rexim: бе-бе-бе, а меня уже нельзя ругать, вчерашний инцидент уже исчерпан :P
[15:13:14] <Товарищ Чпок> rexim, ох ты ж!
[15:13:27] <rexim> ForNeVeR: ты думаешь мне нужен повод?
[15:13:35] <ForNeVeR> rexim: а без повода неэффективно.
[15:13:44] <ForNeVeR> rexim: даже если тебе не нужен повод, без повода я не боюсь!
[15:14:06] <rexim> ForNeVeR: боишься. Иначе бы не говорил, что не боишься.
[15:14:10] <rexim> Не было бы нужды.
[15:14:30] * ForNeVeR обвешался деонтологической защитой.
[15:14:39] <rexim> =3
[15:14:56] <ForNeVeR> rexim: нет, в данном случае действительно не боюсь, и потому и сообщаю, что случай интересный.
[15:15:30] <ForNeVeR> Ты можешь быть злым начальником и ругать подчинённых без повода, но тогда тебя никто не будет бояться, и все будут косячить — потому что ты ругаешь их независимо от этого.
[15:15:56] <ForNeVeR> Но ты можешь быть добрым и сильно ругать только за плохие дела, и только тогда плохие дела подчинённым будет делать страшно.
[15:16:09] <ForNeVeR> Я всегда ругаю сотрудников, если они убили или ограбили кого-то.
[15:16:21] grouzen вышел из конференции
[15:18:58] <ForNeVeR> Ну, если без повода, конечно.
[15:27:26] <rexim> Minoru: чаёчнечберг?
[15:28:43] <ForNeVeR> rexim: https://youtu.be/_0c9Fd9FacU — а вот хороший доклад про генерики.
[15:29:12] <ForNeVeR> Даже я понял, как работают ? extends T и ? super T.
[15:29:15] <rexim> ForNeVeR: спасибо, дядя Нёвер!
[15:33:02] <ForNeVeR> m4n71k0r: алсо я послушал про вархэндлы.
[15:34:34] <ForNeVeR> Впрочем, я никогда не тыкал Unsafe, так что мне как-то это всё не очень близко. Однако, я рассчитываю, что в JDK 9 всё будет сильно быстрее работать, когда народ начнёт использовать новый API.
[15:34:58] <ForNeVeR> К тому же, я раньше не знал про "волшебный" MethodHandle, который умеет в рантайме специализироваться.
[15:35:00] <rexim> Зачем нужен Unsafe когда есть плюсы?
[15:35:14] <ForNeVeR> rexim: для поддерживаемости.
[15:35:26] <rexim> ForNeVeR: поддерживаемости чего?
[15:35:27] <ForNeVeR> Кому как, а мне плюсокод сложно поддерживать — особенно в рамках Java-проекта.
[15:35:46] <rexim> Вот я про тоже!
[15:35:46] <ForNeVeR> Просто представь, что у тебя десяток джунов на разных ОС, и тебе придётся настраивать каждому из них плюсокомпилятор на машине.
[15:35:47] <rexim> Нужно выбросит жава-проект!
[15:36:16] <ForNeVeR> .\ _ /.
[15:42:59] <ForNeVeR> 🙌
[16:00:02] <ForNeVeR> Короче, я уже неделю оптимизирую у себя запросы с MySQL, а мне репортят и репортят, что они тормозные.
[16:00:40] <ForNeVeR> Я уже накатил себе самый бедный конфиг для несчастного мускуля, порезал жавамашине ресурсы, оптимизировал всё идеально — так, что даже с минимумом ресурсов всё отрабатывает мгновенно. Разве что Unsafe ещё не начал юзать для быстродействия.
[16:00:51] <ForNeVeR> И оказывается, короче, что мне не в том месте репортят проблемы!
[16:01:08] <ForNeVeR> Они говорили, что список умерших тормозит, а на самом деле список родившихся :(
[16:01:33] <ForNeVeR> В итоге список умерших у нас супер-оптимизированный, и даже если начнутся массовые расстрелы, то система это осилит.
[16:02:11] <Akon32> таблицы переименуй, делов-то.
[16:02:39] <ForNeVeR> Ну, я теперь опытный — портирую и абстрагирую свои перформанс-хаки для обеих таблиц...
[16:03:18] <ForNeVeR> В общем-то, родившийся человек от умершего не очень-то отличается. Разве что тем, что у него причины смерти ещё не заполнены.
[16:03:40] * ForNeVeR безудержно профдеформируется.
[16:07:55] <rexim> ForNeVeR: http://i.imgur.com/9tkYsfr.png
[16:08:06] <ForNeVeR> ОХ НЕТ
[16:08:15] <ForNeVeR> Эти ужасные усы!
[16:08:36] <rexim> ForNeVeR: https://github.com/basilevs/reusetab-firefox/pull/8
[16:08:54] <ForNeVeR> rexim: ЪЪЪЪЪ
[16:11:58] grouzen зашёл в конференцию
[16:24:42] Graf зашёл в конференцию
[16:24:47] Graf вышел из конференции
[16:43:52] dzhon вышел из конференции
[17:11:53] O01eg зашёл в конференцию
[17:14:38] ckorzhik вышел из конференции
[17:27:25] <rexim> =(
[17:27:32] <rexim> ForNeVeR: https://twitter.com/GameGrumps/status/804927096946561024
[17:28:20] <ForNeVeR> rexim: отлично же!
[17:30:26] Akon32 вышел из конференции
[17:30:33] <rexim> ForNeVeR: я знаю! Я просто это ретвитнул и мне стал грустно
[17:30:41] <rexim> что хорта это не нотифицировала
[17:31:10] <ForNeVeR> Ну, мне остаётся разобраться с сетевыми проблемами в докере, и будет нотифицировать.
[17:31:53] <ForNeVeR> Я не знаю, что делать :(
[17:38:57] <ForNeVeR> Попробую поиграться с сетями в Hyper-V!
[17:41:02] <rexim> Нурег!!
[17:42:05] horta hell зашёл в конференцию
[17:43:48] dzhon зашёл в конференцию
[17:46:17] <horta hell> @fvnever твитит: tu-turu!
[17:48:21] grouzen вышел из конференции
[17:51:48] <ForNeVeR> $say 13
[17:53:29] <horta hell> ForNeVeR: Я бы хотел хоронить точки в каком-то контексте рассматривали. Уж не знаю, ну а модус у него ничего не означает, что что-то умное тебе писал, но ей тоже никто не
[17:54:30] horta hell вышел из конференции
[17:54:41] horta hell зашёл в конференцию
[17:55:57] horta hell вышел из конференции
[17:56:08] horta hell зашёл в конференцию
[17:56:19] <ForNeVeR> Опять сломалась :(
[17:57:24] horta hell вышел из конференции
[17:57:30] horta hell зашёл в конференцию
[17:58:28] horta hell вышел из конференции
[18:02:18] <ForNeVeR> Я щас другую хорту туда задеплою, с конкуретной защитой.
[18:02:26] unclechu вышел из конференции
[18:04:03] <rexim> С защитой от конкурентов?
[18:04:08] <ForNeVeR> От тебя!
[18:04:52] <rexim> Эх! Ктоб меня от меня бы защитил!
[18:05:12] <rexim> Minoru: а я сегодня ел белую азиатскую гречку!
[18:13:24] horta hell зашёл в конференцию
[18:16:44] horta hell вышел из конференции
[18:16:50] horta hell зашёл в конференцию
[18:17:05] horta hell вышел из конференции
[18:17:57] <Minoru> rexim: not sure if kidding
[18:20:51] <m4n71k0r> ForNeVeR: я вообще не представляю, зачм использовать Java, если хочешь писать что-то высокопроизводительное, но меня почему-то тапками пытаются закидать
[18:21:04] * ForNeVeR кидает тапок
[18:21:44] <m4n71k0r> ForNeVeR: и мне кажется, что проще сделать быстрое изначально ищё и надёжным, чем тормозное и надёжное изначально ещё и быстрым
[18:22:50] <m4n71k0r> да-да я помню этот "стоунхэндж", когда сравнивали жабу с плюсами, например
[18:22:59] <m4n71k0r> три колонны и крыша
[18:23:38] * m4n71k0r ждёт второй тапок
[18:24:15] horta hell зашёл в конференцию
[18:24:24] * m4n71k0r надеется, что тапок будет на ту же ногу
[18:24:41] <ForNeVeR> А ну, хорта, поворотись ко мне передом!
[18:24:50] <Minoru> $say 31
[18:24:54] <ForNeVeR> m4n71k0r: у тебя две ноги чтоли одинаковых?
[18:24:56] <m4n71k0r> хорточка пролезла в форточку
[18:25:14] <horta hell> Minoru: К сожалению, запрошенное сообщение не было найдено.
[18:25:20] <Minoru> \o/
[18:25:24] * Minoru не сожалеет
[18:25:37] <ForNeVeR> Minoru: после тюнинга MTU хорта теперь _работает_.
[18:25:45] <ForNeVeR> Но отчего-то вырубается каждую пару минут.
[18:25:47] <m4n71k0r> ForNeVeR: ну я все правые отстрелил
[18:25:55] <ForNeVeR> Я второй день это уже чиню.
[18:26:28] <ForNeVeR> Слишком дохрена многозвенная цепочка получается; сложно понять, в каком месте проблема.
[18:28:17] horta hell вышел из конференции
[18:28:23] horta hell зашёл в конференцию
[18:28:51] <ForNeVeR> Чёрт дери.
[18:29:06] horta hell вышел из конференции
[18:29:34] <Minoru> ForNeVeR: а ты не пробовал tcpdump-ом или Wireshark-ом глянуть, что она там серверу шлёт и что вообще в сети творится?
[18:29:41] <Minoru> может, она и правда сообщений не получает?
[18:30:12] <ForNeVeR> Она и не получает, а что дальше?
[18:31:05] <Minoru> то же самое, только на хосте. Хост тоже не получает?
[18:31:13] <ForNeVeR> Ну, "No response from server." вполне однозначно об этом говорит.
[18:31:19] <ForNeVeR> То же самое, но на хосте — работает.
[18:32:08] <Minoru> "No response from server." не даёт понять, на каком же уровне затык
[18:32:13] <ForNeVeR> Да :(
[18:32:28] <ForNeVeR> Ну, оно из сокета хочет читать, а в сокете пусто.
[18:32:35] <Minoru> ну вот, а tcpdump показывает, что творится на уровне TCP
[18:32:46] <ForNeVeR> Как его установить?
[18:33:24] <Minoru> если есть гуйцы, то лучше Wireshark — у tcpdump-а интерфейс страшненький, там фильтры какие-то писать нужно и ваще. В Wireshark GUI, там проще
[18:33:32] <ForNeVeR> Нету гуйцов.
[18:33:33] <Minoru> apt-get install tcpdump, вроде
[18:33:51] <ForNeVeR> Вообще ничо нету, я даже "Y" не могу ответить на запрос apt-get.
[18:34:20] <Minoru> а, в докере же просто программу запускаешь и всё, да?
[18:34:47] <ForNeVeR> Да. Но пока она выполняется, можно другие программы exec'ом позапускать.
[18:35:27] <Minoru> погоди, а как ты пинги изнутри докера отправлял?
[18:35:34] <ForNeVeR> Я же показывал.
[18:35:37] <Minoru> ты туда просто по ssh зайти не можешь?
[18:35:43] <ForNeVeR> Нет, не могу.
[18:35:53] <Minoru> а, да, показывал
[18:36:00] <ForNeVeR> Ну, ежели sshd как-то сподоблюсь там запустить — тогда смогу.
[18:36:22] <Minoru> кстати, Y ты можешь нажать с помощью yes: yes | apt-get install
[18:36:38] <Minoru> ну и -y есть, но ты apt-get наверняка просто как пример привёл
[18:36:38] <ForNeVeR> А, там есть какой-то волшебный ключ -i
[18:36:49] <ForNeVeR> Про -y я знаю :)
[18:37:59] <Minoru> rexim: я думал, ты шутишь про рис, но в Интернете реально есть какие-то обсуждения белой гречки O_O
[18:38:58] <ForNeVeR> Так, я получил шелл в контейнер.
[18:39:13] <ForNeVeR> Включил tcpdump, слежу за хернёй.
[18:42:24] <ForNeVeR> Minoru: вот что было в момент реконнекта: https://gist.github.com/ForNeVeR/9368a0d7d29f25a5b3aea52434337ba0
[18:42:30] <ForNeVeR> Это нам о чём-то говорит?
[18:43:54] <ForNeVeR> Вообще, что мне там искать?
[18:44:54] <Minoru> минутку
[18:44:57] <ForNeVeR> 198.211.121.192 это цтор, а про все остальные адреса я ничего не знаю ._.
[18:46:08] <Minoru> во-первых, обрати внимание на 14:49:46.888165 IP 1e96b70fdcb1.59004 > 198.211.121.192.xmpp-client: Flags [S], seq 2933701330, win 28560, options [mss 1428,sackOK,TS val 69496 ecr 0,nop,wscale 7], length 0
[18:46:14] <Minoru> лол
[18:46:35] <Minoru> я хотел сказать «вот сюда: https://gist.github.com/ForNeVeR/9368a0d7d29f25a5b3aea52434337ba0#file-tcpdump-txt-L39»
[18:46:50] <Minoru> в общем, видишь там MSS? Это что-то типа MTU, только на уровне TCP
[18:47:18] <Minoru> о, даже не так. Смотри и на L38, и на L39
[18:47:28] <Minoru> сервер просит не присылать ему больше 1428 байт данных за раз
[18:47:47] <Minoru> клиент (хорта) просит не больеш 1460 за раз
[18:48:05] <ForNeVeR> Ок, это уже интересно.
[18:48:38] <ForNeVeR> Однако же, дальше я не вижу, чтобы кто-то превышал эти лимиты.
[18:50:04] <Minoru> там ещё https какой-то мешается
[18:50:23] <Minoru> и лог как-то подзновато начался. Можно побольше инфы про то, что перед дисконнектом происходит?
[18:50:39] <ForNeVeR> Больше 15 секунд? Можно.
[18:50:41] <Minoru> а, ладно
[18:50:43] <Minoru> не надо
[18:50:49] <Minoru> гляди на L2, L3, L5
[18:51:01] <Minoru> хорта три раза подтверждает получение пакета 1731
[18:51:07] <Minoru> а сервер ей — молчок! Нехорошо
[18:51:08] <ForNeVeR> Чо за HTTPS — сложно сказать %)
[18:51:15] <ForNeVeR> Ага, хм.
[18:51:44] O01eg вышел из конференции
[18:52:35] grisssa зашёл в конференцию
[18:54:22] <Minoru> можно запустить параллельно tcpdump на хосте и посмотреть, видно ли на нём ack-и хорты. Если нет, то их теряет Докер, если видно — ну, где-то дальше теряются (W. T. F?)
[18:54:32] grisssa вышел из конференции
[18:55:01] <ForNeVeR> Ок, хорошая идея.
[18:55:50] <Minoru> > Вообще, что мне там искать?
Я, честно говоря, и сам не знаю. Я ненастоящий волшебник. Я пытаюсь просто побольше инфы собрать всякой и хоть как-то локализировать проблему.
[18:56:32] <ForNeVeR> Короче, я попробую для начала продакшеновую хорту погонять ночью на хосте.
[18:56:38] <ForNeVeR> Посмотрим, как часто она будет отваливаться.
[18:57:11] <ForNeVeR> Потом залезть бы на докер-машину и без контейнера там чего-нибудь погонять...
[18:57:46] <Minoru> погоди, «на хосте» — это у тебя дома? А «докер-машина» — это VPS на DO?
[18:57:51] <ForNeVeR> Нет.
[18:57:57] <ForNeVeR> Хост у меня дома, это Windows.
[18:57:59] <Minoru> я всё ещё до конца не понял что где как у тебя задеплоено :(
[18:58:03] <ForNeVeR> На нём в Hyper-V линуксовая машина.
[18:58:10] <ForNeVeR> В линуксовой машине докер-контейнер.
[18:58:28] <ForNeVeR> В контейнере — хорта.
[18:58:49] <Minoru> так во-от почему тебе сказки про Кощея так понравились! Игла у него в яйце, яйцо в утке, утка в сундуке — ничего не напоминает?
[18:59:04] <ForNeVeR> Да!
[18:59:16] <ForNeVeR> Так, а грохну-ка я этого докера к херам.
[18:59:31] <ForNeVeR> Я образ не апдейтил сто лет. Может, у них там просто ядро старое, а?
[19:00:32] <Minoru> ты знаешь, я в Интернете читал страшные истории о том, что Doker в каждом релизе ломают, поэтому то, что ты его не апдейтил — это наоборот очень даже хорошо! (Наверное.)
[19:00:47] <ForNeVeR> В виндовом пока только чинили.
[19:04:16] <Славный капитан> https://vk.com/video176428150_456239027
[19:13:10] O01eg зашёл в конференцию
[19:25:09] <ForNeVeR> Minoru: 1) https это твиттер
2) я нашёл логи какого-то докеровского маршрутизатора в винде, они похожи на логи tcpdump и можно пробовать с ними разобраться!
[19:32:12] ForNeVeR вышел из конференции
[19:32:12] ForNeVeR зашёл в конференцию
[19:32:45] <Minoru> чото судя по дампу Хорте с Твиттером интересней говорить, чем с Цтором :)
[19:33:48] <Minoru> ForNeVeR: ну сделай дампы изнутри докера и снаружи, а потом будем сидеть сравнивать
[19:44:25] <Minoru> …или сравнивать и седеть
[19:46:59] <ForNeVeR> Может, я всё-таки в коде там что-то сломал, а магии никакой нету?
[19:47:25] <Minoru> не похоже
[19:48:12] <ForNeVeR> Я щас пробую тюнить сокетный таймаут. Подозрительно похоже, что от таймаута зависит время, которое хорта живёт без реконнекта.
[19:48:36] <Minoru> ты думаешь, сервер просто ответить не успевает?
[19:49:05] <ForNeVeR> Думаю, что я норкомант :(
[19:49:20] <ForNeVeR> Да, очень похоже, что мои гени(т)альные фиксы всё сломали!
[19:49:36] <ForNeVeR> По умолчанию у сокета нету read timeout.
[19:50:07] <ForNeVeR> Я почему-то решил, что он есть, и связал настройку XMPP timeout (которые действительно вылетали из-за MTU) и socket timeout.
[19:50:27] <ForNeVeR> Теперь хорта падает, если в сокете ничего не происходит в течение какого-то времени!
[19:50:28] <Minoru> аг-га-а!
[19:50:36] <Minoru> ну, это очень правдоподобная гипотеза
[19:50:56] <Minoru> блин, а почему никому не пришло в голову откатить хорту на пару релизов и запустить в нынешнем докере?
[19:51:02] <ForNeVeR> Я щас у себя локально эти фиксы откачу, задеплою в докер и проверим.
[19:51:03] <Minoru> ну, чтобы проверить, что проблема именно в нём
[19:51:14] <ForNeVeR> Мне пришло в голову :)
[19:51:16] <ForNeVeR> Только что!
[19:51:39] <Minoru> это слишком поздно! Наш профессионализм теперь под вопросом!
[19:51:52] <Minoru> ну, потому что могли и раньше додуматься, это вообще первый шаг должен был быть
[19:51:52] <ForNeVeR> Пф.
[19:52:04] <ForNeVeR> Я профессиональный электрик, у меня и бумага есть!
[19:53:03] <ForNeVeR> Minoru: у нас просто горе от ума :)
[19:54:06] <ForNeVeR> Но MTU-проблемы для меня выглядят действительно совершенно непредсказуемыми, так что я вполне доволен, что мы со связанными вопросами разобрались в течение двух суток.
[19:54:10] <ForNeVeR> Это очень быстро.
[19:54:21] <Minoru> при диагностике проблемы программист начинает не с самой правдоподобной гипотезы, а с той, которую он ещё никогда в жизни не проверял :)
[19:55:06] horta hell зашёл в конференцию
[19:55:46] <ForNeVeR> $say 13
[19:56:28] <horta hell> ForNeVeR: Цодингтим выводит толк из программистов многие заявят, что их вообще-то не видел этих операторов нету.
[19:56:42] <ForNeVeR> Minoru: вот и ответ! Цодингтим выводит толк из программистов!
[19:57:08] <Minoru> ах! Это всё объясняет! // На самом деле нет.
[19:57:11] <Minoru> $say 31
[19:58:00] <rexim> $say 10
[19:58:45] horta hell вышел из конференции
[19:58:57] <ForNeVeR> Вот это другое дело!
[19:58:59] horta hell зашёл в конференцию
[19:59:03] <ForNeVeR> java.lang.OutOfMemoryError
[19:59:07] <ForNeVeR> :)
[19:59:08] <Маздайщик> $say 10
[19:59:09] <Minoru> ох, извини
[19:59:15] <horta hell> Маздайщик: Для примера с Fab переиспользуется весь терм вызова — участок двусвязного списка и заменить его на другой участок — результат своего выполнения.
[20:00:30] <Маздайщик> $bash
[20:00:31] <portnov> ForNeVeR: толк выходит, бестолочь остаётся?
[20:00:35] <Minoru> ForNeVeR: раз я тут самые длинные фразы запрашиваю, то и https://github.com/codingteam/horta-hell/issues/413 чинить мне? :)
[20:00:36] <horta hell> Маздайщик: #406214 [ 11513 ]
"Российской армии необходимо обладать новыми видами оружия, заявил премьер-министр Владимир Путин на совещании по развитию оборонно-промышленного комплекса на "Уралвагонзаводе", выпускающем бронетехнику."

yahaha:
Танки на фотках - для отвлечения внимания. На самом деле, завод приступил к выпуску огромных боевых человекоподобных роботов (ОБЧР-10).

savoyskiy:
Почему "10"? Вы что-то знаете? Поделитесь, я никому не скажу. (:

yahaha :
Это 10-метровые шагающие роботы. Есть ещё модификация ОБЧР-10П (прыгающие роботы). Тестируется опытный образец ОБЧР-50Л (расшифровку не скажу, она секретная).

savoyskiy:
Ну, это все знают. 50Л - 50-ти тонный Лежащий. Настолько интеллектуальный образец вооружения, что после запуска обвел всех взглядом, улегся на пол ангара и со словами "Хрен вы меня отсюда поднимите" ушел в зимнюю спячку.
[20:00:41] <Minoru> portnov: лол
[20:01:03] <ForNeVeR> Minoru: от длины фразы ничего не зависит.
[20:01:15] <ForNeVeR> Minoru: от размеров марковской сети — зависит!
[20:01:18] <Маздайщик> $say 1
[20:01:19] <horta hell> Маздайщик: $say 2
[20:01:26] <Маздайщик> $say 2
[20:01:26] <horta hell> Маздайщик: if then else
[20:01:30] <Маздайщик> $say 2
[20:01:31] <horta hell> Маздайщик: А кто тут владелец?
[20:01:52] <Minoru> ForNeVeR: гм, это мне что теперь, говорить поменьше? И пооднообразней?
[20:02:13] <ForNeVeR> Поменьше — да. Пооднообразней — не уверен, что поможет, надо разбираться.
[20:02:43] <ForNeVeR> Одно из валидных действий — попробовать интернировать слова в платонусе.
[20:03:50] <ForNeVeR> Вообще, там, может быть, хреновая структура данных для цепочки. Надо её пересмотреть.
[20:04:09] <Minoru> мне в какой-то момент думалось, что можно в ответ на $say 31 просто сгенерить запрос о 31-м джойне, и пусть СУБД думает. Но я не уверен даже, что у нас данные в СУБД ._. Прям хоть бери и код читай, ужас!
[20:04:37] <ForNeVeR> Minoru: данные у нас в СУБД, но платонус про СУБД ничего не знает.
[20:05:08] <rexim> ForNeVeR: вы ему так и не рассказали? =\
[20:05:14] <ForNeVeR> Minoru: в СУБД хранятся полные строки сообщений в текстовом поле. При создании цепочки данные оттуда выгребаются и отдаются платонусу. Он строит структуру в памяти.
[20:05:32] <ForNeVeR> Там, типа, префиксное дерево чтоли. В узлах — слова из текста.
[20:06:08] <ForNeVeR> Я _полагаю_ (целясь пальцем в небо), что слова в памяти плохо интернированы — может быть по много копий одного и того же слова.
[20:07:33] <ForNeVeR> Ага, а в платонуса передают уже тексты после парсинга. То есть в хорте можно сделать интернирование.
[20:08:49] <ForNeVeR> Хотя можно и в платонусе дополнительное интернирование добавить. Он создаёт много коротких коллекций по `depth` слов. Причём depth обычно небольшое число — от 1 до 3.
[20:09:01] <ForNeVeR> Коллекции можно тоже расшарить!
[20:09:37] <ForNeVeR> Minoru: в общем, нет, я не думаю, что тебе рационально лезть в эту задачу, если тебе неинтересно возиться с memory profiler.
[20:10:34] <Minoru> ну ок
[20:11:15] <Minoru> ForNeVeR: а на чьём запросе Хорта упала — на моём или Маздайщика? Ну, чтобы я представлял, чьих логов достаточно, чтобы хорте стало плохо
[20:11:43] <ForNeVeR> Minoru: миксера.
[20:11:48] <Minoru> а, впрочем, неважно — я могу просто все логи, что у меня есть, взять и загрузить, без учёта авторства
[20:11:55] <ForNeVeR> Minoru: и ты немного неправильно представляешь картину.
[20:12:07] * Minoru интересно всё же глянуть, что будет с PostgreSQL от десятков джойнов
[20:12:16] <ForNeVeR> Minoru: она упала на запросе миксера потому, что одновременно обрабатывала твой запрос и его.
[20:12:25] <ForNeVeR> Minoru: и у нас там не postgresql, кстати ;)
[20:12:27] <Minoru> а, ну да, этого я не учёл
[20:12:41] <Minoru> не учёл одновременность. А СУБД можно и сменить!
[20:12:46] <ForNeVeR> Minoru: ты действительно собираешься исследовать эту задачу?
[20:12:50] <Minoru> // а что у нас там? :)
[20:13:06] <ForNeVeR> Если да, то я тебе щас ценные указания дам. У меня есть ещё несколько важных соображений.
[20:13:11] <ForNeVeR> А если нет, то я спать пойду.
[20:13:24] <Minoru> ну как «исследовать». Слова побью, напишу запрос, гляну на статистику, а дальше видно будет. Пока что ничего серьёзного не планирую, мне просто поиграться
[20:13:28] <Minoru> иди спать
[20:13:31] <ForNeVeR> Minoru: у нас там H2, оно в одном процессе с хортой!
[20:13:42] <ForNeVeR> И это тоже может создавать проблему.
[20:14:07] <Minoru> ото запихают всю Вселенную в свою JVM, а потом у них память «почему-то» заканчивается!
[20:14:46] <ForNeVeR> В общем, тут мои соображения таковы:
1) проверить, как идёт запрос логов из БД для цепочки. Если сразу запрашивается вообще всё на свете, то это плохо (потому что полные текстовые логи сожрут миллионы памяти), и надо какой-то ещё способ рассмотреть — по пачечкам, например
[20:15:21] <ForNeVeR> 2) можно запретить одновременные запросы, инкапсулировав парсер логов в актора, который будет за раз процессить только одного юзера. Устраним конкурентное засорение памяти, и защитимся от DOS.
[20:16:22] <ForNeVeR> Minoru: если хочешь сделать что-то простое, но полезное — то лучше поройся в Платонусе. Это простая как два пальца библиотека. Если впилишь туда интернирование векторов — будет круто.
[20:16:57] <ForNeVeR> И тестовые условия для неё тебе будет проще создать, я думаю — не придётся поднимать всю хорту. Можно написать простое приложение, которое читает логи с диска.
[20:17:14] <ForNeVeR> Более того, оно там даже уже есть для тестов: https://github.com/ForNeVeR/platonus/blob/develop/src/main/scala/me/fornever/platonus/Application.scala
[20:17:48] <ForNeVeR> Правда, там кодировка UTF-16 зашита, но можно поменять.
[20:19:33] <ForNeVeR> Хорта остаётся тут для тестов.
[20:23:40] rexim вышел из конференции
[20:46:34] Graf зашёл в конференцию
[20:46:38] Graf вышел из конференции
[20:55:16] dzhon вышел из конференции
[20:59:57] O01eg вышел из конференции
[21:02:34] ckorzhik зашёл в конференцию
[21:16:01] nable вышел из конференции
[21:34:26] O01eg зашёл в конференцию
[21:45:33] nable зашёл в конференцию
[22:03:09] Don-Quijote зашёл в конференцию
[22:16:06] portnov вышел из конференции
[22:28:49] sss|zombie зашёл в конференцию
[22:57:51] nable вышел из конференции
[22:58:44] nable зашёл в конференцию
[23:06:27] dzhon зашёл в конференцию
[23:22:04] horta hell вышел из конференции
[23:22:15] horta hell зашёл в конференцию
[23:33:13] grouzen зашёл в конференцию
[23:33:55] dzhon вышел из конференции
[23:33:55] dzhon зашёл в конференцию
[23:40:22] uggur зашёл в конференцию
[23:48:47] Minoru вышел из конференции
[23:53:15] uggur вышел из конференции
Powered by freQ Powered by Python Valid XHTML 1.0 Transitional Valid CSS!