Home
codingteam
codingteam@conference.jabber.ru
17.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://e-maxx.ru/algo/ , а ещё читать Кнутца, Корменца, Седжвикца и др.
Let's Dev (когда Капитан на мостике): http://www.youtube.com/playlist?list=PLK6mcZkmN4QTusFvp_0GVtscQbCiIg81Y
http://i.imgur.com/slnyI6a.jpg
[00:12:38] dzhon зашёл в конференцию
[00:23:33] unclechu вышел из конференции
[00:45:22] <m4n71k0r> Minoru: то есть.. Go -- это язык - | ?
[00:45:53] <m4n71k0r> тогда эрланг - это &
[00:46:58] <Minoru> язык-пайплайн, да
[00:47:29] <m4n71k0r> это я уберутрирую
[00:47:42] <Minoru> ну я вот про его сборщик мусора почитал и мне кажется, что для несложных задач, где нужно быстро перекладывать байтики, он самое то
[00:48:41] <m4n71k0r> как думаешь, их обоих может заменить руст?
[00:51:50] <Minoru> про Rust я ещё ничего не знаю толком
[00:53:07] <Minoru> я смотрел стримы Миксера, но у меня все равно не сложилось какого-то представления. Я даже туториал какой-то, кажется, читал, но нет. Нужно будет выписать какие-то ключевые фишки в архитектуре Newsbeuter и поглядеть, как они были бы реализованы на Rust
[01:10:48] Minoru вышел из конференции
[01:22:14] horta hell вышел из конференции
[01:22:28] horta hell зашёл в конференцию
[01:32:37] rafaelrs зашёл в конференцию
[01:40:52] reggies вышел из конференции
[01:45:28] dzhon вышел из конференции
[02:39:50] eaeee зашёл в конференцию
[03:06:48] eaeee вышел из конференции
[03:07:32] <m4n71k0r> видели, кстати? https://www.jetbrains.com/go/
[03:19:40] <m4n71k0r> https://github.com/HexHive/printbf
[03:22:13] horta hell вышел из конференции
[03:22:48] horta hell зашёл в конференцию
[03:25:17] m4n71k0r вышел из конференции
[04:04:51] superka вышел из конференции
[04:04:53] superka зашёл в конференцию
[04:54:44] superka вышел из конференции
[05:16:20] superka зашёл в конференцию
[05:22:13] horta hell вышел из конференции
[05:22:39] horta hell зашёл в конференцию
[05:35:19] superka вышел из конференции
[05:35:21] superka зашёл в конференцию
[06:23:29] horta hell вышел из конференции
[06:51:51] SolarRay вышел из конференции
[07:22:29] horta hell зашёл в конференцию
[09:15:51] ForNeVeR зашёл в конференцию
[09:21:23] rafaelrs вышел из конференции
[09:37:01] reggies зашёл в конференцию
[10:17:15] portnov зашёл в конференцию
[10:23:11] dzhon зашёл в конференцию
[10:23:59] Ender вышел из конференции
[10:24:07] Ender зашёл в конференцию
[10:39:58] Славный капитан зашёл в конференцию
[10:52:46] Анон зашёл в конференцию
[10:54:55] <Анон> Так, меня сейчас обоссут. Но какой ЯП начать изучать, если хочу вкатиться в программмрование?
[11:03:14] <O01eg> Rust
[11:05:40] <ForNeVeR> Java!
[11:09:09] <Анон> Мне тут на С++ точеный или Питон д**ченый присесть, что об этом думаете?
[11:09:42] <O01eg> А вот теперь тебя точно обоссут...
[11:10:28] <ForNeVeR> Ну смотри. Я вот считаю, что любой типизированный язык лучше любого нетипизированного. Но на C++ ты будешь _страдать_.
[11:11:20] <Анон> Подозреваю, но на сколько сильно?
[11:14:06] <portnov> стареем, что ли...
[11:14:08] <ForNeVeR> А ты с какой целью изучаешь?
[11:14:16] <portnov> эн лет назад уже бы срачь устроили...
[11:14:28] <ForNeVeR> portnov: эх, мочевой пузырь уже не тот!
[11:14:51] <ForNeVeR> Анон: если ты хочешь реальне изучить, как работает память, адресация и всякое такое, то бери C++ или даже C.
[11:15:14] <ForNeVeR> Анон: а если тебе хочется программировать (то есть сразу писать какие-то полезные программки) для затравки — тогда, возможно, питон лучше.
[11:15:24] <ForNeVeR> И уж конечно, Java лучше их всех! ,3
[11:16:04] <Анон> Ну для начала для себя, куча времени уходит в никуда. И в современном мире СОФТА НЕТ!
[11:16:12] <ForNeVeR> Плюс, у C++ и у Python очень большая беда с dependency hell, у Java уже на полном серьёзе с этим ситуация лучше обстоит.
[11:16:44] <ForNeVeR> (у Rust тоже хорошо, кстати)
[11:22:04] horta hell вышел из конференции
[11:22:19] horta hell зашёл в конференцию
[11:23:11] <portnov> хаскель же, ну
[11:24:21] <ForNeVeR> portnov: а разве идрис не лучше? ,3
[11:24:38] <portnov> идрис круче, но он пока не оч практичный
[11:35:23] ckorzhik вышел из конференции
[11:35:28] ckorzhik зашёл в конференцию
[11:52:50] O01eg вышел из конференции
[12:00:28] eaeee зашёл в конференцию
[12:00:51] Анон вышел из конференции
[12:00:59] <grouzen> ForNeVeR акстись, какая джява?
[12:01:12] <ForNeVeR> grouzen: восьмая!
[12:01:21] <grouzen> но да, даже джява лучше чем cpp
[12:01:39] <ForNeVeR> Все эти милые стримчики, лямбочки, уняня ♥
[12:01:41] <grouzen> но поцчиму не скала?
[12:01:50] * grouzen ща будет топить
[12:02:10] Анон зашёл в конференцию
[12:02:30] <ForNeVeR> Все эти милые... имплиситчики, SeqLike? Буээ!
[12:03:00] <ForNeVeR> Если что, ты знаешь, что я люблю скалу, да. Но не считаю её пригодной для новичков ни разу.
[12:03:32] <ForNeVeR> Чтобы понять, какие задачи она решает своими синтаксическими конструкциями, надо эти задачи осознать — а для этого надо попрограммировать сперва на чём-нибудь более простом.
[12:04:09] <ForNeVeR> Я тебе больше скажу. C++17 потому и C++17, что для того, чтоб добавить в стандарт все эти co_await и co_yield, нужно сперва 20 лет эволюции языка, программистов, и в том числе и самого комитета.
[12:04:13] <portnov> эхехе
[12:04:22] <ForNeVeR> Нельзя было, например, просто взять и сразу сделать C++17.
[12:04:35] <portnov> ForNeVeR: для того, чтобы понять, какие задачи решает восьмая жаба, надо сперва попогромировать на фортране!
[12:04:46] <ForNeVeR> portnov: или на форте!
[12:04:51] <portnov> вово
[12:05:01] <ForNeVeR> "форт" = "фортран" - "ран"
[12:12:12] <grouzen> ForNeVeR ну, я тут с тобой не буду спорить, все так
[12:12:57] <grouzen> Если бы я, например до знакомства со скалой много лет не писал на CL или хачкеле, то я бы скорее всего писал бы на скале как на джяве
[12:13:17] <grouzen> и думал бы что скала это тоже самое что 8 джява
[12:32:24] m4n71k0r зашёл в конференцию
[12:36:52] unixorn вышел из конференции
[12:36:53] unixorn зашёл в конференцию
[12:48:20] <m4n71k0r> утро снова
[12:55:58] Анон вышел из конференции
[12:56:03] <ForNeVeR> Уггуро!
[13:06:09] Анон зашёл в конференцию
[13:12:23] unclechu зашёл в конференцию
[13:18:05] eaeee вышел из конференции
[13:22:04] horta hell вышел из конференции
[13:22:40] horta hell зашёл в конференцию
[13:26:41] ckorzhik вышел из конференции
[13:27:48] sss|zombie зашёл в конференцию
[13:43:49] Анон вышел из конференции
[13:50:25] xmi зашёл в конференцию
[13:59:09] <Товарищ Чпок> ForNeVeR, Сматри чо есть! https://i.imgbox.com/3lGNEilb.jpg
[13:59:17] <Товарищ Чпок> Прямо из Сибири!
[13:59:28] <ForNeVeR> Что это?
[14:01:13] <Товарищ Чпок> ForNeVeR, варенье из шишек.
[14:01:32] <ForNeVeR> У каких-то алтайских бедуинов купил чтоли?
[14:01:55] <Товарищ Чпок> ForNeVeR, у кемеровских!
[14:15:26] <superka> ForNeVeR: почему тебе не нравится замарин?
[14:15:45] <ForNeVeR> А когда это я такое говорил?
[14:15:56] <xmi> зарин может?
[14:17:13] <ForNeVeR> Мне нравится зарин.
[14:17:18] <superka> а иприт
[14:18:10] <xmi> в гдр был иприт советский
[14:18:42] <ForNeVeR> Там и немецкий мог остаться, думаю.
[14:19:36] <xmi> но сжигали то наши химвойска его - значит наш.
[14:28:39] <uggur> люизит рулит
[14:28:42] <uggur> иприт -- прошлый век
[14:28:57] <ForNeVeR> Я своих войск не отправлял его сжигать.
[14:29:49] <xmi> маршалом советского союза был?
[14:30:03] <xmi> это перед выводом войск было.
[14:32:35] <m4n71k0r> http://rust.godbolt.org/
[14:34:45] sss|zombie вышел из конференции
[15:21:41] xmi вышел из конференции
[15:21:42] xmi зашёл в конференцию
[15:22:05] horta hell вышел из конференции
[15:22:31] horta hell зашёл в конференцию
[16:07:40] <Товарищ Чпок> https://www.youtube.com/watch?v=W2EJai-3k2w&list=RD0Ia9N9MdSa0&index=2
[16:46:46] rexim зашёл в конференцию
[16:52:06] ckorzhik зашёл в конференцию
[16:57:53] Minoru зашёл в конференцию
[17:02:30] <Minoru> Товарищ Чпок: у тебя на фоточке (прошлая ссылка) справа кабели в сердечко сплелись!
[17:03:24] <Товарищ Чпок> Minoru, ня!
[17:07:40] <Minoru> m4n71k0r: а ты это, решил ещё и Раст потыкать?
[17:13:58] <ForNeVeR> Господа, я опять забыл.
[17:14:17] <ForNeVeR> Как передача информации быстрее скорости света приводит к причинным парадоксам?
[17:15:02] rexim вышел из конференции
[17:15:05] <Minoru> > But the problem in Java is: what does it do if you forget to `synchronize`? … What does Java do? It gives you a compilation error, correct? No-o. It gives you a warning, does it? No! Then what does it do? It just *runs*. And what will be the result of running it? We don’t have a *clue*! That’s why when you write concurrent code, you’re so eager to go to work; because you want to know what this damn code is gonna do today.
https://www.youtube.com/watch?v=Uw_wohRseOw
[17:15:43] <ForNeVeR> Наезды из утверждения не вполне понятны.
[17:16:10] <ForNeVeR> Блок "synchronized" или какая-то более общая "синхронизация" не обеспечивает потокобезопасности в общем случае.
[17:17:28] <Minoru> да? Как это? Если ты синхронизируешь доступ к общему ресурсу, то получается потокобезопасность, разве нет?
[17:17:42] <Minoru> или ты в «общий случай» включаешь возможность где-то забыть синхронизироваться?
[17:17:44] <ForNeVeR> Нет, не получается.
[17:18:15] <ForNeVeR> Потому что потокобезопасность — это свойство технической системы обладать корректным поведением (скажем, сохранять все инварианты) в многопоточном сценарии работы.
[17:18:47] <ForNeVeR> Ты не можешь просто начать всё подряд лочить и синхронизировать, и получить _корректное_ поведение в _произвольном_ сценарии работы.
[17:19:01] <ForNeVeR> Потому что твоя техническая система не одна существует.
[17:19:12] <ForNeVeR> Вот, предположим, у тебя есть калькулятор.
[17:19:20] <Minoru> а можно какой-то при— о, давай калькулятор
[17:19:24] <ForNeVeR> У него есть две ячейки памяти и метод "получить результат".
[17:20:02] <ForNeVeR> Методы "установить ячейку памяти" и "получить результат" ты, памятуя своё утверждение, помечаешь как synchronized.
[17:20:17] <ForNeVeR> И что же? Ты получил корректное поведение?
[17:20:48] <ForNeVeR> // зависит от определения корректности и инвариантов по отношению к твоей подсистеме, и в этом основной поинт
Я скажу, что нет.
[17:21:37] <ForNeVeR> Я ожидаю, что _потокобезопасный калькулятор_ — это в который можно поместить два числа и потребовать результат, который совпадёт с ожидаемым, вне зависимости от того, какие ещё потоки с этим калькулятором работают.
[17:22:02] horta hell вышел из конференции
[17:22:21] horta hell зашёл в конференцию
[17:22:25] <ForNeVeR> Но очевидно, что описанный мной дизайн калькулятора этому определению не соответствует — другой поток может вмешаться в логику его работы, перезаписав память, которой мне бы хотелось владеть монопольно.
[17:22:38] <Minoru> погоди, но это проблема именно synchronized: у тебя методы по отдельности синхронные, но при этом конкурентно работают с ресурсом (ячейкой). А вот если бы мы использовали «какую-то более общую «синхронизацию», а именно мьютекс на самой ячейке памяти, то всё было бы збс. Я тебя поймал? :) Или просто неправильно понял?
[17:22:55] <ForNeVeR> Поэтому синхронизация отдельных методов сама по себе не гарантирует потокобезопасности, потому что у потокобезопасности более широкое определение.
[17:23:26] <Minoru> а, у тебя ещё и объект одновременно в нескольких местах используется? Да, это хороший пример, теперь я понимаю
[17:23:29] <ForNeVeR> И неважно, заставляет тебя Java писать synchronized или не заставляет, это всё равно не даёт тебе каких-то практичных свойств.
[17:24:04] <ForNeVeR> Minoru: мой поинт именно в том, что такое вот механистичное определение всегда даст где-то промахнуться и сделать всё плохо
[17:24:19] <ForNeVeR> Так что Java не должна никого заставлять писать synchronized.
[17:24:38] <ForNeVeR> Тем более, что есть и намного более другие способы синхронизации, не основанные на "тупых" блокировках, встроенных в язык.
[17:24:55] <ForNeVeR> (и которые в ряде случаев будут давать более хорошие характеристики)
[17:25:08] <Minoru> ну вот умный, красивый, прекрасный STM в твоём случае тоже не спасёт
[17:25:19] <Minoru> и вообще проблема получается в архитектуре
[17:25:25] <Minoru> иммутабельность спасёт :)
[17:26:34] <ForNeVeR> STM, да и блокировка спасёт, но её делать надо уровнем выше.
[17:26:45] <Minoru> а цитату я, кстати, приводил ради последнего его предложения. Вы ведь тоже бежите на работу вприпрыжку, когда знаете, что там вас ждёт отладка бага с многопоточностью?
[17:27:09] <ForNeVeR> Мне интересно отлаживать многопоточные баги. Это весело!
[17:28:42] <Minoru> погоди, раз мы можем решать, на каком уровне делать блокировку, то нас и synchronized спасёт: нужно просто сделать синхронный метод, который вызовет сначала «установить ячейку памяти», потом ещё (для второй ячейки), а потом «получить результат»
[17:28:47] <ForNeVeR> Единственное, что бывает невесело — это в одиночку оказаться посреди очень стрёмной, глючной системы без юнит-тестов и технического руководства.
[17:28:51] <ForNeVeR> Minoru: да, спасает
[17:29:01] O01eg зашёл в конференцию
[17:29:01] ckorzhik вышел из конференции
[17:29:41] <ForNeVeR> Minoru: но я говорил о том, что твоя реализация калькулятора не может заявлять о своей априорной потокобезопасности. Она может лишь утверждать, что является безопасной или небезопасной в том или ином сценарии работы
[17:30:12] <ForNeVeR> И что наличие или отсутствие synchronized-блоков и вообще какой-либо синхронизации с этой безопасностью не вполне коррелирует.
[17:31:06] <Minoru> да, теперь я понимаю. Спасибо!
[17:31:06] <ForNeVeR> Это очень важно понимать, если работаешь с многопоточным кодом.
[17:31:32] <ForNeVeR> И пометочка в документации "этот API является потокобезопасным", как правило, значит совсем не то, чего тебе хотелось бы :)
[17:31:46] <ForNeVeR> (микрософт любит в MSDN такие пометочки оставлять)
[17:35:47] rexim зашёл в конференцию
[17:36:06] <rexim> Ебать, у меня инфекция роговицы!
[17:36:08] <rexim> Будь аккуратны с легаси говнокодом, посоны!
[17:36:12] <rexim> Так и ослепнуть можно
[17:36:20] <ForNeVeR> ох
[17:36:29] <ForNeVeR> Это опасно? Лечение существует?
[17:36:45] <rexim> Ну, мне прописали дохуя каплей. Закаплся, сижу.
[17:36:53] <ForNeVeR> Зрение удастся спасти?
[17:37:13] <ForNeVeR> Хотя бы вторым глазом :(
[17:37:29] <rexim> Да, вот смотрю им на твой грустный смайлик. :)
[17:37:40] <rexim> Да, норм все. Это лечится.
[17:37:49] <ForNeVeR> Выздоравливай!
[17:37:54] <rexim> Ага, спасибо!
[17:38:33] <ForNeVeR> Если что, я видел на улице чувака в пиратской повязке. Наверное, их где-то продают.
[17:38:44] <ForNeVeR> Но тебе нужно будет щетину отрастить, чтобы в ней круче выглядеть.
[17:38:48] <ForNeVeR> И зверское выражение лица.
[17:38:50] <rexim> Блин
[17:38:53] <rexim> У меня не растет :(
[17:38:55] <ForNeVeR> Так что или лечись, или зверей.
[17:39:01] <rexim> Хорошо
[17:39:37] <ForNeVeR> Я послушал сегодня доклады Егора.
[17:39:53] <ForNeVeR> Зря я раньше не стал, они вполне нормальные, он не троллит.
[17:40:02] <rexim> Я про то и говорю.
[17:40:18] <rexim> Он только в блоге своем такой.
[17:40:29] <ForNeVeR> (но я и блог не читал, лол)
[17:40:37] <ForNeVeR> Я код читал!
[17:41:07] <ForNeVeR> В общем, я его идеи понимаю, но не уверен, что они везде уместны.
[17:41:40] <ForNeVeR> Какой-то у него слишком радикальный подход. "Надо вот так вот — и всё". Аинженерный подход.
[17:42:32] <ForNeVeR> А на самом деле не надо безусловно делать так или эдак. Надо учиться думать, искать ориентиры для быстрого принятия эффективных решений.
[17:43:42] <rexim> Да, я с тобой согласен.
[17:46:23] <ForNeVeR> http://www.askamathematician.com/2012/07/q-how-does-instantaneous-communication-violate-causality/
Чуваки, я ничего не понял :(
[17:47:39] <ForNeVeR> Если у меня есть телепортатор, который "мгновенно" перемещает меня на Марс или на Альфа Центавру, то я смогу отправить себе сообщение в прошлое или нет? Допустим, в прошлом я уже подготовился, собрал соответствующее приёмное оборудование и всё такое.
[17:50:38] superka вышел из конференции
[17:50:39] superka зашёл в конференцию
[17:55:20] <Minoru> мне местами припекало с его переупрощённых заявлений типа «в классе должно быть не более пяти полей»
[17:55:37] <ForNeVeR> Почему, блин, нету никакой пошаговой инструкции, чем вообще занимаются физики :(
[17:56:14] <Minoru> rexim: выздоравливай! Олсо ты там теперь каплями умываться можешь, ты же уже какие-то капал, кажется :(
[18:01:18] MaXGGXaM вышел из конференции
[18:03:29] <rexim> Minoru: :(
[18:03:57] <Minoru> > But then JavaScript comes along and says: “Oh, look at Venkat! Venkat put `var` in front of `local1`, but he forgot to put `var` in front of `local2`. What can I do to hurt him the most?”
(из всё того же доклада)
[18:05:58] <ForNeVeR> http://usersguidetotheuniverse.com/index.php/2011/09/29/i-get-email-does-ftl-signals-let-you-communicate-back-in-time/ — нашёл инструкцию.
[18:06:03] <ForNeVeR> Правда, там картинки битые, но описание внятное.
[18:12:38] <Minoru> > But I got this theory [on] why we hate XML. And the reason we hate XML is: XML is kinda like human. It’s really cute when it’s small, but we all hate it when it grows up; it becomes very annoying.
[18:15:21] <Minoru> > Singleton pattern takes about 5 minutes to learn and a lifetime to get it right.
[18:15:48] <Minoru> какой забавный доклад! Я не знаю, сколько из этого будет казаться мне важным завтра, но сегодня я смеюсь с формулировок и ремарок
[18:33:46] <rexim> У меня сейчас сейлз из LCTV спросил, готов ли я платить 10 баксов в месяц, чтобы какой-то важный для них хуй больше стримил на их говяной платформе.
[18:34:38] <rexim> У меня, у человека, который на их гребанную платформу угробил свое здоровье.
[18:34:54] superka вышел из конференции
[18:34:56] superka зашёл в конференцию
[18:35:32] <rexim> Никогда я не получал столько удовольствия от пассивной агрессии. Ух!
[18:37:19] <Minoru> rexim: не трать на них свои нервные клетки!
[18:37:30] <Minoru> удали аккаунт, добавь в GMail фильтр, отправляющий их письма в спам
[18:37:36] <Minoru> живи и радуйся жизни!
[18:38:55] <rexim> Как бы тебе ответить, так чтобы не обидеть...
[18:38:57] <rexim> Хм...
[18:39:01] <rexim> Никак.
[18:39:07] <rexim> Поэтому я и не буду отвечать
[18:39:39] <Славный капитан> rexim: пассивная агрессия непродуктивна
[18:39:49] <rexim> Славный капитан: как и ты
[18:39:57] <Славный капитан> да, кака я и
[18:40:04] <Славный капитан> че
[18:40:08] * Minoru pat-pat rexim
[18:40:10] <Славный капитан> я не это печатал
[18:40:15] <Славный капитан> ндп
[18:40:23] <Славный капитан> агрессия должна быть активной!
[18:41:14] <Minoru> Vim подвис, пытаясь открыть лог Цодингтима :(
[18:41:28] <Славный капитан> rexim: напиши этому хую все, что ты думаешь о нем, о их говняной платформе, о том хуе и по каким осям ты их вращал
[18:41:33] <Minoru> причём я не пойму, что именно зависло: файл он прочёл, начало отобразил, даже часть раскрасил
[18:41:49] <Славный капитан> катарсис и психологическая разрядка гарантированы
[18:56:13] superka вышел из конференции
[18:56:15] superka зашёл в конференцию
[18:56:27] rexim вышел из конференции
[19:37:18] nalchic69 зашёл в конференцию
[19:37:45] superka вышел из конференции
[19:37:47] superka зашёл в конференцию
[19:38:16] nalchic69 вышел из конференции
[19:38:18] <m4n71k0r> rexim: скажи, что ТЫ ИХ ПО ЭКЛИПТИКЕ ШАТАЛ
[19:39:39] <m4n71k0r> Minoru: ты слишком добрый
[19:41:01] reggies вышел из конференции
[19:41:10] reggies зашёл в конференцию
[19:41:32] xmi вышел из конференции
[19:41:44] <Minoru> m4n71k0r: спасибо, я стараюсь!
[19:42:41] <ForNeVeR> Minoru: помни: каким бы добрым ты ни был, твоя доброта никогда не сравнится с добротой предвечного Императора!
[19:42:45] <ForNeVeR> И потому можно быть злым.
[19:47:18] <Minoru> ForNeVeR: а вот некоторые считают, что нужно быть добрым, иначе другой воображаемый персонаж покарает. Вредно вашими сказками руководиться, в общем!
[19:50:25] <ForNeVeR> Minoru: а ты их сожги!
[19:50:32] * ForNeVeR — мастер практичных советов.
[19:50:41] superka вышел из конференции
[19:50:42] superka зашёл в конференцию
[19:52:16] <Minoru> ForNeVeR: их сказки, кстати, подсказывают мне сжечь тебя (если я правильно понимаю). Одни мастера практичных советов вокруг!
[19:52:40] <ForNeVeR> Minoru: не слушай тех, кто советует сжечь меня!
[19:52:53] <ForNeVeR> (наверняка они сами даже на втором метауровне защиты не поставили, а?)
[19:53:41] <Minoru> можно не слушать и тебя, и их. И вообще никого не слушать!
[19:54:09] <ForNeVeR> Правильно: никого, кроме Императора!
[20:00:57] <m4n71k0r> Minoru: прослушаешь, когда за тобой придёт кто-нибудь из ордо ассасинорум >:/
[20:05:48] <Minoru> m4n71k0r: приходили из ордо ассасинорум, а я опять всё прослушал!
[20:05:57] <ForNeVeR> Да что ж такое :(
[20:06:08] <m4n71k0r> panic_ptr
[20:12:34] <m4n71k0r> Minoru: а я заполнил какую-то анкетку от Jetbrains... Там было про Catch в контексте плюсов, но не было про doctest
[20:13:50] <Minoru> m4n71k0r: а ты его юзал где-то? Я в каком-то питонопроекте видел и на хаскелевский порт поглядывал, но на деле у людей test harness обычно где-то сбоку, а не прямо в коде (ну, во всяком случае, мне так кажется)
[20:15:51] <m4n71k0r> Minoru: это юниттест либка и я её заюзал в проекте... хм. Я думал, что это нормально, писать юниттесты
[20:16:09] <m4n71k0r> правда мало тестов
[20:17:00] <Minoru> ну, она же в комментах прямо тесты держит, нет?
[20:17:45] <m4n71k0r> Minoru: https://github.com/onqtam/doctest нет
[20:18:16] <Minoru> ух! А я про вот эту: https://github.com/sol/doctest
[20:18:24] <m4n71k0r> хочешь сказать, что они взяли неудачное название?)
[20:19:19] <Minoru> забавный clash получается, да. Я всерьёз ожидал, что это порт питоновского подхода в плюсы — ну, так же, как и для Хаскеля сделано, например
[20:21:07] <Minoru> ну и что там, ты JB написал, что они should do their homework? :)
[20:21:52] <m4n71k0r> Minoru: не, япросто писал что и где использую... это они перед новым годом оценивают, какие продукты лучше продвигать
[20:22:15] <m4n71k0r> ленивые маркетолухи
[20:23:02] <Minoru> они не могут там на энтом IntelliJ сделать IDE для Haskell? :)
[20:23:11] <m4n71k0r> кхм... а есть способ в гитхабе следить за релизами озвездённых репозиториев?
[20:23:40] <m4n71k0r> Minoru: ну для Го начали пилить...я указал, что собираюсь в след проектах юзать х-ль
[20:24:31] <m4n71k0r> видимо, они научились ставить на потоко вынос основного языкового плагина как главного и переименовывания приложения + кастомайз
[20:24:37] <m4n71k0r> на поток*
[20:25:23] <Minoru> про релизы не знаю, но тоже любопытно
[20:26:04] <Minoru> в IDE для Go должна быть функция, позволяющая несколько функций связать в одну логическую сущность. Нужно же гоферам как-то компенсировать отсутствие параметрического полиморфизма :)
[20:27:03] <ForNeVeR> m4n71k0r: они уже давно это сделали.
[20:27:26] <ForNeVeR> Ты просто глянь, сколько у них уже разных IDE.
[20:28:08] <m4n71k0r> ForNeVeR: по-моему у них должно уже не хватать биомассы для распределения по проектам
[20:28:17] <Minoru> а представляете, если у них на самом деле ядро просто обложено говнокодом, который пытается представить внешний язык как какое-то подобие джавы?
[20:28:27] <Minoru> (у них же для Джавы первая IDE была?)
[20:28:34] <m4n71k0r> ААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААА
[20:28:43] * m4n71k0r представил
[20:29:10] <Minoru> m4n71k0r: извини!
[20:29:13] <m4n71k0r> идейка 2004-го года уже была офигенна для джавы, кстати
[20:29:52] <Minoru> ForNeVeR: меметическая угроза, срочно оградите конфочку и вызовите отряд… отряд… кого-нибудь вызовите, в общем, Вы же тут старший по званию!
[20:30:01] * ForNeVeR представил и совершенно не удивился.
[20:31:24] <ForNeVeR> Minoru: примите амнезиак класса А, в аптечке в конфетной форме лежит. И продолжайте выполнять боевую задачу.
[20:38:16] ckorzhik зашёл в конференцию
[20:41:04] <Minoru> кстати, о боевой задаче. У меня тут какой-то чувак принялся писать юнит-тесты для, считай, UI приложения — для класса, который обрабатывает пользовательские действия в одной из формочек. То есть он буквально приказывает выполнить определённую операцию (скажем, OP_OPEN) и смотрит на результат (не через UI, а через всякие побочные эффекты вроде обновлённой БД или перезаписанных файликов).

Возникла проблема: в каждом тесте приходится чуть ли не всё приложение собирать по классам, потому что всё нужно — основной контроллер, класс-обёртка для БД, хранилка конфига и прочее. Плюс ещё данные тестовые генерировать, а это тоже не так-то просто.

Код, если вам интересно, вот здесь — https://github.com/akrennmair/newsbeuter/pull/420#pullrequestreview-13448719 — но у меня острое ощущение, что мы просто что-то неправильно делаем. Может, на таком высоком уровне уже не юнит-тесты нужно юзать, а городить какую-то систему, чтобы прямо запускала всё приложение и гоняла проверки? Или у меня классы слишком связные?
[20:42:46] <ForNeVeR> Фига ты наехал там на чувака!
[20:43:13] <Minoru> ты про какой из наездов?
[20:43:19] <ForNeVeR> Про весь тред.
[20:43:26] <Minoru> он просто медленно, буквально по одной операции за раз, пилит. И мы сразу обсуждаем
[20:43:34] <ForNeVeR> Минорка, как заправский ПМ, пинает несчастного девелопера и не хочет мержить!
[20:43:57] <Minoru> он там поначалу, похоже, вообще на окружающий код не смотрел, пришлось ему все местные понятия^W^Wconventions пересказывать
[20:44:29] <Minoru> а сейчас вот, втянулся; за последние два пуша ничего существенного я не нашёл, как допилит — можно мержить
[20:45:12] <Minoru> ну и я там ему сказал где-то посреди треда, мол, устанешь пилить — дай знать, смержу как есть, потому что и так много работы уже проделано, польза в любом случае будет, даже если весь класс тестами не покроешь
[20:46:15] <Minoru> вообще да, у меня от этого (и предыдущих) PR этого чувака возникает ощущение, будто бы я зверь бессердечный. Кажется, я только до пробелов вокруг операторов ещё не доёбывался ._.
[20:48:12] <ForNeVeR> Minoru:
1) ничего стрёмного я там не вижу, тесты вполне прилично выглядят
2) кучки шаблонного кода хорошо бы вынести куда-то, наверное; предлагаю обсудить с чуваком и подготовить какую-то более аккуратную инфраструктуру для UI-тестов, раз уж у вас их там так много — ну хотя бы в класс вынести с филдами типа controller и newsbeuter::view, чтоб каждый раз не писать?
3) куча тесткейсов с //NOTIMPL не нужна. Имплементируй или нахер. Ни к чему их оставлять в виде задела на будущее, имхо — слишком велика вероятность, что задел не будет реализован
[20:48:41] <ForNeVeR> (улучшение системы для UI-тестов точно надо в другом PR делать, конечно)
[20:49:28] <ForNeVeR> Minoru: ну а в целом я считаю, что если твой UI можно таким образом протестировать — это прекрасно и нужно; пускай будет.
[20:49:33] <ForNeVeR> Ты просто моих UI-тестов не видал :)
[20:50:26] <ForNeVeR> Вот таких, например: https://github.com/ForNeVeR/Jabber-Net/blob/474ad5cf66e0effeee7343b21c331f968d1f93f7/tests/JabberNet.Test.Muzzle/ControlExtensionsTest.fs#L36-L48
[20:50:58] <ForNeVeR> Треды, формы, содомия с хелперами...
[20:53:04] <Minoru> лол, моя очередь говорить «не вижу ничего стрёмного» :)
[20:58:03] <m4n71k0r> чёртовы извращенцы)
[20:58:47] * Minoru уселся поудобней, чтобы послушать развёрнутое мнение Мантикора
[21:07:42] <m4n71k0r> я аниме смотрю
[21:08:04] <m4n71k0r> ну, пытаюсь смотреть
[21:09:07] <Minoru> так это про аниме был комментарий? Или ты объясняешь, почему у тебя нет времени развернуть мнение? Мне правда интересно вышлушать твою точку зрения на этот счёт, потому что я не знаю, что делать (ну и вдруг Форневерик что-то упустил)
[21:09:30] <m4n71k0r> Minoru: https://www.youtube.com/watch?v=O5qaPq9YWrA
[21:09:44] ckorzhik вышел из конференции
[21:09:49] Graf зашёл в конференцию
[21:09:57] Graf вышел из конференции
[21:11:03] <m4n71k0r> Minoru: ну я стараюсь не связываться с UI, чтобы уберечь себя от потрясений
[21:12:35] <m4n71k0r> хотя... я лукавлю. Ведь я же напишу UI-либу на D
[21:19:11] <m4n71k0r> бгг https://youtu.be/O5qaPq9YWrA?t=1409
[21:19:26] <Minoru> m4n71k0r: м, ну ок. А мы вот стараемся *тестировать* UI, чтобы уберечь себя от потрясений!
[21:22:53] eaeee зашёл в конференцию
[21:27:44] <m4n71k0r> Алексей Карамазов, Николай Красоткин =)
[21:27:47] <m4n71k0r> блин
[21:59:47] Minoru вышел из конференции
[22:48:27] eaeee вышел из конференции
[22:54:12] rafaelrs зашёл в конференцию
[23:02:25] portnov вышел из конференции
[23:04:15] eaeee зашёл в конференцию
[23:10:09] <O01eg> Народ, какой у вас CMAKE_VS_PLATFORM_TOOLSET ?
[23:28:49] m4n71k0r вышел из конференции
[23:33:22] grouzen вышел из конференции
[23:39:47] superka вышел из конференции
[23:39:49] superka зашёл в конференцию
[23:55:49] superka вышел из конференции
[23:55:51] superka зашёл в конференцию
Powered by freQ Powered by Python Valid XHTML 1.0 Transitional Valid CSS!