Home
Programming
programming@conference.jabber.ru
Понедельник, 13 июня 2016< ^ >
ForNeVeR установил(а) тему: # make peace
| match subject with
| Если вы не знаете с чего начать общение -> некоторые советуют прочесть http://goo.gl/jkcH5R
| логи -> http://chatlogs.jabber.ru/programming@conference.jabber.ru/
| Список картинок за предыдущие дни -> http://jpeg.catfeed.net
| Стерхи -> http://caps.catfeed.net
| Цитаты больше 4х строк -> на пастбин
| p@cjr -> дОбыча радия since Mon Sep 17 00:00:00 2001
| перед тем, как спросить -> почитайте http://mywiki.wooledge.org/XyProblem
| Войс -> просить у модераторов/админов
| В конференцию требуется -> штатный биолог, юрист, бухгалтер и врач (можно разные люди)
| _ -> Need more (та, чьё имя нельзя называть)-born packages and people!;;
Конфигурация комнаты
Участники комнаты

GMT+3
[00:03:28] m4n71k0r вышел(а) из комнаты
[00:04:31] Аман вошёл(а) в комнату
[00:12:13] Аман вышел(а) из комнаты
[00:19:48] eaeee вошёл(а) в комнату
[00:30:14] смекайло вышел(а) из комнаты
[00:44:26] olgZZZ вышел(а) из комнаты
[00:47:21] махт хекп вышел(а) из комнаты
[01:24:44] rexim вышел(а) из комнаты
[02:11:05] eaeee вышел(а) из комнаты
[02:41:30] дырдырдыр вошёл(а) в комнату
[02:46:07] <дырдырдыр> фигасе народу
[02:55:49] <дырдырдыр> "Заходят веган, вайпер и тренер по кроссфиту в бар, а бармен им: Запишитесь на мой стартап-акселератор!"
[03:26:36] дырдырдыр вышел(а) из комнаты
[05:19:21] kmo_3gecb вошёл(а) в комнату
[05:36:49] ForNeVeR вышел(а) из комнаты: Disconnected: Replaced by new connection
[05:36:49] ForNeVeR вошёл(а) в комнату
[06:41:47] kmo_3gecb вышел(а) из комнаты
[06:43:40] kmo_3gecb вошёл(а) в комнату
[07:31:04] Mr.Purple вошёл(а) в комнату
[07:32:14] rexim вошёл(а) в комнату
[07:32:51] <Mr.Purple> утр
[07:49:42] <Mr.Purple> https://forumlocal.ru/user/upload/file572003.jpg
[07:54:19] ForNeVeR вышел(а) из комнаты
[07:54:23] ForNeVeR вошёл(а) в комнату
[07:57:06] Mr.Purple вышел(а) из комнаты
[07:57:20] Mr.Purple вошёл(а) в комнату
[08:24:48] смекайло вошёл(а) в комнату
[08:49:06] <ForNeVeR> ħ: слышь, сюда иди!
[09:10:26] kmo_3gecb вышел(а) из комнаты
[09:19:16] rexim вышел(а) из комнаты
[09:28:02] portnov вошёл(а) в комнату
[09:28:41] <portnov> утро.
[09:29:00] <portnov> sulci: а где все?
[09:29:03] <sulci> portnov: я не много опиума для этого синтаксиса DSL :3
[09:41:23] ħ вошёл(а) в комнату
[09:44:56] <ħ> ForNeVeR: чо?
[09:55:13] <portnov> http://vkup.livejournal.com/1243083.html старый анекдот, но хороший.
[09:55:18] <portnov> sulci: а давайте просто бухать?
[09:55:21] <sulci> portnov: а ты – 50 км я не пользоваться
[09:56:13] ħ вышел(а) из комнаты
[10:03:47] <portnov> https://img-fotki.yandex.ru/get/15574/74257169.108f/0_e4426_5fcf9bbb_orig типичный гервь.
[10:04:12] <Mr.Purple> indeed, sir
[10:06:39] <portnov> http://ic.pics.livejournal.com/shark_evil/45464495/1244861/1244861_original.jpg
[10:06:49] <ForNeVeR> ħ: эй, куда?..
[10:06:55] <ForNeVeR> ħ: сюда иди, слышь!
[10:15:03] rexim вошёл(а) в комнату
[10:32:19] gr_buza@arbeiten вошёл(а) в комнату
[11:19:40] ermine вошёл(а) в комнату
[11:29:49] ħ вошёл(а) в комнату
[11:29:58] <ħ> ForNeVeR: ты чо буянишь?
[11:30:30] <ForNeVeR> ħ: как ты объяснишь вот это? https://github.com/NixOS/patchelf/blob/master/src/patchelf.cc#L599-L625
[11:31:20] <ħ> я вообще хз
[11:31:24] <ħ> это какой-то никсос
[11:33:07] <ħ> ET_DYN это когда position-independent code что-ли?
[11:33:31] <ForNeVeR> Я вот у тебя и хотел спросить.
[11:33:40] <ħ> Ну я не знаю
[11:33:48] <ħ> gr_buza@arbeiten: ты как? поправился?
[11:34:09] gr_buza@arbeiten вышел(а) из комнаты
[11:34:13] gr_buza@arbeiten вошёл(а) в комнату
[11:41:09] Аман вошёл(а) в комнату
[11:48:27] olgZZZ вошёл(а) в комнату
[11:49:39] Mr.Purple вышел(а) из комнаты
[11:49:46] Mr.Purple вошёл(а) в комнату
[11:52:33] Аман вышел(а) из комнаты
[12:02:26] gr_buza@arbeiten вышел(а) из комнаты: Replaced by new connection
[12:02:28] gr_buza@arbeiten вошёл(а) в комнату
[12:44:24] rexim вышел(а) из комнаты
[12:45:25] <gr_buza@arbeiten> ħ: местами, ага
[12:45:28] <gr_buza@arbeiten> спасибо :)
[12:46:05] <ħ> хорошо тебе
[12:50:31] <gr_buza@arbeiten> да не очень, пропустил марафон, подвёл команду
[12:50:45] <ħ> марафон по бегу или по ЧГК?
[12:50:51] <gr_buza@arbeiten> чгк
[12:50:53] <ħ> а бывает ЧГК на бегу?
[12:50:54] <gr_buza@arbeiten> 24-часовая игра
[12:50:56] <ħ> ого
[12:50:58] <gr_buza@arbeiten> :)
[12:51:01] <ħ> это же ебнуться можно
[12:51:02] <sulci> ħ: не болтай глупостей как малолетка!
[12:51:03] <gr_buza@arbeiten> да
[12:51:10] <gr_buza@arbeiten> в конце эффекты именно такие
[12:51:32] <gr_buza@arbeiten> .wz udtr
[12:51:33] <sulci> gr_buza@arbeiten: Нет такого аэропорта.
[12:51:34] <gr_buza@arbeiten> .wz ustr
[12:51:36] <sulci> gr_buza@arbeiten: Station name not available - 2016.06.13 0930 UTC / thunder; Cumulonimbus clouds observed, 21°C / 69°F, humidity: 56%, pressure: 29.50 in. Hg (0999 hPa), wind: from the ESE (110 degrees) at 20 MPH (17 KT), visibility: greater than 7 mile(s)
[12:51:46] <gr_buza@arbeiten> sulci: чо тандер-то, дождь вовсю
[12:51:48] <sulci> gr_buza@arbeiten: всё чинится сервер
[12:52:01] <gr_buza@arbeiten> sulci: и visibility нихрена не 7 миль
[12:52:02] <sulci> gr_buza@arbeiten: она, — везде ж-па — разобрать невозможно поменять
[12:52:17] <ħ> посоны
[12:52:19] <ħ> а толстовка
[12:52:23] <ħ> имеет отношение к Тослову?
[13:01:20] <portnov> тословка?
[13:01:45] <portnov> gr_buza@arbeiten: это вы где там угораете?
[13:02:42] <gr_buza@arbeiten> Тюмень
[13:02:48] <gr_buza@arbeiten> приезжай
[13:02:52] <gr_buza@arbeiten> ну, в следующем году :)
[13:03:06] <portnov> рассмотрим :)
[13:25:57] <ħ> господа
[13:26:07] <ħ> кто-нибудь помнит вообще как в постгресе создавать пользователя и базу данных?
[13:26:16] <ħ> я по глупости своей это так и не автоматизировал
[13:26:20] <portnov> бгы
[13:26:26] <ħ> там какая-то такая ебанина
[13:26:27] <sulci> ħ: не болтай глупостей как малолетка!
[13:26:33] <ħ> sudo -u postgres bash
[13:26:35] <portnov> ħ, http://eax.me/postgresql-install/
[13:26:37] <ħ> чо-то там такое
[13:26:47] <portnov> psql -U postgres
[13:27:10] <gr_buza@arbeiten> createdb, createuser
[13:27:11] <ħ> так не
[13:27:14] <ħ> там же это
[13:27:20] <ħ> авторизация через а ля SASL
[13:27:23] <gr_buza@arbeiten> да, там консольные команды
[13:27:24] <ħ> но не SASL а через жопу
[13:27:24] <sulci> ħ: не болтай глупостей как малолетка!
[13:27:31] <gr_buza@arbeiten> оно настраиваемо, на самом деле
[13:27:33] <ħ> нужно чтобы процесс psql был от имени постгреса
[13:27:40] <gr_buza@arbeiten> можно через жопу, а можно не обязательно
[13:27:40] <sulci> gr_buza@arbeiten: не болтай глупостей как малолетка!
[13:28:34] <portnov> >> говорят в космос теперь можно слетать на одну зарплату!
— а на пол-зарплаты?
— ну тогда только в одну сторону.
[13:28:40] <ħ> ггг
[13:28:51] <gr_buza@arbeiten> да не, можно будет и обратно
[13:28:54] <gr_buza@arbeiten> но без защиты
[13:28:57] <gr_buza@arbeiten> :)
[13:29:29] <ħ> а как ты обратно полетишь то?
[13:29:47] <portnov> спрыгнуть со станции
[13:29:53] <portnov> оттолкнуться от неё вниз только
[13:30:02] <ħ> не поможет же
[13:30:04] <portnov> пепел авось долетит до поверхности
[13:31:11] <ħ> я хочу чтобы мне systemd unit создавал базу данных в постгресе
[13:31:14] <ħ> вот чего я хочу
[13:32:06] <portnov> гм
[13:32:18] <portnov> на каждый запуск по базе?
[13:32:31] <ħ> хм
[13:33:58] <ħ> ну я сделаю CREATE DATABASE IF NOT EXISTS
[13:39:28] gr_buza@arbeiten вышел(а) из комнаты
[13:39:30] gr_buza@arbeiten вошёл(а) в комнату
[13:50:59] rexim вошёл(а) в комнату
[13:54:14] olgZZZ вышел(а) из комнаты
[13:56:05] махт хекп вошёл(а) в комнату
[13:56:57] m4n71k0r вошёл(а) в комнату
[13:57:58] gr_buza@arbeiten вышел(а) из комнаты
[14:21:02] rexim вышел(а) из комнаты
[14:25:24] <portnov> sulci: расскажи чонить
[14:25:26] <sulci> portnov: длинные труднозапоминаемые
[14:25:39] chaser_andrey вошёл(а) в комнату
[14:35:42] Mr.Purple вышел(а) из комнаты
[14:53:27] Mr.Purple вошёл(а) в комнату
[14:54:32] rexim вошёл(а) в комнату
[14:54:59] <ħ> посоны
[14:55:02] <ħ> почему вас так мало осталось?
[14:55:07] <ħ> где весь двидж?
[14:55:24] <ħ> где все умные парни?
[14:59:43] <Mr.Purple> пришли к успезу
[15:09:13] gr_buza@arbeiten вошёл(а) в комнату
[15:12:00] <ForNeVeR> А я чото ещё не пришёл.
[15:12:36] <ħ> ты просто не заметил
[15:12:43] <ħ> и продолжил писать код
[15:19:07] <махт хекп> > The default (i.e., generated) default constructor default constructs each member.
[15:20:59] <Mr.Purple> ехал грека греку через греку
[15:22:36] <махт хекп> д
[15:23:03] <махт хекп> грекал грека через греку
[15:31:24] <ħ> посоны
[15:31:31] <смекайло> посоны
[15:31:33] <ħ> а бывает ли база данных
[15:31:34] <смекайло> я шатал миграции
[15:31:38] <ħ> из которой нельзя ничего удалить?
[15:31:54] <смекайло> blockchain
[15:32:14] <ħ> хм
[15:32:31] <ħ> ну нет
[15:32:34] <ħ> у меня есть просто объекты
[15:32:42] gr_buza@arbeiten вышел(а) из комнаты
[15:32:46] <ħ> ну считай документы JSON
[15:32:46] gr_buza@arbeiten вошёл(а) в комнату
[15:32:50] <ħ> я их кладу просто в базу
[15:32:54] <ħ> и хочу мочь их там найти
[15:33:00] <смекайло> а если какое-то поле документа устанавливается в null?
[15:33:01] <ħ> но считаю что удалить их оттуда нельзя
[15:33:08] <смекайло> т.е. если у документа есть поддокумент
[15:33:08] <ħ> не
[15:33:15] <ħ> вообще нельзя редактировать
[15:33:27] <ħ> вот объект как он был записан
[15:33:31] <ħ> так навсегда там и остается
[15:33:34] <смекайло> ну, берёшь PostgreSQL, запрещаешь там UPDATE и DELETE, и всё
[15:33:43] <ħ> это всё понятно
[15:34:08] <ħ> но возможно я получу какие-то дополнительный бонус, запретив эти операции с точки зрения кап-теорем и вот этого всего
[15:35:32] <смекайло> вообще, вполне возможно, что бонус таки будет, потому что обычно самый гемор - в синхронизации изменений
[15:35:52] <смекайло> а если ты не увидишь добавленный объект в течение N секунд после добавления, то это обычно не очень страшно
[15:35:57] <смекайло> так что данные можно круто закешировать
[15:36:54] <смекайло> без версионирования, транзакций, распределённых ID, и прочей хрени
[15:37:15] <смекайло> я думаю, что пацаны должны были уже что-то такое сделать, по-этому ищи
[15:37:53] <Mr.Purple> я думаю, что надо надо сходить за мороженкой
[15:37:53] <смекайло> у меня вот другая проблема: миграции для БД - говнище лютое, приходится их вручную писать
[15:38:14] <смекайло> в современном мире хипстеры не придумали ничего, чтобы автоматизировать нормально миграции
[15:38:27] <смекайло> это же выпиющий гемор
[15:38:30] <смекайло> ну, э
[15:38:37] <смекайло> это не проблема, я просто поныться пришёл
[15:39:38] <ForNeVeR> смекайло: придумали же. Миллион всякого.
[15:39:52] <ħ> ForNeVeR: и ничего не работает на 100%
[15:39:54] <ForNeVeR> Мы вот юзаем Flyway и Liquibase для жабы.
[15:39:57] <ForNeVeR> Отлично работает.
[15:40:04] <ħ> я как-то на рубях накатывал миграции
[15:40:05] <ħ> там это
[15:40:16] <ħ> вопиющий пиздец в том, что mysql например при alter table коммитит транзакцию
[15:40:17] <sulci> ħ: не болтай глупостей как малолетка!
[15:40:19] <Mr.Purple> питоносаут не забудьте
[15:40:19] <ForNeVeR> Для дотнетика у нас есть EF Enable-Migrations и FluentMigrator. Тоже очень неплохие инструменты.
[15:40:22] <ħ> и когда миграция разваливается
[15:40:33] <ForNeVeR> ħ: так это в MySQL проблемы. А что ты с этим предлагаешь делать-то?
[15:40:49] <ħ> предлагаю пусть раби тогда сам откатывает, если хочет mysql
[15:41:04] <ForNeVeR> ħ: и, кстати, мне кажется, что liquibase умеет эти ситуации хорошо разруливать - в частности, дропать такие вот таблицы из недонакаченной миграции.
[15:41:56] <смекайло> ну вот проблема: формат данных внутри колонки изменился, и их нужно вручную конвертить
[15:42:03] <смекайло> особенно говёно, когда там внутри JSON
[15:42:06] <ħ> хм
[15:42:09] <ħ> кстати
[15:42:14] <ħ> смекайло меня навел на мысль
[15:42:14] <ForNeVeR> Ну да, это тяжёлый случай.
[15:42:17] <ħ> CouchDB так устроен
[15:42:25] <ħ> там изменения объекта ничего не изменяют
[15:42:26] <смекайло> вот у меня щас JSON
[15:42:29] <ħ> а записывают новую версию
[15:42:34] <смекайло> это во всех БД так
[15:42:39] <ħ> не не
[15:42:40] <ForNeVeR> смекайло: и каких, собственно, средств тебе бы хотелось для организации такого рода миграций?
[15:42:43] <ħ> там это прямо видно
[15:42:56] <ħ> т.е. ты можешь по версиям ходить
[15:43:12] <смекайло> ForNeVeR: да я понимаю, что это вообще сложная проблема, просто поныться пришёл
[15:43:28] <ForNeVeR> Я уверен, что Hibernate такой режим поддерживала, но, конечно, если сразу на уровне СУБД есть - то очень хорошо.
[15:44:18] <ForNeVeR> смекайло: ну, по-моему, она не бог весть какой сложности. Просто тут очень много разных возможностей, как такие миграции описывать. И потому, что единого варианта нету - никто и не парится. Все пишут кастомный код.
[15:44:47] <ForNeVeR> Который, к слову сказать, обычно можно встроить в общий движок миграций.
[15:45:02] <ForNeVeR> Ну то есть описывать миграции на смеси SQL и языка, которым описываешь бизнес-логику.
[15:45:39] <ForNeVeR> Кто-то, вон, на рубях пишет, кто-то на жаве, а я, например, на сишарпе.
[15:46:07] <ForNeVeR> И ты такой идёшь в БД, парсишь эти свои объекты, делаешь с ними нужную операцию, и сохраняешь всё обратно.
[15:47:42] <ForNeVeR> ħ: вот этим MSSQL хорош, кстати: у него весь DDL поддерживается в транзакциях. Даже небо можно откатить, даже аллаха, даже truncate. Даже PostgreSQL так не умеет пока что.
[15:48:21] <смекайло> да, кстати, я бы хотел работать с ORM-объектами, а не с БД-колонками
[15:48:23] <ħ> а почему alter table  он откатить не может?
[15:48:25] <смекайло> это было бы гораздо проще
[15:48:33] <ForNeVeR> ħ: кто "он"? MSSQL может.
[15:48:36] <ħ> ой
[15:48:40] <ħ> опять прочитал неправильно
[15:48:47] <ForNeVeR> Да-да, это не про мускуль :)
[15:48:54] <ForNeVeR> Мускуль не может. Да.
[15:49:04] <ForNeVeR> Кажись, Oracle тоже не может ничо.
[15:49:42] <ForNeVeR> PostgreSQL может почти всё, что надо - основное ограничение там только на truncate table. Хотя это было ещё в 8 версии - может, уже убрали?
[15:50:36] <ForNeVeR> А, лол, я нагнал. Всё збс.
[15:50:42] <смекайло> ForNeVeR: да, ты подсказал мне решение того, что я хочу. Я использую SQLAlchemy и Alembic, и там миграции построены на работе с таблицами, а не ORM-объектами. Т.е .в миграции ты делаешь что-то типа ALTER COLUMN. А мне бы хотелось, иметь старую и новую версию ORM-объекта, и функцию, которая между ними умеет переключиться. Можно даже код для этих ORM-объектов (классы) брать из старой и новой git-ревизии. Это было бы гораздо проще.
[15:50:45] <ForNeVeR> > TRUNCATE is not MVCC-safe
[15:51:29] <ForNeVeR> смекайло: ого, ну вот чтобы прям код брать старый и новый - такого я не видал. А вот чтоб с объектами в миграции поработать - это вполне хорошее желание.
[15:52:39] <смекайло> ForNeVeR: ну старый/новый код - это было бы вообще круто. Потому что с объектами работать сложно, потому что там есть много логики, которая из табличек БД отображает данные в объекты, и эта логика может меняться от версии к версии.
[15:53:27] <ForNeVeR> смекайло: если тебе ещё и вся эта логика потребовалась в миграции - это какой-то прям уж совсем сложный случай, по-моему.
[15:53:58] <смекайло> ForNeVeR: ну, у подхода с git-ревизиями есть и другие плюшки: не нужно отдельное версионирование для миграций.
[15:54:04] <ħ> https://www.youtube.com/watch?v=7iGAZbrU4ME угадай страну по видео
[15:54:15] <ForNeVeR> Обычно всё-таки можно как-то описать миграцию в терминах если не таблиц и SQL, то хотя бы простых операций над строками данных (ну, с привлечением небольшого количества бизнес-кода, например).
[15:54:49] <ħ> ну ему нужны какие-то неразрушающие миграции
[15:54:51] <ForNeVeR> смекайло: и, да, у твоей идеи есть интересные преимущества. Я только реализаций не видел пока что, но вообще ты интересно придумал.
[15:54:57] <ħ> типа код, который будет один объект в другой переводить
[15:54:59] <ħ> на лету
[15:55:04] <ħ> а база будет старая в этот момент
[15:55:42] <смекайло> ну, можно сделать две таблички в БД
[15:55:44] <смекайло> или копию БД
[15:56:00] <ħ> а как ты будешь их потом сливать назад?
[15:57:01] <смекайло> а не нужно сливать, нужно старую выкинуть, и новую (смигрированную) использовать
[15:57:18] <ħ> а если в старую запишут в это время изменения?
[15:57:35] <смекайло> а в read-only её положим
[15:57:38] <ForNeVeR> А мы им не дадим!
[15:58:00] <ForNeVeR> ħ: тут идея в том, что две таблички нужны только на время миграции. Пока что рассматриваем сценарий stop-the-world.
[15:58:26] <ForNeVeR> А дальше можно старую таблицу оставить болтаться на пару дней - вдруг понадобится. А потом удалить.
[15:58:28] <смекайло> Ну дык и у обычных табличных миграций есть такая проблема: допустим ты переименовал колонку. Миграция делает ALTER TABLE, а в это время кто-то пишет в БД.
[15:58:59] <ħ> слушайте
[15:59:04] <ForNeVeR> Надо под такие сценарии логику писателей подстраивать, если уж вы не хотите stop-the-world.
[15:59:11] <смекайло> да
[15:59:11] <ħ> а у postgres нет ли какой утилитки чтобы редактировать pg_hba?
[15:59:22] <смекайло> потому что логика писателей тоже меняется от версии к версии
[15:59:27] <ForNeVeR> Я не знаю, что такое pg_hba.
[16:01:07] gr_buza@arbeiten вышел(а) из комнаты
[16:08:22] Bob Page вошёл(а) в комнату
[16:19:19] махт хекп вышел(а) из комнаты
[16:19:56] <смекайло> ForNeVeR: внезапно, такие миграции довольно просто реализовать, там даже много логики не нужно: просто бери код, проходи по всем объектам в базе, и запускай для них функцию, которая из старого объекта сделает новый
[16:19:58] <смекайло> ForNeVeR: я может даже займусь
[16:20:30] <смекайло> ForNeVeR: единственная проблема - это на больших базах будет люто тормозить
[16:20:41] <ForNeVeR> Ну, тут уже думать надо.
[16:20:48] <ForNeVeR> Тому, кто пишет миграцию :)
[16:22:30] <смекайло> хотя, в обычных миграциях такая херня тоже тормозит: если ты меняешь данные, то тебе всё равно нужно по каждой строке в таблице пройтись и поменять их
[16:28:17] eaeee вошёл(а) в комнату
[16:30:16] <смекайло> ForNeVeR: внезапно, можно даже решить stop-the-world в некоторых случаях! Если у нас есть функция, которая конвертит старый объект в новый, то мы можем конвертить объекты на лету. Например у нас есть REST API, и там ресурсы отображены в объекты. Ну и конечно же, у API есть версии. Так вот, мы можем POST/PUT/etc запросы к старым версиям API на лету конвертить в новые объекты.
[16:31:07] <ForNeVeR> смекайло: да, я об этом тоже уже подумал. Ты прав.
[16:31:11] <смекайло> ForNeVeR: так же, можно на время миграции не запрещать запись в базу, а просто сохранять все записанные объекты, и домигрировать их после переключения на новую таблицу.
[16:31:24] <смекайло> *сохранять записанные объекты в памяти
[16:31:50] <смекайло> т.е. просто не flush'ить БД до окончания миграции
[16:32:01] <смекайло> потом переделать объекты и уже потом накатить их в БД
[16:33:04] <смекайло> так же можно мигрировать всякие старые сериализованные объекты
[16:33:11] <смекайло> конфиги например
[16:41:17] gr_buza@arbeiten вошёл(а) в комнату
[16:44:40] <смекайло> правда, для таких онлайн-миграций не получится целиком вытаскивать весь исходный код классов из git
[16:50:50] <смекайло> ForNeVeR: я придумал безумную херню: хранить одновременно две ревизии из git, и две БД, и делать между ними репликацию, используя такую вот ORM-миграцию. Тогда можно легко переключаться между этими двумя версиями. А это значи, что легко решается проблема с Blue-Green migration и A/B тестированием.
[16:51:25] <ħ> не решается
[16:51:35] <ħ> вот как развалится у тебя посреди пьессы твоя миграция
[16:51:37] <ħ> вот я посмеюсь
[16:51:56] <ħ> какая-нибудь отдельная запись не сможет смигрировать
[16:52:01] <ħ> и реплики станут неконсистентными
[16:52:28] <смекайло> а тогда мы запретим запись в первую реплику же
[16:52:37] <смекайло> т.е. если миграция проваливается, то мы запрещаем запись
[16:52:42] <смекайло> одновременно во все копии БД
[16:53:04] <смекайло> т.е. мы сначала мигрируем объект в разные версии, потом пишем во все БД
[16:53:10] <смекайло> запись уже будет консистента
[16:53:30] <смекайло> можно даже это делать в одной транзакции
[16:57:58] eaeee вышел(а) из комнаты
[17:23:57] gold_9 вошёл(а) в комнату
[17:31:30] gr_buza@arbeiten вышел(а) из комнаты
[17:39:31] gsomix вошёл(а) в комнату
[17:41:44] gsomix вышел(а) из комнаты: offline
[17:42:06] gold_9 вышел(а) из комнаты
[17:43:18] <ħ> посоны
[17:43:20] <ħ> вы же программисты
[17:43:23] <ħ> подскажите мне
[17:43:26] <ħ> у меня есть два множества
[17:43:30] <ħ> могу их упорядочить
[17:43:38] <ħ> как мне посчитать разницу множеств
[17:43:40] <ħ> при условии что
[17:43:48] <ħ> множества лежать не в общей памяти
[17:43:54] <ħ> а в разных местах
[17:44:20] <смекайло> они сортированы?
[17:44:31] <ħ> могу отсортировать
[17:44:57] <смекайло> если отсортировать можешь, то тебе нужно что-то вроде операции "merge" в Merge Sort
[17:45:02] <ħ> да
[17:45:03] <ħ> но нет
[17:45:17] <ħ> merge сорт просто передаст одно множество на одну из сторон
[17:45:19] <ħ> ну
[17:45:24] <ħ> ассимптотически
[17:45:32] <ħ> а я хочу чтобы быстрее
[17:45:42] gr_buza@arbeiten вошёл(а) в комнату
[17:45:52] <смекайло> если они уже хранятся отсортированными
[17:46:09] <смекайло> вообще где-то видел уже
[17:46:43] <ħ> может какое дерево специальное можно построить
[17:48:19] <смекайло> короче, есть такой курс https://www.youtube.com/watch?v=XoexL6v2oiM
[17:48:28] <смекайло> я его сильно не смотрел, но видел, что там такая задача решается
[17:49:25] <смекайло> т.е. там решается задача, когда два отсортированных списка хранятся на разных машинах в сети, и машины могут обмениваться сообщениями
[17:49:30] <смекайло> и нужно было найти по-моему медиаену
[17:49:32] <смекайло> медиану
[17:49:47] <смекайло> и нужно было определить минимум сообщений, которые потребуются
[17:50:01] <смекайло> подозреваю, что тебе нужно что-то похожее
[17:50:04] gold_9 вошёл(а) в комнату
[17:54:22] <смекайло> а может даже и твоя задача решалась
[17:55:44] <смекайло> ħ: короче, суть в том, что ты сортируешь оба множества, и затем используешь бинарный поиск в обе стороны, чтобы найти границы пересечения
[18:09:40] <ħ> да, разумно
[18:11:11] gr_buza@arbeiten вышел(а) из комнаты
[18:13:37] <ħ> https://www.youtube.com/watch?v=um6G_Dyv2nk гарбузе
[18:17:27] gr_buza@arbeiten вошёл(а) в комнату
[18:17:55] <gr_buza@arbeiten> .wz ustr
[18:17:58] <sulci> gr_buza@arbeiten: Station name not available - 2016.06.13 1500 UTC / Cumulonimbus clouds observed, 17°C / 62°F, humidity: 93%, pressure: 29.56 in. Hg (1001 hPa), wind: Variable at 2 MPH (2 KT), visibility: greater than 7 mile(s)
[18:21:23] <ħ> гарбуза
[18:21:28] <ħ> gr_buza@arbeiten: https://www.youtube.com/watch?v=HLlMSbkubz4 я забыл
[18:21:36] <ħ> вот после 5 ой минуты что они играют
[18:21:44] <ħ> это же импровизация на какую-то очень известную мелодию
[18:21:49] <ħ> не могу вспомнить как она называется
[18:24:53] <Mr.Purple> https://www.youtube.com/watch?v=iFEiNmbUwHo
[18:30:20] <ħ> https://www.youtube.com/watch?v=XdISw7y7SsA
сюр какой-то
[18:34:13] <ħ> https://www.youtube.com/watch?v=J-pFjzoCTL8
[18:34:15] <ħ> вот вам
[18:34:22] <ħ> там чо-то бомбануло у кого-то видать
[18:37:31] gr_buza@arbeiten вышел(а) из комнаты
[18:38:05] gold_9 вышел(а) из комнаты
[18:40:18] gr_buza@arbeiten вошёл(а) в комнату
[19:10:53] gr_buza@arbeiten вышел(а) из комнаты
[19:15:35] дырдырдыр вошёл(а) в комнату
[19:19:21] <дырдырдыр> ħ, https://www.youtube.com/watch?v=9wUDW8n3NIk
[19:20:14] <дырдырдыр> аида это жэ опера! хрена они там пляшут?
[19:23:30] <Mr.Purple> дырдырдыр: кстати, о тринадцати гитаристах. раньше бриташки прикольные были: https://www.youtube.com/watch?v=5CWsK1ey_os
[19:23:43] <Mr.Purple> надо бы пимиенту подбить подобное попробовать запилить
[19:24:49] <дырдырдыр> Mr.Purple, вместо турничков
[19:25:21] <Mr.Purple> клавиши он там перевез, не?
[19:25:28] <дырдырдыр> Шо за пиздец этот совок ебаный?
[19:25:29] <sulci> дырдырдыр: не болтай глупостей как малолетка!
[19:25:29] <Mr.Purple> все дорваться до них хочу
[19:25:38] <дырдырдыр> бедный гервь
[19:27:04] <дырдырдыр> а чо там за собор? никто не хочет ехать в гости к вороватым москалям на содержании у вороватого государства?
[19:27:26] <portnov> https://ost6imgs.s3.eu-central-1.amazonaws.com/uploads/pimage/imageurl/623834/thumb_img196303_35fd112a39b38429.jpg
[19:27:40] <дырдырдыр> а, наоборот
[19:27:52] <Mr.Purple> дырдырдыр: https://www.youtube.com/watch?v=AI5grKCLnco
[19:27:55] <Mr.Purple> во
[19:28:13] <Mr.Purple> еще с женским именем прикольная песня на сборнике была
[19:28:27] <Mr.Purple> это по-моему the smiths второго порядка
[19:29:04] <дырдырдыр> это какие-то не просто бриташки, а братишки, и хлебушек у них сладкий
[19:32:48] <Mr.Purple> дырдырдыр: во. нашел. я просто по полу размазываюсь от: https://www.youtube.com/watch?v=zIcO7iDcSDw
[19:33:51] <дырдырдыр> опять пидарок кукарекает, не по нраву мне такие голоса
[19:33:51] <sulci> дырдырдыр: не болтай глупостей как малолетка!
[19:43:18] <дырдырдыр> http://img0.joyreactor.cc/pics/post/%D0%BA%D0%BE%D1%82%D1%8D-%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0-3160460.jpeg вот вам толкового котика
[19:46:30] olgZZZ вошёл(а) в комнату
[20:10:04] <дырдырдыр> https://www.youtube.com/watch?v=n8j-zQv0zUs&feature=youtu.be
[20:10:37] <Mr.Purple> дырдырдыр: толковый бы еще соседскую собаку на заднем плане принес
[20:11:12] <дырдырдыр> Mr.Purple, то корейский, а это толковый
[20:13:35] <дырдырдыр> https://www.youtube.com/watch?v=lCdzE7hD8fA
[20:13:41] <ħ> https://www.youtube.com/watch?v=xt_dLZHUuRU
[20:15:07] <дырдырдыр> записацо штоли в музыкальную школу
[20:15:26] <Mr.Purple> с братиком себя запиши
[20:15:41] <Mr.Purple> лучше
[20:15:46] <Mr.Purple> зачем тебе музыкалка?
[20:16:51] <Mr.Purple> а, дыряй?
[20:17:09] <Mr.Purple> ты же итак все знаешь. взял школу/упражнения и ебашишь.
[20:17:10] <sulci> Mr.Purple: не болтай глупостей как малолетка!
[20:17:26] <дырдырдыр> препод шонить скажет и покажет живьём
[20:17:32] <Mr.Purple> придумывание музыки с теорией классической музыки не связано
[20:17:35] <дырдырдыр> етуб и книжки мне кажутся недостаточными
[20:17:57] <Mr.Purple> ну ты препода можешь точечно ловить
[20:18:11] <Mr.Purple> выучил что понравилось - сыграл
[20:18:15] <Mr.Purple> а не каждый день
[20:18:19] <Mr.Purple> будет продуктивнее
[20:19:06] <Mr.Purple> гарбуза вон к учителю ходит и что?
[20:19:08] <Mr.Purple> толку
[20:19:34] <Mr.Purple> записями не делится
[20:21:00] Bob Page вышел(а) из комнаты
[20:24:56] <дырдырдыр> поди барабан запиши шоб поделиться и никто не наблевал бы в результате
[20:25:35] <Mr.Purple> дак у него клавиши
[20:25:38] <Mr.Purple> он же не гервь
[20:27:33] <дырдырдыр> а, и препод, опятьжы, проконтролирует, правильно ли я понял
[20:39:10] <дырдырдыр> >Microsoft купит LinkedIn за 26 миллиардов долларов
[20:39:17] <дырдырдыр> теперь и линкедыну пизда
[20:39:17] <sulci> дырдырдыр: не болтай глупостей как малолетка!
[20:44:04] Mr.Purple вышел(а) из комнаты
[20:44:13] Mr.Purple вошёл(а) в комнату
[20:54:49] <дырдырдыр> sulci, Юрист обратился в суд, требуя с 31-летней девушки, с которой он состоял в романтических отношениях, возместить ему расходы в размере 40 тысяч рублей. Суду он предоставил чеки. Мужчина посчитал, что за время четырехлетнего романа его бывшая возлюбленная «необоснованно обогатилась».
[20:54:51] <sulci> дырдырдыр: или стрелы же...
[20:55:03] <дырдырдыр> sulci, стрелы обмура
[20:55:04] sulci долгое существование человека из-за особо много
[21:06:52] <edgbla> дырдырдыр, скайп ещё не помер)
[21:07:45] <portnov> ще не вмерла!
[21:07:47] <portnov> то есть это.
[21:19:22] <ħ> ForNeVeR:
[21:19:25] <ħ> ForNeVeR:
[21:19:28] <ħ> ForNeVeR: бротан
[21:20:54] <Mr.Purple> матан
[21:20:59] <ħ> метан
[21:23:04] <Mr.Purple> циклобетон
[21:28:03] <смекайло> бурбон
[21:28:33] <дырдырдыр> edgbla, говорят, помер
[21:28:37] <дырдырдыр> и воняет
[21:28:52] <edgbla> работает жеж
[21:29:37] <ħ> я уж подумал, что edgbla помер
[21:29:44] <ħ> дурацкий русский язык
[21:29:46] <edgbla> нет ещё)
[21:30:13] <edgbla> просто он вместо двоеточия поставил запятую
[21:30:19] <edgbla> так само ставится
[21:30:25] <дырдырдыр> edgbla, так это зрада чи перемога?
[21:30:28] <дырдырдыр> вантузятники, люнексоеды, ведроложцы — ноют от невзгод
[21:31:03] <дырдырдыр> это не я запятую ставлю, а автокомплит
[21:31:16] <дырдырдыр> раньше можно было в настройках поправить, а теперь нельзя
[21:32:31] <дырдырдыр> sulci: тест
[21:32:34] <sulci> дырдырдыр: ты достал пистолет.
[21:32:35] <дырдырдыр> ура!
[21:32:43] <дырдырдыр> теперь тоже можно
[21:32:52] <дырдырдыр> sulci: пистолет бестолковый
[21:32:53] <sulci> дырдырдыр: я пока я так это всё стабилизируют, будет делать
[21:33:10] <edgbla> чего можно-то? геев стрелять?)
[21:33:14] <дырдырдыр> sulci: делай
[21:33:15] <sulci> дырдырдыр: хм-м-м, круто выглядит толково алгоритм такой есть там с пармезаном?
[21:33:22] <дырдырдыр> edgbla: теперь у меня двоеточие
[21:33:33] <дырдырдыр> геев пистолетом вряд ли много настреляешь
[21:33:34] <дырдырдыр> кстати
[21:34:07] <дырдырдыр> читал в каком-то эмигранцком жеже, что во флориде можно рассово невозбранно отстреливаться от злоумышленников
[21:34:08] <edgbla> крут
[21:34:13] <edgbla> а где взял двоеточие?
[21:34:20] <дырдырдыр> настройки поскроллил
[21:34:24] <portnov> места знать надо
[21:34:25] <дырдырдыр> ну дык вот
[21:34:45] <дырдырдыр> а пидрилы, получается, не берегут здоровье?
[21:34:45] <sulci> дырдырдыр: не болтай глупостей как малолетка!
[21:34:50] <дырдырдыр> sulci: чо?
[21:34:51] <sulci> дырдырдыр: не, ну не особо охрененным специалистом
[21:35:16] <дырдырдыр> sulci: ну я и интересуюсь у охрененных специалистов
[21:35:18] <sulci> дырдырдыр: я бы покрасивее :)
[21:35:30] <дырдырдыр> sulci: ну ты ж баба, стало быть, красивее
[21:35:30] gr_buza@arbeiten вошёл(а) в комнату
[21:35:31] <sulci> дырдырдыр: in a future i < C|x-y|
[21:35:41] <дырдырдыр> sulci: электронная баба, да
[21:35:43] <sulci> дырдырдыр: хз
[21:36:24] <edgbla> дырдырдыр: ку
[21:36:43] <дырдырдыр> вот в молдавии, говорят, тоже струлять можно невозбранно
[21:36:51] <дырдырдыр> edgbla: чо?
[21:37:03] <edgbla> я тоже нашёл точки))
[21:37:10] <дырдырдыр> edgbla: ок
[21:37:38] дырдырдыр вышел(а) из комнаты
[21:40:11] rexim вышел(а) из комнаты
[21:41:53] <ħ> ебанутось какая-то
[21:41:53] <sulci> ħ: не болтай глупостей как малолетка!
[21:42:00] <ħ> по телевизору показывают Трампа в прямом эфире
[21:42:06] <ħ> по каналу Россия Два и Четыре
[21:43:02] <ħ> gr_buza@arbeiten: гарбуза
[21:43:03] <ħ> гарбуза
[21:43:51] <ħ> gr_buza@arbeiten: Do you think you are what they say you are?
[21:48:36] gr_buza@arbeiten вышел(а) из комнаты: Replaced by new connection
[21:48:39] gr_buza@arbeiten вошёл(а) в комнату
[21:57:33] kmo_3gecb вошёл(а) в комнату
[21:58:09] kmo_3gecb вышел(а) из комнаты
[21:58:29] kmo_3gecb вошёл(а) в комнату
[22:15:07] portnov вышел(а) из комнаты
[22:37:56] kmo_3gecb вышел(а) из комнаты
[22:44:33] <ħ> ForNeVeR: братан, ты спишь что-ле?
[22:54:10] ħ вышел(а) из комнаты
[23:14:42] ermine вышел(а) из комнаты
[23:28:01] ħ вошёл(а) в комнату
[23:28:32] <ħ> Посоны
[23:28:46] ħ вышел(а) из комнаты
[23:41:05] <gr_buza@arbeiten> гггг
[23:41:54] <Mr.Purple> gr_buza@arbeiten: как там пианина твоя?
[23:41:58] <Mr.Purple> есть записи?
[23:43:12] <gr_buza@arbeiten> кое-как. Пока занимаюсь мало по объективным причинам. Записей нет.
[23:43:54] <gr_buza@arbeiten> гаммы-арпеджио там гоняю, конечно, в разных тональностях, но сложные этюды идут очень туго
[23:44:15] <gr_buza@arbeiten> хреново работает мелодическая память, постоянно ловлю себя на том, что запоминаю мелодию визуально
[23:44:30] <gr_buza@arbeiten> т.е. "клавиша сюда, клавиша сюда" и т.д.
[23:45:15] <Mr.Purple> однако
[23:45:37] <Mr.Purple> у меня обычно наоборот
[23:46:37] <Mr.Purple> наигрываю фигню какую-нибудь. узнаю кусок чего-то, подбираю, а от чего оно там начинается только после сверки с оригиналом понятно
[23:48:18] <gr_buza@arbeiten> ну оно тоже так работает
[23:48:34] <gr_buza@arbeiten> но при заучивании мелодии больше работает зрительная память
[23:48:44] <gr_buza@arbeiten> т.е. когда ты что-то незнакомое заучиваешь
[23:48:59] <gr_buza@arbeiten> пробовал заниматься вслепую, интересный экспириенс, надо развивать
[23:49:09] <gr_buza@arbeiten> только что позиционироваться сложно :)
[23:54:10] Mr.Purple вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!