
Мерлин
27.02.2017
08:37:53
Я тут вокруг одной задачки всё прыгаю, мелкий так сказать домашний проектик, и хочу там такого:
- хранить связанные документы, но с возможностью доступа по вторчиным ключам из кишочков документа
- хочу обойтись без администрирования сервиса бд. Что б прямо inprocess, типа sqlite, даже одновременный доступ не нужен.
- там в основном write-only с редкими read, и только редкие процессы построения отчетов читают много данных раз в неделю.
- не хочу хранить в памяти, архив длинный там, а доступ к нему почти никогда не нужен. обычно доступаемся к данным записанным максимум час назад.
может посоветуете чего?
Сейчас там рсубд, но джойны и многоэтажные запросы утомили. Документы слегка динамической структуры.
Такого нет(по крайней мере я не видел) , пиши сам поверх болта :3

Ivan
27.02.2017
08:38:48
Кто то мне кидал ссылку на buntdb и оно прямо почти. Тока хранит в памяти и не умеет внутри документа по массивам выбирать. Но близко уже

Мерлин
27.02.2017
08:39:22
Разве поверх ql можно сообразить, но только со схемой

Ivan
27.02.2017
08:40:20
https://github.com/cznic/ql это ?

Google

Ivan
27.02.2017
08:40:48
дык, зачем. тогда и sqlite и постгрес норм
или я не понимаю?

Daniel
27.02.2017
08:47:17
важности слов "pure Go" не понимаешь

Roman
27.02.2017
08:53:43

Daniel
27.02.2017
08:54:38

Roman
27.02.2017
08:54:40
Если кратко - один раз выбирается shard key и потом по нему запросы раскидываются между шардами

Daniel
27.02.2017
08:55:40
это очевидно, это так в любой nosql базе
я именно про foreign keys

Мерлин
27.02.2017
08:55:56
Кстати, если хочется поизвращаться
Попробуйте тарантул
На самом деле это не бд никакая, конечно, а интепретатор для Lua
Но прям ващееее

Google

Daniel
27.02.2017
08:57:49
я именно про foreign keys
и про контроль целостности, который они обеспечивают. я хорошо понимаю, почему в распределенных базах foreign keys нет
ты говоришь - в монге есть

Мерлин
27.02.2017
08:58:09

Daniel
27.02.2017
08:58:10
и я хочу знать - как это так оно работает

Мерлин
27.02.2017
09:07:17

Roman
27.02.2017
09:07:34
я именно про foreign keys
а... то что ты хочешь называется dbref. но это не рекомендуется делать и лучше ссылаться руками по objectid

Daniel
27.02.2017
09:08:11
слушай, не в ссылках же дело, ссылаться я могу на что угодгно как угодно. дело в контроле целостности

One
27.02.2017
10:08:16
жуть какая с этим временем...
fmt.Println(time.Now().Format(time.Stamp)[7:0 ])

Andrew
27.02.2017
10:10:18

One
27.02.2017
10:10:50
hh:mm:ss чтоб вывести

Ivan
27.02.2017
10:14:19
log.Printf

Andrew
27.02.2017
10:14:28

One
27.02.2017
10:17:50

Sergey
27.02.2017
10:18:47
когда же вы научитесь :(

Constantine
27.02.2017
10:19:11
дело не в научитесь, а в том. что непривычно )

One
27.02.2017
10:20:14

Sergey
27.02.2017
10:21:32

One
27.02.2017
10:22:20
портянки в пастебин

Andrew
27.02.2017
10:22:33

Sergey
27.02.2017
10:23:03

Google

One
27.02.2017
10:23:46

Andrew
27.02.2017
10:23:47
Не, ты должен как "тыжпрограммист" воспользоваться экстрасенсорными навыками, чтобы понять без кода, где проблема.

One
27.02.2017
10:24:30
"теленет по телефону" - вотэтовсе

Constantine
27.02.2017
10:28:05

One
27.02.2017
10:29:15
а для жабаскрипт есть чатик? кто сылкой поделится

Sergey
27.02.2017
10:29:27
В @prodot должен быть

Mars
27.02.2017
10:32:01

Anton
27.02.2017
10:32:30
Чатики по жабаскрипту появляются утром, а к обеду уже закрываются (как и вообще всё в мире жабаскрипта)

Constantine
27.02.2017
10:32:48

Daniil
27.02.2017
10:59:14
Уважаемые, позволите ли здесь флудануть вопросом про авторизацию по токену в API? (вопрос будет про технологии, а не про Go) Или направьте туда где можно будет.

Евгений
27.02.2017
11:03:01

Phil
27.02.2017
11:05:45

Ivan
27.02.2017
11:06:31
Дело видимо про микросервис, токен, и апи

Alexander
27.02.2017
11:07:53

Mars
27.02.2017
11:07:54
Ребята, подскажите годный визуалайзер для expvar, есть такие вообще?

Daniil
27.02.2017
11:09:11
Ну, видимо, можно.
Если есть сервис со своей авторзицией, БД пользователей и регистрацией, то реализовывая API для авторизации применима ли oAuth? Или эти вещи только для авторизации через социалки и прочее, а не для своих пользователей?

