Search
Write a publication
Pull to refresh
7
0

Software Engineer

Send message

Вот я комментарий не увидела, а Вы — информации в написанном тексте.
Повторять очевидные вещи утомительное занятие, ответы на все вопросы есть и местами не по одному разу в разных формах. Одного комментария про рефлекшен более, чем достаточно, чтобы удовлетворить даже самого некомпетентного человека. Но так как я невероятно терпелива и это блог компании, а не мой, попробую объяснить ещё один раз (числительное — ключевое слово).
Основная идея этой библиотеки в том, чтобы пользователь не задумывался о внутренней структуре данных аероспайка и о том, как из пришедших к нему данных вытащить искомое. Также не должен размышлять, как эти данные хранить, это тоже продумано за него. Плюс рефлексии в макросах достаточно понятен (очень надеюсь, что это так), также важно, что код для различных типов как скажем в шэйплиссе писать не надо, все имплиситные врапперы сгенерируются сами "по требованию" — то есть именно те, которые Вы намерены использовать, а именно: если Вы напишете, что ваш бин "some s" — будет сгенерирован только один инстанс враппера, один, а не сто (числительное тут не конкретное, это просто утрирование, хотя по сути, при написании подобной библиотеки можно убить достаточно много времени, прописывая все типы, о чем прекрасно написано в гисте, который я написала в самом начале — посмотрите ещё разок на пример под номером один, и если все ещё не будет понятен профит — посмотрите ещё два раза).
Если Вам все ещё не понятно прошу не писать тут больше комментариев, потому что весь скаловый букварь в приложении к этой статье совершенно не нужен.

Во всех предыдущих комментариях изложено все, включая последний мой ответ про рефлекшен (Вы посмотрели внимательно, надеюсь). Тот факт, что Вам не довелось работать или разобраться с макросами не означает, что против их использования надо выступать.
Зря удалили комментарий, все равно отвечу: конечно, я поняла этот код, как иначе

Если посмотрите чуть внимательнее, заметите, что этот код вызывается внутри макросов.

Какой именно момент Вы хотите описать при помощи готового решения? Что это за решение будет?

Хорошо. Вы предположим Джейсон руками разбираете или подключаете что-то чтоб "само" разобралось?
Это то самое, что сделает само, но для данной базы.

Все в порядке, извинения приняты)

Если коротко, у нас база, в которую можно положить что угодно любого типа. java client возвращает некий Record, в котором лежит интересный нам Map<String, Object>. Тип, конечно, съедобный, но не вкусный, согласитесь? Мне нравится возможность положить в одном месте в базу HList или case class Human и потом в любом другом месте (сервиса, приложения) его достать. То есть получить именно тот HLIst/Human, который я сохранила.
Тут вы скажете, как же это мы получим и где гарантии? Гарантий нет. Как и в любом другом случае нет такой силы во Вселенной, которая могла бы помочь Вам или мне, или кому-то еще контролировать, что/как еще кладется по нашему ключу ВНЕ приложения. Но. Данная библиотека помогает, делая максимум работы за нас, позволяя нам в случае неприкосновенности без нашего ведома данных (то есть Вася, сидящий в соседнем отделе, не решит взять и переписать именно Ваш сэт и сохранить там вместо информации по книгам в библиотеке свою любимую песенку в любом доступном его фантазии виде) получить желаемый тип.
Пользуясь этой оберткой Вы пишете грубо говоря:

def saveBook(b: Book): Future[Unit] = ???
def getBook(k: String): Future[Book] = ???

и не разбираете сами руками как там внутри этого драйвера сохранена Ваша книга. Конечно, зная значение ключа.

Я думала уже над тем, как обезопасить свои данные от Василиев всех мастей, вероятно можно посмотреть на настройки в самом Аероспайке и определенному пользователю выдавать права на тот или иной сет. В коде библиотеки в таком случае можно будет описать дополнительные настройки для служебных объектов (типа Writer и тп). В доработках уже достаточно большой список «хотелок» и если Вы работаете на scala с Аероспайком Ваши пожелания мне интересны и будет здорово, если Вы запишите их в issues.

Я хотела дифференс выделить максимально ярко, но вижу Вы и без того все поняли.

В холиварах я не мастер и спорить на тему эту смысла не вижу. В любом инструменте главное применение, будь это язык или какая-то его особенность/библиотека.
У макросов достаточно вариантов использования, каждый выбирает свой в зависимости от задачи. Тут же тоже вопрос удобства возникает: вам надо подняться с первого этажа на пятый — можно пешком, можно на лифте.
Я понимаю Ваше замешательство. Цель статьи была показать, как макросы могут облегчить разработку.
Насчет кода самой библиотеки — комментарии были вынесены мной в отдельную директорию специально, потому как на мой взгляд легче читать код, не отвлекаясь на текст. В кукбуке https://github.com/TinkoffCreditSystems/aerospike-scala/tree/master/cookbook я подробно описала, как именно использовать на примерах, максимально наглядно. Уверена, прочитав примеры и мое разъяснение вот тут https://gist.github.com/DanyMariaLee/2774f10e64e6aaff2e855061aa74a16c, часть, а может и все вопросы исчезнут.

Если после прочтения останутся вопросы я буду рада на них ответить и помочь Вам разобраться.
Привет! Я постаралась объяснить в гисте https://gist.github.com/DanyMariaLee/2774f10e64e6aaff2e855061aa74a16c
Если что-то не достаточно ясно, могу развернуть еще или отправить к литературе соответствующей
Если будут вопросы пишите, конечно, обмен опытом всегда на пользу!
1) можем держать 2,5 тб
2) бесплатная
Спасибо! Обязательно напишу про работу с мета.
Какое приятное соседство у тебя)

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Registered
Activity