
Igorek
20.02.2018
10:16:19
например как котлине
но оно уже есть и с type erasure

Oleg
20.02.2018
10:17:20
Роуз писал, что type erasure они сделали только для одной вещи - чтобы не было какого-то конкретного flag day, когда вся платформа должна встать и обновить свой код и бинарники с учётом того, что некоторые вещи стали generic

Денис
20.02.2018
10:21:13
например как котлине
В котлине при этом нет вайлдкардов (и они вообще, кажется, плохо совмещаются с reified type parameters, по крайней мере, в реальном применении, но тут я могу ошибаться)

Google

Денис
20.02.2018
10:21:36
Это я не к тому, что Котлин плохой, а к тому, что надо сохранить обратную совместимость и всё такое

Igorek
20.02.2018
10:22:04

Oleksandr
20.02.2018
10:22:19
кстати, как в котлине сделано-то?

Igorek
20.02.2018
10:23:03

Oleksandr
20.02.2018
10:24:32
рефлексия в рантайме?

Oleg
20.02.2018
10:25:09
ну стала у тебя коллекция generic вместо legacy. Просто создай новый класс, назови ее по-другому

Sergey
20.02.2018
10:26:36

Денис
20.02.2018
10:29:06

Igorek
20.02.2018
10:29:45
рефлексия в рантайме?
так вот же, написано:
In inline functions, occurrences of a reified type parameter T are replaced with the actual type argument.
просто добавляется Class<T> еще одним параметром

Oleksandr
20.02.2018
10:29:56

Google

Oleksandr
20.02.2018
10:30:04
или такого не может быть?

Igorek
20.02.2018
10:31:01
видимо это только для инлайн поддерживается

Oleksandr
20.02.2018
10:31:36
тогда странно, что с вайлдкардами не работает
оно ж на разных уровнях, реифайд в рантайме, вайлдкарды в компайлтайме

Денис
20.02.2018
10:36:48
Мы говорим совсем о котлине?
Просто там есть, например, такой пример в доке
inline fun <reified T> TreeNode.findParentOfType(): T? {
var p = parent
while (p != null && p !is T) {
p = p.parent
}
return p as T?
}
И тут встаёт вопрос - как безболезненно и наиболее корректно сделать этот return, если у нас T может быть сложным вайлдкардом?

Сергей
20.02.2018
10:42:15

Wystan
20.02.2018
11:27:42
Господа, а в каком виде вы храните всякие пдфки для инвойсов/репортов и так далее? Как пдф? Или как темплейт + дата в бд + картинки отдельно?

Sergey
20.02.2018
11:28:22
Второе

Bogdan
20.02.2018
11:35:12

Igorek
20.02.2018
11:51:10

Denis
20.02.2018
11:56:23
Ну в смысле в любой бд держать бинари так себе идея.

z0mb1ek
20.02.2018
11:57:46
cassandra?

Pavel
20.02.2018
12:03:23

Денис
20.02.2018
12:04:28
В самой базе держать бинари больно и слегка бессмысленно кмк, внешние ресурсы может?
Могу ошибаться, впрочем

Denis
20.02.2018
12:05:08

KrivdaAllStars
20.02.2018
12:05:15
В кассандре можно Бинари держать
Все хорошо и есть хорошие кейсы

Google

Pavel
20.02.2018
12:05:48

Денис
20.02.2018
12:05:56
Хранишь пути к ним
В базе
А сами бинари как данные тебе в реляционной базе бесполезны скорее всего же

Pavel
20.02.2018
12:06:42

KrivdaAllStars
20.02.2018
12:06:43
Используйте Кассандру для бинарей
https://medium.com/walmartlabs/building-object-store-storing-images-in-cassandra-walmart-scale-a6b9c02af593
Все придумано до вас

Denis
20.02.2018
12:07:58
А если не одна машина?
Все эти вопросы давно уже решены десятком способов, надо только выбрать подходящий в твоей ситуации

Pavel
20.02.2018
12:08:10
Было предложено хранить файлы в файловой системе локальной и хранить путь
Ну мой вопрос резонный, а что делать если много данных

Денис
20.02.2018
12:10:05

Denis
20.02.2018
12:11:07

Pavel
20.02.2018
12:11:50

Denis
20.02.2018
12:12:50

Pavel
20.02.2018
12:13:04
Опять уход от ответа
Ну чем плохо то хранить в Кассандре?

Денис
20.02.2018
12:13:30

Google

Denis
20.02.2018
12:13:42
Опять уход от ответа
Ты задаешь общий вопрос и хочешь получить конкретный ответ. Задай вопрос нормально.

Pavel
20.02.2018
12:13:47

Денис
20.02.2018
12:13:47

Denis
20.02.2018
12:14:27
Сколько файлов, какой размер, сколько клиентов из читает и т.д. после этого уже можно что-то конкретное сказать.

Pavel
20.02.2018
12:14:29

Денис
20.02.2018
12:14:37
Пример с Кассандрой, кстати, описывает вполне конкретный, и, откровенно говоря, не самый распространённый кейс, потому что в 99 случаев из 100 ты не Волмарт

Pavel
20.02.2018
12:15:31

Денис
20.02.2018
12:15:37

Ivan
20.02.2018
12:17:22
если хранить в кассандре то привязан к кассандре если не в ней то не привязан
что не ясно то
у тебя кассандра это кластер из 3х серверов например

Pavel
20.02.2018
12:17:48

Ivan
20.02.2018
12:17:55
значит картинки можно масштабировать на 3 сервера

Денис
20.02.2018
12:18:07

Pavel
20.02.2018
12:18:14

Ivan
20.02.2018
12:18:23
к файловой системе
к ней все привязаны
ты можешь спокойно масштабировать картинки на 500 серверов и не возится с кассандрой

Google

Ivan
20.02.2018
12:18:57
которая тебе на этих 500 серверах нафиг не нужна

Denis
20.02.2018
12:19:10

KrivdaAllStars
20.02.2018
12:20:08
При любом количестве файлов
Плюс у тебя контроль того, что файл действительно есть хоть какой то

Денис
20.02.2018
12:21:10

Ivan
20.02.2018
12:21:44
если я хочу перелезть с кассандры на что то еще
что делать?
с url все более менее просто

KrivdaAllStars
20.02.2018
12:22:00
Как размещать Файлы Новым способом

Денис
20.02.2018
12:22:36
С ней не нужно возиться
>Split up larger objects into smaller chunks and store them in different nodes of the Cassandra cluster
Perform async parallel write of object chunks to several nodes at once speeding up the total write time taken
Perform async parallel read of object chunks and do the aggregation at the application level
Even better would be to directly stream the chunks in-order using transfer-encoding Chunked supported by Http protocol, thereby eliminating the need for the application to have anything in memory
Это действительно не требует возни?

KrivdaAllStars
20.02.2018
12:22:58
Потому что у тебя нет столько картинок
Как у волмарта

Денис
20.02.2018
12:23:24
Кек