Полезная функциональщина. Грабим почту, трекеры задач и репозитории с Clojure - «Новости»
Google добавила режим Split View в Chrome и аннотации в PDF - «Новости мира Интернет»
Google добавила режим Split View в Chrome и аннотации в PDF - «Новости мира Интернет»
В Paint добавили функцию произвольного вращения области на любой угол - «Новости мира Интернет»
В Paint добавили функцию произвольного вращения области на любой угол - «Новости мира Интернет»
MacBook Pro на M6 получит OLED, сенсорный экран и Dynamic Island - «Новости мира Интернет»
MacBook Pro на M6 получит OLED, сенсорный экран и Dynamic Island - «Новости мира Интернет»
Что нового показали Samsung на Galaxy Unpacked 2026 - «Новости мира Интернет»
Что нового показали Samsung на Galaxy Unpacked 2026 - «Новости мира Интернет»
Самый дешёвый тариф YouTube Premium теперь предлагает фоновый режим и скачивание видео - «Новости сети»
Самый дешёвый тариф YouTube Premium теперь предлагает фоновый режим и скачивание видео - «Новости сети»
Twitch отказался от блокировок «всё или ничего» и разделил наказания - «Новости сети»
Twitch отказался от блокировок «всё или ничего» и разделил наказания - «Новости сети»
Китай намерен увеличить выпуск передовых чипов в 25 раз к концу десятилетия - «Новости сети»
Китай намерен увеличить выпуск передовых чипов в 25 раз к концу десятилетия - «Новости сети»
Тим Кук признался, что «спал с одним открытым глазом» после секретного брифинга ЦРУ о Тайване и TSMC - «Новости сети»
Тим Кук признался, что «спал с одним открытым глазом» после секретного брифинга ЦРУ о Тайване и TSMC - «Новости сети»
Суперсила, помноженная на два: в Японии IBM впервые смогла обеспечить бесшовную работу суперкомпьютера с квантовым - «Новости сети»
Суперсила, помноженная на два: в Японии IBM впервые смогла обеспечить бесшовную работу суперкомпьютера с квантовым - «Новости сети»
Что изменилось в Gemini Pro с обновлением до версии 3.1 - «Новости мира Интернет»
Что изменилось в Gemini Pro с обновлением до версии 3.1 - «Новости мира Интернет»
Новости мира Интернет » Новости » Полезная функциональщина. Грабим почту, трекеры задач и репозитории с Clojure - «Новости»
.




);

Содержание статьи

  • Зачем оно вообще всем
  • Show me the code
  • Системы контроля версий
  • Заключительное слово
Язык программирования Clojure используется такими open source проектами, как NASA CMR, Cisco Threat Grid, CircleCI, Jepsen, стартапами и некоторыми крупными компаниями. В Positive Technologies мы решили попробовать применить Clojure как платформу для базовой автоматизации процессов управления разработкой программного обеспечения, но что-то пошло не так: проект по автоматизации стал большим и опенсорсным.
Полезная функциональщина. Грабим почту, трекеры задач и репозитории с Clojure - «Новости»
WWW

TL;DR: https://github.com/PositiveTechnologies/flower



Зачем оно тимлиду


Я — один из тимлидов в команде разработки PT Application Firewall, защитного экрана уровня приложений. В один прекрасный момент размер команды превысил критический порог, когда можно делать руками всю свою рутинную работу, и я начал писать автоматизированную систему, которая умела бы взаимодействовать с почтой, трекерами задач и системами контроля версий. Я назвал ее «автоматический тимлид».


Распределение задач — одна из рутинных процедур, которую легко автоматизировать, если в команде существует матрица компетенций: назначить исполнителя в зависимости от заголовка задачи или ее компонента можно, если уметь программно читать задачу с таск-трекера и обновлять некоторые поля в ней. Аналогичная история с автоматическим назначением по набору критериев ответственного проверяющего в пулл-реквест в системе контроля версий для рецензирования исходного кода.



