"Безголовые" системы управления контентом (Headless CMS) - один из популярных подходов в современном мире в сфере работы с контентом. Популярнейшая блог платформа Wordpress в последнее время часто встречается в статьях о headless CMS. Drupal уже давно себя называет headless CMS. Множество облачных сервисов и открытых проектов позиционируют себя как headless CMS.
Так в чем-же идея?
Идея простая - есть отдельный интерфейс для управления контетом и API, при помощи которого можно этот контент получить, CMS никак не навязывает как нужно делать отображение контента.
Что это нам дает:
- Разработка backend и frontend разведены в разные углы и общаются через API
- Нагрузка на сервер снижается
- Frontend становиться более самостоятельным
Что есть в node.js для того, чтобы реализовать эту концепцию?
Один из популярных проектов - https://strapi.io/, очень активно развивающийся проект, при помощи которого можно уже сейчас делать headless CMS.
Так в чем-же идея?
Идея простая - есть отдельный интерфейс для управления контетом и API, при помощи которого можно этот контент получить, CMS никак не навязывает как нужно делать отображение контента.
Что это нам дает:
- Разработка backend и frontend разведены в разные углы и общаются через API
- Нагрузка на сервер снижается
- Frontend становиться более самостоятельным
Что есть в node.js для того, чтобы реализовать эту концепцию?
Один из популярных проектов - https://strapi.io/, очень активно развивающийся проект, при помощи которого можно уже сейчас делать headless CMS.
Полнофункциональный, открытый движок wiki для построения документации.
Хорошо использовать, когда есть необходимость на своем сервере управлять технической документацией с версионированием, уровнями доступа, форматированием контента, управлением медиа файлами и др.
Хорошо использовать, когда есть необходимость на своем сервере управлять технической документацией с версионированием, уровнями доступа, форматированием контента, управлением медиа файлами и др.
А давайте поговорим про функциональное программирование? Функциональное программирование (ФП) - это раздел математики и парадигма программирования, в котором вычисление рассматривается как математическая функция:
f(x) = y
Как следствие мы можем выделить несколько свойств такого подхода: в функции не хранится состояние (stateless). Мы не можем воздействовать на то, что определено вне функции - иначе появляется побочный эффект (side effect), функция перестает быть чистой (pure function), функциональной. При вызове одной и той-же функции в одинаковым набором параметров мы всегда получаем одинаковый результат.
Математической основой ФП является лямбда-исчисления (https://en.wikipedia.org/wiki/Lambda_calculus)
В ссылках снизу вы сможете найти awesome functional programming + ссылка на книжку про функциональное программирование.
Лайкайте пост, если хотите продолжение о ФП, добавлю ссылки на популярные библиотеки для работы в функциональном стиле.
#функциональное_программирование
f(x) = y
Как следствие мы можем выделить несколько свойств такого подхода: в функции не хранится состояние (stateless). Мы не можем воздействовать на то, что определено вне функции - иначе появляется побочный эффект (side effect), функция перестает быть чистой (pure function), функциональной. При вызове одной и той-же функции в одинаковым набором параметров мы всегда получаем одинаковый результат.
Математической основой ФП является лямбда-исчисления (https://en.wikipedia.org/wiki/Lambda_calculus)
В ссылках снизу вы сможете найти awesome functional programming + ссылка на книжку про функциональное программирование.
Лайкайте пост, если хотите продолжение о ФП, добавлю ссылки на популярные библиотеки для работы в функциональном стиле.
#функциональное_программирование
Продолжаем говорить о функциональном программировании.
Давайте рассмотрим жаргон функциональных программистов, начнем с терминов, которые у всех на слуху.
Функция высшего порядка (high order function / HOF) - это функция, которая принимает в параметрах или возвращает другую функцию:
Лямбда (Lambda) - это анонимная функция, которая может использоваться как значение. Лямбды могут быть присвоены переменным. Лямбды могут передаваться в функции высшего порядка в качестве аргументов.
;(
Сегодня в ссылке под статьей популярная библиотека на javanoscript для работы в функциональном стиле.
#функциональное_программирование
Давайте рассмотрим жаргон функциональных программистов, начнем с терминов, которые у всех на слуху.
Функция высшего порядка (high order function / HOF) - это функция, которая принимает в параметрах или возвращает другую функцию:
const filter = (predicate, xs) => xs.filter(predicate)
const is = (type) => (x) => Object(x) instanceof type
filter(is(Number), [0, '1', 2, null]) // [0, 2]
Лямбда (Lambda) - это анонимная функция, которая может использоваться как значение. Лямбды могут быть присвоены переменным. Лямбды могут передаваться в функции высшего порядка в качестве аргументов.
;(
function (a) {
return a + 1
})
;(a) => a + 1
const add1 = (a) => a + 1
[1, 2].map((a) => a + 1)
Сегодня в ссылке под статьей популярная библиотека на javanoscript для работы в функциональном стиле.
#функциональное_программирование
Новый проект из цикла "Это что на javanoscript?"
Isomorphic git - git, написаный на javanoscript. Работает в браузерах и в node.js. Использует тот же формат файлов для хранения информации о изменениях, что и обычный git.
https://github.com/isomorphic-git/isomorphic-git
Isomorphic git - git, написаный на javanoscript. Работает в браузерах и в node.js. Использует тот же формат файлов для хранения информации о изменениях, что и обычный git.
https://github.com/isomorphic-git/isomorphic-git
GitHub
GitHub - isomorphic-git/isomorphic-git: A pure JavaScript implementation of git for node and browsers!
A pure JavaScript implementation of git for node and browsers! - isomorphic-git/isomorphic-git
Срочно в номер! 18 декабря 2019-го года вышла 8-я версия javanoscript engine V8:
Performance (size & speed)
- занимает ~40% меньше памяти
- оптимизация выполнения built-in fns
JS
- Optional chaining
( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining )
- Nullish coalescing
( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator )
Все подробности по ссылке!
Performance (size & speed)
- занимает ~40% меньше памяти
- оптимизация выполнения built-in fns
JS
- Optional chaining
const nameLength = db?.user?.name?.length;( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining )
- Nullish coalescing
props.enabled ?? true( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator )
Все подробности по ссылке!
Следующие 2 термина из жаргона функционального программиста это моноид и монада. Итак давайте разберемся, что это такое и зачем это нужно:
Моноид (monoid) - объект с функцией, которая может комбинировать текущий объект с объектом такого-же типа. Например:
1 + 1
[1, 2].concat([3, 4])
Когда мы говорим о моноидах, то должен существовать нейтральный элемент (identity), который при комбинировании не влияет на текущий объект:
1 + 0
0 - нейтральный элемент (identity)
[1,2].concat([])
[] - нейтральный элемент (identity)
Монада (Monad) - сущность из мира функционального программирования, которая используется для композиции функций. Для простоты понимания можно сказать, что при помощи монад однотипные функции выстраиваются в цепочку. Пример:
// Implementation
Array.prototype.chain = function (f) {
return this.reduce((acc, it) => acc.concat(f(it)), [])
}
// Usage
Array.of('cat,dog', 'fish,bird').chain((a) => a.split(',')) // ['cat', 'dog', 'fish', 'bird']
// Contrast to map
Array.of('cat,dog', 'fish,bird').map((a) => a.split(',')) // [['cat', 'dog'], ['fish', 'bird']]
На практике монадами называют объекты, у которых есть функции of и chain. chain похож на map, за исключением того, что он производит разложение вложенных объектов. chain так же известен как flatmap или bind.
Больше про монады в статье по ссылке внизу.
#функциональное_программирование
Моноид (monoid) - объект с функцией, которая может комбинировать текущий объект с объектом такого-же типа. Например:
1 + 1
[1, 2].concat([3, 4])
Когда мы говорим о моноидах, то должен существовать нейтральный элемент (identity), который при комбинировании не влияет на текущий объект:
1 + 0
0 - нейтральный элемент (identity)
[1,2].concat([])
[] - нейтральный элемент (identity)
Монада (Monad) - сущность из мира функционального программирования, которая используется для композиции функций. Для простоты понимания можно сказать, что при помощи монад однотипные функции выстраиваются в цепочку. Пример:
// Implementation
Array.prototype.chain = function (f) {
return this.reduce((acc, it) => acc.concat(f(it)), [])
}
// Usage
Array.of('cat,dog', 'fish,bird').chain((a) => a.split(',')) // ['cat', 'dog', 'fish', 'bird']
// Contrast to map
Array.of('cat,dog', 'fish,bird').map((a) => a.split(',')) // [['cat', 'dog'], ['fish', 'bird']]
На практике монадами называют объекты, у которых есть функции of и chain. chain похож на map, за исключением того, что он производит разложение вложенных объектов. chain так же известен как flatmap или bind.
Больше про монады в статье по ссылке внизу.
#функциональное_программирование
Это что на Javanoscript?
WebTorrent - torrent client написаный на javanoscript, который работает и в браузере и в node.js.
https://github.com/webtorrent/webtorrent
WebTorrent - torrent client написаный на javanoscript, который работает и в браузере и в node.js.
https://github.com/webtorrent/webtorrent
GitHub
GitHub - webtorrent/webtorrent: ⚡️ Streaming torrent client for the web
⚡️ Streaming torrent client for the web. Contribute to webtorrent/webtorrent development by creating an account on GitHub.
State Of Javanoscript 2019 🔥
Тренды, Фреймворки, Зарплаты
Скандалы, Интриги, Расследования
https://t.co/qcbd2kkHKK?amp=1
Тренды, Фреймворки, Зарплаты
Скандалы, Интриги, Расследования
https://t.co/qcbd2kkHKK?amp=1
Stateofjs
The State of JavaScript 2019
Discover the most popular JavaScript features & technologies of the year.
Это что на JavaScript?
Brain.js - библиотека для создания нейронных сетей, написана на JavaScript. Работает в браузерах и в node.js. Есть GPU ускорение. Быстрая, простая и легкая в использовании библиотека.
https://github.com/BrainJS/brain.js
Brain.js - библиотека для создания нейронных сетей, написана на JavaScript. Работает в браузерах и в node.js. Есть GPU ускорение. Быстрая, простая и легкая в использовании библиотека.
https://github.com/BrainJS/brain.js
GitHub
GitHub - BrainJS/brain.js: 🤖 GPU accelerated Neural networks in JavaScript for Browsers and Node.js
🤖 GPU accelerated Neural networks in JavaScript for Browsers and Node.js - BrainJS/brain.js
Библиотека для работы со всякими математическими штуками, например можно легко переводить разные градусы Цельсия в Фаренгейта, дюймы в сантиметры и т.п.
Можно сказать, что это инженерный калькулятор на javanoscript.
https://github.com/josdejong/mathjs
Можно сказать, что это инженерный калькулятор на javanoscript.
https://github.com/josdejong/mathjs
GitHub
GitHub - josdejong/mathjs: An extensive math library for JavaScript and Node.js
An extensive math library for JavaScript and Node.js - josdejong/mathjs
Github Trending #4
- https://github.com/nuxt/nuxt.js - Vue.js Meta Framework to create complex, fast & universal web applications quickly.
- https://github.com/laurent22/joplin - Joplin - an open source note taking and to-do application with synchronization capabilities for Windows, macOS, Linux, Android and iOS. Forum: https://discourse.joplinapp.org/ https://joplinapp.org
- https://github.com/gatsbyjs/gatsby - Build blazing fast, modern apps and websites with React https://www.gatsbyjs.org
- https://github.com/renovatebot/renovate - Universal dependency update tool that fits into your workflows. https://renovatebot.com
- https://github.com/typicode/json-server - Get a full fake REST API with zero coding in less than 30 seconds (seriously)
- https://github.com/vuejs/vue-test-utils - 🔬 Utilities for testing Vue components https://vue-test-utils.vuejs.org
- https://github.com/scullyio/scully - The Static Site Generator for Angular apps
#github_trending
- https://github.com/nuxt/nuxt.js - Vue.js Meta Framework to create complex, fast & universal web applications quickly.
- https://github.com/laurent22/joplin - Joplin - an open source note taking and to-do application with synchronization capabilities for Windows, macOS, Linux, Android and iOS. Forum: https://discourse.joplinapp.org/ https://joplinapp.org
- https://github.com/gatsbyjs/gatsby - Build blazing fast, modern apps and websites with React https://www.gatsbyjs.org
- https://github.com/renovatebot/renovate - Universal dependency update tool that fits into your workflows. https://renovatebot.com
- https://github.com/typicode/json-server - Get a full fake REST API with zero coding in less than 30 seconds (seriously)
- https://github.com/vuejs/vue-test-utils - 🔬 Utilities for testing Vue components https://vue-test-utils.vuejs.org
- https://github.com/scullyio/scully - The Static Site Generator for Angular apps
#github_trending
Channel name was changed to «Math.random(): javanoscript community»
Это что на javanoscript?
Удивительный проект, написаный на javanoscript - система оптического распознавания символов (OCR). Работает в браузере (!) и в node.js. Распознает 100+ языков!
https://github.com/naptha/tesseract.js
Удивительный проект, написаный на javanoscript - система оптического распознавания символов (OCR). Работает в браузере (!) и в node.js. Распознает 100+ языков!
https://github.com/naptha/tesseract.js
GitHub
GitHub - naptha/tesseract.js: Pure Javanoscript OCR for more than 100 Languages 📖🎉🖥
Pure Javanoscript OCR for more than 100 Languages 📖🎉🖥 - naptha/tesseract.js