Достаточно подробный гайд от DataDog про то, как оптимизировать ресурсы окружения в Kubernetes, а соотвественно и финансовые расходы:
➡️ https://www.datadoghq.com/blog/rightsize-kubernetes-workloads/
Очень много слов на девопсовском, но если столкнетесь со схожей проблемой, то статья может сильно помочь
#kubernetes
➡️ https://www.datadoghq.com/blog/rightsize-kubernetes-workloads/
Очень много слов на девопсовском, но если столкнетесь со схожей проблемой, то статья может сильно помочь
#kubernetes
Datadog
Practical tips for rightsizing your Kubernetes workloads | Datadog
Learn how resources are allocated in Kubernetes environments and get tips for rightsizing your workloads for cost efficiency and performance.
👍2
Вышла новая мажорная версия node.js 20. В статье описаны основные значительные изменения и новые фичи:
Forwarded from opennet.ru
Доступна серверная JavaScript-платформа Node.js 20.0 https://opennet.ru/58998/
www.opennet.ru
Доступна серверная JavaScript-платформа Node.js 20.0
Состоялся релиз Node.js 20.0, платформы для выполнения сетевых приложений на языке JavaScript. Node.js 20.0 отнесён к веткам с длительным сроком поддержки, но данный статус будет присвоен только в октябре, после проведения стабилизации. Поддержка Node.js…
Отличный набор статей по React Router:
➡️ https://www.robinwieruch.de/categories/react-router-6/
Закрывает насущные вопросы по использованию библиотеки:
- Вложенный роутинг
- Аутентификация и приватные роуты
- Правильный редирект
- Основные хуки
- Ленивая подгрузка через React.Suspense
#react
➡️ https://www.robinwieruch.de/categories/react-router-6/
Закрывает насущные вопросы по использованию библиотеки:
- Вложенный роутинг
- Аутентификация и приватные роуты
- Правильный редирект
- Основные хуки
- Ленивая подгрузка через React.Suspense
#react
www.robinwieruch.de
RWieruch
Freelance Developer for React.js and JavaScript. Based in Berlin, German/English speaking. Consulting/Freelancing for Web Development project: Code Audits/Reviews, Workshops, Training, Implementation ...
👍2
Базовое, но четкое, пояснение разницы между Message-Driven, Event-Driven и Streaming, т.к зачастую понятия путаются между собой:
➡️ https://www.alibabacloud.com/blog/an-analysis-of-the-basic-concept-of-message-driven-event-driven-and-streaming_599521
Так же в конце статьи приложены варианты специфицирования вашего событийного API. Для nestjs есть модуль nestjs-asyncapi для AsyncAPI
#general #event
➡️ https://www.alibabacloud.com/blog/an-analysis-of-the-basic-concept-of-message-driven-event-driven-and-streaming_599521
Так же в конце статьи приложены варианты специфицирования вашего событийного API. Для nestjs есть модуль nestjs-asyncapi для AsyncAPI
#general #event
Alibaba Cloud Community
An Analysis of the Basic Concept of "Message-Driven, Event-Driven, and Streaming"
This article aims to provide a clear understanding of the recent high-frequency words "Message-Driven, Event-Driven, and Streaming" in messaging field.
👍4
Пролог: когда читал статью ниже, то по ходу дела возникали мысли, которыми хотел в итоге поделиться. И этих мыслей набралось столько, что пришлось разделить пост на две части 😄 Ниже представлена первая часть. Вторая выйдет на днях. И так-с…
Привез вам немножко лонгрида (там внутри статьи есть ссылки на другие связанные статьи, поэтому чтиво множиться в ширь еще больше):
➡️ https://www.spicyweb.dev/the-great-gaslighting-of-the-js-age/
Пересказывать не буду, т.к. лучше прочувствовать боль автора самому, но посыл такой - часто молодые (и не только) разработчики добровольно становятся заложниками одной/малого количества технологии (в статье на примере React) и считают ее идеалом/будущим/[любое восхитительное прилагательное]. Изучать что-то отличное от идеала у них большого желания нет и даже считают это вредным.
Проблема глубокая и может относится не только к React и не только к вебу, а к вообще любой любимой разработчиком технологии. Вкусовщина - очень плохое (и даже в некоторой степени губительное) качество разработчика. Да, могут быть технологии, которые ближе к сердцу, но они не должны влиять на объективность при принятии решений. Оценка и выбор конечных технологий должны идти от требований, сроков и уровня команды (в порядке важности).
Лично я сторонник мнения, что программист в первую очередь должен разбираться в общих принципах и подходах - это нужно для профессионализма, а уже конкретные технологии, как React - это нужно “для души”. Общие принципы и подходы не зависят от того, где их применять - веб, десктопная, мобильная, IoT, низкоуровневая и даже аппаратная разработка. В этом ценность такого программиста - огромная скорость адаптации к изменениям, а разработка ПО одна из наиболее динамичных сфер.
Во второй части раскрою детальнее, что значат эти “общие принципы и подходы”. Ждите…😅
Привез вам немножко лонгрида (там внутри статьи есть ссылки на другие связанные статьи, поэтому чтиво множиться в ширь еще больше):
➡️ https://www.spicyweb.dev/the-great-gaslighting-of-the-js-age/
Пересказывать не буду, т.к. лучше прочувствовать боль автора самому, но посыл такой - часто молодые (и не только) разработчики добровольно становятся заложниками одной/малого количества технологии (в статье на примере React) и считают ее идеалом/будущим/[любое восхитительное прилагательное]. Изучать что-то отличное от идеала у них большого желания нет и даже считают это вредным.
Проблема глубокая и может относится не только к React и не только к вебу, а к вообще любой любимой разработчиком технологии. Вкусовщина - очень плохое (и даже в некоторой степени губительное) качество разработчика. Да, могут быть технологии, которые ближе к сердцу, но они не должны влиять на объективность при принятии решений. Оценка и выбор конечных технологий должны идти от требований, сроков и уровня команды (в порядке важности).
Лично я сторонник мнения, что программист в первую очередь должен разбираться в общих принципах и подходах - это нужно для профессионализма, а уже конкретные технологии, как React - это нужно “для души”. Общие принципы и подходы не зависят от того, где их применять - веб, десктопная, мобильная, IoT, низкоуровневая и даже аппаратная разработка. В этом ценность такого программиста - огромная скорость адаптации к изменениям, а разработка ПО одна из наиболее динамичных сфер.
Во второй части раскрою детальнее, что значат эти “общие принципы и подходы”. Ждите…
Please open Telegram to view this post
VIEW IN TELEGRAM
The Spicy Web
The Great Gaslighting of the JavaScript Era
The age of frontend JavaScript frameworks eating the web world didn’t happen simply because some well-meaning developers found great DX. It happened because we were fed a line.
👍2🔥2❤1
Хорошая подборка библиотек для карт на React и JavaScript в целом:
➡️ https://javascript.plainenglish.io/5-javascript-mapping-libraries-when-to-use-them-961ff6366d0b
От себя:
Доводилось использовать только Leaflet - отличная библиотека, удобная в использовании и богатая по функционалу. Но из подборки впечатлила react-map-gl - обязательно попробую
➡️ https://javascript.plainenglish.io/5-javascript-mapping-libraries-when-to-use-them-961ff6366d0b
От себя:
Доводилось использовать только Leaflet - отличная библиотека, удобная в использовании и богатая по функционалу. Но из подборки впечатлила react-map-gl - обязательно попробую
Немного о «мультипоточности» в node.js. Хорошая статья рассказывающая про основы worker_threads с примерами высокоуровневых оберток:
➡️ https://snyk.io/blog/node-js-multithreading-worker-threads-pros-cons/
От себя:
В node.js «настоящих» потоков вы не найдете, как не ищи. Но это ни плохо, ни хорошо - просто сам движок не подразумевает оных. Если нужно реальное распараллеливание на уровне ОС, то в конце статьи как раз приведены примеры популярных языков с их поддержкой: Java, C/C++, Rust и еще десятки аля C#, Go, Closure, Haskell и т.д.
Вообще, если интересно разобраться с процессами/потоками, то неплохая базовая статья с картинками ➡️ https://dev.to/kwereutosu/multi-threading-and-parallel-programming-1l9m
➡️ https://snyk.io/blog/node-js-multithreading-worker-threads-pros-cons/
От себя:
В node.js «настоящих» потоков вы не найдете, как не ищи. Но это ни плохо, ни хорошо - просто сам движок не подразумевает оных. Если нужно реальное распараллеливание на уровне ОС, то в конце статьи как раз приведены примеры популярных языков с их поддержкой: Java, C/C++, Rust и еще десятки аля C#, Go, Closure, Haskell и т.д.
Вообще, если интересно разобраться с процессами/потоками, то неплохая базовая статья с картинками ➡️ https://dev.to/kwereutosu/multi-threading-and-parallel-programming-1l9m
Snyk
Node.js multithreading with worker threads: pros and cons | Snyk
In this article, we'll look at the pitfalls of worker threads and how they differ from the multithreading implementations in other programming languages.
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Твоя команда: закрываете проект раньше дедлайна, заказчик максимально доволен
Твоё начальство:
Твоё начальство:
😁6
Мой хороший друг и прекрасный девелопер предложил для канала отличную статью и свой комментарий к ней. Публикую как есть:
➡️ https://vas3k.blog/blog/ai_alignment/
Эта статья от Vas3k - настоящее чудо веселья и интереса, она обо всем: прошлом, настоящем и будущем ChatGPT. Однако, есть один вопрос, который волнует многих: заменит ли нас этот нейросетевой монстр в будущем? И если да, то когда? Неужели мы станем устаревшими, как старые добрые грамофоны? Или наши мозги будут все еще нужны для решения самых сложных задач? Может быть, ChatGPT будет лучшим другом и помощником человека? Давайте рассмотрим все эти вопросы с позитивной стороны и посмотрим, что нам готовит будущее вместе с нашими нейросетевыми товарищами!
Из статьи вы узнаете:
- кто такие "технобро"
- разницу между AI safety AI alignment
- Может ли себе ИИ ставить цели
Как и обычно в статьях о будущем, в этой тоже не обошлось без упоминания Илона Масковича, нашего любимого визионера и эксцентричного предпринимателя.
От себя:
Вы тоже можете помочь развивать канал через бота обратной связи @if_devlpr_bot. Предлагайте любые темы, статьи, книги, мемасики, новые идеи, строгую критику и вообще всё что приходит на ум. Буду рад любому фидбеку и если расскажите и пошарите канал со своим коллегам/друзьям/знакомым. Заранее спасибо!😘
➡️ https://vas3k.blog/blog/ai_alignment/
Эта статья от Vas3k - настоящее чудо веселья и интереса, она обо всем: прошлом, настоящем и будущем ChatGPT. Однако, есть один вопрос, который волнует многих: заменит ли нас этот нейросетевой монстр в будущем? И если да, то когда? Неужели мы станем устаревшими, как старые добрые грамофоны? Или наши мозги будут все еще нужны для решения самых сложных задач? Может быть, ChatGPT будет лучшим другом и помощником человека? Давайте рассмотрим все эти вопросы с позитивной стороны и посмотрим, что нам готовит будущее вместе с нашими нейросетевыми товарищами!
Из статьи вы узнаете:
- кто такие "технобро"
- разницу между AI safety AI alignment
- Может ли себе ИИ ставить цели
Как и обычно в статьях о будущем, в этой тоже не обошлось без упоминания Илона Масковича, нашего любимого визионера и эксцентричного предпринимателя.
От себя:
Вы тоже можете помочь развивать канал через бота обратной связи @if_devlpr_bot. Предлагайте любые темы, статьи, книги, мемасики, новые идеи, строгую критику и вообще всё что приходит на ум. Буду рад любому фидбеку и если расскажите и пошарите канал со своим коллегам/друзьям/знакомым. Заранее спасибо!
Please open Telegram to view this post
VIEW IN TELEGRAM
vas3k.blog
Человечество vs Искусственный интеллект
Успеем ли мы приручить ИИ до глобальной катастрофы?
👍3🙈1
Если ищите информацию про WebAssembly, то статья ниже точно для вас. Да, лонгрид, но и целый выходной впереди :)
➡️ https://thenewstack.io/will-javascript-become-the-most-popular-webassembly-language/
Статья крайне удачная и раскрывает тему не сколько про технические примеры «как» (про это подкину статейку https://www.yieldcode.blog/post/native-rust-wasm), а нужен ли вообще этот ваш WebAssembly (спойлер: нужен), почему JavaScript - это центр его вселенной, какие рабочие инструменты на сегодня уже есть и виденье будущего WASM в целом. В статье найдете большое количество ссылок на разного рода проекты, инициативы и рабочие библиотеки связанные с WebAssembly. Приятного прочтения📖
P.S. https://youtu.be/RcHER-3gFXI - отличное вводное видео в WebAssembly от Google. Кратко пробегаются по основным топикам: что такое wasm, где применяется, его портируемость и скорость.
#javascript #webassembly
➡️ https://thenewstack.io/will-javascript-become-the-most-popular-webassembly-language/
Статья крайне удачная и раскрывает тему не сколько про технические примеры «как» (про это подкину статейку https://www.yieldcode.blog/post/native-rust-wasm), а нужен ли вообще этот ваш WebAssembly (спойлер: нужен), почему JavaScript - это центр его вселенной, какие рабочие инструменты на сегодня уже есть и виденье будущего WASM в целом. В статье найдете большое количество ссылок на разного рода проекты, инициативы и рабочие библиотеки связанные с WebAssembly. Приятного прочтения
P.S. https://youtu.be/RcHER-3gFXI - отличное вводное видео в WebAssembly от Google. Кратко пробегаются по основным топикам: что такое wasm, где применяется, его портируемость и скорость.
#javascript #webassembly
Please open Telegram to view this post
VIEW IN TELEGRAM
The New Stack
Will JavaScript Become the Most Popular WebAssembly Language?
Rising interest in using JavaScript to write WebAssembly is driving maturity in tools, while the component model points to polyglot programs.
👍3
С 16й версии node.js добавили новый модуль node:test (stable с 20й версии). Название говорящее - модуль предназначен для написания тестов со стандартным набором функций, который можно найти в любом известном аналогичном модуле как mocha, chai, jest и т.д. Поэтому необходимость таких модулей фактически сводиться на нет.
Статья ниже про создание своего кастомного тест-репортера для node:test:
➡️ https://www.nearform.com/blog/writing-a-node-js-test-reporter/
#nodejs
Статья ниже про создание своего кастомного тест-репортера для node:test:
➡️ https://www.nearform.com/blog/writing-a-node-js-test-reporter/
#nodejs
👍2🔥1
IF Developer
Если ищите информацию про WebAssembly, то статья ниже точно для вас. Да, лонгрид, но и целый выходной впереди :) ➡️ https://thenewstack.io/will-javascript-become-the-most-popular-webassembly-language/ Статья крайне удачная и раскрывает тему не сколько про…
Небольшое приложение к теме WebAssembly. Ниже ссылки на статьи о создании wasm-модулей:
➡️ https://medium.com/geekculture/webassembly-for-node-js-13ef6bec0a0
Пример создания простого модуля для подсчета числа Фибоначчи через рекурсию. Пример скорее демонстративный, чем практичный, но для общего представления о структуре и реализации wasm-модулей очень хороший.
➡️ https://www.yieldcode.blog/post/supercharge-nodejs-with-rust
Тоже создание модуля для подсчета Фибоначчи, но уже с помощью фреймворка Neon. Статья скорее про фреймворк Neon, нежели про WebAssembly как таковой, но от этого не ставиться менее полезной.
➡️ https://www.alxolr.com/articles/how-to-process-a-csv-file-five-times-faster-in-node-js-with-rust-and-napi-rs
Более практичный пример, который можно брать за основу, т.к используется фреймворк napi.rs для создания wasm-модулей. Тут задача чтения и процессинга CSV. В данном примере, как и в предыдущем, разница в скорости исполнения wasm в несколько раз, что может быть крайне критично для подобного рода задач.
P.S. В обоих примерах используется Rust. Как по мне, то это наиболее удачный язык на замену C/C++ (ну или, как минимум, достойная альтернатива). Хорошо сбалансирована сложность языка с его возможностями. Язык подходит для всего, поэтому его знание лишним не будет точно, тем более сейчас Rust внедряется крупными корпорациями повсеместно.
Поэтому если раздумываете про изучение нового языка, то я бы крайне советовал именно его. Для изучения поможет youtube-канал Let’s get Rusty. Автор отлично и живо пересказывает официальную книгу-документацию с примерами кода, а так же дает много полезной и свежей информации по Rust.
Не интеграция🙂
➡️ https://medium.com/geekculture/webassembly-for-node-js-13ef6bec0a0
Пример создания простого модуля для подсчета числа Фибоначчи через рекурсию. Пример скорее демонстративный, чем практичный, но для общего представления о структуре и реализации wasm-модулей очень хороший.
➡️ https://www.yieldcode.blog/post/supercharge-nodejs-with-rust
Тоже создание модуля для подсчета Фибоначчи, но уже с помощью фреймворка Neon. Статья скорее про фреймворк Neon, нежели про WebAssembly как таковой, но от этого не ставиться менее полезной.
➡️ https://www.alxolr.com/articles/how-to-process-a-csv-file-five-times-faster-in-node-js-with-rust-and-napi-rs
Более практичный пример, который можно брать за основу, т.к используется фреймворк napi.rs для создания wasm-модулей. Тут задача чтения и процессинга CSV. В данном примере, как и в предыдущем, разница в скорости исполнения wasm в несколько раз, что может быть крайне критично для подобного рода задач.
P.S. В обоих примерах используется Rust. Как по мне, то это наиболее удачный язык на замену C/C++ (ну или, как минимум, достойная альтернатива). Хорошо сбалансирована сложность языка с его возможностями. Язык подходит для всего, поэтому его знание лишним не будет точно, тем более сейчас Rust внедряется крупными корпорациями повсеместно.
Поэтому если раздумываете про изучение нового языка, то я бы крайне советовал именно его. Для изучения поможет youtube-канал Let’s get Rusty. Автор отлично и живо пересказывает официальную книгу-документацию с примерами кода, а так же дает много полезной и свежей информации по Rust.
Не интеграция
Please open Telegram to view this post
VIEW IN TELEGRAM
Medium
WebAssembly for Node.js
Everybody talks about WebAssembly and how it will change the web. But what about Node.js? Can WebAssembly be useful for backend? Let’s…
👍3
Поможет (наверно 😅 ), если менеджер поставил задачу с дедлайном на вчера:
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from ДЕВОПСИНА | DevOps | Linux
This media is not supported in your browser
VIEW IN TELEGRAM
Хмм... Проверил, работает! Сразу похуй на работу стало...
Когда у тебя стресс, ты начинаешь нервничать, поднимается уровень адреналина и кортизола в крови. Человек начинает дышать часто и маленькими вдохами. Самому это вроде не заметно, но это на самом деле так. Начинается гипервентиляция легких, снижается уровень углекислого газа в крови, а это нехорошо, потом начинается обратный процесс, в таком состоянии начинается головокружение и у некоторых — паническая атака. Нужно снизить уровень кислорода. Ты начинаешь дышать глубоко с максимальным вдохом и максимальным выдохом. Постепенно уровень кислорода и CO2 выравниваются. Profit.
С понедельником коллеги и хорошего дня!
@devopsina
Когда у тебя стресс, ты начинаешь нервничать, поднимается уровень адреналина и кортизола в крови. Человек начинает дышать часто и маленькими вдохами. Самому это вроде не заметно, но это на самом деле так. Начинается гипервентиляция легких, снижается уровень углекислого газа в крови, а это нехорошо, потом начинается обратный процесс, в таком состоянии начинается головокружение и у некоторых — паническая атака. Нужно снизить уровень кислорода. Ты начинаешь дышать глубоко с максимальным вдохом и максимальным выдохом. Постепенно уровень кислорода и CO2 выравниваются. Profit.
С понедельником коллеги и хорошего дня!
@devopsina
😁3🍾1
Если задумываетесь о переезд с чистого JS на типизированный язык, то вот небольшая статья про плюсы/минусы TypeScript и Flow, т.к это основные игроки на сегодня:
➡️ https://www.scalablepath.com/javascript/flow-vs-typescript
От себя:
Если по какой-то причине рассматриваете миграцию на Flow, то ниже немного жизни и боли. У Flow есть приятная особенность - его можно подключать к отдельным файлам через специальный комментарий и проводить постепенную миграцию. Это подкупило и было принято решение переводить JS-проект на него.
Вот проблемы с которыми столкнулись:
1. Отвратительно медленно работает даже на хорошем железе. Не лечится.
2. С болью заводится на Windows. У некоторых коллег Flow не запускается и сегодня. Причины так и не удалось выяснить.
3. Не всякий код заработает из коробки без видимых причин.
При старте переезда, Flow упорно не хотел запускаться и падал без явной причины. Пришлось лезть в его внутренние логи и выискивать в интернетах по “сырым” стектрейсам ошибок. Информации было крайне мало. Проблема в итоге обнаружилась - был один файл, который блокировал запуск Flow-сервиса. Но почему он блокировал запуск для меня загадка по сей день, т.к файл был валиден с точки зрения JS и Flow. Решилось исключением этого файлы из списка файлов для проверки Flow.
4. Слабая поддержка типов для сторонних библиотек и модулей. Есть механизм для создания заглушек с any, но это сводит типизацию на нет.
5. Слабость самой типизиции у Flow в отличии от TS. Это не проблема, а скорее особенность.
6. Ну и https://reactnative.dev/blog/2023/01/03/typescript-first 🌚 Если кто не знал, то Flow, как и React Native, разрабатываются Facebook. Но с 0.71+ RN официально сделал TypeScript дефолтным шаблоном и выпилил поддержку Flow.
Вывод из вышеописанного: относительная простота встраивания в проект полностью нивелируется проблемами самого Flow. Возможно, если проект переводить на него полностью или писать на Flow с нуля, то станет получше, но это не точно. На сегодня я бы выбирал TS не глядя. Да, миграция усложняется одномоментностью переезда, но результат точно окупит все издержки - типизация слишком спасает средние и крупные приложения с большим количеством бизнес-логики и командой больше одного человека.
P.S. Несколько полезных ссылок по теме:
➡️ https://medium.com/airbnb-engineering/ts-migrate-a-tool-for-migrating-to-typescript-at-scale-cd23bfeb5cc
— Статья с примером миграции на TS у AirBnB
➡️ https://dev.to/danielhauser/convert-a-react-app-from-flow-to-typescript-without-losing-git-history-32i1
— Готовый рецепт как не потерять git-историю при изменении расширения на ts/tsx
➡️ https://www.scalablepath.com/javascript/flow-vs-typescript
От себя:
Если по какой-то причине рассматриваете миграцию на Flow, то ниже немного жизни и боли. У Flow есть приятная особенность - его можно подключать к отдельным файлам через специальный комментарий и проводить постепенную миграцию. Это подкупило и было принято решение переводить JS-проект на него.
Вот проблемы с которыми столкнулись:
1. Отвратительно медленно работает даже на хорошем железе. Не лечится.
2. С болью заводится на Windows. У некоторых коллег Flow не запускается и сегодня. Причины так и не удалось выяснить.
3. Не всякий код заработает из коробки без видимых причин.
При старте переезда, Flow упорно не хотел запускаться и падал без явной причины. Пришлось лезть в его внутренние логи и выискивать в интернетах по “сырым” стектрейсам ошибок. Информации было крайне мало. Проблема в итоге обнаружилась - был один файл, который блокировал запуск Flow-сервиса. Но почему он блокировал запуск для меня загадка по сей день, т.к файл был валиден с точки зрения JS и Flow. Решилось исключением этого файлы из списка файлов для проверки Flow.
4. Слабая поддержка типов для сторонних библиотек и модулей. Есть механизм для создания заглушек с any, но это сводит типизацию на нет.
5. Слабость самой типизиции у Flow в отличии от TS. Это не проблема, а скорее особенность.
6. Ну и https://reactnative.dev/blog/2023/01/03/typescript-first 🌚 Если кто не знал, то Flow, как и React Native, разрабатываются Facebook. Но с 0.71+ RN официально сделал TypeScript дефолтным шаблоном и выпилил поддержку Flow.
Вывод из вышеописанного: относительная простота встраивания в проект полностью нивелируется проблемами самого Flow. Возможно, если проект переводить на него полностью или писать на Flow с нуля, то станет получше, но это не точно. На сегодня я бы выбирал TS не глядя. Да, миграция усложняется одномоментностью переезда, но результат точно окупит все издержки - типизация слишком спасает средние и крупные приложения с большим количеством бизнес-логики и командой больше одного человека.
P.S. Несколько полезных ссылок по теме:
➡️ https://medium.com/airbnb-engineering/ts-migrate-a-tool-for-migrating-to-typescript-at-scale-cd23bfeb5cc
— Статья с примером миграции на TS у AirBnB
➡️ https://dev.to/danielhauser/convert-a-react-app-from-flow-to-typescript-without-losing-git-history-32i1
— Готовый рецепт как не потерять git-историю при изменении расширения на ts/tsx
Scalable Path
Flow vs TypeScript: Which is Better in 2024? | Scalable Path®
Flow or TypeScript? Learn the pros and cons of both to help you decide which tool is best suited for your next JavaScript project.
👍4
IF Developer
Пролог: когда читал статью ниже, то по ходу дела возникали мысли, которыми хотел в итоге поделиться. И этих мыслей набралось столько, что пришлось разделить пост на две части 😄 Ниже представлена первая часть. Вторая выйдет на днях. И так-с… Привез вам немножко…
Пролог:
Затянулось со 2й частью, но лучше поздно, чем никогда. Текста много, но и выходные впереди. И так, поехали:
Немного конкретики под абстрактные «общие принципы и подходы». Это все те знания и принципы, которые наработаны лучшими умами за десятки лет разработки ПО и множество раз подтверждены на практике. Это тема огромная и охватить ее за небольшой пост нереально, но путь к началу погружения можно попробовать дать. Ниже привел основные направления для развития в порядке сложности усвоения и обширности материала. Так же добавил наиболее полезные ссылки на соответствующую литературу для начала погружения.
1 - SOLID DRY KISS for YAGNI
Если кто-то увидел в этом предложении бессмысленность, не знает кто такая девушка Yagni и зачем ее вообще целовать, то не переживайте. Каждое слово - аббревиатура принципа разработки. Изучайте их по отдельности и это будет огромный буст вас, как профессионала. Основной обобщенный посыл фразы - структуризация, однозначность и четкость написанного кода.
Краткий список литературы, где можно подробнее изучить данные принципы:
SOLID - тут в первую очередь нужно идти к книгам Роберта Мартина, т.к он ввел данный термин в обиход, а конкретнее:
Agile Principles, Patterns, and Practices in C# - отличная книга. Не смотрите, что она для С# - приведенные примеры и пояснения универсальны для любого языка. Про SOLID в книге отдельная секция, где разжевывается каждая буква. Книга достойна быть прочитана от начала до конца - концепции и идеи, описанные в ней, фундаментальны и не зависят от языка и платформ.
DRY - аналогичная ситуация, в первую очередь идем к книге, которая ввела термин:
The Pragmatic Programmer: From Journeyman to Master - не устаревающая классика. Книга практическая, книга философская. Взгляд на программирование, как на искусство, где из тебя делают прекрасного и тонкого художника. То что нужно для профессионала дела.
KISS / YAGNI - тут лучше всего обращаться к книгам по чистоте кода.
Refactoring: Improving the Design of Existing Code
Clean Code: A Handbook of Agile Software Craftsmanship - обе книги являются справочниками рецептов для изменения вашего кода в лучшую сторону. Не со всеми “рецептами” нужно соглашаться, но посылы у книг правильные и нужные, поэтому они по праву считаются классикой. Если где-то увидите книги-“аналоги”, то скорее всего будет написано тоже самое только другими словами, поэтому лучше начинать именно с этих двух.
И пару книжечек, которые нельзя отнести к конкретному принципу, но концептуально про них же:
Code Complete: A Practical Handbook of Software Construction - для начинающих (да и не только) программистов маст хэв. Приучает с первых шагов к хорошему и правильному. Не всё в этой книге может нравиться, не совсем хочется соглашаться, но так и должно быть. Она учит самостоятельности и выработке собственного стиля и чувства прекрасного.
A Philosophy of Software Design - книга не для начинающих, но для ищущих новых взглядов на разработку и построение систем. Книга - микс различных тем, поэтому можно читать только секции, которые заинтересуют. Взгляд автора на некоторые вопросы не сходится с Фоулером, например, но это отлично - чем больше различных мнений, тем большим ваш кругозор. Наша цель сделать из вас профессионала, а он никогда не зациклен на одном мнении.
Затянулось со 2й частью, но лучше поздно, чем никогда. Текста много, но и выходные впереди. И так, поехали:
Немного конкретики под абстрактные «общие принципы и подходы». Это все те знания и принципы, которые наработаны лучшими умами за десятки лет разработки ПО и множество раз подтверждены на практике. Это тема огромная и охватить ее за небольшой пост нереально, но путь к началу погружения можно попробовать дать. Ниже привел основные направления для развития в порядке сложности усвоения и обширности материала. Так же добавил наиболее полезные ссылки на соответствующую литературу для начала погружения.
1 - SOLID DRY KISS for YAGNI
Если кто-то увидел в этом предложении бессмысленность, не знает кто такая девушка Yagni и зачем ее вообще целовать, то не переживайте. Каждое слово - аббревиатура принципа разработки. Изучайте их по отдельности и это будет огромный буст вас, как профессионала. Основной обобщенный посыл фразы - структуризация, однозначность и четкость написанного кода.
Краткий список литературы, где можно подробнее изучить данные принципы:
SOLID - тут в первую очередь нужно идти к книгам Роберта Мартина, т.к он ввел данный термин в обиход, а конкретнее:
Agile Principles, Patterns, and Practices in C# - отличная книга. Не смотрите, что она для С# - приведенные примеры и пояснения универсальны для любого языка. Про SOLID в книге отдельная секция, где разжевывается каждая буква. Книга достойна быть прочитана от начала до конца - концепции и идеи, описанные в ней, фундаментальны и не зависят от языка и платформ.
DRY - аналогичная ситуация, в первую очередь идем к книге, которая ввела термин:
The Pragmatic Programmer: From Journeyman to Master - не устаревающая классика. Книга практическая, книга философская. Взгляд на программирование, как на искусство, где из тебя делают прекрасного и тонкого художника. То что нужно для профессионала дела.
KISS / YAGNI - тут лучше всего обращаться к книгам по чистоте кода.
Refactoring: Improving the Design of Existing Code
Clean Code: A Handbook of Agile Software Craftsmanship - обе книги являются справочниками рецептов для изменения вашего кода в лучшую сторону. Не со всеми “рецептами” нужно соглашаться, но посылы у книг правильные и нужные, поэтому они по праву считаются классикой. Если где-то увидите книги-“аналоги”, то скорее всего будет написано тоже самое только другими словами, поэтому лучше начинать именно с этих двух.
И пару книжечек, которые нельзя отнести к конкретному принципу, но концептуально про них же:
Code Complete: A Practical Handbook of Software Construction - для начинающих (да и не только) программистов маст хэв. Приучает с первых шагов к хорошему и правильному. Не всё в этой книге может нравиться, не совсем хочется соглашаться, но так и должно быть. Она учит самостоятельности и выработке собственного стиля и чувства прекрасного.
A Philosophy of Software Design - книга не для начинающих, но для ищущих новых взглядов на разработку и построение систем. Книга - микс различных тем, поэтому можно читать только секции, которые заинтересуют. Взгляд автора на некоторые вопросы не сходится с Фоулером, например, но это отлично - чем больше различных мнений, тем большим ваш кругозор. Наша цель сделать из вас профессионала, а он никогда не зациклен на одном мнении.
IF Developer
Пролог: когда читал статью ниже, то по ходу дела возникали мысли, которыми хотел в итоге поделиться. И этих мыслей набралось столько, что пришлось разделить пост на две части 😄 Ниже представлена первая часть. Вторая выйдет на днях. И так-с… Привез вам немножко…
2 - Data Structures and Algorithms / «Структуры данных и алгоритмы»
Знание структур данных и алгоритмов помогает писать эффективный, лаконичный и понятный другим программистам код. С изучением структур и алгоритмов заметите, как будет приходить осознание и понимание работы технологий и инструментов, которые используете каждый день. Информация начнет раскладываться по полочкам сознания. К слову, при устройстве на работу в компании уровня FAANG - это маст хэв, а ребята бесполезные знания требовать не будут.
По структурам и частично алгоритмам есть бесплатный и крайне удачный курс на платформе Stepik (https://stepik.org/course/579/). Но в целом, конкретно тут тот самый случай, когда лучший способ изучения - это практика. Для этого прекрасно подходит LeetCode (https://leetcode.com/) или его аналоги. Обычно, на данных сервисах есть список разнообразных задач из практики на алгоритмистику и структуры данных с возможностью оценки вашего решения и с пояснением наилучшего для решаемой задачи.
Из книг подсказать что-то сложно, т.к их бесчисленно много, но для меня самыми полезными были:
Algorithms Illuminated - цикл книг и видео по алгоритмам (книги внизу сайта). Достаточно хорошо пояснена математическая база основных алгоритмов. Книги построены как справочник, поэтому можете выбирать нужный алгоритм и изучать конкретно его (только в первой части еще есть вводный экскурс в общую математику алгоритмистики). Часть алгоритмов охвачены в рамках курса на Stepik, который выше.
Introduction to Algorithms - сразу проговорю, что книга сложная и не для чтения перед сном, а скорее для сна 😀 Но настолько детальной книги по алгоритмам, их созданию и математической оценке, наверно, нет. Если алгоритмы нужны как часть общих знаний, то данная книга будет избыточной, пожалуй.
3 - Design Patterns / «Паттерны (шаблоны) проектирования»
Многие слышали, но далеко не все используют. А зря, ведь это готовые решения типовых задач, которые пришли проверку временем и бесконечным числом программистов. Паттерны абстрактны, поэтому применимы вне зависимости от языка программирования и его парадигмы. Да, паттернов много, все и не упомнить, но это и не нужно. Воспринимайте паттерны как справочник с ответами на общие вопросы, но который нужно хотя раз пробежать глазами, чтобы вообще быть в курсе какие вопросы есть и какие готовые ответы предлагают. На практике из ходовых вам нужно знать штук 7-10.
Design Patterns: Elements of Reusable Object-Oriented Software - вечная классика, неповторимый оригинал. Все основные паттерны сформулированы и задокументированы в этой книге. Возможно слишком строгая и формальная, поэтому ниже несколько более осовремененные варианты:
Agile Principles, Patterns, and Practices in C# - книгу уже рекомендовал выше, но тут есть отдельная секция с основными и наиболее “рабочими” паттернами.
Refactoring.Guru - очень удобный сайт, если нужно быстро вспомнить нужный паттерн. С картинками, примерами и отсылками на другие паттерны. То что нужно для повседневного использования.
Patterns.dev - справочник паттернов написанных на JavaScript и частично на React.
Знание структур данных и алгоритмов помогает писать эффективный, лаконичный и понятный другим программистам код. С изучением структур и алгоритмов заметите, как будет приходить осознание и понимание работы технологий и инструментов, которые используете каждый день. Информация начнет раскладываться по полочкам сознания. К слову, при устройстве на работу в компании уровня FAANG - это маст хэв, а ребята бесполезные знания требовать не будут.
По структурам и частично алгоритмам есть бесплатный и крайне удачный курс на платформе Stepik (https://stepik.org/course/579/). Но в целом, конкретно тут тот самый случай, когда лучший способ изучения - это практика. Для этого прекрасно подходит LeetCode (https://leetcode.com/) или его аналоги. Обычно, на данных сервисах есть список разнообразных задач из практики на алгоритмистику и структуры данных с возможностью оценки вашего решения и с пояснением наилучшего для решаемой задачи.
Из книг подсказать что-то сложно, т.к их бесчисленно много, но для меня самыми полезными были:
Algorithms Illuminated - цикл книг и видео по алгоритмам (книги внизу сайта). Достаточно хорошо пояснена математическая база основных алгоритмов. Книги построены как справочник, поэтому можете выбирать нужный алгоритм и изучать конкретно его (только в первой части еще есть вводный экскурс в общую математику алгоритмистики). Часть алгоритмов охвачены в рамках курса на Stepik, который выше.
Introduction to Algorithms - сразу проговорю, что книга сложная и не для чтения перед сном, а скорее для сна 😀 Но настолько детальной книги по алгоритмам, их созданию и математической оценке, наверно, нет. Если алгоритмы нужны как часть общих знаний, то данная книга будет избыточной, пожалуй.
3 - Design Patterns / «Паттерны (шаблоны) проектирования»
Многие слышали, но далеко не все используют. А зря, ведь это готовые решения типовых задач, которые пришли проверку временем и бесконечным числом программистов. Паттерны абстрактны, поэтому применимы вне зависимости от языка программирования и его парадигмы. Да, паттернов много, все и не упомнить, но это и не нужно. Воспринимайте паттерны как справочник с ответами на общие вопросы, но который нужно хотя раз пробежать глазами, чтобы вообще быть в курсе какие вопросы есть и какие готовые ответы предлагают. На практике из ходовых вам нужно знать штук 7-10.
Design Patterns: Elements of Reusable Object-Oriented Software - вечная классика, неповторимый оригинал. Все основные паттерны сформулированы и задокументированы в этой книге. Возможно слишком строгая и формальная, поэтому ниже несколько более осовремененные варианты:
Agile Principles, Patterns, and Practices in C# - книгу уже рекомендовал выше, но тут есть отдельная секция с основными и наиболее “рабочими” паттернами.
Refactoring.Guru - очень удобный сайт, если нужно быстро вспомнить нужный паттерн. С картинками, примерами и отсылками на другие паттерны. То что нужно для повседневного использования.
Patterns.dev - справочник паттернов написанных на JavaScript и частично на React.
👍3
IF Developer
Пролог: когда читал статью ниже, то по ходу дела возникали мысли, которыми хотел в итоге поделиться. И этих мыслей набралось столько, что пришлось разделить пост на две части 😄 Ниже представлена первая часть. Вторая выйдет на днях. И так-с… Привез вам немножко…
4 - Software Architecture and Design или «Архитектурные шаблоны/паттерны»
Любой написанный код - это малая часть чего-то более крупного. И видеть это крупное как раз помогут знание и понимание различных архитектурных стилей и дизайнов. Вот microservices, DDD, EDD и т.п. как раз терминология данного слоя. Изучать можно бесконечно, т.к. слой фактически включает в себя знания предыдущих, а так же знания, чтобы видеть как вообще собирать из разрозненных частей ваше конечное приложение. Книг множество, информации в интернете еще больше. Из того, что было полезно мне:
Fundamentals of Software Architecture: An Engineering Approach
Software Architecture: The Hard Parts
Building Evolutionary Architectures: Automated Software Governance - книги открыл для себя случайно, но содержимое в них оказались бесценным. Книги рассказывают что же такое архитектура систем и роль архитектора в жизни проекта. Написаны очень живо и интересно, тут большое количество полезных примечаний из повседневной рабочей жизни разработчиков и архитекторов, книги подскажут как превратить ваш проект в хорошо-поддерживаемый и рабочий продукт. Так же, есть справочник готовых архитектурных решений с детализацией как и где применять. В общем, отличное чтиво.
Clean Architecture: A Craftsman's Guide to Software Structure and Design - хорошая, живая книга. Может не такая фундаментальная, как хотелось бы, но вынести полезное можно. Люблю авторский стиль Мартина, поэтому не мог не добавить 🙂
Patterns of Enterprise Application Architecture - книга-справочник по готовым архитектурным решениям от Фоулера. Решения узкоприменимые, но от этого не становяться плохими. Частично перекликаются с блогом Фоулера (https://martinfowler.com/), за которым тоже стоит следить и читать.
Implementing Domain-Driven Design - полное погружение в DDD. На сегодня одна из главных концепций в построении систем, и данная книга в этом поможет. DDD будет всплывать в рамках изучения многих архитектурных решений. Книга приземленная и практичная, хорошо раскрывает что такое DDD. Автор расскажет почему ваше виденье построения архитектуры должно вестись глазами бизнеса и как превращать вашу архитектуру в то, которое решает задачи бизнеса.
В контексте DDD стоит упомянуть книгу Domain-Driven Design: Tackling Complexity in the Heart of Software, т.к это первоисточник самого термина, но слог автора может быть суховат и строг.
Заключение:
Постарался охватить все сферы фундаментальных знаний программиста. Книги общеизвестные и общепризнанные, возможно, новых тайтлов или откровений для себя вы не нашли. Поэтому, буду очень благодарен, если поделитесь ссылками на любые материалы, которые произвели на вас сильное впечатление и принесли реальную пользу. Надеюсь информация оказалась полезной и буду очень благодарен, если расшарите данный текст коллегам и знакомым программистам🙏
Любой написанный код - это малая часть чего-то более крупного. И видеть это крупное как раз помогут знание и понимание различных архитектурных стилей и дизайнов. Вот microservices, DDD, EDD и т.п. как раз терминология данного слоя. Изучать можно бесконечно, т.к. слой фактически включает в себя знания предыдущих, а так же знания, чтобы видеть как вообще собирать из разрозненных частей ваше конечное приложение. Книг множество, информации в интернете еще больше. Из того, что было полезно мне:
Fundamentals of Software Architecture: An Engineering Approach
Software Architecture: The Hard Parts
Building Evolutionary Architectures: Automated Software Governance - книги открыл для себя случайно, но содержимое в них оказались бесценным. Книги рассказывают что же такое архитектура систем и роль архитектора в жизни проекта. Написаны очень живо и интересно, тут большое количество полезных примечаний из повседневной рабочей жизни разработчиков и архитекторов, книги подскажут как превратить ваш проект в хорошо-поддерживаемый и рабочий продукт. Так же, есть справочник готовых архитектурных решений с детализацией как и где применять. В общем, отличное чтиво.
Clean Architecture: A Craftsman's Guide to Software Structure and Design - хорошая, живая книга. Может не такая фундаментальная, как хотелось бы, но вынести полезное можно. Люблю авторский стиль Мартина, поэтому не мог не добавить 🙂
Patterns of Enterprise Application Architecture - книга-справочник по готовым архитектурным решениям от Фоулера. Решения узкоприменимые, но от этого не становяться плохими. Частично перекликаются с блогом Фоулера (https://martinfowler.com/), за которым тоже стоит следить и читать.
Implementing Domain-Driven Design - полное погружение в DDD. На сегодня одна из главных концепций в построении систем, и данная книга в этом поможет. DDD будет всплывать в рамках изучения многих архитектурных решений. Книга приземленная и практичная, хорошо раскрывает что такое DDD. Автор расскажет почему ваше виденье построения архитектуры должно вестись глазами бизнеса и как превращать вашу архитектуру в то, которое решает задачи бизнеса.
В контексте DDD стоит упомянуть книгу Domain-Driven Design: Tackling Complexity in the Heart of Software, т.к это первоисточник самого термина, но слог автора может быть суховат и строг.
Заключение:
Постарался охватить все сферы фундаментальных знаний программиста. Книги общеизвестные и общепризнанные, возможно, новых тайтлов или откровений для себя вы не нашли. Поэтому, буду очень благодарен, если поделитесь ссылками на любые материалы, которые произвели на вас сильное впечатление и принесли реальную пользу. Надеюсь информация оказалась полезной и буду очень благодарен, если расшарите данный текст коллегам и знакомым программистам
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2