В итоге, конечно, автоматический тимлид был разделен на бизнес-логику и общую библиотеку интеграций (я назвал ее Flower). О последней давай и поговорим.


Зачем оно вообще всем


Зачем мне понадобилось такое программное обеспечение, в целом понятно, но зачем же оно может понадобиться тебе?


Допустим, по счастливому стечению обстоятельств, у тебя есть учетные данные некоего пользователя Jira. Очень хочется на память сохранить пару тысяч задач этого пользователя (а заодно и всю его почту), чтобы развлекаться серыми осенними вечерами, почитывая занимательные комментарии. Почему бы не сделать это, написав всего три строчки кода?


Или ты менеджер проекта по разработке программных продуктов и решил устроить своим программистам полный KPI, замеряя производительность людей в условных пулл-реквестах на задачу. Собирать статистику с двух и более разных систем одновременно тоже можно без технических проблем.


Как вариант, ты желаешь перенести все задачи из GitLab и Jira на GitHub (потому что твой проект резко стал опенсорсным), а заодно настроить автоматическую пересылку сообщений из почты в Slack. И даже это делается не очень сложно!


Почему Clojure


Первый вопрос, который можно было бы мне задать, звучит примерно так: почему ты не выбрал Python, ведь ты с ним знаком десяток лет и он имеет все необходимые библиотеки интеграций? Не имеет. Имеет, конечно, но не все работает так гладко, как SDK на Java, созданный разработчиками систем, с которыми мы интегрируемся. А в некоторых случаях еще и не хватает многопоточности. Тут нужно заметить, что для первоначального прототипа я, конечно же, и выбрал Python, а точнее HyLang (Lisp на его стеке), но в итоге решил внимательнее присмотреться к JVM.


И второй очевидный вопрос — почему вообще Lisp? Потому что, насколько мне известно, лучший способ создать свой DSL, не изобретая новый синтаксис, — взять Lisp, проверенный временем язык с префиксной нотацией и веселыми скобочками (на самом деле это называется S-выражения), и, используя макросы, обогатить его до домена использования.


Совокупность этих двух факторов и побудила меня выбрать Clojure как язык программирования и платформу для интеграций с различными системами.



Пример приложения, использующего библиотеку Flower

Show me the code


Чтобы начать писать на Clojure свой скрипт или даже целую систему, использующую Flower, необходимо для начала установить Leiningen (для Windows в некоторых случаях это может оказаться немного нетривиальной задачей, поэтому рекомендую взять любую *nix-систему). Если ты вдруг не знаешь Clojure, то рекомендую книгу Clojure for the Brave and True — идеальное пособие для освоения языка за пару вечеров.


Чтобы начать новый проект на базе Flower, можно воспользоваться шаблоном, набрав в терминале


lein new flower my-new-flower-app
[/code]

При этом в файл project.clj в созданной директории проекта будет добавлена зависимость [flower "0.4.3"] — это метапакет, содержащий почти все необходимое. Для тестового приложения он нам вполне подойдет.


Давай теперь напишем наше приложение. В качестве подопытной системы контроля версий и трекера задач воспользуемся GitHub.


Для аутентификации нам понадобится добавить токен пользователя GitHub, чтобы иметь возможность делать изменения и не быть ограниченными рейтом запросов. Добавь сгенерированный для своей учетной записи токен вместо звездочек в файл .credentials.edn в домашней директории пользователя (~/.credentials.edn) в следующем формате:


Источник новостиgoogle.com

