Архив автора: admin

Kotlin. Часть 5. Пишем DSL

Вот и пришла пора для заключительной статьи в основном цикле о Kotlin. Что это значит? Пользуясь знаниями из предыдущих статей (Введение, Незнакомые конструкции, Мигрируем из Java, Неловкие моменты) ниже мы с вами напишем собственный DSL (domain-specific language), обсудим что это такое и чем Kotlin, как язык, способствует написанию предметно-ориентированных языков, а также как это упрощает разработчикам жизнь, я расскажу о собственном опыте в разработке DSL и о проблемах, которые возникают. Статья может показаться довольно большой, так и есть, я постарался уместить в неё основной концентрат собственных знаний о построении DSL в Kotlin.

Давай же, Kotlin! На тебя все смотрят!

Что такое DSL?

Языки программирования можно разделить на 2 типа: универсальные языки (general-purpose programming language) и предметно-ориентированные (domain-specific language). Популярные примеры DSL это SQL или регулярные выражения. Язык уменьшает объем функциональности который, он дает, при этом он способен эффективно решать определенную проблему. В том числе это способ описать программу не в императивном стиле, когда вы говорите как нужно получить результат в универсальны языках, а в декларативном, когда вы говорите что вы хотите получить. Пусть у вас есть стандартный процесс выполнения, который иногда может меняться, дорабатываться, но в целом вы хотите подстраивать его под разные данные и формат результата. Создавая DSL вы делаете гибкий инструмент для решения различных задач из одной предметной области при этом не задумываетесь об оптимизации. Это некоторое API, виртуозно пользуясь которым, вы можете сильно упростить себе жизнь и долгосрочную поддержку системы.

«Чистое API»

«Чистым» называется API, которое требует минимальных действий для получения результата, никакой мишуры и фантиков. Давайте рассмотрим, что нам дает Kotlin для построения такого API.

На пути к совершенству

Давайте перечислим основные преимущества Kotlin, которые позволяют достаточно чисто писать на этом языке и доступны для построения собственного DSL. Ниже представлена табличка в которой перечислены основные улучшения синтаксиса языка, которые стоит использовать

Преимущества Kotlin, которыми стоит пользоваться

Благодаря этим возможностям вы способны писать код чище, избавиться от множества вызовов методов и при этом сделать разработку еще более приятным занятием («куда уж приятнее?» — спросите вы). Мне понравилось сравнение из книжки, что в натуральных языках, например, в английском, предложения построены из слов и граматические правила управляют тем как нужно объединять слова друг с другом. Аналогично в DSL, одна операция может быть сложена из нескольких вызовов методов, а проверка типов обеспечит гарантию, что конструкция имеет смысл.

Оказывается, что довольно трудно совместить одновременно универсальный язык и DSL, стереть границу которая их разделяет. Прикрутить что-то к чему-то можно всегда, но как это сделать, чтобы работа с таким DSL была максимально простой и нативной? Давайте обсудим «внутренние DSL» и как они стирают интеграцию.

Внутренний DSL

Проще всего понять что такое «внутренний» DSL на примере. Вот у вас есть реляционная база данных и мы хотим выбрать из неё определенные записи, как мы это делаем? Очевидно, SQL. У нас будет select запрос в котором мы укажем что и как нужно достать. В перевес этому мы можем взять фреймворк Exposed на Kotlin (не то чтобы я сторонник миллионов оберток, но это хороший пример). Exposed — это работа с базой данных в sql подобном стиле прямо из кода. Больше подробностей по фреймворку по ссылке в конце статьи.

Пример DSL

Предлагаю посмотреть, а ради чего всё это. Я приведу пример из практики. Библиотека Clabo для создания телеграм ботов в декларативном стиле, демонстрирует возможности, которые дает Kotlin для построения DSL. Каждый бот имеет свой ключик, который выдается при создании бота для у

Русификатор для текстового редактора Atom

Русификатор для текстового редактора Atom

Русификатор для текстового редактора Atom

Друзья, ищу русификатор для текстового редактора Atom (очень классная штука, если кто не знает). Возможно в будущем вообще перейду с NotePad++ на Atom, но для этого надо его хорошо знать. Не просто главные функции, которые «и любой желающий может прочитать на английском», а хочется пройтись по меню и хорошо узнать все возможности этого зверя.

Кто подскажет?

Почему не получается похудеть?

