Всем привет!
Спустя выходные, 3 рабочих дня ожидания и переписки с Sonatype могу смело утверждать, что моя библиотека добралась до Maven Central, а это значит, что я завершил путь в центральный репозиторий и статья практически готова. На канале она появится уже завтра. Как вы понимаете, формат этого канала - статьи и они выходят по мере готовности, однако, есть канал на котором я пишу о текущем состоянии дел, гляжу на новости и высказываю собственное мнение. Формат проще, пишу чаще и местами жестче, если я вас заинтересовал, то приходите, буду рад
@from_junior_to_senior
Спустя выходные, 3 рабочих дня ожидания и переписки с Sonatype могу смело утверждать, что моя библиотека добралась до Maven Central, а это значит, что я завершил путь в центральный репозиторий и статья практически готова. На канале она появится уже завтра. Как вы понимаете, формат этого канала - статьи и они выходят по мере готовности, однако, есть канал на котором я пишу о текущем состоянии дел, гляжу на новости и высказываю собственное мнение. Формат проще, пишу чаще и местами жестче, если я вас заинтересовал, то приходите, буду рад
@from_junior_to_senior
Статья
Путь в Maven Cental - Как опубликовать свою библиотеку? 🚛
Автор: @ivan_osipov
Время чтения 🕔: 29 минут
Описание:
Пожалуй, одна из самых сложных дорог ведет в Maven Central Repository. Публикация туда - это самый настоящий горный серпантин со множеством нюансов и требований. Зачем нужа лицензия? Как правильно подписать файлы с помощью GPG? Детальный, пошаговый разбор того, как имея в арсенале Gradle опубликовать собственную библиотеку.
Читать: Путь в Maven Cental - Как опубликовать свою библиотеку?
Теги: #gradle #maven #publication #article
Путь в Maven Cental - Как опубликовать свою библиотеку? 🚛
Автор: @ivan_osipov
Время чтения 🕔: 29 минут
Описание:
Пожалуй, одна из самых сложных дорог ведет в Maven Central Repository. Публикация туда - это самый настоящий горный серпантин со множеством нюансов и требований. Зачем нужа лицензия? Как правильно подписать файлы с помощью GPG? Детальный, пошаговый разбор того, как имея в арсенале Gradle опубликовать собственную библиотеку.
Читать: Путь в Maven Cental - Как опубликовать свою библиотеку?
Теги: #gradle #maven #publication #article
Telegraph
Путь в Maven Cental - Как опубликовать свою библиотеку?
Аккаунты автора: GitHub Время чтения: 29 минут Хеллоу, ворлд! Иногда, у разработчиков встает вопрос: "У меня есть библиотека в которой лежит код и я считаю, что он нужен всем всем всем. Куда мне его положить?". Самое время ответить на этот вопрос на примере…
В своей последней статье я рассказывал о том как Gradle выручает в автоматизации публикации релизов. Специально для моих подписчиков на канале @itlibrary наша коллега выложила книгу "Учебник по Gradle" на русском языке! Вот ссылка https://news.1rj.ru/str/itlibrary/195. Книга отличная, читая отдельные главы получил нереальное удовольствие от прочтения. Кроме того, там вы найдете и другие книжки для программистов. Все книги здесь: @itlibrary
Telegram
IT Библиотека
📓 Учебник по Gradle
Мы нашли для вас единственный учебник на русском языке по Gradle при поддержке канала для девелоперов @djuup.
Gradle пытается объединить в себе все плюсы Ant, Maven и Ivy. И представить то, что получилось, с помощью Groovy. Теперь вместо…
Мы нашли для вас единственный учебник на русском языке по Gradle при поддержке канала для девелоперов @djuup.
Gradle пытается объединить в себе все плюсы Ant, Maven и Ivy. И представить то, что получилось, с помощью Groovy. Теперь вместо…
Анонс
Kotlin в Android — Введение 📱️
В мае 2017 года Google объявили о том, что в мире больше
2 000 000 000 активных андроид устройств. В тот же день они рассказали, что Kotlin для android получит первоклассную поддержку наравне с Java. Самое время заглянуть в мир мобильных устройств и сделать небольшое приложение на Kotlin.
А пока автор закупает RAM для эмулятора и android studio, вы можете почитать предыдущие статьи на канале
Kotlin в Android — Введение 📱️
В мае 2017 года Google объявили о том, что в мире больше
2 000 000 000 активных андроид устройств. В тот же день они рассказали, что Kotlin для android получит первоклассную поддержку наравне с Java. Самое время заглянуть в мир мобильных устройств и сделать небольшое приложение на Kotlin.
А пока автор закупает RAM для эмулятора и android studio, вы можете почитать предыдущие статьи на канале
Всем привет!
Хотел напомнить, что в перерывах между статьями, вы можете прокачивать и освежать свои знания вместе со мной на втором канале. Информация там так и бьёт ключом. Из последнего:
О функциональных классах и лямбдах в Java:
t.me/from_junior_to_senior/14
О сборщиках мусора:
t.me/from_junior_to_senior/15
Сортировки:
t.me/from_junior_to_senior/18
Как работает вставка в красно-черное дерево (вставка в TreeSet/TreeMap):
t.me/from_junior_to_senior/19
Присоединяйтесь: @from_junior_to_senior
Хотел напомнить, что в перерывах между статьями, вы можете прокачивать и освежать свои знания вместе со мной на втором канале. Информация там так и бьёт ключом. Из последнего:
О функциональных классах и лямбдах в Java:
t.me/from_junior_to_senior/14
О сборщиках мусора:
t.me/from_junior_to_senior/15
Сортировки:
t.me/from_junior_to_senior/18
Как работает вставка в красно-черное дерево (вставка в TreeSet/TreeMap):
t.me/from_junior_to_senior/19
Присоединяйтесь: @from_junior_to_senior
Статья
Корни, ссылки, достижимость в Java 🔗
Автор: @ivan_osipov
Время чтения 🕔: 8 минут
Описание:
Сборщик мусора на этапе поиска недостиживых объектов обходит дерево достижимых из корневых объектов. В этой статье мы разберемся, что за мягкие, слабые и фантомные ссылки, зачем нужны очереди ссылок и что значит "достижимость", рассмотрим, кто такие корневые объекты, и узнаем, как управлять финализацией объекта.
Читать: Корни, ссылки, достижимость в Java
Теги: #java #gc #article
Корни, ссылки, достижимость в Java 🔗
Автор: @ivan_osipov
Время чтения 🕔: 8 минут
Описание:
Сборщик мусора на этапе поиска недостиживых объектов обходит дерево достижимых из корневых объектов. В этой статье мы разберемся, что за мягкие, слабые и фантомные ссылки, зачем нужны очереди ссылок и что значит "достижимость", рассмотрим, кто такие корневые объекты, и узнаем, как управлять финализацией объекта.
Читать: Корни, ссылки, достижимость в Java
Теги: #java #gc #article
Telegraph
Корни, ссылки, достижимость в Java
Как сборщик мусора в Java определяет, что объект пора уничтожить? В общем случае, объект должен оказаться "недостижим" из "корневых" объектов, но всегда ли это так? Если мы говорим о жестких ссылках, то да. Однако в Java существует 4 вида ссылок: жесткие;…
Поздравляю всех нас с Днем Программиста!
Да да, сегодня уже 256-й день в году. Здесь собрались, пожалуй, самые крутые разработчики, но почему так? Одна из главных задач программиста - учиться, постоянно учиться и двигаться вперед. Все вы, те, кто читает канал и статьи, совершенствуется в знаниях и растет - лучшие представители нашей профессии.
Вы могли заметить, что статья по мобильному приложению на Kotlin еще не вышла и причина этому - напряженная основная работа, которая никак меня не отпускает. Тех из вас, кто хочет читать больше и чаще, я приглашаю на свой второй канал t.me/from_junior_to_senior , там я пишу о технологиях и не только, в более свободном формате, выпускаю 20-минутные подкасты (ссылка на последний t.me/from_junior_to_senior/33), в общем жизнь кипит.
С праздником! Не забудьте поздравить коллег :)
Да да, сегодня уже 256-й день в году. Здесь собрались, пожалуй, самые крутые разработчики, но почему так? Одна из главных задач программиста - учиться, постоянно учиться и двигаться вперед. Все вы, те, кто читает канал и статьи, совершенствуется в знаниях и растет - лучшие представители нашей профессии.
Вы могли заметить, что статья по мобильному приложению на Kotlin еще не вышла и причина этому - напряженная основная работа, которая никак меня не отпускает. Тех из вас, кто хочет читать больше и чаще, я приглашаю на свой второй канал t.me/from_junior_to_senior , там я пишу о технологиях и не только, в более свободном формате, выпускаю 20-минутные подкасты (ссылка на последний t.me/from_junior_to_senior/33), в общем жизнь кипит.
С праздником! Не забудьте поздравить коллег :)
Forwarded from From Junior to CTO (Ivan Osipov)
Взрывная новость! Russian AI Cup 2017 стартует совсем скоро! Пару месяцев назад я писал статьи об этом чемпионате и опыте участия в 2016 году и вот случилось! Для того, чтобы понять, что это будет в 2017 году ссылка на хабр ниже:
https://m.habrahabr.ru/company/mailru/blog/340540/
Статьи, которые я писал:
https://news.1rj.ru/str/djuup/22
https://news.1rj.ru/str/djuup/24
https://m.habrahabr.ru/company/mailru/blog/340540/
Статьи, которые я писал:
https://news.1rj.ru/str/djuup/22
https://news.1rj.ru/str/djuup/24
Habr
Russian AI Cup 2017 — всем поклонникам StarCraft и C&C посвящается
Уже несколько лет подряд мы проводим Russian AI Cup — нехилый такой конкурс для всех неравнодушных к программированию в целом, к построению ИИ, просто к написанию ботов для игр или автоматизации...
Генетический алгоритм
Что человечество научилось делать хорошо, так это заимствовать. В этот раз заимствование произошло у самой природы. Есть класс алгоритмов, которые называются метаэвристическими - это те, которые подглядели у природы и хорошо зашло в применении. Так появился генетический алгоритм в основе которого лежат целые популяции особей - решений. Этот алгоритм по праву считается универсальным, т.к. справляется с задачами из различных областей. Давайте решим вашу задачу (скажу сразу, что в разных источниках можно найти небольшие отклонения в именовании). Для начала сформируйте решение вашей задачи в виде вектора (набор цифр, например), такой вектор называется набором генов (каждая цифра вектора - это значение спрятанное в гене). Вектор - это хромосома, хромосом может быть несколько, но если ваш вектор целиком описывает решение, то хромосома всего одна. Хромосомы определяются генотипом, т.е. генотип обладает одной или более хромосом. В генетическом алгоритме на первом шаге создается первое поколение или популяция, которое представляет из себя набор особей с разнообразными генотипами. Из каждого, в том числе и первого, поколения выбираются лучшие особи. Способов выбора множество, список их вы найдете по запросу GA Selection. В зависимости от выбранного подхода к селекции (отбору), в дополнение к выбраным особям поколение допополняется либо их копиями, либо особями со случайным генотипом. Затем из обновленноного поколения мы случайным образом выбираем пары и выполняем операцию скрещивания. Полный список скрещиваний вы найдете по запросу GA Crossover. Вариантов масса, всё зависит от вашей задачи. От двух родителей получается два потомка, в некоторых случаях особь переходит в следующее поколение без изменений, иногда, с небольшой вероятностью особь может немного мутировать (GA Mutation), так мы обеспечиваем "метод иммитации отжига", когда благодаря случайным изменениям мы вырываемся из локального экстремума и исследуем поле значений более широко, т.к. скрещивания эталонных особей может загнать нас в локальный максимум или минимум целевой функции, которая оценивает особь. В итоге, спустя много поколений селекции, скрещивания и мутаций случайных решений вашей проблемы вы получаете отличное решение для абсолютно разных задач. Хотите статью на эту тему?
Что человечество научилось делать хорошо, так это заимствовать. В этот раз заимствование произошло у самой природы. Есть класс алгоритмов, которые называются метаэвристическими - это те, которые подглядели у природы и хорошо зашло в применении. Так появился генетический алгоритм в основе которого лежат целые популяции особей - решений. Этот алгоритм по праву считается универсальным, т.к. справляется с задачами из различных областей. Давайте решим вашу задачу (скажу сразу, что в разных источниках можно найти небольшие отклонения в именовании). Для начала сформируйте решение вашей задачи в виде вектора (набор цифр, например), такой вектор называется набором генов (каждая цифра вектора - это значение спрятанное в гене). Вектор - это хромосома, хромосом может быть несколько, но если ваш вектор целиком описывает решение, то хромосома всего одна. Хромосомы определяются генотипом, т.е. генотип обладает одной или более хромосом. В генетическом алгоритме на первом шаге создается первое поколение или популяция, которое представляет из себя набор особей с разнообразными генотипами. Из каждого, в том числе и первого, поколения выбираются лучшие особи. Способов выбора множество, список их вы найдете по запросу GA Selection. В зависимости от выбранного подхода к селекции (отбору), в дополнение к выбраным особям поколение допополняется либо их копиями, либо особями со случайным генотипом. Затем из обновленноного поколения мы случайным образом выбираем пары и выполняем операцию скрещивания. Полный список скрещиваний вы найдете по запросу GA Crossover. Вариантов масса, всё зависит от вашей задачи. От двух родителей получается два потомка, в некоторых случаях особь переходит в следующее поколение без изменений, иногда, с небольшой вероятностью особь может немного мутировать (GA Mutation), так мы обеспечиваем "метод иммитации отжига", когда благодаря случайным изменениям мы вырываемся из локального экстремума и исследуем поле значений более широко, т.к. скрещивания эталонных особей может загнать нас в локальный максимум или минимум целевой функции, которая оценивает особь. В итоге, спустя много поколений селекции, скрещивания и мутаций случайных решений вашей проблемы вы получаете отличное решение для абсолютно разных задач. Хотите статью на эту тему?
Статья
Генетический алгоритм: эволюция помогает подросткам
Автор: @ivan_osipov
Время чтения 🕔: 6 минут
Описание:
Генетический алгоритм — мощный инструмент в решении практических задач. Мы с вами разберем каким образом можно представить задачу цепочки действий в виде, пригодном для решения с помощью ГА. Обсудим причины процесса мутации и Cycle Crossover. В статье вы найдете ссылку на библиотеку с готовой реализацией структуры ГА и примеры использования.
Читать: Генетический алгоритм: эволюция помогает подросткам
Теги: #java #ga #algorithms
Генетический алгоритм: эволюция помогает подросткам
Автор: @ivan_osipov
Время чтения 🕔: 6 минут
Описание:
Генетический алгоритм — мощный инструмент в решении практических задач. Мы с вами разберем каким образом можно представить задачу цепочки действий в виде, пригодном для решения с помощью ГА. Обсудим причины процесса мутации и Cycle Crossover. В статье вы найдете ссылку на библиотеку с готовой реализацией структуры ГА и примеры использования.
Читать: Генетический алгоритм: эволюция помогает подросткам
Теги: #java #ga #algorithms
Telegraph
Генетический алгоритм: эволюция помогает подросткам
Привет! Сегодня мы с вами обсудим один замечательный алгоритм и с его помощью спроектируем решение проблему построения цепочки действий. Генетический алгоритм Генетический алгорим (далее ГА) - это метаэвристический (metaheuristic) универсальный (general-purpose)…
Привет всем! Хорошая новость!
Помните статью о DSL на Kotlin? Я переработал этот материал, подготовил реальный пример, который очень похож на то, что я сам использую на практике, написал огромную статью и отправил на хабр. Статья оформлена так, что вы можете использовать её как небольшой справочник и отсылать к ней своих начинающих разработчиков. В общем, думаю будет полезно.
Читать по ссылке habrahabr.ru/company/haulmont/blog/341402/
Помните статью о DSL на Kotlin? Я переработал этот материал, подготовил реальный пример, который очень похож на то, что я сам использую на практике, написал огромную статью и отправил на хабр. Статья оформлена так, что вы можете использовать её как небольшой справочник и отсылать к ней своих начинающих разработчиков. В общем, думаю будет полезно.
Читать по ссылке habrahabr.ru/company/haulmont/blog/341402/
Habr
Kotlin DSL: Теория и Практика
Sql, RegExp, Gradle — что их объединяет? Всё это примеры использования проблемно-ориентированных языков или DSL (domain-specific language). Каждый такой язык решает свою узконаправленную задачу,...
🍽 Анонс
Алгоритмы поиска кратчайшего пути: BF, Дейкстра, A Star
Уже завтра начинается Russian AI Cup. Последние дни я провёл в изучении алгоритмов поиска пути, а это значит, что самое время написать об этом. В ближайших статьях мы с вами рассмотрим практическое применение алгоритмов поиска по графу, а именно алгоритм поиска в ширину, алгоритм Дейкстры и A Star. Меня утомляют скучные объяснения, по этому, я простым языком расскажу о том как алгоритмы работают и могут быть применены, дам ссылки на очень крутые источники, более того, скину исходники алгоритмов на Java, которыми вы сможете воспользоваться для решения своих задач. Присоединяйтесь к участию и присылайте свои результаты!
Читать другие статьи: t.me/djuupbot
Алгоритмы поиска кратчайшего пути: BF, Дейкстра, A Star
Уже завтра начинается Russian AI Cup. Последние дни я провёл в изучении алгоритмов поиска пути, а это значит, что самое время написать об этом. В ближайших статьях мы с вами рассмотрим практическое применение алгоритмов поиска по графу, а именно алгоритм поиска в ширину, алгоритм Дейкстры и A Star. Меня утомляют скучные объяснения, по этому, я простым языком расскажу о том как алгоритмы работают и могут быть применены, дам ссылки на очень крутые источники, более того, скину исходники алгоритмов на Java, которыми вы сможете воспользоваться для решения своих задач. Присоединяйтесь к участию и присылайте свои результаты!
Читать другие статьи: t.me/djuupbot
VR (Virtual Reality) - огромная индустрия сегодня, когда я вижу новости от facebook об очередных достижениях в виртуальном мире, я не удивляюсь, что мои инвестиции в них растут. Вы только представьте соц сеть в виртуальной реальности... Убойно! Если вы до сих пор путаете VR и AR (Augmented Reality/Дополнительная реальность) прочитайте вот этот пост t.me/fit_predict/96. Нашел много интересной аналитики, новостей и даже приложения, которые следует испытать, вот здесь @fit_predict. Отличный агрегатор информации о перспективных технологиях.
Автор, ведущий data scientist, также публикует обзор интересных новостей, но основной уклон делает на информацию об интересных мероприятиях и обучающих программах в области искусственного интеллекта.
Автор, ведущий data scientist, также публикует обзор интересных новостей, но основной уклон делает на информацию об интересных мероприятиях и обучающих программах в области искусственного интеллекта.
Telegram
Fit Predict
[#Аналитика]
Виртуальная и дополненная реальность (VR и AR) – что это?
Статья, где простым языком рассказывается, что такое VR и AR, в чём их ключевые особенности и отличия друг от друга.
Подробнее https://goo.gl/XrMfCh
Виртуальная и дополненная реальность (VR и AR) – что это?
Статья, где простым языком рассказывается, что такое VR и AR, в чём их ключевые особенности и отличия друг от друга.
Подробнее https://goo.gl/XrMfCh
Статья
Алгоритмы поиска кратчайшего пути: Поиск в ширину
Автор: @ivan_osipov
Время чтения 🕔: 10 минут
Описание:
Хотите наконец разобраться в поиске путей по графу? Первый алгоритм, который мы рассмотрим, поиск в ширину. В статье мы разберем алгоритм, особенности реализации и пример. Также вы найдете ссылки на исходники, которые можете переиспользовать при решении собственных задач.
Читать: Алгоритмы поиска кратчайшего пути: Поиск в ширину
Теги: #java #pathfinding #algorithms
Алгоритмы поиска кратчайшего пути: Поиск в ширину
Автор: @ivan_osipov
Время чтения 🕔: 10 минут
Описание:
Хотите наконец разобраться в поиске путей по графу? Первый алгоритм, который мы рассмотрим, поиск в ширину. В статье мы разберем алгоритм, особенности реализации и пример. Также вы найдете ссылки на исходники, которые можете переиспользовать при решении собственных задач.
Читать: Алгоритмы поиска кратчайшего пути: Поиск в ширину
Теги: #java #pathfinding #algorithms
Telegraph
Алгоритмы поиска кратчайшего пути: Поиск в ширину
Сегодня я хотел бы поделиться с вами одним не сложным алгоритмом поиска пути в графе, который называется "поиском в ширину" (breadth-first search). Здесь я не буду расписывать всю теорию графов, а объясню минимально необходимый набор для понимания алгоритма.…
Статья
Алгоритмы поиска кратчайшего пути: Алгоритм Дейкстры
Автор: @ivan_osipov
Время чтения 🕔: 8 минут
Описание:
Продолжим изучать поиск путей по графу? Второй алгоритм, который мы разберем, алгоритм Дейкстры. Теперь мы будем использовать взвешенный граф по которому и построим маршрут. В статье мы разберем алгоритм и пример применения в картинках. Ссылки на код, который можно запустить или переиспользовать при решении собственных задач, под катом.
Читать: Алгоритмы поиска кратчайшего пути: Алгоритм Дейкстры
Теги: #java #pathfinding #algorithms
Алгоритмы поиска кратчайшего пути: Алгоритм Дейкстры
Автор: @ivan_osipov
Время чтения 🕔: 8 минут
Описание:
Продолжим изучать поиск путей по графу? Второй алгоритм, который мы разберем, алгоритм Дейкстры. Теперь мы будем использовать взвешенный граф по которому и построим маршрут. В статье мы разберем алгоритм и пример применения в картинках. Ссылки на код, который можно запустить или переиспользовать при решении собственных задач, под катом.
Читать: Алгоритмы поиска кратчайшего пути: Алгоритм Дейкстры
Теги: #java #pathfinding #algorithms
У вас есть коллеги, которые не знают русский язык? Моя статья Kotlin DSL: from theory to practice вышла на английском языке, почитать можно по ссылке
https://www.cuba-platform.com/blog/kotlin-dsl-from-theory-to-practice
https://www.cuba-platform.com/blog/kotlin-dsl-from-theory-to-practice
www.jmix.io
Kotlin DSL: from Theory to Practice
SQL, RegExp, Gradle — what do they have in common? All of them represent an example of using domain-specific languages, or DSL. Languages of this type aim to solve a specific problem, such as database querying, finding matches in the text, or build process…
Forwarded from From Junior to CTO (Ivan Osipov)
По ощущениям первая волна интереса к микросервисам утихла, теперь можно свежим взглядом посмотреть в эту сторону. Сейчас появилась хорошая инфраструктура для построения микросервисных архитектур, один Spring Cloud чего стоит. Плюс очевиден тренд на реактивные потоки данных (Reactive Streams). Плюс докер, который дает дополнительный уровень изоляции. Хотя я совершенно не верю в то, что написание микросервисов на разных языках это сколь-нибудь живой кейс, тем не менее сам подход интересный и влечет за собой решение большого количества интересных задач. Так, например, давайте ответим на вопрос, а как же нам авторизировать пользователя в каждом из микросервисов? Взглянем на прошлое. Существуют монолитные системы, все сервисы в одной куче, при входе вам выдаются права и проблем с их отслеживанием не возникает, но миктосервисы... Микросервисы сегодня это множество отдельно запускаемых приложений, в принципе, мы могли бы дать доступ каждому из них к бд с пользователями, но только представьте, какую нагрузку это даст на систему. Так дело не пойдет. В ходе изучения вопроса, я встретил следующий популярный вариант: пользователь аутентифицируется через OAuth2 на сервере авторизаций, который обладает полной информацией о пользователе, пользователь получает свого рода ссылку или токен, который вне сети микросервисов бесполезен, однако, при обращении к API, предоставив токен/ссылку, можно восстановить "значение" запросом от действующего сервера к серверу авторизаций. Значение в нашем случае это JSON Web Token. Полученный объект - это зашифрованная информация, расшифровать которую могут исключительно сервера с ключом. Получается, что сама информация о пользователе из сети микросервисов не выходит, а рамках неё - пропагируется, простым языком - прокидывается. Одно из условий - каждый сервер должен уметь расшифровать то, что он получил. Вот такой незатейливый способ авторизации по токену, который мы получаем от пользователя после его аутентификации. Ниже прикладываю ссылку на статью, где это всё более подробно разобрано, материал и его качетво хороши, так что если вы заинтересовались, то вперёд
https://nordicapis.com/how-to-control-user-identity-within-microservices/
https://nordicapis.com/how-to-control-user-identity-within-microservices/
Nordic APIs
How To Control User Identity Within Microservices | Nordic APIs |
OAuth can be paired with OpenID Connect to perform delegation of user identity across microservices for secure and replicable control of access management.
Forwarded from From Junior to CTO (Ivan Osipov)
ICO Телеграм
Таким просто нельзя не поделиться. Есть подкрепленные слухи о том, что Телеграм будет проводить ICO, если вы не в курсе криптовалютного мира, то это процесс, когда происходит первичное размещение криптомонет. Название проекта Telegram Open Network. Судя по тому что пишут - это хороший способ монетизировать мессенджер и при этом не забрасывать мессенджер рекламой или чем похуже. Грядёт что-то интересное. Надеюсь, что это продвинется дальше чем просто слухи.
Источник: https://www.facebook.com/id77777/posts/10154846872521076
Таким просто нельзя не поделиться. Есть подкрепленные слухи о том, что Телеграм будет проводить ICO, если вы не в курсе криптовалютного мира, то это процесс, когда происходит первичное размещение криптомонет. Название проекта Telegram Open Network. Судя по тому что пишут - это хороший способ монетизировать мессенджер и при этом не забрасывать мессенджер рекламой или чем похуже. Грядёт что-то интересное. Надеюсь, что это продвинется дальше чем просто слухи.
Источник: https://www.facebook.com/id77777/posts/10154846872521076
Facebook
Anton Rozenberg
Telegram собрался на ICO. В последнее время я несколько раз слышал от участников рынка слухи о том, что Telegram планирует провести ICO. С одной стороны, это предположение кажется логичным. В том...
Forwarded from From Junior to CTO (Ivan Osipov)
Media is too big
VIEW IN TELEGRAM
FullHD ролик о Telegram Open Network
Forwarded from From Junior to CTO (Ivan Osipov)
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)
Затем с его помощью пишите тест, например, так
В результате у вас генерируются сниппеты, которые складываются в определенную папку в проекте, а уже из сниппетов генерируется документация. Какие я здесь вижу плюсы:
- документация всегда актуальна и есть пример запуска в виде теста;
- покрытие тестов неизменно растёт;
Минусы:
- навязывание TDD;
- документирование смешивается с тестированием (хотя, может быть это не минус).
Ниже дал ссылки, где можно почитать подробнее, если вы заинтересовались.
Spring Rest Docs: https://goo.gl/CF3NRv
Getting Started: https://goo.gl/WdRdF8
Примеры: https://goo.gl/cujcj5
Как вы пишете доки к 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"));
}
В результате у вас генерируются сниппеты, которые складываются в определенную папку в проекте, а уже из сниппетов генерируется документация. Какие я здесь вижу плюсы:
- документация всегда актуальна и есть пример запуска в виде теста;
- покрытие тестов неизменно растёт;
Минусы:
- навязывание TDD;
- документирование смешивается с тестированием (хотя, может быть это не минус).
Ниже дал ссылки, где можно почитать подробнее, если вы заинтересовались.
Spring Rest Docs: https://goo.gl/CF3NRv
Getting Started: https://goo.gl/WdRdF8
Примеры: https://goo.gl/cujcj5
GitHub
spring-restdocs/samples at v2.0.0.RELEASE · spring-projects/spring-restdocs
Test-driven documentation for RESTful services. Contribute to spring-projects/spring-restdocs development by creating an account on GitHub.
Forwarded from From Junior to CTO (Ivan Osipov)
Последний рабочий день в этом году закончился, а это значит, что впереди 2 недели отдыха смешанного с реализацией отложенных до "свободного времени" идей и личностного роста. Этот год в самом его начале я обозвал "годом перемен", всё так и произошло. В этом году я закончил магистратуру, успел с женой дважды слетать в отпуск, посетил JPoint, в мою жизнь пришёл Kotlin, я открыл для себя мир телеграма, который затем открыл для меня мир статей, переслушал огромное колличество мотивирующей и бизнес литературы, что в корне изменило моё мышление и взгляды, начал свою дорогу в инвестировании и довольно успешно, сделал много открытий для себя лично, в общем год получился насыщенным. Всё это при поддержке моей жены, которой можно было довериться в любой ситуации. С Наступающим всех вас! Ставьте цели, идите к ним, не сомневайтесь и достигать задуманного. Помните, что остановиться в стремлении к лучшему можно в любой момент, так зачем это делать сейчас? Спасибо, что читаете! До следующего года!