. ); Содержание статьи Зачем оно вообще всем Show me the code Системы контроля версий Заключительное слово Язык программирования Clojure используется такими open source проектами, как NASA CMR, Cisco Threat Grid, CircleCI, Jepsen, стартапами и некоторыми крупными компаниями. В Positive Technologies мы решили попробовать применить Clojure как платформу для базовой автоматизации процессов управления разработкой программного обеспечения, но что-то пошло не так: проект по автоматизации стал большим и опенсорсным. WWW TL;DR: Зачем оно тимлиду Я — один из тимлидов в команде разработки PT Application Firewall, защитного экрана уровня приложений. В один прекрасный момент размер команды превысил критический порог, когда можно делать руками всю свою рутинную работу, и я начал писать автоматизированную систему, которая умела бы взаимодействовать с почтой, трекерами задач и системами контроля версий. Я назвал ее «автоматический тимлид». Распределение задач — одна из рутинных процедур, которую легко автоматизировать, если в команде существует матрица компетенций: назначить исполнителя в зависимости от заголовка задачи или ее компонента можно, если уметь программно читать задачу с таск-трекера и обновлять некоторые поля в ней. Аналогичная история с автоматическим назначением по набору критериев ответственного проверяющего в пулл-реквест в системе контроля версий для рецензирования исходного кода. В итоге, конечно, автоматический тимлид был разделен на бизнес-логику и общую библиотеку интеграций (я назвал ее Flower). О последней давай и поговорим. Зачем оно вообще всем Зачем мне понадобилось такое программное обеспечение, в целом понятно, но зачем же оно может понадобиться тебе? Допустим, по счастливому стечению обстоятельств, у тебя есть учетные данные некоего пользователя Jira. Очень хочется на память сохранить пару тысяч задач этого пользователя (а заодно и всю его почту), чтобы развлекаться серыми осенними вечерами, почитывая занимательные комментарии. Почему бы не сделать это, написав всего три строчки кода? Или ты менеджер проекта по разработке программных продуктов и решил устроить своим программистам полный KPI, замеряя производительность людей в условных пулл-реквестах на задачу. Собирать статистику с двух и более разных систем одновременно тоже можно без технических проблем. Как вариант, ты желаешь перенести все задачи из GitLab и Jira на GitHub (потому что твой проект резко стал опенсорсным), а заодно настроить автоматическую пересылку сообщений из почты в Slack. И даже это делается не очень сложно! Почему Clojure Первый вопрос, который можно было бы мне задать, звучит примерно так: почему ты не выбрал Python, ведь ты с ним знаком десяток лет и он имеет все необходимые библиотеки интеграций? Не имеет. Имеет, конечно, но не все работает так гладко, как SDK на Java, созданный разработчиками систем, с которыми мы интегрируемся. А в некоторых случаях еще и не хватает многопоточности. Тут нужно заметить, что для первоначального прототипа я, конечно же, и выбрал Python, а точнее HyLang (Lisp на его стеке), но в итоге решил внимательнее присмотреться к JVM. И второй очевидный вопрос — почему вообще Lisp? Потому что, насколько мне известно, лучший способ создать свой DSL, не изобретая новый синтаксис, — взять Lisp, проверенный временем язык с префиксной нотацией и веселыми скобочками (на самом деле это называется S-выражения), и, используя макросы, обогатить его до домена использования. Совокупность этих двух факторов и побудила меня выбрать Clojure как язык программирования и платформу для интеграций с различными системами. Пример приложения, использующего библиотеку Flower Show me the code Чтобы начать писать на Clojure свой скрипт или даже целую систему, использующую Flower, необходимо для начала установить Leiningen (для Windows в некоторых случаях это может оказаться немного нетривиальной задачей, поэтому рекомендую взять любую *nix-систему). Если ты вдруг не знаешь Clojure, то рекомендую книгу Clojure for the Brave and True — идеальное пособие для освоения языка за пару вечеров. Чтобы начать новый проект на базе Flower, можно воспользоваться шаблоном, набрав в терминале При этом в файл project.clj в созданной директории проекта будет добавлена зависимость _

Цитирование статьи, картинки - фото скриншот - Rambler News Service.
Иллюстрация к статье - Яндекс. Картинки.
Есть вопросы. Напишите нам.
Общие правила  поведения на сайте.

запостил(а)
Otis
Вернуться назад
0

Смотрите также

А что там на главной? )))



Комментарии )))