🇺🇦 Math.random(): javanoscript community – Telegram
🇺🇦 Math.random(): javanoscript community
1.14K subscribers
363 photos
8 videos
530 links
Download Telegram
Интересный репозиторий, в котором собрали список из актуальных видеокурсов для Web разработчика
Awesome: списки "прикольных" ссылок по разным тематикам - популярная тема на github, здесь собраны списки, которые могут быть полезны javanoscript разработчику. Полный список списков в ссылке снизу.

https://github.com/sorrycc/awesome-javanoscript - 🐢 A collection of awesome browser-side JavaScript libraries, resources and shiny things.
https://github.com/sindresorhus/awesome-nodejs - ⚡️ Delightful Node.js packages and resources https://node.cool
https://github.com/standard/awesome-standard - Documenting the explosion of packages in the standard ecosystem! https://standardjs.com
https://github.com/sindresorhus/awesome-electron - Useful resources for creating apps with Electron
https://github.com/parro-it/awesome-micro-npm-packages - A curated list of small, focused npm packages.
https://github.com/feross/awesome-mad-science - Delightful npm packages that make you say "wow, didn't know that was possible!"
https://github.com/kucherenko/awesome-project-questions - list of questions that engineers / architects / managers should ask before the start of a project.
Мы с вами привыкли, что на javanoscript решаются определенные задачи: web, backend на node.js, mobile с react native и т.п., но есть часть проектов, узнав о которых мы говором: "Да ладно, это на JavaScript?", в это посте собраны ссылки на интересные проекты, написаные на JS из разряда "Не может быть":
https://github.com/mmckegg/notevil - javanoscript javanoscript interpreter, useful for running untrusted code safely.
https://www.npmjs.com/package/google-distance - Easily get distance data between locations
https://www.npmjs.com/package/node-jvm - java virtual machine in pure node.js
https://github.com/mattytemple/speak-js - Text-to-Speech in JavaScript
https://github.com/DanielRapp/doppler - detect motion with the doppler effect using only the microphone and speakers
https://www.npmjs.com/package/cylon - JavaScript framework for robotics, drones, and the Internet of Things (IoT) https://cylonjs.com
https://github.com/rwaldron/johnny-five - JavaScript Robotics and IoT programming framework, developed at Bocoup.
Друзья, приветствуем!
Мы рады сообщить, что несмотря на то, что режим #післясвят набирает обороты, у нас уже есть планы на следующий год! 🎉
Мы готовы анонсировать наш следующий ивент под названием Growing Seniority– состоится он 22 января и спикеры подобрались прямо скажем замечательные:
Martin Chaov, Software Architect @SBTech с темой “The Mythical Senior Developer”
Oleksandr Poshtaruk, Senior front-end developer @ITecGurus с темой “Mentor it, blog it, talk it, record it”
На этот раз мы очень хотим реализовать планы и не только собраться в прекрасной компании, узнать новые интересные вещи, но и сделать доброе дело – все собранные средства с этой встречи мы передадим благотворительному фонду Благомай на одну из благотворительных программ, а какую именно – сможем сказать уже совсем скоро, так как ребята как раз финализируют планы на 2020 год. Давайте делать добрые дела вместе 😊

Подробности мероприятия, описания докладов и ссылка на билеты вот здесь.
"Безголовые" системы управления контентом (Headless CMS) - один из популярных подходов в современном мире в сфере работы с контентом. Популярнейшая блог платформа Wordpress в последнее время часто встречается в статьях о headless CMS. Drupal уже давно себя называет headless CMS. Множество облачных сервисов и открытых проектов позиционируют себя как 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 + ссылка на книжку про функциональное программирование.

Лайкайте пост, если хотите продолжение о ФП, добавлю ссылки на популярные библиотеки для работы в функциональном стиле.

#функциональное_программирование
⁠Продолжаем говорить о функциональном программировании.

Давайте рассмотрим жаргон функциональных программистов, начнем с терминов, которые у всех на слуху.

Функция высшего порядка (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
⁠Срочно в номер! 18 декабря 2019-го года вышла 8-я версия javanoscript engine V8:

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.

Больше про монады в статье по ссылке внизу.

#функциональное_программирование
State Of Javanoscript 2019 🔥
Тренды, Фреймворки, Зарплаты
Скандалы, Интриги, Расследования
https://t.co/qcbd2kkHKK?amp=1
Это что на JavaScript?

Brain.js - библиотека для создания нейронных сетей, написана на JavaScript. Работает в браузерах и в node.js. Есть GPU ускорение. Быстрая, простая и легкая в использовании библиотека.

https://github.com/BrainJS/brain.js
Библиотека для работы со всякими математическими штуками, например можно легко переводить разные градусы Цельсия в Фаренгейта, дюймы в сантиметры и т.п.
Можно сказать, что это инженерный калькулятор на javanoscript.
https://github.com/josdejong/mathjs