В прошлом посте об Инополисе писал про курсы с мат. анализом и линейной алгеброй. Оказалось, что кому-то интересно и про сами онлайн курсы. В своем блоге дал обзор на них и рассказал как пройти их бесплатно. Почитать можно по ссылке: /channel/from_junior_to_senior/94
Читать полностью…Kotlin Generics
Время чтения: 25 мин.
Первый релиз языка Kotlin включает в себя Kotlin Generics. Обобщенные типы, благодаря которым мы с вами можем писать более гибкие приложения с меньшим дублированием кода и большей типобезопасностью. Одно из важных преимуществ, которое дает вашему приложению использование Generics - проверка типов на этапе компиляции. Дизайнеры языка Kotlin ввели новые ключевые слова для работы с дженериками, что по началу может ввести в ступор даже опытного Java разработчика. Сегодня мы с вами обсудим что такое “дженерики”, удалим страх перед словами типа “контравариантность”, а заодно познакомимся с reified generics и star-projection.
Читать статью:
/channel/iv?url=https%3A%2F%2Fi-osipov.ru%2Fpost%2Fkotlin-generics%2F&rhash=cc209de8fde944
Protocol Buffers
Когда передача данных в виде JSON и XML объектов кажется слишком тяжеловесной, на помощь, в качестве альтернативы, приходит Protocol Buffers. Сегодня мы с вами разберемся с этим набирающим популярность протоколом сериализации и напишем небольшой демонстрационный пример на Java.
Статья:
/channel/iv?url=https%3A%2F%2Fi-osipov.ru%2Fpost%2Fprotocol-buffers%2F&rhash=cc209de8fde944
Семантическое версионирование 2.0
Время чтения: 5 минут
Восхитительное чувство, когда один раз взглянув на новую версию сторонней библиотеки ты понимаешь, можно ли её смело обновлять или нужно быть готовым к изменениям в собственном коде. В сухую нумерацию пакетов вносит осмысленность Семантическое Версионирование.
Статья:
/channel/iv?url=https%3A%2F%2Fi-osipov.ru%2Fpost%2Fsemanantic-versioning-2_0%2F&rhash=cc209de8fde944
Instant View in Action
Полное руководство по разработке Instant View
Пользуетесь функцией Instant View? Это кнопочка в самом низу поста, который содержит в себе ссылку. При клике на кнопку вам становится доступен контент, который вы получите перейдя по ссылке, но при этом контент вы просматриваете прямо внутри телеграмма. Самый частый гость на просторах нашего мессенджера это telegra.ph, как его опытный пользователь могу сказать, что это отличный и простой как 5 копеек сервис для написания статей с минимумом возможностей. Однако, если у вас есть любимый сайт с которого вы хотели бы закидывать статьи прямо в соседний чат и для него телеграм до сих пор не поддерживает Instant View, то это можно исправить. На примере своего сайта я покажу и объясню как настроить Instant View для вашего случая, а результат вы увидите во время чтения этого поста с телефона.
Статья:
/channel/iv?url=https%3A%2F%2Fi-osipov.ru%2Fpost%2Finstant-view-in-action%2F&rhash=cc209de8fde944
Квантовые компьютеры сегодня
С чего начать год, как не с революционных технологий? История квантовых компьюторов тянется из прошлого века, но последние 2-3 года эта сфера интересует всё большее количество людей. В основе квантового компьютера стоит понятие кубита.
Кубит это наименьший элемент хранения информации по аналогии с битами в классическом компьютере. Его ключевое отличие в том, что при изменении его состояния он случайно переходит из 0 в 1 и наоборот. Пока мы не наблюдаем за кубитом его состояние описывается суперпозицией двух возможных состояний, в тот момент когда мы ставим средство наблюдения, магия квантового мира разрушается и значение становится определенным, только вот нам не обязательно наблюдать за значениями в ходе получения решения. Это и другие фантастические вещи из квантового мира позволяют решать некоторые задачи очень быстро.
Сегодня за первенство на рынке квантовых компьютеров борется сразу несколько компаний, среди которых IBM, D-Wave и подключившийся в 2015 году Intel. Ключевым приемуществом квантовых компьютеров перед классическими является возможность выполнять вычисления параллельно на физическом уровне опираясь на квантовую теорию. Такой подход поможет решать комбинаторные задачи в миллионы раз быстрее, чем это происходит сейчас на классических ПК.
Сегодня, компания IBM делает очень большой вклад в развитие инфраструктуры квантовых компьютеров. Компания, которая проспала мобильную революцию, в ноябре 2017 года реализовала 50 кубитный квантовый компьютер, что является хорошим показателем для универсальных квантовых компьютеров. Вы можете встретить упоминания о том, что d-wave продали свой 2000 кубитный компьютер, но обратите внимание на то, что он адиабатический, по сути это другой подход к реализации, направленный на конкретные задачи, а не что-то универсальное. Развивая спрос IBM выпускает обучающие видео, которые знакомят людей с этим новым сранным миром квантовых вычислений.
На рынке квантовых технологий есть еще одно направление - квантовые сенсоры. Всё в том же ноябре 2017 года Apple купила стартап InVisage, который разрабатывал "квантовую плёнку", по сути через несколько лет мы можем увидеть новый IPhone с камерой, которая даже при контрастном освещении не теряет объекты, а при низкой освещённости сможет делать снимки с дневным качеством.
Квантовые технологии - это важный фронт прогресса компьютерных вычислений. Не смотря на то, что в бытовых условиях мы с вами врядли увидим реализации на основе атомов охлажденных до "около" абсюлютного нуля, скорее здесь приживется подход от IBM на базе конденсаторов из ниобия, нелинейного алюминиевого моста и кремниевого чипа. Тем не менее, уже сегодня в этой области развиваются квантовые облачные вычисления и первое с чем я предлагаю вам познакомиться это IBM Quantum Experience. По сути, это облачная платформа, которая знакомит вас с построение программ для квантовых компьютеров. Похоже на что-то революционное. Пойду изучать, ниже ссылка
IBM Q Experience: https://goo.gl/YN9LCA
API Docs
Как вы пишете доки к API приложения? Какие средства используете? Документация актуальна? Часто для документирования HTTP API используется swagger, простой и понятный инструмент, но сегодня мы поговорим о чем-то чуть более сложном, о чем-то чуть более продвинутом, а именно о Spring REST Docs. Довольно удивительно, что в разных кругах REST обозначает не сколько стиль архитектуры, сколько, в принципе, использование HTTP для построения API приложения. Spring Rest Docs (SRD) - это один из проектов Spring, который позволяет писать документацию к вашим REST сервисам и вот каким образом. Знакомы с TDD? Успели полюбить написание тестов? Здесь это пригодится. Документация в проекте SRD генерируется на основе написанных вами тестов. Как это выглядит?
Упрощенно, процесс следующий: пишем тест -> запускаем его -> генерируется сниппет в формате asciidoctor -> сниппет компилируется в html/pdf/другие форматы.
Тест для Spring Boot выглядит следующим образом.
Вы конфигурируете объект MockMvc, например, так (JUnit 5)
@SpringBootTest
@ExtendWith({RestDocumentationExtension.class, SpringExtension.class})
public class SampleJUnit5ApplicationTests {
@Autowired
private WebApplicationContext context;
private MockMvc mockMvc;
@BeforeEach
public void setUp(RestDocumentationExtension restDocumentation) {
this.mockMvc = MockMvcBuilders
.webAppContextSetup(context).apply(
documentationConfiguration(
restDocumentation))
.build();
}
...
}
@Test
public void sample() throws Exception {
this.mockMvc.perform(get("/"))
.andExpect(status().isOk())
.andDo(document("sample"));
}
ICO Телеграм
Таким просто нельзя не поделиться. Есть подкрепленные слухи о том, что Телеграм будет проводить ICO, если вы не в курсе криптовалютного мира, то это процесс, когда происходит первичное размещение криптомонет. Название проекта Telegram Open Network. Судя по тому что пишут - это хороший способ монетизировать мессенджер и при этом не забрасывать мессенджер рекламой или чем похуже. Грядёт что-то интересное. Надеюсь, что это продвинется дальше чем просто слухи.
Источник: https://www.facebook.com/id77777/posts/10154846872521076
У вас есть коллеги, которые не знают русский язык? Моя статья Kotlin DSL: from theory to practice вышла на английском языке, почитать можно по ссылке
https://www.cuba-platform.com/blog/kotlin-dsl-from-theory-to-practice
Статья
Алгоритмы поиска кратчайшего пути: Поиск в ширину
Автор: @ivan_osipov
Время чтения 🕔: 10 минут
Описание:
Хотите наконец разобраться в поиске путей по графу? Первый алгоритм, который мы рассмотрим, поиск в ширину. В статье мы разберем алгоритм, особенности реализации и пример. Также вы найдете ссылки на исходники, которые можете переиспользовать при решении собственных задач.
Читать: Алгоритмы поиска кратчайшего пути: Поиск в ширину
Теги: #java #pathfinding #algorithms
🍽 Анонс
Алгоритмы поиска кратчайшего пути: BF, Дейкстра, A Star
Уже завтра начинается Russian AI Cup. Последние дни я провёл в изучении алгоритмов поиска пути, а это значит, что самое время написать об этом. В ближайших статьях мы с вами рассмотрим практическое применение алгоритмов поиска по графу, а именно алгоритм поиска в ширину, алгоритм Дейкстры и A Star. Меня утомляют скучные объяснения, по этому, я простым языком расскажу о том как алгоритмы работают и могут быть применены, дам ссылки на очень крутые источники, более того, скину исходники алгоритмов на Java, которыми вы сможете воспользоваться для решения своих задач. Присоединяйтесь к участию и присылайте свои результаты!
Читать другие статьи: t.me/djuupbot
Статья
Генетический алгоритм: эволюция помогает подросткам
Автор: @ivan_osipov
Время чтения 🕔: 6 минут
Описание:
Генетический алгоритм — мощный инструмент в решении практических задач. Мы с вами разберем каким образом можно представить задачу цепочки действий в виде, пригодном для решения с помощью ГА. Обсудим причины процесса мутации и Cycle Crossover. В статье вы найдете ссылку на библиотеку с готовой реализацией структуры ГА и примеры использования.
Читать: Генетический алгоритм: эволюция помогает подросткам
Теги: #java #ga #algorithms
Взрывная новость! Russian AI Cup 2017 стартует совсем скоро! Пару месяцев назад я писал статьи об этом чемпионате и опыте участия в 2016 году и вот случилось! Для того, чтобы понять, что это будет в 2017 году ссылка на хабр ниже:
https://m.habrahabr.ru/company/mailru/blog/340540/
Статьи, которые я писал:
/channel/djuup/22
/channel/djuup/24
Статья
Путь в Maven Cental - Как опубликовать свою библиотеку? 🚛
Автор: @ivan_osipov
Время чтения 🕔: 29 минут
Описание:
Пожалуй, одна из самых сложных дорог ведет в Maven Central Repository. Публикация туда - это самый настоящий горный серпантин со множеством нюансов и требований. Зачем нужа лицензия? Как правильно подписать файлы с помощью GPG? Детальный, пошаговый разбор того, как имея в арсенале Gradle опубликовать собственную библиотеку.
Читать: Путь в Maven Cental - Как опубликовать свою библиотеку?
Теги: #gradle #maven #publication #article
Channel Release 1.0
Прежде всего, хочу сказать спасибо подписчикам, которые читают статьи и участвуют в голосованиях. Вы — сердце этого канала.
Те, кто с нами с самого начала, могли заметить, как канал выстраивал свой формат и продолжает это дело, мы, вместе с вами, движемся вперед и развиваемся.
Что за релиз?
Релизом назовем набор фич, которые связаны с каналом. Ниже фичи релиза 1.0:
1. Кнопка Поддержать автора - по желанию автора статьи под его творчеством может быть размещена ссылка на его Яндекс.Деньги или другой аналог. Любой из читателей может поддержать автора кликнув на соответствующую кнопку.
2. Канал приобрел собственное рисованное лицо, благодаря одному талантливому, но анонимному художнику.
3. У нас появился свой бот, в котором можно полистать статьи, рассортированные по категориям и времени, сохранить себе в личной истории, а затем, например, почитать, когда пропадёт интернет, через Instant View. Все ссылки будут в конце.
4. У нас появился свой чат в котором вы можете обсудить новые статьи или кинуть помидорами в автора материала.
5. Джун в соц сетях. Группа в ВК — это анонсы и оповещения людей, которые только приходят в телеграм. Твиттер — для ваших друзей, которые принципиально не ставят телеграм, но это лишь дубль канала с задержкой в публикации.
6. Что такое goo.gl? goo.gl - это сервис от Google для сокращения ссылок и сбора статистики, это валидные ссылки, которые помогают делать канал лучше, анализируя активность
Ниже вы найдете ссылки на бота, чат, соцсети.
Поздравляю с релизом!
До встречи!
Опубликовать статью
Бот для навигации по статьям
Чат для обсуждений
ВК
Твиттер
#release
Сейчас прохожу очередные онлайн курсы, вспоминаю мат. анализ и линейную алгебру, даже жаль, что в моем институте её подавали не так круто, как это делают современные преподаватели, особенно те, кто успел поработать в реальных проектах и применить знания на практике. У онлайн курсов есть один весомый недостаток - отсутствие погружения. Вы можете начинать курсы как угодно часто и бросать их так же часто, более менее реальный вариант - оплатить обучение, но какие есть альтернативы? Вы, наверное, слышали о городе Иннопо́лис с одноименным университетом? Так вот, оказалось, что учиться там можно абсолютно бесплатно. Это то самое реальное погружение в комьюнити и процесс обучения, чего не даст ни один онлайн курс, погружение, которое поможет по настоящему пробить карьерный потолок. Однако, уверен, вам, как и мне, кажется, что "бесплатно" это подозрительно. Оказывается, туда действительно серьёзный отбор, нужны знания Intermediate знания английского, хорошо, что записаться не сложно. Есть 4 направления: Управление разработкой ПО, Разработка безопасных систем и сетей, Управление большими данными, Робототехника. Нашел статью на хабре https://habrahabr.ru/article/329364/ Очень интересно было почитать истории действующих разработчиков, которые уехали учиться. Для тех, кто захотел получить образовательный грант, есть ссылка на описание конкурса в 2018: https://apply.innopolis.ru/~weW4O Был прямо удивлен, когда среди историй прочитал о том, как ребятам довелось пообщаться с Кентом Беком.
Читать полностью…Система типов в Kotlin
Сейчас пишу статью по Kotlin Generics и тем временем решил освежить знания об иерархии типов. Нашёл отличную статью, которая на пальцах в картинках разбирает иерархию типов, включая Any, Nullable Types, Unit и Nothing. Для новичков в Kotlin - cтатья полезная, для опытных разработчиков, только если закрыть какие-то пробелы.
Ссылка на статью:
http://natpryce.com/articles/000818.html
Хорошие новости!
6-7 апреля состоится конференция JPoint 2018 в Москве. Я там буду выступать с докладом Kotlin DSL: Теория и Практика. Больше подробностей по ссылке в конце. Учитывая количество статей на эту тему от меня, вы, вероятно, уже знакомы с основами, а доклад - это отличная возможность закрепить знания и, конечно, приходите просто познакомиться!
Ссылка на доклад: https://goo.gl/pSZigZ
Шаблон TolerantReader и Закон Постела
Время чтения: 8 минут
При взаимодействии множества систем постоянно встает вопрос об интеграции. Когда мы начинаем работать с чьим-то API, существует риск, что с представители API могут его изменить и мы будем к этому не готовы. Системы эволюционируют, развиваются и, порой, следствие этой эволюции - развитие API. По началу, изменения могут быть незначительными, почти совместимыми, но даже к таким изменениям мы должны быть готовы. С обратной стороны, когда мы кому-то отдаем своё API, нам нужно понимать, что наши клиенты могут быть готовы к переменам, если мы будем осторожны, консервативны к изменениям.
Статья:
/channel/iv?url=https%3A%2F%2Fi-osipov.ru%2Fpost%2Fpostels-law-and-tolerant-reader%2F&rhash=cc209de8fde944
Кодогенерация
Два года назад я узнал о проекте jooq. Это генерация кода с помощью которого можно работать с БД из Java. Автоматически создаются классы на основе схемы бд. Тогда это мне показалось чем-то новым, но с тех пор прошло время и генерация кода стала ощущаться чем-то странным. Тем не менее сама по себе задача интересная и отчасти уже решена. На днях открыл для себя библиотеку JavaPoet и её разновидность KotlinPoet, которая сейчас в Early-Access Release, но это нас не остановит, не так ли?
Создадим пустой проект на Kotlin и подцепим gradle зависимость
compile 'com.squareup:kotlinpoet:0.6.0'
val userClass = ClassName("example", "User")
val file = FileSpec.builder("example", "model")
...
.build()
file.writeTo(System.out)
build()
происходит основной экшен. Например, мы можем добавить класс User в этот файл:.addType(TypeSpec.classBuilder(userClass)
...
.build())
.build()
lateinit val
, которые не скомпилируются. Итак, добавим к нашему классу свойство name:.addProperty(PropertySpec
.varBuilder("name", String::class, KModifier.LATEINIT)
.build())
.build()
package example
import kotlin.String
class User {
lateinit var name: String
}
Последний рабочий день в этом году закончился, а это значит, что впереди 2 недели отдыха смешанного с реализацией отложенных до "свободного времени" идей и личностного роста. Этот год в самом его начале я обозвал "годом перемен", всё так и произошло. В этом году я закончил магистратуру, успел с женой дважды слетать в отпуск, посетил JPoint, в мою жизнь пришёл Kotlin, я открыл для себя мир телеграма, который затем открыл для меня мир статей, переслушал огромное колличество мотивирующей и бизнес литературы, что в корне изменило моё мышление и взгляды, начал свою дорогу в инвестировании и довольно успешно, сделал много открытий для себя лично, в общем год получился насыщенным. Всё это при поддержке моей жены, которой можно было довериться в любой ситуации. С Наступающим всех вас! Ставьте цели, идите к ним, не сомневайтесь и достигать задуманного. Помните, что остановиться в стремлении к лучшему можно в любой момент, так зачем это делать сейчас? Спасибо, что читаете! До следующего года!
Читать полностью…По ощущениям первая волна интереса к микросервисам утихла, теперь можно свежим взглядом посмотреть в эту сторону. Сейчас появилась хорошая инфраструктура для построения микросервисных архитектур, один Spring Cloud чего стоит. Плюс очевиден тренд на реактивные потоки данных (Reactive Streams). Плюс докер, который дает дополнительный уровень изоляции. Хотя я совершенно не верю в то, что написание микросервисов на разных языках это сколь-нибудь живой кейс, тем не менее сам подход интересный и влечет за собой решение большого количества интересных задач. Так, например, давайте ответим на вопрос, а как же нам авторизировать пользователя в каждом из микросервисов? Взглянем на прошлое. Существуют монолитные системы, все сервисы в одной куче, при входе вам выдаются права и проблем с их отслеживанием не возникает, но миктосервисы... Микросервисы сегодня это множество отдельно запускаемых приложений, в принципе, мы могли бы дать доступ каждому из них к бд с пользователями, но только представьте, какую нагрузку это даст на систему. Так дело не пойдет. В ходе изучения вопроса, я встретил следующий популярный вариант: пользователь аутентифицируется через OAuth2 на сервере авторизаций, который обладает полной информацией о пользователе, пользователь получает свого рода ссылку или токен, который вне сети микросервисов бесполезен, однако, при обращении к API, предоставив токен/ссылку, можно восстановить "значение" запросом от действующего сервера к серверу авторизаций. Значение в нашем случае это JSON Web Token. Полученный объект - это зашифрованная информация, расшифровать которую могут исключительно сервера с ключом. Получается, что сама информация о пользователе из сети микросервисов не выходит, а рамках неё - пропагируется, простым языком - прокидывается. Одно из условий - каждый сервер должен уметь расшифровать то, что он получил. Вот такой незатейливый способ авторизации по токену, который мы получаем от пользователя после его аутентификации. Ниже прикладываю ссылку на статью, где это всё более подробно разобрано, материал и его качетво хороши, так что если вы заинтересовались, то вперёд
https://nordicapis.com/how-to-control-user-identity-within-microservices/
Статья
Алгоритмы поиска кратчайшего пути: Алгоритм Дейкстры
Автор: @ivan_osipov
Время чтения 🕔: 8 минут
Описание:
Продолжим изучать поиск путей по графу? Второй алгоритм, который мы разберем, алгоритм Дейкстры. Теперь мы будем использовать взвешенный граф по которому и построим маршрут. В статье мы разберем алгоритм и пример применения в картинках. Ссылки на код, который можно запустить или переиспользовать при решении собственных задач, под катом.
Читать: Алгоритмы поиска кратчайшего пути: Алгоритм Дейкстры
Теги: #java #pathfinding #algorithms
VR (Virtual Reality) - огромная индустрия сегодня, когда я вижу новости от facebook об очередных достижениях в виртуальном мире, я не удивляюсь, что мои инвестиции в них растут. Вы только представьте соц сеть в виртуальной реальности... Убойно! Если вы до сих пор путаете VR и AR (Augmented Reality/Дополнительная реальность) прочитайте вот этот пост t.me/fit_predict/96. Нашел много интересной аналитики, новостей и даже приложения, которые следует испытать, вот здесь @fit_predict. Отличный агрегатор информации о перспективных технологиях.
Автор, ведущий data scientist, также публикует обзор интересных новостей, но основной уклон делает на информацию об интересных мероприятиях и обучающих программах в области искусственного интеллекта.
Привет всем! Хорошая новость!
Помните статью о DSL на Kotlin? Я переработал этот материал, подготовил реальный пример, который очень похож на то, что я сам использую на практике, написал огромную статью и отправил на хабр. Статья оформлена так, что вы можете использовать её как небольшой справочник и отсылать к ней своих начинающих разработчиков. В общем, думаю будет полезно.
Читать по ссылке habrahabr.ru/company/haulmont/blog/341402/
Генетический алгоритм
Что человечество научилось делать хорошо, так это заимствовать. В этот раз заимствование произошло у самой природы. Есть класс алгоритмов, которые называются метаэвристическими - это те, которые подглядели у природы и хорошо зашло в применении. Так появился генетический алгоритм в основе которого лежат целые популяции особей - решений. Этот алгоритм по праву считается универсальным, т.к. справляется с задачами из различных областей. Давайте решим вашу задачу (скажу сразу, что в разных источниках можно найти небольшие отклонения в именовании). Для начала сформируйте решение вашей задачи в виде вектора (набор цифр, например), такой вектор называется набором генов (каждая цифра вектора - это значение спрятанное в гене). Вектор - это хромосома, хромосом может быть несколько, но если ваш вектор целиком описывает решение, то хромосома всего одна. Хромосомы определяются генотипом, т.е. генотип обладает одной или более хромосом. В генетическом алгоритме на первом шаге создается первое поколение или популяция, которое представляет из себя набор особей с разнообразными генотипами. Из каждого, в том числе и первого, поколения выбираются лучшие особи. Способов выбора множество, список их вы найдете по запросу GA Selection. В зависимости от выбранного подхода к селекции (отбору), в дополнение к выбраным особям поколение допополняется либо их копиями, либо особями со случайным генотипом. Затем из обновленноного поколения мы случайным образом выбираем пары и выполняем операцию скрещивания. Полный список скрещиваний вы найдете по запросу GA Crossover. Вариантов масса, всё зависит от вашей задачи. От двух родителей получается два потомка, в некоторых случаях особь переходит в следующее поколение без изменений, иногда, с небольшой вероятностью особь может немного мутировать (GA Mutation), так мы обеспечиваем "метод иммитации отжига", когда благодаря случайным изменениям мы вырываемся из локального экстремума и исследуем поле значений более широко, т.к. скрещивания эталонных особей может загнать нас в локальный максимум или минимум целевой функции, которая оценивает особь. В итоге, спустя много поколений селекции, скрещивания и мутаций случайных решений вашей проблемы вы получаете отличное решение для абсолютно разных задач. Хотите статью на эту тему?
Поздравляю всех нас с Днем Программиста!
Да да, сегодня уже 256-й день в году. Здесь собрались, пожалуй, самые крутые разработчики, но почему так? Одна из главных задач программиста - учиться, постоянно учиться и двигаться вперед. Все вы, те, кто читает канал и статьи, совершенствуется в знаниях и растет - лучшие представители нашей профессии.
Вы могли заметить, что статья по мобильному приложению на Kotlin еще не вышла и причина этому - напряженная основная работа, которая никак меня не отпускает. Тех из вас, кто хочет читать больше и чаще, я приглашаю на свой второй канал t.me/from_junior_to_senior , там я пишу о технологиях и не только, в более свободном формате, выпускаю 20-минутные подкасты (ссылка на последний t.me/from_junior_to_senior/33), в общем жизнь кипит.
С праздником! Не забудьте поздравить коллег :)
Всем привет!
Спустя выходные, 3 рабочих дня ожидания и переписки с Sonatype могу смело утверждать, что моя библиотека добралась до Maven Central, а это значит, что я завершил путь в центральный репозиторий и статья практически готова. На канале она появится уже завтра. Как вы понимаете, формат этого канала - статьи и они выходят по мере готовности, однако, есть канал на котором я пишу о текущем состоянии дел, гляжу на новости и высказываю собственное мнение. Формат проще, пишу чаще и местами жестче, если я вас заинтересовал, то приходите, буду рад
@from_junior_to_senior
Статья
Kotlin. Часть 5. Пишем DSL ✍️
Автор: @ivan_osipov
Время чтения 🕔: 28 минут
Описание:
В пятой, заключительной, части базового цикла статей о Kotlin мы обсудим DSL (domain-specific language), как он способствует упрощению поддержки системы, я расскажу о собственном опыте, проблемах, которые возникают и, конечно, в деталях, разберу на основе чего и как можно построить собственный предметно-ориентированный язык.
Читать: Kotlin. Часть 5. Пишем DSL
Теги: #kotlin #java #programming #article