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

Тема: Тема: C, С++, D, Java, C#, Haskell, Ruby, Scheme, Common Lisp, Erlang, OCaml, JavaScript, TypeScript, Clojure, Scala, Nemerle, F#, Groovy, R, Rust.
Backup channel: codingteam@conference.codingteam.org.ru
HQ: http://codingteam.org.ru
Код постить сюда: http://hastebin.com/
Логи: http://tinyurl.com/ctcjr-logs
Юным погромцам сюда: http://e-maxx.ru/algo/ , а ещё читать Кнута, Кормена, Седжвика и др.
Morning Tsoding (вт, чт, вс, збс): https://twitter.com/tsoding
Let's Dev (когда Капитан на мостике): http://www.youtube.com/playlist?list=PLK6mcZkmN4QTusFvp_0GVtscQbCiIg81Y
http://i.imgur.com/slnyI6a.jpg
[00:03:28] m4n71k0r зашёл в конференцию
[00:04:28] uggur вышел из конференции: Replaced by new connection
[00:04:35] uggur зашёл в конференцию
[00:09:02] <Minoru> ɹǝɟılʍǝu: почитал интернетики. То есть это то же самое, что уже делает Travis, создавая job-ы для всех веток, попадающих в репозиторий?
[00:09:20] <ɹǝɟılʍǝu> Minoru, da.
[00:12:08] <Minoru> чат, а поговори со мной о кешировании
[00:12:21] <Orhideous> А давай.
[00:12:27] <Minoru> есть некий набор функций, которые делают HTTP-запросы, обрабатывают ответы и отдают обработанные результаты
[00:12:27] <Orhideous> Тебе не нужно кеширование :3
[00:12:44] <ɹǝɟılʍǝu> Смотря какие запросы.
[00:12:51] * Orhideous между прочим внимательно слушаэ.
[00:12:55] <ɹǝɟılʍǝu> Вдруг это rpc over json?
[00:13:09] <ɹǝɟılʍǝu> И там что-то ТЯЖКОЕ вычисляется?
[00:13:11] <Minoru> в заголовках ответов встречаются ETag и Last-Modified, следовательно, можно кешировать их значения и в случае, если сервер вернёт 304 Not Modified, просто отдавать уже готовый ответ
[00:13:37] <Orhideous> Эммм… результат в json?
[00:13:51] <Orhideous> Или может, как вообще Нью предложил, json-rpc?
[00:14:10] <Minoru> Orhideous: я получаю json, отдаю эрланговские термы
[00:15:11] <Minoru> ну так вот. Сейчас у меня в кеше ключом является имя и параметры функции моего API, которую вызвали; а значением — пара (заголовки, обработанный результат)
[00:15:23] <Minoru> и всё у меня хорошо :)
[00:15:24] <Minoru> но!
[00:15:45] <Minoru> некоторые удалённые URL-ы требуют использовать pagination
[00:16:51] <Minoru> и я не хочу это прятать за своим API (то есть всегда вытягивать все страницы и делать вид, что так и было). Я хочу, чтобы пользователь мог узнать, что он может получить N кусков ответа, и запростить произвольный кусок (куски мапятся в страницы)
[00:17:01] <Minoru> и вот тут возникает вопрос, как мне это сделать
[00:17:14] <Minoru> понятно, что мне в мой кеш нужно добавить новое поле какое-то
[00:17:30] <Minoru> типа номера текущей страницы и указателей на предыдущую и следующую
[00:17:49] <Minoru> но я не представляю, как с этим работать пользователю
[00:18:24] <Minoru> вызвал он функцию. Получил ответ. Хочется проверить, есть ли ещё страницы. Для этого ему, видимо, придётся выдать функцию из результата в булево значение
[00:18:46] <Minoru> то есть получается, что мне нужно в самом результате записать, как получить остальные страницы
[00:19:05] <Minoru> ну, или сделать layer of indirection: в результат пишем какой-то ключик, по которому можно вынуть данные про остальные страницы
[00:20:37] <Orhideous> > Получил ответ. Хочется проверить, есть ли ещё страницы
Можно узнать сразу, есть ли страницы?
[00:20:48] <Orhideous> На момент произвольного запроса
[00:20:58] <Minoru> да, там сразу видно по ответу
[00:21:18] <Orhideous> А, тогда отдавай просто результат, номер страницы и количество всех
[00:21:33] <Orhideous> Запросы к API идемпотентны?
[00:21:43] <Minoru> не все
[00:21:51] <Orhideous> Так.
[00:22:01] <Orhideous> Пагинация на неидемпотентных есть?
[00:22:08] <Minoru> afaik, нету
[00:22:21] <Minoru> я буду сильно удивлён, если будет :)
[00:22:43] <Orhideous> Оки. Тогда
> отдавай просто результат, номер страницы и количество всех
[00:22:53] <Orhideous> С этим трудно накосячить со стороны пользователя
[00:23:12] <Minoru> а что, если пользователю плевать на пагинацию?
[00:23:20] <Minoru> а я тут ему сую какие-то циферки
[00:23:34] <Minoru> мне хотелось всё же как-то это спрятать, чтобы доступ был через функции
[00:23:46] <Orhideous> Ммм, тогда у тебя протечет абстракция.
[00:23:52] <Minoru> почему?
[00:24:02] <Minoru> и каким образом?
[00:24:54] <Orhideous> В наихудшем случае через то, что будет несколько функций, делающих сходные вещи.
Я не совсем понимаю состоятельность аргумента «плевать на пагинацию»
[00:24:58] <Orhideous> Поясни, пожалуйста.
[00:24:59] <Minoru> на самом деле я как-то слишком абстрактно проблему описал :)
[00:25:10] <Orhideous> Ну, да. :)
[00:25:25] <ɹǝɟılʍǝu> Лять. Как по-русски сказать «на всём стеке образования»?
[00:25:27] <ɹǝɟılʍǝu> А!
[00:25:31] <ɹǝɟılʍǝu> На всех ступенях.
[00:26:07] <Minoru> Orhideous: я имел в виду, что пользователя не интересут, сколько там страниц, ему только первую (умолчальную)
[00:26:39] <Minoru> Orhideous: ты синтаксис Erlang или Haskell понимаешь?
[00:26:46] <Orhideous> Haskell давай.
[00:26:55] <Orhideous> C Эрлангом совсем не работал
[00:27:21] <Minoru> ну вот, если возвращать тайпл, как ты предалагаешь, то пользователь, конечно, может написать (result, _, _) = apiCall …, но это криво
[00:27:50] <Minoru> я хочу, чтобы он сделал result = apiCall …, а потом мог писать if (getPagesCount result > 1) then … else …
[00:28:15] <Minoru> ладно, давай я расскажу про две конкретных проблемы, которые мешают мне жить :)
[00:28:35] <Orhideous> Жги.
[00:31:00] <Minoru> кажется, пока писал, понял, как починить :D
[00:31:07] <Minoru> пойду проверю!
[00:31:14] <Minoru> спасибо за внимание :)
[00:31:17] <Orhideous> Метод резиновой уточки!
[00:33:19] <ɹǝɟılʍǝu> *кря-кря*
[00:45:25] <Minoru> что-то слишком сложно выходит
[00:45:32] <Minoru> расскажу всё же о двух проблемах тогда
[00:47:57] <ɹǝɟılʍǝu> Minoru, Orhideous за старое-доброе ультранасилие!
[00:48:04] <ɹǝɟılʍǝu> А я спатеньки.
[00:49:22] <Orhideous> Ночи
[00:51:23] <Minoru> 1. Кеш у меня — это структура данных, мапящая (имя_функции, аргументы) в (заголовки, обработанный результат). Причина, по которой заголовки и результат собраны в единое целое — простота инвалидации (сейчас из кеша ничего не выбрасывается, только перезаписывается новыми результатами в случае изменений; но в будущем это почти наверняка будет заменено на LRU, и вот тогда-то запляшем). Минус в том, что всё приходится привязывать к означенному ключу, что не совсем удобно; так, в функциях, выполняющих HTTP-запросы, нельзя привязать кеширование к URL —
приходится в моём API генерировать эти самые ключи для кеша и передавать во все вызываемые функции. Поэтому если я прикручу пагинацию, то придётся как-то и пользователю сообщать этот ключ, иначе он не сможет получить следующие странички. Есть желание вместо собственно ключа генерировать случайный, но тогда придётся хранить маппинг из случайных ключей во внутренние, а это ещё один кеш, инвалидацию которого приётся привязывать к первому — по-моему, это неприемлемо
[00:57:40] <Minoru> 2. Проблема обобщения всего этого кеширования. Может, её и нет вовсе — это зависит от решения первой. В общем, если в функции, которая выполняет HTTP-запрос (и определяет, есть ли ещё странички) генерировать тот самый ключ, который мы отдадим пользователю, то пихать его в результат придётся уровнем выше (потому что именно там результат и формируется). То есть получается, что во всех функциях высшего уровня придётся вместо `HTTPResult = get(…); return cache(Process(HTTPResult))` (cache() кеширует результат и возвращает его же) писать что-то типа `(HTTPResult, PaginationKey) = get(..); Result = Process(HTTPResult);
Result.pagination = PaginationKey; return cache(Result)`. Вот это присваивание некрасиво абстрагируется в Эрланге (там через подобие reflection придётся лезть в Result, смотреть, есть ли у него поле для pagination key, и уже тогда что-то делать).
[00:57:51] <Minoru> вот такие вот дела
[01:07:40] asidorenko вышел из конференции
[01:55:10] <Minoru> http://ic.pics.livejournal.com/assa55555/31770842/997/997_original.jpg
[02:04:15] <Minoru> на канале FPConf появились записи с FPConf 2014(?). Ко всем видео мне первым suggestion-ом идёт видео с названием «лайфхак - как незаметно застегнуть ширинку». Google, ахаха, что ты делаешь, прекрати!
[02:05:28] <Orhideous> :D
[02:05:37] <Orhideous> Вслух же.
[02:12:01] Andrey777 зашёл в конференцию
[02:13:02] Andrey777 вышел из конференции
[02:16:20] asidorenko зашёл в конференцию
[02:40:29] Славный капитан зашёл в конференцию
[02:49:27] ≈(^o^)≈ вышел из конференции
[02:53:22] asidorenko вышел из конференции
[03:09:18] horta hell вышел из конференции: Disconnected: Replaced by new connection
[03:09:18] horta hell зашёл в конференцию
[03:10:28] horta hell вышел из конференции: Disconnected: Replaced by new connection
[03:10:29] horta hell зашёл в конференцию
[03:10:54] Славный капитан вышел из конференции
[03:14:30] horta hell вышел из конференции: Disconnected: Replaced by new connection
[03:14:30] horta hell зашёл в конференцию
[03:18:48] Славный капитан зашёл в конференцию
[03:19:40] m4n71k0r вышел из конференции
[03:22:50] <Славный капитан> Orthu Barada Nikto
[03:54:47] horta hell вышел из конференции: This participant is kicked from the room because he sent an error presence: remote-server-not-found
[04:16:59] Славный капитан вышел из конференции: Replaced by new connection
[04:17:01] Славный капитан зашёл в конференцию
[04:20:22] Minoru вышел из конференции
[04:21:25] Славный капитан вышел из конференции: Replaced by new connection
[04:21:27] Славный капитан зашёл в конференцию
[04:24:46] Славный капитан вышел из конференции: Replaced by new connection
[04:24:48] Славный капитан зашёл в конференцию
[04:40:12] MaXGGXaM вышел из конференции: Replaced by new connection
[04:40:13] MaXGGXaM зашёл в конференцию
[04:55:33] Orhideous вышел из конференции: Комп’ютер присипляється
[06:03:13] sss|zombie зашёл в конференцию
[06:48:15] rafaelrs вышел из конференции
[07:25:32] sss|zombie вышел из конференции
[07:40:23] ForNeVeR зашёл в конференцию
[07:49:39] 4ppleboy зашёл в конференцию
[08:29:55] Mr.Purple зашёл в конференцию
[09:18:32] 4ppleboy вышел из конференции
[09:20:20] kosc зашёл в конференцию
[09:27:45] <ɹǝɟılʍǝu> Утро
[09:28:01] <Mr.Purple> тро
[09:38:14] MaXGXaM зашёл в конференцию
[09:44:43] <ɹǝɟılʍǝu> :D https://youtu.be/c7fP9q_LyDc
[09:51:55] gsomix зашёл в конференцию
[09:53:33] <gsomix> Утро.
[09:58:01] Graf зашёл в конференцию
[09:59:26] Graf вышел из конференции
[10:05:08] <ForNeVeR> Так точно!
[10:06:26] grouzen зашёл в конференцию
[10:42:39] horta hell зашёл в конференцию
[10:52:25] asidorenko зашёл в конференцию
[10:53:07] rexim зашёл в конференцию
[10:54:14] <ɹǝɟılʍǝu> Утр
[10:57:08] <gsomix> При отправке рецензии попросили оценить статью по шкале от 1 до 100.
[10:57:32] <gsomix> Какая точность!
[10:57:56] <ɹǝɟılʍǝu> gsomix, а я тут задался вопросом... А зачем вообще нонче журналы?
[10:58:29] <gsomix> ɹǝɟılʍǝu, чтобы ты публиковался, а твои статьи читали.
[10:58:46] <gsomix> Я не понял вопроса. :)
[11:01:11] <ɹǝɟılʍǝu> gsomix, а разве не круче иметь нечто вроде arXiv? Т.е. сетевой такой журнал.
[11:01:20] <ɹǝɟılʍǝu> На мноооога стран сразу.
[11:01:47] <gsomix> ɹǝɟılʍǝu, они сейчас почти все сетевые.
[11:03:11] <ɹǝɟılʍǝu> gsomix, а общий?
[11:03:43] <ɹǝɟılʍǝu> Типа объеденённый, с крупнейшей БД, с автопомощниками для рецензий.
[11:03:43] gsomix вышел из конференции: This participant is kicked from the room because he sent an error message to another participant: service-unavailable
[11:04:11] <ɹǝɟılʍǝu> Типа вводишь свою бубликацию, а тебе на выхлоп: ВЫ ВСЁ СКОПИПАСТИЛИ!!11
[11:04:12] <ɹǝɟılʍǝu> :3
[11:14:24] <rexim> Чпокати-чпок!
[11:14:29] gsomix зашёл в конференцию
[11:14:47] <ɹǝɟılʍǝu> rexim, чпоки!
[11:15:12] <gsomix> ɹǝɟılʍǝu, мне не кажется, что это хорошая идея.
[11:15:25] <ForNeVeR> ɹǝɟılʍǝu: нерецензируемые журналы особо не имеют ценности. А вот рецензируемые - имеют. При этом форма публикации (печатается он или нет), разумеется, существенного значения не имеет.
[11:15:36] m4n71k0r зашёл в конференцию
[11:15:43] <ɹǝɟılʍǝu> ForNeVeR, gsomix а я про что?
[11:15:51] <ForNeVeR> Я пока не понял, про что ты ._.
[11:18:11] <gsomix> ɹǝɟılʍǝu, мне нравится, что журналы отличаются тематикой, уровнем, редакторами и рецензентами.
[11:19:10] <m4n71k0r> кхм, а ADO всё ещё имеет отношение к ActiveX или нет?
[11:19:22] <m4n71k0r> вот ADO.NET, например
[11:21:35] <m4n71k0r> если нет, то не очень понятна "A" в аббревиатуре
[11:25:16] <gsomix> ɹǝɟılʍǝu, а всякие поиски и показатели есть в рамках реферативных БД (РИНЦ, Scopus, WoS).
[11:25:50] <ForNeVeR> m4n71k0r: нет, не имеет.
[11:27:29] <devel29a> Вчера ко мне пристал какой-то дед. Похоже, он адепт какой-то религии, но это не важно. Он утверждал, что если человек мудак и не пишет код, то это все оттого, что его разум захватил сотона. Тут я окончательно понял, насколько религия ложна и вредна
[11:28:14] <ɹǝɟılʍǝu> gsomix, ого, про РИНЦ не слышал.
[11:28:16] <ɹǝɟılʍǝu> Спасибки!
[11:29:32] <gsomix> ɹǝɟılʍǝu, он немного замусоренный, но зато наш.
[11:29:51] <ɹǝɟılʍǝu> gsomix, класс!
[11:29:57] <ɹǝɟılʍǝu> gsomix, поднял настроение!
[11:29:59] <ɹǝɟılʍǝu> Спасибо!
[11:35:58] MaXGXaM вышел из конференции
[11:37:07] <ForNeVeR> devel29a: но ведь это так и есть!
[11:38:40] <ɹǝɟılʍǝu> Ребят.
[11:38:43] <ɹǝɟılʍǝu> Что за хуйня?
[11:38:44] <ɹǝɟılʍǝu> stack build
unknown public key OID: [1,2,643,2,2,19]
[11:39:31] <rexim> ɹǝɟılʍǝu: ну, я вот тоже не знаю такой вот public key OID
[11:40:35] <devel29a> ForNeVeR: А помоему это всего лишь плохой excuse :)
[11:46:26] <ɹǝɟılʍǝu> ForNeVeR, бгг http://www.gamedev.ru/code/forum/?id=199132&page=125#m1862
[11:47:19] <ForNeVeR> ɹǝɟılʍǝu: ну, в какой-то мере каждый из этих граждан по-своему прав.
[11:48:10] <ForNeVeR> ɹǝɟılʍǝu: а что там у вулкана с 64 битами, какие-то проблемы?
[11:48:20] <ɹǝɟılʍǝu> ForNeVeR, я пока не пробовал.
[11:48:32] <ɹǝɟılʍǝu> Вроде как раз наоборот, на 64х он работает как надо.
[11:48:34] <ɹǝɟılʍǝu> ForNeVeR, я вот про это «Все что дает 64 бита, это работа с ОЗУ памятью которая больше 3 гига. »
[11:48:54] <ForNeVeR> ɹǝɟılʍǝu: ну, тут чувак неправ очень сильно :)
[11:48:55] <ɹǝɟılʍǝu> А как же чуть более широкое слово?
[11:49:06] <ForNeVeR> Начиная с чисел, и заканчивая сутью.
[11:50:28] <kosc> Господа.
[11:50:36] <kosc> Кто-нибудь тыкал http://leenissen.dk/fann/wp/?
[11:51:42] <ForNeVeR> На линуксе, скорее всего, 32-битное адресное пространство будет 4 гига. А на винде - от 2 до 4 ГБ в зависимости от флагов бинарника и ОС.
[11:53:27] <gsomix> kosc, я не тыкал. А ты себе библиотеку для нейронных сетей ищешь?
[11:53:32] <ɹǝɟılʍǝu> ForNeVeR, сравнялки даж нашёл http://www.phoronix.com/scan.php?page=article&item=ubuntu_1404_x64&num=2
[11:53:39] <ɹǝɟılʍǝu> По перфомансу.
[11:53:46] <ɹǝɟılʍǝu> Так себе, но всё же.
[11:56:01] <ForNeVeR> На x64 регистров больше. Как чувак может говорить, что они ничего не дают?
[11:56:14] <ForNeVeR> Да если б в его 32-разрядном проце было больше регистров, он бы душу продал!
[11:56:15] <devel29a> ForNeVeR: ПРоиски сотоны же!
[11:56:24] <ForNeVeR> devel29a: ну вот видишь, точно же.
[11:56:35] <devel29a> :D
[11:56:40] <ForNeVeR> devel29a: а ты, поди, не поверил тому мудрому старцу! Да ещё и пенделей навешал!
[11:56:59] <devel29a> ForNeVeR: Ну, что ты! Я пожелал удачи и вежливо попрощался:)
[11:57:02] <gsomix> kosc, ты требования к библиотеке огласи, может я чего вспомню из рассказов знакомых. :)
[11:57:04] <devel29a> Правда-правда
[11:57:04] <ForNeVeR> А, тогда ок.
[11:57:18] <m4n71k0r> ɹǝɟılʍǝu: не тыкал? https://github.com/rustless/rustless
[11:57:41] <ForNeVeR> m4n71k0r: если честно, я не вижу смысла писать всякие веб-штуки на расте.
[11:57:50] <ForNeVeR> В моём представлении он больше для системного софта.
[11:57:59] <ɹǝɟılʍǝu> m4n71k0r, выглядит вкусно!
[11:58:41] <kosc> gsomix: я пока просто ищу, как приобщиться и ознакомиться с ИИ и нейросетями в частности.
[11:58:46] <ɹǝɟılʍǝu> );
})
})
[11:58:47] <m4n71k0r> ForNeVeR: как он может быть только для системного софта, если он убийца джавы и плюсов одновременно?)
[11:58:51] <ɹǝɟılʍǝu> Lisp-style!
[11:58:58] <ForNeVeR> m4n71k0r: э, ну конечно же.
[11:59:00] <gsomix> kosc, проще всего через питон. :)
[11:59:04] <gsomix> Или lua.
[11:59:10] <ForNeVeR> kosc: через ПРИТОН!
[11:59:10] <m4n71k0r> ɹǝɟılʍǝu: а мне не нравится, я бы посахарнее сделал
[11:59:28] <gsomix> kosc, вот тут посмотри: http://deeplearning.net/software_links/
[11:59:31] Mr.Purple вышел из конференции: Replaced by new connection
[11:59:32] Mr.Purple зашёл в конференцию
[11:59:45] <ɹǝɟılʍǝu> m4n71k0r, а у меня уже копыта чешуцца пощупать эту няшку.
[11:59:51] Mr.Purple вышел из конференции: Replaced by new connection
[11:59:52] Mr.Purple зашёл в конференцию
[11:59:52] <ɹǝɟılʍǝu> Нада чота анписать!!
[12:00:05] <gsomix> kosc, Torch для lua, Theano и кучу всего на нем -- для питона.
[12:00:07] <devel29a> ɹǝɟılʍǝu: Да успокойся ты! Может просто паразиты завелись?
[12:00:13] <kosc> gsomix: с питоном я как раз довольно неплохо знаком, спасибо.
[12:00:37] (≈^-^≈) зашёл в конференцию
[12:00:38] <gsomix> kosc, ну, тогда начни с http://keras.io/
[12:00:41] <ɹǝɟılʍǝu> devel29a, я чистый пегас!
[12:00:48] <devel29a> ɹǝɟılʍǝu: И копыта стрижешь?
[12:00:49] Mr.Purple вышел из конференции: Replaced by new connection
[12:00:51] Mr.Purple зашёл в конференцию
[12:00:51] <ɹǝɟılʍǝu> Да.
[12:00:56] <gsomix> kosc, у Keras в качестве бэкенда Theano или TensorFlow.
[12:00:58] <gsomix> Примеры есть.
[12:01:00] Mr.Purple вышел из конференции: Replaced by new connection
[12:01:01] <devel29a> Хм, ну, тогда может и не в этом дело
[12:01:01] <ɹǝɟılʍǝu> Напильником подправляю.
[12:01:02] Mr.Purple зашёл в конференцию
[12:01:53] <kosc> gsomix: выглядит очень годно, спасибо.
[12:01:56] <m4n71k0r> ɹǝɟılʍǝu: есть ещё https://github.com/Ogeon/rustful
[12:02:09] Mr.Purple вышел из конференции: Replaced by new connection
[12:02:10] Mr.Purple зашёл в конференцию
[12:02:23] <m4n71k0r> выглядит как JSON %)
[12:02:46] Mr.Purple вышел из конференции: Replaced by new connection
[12:02:47] Mr.Purple зашёл в конференцию
[12:03:18] <ɹǝɟılʍǝu> rustless... rustfull...
[12:03:24] <ɹǝɟılʍǝu> Они там прикалываются)
[12:04:07] <gsomix> kosc, а если умеешь в плюсцы, то http://caffe.berkeleyvision.org/
[12:04:33] <kosc> gsomix: умею, но не люблю. Пока пожалуй буду ковырять Keras, выглядит ну просто агонь как удобно.
[12:06:42] <kosc> Ещё и примеры такие чёткие.
[12:06:47] <kosc> ForNeVeR: чёткие же там примеры?
[12:07:03] <ForNeVeR> kosc: я до примеров не дочитал.
[12:07:28] <ɹǝɟılʍǝu> m4n71k0r, я теперь не знаю, какой из них пробовать((
[12:09:39] <gsomix> kosc, из теории смотри сначала многослойный перцептрон, а потом сразу сверточные и рекуррентные сети.
[12:09:58] <gsomix> Все остальное старое можно не смотреть.
[12:10:06] <gsomix> Ну, это те рекомендации, которые я получал от знакомых.
[12:10:13] <gsomix> Правда, нейронками я так и не занялся в итоге
[12:14:11] <ɹǝɟılʍǝu> Я когда-то занимался.
[12:14:18] <ɹǝɟılʍǝu> В универе ешшо)
[12:14:25] <ɹǝɟılʍǝu> // хотя я и щас в универе
[12:14:32] <ɹǝɟılʍǝu> Писал перцептрон!
[12:14:45] <ɹǝɟılʍǝu> И тогда-то я понял, что суть это всё матрицы)
[12:16:42] <kosc> gsomix: кстати я года 3 назад видел простой перцептрон на PHP, переписал его на питон и даже понял, как работает.
[12:19:22] <gsomix> ɹǝɟılʍǝu, kosc, да кто их не писал-то...
[12:19:47] <ɹǝɟılʍǝu> gsomix, может, попробовать ещё раз написать?
[12:19:49] <ɹǝɟılʍǝu> На Rust!
[12:20:12] <gsomix> ɹǝɟılʍǝu, думаешь интересно будет?
[12:20:17] <ɹǝɟılʍǝu> gsomix, почему нет?
[12:20:38] <ɹǝɟılʍǝu> gsomix, чему можно научить простой перцептрон?
[12:20:49] <ɹǝɟılʍǝu> Многослойный.
[12:20:56] <gsomix> ɹǝɟılʍǝu, ирисы классифицировать.
[12:21:08] <ɹǝɟılʍǝu> Ириски!
[12:22:02] <gsomix> ɹǝɟılʍǝu, просто в самом простейшем случае многослойный перцентрон -- это немного возни с матрицами да простеньких оптимизационный алгоритм.
[12:22:11] <gsomix> Я думаю, для Rust можно интереснее задачу найти.
[12:30:08] <m4n71k0r> ForNeVeR: как-то много всего и системного, и не очень https://github.com/kud1ing/awesome-rust ...
[12:30:43] <ForNeVeR> m4n71k0r: я всего лишь высказал своё мнение. Разумеется, народ пишет всё подряд :)
[12:30:47] <m4n71k0r> ого сколько батареек http://rustkit.io/
[12:32:12] <m4n71k0r> iron для rust, это как jetty для java, видимо
[12:32:20] MaXGXaM зашёл в конференцию
[12:33:41] <m4n71k0r> ɹǝɟılʍǝu: хватит даже iron для простого вебсервиса https://github.com/iron/iron
[12:36:05] <m4n71k0r> блин...
[12:36:46] <m4n71k0r> всё равно, я только через год буду раст тыкать... мне не нравится его клинописный синтаксис. Глаз спотыкается
[12:37:03] <ɹǝɟılʍǝu> А мне нравится :3
[12:37:43] <rexim> m4n71k0r: ты программировал на OCaml?
[12:38:13] <m4n71k0r> rexim: нет, я просто читал код сульцы
[12:41:19] <m4n71k0r> ɹǝɟılʍǝu: спотыкается на &
[12:41:26] <m4n71k0r> я каждый раз беру указатель
[12:41:34] <m4n71k0r> это раздражает до опизденения!
[12:41:50] <m4n71k0r> это как scanf
[12:41:55] <m4n71k0r> только всю жизнь
[12:42:16] <m4n71k0r> ɹǝɟılʍǝu: conn.execute("INSERT INTO person (name, data) VALUES ($1, $2)",
&[&me.name, &me.data]).unwrap();
[12:42:24] <m4n71k0r> что не так?
[12:42:30] <ɹǝɟılʍǝu> m4n71k0r, а давай писать враппер Vulkan на Rust?)
[12:42:52] <ɹǝɟılʍǝu> А шо не так?
[12:42:57] <m4n71k0r> он весь будет на &&&&&&&&&&&&&&&&
[12:43:04] rexim вышел из конференции
[12:43:11] <m4n71k0r> или &[]
[12:43:24] <ɹǝɟılʍǝu> бгг
[12:43:33] <ɹǝɟılʍǝu> Я понял, откуда у тебя это)
[12:43:43] <ɹǝɟılʍǝu> Как раз смотрю rust-postgres
[12:43:52] <m4n71k0r> угу
[12:44:26] <m4n71k0r> годное комьюнити у раста
[12:49:02] <gsomix> m4n71k0r, после дишного чистого/знакомого синтаксиса, наверное, совсем ад.
[12:50:11] <ɹǝɟılʍǝu> gsomix, а мне дишный кажется черезчур вылизанным.
[12:51:03] <ɹǝɟılʍǝu> О!
[12:51:13] <ɹǝɟılʍǝu> Попробую фигануть свой pastebin!
[12:51:21] <ɹǝɟılʍǝu> Есть на питоне, на js, на хаскеле.
[12:51:26] <ɹǝɟılʍǝu> Теперь будет и на rust
[12:51:29] <ɹǝɟılʍǝu> rpaste!
[12:51:54] <gsomix> Ржавая Паста.
[13:00:04] horta hell вышел из конференции: Disconnected: closed
[13:00:37] horta hell зашёл в конференцию
[13:02:03] <devel29a> gsomix: Диоксид Титана!
[13:02:50] <kosc> Ух ты
[13:02:52] <kosc> Диоксит титана.
[13:02:59] <kosc> А почему не карбид вольфрама?
[13:03:58] <devel29a> Он тяжелый как Java
[13:04:10] horta hell вышел из конференции: Disconnected: closed
[13:04:12] horta hell зашёл в конференцию
[13:04:16] <kosc> А диоксид титана лёгкий, как C?
[13:05:12] Aman зашёл в конференцию
[13:05:20] <devel29a> Очень близко, да
[13:15:44] horta hell вышел из конференции: Disconnected: closed
[13:16:17] horta hell зашёл в конференцию
[13:16:31] <ForNeVeR> Хорточка, что с тобой?
[13:16:32] <ForNeVeR> $say 13
[13:17:20] <horta hell> ForNeVeR: k-sc: а потом ругаешься на то, чтоб собрать справки о том, "как должно быть".
[13:17:31] <gsomix> Лол.
[13:17:57] <gsomix> ForNeVeR, как ты к нему ласково.
[13:18:08] <ɹǝɟılʍǝu> ForNeVeR, да они там все такие! http://www.gamedev.ru/code/forum/?id=199132&page=125#m1864
[13:19:12] <gsomix> > А всяким вученым float64 вообще не сдался, т.к. эффективнее юзать произвольную точность и забить на скорость.
[13:19:19] <gsomix> > забить на скорость
[13:19:22] <gsomix> :(
[13:19:37] dzhon зашёл в конференцию
[13:19:52] <ForNeVeR> ɹǝɟılʍǝu: оказывается, эффективнее юзать произвольную точность и забить на скорость!
[13:20:03] <ForNeVeR> Ну конечно, как я сам не догадался? Это же так эффективно!
[13:20:22] <gsomix> ForNeVeR, переписывай теперь все.
[13:20:33] <gsomix> Вученый.
[13:20:37] <ForNeVeR> :3
[13:23:50] <devel29a> ForNeVeR: Все верно! Зачем вам скорость? Спешите куда-то?
[13:24:09] <devel29a> В случае чего, подождете пару тысяч лет и все
[13:30:43] Aman вышел из конференции
[13:31:05] <gsomix> 4-1
[13:31:11] <gsomix> Человеки проигрались.
[13:31:23] <ɹǝɟılʍǝu> gsomix, лалки!
[13:32:49] Aman зашёл в конференцию
[13:33:08] <gsomix> > To comeback from the initial big mistake against Lee Sedol was mind-blowing!!!
[13:33:11] <gsomix> Интересно.
[13:35:36] Orhideous зашёл в конференцию
[13:38:11] dzhon вышел из конференции
[13:38:47] <ForNeVeR> Слава роботам!
[13:38:50] dzhon зашёл в конференцию
[13:40:43] <ɹǝɟılʍǝu> ForNeVeR, чпок!
[13:40:59] <Orhideous> Угу.
[13:42:08] <ɹǝɟılʍǝu> Orhideous, чпок!
[13:42:29] <ɹǝɟılʍǝu> > Compiling error v0.1.9
[13:45:36] <devel29a> ɹǝɟılʍǝu: Ого! Версионирование ошибок прикрутили!
[13:45:58] <ɹǝɟılʍǝu> devel29a, больше скажу
[13:45:59] <ɹǝɟılʍǝu> Compiling error v0.1.9
Build failed, waiting for other jobs to finish...
[14:02:12] <ɹǝɟılʍǝu> Опа
[14:02:22] <ɹǝɟılʍǝu> PostgreSQL 9.5.1 вышел!
[14:02:29] <ɹǝɟılʍǝu> m4n71k0r, UPSERT!
[14:02:39] <ForNeVeR> Гы.
[14:02:50] <ɹǝɟılʍǝu> http://www.postgresql.org/docs/9.5/static/release-9-5-1.html
[14:03:30] <Orhideous> Наконец-то
[14:04:19] <Orhideous> > Add GROUP BY analysis features GROUPING SETS, CUBE and ROLLUP
[14:04:26] <Orhideous> Вот это тоже надо
[14:18:14] dzhon вышел из конференции
[14:19:26] <gsomix> ForNeVeR, попробую местами заменить всякие массивы со значениями функций вот этой няшной штукой: http://www.chebfun.org/
[14:25:31] <ɹǝɟılʍǝu> gsomix, ой какая няша!
[14:33:49] dzhon зашёл в конференцию
[14:43:22] <ForNeVeR> gsomix: оно только для матлаба? :(
[14:43:36] MaXGXaM вышел из конференции
[14:44:32] <gsomix> ForNeVeR, полноценная -- да. Кто-то куда-то портировал.
[14:44:47] <gsomix> Например, на F#. Но не дописали.
[14:45:39] <gsomix> ForNeVeR, про Octave не знаю.
[14:45:43] <gsomix> Может там работает.
[14:46:11] <ForNeVeR> gsomix: ну да, я намекал на Octave, а не на более инородные платформы.
[14:46:39] <gsomix> Я могу проверить позже немного.
[14:46:49] <ForNeVeR> Даже если только для матлаба - всё равно вещь хорошая, конечно.
[14:47:02] <ForNeVeR> Там есть решалки дифуров, одобряю.
[14:47:17] dzhon вышел из конференции
[14:48:15] <gsomix> Угу. Они мне и нужны, чтобы не таскаться с массивом численного решения.
[15:01:36] rafaelrs зашёл в конференцию
[15:18:17] grouzen вышел из конференции
[15:20:58] Aman вышел из конференции: Replaced by new connection
[15:20:58] Aman зашёл в конференцию
[15:26:05] Aman вышел из конференции: Replaced by new connection
[15:26:06] Aman зашёл в конференцию
[15:31:56] Aman вышел из конференции
[15:37:31] Aman зашёл в конференцию
[15:37:55] grouzen зашёл в конференцию
[15:41:40] gsomix вышел из конференции
[15:58:48] ForNeVeR вышел из конференции: Disconnected: closed
[16:26:06] sss|zombie зашёл в конференцию
[16:27:47] dzhon зашёл в конференцию
[16:36:07] horta hell вышел из конференции: Disconnected: closed
[16:44:18] <m4n71k0r> ɹǝɟılʍǝu: ДАВНО БЛЯДЬ!
[16:44:25] <m4n71k0r> ɹǝɟılʍǝu: прости)
[16:44:30] <m4n71k0r> ещё в 9.5
[16:44:44] <m4n71k0r> ещё в том году можно было потыкать
[16:44:55] <ɹǝɟılʍǝu> Ого!
[16:46:34] Aman вышел из конференции
[17:05:15] Mr.Purple вышел из конференции
[17:16:05] dzhon вышел из конференции
[17:16:25] dzhon зашёл в конференцию
[17:32:16] <ɹǝɟılʍǝu> m4n71k0r, rust-postgres норм
[17:32:33] <ɹǝɟılʍǝu> И зрянзакции есь!
[17:33:46] portnov зашёл в конференцию
[17:36:28] <ɹǝɟılʍǝu> portnov, \0
[17:36:37] <portnov> вечер.
[17:40:54] <m4n71k0r> ɹǝɟılʍǝu: а чего нет?
[17:41:20] <ɹǝɟılʍǝu> m4n71k0r, я не знаю
[18:00:30] rexim зашёл в конференцию
[18:00:55] <rexim> Xgjrnb-xgjr!
[18:07:09] <rexim> ɹǝɟılʍǝu: ты такой активный на гитхабе стал! :)
[18:07:26] <ɹǝɟılʍǝu> rexim, омг!
[18:07:30] <rexim> оылдолдыва
[18:08:48] Minoru зашёл в конференцию
[18:09:00] <rexim> Minoru: чпок тебя в Минору!
[18:09:20] <Minoru> rexim: щекотно же!
[18:09:25] <rexim> ^_^
[18:26:04] <rexim> .ping
[18:26:05] <DeadBot> rexim: понг от тебя 0.07 секунды
[18:26:06] <rexim> .ping
[18:26:07] <DeadBot> rexim: понг от тебя 0.06 секунды
[18:26:07] <rexim> .ping
[18:26:08] <DeadBot> rexim: понг от тебя 0.06 секунды
[18:29:35] <Minoru> NB: при смене пароля на GitHub меняется также ссылка на RSS-ленту вашей активности! (На самом деле меняется token, который в ней участвует; вероятно, меняются и другие вещи, где этот token задействован)
[18:30:17] <rexim> Minoru: =*
[18:30:51] <Minoru> rexim: тебе =*
[18:31:12] <Minoru> rexim: если бы ты не сказал, что Ня активизировался на гитхабе, я бы не задумался, почему это я уже несколько дней не видел апдейтов оттуда
[18:31:16] <Minoru> и не пошёл бы выяснять!
[18:35:49] revenrof зашёл в конференцию
[18:35:51] revenrof вышел из конференции
[18:36:23] ForNeVeR зашёл в конференцию
[18:38:54] <ɹǝɟılʍǝu> ForNeVeR, окей, ты на связи!
[18:39:17] <ForNeVeR> Так точно!
[18:39:28] <ForNeVeR> Да у меня чото говнокрафты падали при старте.
[18:39:49] <ForNeVeR> Поребутал их, успел разлогиниться до падения, выйти штатно - и починились!
[18:40:13] <ForNeVeR> Надо бы уже свежих билдов где-то набрать. И чтоб можно было дебажить.
[18:41:03] <ForNeVeR> О, хорту забыл!
[18:41:44] <ForNeVeR> Вчера ещё провайдер на ночь глядя взялся чото чинить, и вообще всё вырубил :(
[18:42:10] <ForNeVeR> Но зато сегодня они таки исправили роуты, и теперь у меня пакеты до гитхаба норм ходят.
[18:42:22] horta hell зашёл в конференцию
[18:42:32] <ForNeVeR> И до хортхаба!
[18:43:28] <Minoru> а раньше не ходили, ForNeVeR?
[18:43:44] <ForNeVeR> Minoru: нет, я последнюю неделю гитхаб тягаю из VPN.
[18:44:14] <Minoru> ого!
[18:44:28] <ForNeVeR> И гитхаб, и битбукет, и ещё несколько сайтов (например, imgur).
[18:44:48] <ForNeVeR> Не, теперь починилось.
[18:45:17] <ɹǝɟılʍǝu> ForNeVeR, опять ты про говно((
[18:45:30] <ForNeVeR> ɹǝɟılʍǝu: ну прости, я не могу говорить про провайдера :(
[18:45:38] <ForNeVeR> s/говорить/не говорить/
[18:45:38] <horta hell> ForNeVeR: ɹ-ɟılʍǝu: ну прости, я не могу не говорить про провайдера :(
[18:48:31] <rexim> ForNeVeR: товарищ Форневеряка! о\
[18:48:34] <ForNeVeR> Ну и вообще, тут-то я их хвалю. Молодцы, починили.
[18:48:36] <rexim> вака
[18:52:27] <ForNeVeR> ɹǝɟılʍǝu: а, лол, ты заагрился на "говнокрафты". Прошу прощения.
[18:52:41] <ɹǝɟılʍǝu> омфг!
[18:58:38] <m4n71k0r> ɹǝɟılʍǝu: ForNeVeR бггг
[18:58:47] <m4n71k0r> ɹǝɟılʍǝu: зеркало форневера
[19:13:44] m4n71k0r вышел из конференции
[19:20:40] <rexim> Чпоке-чпоке
[19:35:45] <Minoru> Господа, я хочу обсудить решение для проблемы, которую описывал вчера
[19:36:20] * rexim сделал серьезное лицо
[19:36:35] * rexim переусердствовал
[19:36:39] <Minoru> в общем, я решил в результаты пихать ссылки на предыдущую/следующую/первую/последнюю страницы результатов, а также имя функции, которой нужно передать ссылку для получения результата
[19:36:54] <Minoru> как по-вашему, это сильно плохо?
[19:37:11] <Minoru> получается, что пользователь может чего-нибудь там подшаманить с именем функции или её аргументами
[19:39:05] <Minoru> а ещё я подсмотрел в библиотеку octokit, которую делает сам GitHub, и там у них просто есть глобальная переменная last_response, у которой можно попросить вытянуть следуюущую/предыдущую/первую/последнюю страницу
[19:39:10] <Minoru> но это совсем говно какое-то
[19:39:50] <Minoru> ну, для рубей с их GIL может и ок, но не для octo.erl :)
[19:39:52] <ForNeVeR> Minoru: я читал твои вчерашние посты, но всё равно не уверен, что правильно понял проблему.
[19:40:19] <ForNeVeR> Minoru: смотри, у тебя торчат наружу всякие "функции", типа "дай мне юзеров", "дай мне репозитории", "дай мне коммиты юзера". Так?
[19:40:22] <Minoru> ForNeVeR: я всё ещё не знаю, как описать её более кратко и понятно, так что задавай вопросы ;(
[19:40:24] <Minoru> да, так
[19:40:52] <ForNeVeR> Сейчас ты хочешь сделать запросы вида "дай мне юзеров тимы XXX, страницу вторую"
[19:40:58] <ForNeVeR> Правильно?
[19:41:42] <Minoru> есть «дай мне юзеров тимы», хочу возможность указать страницу или попросить все страницы сразу
[19:41:51] <ForNeVeR> Ага.
[19:42:02] <ForNeVeR> Вот до этого момента мне всё было понятно.
[19:42:06] <ForNeVeR> А дальше стало непонятно.
[19:42:25] <ForNeVeR> Зачем-то ты клиенту выдаёшь знание о названиях функции, какие-то HTTP (?) параметры, аргументы, каша!
[19:42:50] <Minoru> окей, давай попробую рассказать ещё раз, немного другими словами
[19:43:04] <ForNeVeR> Почему твой API не может формулироваться в том простом виде, который мы с тобой сейчас описали? "дать(юзеры тимы XXX)?страница=2"
[19:43:17] <Minoru> начнём с того, что я не могу из просьбы юзера «дай мне страницу N» сгенерировать URL, по которому эту страницу вытягивать
[19:43:38] <ForNeVeR> Так, у тебя HTTP, да?
[19:43:42] <ForNeVeR> Ну, снаружи.
[19:44:06] <ForNeVeR> То есть мы сейчас проектируем API сервиса, доступный по HTTP?
[19:44:11] <Minoru> между мной и GitHub — да, HTTP. А сам я, и клиент, меня вызывающий, на Эрланге
[19:44:23] <Minoru> нет, это я сейчас проектирую API для библиотеки
[19:44:31] <ForNeVeR> Ок, мы проектируем внутренний API, доступный из Эрланга.
[19:44:35] <Minoru> для биндингов к GitHub API
[19:44:41] <ForNeVeR> Хорошо.
[19:45:24] <ForNeVeR> Ты _должен_ генерировать URL по просьбе "дай мне страницу N".
[19:45:38] <ForNeVeR> Почему ты не можешь этого сделать? Гитхаб не умеет в пажинацию?
[19:45:58] <Minoru> Гитхаб умеет, просто URL-ы там произвольные
[19:46:05] <ForNeVeR> Поясни.
[19:47:19] <Minoru> во многих случаях для получения следующей страницы ты просто добавляешь «?page=N». Но не всегда; например, когда по коммит-логу идёшь, там в ссылках на следующий/предыдущий SHA1
[19:47:32] <Minoru> GitHub эти ссылки отдаёт в заголовке Link в своих ответах
[19:47:42] <Minoru> поэтому генерировать ничего не нужно, нужно только запомнить
[19:47:46] <ForNeVeR> Хм, вот это уже интереснее.
[19:47:53] <Minoru> и вот у меня проблема как раз с тем, куда запомнить и как вынуть
[19:48:31] <ForNeVeR> То есть у тебя просят десятую страницу истории коммитов. И чтобы отдать её, тебе нужно было запомнить предыдущие девять, потому что урлы зависят от SHA коммитов, которые ты заранее не знаешь. Верно?
[19:49:28] <Minoru> получается, что так
[19:49:37] <ForNeVeR> Хорошо.
[19:49:57] <ForNeVeR> Какое решение у тебя сейчас, чем оно не устраивает, что ты планируешь сделать, и какие возникают сложности?
[19:50:11] <ForNeVeR> Мне кажется, что проблему я пока что понял.
[19:51:11] <Minoru> сейчас библиотека игнорирует заголовок Link, а когда пользователь просит страницу N, просто добавляет в URL параметр page=N
[19:51:25] <Minoru> это даже работает, но на чём-то рано или поздно сломается
[19:51:33] <Minoru> и GitHub очень просит (в документации) так не делать
[19:51:57] <ForNeVeR> Ага, то есть эти ?page=n пока работают на всех видах запросов, но не документированы. Правильно?
[19:52:05] <Minoru> раньше планировал сделать вот так: https://github.com/sdepold/octo.erl/issues/25#issuecomment-194034085
[19:53:55] <Minoru> ForNeVeR: работают на всех поддерживаемых octo.erl видах запросов (которых всего пара :). В octo.erl документированы параметры {page, N} и {all_pages}. GitHub API никак сами URL-ы не документирует, настаивая на том, что я должен смотреть в заголовок Link и брать их оттуда (гарантируется, что там-то они правильные)
[19:54:51] <ForNeVeR> Minoru: может быть, тогда стоит поменять API octo.erl? Или ты видишь его именно в качестве вот этой кеширующей мидлвари, разбивающей информацию на страницы?
[19:55:45] <Minoru> хм, а как поменять? Сказать, что мы можем отдать либо первую страницу, либо все вместе?
[19:55:48] <ForNeVeR> Я не говорю, что следует обязательно ломать API, и я не считаю, что это стоит делать. Но это возможность надо также аргументированно рассмотреть.
[19:55:53] <Minoru> (то есть отказаться от {page, N})
[19:56:23] <ForNeVeR> Minoru: делать так же, как гитхаб. Например, принимать хэш коммита на странице, а в респонзе отдавать хэш следующего коммита.
[19:56:51] <ForNeVeR> Да, отказаться от {page, N}. Принимать {hash, X} или ещё какие-то варианты.
[19:57:32] <Minoru> а, ты предлагаешь отказаться от предоставления random access-интерфейса и оставить только методы для итерирования по результатам
[19:58:05] <ForNeVeR> Да, я предлагаю рассмотреть эту возможность.
[19:58:32] <ForNeVeR> Но было бы не очень красиво при этом сломать API всем существующим пользователям, и это также нужно понимать.
[19:59:10] <Minoru> касательно {hash, X} — мне же отдают чистый URL, к которому нужно послать запрос, а не параметр, из которого генерировать этот URL. Учитывая, что сейчас пользователь не имеет возможности сказать что-то типа «запроси мне список пользователей *вот с этого URL*» (адреса я генерирую сам, внутри библиотеки, пользователь просит только «получить список пользователей»), я не вижу смысла отдавать ему URL-ы, полученные от GitHub
[19:59:35] <ForNeVeR> Что такое "чистый урл"? Покажи такой урл.
[20:00:03] <ForNeVeR> Откуда пользователь библиотеки узнаёт урл, который тебе передаёт?
[20:01:28] <Minoru> https://api.github.com/repositories/19574870/commits?page=1
[20:01:32] <Minoru> вот тебе «чистый URL»
[20:02:10] <ForNeVeR> Откуда я узнаю, что 19574870 это flok99/rsstail?
[20:02:39] <Minoru> из заголовка Link :)
[20:02:48] <ForNeVeR> Нет, ты не понял.
[20:02:51] <ForNeVeR> Вот я юзер библиотеки.
[20:02:54] <ForNeVeR> Пишу код.
[20:03:16] <ForNeVeR> Хочу узнать ид репозитория ForNeVeR/yog-sothoth
[20:03:17] <Minoru> а как я тебе из octo:get_commits("flok99", "rsstail", [{page, 1}]) сгенерирую вышеуказанный URL? Тоже никак
[20:03:34] <ForNeVeR> Вот я и хочу узнать, как ты это делаешь!
[20:03:50] <ForNeVeR> Ну или не ты. Если не ты - то кто это делает?
[20:03:59] <Minoru> отправил запрос на https://api.github.com/repos/flok99/rsstail/commits?page=2, а там в Link вышеупомянутый адрес
[20:04:12] <ForNeVeR> Я должен сделать это сам, вручную?
[20:04:25] <ForNeVeR> Или в octo.erl есть такая фича?
[20:04:34] <Minoru> нет; я, как автор библиотеки, хочу, чтобы ты про все эти манипуляции вообще не знал
[20:04:49] <Minoru> я хочу, чтобы ты просто получил результат, а дальше имел возможность сразу попросить следующую страничку результатов
[20:05:02] <ForNeVeR> Хорошо. Так что мне позвать, чтобы из flok99/rsstail получить 19574870?
[20:05:11] <Minoru> ну, то есть, вот так:
Result = octo:get_commits(…),
Result2 = octo_pagination:get_next_page(Result)
[20:05:21] <Minoru> вот как-то так это должно со стороны пользователя выглядеть
[20:05:28] <ForNeVeR> Это текущий вариант API или предполагаемый?
[20:05:33] <Minoru> это предполагаемый
[20:05:38] <Minoru> сейчас нету никакого octo_pagination
[20:05:38] <ForNeVeR> Как текущий API решает эту проблему?
[20:05:49] <ForNeVeR> Ну, именно вот получения изначального урла.
[20:06:02] <Minoru> сейчас урлы пользователю вообще не показывают
[20:06:09] <ForNeVeR> А что показывают?
[20:06:26] m4n71k0r зашёл в конференцию
[20:06:34] m4n71k0r вышел из конференции
[20:06:37] <ForNeVeR> Вот смотри, я знаю две строки: "flok99", "rsstail". Как мне получить по ним список коммитов в существующем API?
[20:06:40] m4n71k0r зашёл в конференцию
[20:06:53] m4n71k0r вышел из конференции
[20:07:03] m4n71k0r зашёл в конференцию
[20:08:06] <ForNeVeR> Пошто ты меня за нос водишь? Я посмотрел документацию, нету там никаких "чистых урлов". У всех функций хорошие, человечные параметры!
[20:08:10] <Minoru> на самом деле никак, потому что нету сейчас возможности получить список коммитов :) Но если «экстраполировать» нынешний интерфейс, то вот так:
Result = octo:list_commits("flok99", "rsstail")
[20:08:38] <ForNeVeR> Хороший API.
[20:09:18] <ForNeVeR> А внутри он у себя там сходит сперва на https://api.github.com/repos/flok99/rsstail/commits, а потом узнает оттуда нужную ссылку и пойдёт на https://api.github.com/repositories/19574870/commits, так?
[20:09:51] <Minoru> нет, сходит по первому указанному тобой URL, оттуда ему дадут данные, оно его превратит в record и отдаст пользователю, всё
[20:09:55] <Minoru> это сейчас
[20:10:07] <m4n71k0r> ForNeVeR: пожалуйста, поделись своими соображениями на очень важный для меня вопрос http://0xd34df00d.me/logs/chat/codingteam@conference.jabber.ru/2016/03/14.html#18:58:28
[20:10:14] Mr.Purple зашёл в конференцию
[20:10:22] <Minoru> а в идеале оно ещё должно из заголовка Link прочитать, куда ему ходить за следующей страничкой результатов и запомнить это
[20:10:51] <Minoru> m4n71k0r: это мой Форневерик, я ему голову морочу! Изыди! :D
[20:11:04] <m4n71k0r> Minoru: квота у тебя протухла
[20:11:05] <ForNeVeR> Чот вас пробило вчера на длиннопосты.
[20:11:19] <ForNeVeR> Minoru: может, ему реально не стоит запоминать?
[20:11:31] <ForNeVeR> m4n71k0r: да, щас подумаю и отвечу.
[20:11:53] <m4n71k0r> ForNeVeR: да хоть завтра, не к спеху... дело очень серьёзное
[20:12:09] <ForNeVeR> m4n71k0r: ты хочешь хранить сущности, которыми оперируют плагины, в своей базе. Так?
[20:12:44] <ForNeVeR> И эти сущности принадлежат плагинам. Маловероятно, что ты заранее сможешь продумать, какие им нужны свойства и пр.
[20:13:05] <m4n71k0r> ForNeVeR: да, и желательно аудит тоже по ним... да, ты прав, заранее сложно продумать
[20:13:14] <m4n71k0r> можно сделать таблицы связей
[20:13:25] <ForNeVeR> Какие зависимости между сущностями разных плагинов?
[20:13:38] <ForNeVeR> Давай пока аудит отложим. Между остальными много ли связей?
[20:14:10] <Minoru> ForNeVeR: ну, не запоминать — криво как-то. Да, в данном случае GitHub снисходительно отвечает и по оригинальному URL, куда можно дописывать page=3, page=4 и так далее. Но все равно нехорошо! Ну и я не всю документацию прочитал ещё, может, где-то таки оно отвечает только по одному адресу, а дальше можно пройти только через адреса, которые были в Link
[20:14:31] <ForNeVeR> Minoru: не, я имею в виду, реально работать итератором.
[20:15:02] <ForNeVeR> Minoru: вот смотри, давай в первичном варианте считать, что ты хочешь сохранить старый API.
[20:15:16] <ForNeVeR> Minoru: ты можешь сам определить, например, сколько коммитов у тебя будет на твоей странице.
[20:15:48] <ForNeVeR> Minoru: у тебя такой юзер спрашивает: хочу первые сто коммитов! - и ты итерируешь страницы гитхабовского апи, пока не наберёшь сотню коммитов.
[20:15:57] <ForNeVeR> На каждый вызов итерируешь с начала, например.
[20:16:11] <ForNeVeR> Этот вариант тормозной, но рабочий в общем-то.
[20:16:23] <Minoru> но тогда пользователю нужно заранее знать, сколько он хочет коммитов
[20:16:35] <ForNeVeR> Воот!
[20:16:36] <Minoru> кроме того, он не сможет сказать, сколько вообще GitHub API готов отдать страниц
[20:16:41] <ForNeVeR> Ага.
[20:17:00] <ForNeVeR> Дальше. Предположим, наш юзер умный, и загружает у тебя коммиты паками по сто штук.
[20:17:12] <ForNeVeR> Тогда после сотого он хочет догрузить продолжение.
[20:17:27] <ForNeVeR> Ты можешь у себя это как-то оптимизировать, ну, чтоб не проходить предыдущие сто ещё раз.
[20:17:35] <ForNeVeR> И мы подошли наконец к сути вопроса :)
[20:18:03] <ForNeVeR> Ну ок, готового ответа у меня нет, конечно же.
[20:18:50] <ForNeVeR> Вот ты говоришь - кэш. Отлично.
[20:18:52] <Minoru> (кстати, на самом деле пользователь и сейчас может попросить сколько-то ответов, если добавит в параметры {per_page, 100}, например)
[20:19:19] <ForNeVeR> В кэше ты можешь в качестве ключа использовать урлы страниц.
[20:19:30] <Minoru> но не хочу
[20:19:34] <ForNeVeR> Почему?
[20:19:48] <Minoru> потому что придётся инвалидацию синхронизировать с тем, другим кешем, в котором ключ — это имя и параметры функции
[20:19:54] <ForNeVeR> Это очень удобно. Это и ключ для кэша, и способ получить страницу, если она из кэша выпала.
[20:20:02] <ForNeVeR> Зачем другой кэш?
[20:20:10] <ForNeVeR> Поясняй.
[20:20:14] <Minoru> чтобы хранить результаты
[20:20:17] <Minoru> ну вот смотри
[20:20:32] <Minoru> ты вызываешь octo:list_commits("flok99", "rsstail")
[20:20:46] <Minoru> octo.erl делает следующее:
[20:20:47] <Minoru> *
[20:20:58] <ForNeVeR> m4n71k0r: первое и самое простое, что я придумал для хорты - это у каждого плагина свой уголок в БД.
[20:21:00] <Minoru> * генерирует URL, по которому запрашивать результаты
[20:21:25] <ForNeVeR> m4n71k0r: и эта система очень хреново работает, если тебе нужно связать таблицы разных плагинов.
[20:21:51] <Minoru> * вызывает функцию, которая делает HTTP GET. Ей в ответ приходят заголовки и ответ. В заголовках есть, в частности, ETag и Last-Modified. Функция их запоминает, а тело ответа возвращает
[20:21:58] <ForNeVeR> m4n71k0r: потому, например, что невозможно упорядочить миграции между плагинами (во всяком случае, в хорте этого щас нету).
[20:22:19] <Minoru> * тело (JSON) обрабатывается (получается Erlang record), полученный record запоминается и тут же возвращается
[20:22:21] <m4n71k0r> ForNeVeR: я сольюсь пока и ещё подумаю... что-то я прихожу к выводу, что мне не плагины нужны, а натягивание бизнес-моделей на сущности... и тут уже происходит уже комбинирование каких-то поведений с сущностями, стратегии.
[20:22:22] <Minoru> это первый вызов
[20:22:25] <Minoru> теперь второй
[20:22:42] <ForNeVeR> m4n71k0r: аудит мне видится меньшей проблемой. Я шас расскажу, как мы делаем аудит, не сливайся.
[20:22:53] <ForNeVeR> m4n71k0r: если я вообще понял, чо такое аудит :)
[20:23:17] <ForNeVeR> m4n71k0r: кароч, пробовали всякие решения на нескольких проектах, и пришли к выводу, что тут нас спасёт только динамическая типизация.
[20:23:27] <m4n71k0r> ForNeVeR: =)
[20:23:43] <ForNeVeR> m4n71k0r: пишешь в базу тип записи и жысон с данными. Когда хочешь посмотреть - десериализуешь по типу и смотришь.
[20:24:03] <m4n71k0r> ну постгря умеет и ковырять жысон вроде бы
[20:24:07] <ForNeVeR> Я не шучу, это действительно лучшая идея, которую мне удалось найти, и все проекты к этому скатываются.
[20:24:13] <ForNeVeR> Да, мы юзаем эту фичу постгри.
[20:24:24] <ForNeVeR> В MSSQL мы юзаем заместо этого XML, который то же самое.
[20:24:25] <Minoru> (с теми же параметрами)
* генерируем URL
* делаем GET. Т.к. у нас есть значения ETag и Last-Modified из прошлого запроса, мы также отправляем заголовки If-None-Matches и If-Modified-Since. Допустим, что ничего на GitHub не изменилось, поэтому мы получаем 304 Not Modified. Функция возвращает не тело, а терм {ok, cached}
* наша функция видит {ok, cached} и просто возвращает запомненное ранее значение
Вот так работает кеширование сейчас
[20:24:43] <ForNeVeR> В MySQL мы просто херачим в текстовое поле, потому что а почему нет.
[20:24:56] <Minoru> я не вижу смысла кешировать Json, если мы кешируем результаты в виде record-ов
[20:25:08] <m4n71k0r> ForNeVeR: аудит...в простейшем случае.... создана сущность, изменена сущность (если это группа, то добавление и удаление в /из), сущность помечена как удалённая
[20:25:24] <ForNeVeR> m4n71k0r: ок, значит, я понял правильно.
[20:26:02] <ForNeVeR> m4n71k0r: у нас эта фигня ещё юзерам уведомлялки рассылает - мол, гля-ка, у тебя в пациенте чото поменялось.
[20:26:11] <m4n71k0r> вах
[20:26:17] <ɹǝɟılʍǝu> m4n71k0r, ForNeVeR, а плугины не должны иметь разные схемы? Шоб не сломали чего ненароком у другого или общее. Или же нужен доступ (хотя б на чтение) в остальные данные?
[20:26:22] <ForNeVeR> А ещё мы сейчас делоем СМС!
[20:26:28] <ForNeVeR> Чтобы поциенту самому тоже рассылалось.
[20:26:32] <ɹǝɟılʍǝu> СМС?
[20:26:37] <ɹǝɟılʍǝu> Кьютимарккрусейдерс!
[20:27:06] <m4n71k0r> ForNeVeR: а я делал рассылку смс в типаерп на скале, правда там полуавтоматический режим спама)
[20:27:09] <ForNeVeR> ɹǝɟılʍǝu: если доступ к остальным данным не нужен - то это идеальный кейс. В реальности (почти) всегда нужен.
[20:27:21] <m4n71k0r> только я сервисом sms.ru пользовался
[20:27:23] <ForNeVeR> m4n71k0r: не, у нас токо хорошие, добрые SMS.
[20:27:42] <ForNeVeR> Ну, например, что у тебя через час чото назначено.
[20:28:47] <ForNeVeR> m4n71k0r: можно, кстати, попробовать выделить ядерные сущности, на которые смогут ссылаться плагины. А прямую связь между плагинами запретить :(
[20:29:06] <ForNeVeR> Или сделать какие-то обобщённые таблицы связей, да. То, чего ты хочешь избежать.
[20:29:30] <ForNeVeR> На проекте для одного-крупного-банка такое было, и мне *не понравилось*.
[20:29:32] <m4n71k0r> да я их не боюсь... оно всё равно будет быстрее 1с
[20:29:49] <m4n71k0r> но это плохой путь какой-то
[20:30:01] <ForNeVeR> Я согласен.
[20:30:13] <ForNeVeR> Давай в другой день обсудим, пока что я не готов что-то ещё предложить.
[20:30:36] <m4n71k0r> я как раз ещё помулякаю на бумажках и может конкретной уже что-то появится
[20:30:52] <m4n71k0r> конкретное*
[20:31:06] <m4n71k0r> всё-таки у меня не плагины выходят...
[20:31:14] <ForNeVeR> Minoru: а тебе вот пока напоследок ещё пара мыслей. Возможно, стоит HTTP-кэш хоронить отдельно, например? Фиг с ним, с распаршенными структурами, но именно по урлам? Похоже, что у тебя урл - это как раз-таки хороший способ сериализации параметров функции.
[20:31:32] <ForNeVeR> m4n71k0r: а если не плагины - то что?
[20:32:33] <Minoru> ForNeVeR: ну вот представь, что у нас из кеша с результатами что-то выпало, а соответствующие записи из кеша с урлами мы не удалили. Нам HTTP layer возвращает {ok, cached}, а нам пользователю вернуть нечего!
[20:33:20] <Minoru> ForNeVeR: придётся ещё третий кеш вводить, с ассоциациями между записями в первом и втором кешах :)
[20:33:20] <ForNeVeR> Minoru: я настаиваю на том, что должен быть один кэш no matter what.
[20:33:38] <Minoru> ForNeVeR: о, хоть в чём-то ты меня поддерживаешь!
[20:33:49] <ForNeVeR> Minoru: инвалидация кэша - это сложная проблема. Инвалидация одного кэша в зависимости от другого - это архисложная проблема.
[20:33:53] <ɹǝɟılʍǝu> Плаг ауты!
[20:34:22] dzhon вышел из конференции
[20:34:37] <ForNeVeR> Можешь мне поверить, я делал как-то раз волшебную хайлоад локфри кэшировалку с когерентностью и обобщёнными зависимостями кэш-айтемов друг от друга.
[20:34:50] <ForNeVeR> (каждое слово правда, это не рандомный набор базвордов)
[20:34:50] dzhon зашёл в конференцию
[20:35:05] <ForNeVeR> Дебажили мы её, наверное, потом целый год :)
[20:35:32] <Minoru> ForNeVeR: ну да, я помню про две сложные проблемы в информатике :) Поэтому не хочу даже лезть в синхронизацию кешей.
[20:35:35] <ForNeVeR> Ну, в смысле, она работала сразу, но работала не идеально, и несколько раз из-за неё ронялась вся наша хайло-система.
[20:35:54] <Minoru> на самом деле у меня сейчас таки случилось прозрение и мне начало казаться, что URL в качестве ключа в кеше даже проще, чем то, что есть сейчас
[20:36:00] <ForNeVeR> Несколько тыщ машин такие пых-пых - и нету кэша, нету когерентности, нету сервера.
[20:36:14] <ForNeVeR> Скучаю по тем временам :)
[20:36:25] <Minoru> но, чёрт подери, все равно придётся в результат пихать также имя функции, которую нужно вызвать, чтобы этот URL превратить в результат
[20:36:48] <ForNeVeR> Minoru: у тебя же динамическая типизация! Храни урл и сразу результат.
[20:36:48] <Minoru> тогда пользователь сможет писать octo_pagination:get_next_page(Result)
[20:36:59] <rexim> Minoru: ой!
[20:37:02] <rexim> Minoru: а я чпок ._.
[20:37:12] <ForNeVeR> А, вот оно чо, ты хошь единую функцию для пажинации всего.
[20:37:18] <Minoru> хочу!
[20:37:19] <ForNeVeR> Да, тут надо подумать.
[20:37:40] <ForNeVeR> Можно юзера заставить туда передавать функцию, которой он желает парсить.
[20:38:00] <ForNeVeR> Хотя это тупо. Зачем, если библиотека и так это знает?
[20:38:40] <Minoru> внимание, гениальная идея incoming!
[20:39:03] <Minoru> Result = octo:list_commits("flok99", "rsstail"),
Result2 = octo:list_commits({next_page, Result})
[20:39:36] <ForNeVeR> Хорошая идея.
[20:39:53] dzhon вышел из конференции
[20:40:00] <ForNeVeR> Ладно, я в гибернацию. Надо нейросеть восстановить.
[20:40:08] <rexim> ForNeVeR: споки!1
[20:40:10] <rexim> овылоадлыв
[20:40:11] <rexim> ыолфыв
[20:40:44] <Minoru> ForNeVeR: ок, спасибо за обсуждение! Ночи тебе.
[20:42:52] <ɹǝɟılʍǝu> rexim, 0_о
[20:43:09] <rexim> ɹǝɟılʍǝu: о_0
[20:44:10] <m4n71k0r> ForNeVeR: policy какие-то, правила комбинирования алгоритмов работы с сущностями + кастомизируемые атрибуты, которые используются этими правилами. Оверинжиниринг, ничего хорошего. Если взять Бензоколонку или Косметический салон, то Клиентам будут оказываться Услуги, затрачиваться Материалы и будут какие-то Параметры-Шаблоны Услуг, которые будут описывать, сколько материалов тратится итд и у Услуг будет стоимость, у Материалов тоже. Если какая-то Библиотека, то тут Посетитель/Читатель (Клиент), Книга (Материал), услуга одна/две, приход/расход условный, если речь идёт о Посетителях... если Магазин, то тут никаких услуг, а Товар... почти везде есть постоянные клиенты, где-то есть рекламные акции итд... В общем, даже если тут в некоторых местах будет одинаковое поведение, а сущности можно притянуть за уши, то
[20:44:20] <m4n71k0r> блин)
[20:44:24] <m4n71k0r> ладно)
[20:44:36] <rexim> То чувство, когда случайно отправил письмо не дописав...
[20:44:50] <Minoru> m4n71k0r: теперь твоя квота протухла, мвахахах!
[20:44:56] <m4n71k0r> в общем, меня ещё муня от этого отговаривал
[20:45:51] <m4n71k0r> rexim: а как ваш поксоренный язык называется?
[20:45:53] <ɹǝɟılʍǝu> От чего?
[20:46:02] <m4n71k0r> ɹǝɟılʍǝu: от оверинжиниринга
[20:46:07] <rexim> m4n71k0r: ECL?
[20:46:32] <m4n71k0r> спасибо шо не SpEL
[20:46:40] <rexim> Язык тесткейзов для RCPTT
[20:46:40] <m4n71k0r> rexim: как-то иначе
[20:46:44] <rexim> Полностью наш язык
[20:46:48] <rexim> Разработанный с нуля
[20:46:50] <m4n71k0r> на фэ начинается
[20:46:57] <rexim> Хз
[20:46:58] <m4n71k0r> или то не ваш?
[20:47:08] <rexim> А
[20:47:10] <rexim> Фантом шоле?
[20:47:12] <rexim> Нет не наш
[20:47:15] <m4n71k0r> а, ок
[20:47:15] <rexim> Просто упарывались когда-то
[20:47:22] <m4n71k0r> он труп?
[20:47:25] <rexim> Да
[20:47:37] <ɹǝɟılʍǝu> m4n71k0r, давай сделать свой язык
[20:47:42] <rexim> Не, ну чуваки, которые его создали, его используют
[20:47:47] <rexim> Они ж его для себя создавали
[20:47:53] <rexim> А больше он никому и не нужен
[20:48:11] <m4n71k0r> ɹǝɟılʍǝu: в нём будут отступы в три пробела?
[20:48:17] <ɹǝɟılʍǝu> m4n71k0r, сука(
[20:48:21] <m4n71k0r> гггг
[20:48:38] <Minoru> а что такое с Ня и тремя пробелами?
[20:48:44] <m4n71k0r> гггг
[20:48:49] <rexim> Питон?
[20:48:57] <ɹǝɟılʍǝu> Всё.
[20:49:03] <rexim> Хм...
[20:49:03] <m4n71k0r> если бы питон, то Ня нас порешил бы
[20:49:08] <rexim> Лол
[20:49:09] <rexim> :)
[20:49:19] <ɹǝɟılʍǝu> Просто внутрикорпоративный штандарт такой: 3 пробела.
[20:49:22] <ɹǝɟılʍǝu> ХЫЗЫ почему.
[20:49:25] <rexim> Гы
[20:49:27] <rexim> Забавно
[20:49:28] <m4n71k0r> ггггг
[20:49:39] <rexim> Для экономии места видимо
[20:49:51] <m4n71k0r> я ещё ж спросил, почему не 3.14 пробела
[20:50:03] <rexim> Кстати, такая мотивация была на одном из наших проектов, чтобы юзать табы.
[20:50:08] <rexim> Мол на диске места меньше.
[20:50:20] <m4n71k0r> о как
[20:50:22] <ɹǝɟılʍǝu> А вот это хуитка.
[20:50:42] <ɹǝɟılʍǝu> Полетел я домой!
[20:50:48] <rexim> ɹǝɟılʍǝu: удачи!
[20:52:34] <m4n71k0r> а где гсомикс, а то у меня вопрос про учёных...
[21:06:37] (≈^-^≈) вышел из конференции
[21:16:29] <rexim> m4n71k0r: http://www.youtube.com/watch?v=R3LOSdO4Mqk
[21:21:47] <rexim> Я что-то весь день так жрать хочу...
[21:21:51] <rexim> :(
[21:23:33] Владик Лозинский зашёл в конференцию
[21:23:44] <Владик Лозинский> rexim, g
[21:23:54] Владик Лозинский вышел из конференции
[21:26:15] <m4n71k0r> Владик меня раздражает немного
[21:26:30] <m4n71k0r> пришёл - херню спросил - ушёл
[21:26:44] <rexim> m4n71k0r: я считаю его пора забанить.
[21:27:34] <m4n71k0r> rexim: я мембера снял у двух его акков
[21:27:47] <rexim> Хорошо.
[21:28:02] <rexim> Только Форневер опять может дать :(
[21:28:08] <m4n71k0r> хм, у него оказалось тут два акка и оба замемберённые...
[21:28:14] <m4n71k0r> за что хоть?)
[21:28:21] <rexim> Яхз
[21:28:35] <rexim> Каким-то образом ему удалось нашего старину обмануть :(
[21:28:37] <Minoru> Форневер — это какой-то любопытный персонаж, противодействующий модераторскому составу Цодингтима? :)
[21:28:51] <rexim> Minoru: я ничего не понял.
[21:28:52] <m4n71k0r> Minoru: просто он сам малолетка
[21:28:58] <rexim> Ладно
[21:29:01] <m4n71k0r> Minoru: вот и мемберит малолеток
[21:29:15] ≈(^o^)≈ зашёл в конференцию
[21:29:16] <Minoru> rexim: ну, просто так выходит, что Форневер что-то такое творит, с чем потом модераторы несогласны, вот я и шучу
[21:29:25] <Minoru> m4n71k0r: а, ну всё ясно тогда!
[21:29:46] <Minoru> rexim: а у тебя точно всё хорошо? Ты ноут добровольно отдал?
[21:29:58] <rexim> Minoru: у меня складывается ощущение, что ты Форневера противопоставляешь модераторам не смотря на то, что он тоже является модератором.
[21:30:01] <rexim> Это странно звучит
[21:30:10] <rexim> Minoru: да, добровольно.
[21:31:07] <Minoru> rexim: это всё шутки ради! Я его ценю и люблю, конечно же
[21:31:33] <rexim> Minoru: а, ну хорошо.
[21:31:41] grouzen вышел из конференции
[21:32:29] gsomix зашёл в конференцию
[21:35:09] <m4n71k0r> rexim: ща я тебя блендеру противопоставлю! >:
[21:35:43] <m4n71k0r> .time rexim
[21:35:44] <DeadBot> m4n71k0r: Вт. марта 15 23:39:56 NOVT 2016
[21:36:01] <gsomix> Утро.
[21:37:15] <m4n71k0r> gsomix: утро, вот скажи, почему во всём мире так мало учёных, количество женщин-учёных вообще катастрофически мало?
[21:37:53] <m4n71k0r> это такое неблагодарное дело, что ли?(
[21:39:03] <gsomix> m4n71k0r, а сколько их? Я цифр даже не знаю. .__.
[21:41:13] <m4n71k0r> gsomix: что-то около 12 миллионов
[21:42:06] <m4n71k0r> ну там экстраполяция
[21:42:36] <gsomix> m4n71k0r, мне всегда казалось, что выдающихся мало. А обычных научных работников как в других профессиях со схожими требованиями по образованию, например.
[21:42:47] <m4n71k0r> я про обычных даже
[21:43:10] <m4n71k0r> выдающихся вообще сотни
[21:43:19] <m4n71k0r> две
[21:43:42] <rexim> gsomix: http://www.youtube.com/watch?v=R3LOSdO4Mqk
[21:43:52] <m4n71k0r> rexim: вот что это?
[21:44:01] <m4n71k0r> rexim: я не понял посыла видео(
[21:44:08] <rexim> пиздец...
[21:44:08] <m4n71k0r> он рукой бамкает об стол
[21:44:16] <rexim> m4n71k0r: и зачем ты его вообще пытался понять?
[21:44:19] <rexim> 9_9
[21:44:40] <m4n71k0r> rexim: ну я везде смысл ищу
[21:44:40] <rexim> Такие вещи ни в коем случае нельзя понимать!
[21:44:47] <rexim> Их нужно смотреть с открытам сердцем!
[21:44:48] <m4n71k0r> даже в поведении моего кота
[21:45:12] <m4n71k0r> rexim: если я открою сердце, то везде будет кровища!
[21:45:19] <m4n71k0r> я проверял!
[21:45:43] <m4n71k0r> ты говоришь страшные вещи!
[21:46:33] <m4n71k0r> посмотрю лучше https://www.youtube.com/watch?v=KYlCpLjtzqs
[21:46:41] <rexim> m4n71k0r: ваша кровь меня пугает меньше, чем ваша банальность...
[21:47:05] <rexim> Хм...
[21:47:07] <rexim> Сорри
[21:47:13] <rexim> Что-то я злой опять
[21:47:15] <rexim> Надо поесть
[21:47:19] <m4n71k0r> да, поешь
[21:47:26] <m4n71k0r> а то нарвёшься на меня злого)
[21:47:35] <rexim> Ути-пути
[21:47:40] <m4n71k0r> хуюти)
[21:50:01] <gsomix> m4n71k0r, википедия говорит, что научных работников в USA примерно 79 на 10000 работающих.
[21:50:18] <gsomix> Надо бы еще с чем-нибудь сравнить.
[21:51:06] <m4n71k0r> в америках плотность учёных побольше будет
[21:51:33] <gsomix> Да.
[21:51:39] <gsomix> В нигерии поменьше.
[21:51:59] <rexim> Давайте сравним плотность негров в Америке и Нигерии
[21:52:13] <Minoru> rexim: про «нельзя понимать» прямо в рамочку и на стену :)
[21:52:27] <rexim> Minoru: ты это посмотрел чтоли?
[21:52:28] <rexim> Блин!
[21:52:37] <rexim> Забыл предупредить, что опасно для мозга :(
[21:52:38] <Minoru> rexim: нет, я только твою фразу прочёл
[21:52:40] <rexim> Я же обещал тебе!
[21:52:42] <rexim> А, ну ок
[21:52:43] <rexim> Фух!
[21:52:50] <m4n71k0r> ничего не опасно
[21:52:52] <Minoru> rexim: всё хорошо! ^_^
[21:56:03] <rexim> m4n71k0r: сейчас макарошек сварю
[21:57:34] <gsomix> m4n71k0r, ну, даже если принять на веру, что их слишком мало, то можно объяснить. В одинх странах это или слишком непопулярная профессия, в других -- сложно получить позицию из-за требований. Ну, и всегда есть проблема, что ты не добъешься никакого успеха, плюнешь и уйдешь перекладывать бумажки в офис.
[21:57:51] <ɹǝɟılʍǝu> gsomix, rexim m4n71k0r https://youtu.be/c7fP9q_LyDc
[22:00:22] <m4n71k0r> ɹǝɟılʍǝu: ЭТО
[22:00:31] <m4n71k0r> ЭТО ТАК ПРАВДИВО!
[22:00:41] <ɹǝɟılʍǝu> ForNeVeR, ↑
[22:00:46] <m4n71k0r> документальный фильм + шиза)
[22:00:54] <ɹǝɟılʍǝu> В тему шизы https://www.youtube.com/watch?v=W1W_q_0RplA
[22:01:04] <m4n71k0r> gsomix: а ещё мне интересно, почему девушки не топают в науку
[22:01:13] <gsomix> m4n71k0r, с женщинами-учеными, мне кажется, такая же ситуация как и с женщинами-программистами.
[22:01:16] <ɹǝɟılʍǝu> m4n71k0r, а как же моя пегасиха?
[22:01:50] Mr.Purple вышел из конференции
[22:02:22] <m4n71k0r> ɹǝɟılʍǝu: хм
[22:02:34] <m4n71k0r> ɹǝɟılʍǝu: я её не знаю, она учёный?
[22:02:41] <ɹǝɟılʍǝu> m4n71k0r, она хочет быть.
[22:02:59] <m4n71k0r> ɹǝɟılʍǝu: вот у нас Маша работает, она матанолог
[22:03:07] <m4n71k0r> с нами в команде
[22:03:15] <ɹǝɟılʍǝu> m4n71k0r, хорошо ж
[22:03:18] <m4n71k0r> да
[22:03:32] <m4n71k0r> программист и учёный
[22:04:43] <ɹǝɟılʍǝu> m4n71k0r, а вот тут клип годный https://www.youtube.com/watch?v=Y-kWmmuDeak
[22:05:43] Orhideous вышел из конференции: Комп’ютер присипляється
[22:06:13] rexim вышел из конференции
[22:17:29] Mr.Purple зашёл в конференцию
[22:23:44] <gsomix> m4n71k0r, во всяких биологиях да медицинах должно больше девушек-ученых быть.
[22:37:33] <ɹǝɟılʍǝu> В соц. науках их полно.
[22:37:40] <ɹǝɟılʍǝu> В педагогике. // хотя это не наука.
[22:52:10] <Mr.Purple> m4n71k0r: и во что она умеет?
[23:00:53] eternastudento зашёл в конференцию
[23:14:43] portnov вышел из конференции
[23:18:20] Orhideous зашёл в конференцию
[23:21:29] Mr.Purple вышел из конференции
[23:30:43] gsomix вышел из конференции: This participant is kicked from the room because he sent an error presence: recipient-unavailable
[23:44:20] <Minoru> ɹǝɟılʍǝu: https://hackage.haskell.org/package/clash-ghc
Powered by freQ Powered by Python Valid XHTML 1.0 Transitional Valid CSS!