No bullshit guide в архитектуру serverless. Единственно нормальное объяснение 👍 https://martinfowler.com/articles/serverless.html
martinfowler.com
Serverless Architectures
Serverless architectures replace a managed server with a collection of third party services and FaaS
Сделал компилятор из JS в ClojureScript. Должно быть полезно для новичков, чтобы посмотреть как разные конструкции в JS могут выглядеть в кложуре. Прям весь синтаксис может не скомпилит, но в целом достаточно хорошо получилось https://roman01la.github.io/javanoscript-to-clojurenoscript/
Транспайлить в Lisp на удивление несложно, синтаксиса в языке практически нету 🤷♀️ Базовые синтаксические конструкции и все остальное списки символов.
Если хочется узнать больше о структурах данных в функциональном программировании, но не хочется вникать в книгу Окасаки (книга стоящая кстати) https://cs.uwaterloo.ca/~plragde/flaneries/FDS/
Набираю группу на изучение кложескрипта с реактом. Бесплатно, коротко, в скайпе. Пишите в личку здесь @roman01la
React — это язык программирования. Как тебе такое, Илон Маск?
- В реакте программируют в DSL похожем на XML, который компилируется в JS
- В реакте есть свой try..catch через
- В реакте есть глобальные переменные через Context API
- В реакте можно биндить глобальные переменные (Context) как в Clojure через
- В реакте программируют в DSL похожем на XML, который компилируется в JS
- В реакте есть свой try..catch через
componentDidCatch- В реакте есть глобальные переменные через Context API
- В реакте можно биндить глобальные переменные (Context) как в Clojure через
bindingПросили публиковать сюда материалы/задания, которые используем в курсе. Вот репозиторий с материалами по интро в язык, пользуйтесь https://github.com/roman01la/amsterdamjs-clojurenoscript-workshop
GitHub
GitHub - roman01la/amsterdamjs-clojurenoscript-workshop: Educational materials for ClojureScript workshop @ AmsterdamJS '18
Educational materials for ClojureScript workshop @ AmsterdamJS '18 - GitHub - roman01la/amsterdamjs-clojurenoscript-workshop: Educational materials for ClojureScript workshop @ AmsterdamJS '18
Под Rust сделали персистентные структуры из Clojure https://docs.rs/im/11.0.0/im/ 👏
docs.rs
im - Rust
API documentation for the Rust `im` crate.
Чуваки из FB научили Prepack (AOT компилятор для JS) компилить в LLVM и в нативный бинарник 🤔 https://github.com/facebook/prepack/pull/2264
GitHub
LLVM Backend by sebmarkbage · Pull Request #2264 · facebook/prepack
This lets us Prepack to native machine code or WebAssembly - without a JS runtime.
Prepack knows a lot about a program that it can evaluate. It is also highly specialized at getting rid of intermed...
Prepack knows a lot about a program that it can evaluate. It is also highly specialized at getting rid of intermed...
Есть предположение, что полноценный AOT к JS можно применить используя более строгие суперсеты языка или даже языки компилирующиеся в JS. Например Elm, PureScript и т.д., где побочные эффекты вынесены за пределы программы. По крайней мере на небольших примерах с Elm Prepack выдает работающую программу, в отличии от того, что обычно получается на выходе после применения AOT к обычной приложеньке на чистом JS, где побочные эффекты никак не контролируються.
Если подумать то AOT как раз больше имеет смысла применять к таким языкам, чтобы упрощать/развертывать их абстракции (например структуры данных) в максимально простой js код на этапе сборки проекта, вместо того, чтобы все это выполнять в рантайме.
Если подумать то AOT как раз больше имеет смысла применять к таким языкам, чтобы упрощать/развертывать их абстракции (например структуры данных) в максимально простой js код на этапе сборки проекта, вместо того, чтобы все это выполнять в рантайме.
Русскоговорящий чатик Clojure Russia переезжает из Clojurians Slack в Telegram 👉 https://news.1rj.ru/str/clojure_ru
Telegram
Clojure — русскоговорящее сообщество
Общаемся на темы, связанные с Clojure. Решаем проблемы, обмениваемся опытом и делимся новостями.
Вам могут быть интересны: @javanoscript_ru, @nodejs_ru, @devops_ru, @devops_jobs
Вам могут быть интересны: @javanoscript_ru, @nodejs_ru, @devops_ru, @devops_jobs
Все же очень круто, что кложура дает возможность лаконично выражать абстракции в виде данных.
Делаю прототип визуального редактора с набором простых блоков. Блоки довольно просто описать в стиле Hiccup, по структуре максимально приблежены к доменной области (свойства блоков в визуальном редакторе). Спекой неплохо выходит описать блоки и структуру, потом валидировать и разобрать все это на AST.
Дальше описываем несколько мультиметодов для транслирования в Reagent Hiccup и получаем UI.
Делаю прототип визуального редактора с набором простых блоков. Блоки довольно просто описать в стиле Hiccup, по структуре максимально приблежены к доменной области (свойства блоков в визуальном редакторе). Спекой неплохо выходит описать блоки и структуру, потом валидировать и разобрать все это на AST.
Дальше описываем несколько мультиметодов для транслирования в Reagent Hiccup и получаем UI.
(s/def :element/x int?)
(s/def :element/y int?)
(s/def :element/color string?)
(s/def :element/text
(s/cat
:tag #{:text}
:attrs (s/keys :req-un [:element/color])
:text string?))
(s/def :element/rect
(s/cat
:tag #{:rect}
:attrs (s/keys :req-un [:element/x :element/y])
:children (s/* :visual/element)))
(s/def :visual/element
(s/or
:rect :element/rect
:text :element/text))
(defmulti -compile-visual first)
(defmethod -compile-visual :rect [[_ {:keys [attrs children]}]]
(let [{:keys [x y]} attrs]
`[:div {:style {:left ~x
:top ~y
:position "absolute"}}
~@(map -compile-visual children)]))
(defmethod -compile-visual :text [[_ {:keys [attrs text]}]]
(let [{:keys [color]} attrs]
[:span {:style {:color color}}
text]))
(defn visual->hiccup [element]
(when (s/valid? :visual/element element)
(-> (s/conform :visual/element element)
-compile-visual)))
(visual->hiccup
[:rect {:x 10 :y 100}
[:text {:color "#000"} "text"]])
(comment
[:div
{:style {:top 100, :position "absolute", :left 10}}
[:span {:style {:color "#000"}} "text"]])