Phil
27.02.2017
11:12:25
oauth косячный и недоделанный. но. у него неплохие базовые flow и его терминология будет понятна большинству разработчиков

Daniil
27.02.2017
11:13:12
Т.е. можно брать его, реализовывать на бекэнде и писать доку для API программистов?

Phil
27.02.2017
11:13:30
так скажем врядли ты придумаешь основные flow лучше. так что частично его использовать можно и нужно

Google

Daniil
27.02.2017
11:15:04

Phil
27.02.2017
11:16:40
но мне например пришлось изгадить password grant, потоому что у меня изолированные наборы пользователей. пришлось тенант както передавать

Daniil
27.02.2017
11:19:24
Как будут действовать разрабы API?
Они увидят что в ТЗ на (RAML) написано security использовать oAuth по шаблону и они возьмут инструменты, либы и "волшебно" прикрутят oauth к существующей БД?
Просто я не очень пока знаком с oauth и легче свой костыл сочинить, но страшно.
Или мне нужно ещё что-то написать, чтобы им было легче жить?

Phil
27.02.2017
11:38:34
Ну там oauth не то чтобы прямо сложный. Всё сочиненное будет тот же oauth вид сбоку
В чем задача токенов собственно? Если она вписывается в парадигму "авторизовался по логин/пароль, получил токен, бегаем с токеном по API" - oauth 100%

Roman
27.02.2017
11:42:21

Alexander
27.02.2017
11:42:41
Вот, например, про токены рассказывают https://www.youtube.com/watch?v=tByDX_KBXfE

Alexander
27.02.2017
11:47:29
А какую проблему решает linq?
работа с коллекциями. например, есть коллекция лог-записей (IpAddress, код ответа, ...) и требуется найти уникальные IP адреса, у которых был ответ 500. в LINQ на C# это будет logRecords
.Where(r => r.StatusCode == 500)
.Select(r => r.IpAddress)
.Distinct()
коротко и понятно, что тут происходит. без LINQ будет побольше "шума" из-за того, что императивно операции делаем

Daniil
27.02.2017
11:50:28

Евгений
27.02.2017
11:55:19

i
27.02.2017
11:59:27

Alexander
27.02.2017
12:02:54
ну тут ты передаешь просто функции, x => x.SomeProp == 500 - это синтаксический сахар для func(x YourType) bool { return x.SomeProp == 500; }
сахар в C#, в Go такого нет и видимо не будет никогда

Roman
27.02.2017
12:49:43

Alexander
27.02.2017
12:51:58
что ты имеешь в виду под невалидным?

Roman
27.02.2017
12:59:38

Google

Roman
27.02.2017
13:00:28
и в коллекции будет строка с невалидным регекспом

Alexander
27.02.2017
13:01:55
вылетит в runtime исключение, если эта ситуация никак не обрабатывается, если я вопрос правильно понял
stack trace будет другим, но в общем-то код упадет в одном и том же месте независимо от того напишешь ты кусок через LINQ или императивно пробежишься по коллекции, проверишь предикат, наполнишь другую коллекцию

Roman
27.02.2017
13:09:45
частенько слышу от Java программистов: "Exceptions > panic" или "Go плох тем что в нём нет exception'ов" но не могу понять их мысль, обоснований практически ноль, вы как считаете, обосновано ли высказывание?

Ivan
27.02.2017
13:10:11
Думаю не взлетит

Phil
27.02.2017
13:13:19

Alexander
27.02.2017
13:13:57
тут как раз не странно

Roman
27.02.2017
13:14:33

Alexander
27.02.2017
13:14:44
есть два типа проблем, когда ты кидаешь в коде Exception - когда что-то совсем невероятное произошло, и когда что-то иногда ожидаемое (файла нет или коннекшн отвалился)
вот в go в первом случае кидают panic, во втором кидают err

Phil
27.02.2017
13:15:38
А, это... ну хз

Roman
27.02.2017
13:15:54
panic - irrecoverable error
error - logical error
насколько я понимаю

Alexander
27.02.2017
13:16:21
да, все верно

Phil
27.02.2017
13:16:35
это понятно

Alexander
27.02.2017
13:17:22
в общем-то в C# сейчас, да наверно и Java считается неправильным(некрасивым) использовать исключения для управлением потоком выполнения

Roman
27.02.2017
13:17:49
у меня вот конкретный аргумент против Exception: без документации они неочевидны и могут привести к runtime проблемам
с Go такое конечно тоже возможно но только в том случае если неправильно прописана обработка err, что намного менее вероятно чем пропущенный exception

Phil
27.02.2017
13:18:02
Я наверное с Catch путаю. Я не знаю ни C#, ни C++, ни Java

redbeard
27.02.2017
13:18:14
счастливый человек :)

Alexander
27.02.2017
13:18:22
не путаешь, о catch и идет речь
смысл, как Роман и написал: код должен быть документирован и понятен по сигнатуре метода

Phil
27.02.2017
13:19:12
Вру. На java я написал генерацию DS DNS Record в том числе с ГОСТ. Точнее на написал, а сделал Hello World используя стандартные библиотеку

Alexander
27.02.2017
13:20:35
просто можно писать client, err := somePack.NewClient() или try { var client = NewClient() } catch (SomeExcpetion e) { ... //do something on error }