Чем дальше заходит научный прогресс, тем больше новых и неожиданных вещей мы узнаем. Диетология не исключение. Как выясняется в процессе исследований, даже незначительные факторы могут сильно влиять на процесс похудения. Расскажем об этих факторах.
Медицинские препараты
Имеются в виду препараты, которые довольно серьезны, например, антидепрессанты, препараты для диабетиков, противовоспалительные препараты, лекарства против эпилепсии, и т.д. Если вы являетесь человеком, который по медицинским показаниям принимает подобные препараты, то это может вам мешать в процессе похудения. Даже если вы полностью придерживаетесь правильного питания и подвижного образа жизни.
Молочные продукты
В молочных продуктах содержится большое количество сывороточного протеина. В кисломолочных продуктах его особенно много. На основе этого протеина делается спортивное питание для набора мышечной массы. Последние исследования выявили, что этот белок повышает у некоторых людей уровень инсулина, это и мешает потере веса. Попробуйте исключить все молочные продукты на месяц, и если ваш вес начнет уменьшаться (при соблюдении питания и физической нагрузки), значит вы как раз относитесь к этим сверхчувствительным людям, и впредь надо относиться к молочным продуктам с осторожностью.
Дефицит железа и гипотиреоз
О наличие этих заболеваний многие не догадываются, особенно если это начальная стадия заболевания. У человека наблюдается набор веса, угнетенное настроение, упадок сил. Выявить эти болезни с первого раза не всегда удается даже врачам, следует сдать нужные анализы. Эти диагнозы чаще встречаются у женщин от 35 лет.
Большое количество углеводов
Это часто встречающееся явление. Углеводы – коварный элемент, только маленькая их часть гарантированно не отложится в жир, а вот остальное их количество зависит от вашего образа жизни. Если вы ведете подвижный образ жизни или являетесь спортсменом, то лишние углеводы будут израсходованы. И наоборот, если ваш образ жизни малоподвижен, то углеводы будут откладываться в жир.






Альфаро бирюзовый

Альфаро бирюзовый

Альфаро ножевидный – стайная рыбка, содержать их рекомендуется в группе из 5-10 особей или больше. Объем аквариума для группы – 100-150 л. При наличии соседей объем следует увеличить.

Обязательно наличие фильтра с возможностью обеспечить аэрацию воды, либо можно отдельно оборудовать аквариум компрессором. Данные рыбки любят выпрыгивать из воды, поэтому желательно озаботиться наличием крышки.

Оптимальная температура воды для бирюзовых альфаро – 23-28°С, жесткость – до 15°dH, кислотность – 6,5-8 рН. Данный вид рыбок вполне благосклонно относится к подсоленной воде. Подмены воды производят еженедельно, заменяя примерно треть объема.

Брекет-система Damon Q – с ней я чувствую себя уверенно

 

Брекет-система Damon Q – с ней я чувствую себя уверенно

 

 

Сколько себя помню, я всегда стеснялась своей улыбки и вообще была недовольна своей внешностью из-за ужасно неровных зубов. Они же стали и причиной моей закомплексованности. В юности я как-то особо не задумывалась об исправлении этой проблемы — думала, что со временем зубы сами выровняются. Но время шло, а проблема с зубами стала еще хуже… И вот, когда мне исполнилось 26, я решила, что пора что-то менять. Было решено поставить брекет-систему. Перед тем, как сделать это, перечитала статьи на интересующую тему в интернете, отзывы, общалась на тематических форумах. Также посетила стоматолога в местной поликлинике, который направил меня к ортодонту в областной центр.

Стоит ли есть яблочные косточки..?


В России нет фрукта, популярнее яблок. Их можно найти в любом магазине или на дачном участке. Они дёшевы, полезны и вкусны. Диетологи и врачи считают, что яблоки полезны абсолютно всем — как здоровым людям, так и тем, кто страдает различными заболеваниями.


Однако, самая загадочная часть яблока — косточки…


Но самое главное — в косточках присутствует йод, потребность организма в котором весьма велика.


Яблочные косточки содержат
1. Важный источник калия; 

2. 5-6 яблочных зернышек полностью удовлетворят наш организм в суточной дозе йода, благотворно влияют на работу сердца и мозга;

3. В них содержится до 33% невысыхающего жирного масла, белковые вещества, сахароза.

4. А ещё в них обнаружен витамин В17 (летрил), обладающий противораковым свойством и снижающий утомляемость организма;

5. Синильная кислота; амигдалин (это вещество, которое можно найти в косточках вишни, абрикоса, сливы и в меньшей степени — яблок) — при его гидролизе высвобождается цианид.

Стоит ли есть яблочные косточки?

Казалось бы, вопрос странный. Но дело в том, что в последнее время все большую популярность приобретает теория, по которой для профилактики раковых заболеваний яблоки нужно есть вместе с косточками.

Учёные считают, что в семенах яблока содержатся биологически активные вещества, витамины и ферменты, мощные антиоксиданты, защищающие нас от инфарктов, инсультов и многих видов рака.

Также считается, что 5 — 6 яблочных семечек полностью покрывают суточную потребность в йоде. 

Противников у этой теории пока нет, но врачи предупреждают и об опасности, которая может скрываться в этих коричневых семечках.

В яблочных семечках содержится и крайне опасное вещество — гликозид амигдалина! В желудке он расщепляется с выделением синильной кислоты, сильнейшего яда.

Особенно опасна она детям. Ослабить действие яда можно прожариванием и добавлением сахара. Есть мнение, что опасность косточек сильно преувелич