The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Apple опубликовал Pkl, язык программирования для определения конфигурации

04.02.2024 14:39

Компания Apple открыла реализацию языка программирования Pkl, предназначенного для определения конфигурации и продвигающего модель "конфигурация как код". Связанный с Pkl инструментарий написан на Kotlin и опубликован под лицензией Apache. Плагины для работы с кодом на языке Pkl подготовлены для сред разработки IntelliJ, Visual Studio Code и Neovim. В ближайшее время ожидается публикация обработчика LSP (Language Server Protocol).

Pkl сочетает свойства простого для восприятия декларативного языка c расширенными возможностями, свойственными для языков общего назначения. В языке поддерживаются аннотации типов, классы, функции, вычислительные выражения, условия и циклы. Pkl может применяться как для генерации статических конфигураций в разных форматах, таких как JSON, YAML и XML, так для формирования модулей для обработки заданных форматов конфигурации в приложениях на различных языках программирования.

Привязки для интеграции Pkl в приложения подготовлены для Java, Kotlin, Go и Swift. Отдельно предложен модуль для интеграции с фреймворком Spring. Привязки позволяют на основе конфигурации на языке Pkl сформировать готовые пакеты и модули с классами для работы с описанной конфигурацией в приложении. Пакеты с описанием конфигурации могут публиковаться в репозиториях и импортироваться в качестве зависимости, что допускает совместное использование кода Pkl между разными проектами.

Язык предоставляет гибкие средства для определения условий и проверок корректности значений, позволяющих выявлять ошибки в итоговой конфигурации на этапе до её применения в приложении. Например, можно определить допустимый диапазон значений ("port: Int(this > 1000)" или "age: Int(isBetween(0, 130))"), обязательность или необязательность заполнения и формат ("zipCode: String(matches(Regex("\\d{5}")))"). В случае присвоения значения, не соответствующего условию, валидатор выведет ошибку (например, при попытке присвоить значение 1001 параметру, определённому как "Int(this > 1000)").

Например, на языке Pkl можно написать модуль Application.pkl с шаблоном конфигурации подключения к СУБД:


   module Application

   hostname: String
   port: UInt16
   environment: Environment
   database: Database

   class Database {
     username: String
     password: String
     host: String
     port: UInt16
     dbName: String
   }
   typealias Environment = "dev"|"qa"|"prod"

Далее можно создать непосредственно файл конфигурации, использующий данный модуль для проверки корректности значений:


   amends "Application.pkl"
   hostname = "localhost"
   port = 3599
   environment = "dev"
   database {
     host = "localhost"
     port = 5786
     username = "admin"
     password = read("env:DATABASE_PASSWORD") 
     dbName = "myapp"
}

А также написать генератор для автоматизации изменения номера порта для четырёх разных СУБД:


   import "Application.pkl"
 
   hidden db: Application.Database = new {
     host = "localhost"
     username = "admin"
     password = read("env:DATABASE_PASSWORD")
     dbName = "myapp"
   }

   sidecars {
     for (offset in List(0, 1, 2, 3)) {
       (db) {
         port = 6000 + offset
       }
     }
   }

При желании можно экспортировать конфигурацию в другом формате, например, YAML:


   sidecars:
   - username: admin
     password: hunter2
     host: localhost
     port: 6000
     dbName: myapp 
   - username: admin
     password: hunter2
     host: localhost
     port: 6001
     dbName: myapp
   - username: admin
     password: hunter2
     host: localhost
     port: 6002
     dbName: myapp
   - username: admin
     password: hunter2
     host: localhost
     port: 6003
     dbName: myapp

