Долгое время все те, кто хотел прикрутить к своему сайту или приложению аутентификацию через телеграм выкручивали всякие финты с ботами и даже с кастомными клиентами (на хабре есть пара статей), мне тоже на паре своих пет-проектов пришлось через это пройти. Проблема была в том, что пользователю необходимо было явно обратиться к боту авторизации и только после этого процесс взаимодействия мог быть запущен (deep linking спасал нас как мог). Вчера телеграм наконец-то представил возможность разместить на сайте виджет для аутентификации. Попробую в ближайшее время, тем более есть где заменить самописную реализацию. По заявлениям это первая стадия введения Telegram ID. Ссылка на официальный обзор
середа, 7 лютого 2018 р.
неділя, 4 лютого 2018 р.
Kotlin Generics
Первый релиз языка Kotlin включает в себя Kotlin Generics. Обобщенные типы, благодаря которым мы с вами можем писать более гибкие приложения с меньшим дублированием кода и большей типобезопасностью. Одно из важных преимуществ, которое дает вашему приложению использование Generics - проверка типов на этапе компиляции. Дизайнеры языка Kotlin ввели новые ключевые слова для работы с дженериками, что по началу может ввести в ступор даже опытного Java разработчика. Сегодня мы с вами обсудим что такое “дженерики”, удалим страх перед словами типа “контравариантность”, а заодно познакомимся с reified generics и star-projection.
Система типов в Kotlin
Нашёл отличную статью, которая на пальцах в картинках разбирает иерархию типов, включая Any, Nullable Types, Unit и Nothing. Для новичков в Kotlin - cтатья полезная, для опытных разработчиков, только если закрыть какие-то пробелы.
LazyInstance
В C++ глобальные объекты не POD типов имеют динамические инициализаторы. Это означает, что при запуске приложения до вызова функции main произойдет инициализация этих глобальных объектов. Это, конечно, влияет на время старта приложения. Но самое страшное, что эта инициализация и, соответственно, деинициализация глобальных объектов в разных единицах трансляции происходят недетерминированно. То есть в стандарте языка не указывается, в каком порядке будут вызываться конструкторы и деструкторы объектов. Как правило, это зависит от порядка линковки объектных файлов. Что это влечет за собой? А то, что если вы в одном файле создаете глобальный объект и инициализируете его значением другого глобального объекта в другой единице трансляции или при закрытии приложения начинаете обращаться к таким глобальным объектам, результат непредсказуем. Чаще всего возникает краш.
вівторок, 23 січня 2018 р.
Семантическое версионирование 2.0
Восхитительное чувство, когда один раз взглянув на новую версию сторонней библиотеки ты понимаешь, можно ли её смело обновлять или нужно быть готовым к изменениям в собственном коде. В сухую нумерацию пакетов вносит осмысленность Семантическое версионирование. У семантического версионирования есть свой сайт и основные посылы я брал оттуда (ссылка в конце статьи).
понеділок, 22 січня 2018 р.
Шаблон TolerantReader и Закон Постела
При взаимодействии множества систем постоянно встает вопрос об интеграции. Когда мы начинаем работать с чьим-то API, существует риск, что представители API могут его изменить и мы будем к этому не готовы. Системы эволюционируют, развиваются и, порой, следствие этой эволюции - развитие API. По началу, изменения могут быть незначительными, почти совместимыми, но даже к таким изменениям мы должны быть готовы. С обратной стороны, когда мы кому-то отдаем своё API, нам нужно понимать, что наши клиенты могут быть готовы к переменам, если мы будем осторожны, консервативны к изменениям.
понеділок, 1 січня 2018 р.
Квантовые компьютеры сегодня
С чего начать год, как не с революционных технологий? История квантовых компьюторов тянется из прошлого века, но последние 2-3 года эта сфера интересует всё большее количество людей. В основе квантового компьютера стоит понятие кубита.