Схема конфигурации на языке Pkl также может быть преобразована в классы или структуры для встраивания в код приложения. Например, можно сгенерировать привязку для Kotlin:


   import kotlin.Int
   import kotlin.Long
   import kotlin.String

   data class Application(
     val hostname: String,
     val port: Int,
     val environment: Environment,
     val database: Database
   ) {

     data class Database(
       val username: String,
       val password: String,
       val host: String,
       val port: Int,
       val dbName: String
     )

     enum class Environment(
       val value: String
     ) {
       DEV("dev"),
       QA("qa"),
       PROD("prod");
       override fun toString() = value
     } 
   }


  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: Организация OpenTF создала форк платформы управления конфигурацией Terraform
  3. OpenNews: Ubuntu переходит на формат сетевой конфигурации netplan
  4. OpenNews: Компания Apple открыла реализацию языка Swift и реализовала поддержку Linux
  5. OpenNews: Оптимизация Linux для обработки 1.2 млн JSON-запросов в секунду
  6. OpenNews: Amazon открыл Ion, реализацию типизированного варианта JSON
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60549-pkl
Ключевые слова: pkl, config, apple
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (142) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 15:33, 04/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +18 +/
    Что-то я вообще не понял зачем это нужно.

    Купертино совсем перестало делать инновации.
    - Инженер ВАЗ

     
     
  • 2.2, _hide_ (ok), 15:41, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    LUA
     
     
  • 3.103, Аноним (103), 14:09, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В Lua неизвестное поле метатаблицы считается равным nil. Это автоматически отсекает любые возможности нормально использовать Lua для конфигов, так как валидации там не будет.
     
     
  • 4.128, _hide_ (ok), 18:36, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > В Lua неизвестное поле метатаблицы считается равным nil. Это автоматически отсекает любые
    > возможности нормально использовать Lua для конфигов, так как валидации там не
    > будет.

    Очень странный вывод.

     
     
  • 5.141, Аноним (103), 23:17, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Попробуйте хотя бы разок написать парсер-валидатор конфига, поймёте.
     

  • 1.4, Аноним (103), 15:44, 04/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Вряд ли взлетит. Ниша уже занята CUEм, который вполне всех устраивает, и разрабатывается сообществом, а не корпорастами (историю экосистемы HashiCorp все хорошо помнят).
     
     
  • 2.36, Аноним (36), 18:53, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • –5 +/
    > Ниша уже занята CUEм

    В твоих фантазиях если только.

    > историю экосистемы HashiCorp все хорошо помнят

    Как и то, что на Терраформе никто не перестал писать.

     
     
  • 3.52, Аноним (103), 22:29, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > В твоих фантазиях если только.

    Ну и в современном IT (с которым, вы, очевидно, незнакомы).

    > Как и то, что на Терраформе никто не перестал писать.

    Добро пожаловать в 2018! А у нас в 2024 есть Crossplane.

     
     
  • 4.64, Аноним (64), 01:43, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • –5 +/
    >Crossplane

    Подохло не успев родиться. Оно и не удивительно так как все уже устали от ямла. А тут чтоб создать ресурсы в клауде еще купердинос настроить надо для начала.

    2024 это как раз CDK а не наркоманство на ямле

     
     
  • 5.65, Аноним (103), 01:59, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Подохло не успев родиться.

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

    > Оно и не удивительно так как все уже устали от ямла.

    Устали от ямла — идите улицы мести, кто ж вас держит?

     
     
  • 6.71, Ahohim (?), 02:21, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    А еще сын Шамиля с соседнего дома на хмурый перешел. Как будто кому то есть дело до того, что там в сбере творится. Мы говорим про нормальные компании и организации.
    А они в свою очередь будут держаться от этого фу подальше.
     
     
  • 7.94, Аноним (103), 13:55, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Мы говорим про нормальные компании и организации.
    > А они в свою очередь будут держаться от этого фу подальше.

    Абсолютно неважно, как они будут относиться к "этому фу", лишь бы улицы и дворы своевременно убирали.

     
  • 6.91, _oleg_ (ok), 12:53, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не-не, бро. Чел прав. Ямл реально кошмарная переоценённая хрень.
    И то, что люди вынуждены им пользоваться не значит, что они от него в восторге.
     
     
  • 7.96, Аноним (103), 13:58, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Я и не говорю, что ямл — хорошо. Но пока лучше него ничего не придумали.
     
     
  • 8.102, Аноним (102), 14:09, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    sh и awk, например... текст свёрнут, показать
     
     
  • 9.104, Аноним (103), 14:11, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И куличики из песка, как альтернатива еде ... текст свёрнут, показать
     
     
  • 10.106, Аноним (102), 14:14, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так shell и awk и есть еда А yaml - это пародия на еду, его даже интерпретирова... текст свёрнут, показать
     
     
  • 11.146, Аноним (146), 23:52, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну теперь давай до Ансибла гутарить У Ансибла очень Ок пишешь свои модули в ви... текст свёрнут, показать
     
  • 8.118, _oleg_ (ok), 15:36, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Здрасьте Для сериализации данных есть json Для конфигов есть человеческие конф... текст свёрнут, показать
     
     
  • 9.135, User (??), 21:46, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А человеческие конфиги это, извиняюсь, что ... текст свёрнут, показать
     
     
  • 10.137, Аноним (103), 23:08, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Выше же сказали 8212 shell и awk фиг знает, как бинарники могут быть конфига... текст свёрнут, показать
     
     
  • 11.147, Аноним (146), 23:54, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Дебажить замумукаешся Синтаксис трудно читаемый через годик А потому не годно ... текст свёрнут, показать
     
     
  • 12.162, User (??), 07:32, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не-не, sed-awk-perl jinja jsonnet что-там-еще - не конфиг , а средства его гене... текст свёрнут, показать
     
  • 10.163, _oleg_ (ok), 09:59, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не стоит стесняться любопытства А вообще, не думал я, что настанет время, когда... текст свёрнут, показать
     
     
  • 11.164, User (??), 10:42, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Воу Апач в качестве примера человеческого конфига - НАСТОЛЬКО упорото, что я ... текст свёрнут, показать
     
     
  • 12.166, _oleg_ (ok), 11:44, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да, nginx получше apache будет Но так-то YAML хуже и того и другого в любом слу... текст свёрнут, показать
     
     
  • 13.167, User (??), 13:30, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, пацаны прям старались - но ниасилили, да Но старались прям хорошо Куча спо... текст свёрнут, показать
     
     
  • 14.170, _oleg_ (ok), 15:13, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну зачем придумывать, пишите как есть - не для чего-нибудь полезного , а для на... текст свёрнут, показать
     
     
  • 15.171, User (??), 15:43, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если любовно на глаживать единственный сервер методом рукоблудия - то таки да,... текст свёрнут, показать
     
     
  • 16.172, _oleg_ (ok), 16:00, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А какое отношение lua в конфиге или его отсутствие имеет к тому один сервер или ... текст свёрнут, показать
     
     
  • 17.173, User (??), 20:08, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Если сервер один и админ один - задач по автоматизации конфигурирования не возни... текст свёрнут, показать
     
     
  • 18.175, _oleg_ (ok), 11:13, 07/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да и если не один, то тоже При чём здесь автоматизация конфигурирования и lua в... большой текст свёрнут, показать
     
  • 2.81, Пряник (?), 10:15, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +5 +/
    О, спс, не знал про CUE.
     

     ....большая нить свёрнута, показать (27)

  • 1.6, Аноним (6), 15:57, 04/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Язык для сериализации не должен быть полным по Тьюрингу. Если нужен Тьюринг-полный язык, то писать надо либо прямо на основном ЯП, либо на скриптовом, легко встраиваемом в основной. Ещё один NIH-язык лишь плодит фрагментацию.
     
     
  • 2.8, Аноним (103), 16:01, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это не язык для сериализации. Это язык для описания и валидации структур сериализуемых данных.
     
     
  • 3.9, Аноним (103), 16:04, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И для генерации, да.
     
     
  • 4.27, Аноним (27), 17:33, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    То есть очередной недопитон, недоjavascript, недоrust, недоjava, недоgo и недоc++.
     
     
  • 5.50, Аноним (103), 22:27, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вы прослушали миниатюру "человек, далёкий от разработки, открывает для себя понятие domain specific language".
     
     
  • 6.62, Аноним (62), 23:31, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А теперь истина: я создал один DSL и участвовал в содании другого популярного DSL :) Я с языками сериализации я знаком довольно тесно, и есть не пренебрижимо малая вероятность, что кто-то из опеннетчиков использует код, написанный мною.
     
     
  • 7.68, Аноним (103), 02:03, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И при всех эти заслугах вы, конечно же, считаете subj языком сериализации?
     
  • 7.156, Аноним (156), 01:33, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    давай ссылку на репу, трепло
     
  • 6.108, Аноним (102), 14:22, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    JavaScript был DSL.
     

  • 1.7, Аноним (-), 16:00, 04/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > вычислительные выражения, условия и циклы.

    У вас дедлок в конфиге, сэр! А дебагер и профайлер конфигов - есть? И вообще, вот уж от эппла не ожидал что им придет в бошку мешать логику и конфигурацию.

     
     
  • 2.19, Аноним (103), 16:58, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это не конфиг. Это код для валидации и генерации конфигов.
     
     
  • 3.30, Витюшка (?), 18:13, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Чем отличается от любой библиотеки любого ЯП для того же самого?
     
     
  • 4.53, Аноним (103), 22:31, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Тем, что это не библиотека, а язык. Вы бы ещё спросили "чем отличается от vim", примерно тот же уровень осмысленности.
     
  • 3.67, Аноним (-), 02:02, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Это не конфиг. Это код для валидации и генерации конфигов.

    Окей, а кто будет валидировать валидатора?

     
     
  • 4.99, Аноним (103), 14:02, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Парсер.
     
  • 3.70, Аноним (-), 02:07, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Это не конфиг. Это код для валидации и генерации конфигов.

    И это лучше уже существоваших вариантов - потому что что?!

    Ну вот например нежно любимыми местными баш портянками можно сделать все то же самое в два счета. И будет примерно такая же мешанина кода с конфигурацией. И это лучше чем то что было до этого - как и почему? Потому что эппла NIH синдром очередной раз прошиб и вендорлокнуть захотелось? Или есть более рациональное объяснение? Я его пока не вижу.

     
     
  • 4.142, Аноним (103), 23:19, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну вот например нежно любимыми местными баш портянками можно сделать все то же самое в два счета.

    Тогда почему никто этого до сих пор не сделал?

     
  • 2.37, oficsu (ok), 18:54, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > придет в бошку мешать логику и конфигурацию

    DRY применим и к конфигам, так что нет ничего неожиданного в том, что кто-то хочет встроить логику в код, чтобы избавиться от проблем и рисков, связанных с копипастой

     
     
  • 3.56, Аноним (103), 22:38, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, вообще не редкость, если формат данных должен поддерживаться несколькими программами на разных ЯП. Тут уже простой копипастой валидатора не обойтись.
     
  • 2.148, Аноним (146), 23:58, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > И вообще, вот уж от эппла не ожидал что им придет в бошку мешать логику и конфигурацию.

    Видимо у них недостатки в сегменте управления корпо компами... Тогда. Нормальный сборочный агент под Огрызков - то ещё перевращение. Может потому.

     

  • 1.10, Sw00p aka Jerom (?), 16:04, 04/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    вспоминаю золотые слова И. Сысоева - "не программируйте в конфигах" (ц) :)
     
     
  • 2.12, Вы забыли заполнить поле Name (?), 16:30, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > вспоминаю золотые слова И. Сысоева - "не программируйте в конфигах" (ц) :)

    Но njs все же встроили

     
     
  • 3.16, Sw00p aka Jerom (?), 16:40, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Но njs все же встроили

    а перл там изначально был :)

     
  • 2.23, Аноним (103), 17:04, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > вспоминаю золотые слова И. Сысоева - "не программируйте в конфигах" (ц) :)

    Получается, это он одной фразой послал лесом существенную долю пользователей nginx. Не говоря уже про OpenResty.

     
     
  • 3.49, Sw00p aka Jerom (?), 22:26, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Получается,

    Конфигурирую на Пкл :)

     
  • 3.74, Sw00p aka Jerom (?), 02:41, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Теперь можно будет легко генерить кучу локейшенов для нджинкс и без nginx -t валидировать :)
     
  • 2.86, Golangdev (?), 11:05, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Слова-то может и золотые, и программист, сказавший их талантлив, но вот авторам Gradle и Webpack было пофиг и они сделали эту возможность, на Groovy/Kotlin и JavaScript соответственно.
     
     
  • 3.125, Аноним (125), 17:47, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это просто отложенная таймбомба. Конфиг - это конфиг, декларация. Максимум, что можно усложнить - какой-то простенький шаблон, из которого ГЕНЕРИРУЕТСЯ статичный конфиг. Тогда всё будет хорошо.
    Видимо, эпплорасты не особо понимают в ИТ, им бы "дизайн покрасивше" - поэтому такой маразм.

    Вспоминается эпический фэйл, когда ребёнок зажал пробел, набрал ниврот большую строку и.... ВОШЁЛ В iOS!! За такое сразу с волчьим билетом на%%%%й из компании!

     
     
  • 4.133, Golangdev (?), 20:49, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Как вообще связан ребёнок, вошедший по пробелам в iOS!! и дизайн конфига ?

    Ваши аргументы притянуты за уши.

     
     
  • 5.138, Аноним (103), 23:13, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Разве кто-то позиционировал это как аргументы?
     
     
  • 6.154, Golangdev (?), 00:11, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И то верно =)
     
  • 2.123, Аноним (125), 17:43, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Золотые слова! Сколько уже ДЫР поналеплено из-за того, что какой-то u@uот думает, что "упростил себе работу" исполнением внешнего, абсолютно непредсказуемого кода!
    А потом бегают "ой, вордовый вирус, всё пропало!".

    Да чё там кода... даже "специально оформленный пакет" может ронять TCP, JPEG и ещё кучу библиотек, где прогер даже не задумывался, что могут прийти "специально оформленные данные"!

     
     
  • 3.129, Sw00p aka Jerom (?), 19:20, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > исполнением внешнего

    https://owasp.org/www-community/vulnerabilities/XML_External_Entity_(XXE)_Processing

    это смех :)

    пс: промолчу про "исполнение" js в браузере ибо не по теме.

     
  • 3.139, Аноним (103), 23:14, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Да чё там кода... даже "специально оформленный пакет" может ронять TCP, JPEG и ещё кучу библиотек, где прогер даже не задумывался, что могут прийти "специально оформленные данные"!

    Так вроде subj реализован не на сишке, а на котлине.

     
     
  • 4.150, Аноним (146), 00:01, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это не так уж важно, когда не проверяешь, что тебе прилетает из помойки мира.
     

  • 1.13, Вы забыли заполнить поле Name (?), 16:31, 04/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Яблочники пишут на котлине? А как же Свифт?
     
     
  • 2.20, Аноним (103), 16:59, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    На свифте пишут любители яблок (а кто сказал, что такие работают в Apple?)
     
     
  • 3.109, Аноним (102), 14:23, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >а кто сказал, что такие работают в Apple?

    А это мысль.

     
  • 2.78, Аноним (78), 08:33, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    https://developer.apple.com/xcode/
     
     
  • 3.131, Вы забыли заполнить поле Name (?), 19:24, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > https://developer.apple.com/xcode/

    Что сказать то хотел?

     
  • 2.90, Всем Анонимам Аноним (?), 12:16, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А в гугле все сидят на Маках вместо Хромбуков. Обмен :)
     
     
  • 3.110, Аноним (102), 14:23, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >А в гугле

    Как же редхат и пони?

     
     
  • 4.151, Аноним (146), 00:02, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это не те вопросы, которые интересны тем людям. На чём удобно, на том и рабочая станция. Это такая специфика корпо такого высокого уровня.
     

  • 1.15, YetAnotherOnanym (ok), 16:37, 04/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Эта "инновация" поставила рекорд по нелепости.
     
     
  • 2.21, Аноним (103), 17:01, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Подозреваю, что людям, далёким от IT, действительно сложно понять, зачем вообще нужны всякие DSL.
     
     
  • 3.31, Витюшка (?), 18:16, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это обычный NIH синдром. Их было сотни и тысячи, будут сотни и тысячи.

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

    Думаю ответ - ничем, никакие.

     
     
  • 4.38, oficsu (ok), 19:01, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Их было сотни и тысячи, будут сотни и тысячи

    Я вот попытался подобрать под себя среди тех, что уже есть. И среди сотен и тысяч, единственный, прошедший по минимальным критериям — jsonnet. Но даже он несамостоятелен и требует костылей, если частью конфига должны быть какие-то внешние данные. Ещё хуже, если эти внешние данные сами зависимы от конфига

     
  • 4.41, Бывалый смузихлёб (?), 20:41, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вот сидит целый жирнющий яблочный отдел во главе с небинарными руководителями и голову ломает, что бы эдакого придумать чтобы смотрелось с виду очень полезно( в рамках яблока ввиду отсутствия внятных аналогов ) и можно было ещё годами изображать активную работу
    Не на мороз же по собственной воле выкидываться

    Ну не что-то реально интересное и полезное придумывать, для этого ведь нужен талант а не токсичность и ГЗТ.

    А пока - пикл, неведомое ябло-вр по предзаказу, всплывшее когда тема уже слилась( всего на несколько лет опоздали с попаданием в тренд ), яблокомпы и айфоны, у которых уже никто толком не понимает что принципиально изменилось за год.

     
  • 4.57, Аноним (103), 22:39, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Нет даже анализа и сравнения, а чем этот язык конфигурации лучше десятка альтернатив? Какие проблемы он решает, что не могут другие?

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

     
     
  • 5.92, GrNa (?), 13:43, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вот тут, например, списочек можете глянуть https://kcl-lang.io/docs/user_docs/getting-started/intro#how-to-choose
     
  • 4.77, Аноним (-), 06:10, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Среди альтернатив нет ничего пристойного json больше всех похож на правду Во... большой текст свёрнут, показать
     
     
  • 5.80, Бывалый смузихлёб (?), 09:42, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    конфиги и на жс можно писать некоторые так и делают если в проекте используется... большой текст свёрнут, показать
     
     
  • 6.97, Аноним (-), 14:00, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    О, знаток начал активной разработки, спешу сообщить тебе, что это внутренний инс... большой текст свёрнут, показать
     
  • 5.117, YetAnotherOnanym (ok), 15:17, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > там есть много лишнего

    Это весомый повод отказаться, да.

     
  • 3.111, Аноним (102), 14:25, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ещё сложнее понять, зачем их писать на Kotlin, когда у одного языка для описания DSL-ей (tinyscheme) 2 тысячи строк кода на Си в исходниках.
     
     
  • 4.140, Аноним (103), 23:16, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Кстати, сколько там тысяч переполнений буфера?
     
  • 2.40, Бывалый смузихлёб (?), 20:32, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    До уровня кроссплатформенного серверного свифта дно ещё не пробито, но уже кое-как выдерживает натиск яблока
     

  • 1.17, Quad Romb (ok), 16:55, 04/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Лавры XML с его схемами и сегодня не дают кому-то покоя.
    Учитывая валидацию значений и возможность иметь единый протоконфиг для ПО разных производителей - может в этом и есть какой-то смысл.
    Во всяком случае, по документации стоит пробежаться.
     
  • 1.24, Аноним (24), 17:18, 04/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Может быть пора уже перестать плодить лишние сущности? Инновация ради инновации
     
     
  • 2.25, Аноним (25), 17:24, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Эксперты всегда забывают, что "лишнесть" сущности необходимо доказать, а не просто постулировать.
     
     
  • 3.32, Витюшка (?), 18:17, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Доказывать нужно нужность сущности, а не наоборот.
     
     
  • 4.54, Аноним (103), 22:34, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Те, кто работает со структурированными (JSON/YAML) данными, и так понимает нужность подобных решение (CUE, Jsonnet).
    А далёким от программирования надо что-то доказывать... но зачем? Они же всё равно не поймут, зачем вообще эти канплюхтеры нужны.
     
     
  • 5.112, Аноним (102), 14:26, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Те, кто работает со структурированными (JSON/YAML) данными, и так понимает
    >А далёким от программирования

    YAML-программирования, то есть.

     
  • 4.72, Sw00p aka Jerom (?), 02:25, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >нужность сущности

    необходимость и достаточность

     
  • 4.144, Аноним (-), 23:22, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нужность сущности доказывается практикой: ненужные вещи не взлетают. Это "неконструктивное" доказательство, потому что оно, само по себе, не объясняет зачем они нужные. Но с другой стороны:

    1. изучая кому оно нужно, где и как используется, можно выстроить конструктивное доказательство.
    2. такое доказательство осмыслено только в тех случаях, если ты ищешь применения своим талантам и хочешь создать новую востребованную сущность, остальные же люди делятся на две группы: те кому сущность может быть полезна и те кому она бесполезна. Второй группе нет никакого смысла что-либо объяснять, а первая группа мотивирована, чтобы самостоятельно искать то, что им нужно и находить это. С доказательством или без него.

     

  • 1.29, Вован (??), 18:10, 04/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Либо мы доверяем в программе конфигам, либо мы дублируем логику валидации ещё и в самих конфигах.
     
     
  • 2.33, Quad Romb (ok), 18:47, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Чего так?
    Пресечь ошибки в конфиге без затрат на разворачивание приложения нам кто-то запрещает?
    Тем более, что не всё что допустимо в конфиге для самого приложения - допустимо для пользователей этого приложения в конкретном окружении.
     

  • 1.35, Аноним (35), 18:53, 04/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Видимо для каких-то систем где используются как мобильные приложения на iOS и An... большой текст свёрнут, показать
     
  • 1.42, Tron is Whistling (?), 20:42, 04/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    env:DATABASE_PASSWORD - это мило.
     
     
  • 2.51, Sw00p aka Jerom (?), 22:28, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > env:DATABASE_PASSWORD - это мило.

    пустая строка :)

     
  • 2.55, Аноним (103), 22:36, 04/02/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > env:DATABASE_PASSWORD - это мило.

    Настоящие мужики вписывают пароль в код и коммитят в гит.

     
  • 2.69, OpenEcho (?), 02:03, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > env:DATABASE_PASSWORD - это мило.

    А можно поинтересоваться, - в чем "милость" то?

     
     
  • 3.83, Tron is Whistling (?), 10:32, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да ни в чём, всё нормально, продолжайте.
     
     
  • 4.114, OpenEcho (?), 14:47, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Да ни в чём, всё нормально, продолжайте.

    Если у вас любой дятел может соваться в /proc и читать все что пожелает, то с вашим "мило" все понятно

     
  • 3.98, Аноним (103), 14:01, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > А можно поинтересоваться, - в чем "милость" то?

    В том, что пароль вынесен за пределы конфига в какое-то "безопасное хранилище".

    Не может быть ничего безопаснее пароля в сорцах!

     
     
  • 4.115, OpenEcho (?), 14:50, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > В том, что пароль вынесен за пределы конфига в какое-то "безопасное хранилище".
    > Не может быть ничего безопаснее пароля в сорцах!

    Разговот был про environment, в которой при правильно настроенной системе имеет доступ только овнер

     
  • 3.107, x3who (?), 14:17, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    strings /proc/2146/environ
     
     
  • 4.116, OpenEcho (?), 14:58, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > strings /proc/2146/environ

    Access denied. Как здесь любят говорить - "что не так?"

    Я вам очень настоятельно советую почитать про

    proc  /proc  proc  defaults,nosuid,nodev,noexec,relatime,hidepid=2  0  0

    в /etc/fstab

    и ознакомится с 'unshare(1)'

     
     
  • 5.121, x3who (?), 17:15, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Прошу прощения, должно быть 'strings /proc/$$/environ', но шелл развернул, а я не заметил.
    Но оно даже лучше, что так вышло, потому что мы наглядно видим, что

    > hidepid=2

    Нам ничего нового не даёт (другие юзеры и так прочитать не смогут, а sudoerы - всё равно прочтут)


    > и ознакомится с 'unshare(1)'

    Как именно вы предлагаете его использовать?

     
     
  • 6.122, OpenEcho (?), 17:21, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > а sudoerы - всё равно прочтут)

    А разве руты не на то чтоб видеть, знать и менять все?

    >> и ознакомится с 'unshare(1)'
    > Как именно вы предлагаете его использовать?

    Загонять в отдельные namespace


     
     
  • 7.126, x3who (?), 18:05, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > А разве руты не на то чтоб видеть, знать и менять все?

    А разве рут имеет возможность увидеть пароль пользователе в системе? И зачем бы ему? :)

    > Загонять в отдельные namespace

    Это понятно из 'man unshare(1)' - для чего он. Непонятно как конкретно вы предлагаете его использовать в данном случае.


     
     
  • 8.168, OpenEcho (?), 13:38, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Я напомню, что разговор о паролях в среде для сервисов, а не о etc shadow А ком... текст свёрнут, показать
     
     
  • 9.174, x3who (?), 22:36, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да, примерно как раз мой случай - админы sudo-ятся в юзера приложения и там рабо... текст свёрнут, показать
     
  • 6.143, Аноним (103), 23:22, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Нам ничего нового не даёт (другие юзеры и так прочитать не смогут, а sudoerы - всё равно прочтут)

    О ужас, у пользователя root обнаружены повышенные привилегии! Все обратно на винду!

     
  • 3.160, ptr (??), 04:13, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Пароль вообще не должен храниться. Нигде. Даже на сервере. Или в оперативной памяти. Хранится может лишь результат криптографической функции от него.

    А keytab это будет или какой-то токен - уже не столь важно.

     
     
  • 4.169, OpenEcho (?), 14:29, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Пароль вообще не должен храниться. Нигде. Даже на сервере. Или в оперативной памяти. Хранится может лишь результат криптографической функции от него.

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

    > А keytab это будет или какой-то токен - уже не столь важно.

    Для того, чтобы контролировать пермишины, ОСЬ сервера сервирующая что либо, должна хранить где-то флажок, "можно/не можно" и как он взведется - пофиг, напрямую паролем или обмазыванием в керберос - не важно. Тоже самое и с сервисами нуждающимися в авторизации. Керберос (или что то другое) просто защищает содержимое оригинального пароля от запущеного сервиса, не более, но сервис то получил в итоге то, что ему нужно - разрешение. С токенами/керберосом удобно управлять кластерами, базара нет, централизованно, - можно/нельзя, но если взять на рассмотрение одинокий сервак, а не всю ферму, то все сводится к секьюрности ОСи т.к. что пароль, что авторизация от стороннего сервиса - ничего не меняет, пофиг что стащить, hash из keytab-a или hashicorp vault доступ или банальный пароль, главное то результат - "можно", поэтому:

    > А keytab это будет или какой-то токен ИЛИ ПАРОЛЬ - уже не столь важно.

     

  • 1.60, Ivan_83 (ok), 22:51, 04/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    LUA есть для гибкости там где надо.
     
  • 1.73, Sw00p aka Jerom (?), 02:38, 05/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    опять из функций (шаблоны, генерация, конфиги, макросы) IDE пытаются сделать ЯП (фейспалм)
     
  • 1.76, Вы забыли заполнить поле Name (?), 04:19, 05/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Им в качестве реализации надо было на С++ писать и потом уже биндинги генерить. В текущей реализации не взлетит, скриньте.
     
     
  • 2.100, Аноним (103), 14:03, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Чтобы сразу с переполнениями буфера?
     
     
  • 3.130, Вы забыли заполнить поле Name (?), 19:23, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Чтобы сразу с переполнениями буфера?

    Ну твой уже, вижу, переполнился. Пишешь за границы. Смотри, словишь принудительное завершение.

     

  • 1.79, Аноним (79), 09:17, 05/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    есть же Lisp зачем опять что-то придумывать
     
     
  • 2.84, Аноним (84), 11:00, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Или Scheme. Как пример реального использования - Guix.
     
     
  • 3.119, но5им (?), 16:42, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А пример реального использования guix есть?
     
     
  • 4.120, Аноним (102), 16:45, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Берёшь и пользуешься.
     
  • 2.105, Аноним (102), 14:11, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >зачем опять что-то придумывать

    Затем, чтобы завязывать на себя, просить зарплату/гранты и десятилетиями обещать выпилить GIL.

     

  • 1.85, Tron is Whistling (?), 11:01, 05/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Сразу видно, что не хватает ещё одного языка программирования для определения собственно содержимого Pkl.
     
  • 1.87, Golangdev (?), 11:07, 05/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > языка программирования Pkl, предназначенного для определения конфигурации и продвигающего модель "конфигурация как код".

    Если проект реально окажется жизнеспособным и сможет предоставить заявленную функциональность, то может стать вместо yaml для Kubernetes (k8s)

     
     
  • 2.101, Аноним (103), 14:06, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Неа. В кубике старательно избегают вендорлоков на одну корпорацию. Показательно, какой объем работ стоил им уход от завязок на гугл.

    Тем более, что в мире кубика уже давно есть CUE, который ничем не уступает.

     
  • 2.127, Аноним (64), 18:16, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А так же для плейбуков в Ansible (мечты)
     
     
  • 3.134, Golangdev (?), 20:50, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    там же питон
     
     
  • 4.145, Аноним (103), 23:23, 05/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ещё скажите, что там anaconda.
     
     
  • 5.152, Аноним (146), 00:06, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Важен способ: у тебя на нормальном языке возможность написать программу и коротко, декларативно указывать написанный модуль в конфиге.

    И декларативность есть и возможность накодить (или код написать).

    Одно из сочетаний: Ансибл с Питоном. Видимо, другие тоже могут?

     

  • 1.88, vitalif (ok), 11:33, 05/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Фуфуфу

    Сразу вспоминается Vagrant с его Ruby конфигами. Адский треш

     
     
  • 2.153, Аноним (146), 00:08, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Адский трешь и на C++ и на Ржавом и на Яве и на Питоне у Каноникла.

    А бывало - на шелл элегантно и просто могут.

    Смотря кто код пишет. Плохому танцору трико жмёт...

     

  • 1.113, Аноним (102), 14:27, 05/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Пока что лучшим языком программирования в конфигах остаётся m4.
     
  • 1.124, crypt (ok), 17:46, 05/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    а мне нравится
     
     
  • 2.155, Аноним (146), 00:44, 06/02/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Пруфы на Гит! :)

    Станет виден стиль, будет понятно что к кому.

     

  • 1.132, Аноним (132), 19:25, 05/02/2024 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     
  • 1.161, ptr (??), 04:57, 06/02/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Код в конфиге - не лучшая идея. Так как, в общем случае, на любой язык его задолбаешься переводить. То есть, при применении такого конфига для Kotlin, C# или даже plpgsql, код уж слишком разный получается.

    Может я, конечно, что-то не понимаю. Но для меня подобный язык имеет ценность только тогда, когда на его основании можно сгенерировать не только конфигурационные файлы, но и код для Java, C#, C/C++, Rust, Python, T-SQL, plpgsql и т.п. Включая контракты на XML, JSON, ProtoBuf и т.п.

    А тут даже мэппинг не учитывает то, что где-то нужен SnakeCase, где-то CamelCase или lowerCamelCase, а где-то вообще LispCase. Это не считая того, что то, что в PosrgreSQL может быть массивом или композитным типом, в MS SQL уже должно быть разложено по записям/таблицам или сериализовано.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру