IF Developer
52 subscribers
2 photos
6 videos
91 links
Тут я делюсь своими мыслями, решениями насущных проблем, полезными ссылками, заметками и юморком.

Сам прожжен девелоперским 10+ лет опытом в frontend/backend и частично в mobile/desktop направлениях

P.S. Обратная связь со мной: @if_devlpr_feedback_bot
Download Telegram
Достаточно подробный гайд от DataDog про то, как оптимизировать ресурсы окружения в Kubernetes, а соотвественно и финансовые расходы:

➡️ https://www.datadoghq.com/blog/rightsize-kubernetes-workloads/

Очень много слов на девопсовском, но если столкнетесь со схожей проблемой, то статья может сильно помочь

#kubernetes
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
За что мы любим дизайнеров:
🤣8😁1
Вышла новая мажорная версия node.js 20. В статье описаны основные значительные изменения и новые фичи:
Отличный набор статей по React Router:

➡️ https://www.robinwieruch.de/categories/react-router-6/

Закрывает насущные вопросы по использованию библиотеки:
- Вложенный роутинг
- Аутентификация и приватные роуты
- Правильный редирект
- Основные хуки
- Ленивая подгрузка через React.Suspense

#react
👍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
👍4
Пролог: когда читал статью ниже, то по ходу дела возникали мысли, которыми хотел в итоге поделиться. И этих мыслей набралось столько, что пришлось разделить пост на две части 😄 Ниже представлена первая часть. Вторая выйдет на днях. И так-с…

Привез вам немножко лонгрида (там внутри статьи есть ссылки на другие связанные статьи, поэтому чтиво множиться в ширь еще больше):

➡️ 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
👍2🔥21
Хорошая подборка библиотек для карт на React и JavaScript в целом:

➡️ 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
👍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. Предлагайте любые темы, статьи, книги, мемасики, новые идеи, строгую критику и вообще всё что приходит на ум. Буду рад любому фидбеку и если расскажите и пошарите канал со своим коллегам/друзьям/знакомым. Заранее спасибо! 😘
Please open Telegram to view this post
VIEW IN TELEGRAM
👍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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍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
👍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.

Не интеграция 🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
👍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
😁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
👍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 - книга не для начинающих, но для ищущих новых взглядов на разработку и построение систем. Книга - микс различных тем, поэтому можно читать только секции, которые заинтересуют. Взгляд автора на некоторые вопросы не сходится с Фоулером, например, но это отлично - чем больше различных мнений, тем большим ваш кругозор. Наша цель сделать из вас профессионала, а он никогда не зациклен на одном мнении.
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.
👍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, т.к это первоисточник самого термина, но слог автора может быть суховат и строг.

Заключение:
Постарался охватить все сферы фундаментальных знаний программиста. Книги общеизвестные и общепризнанные, возможно, новых тайтлов или откровений для себя вы не нашли. Поэтому, буду очень благодарен, если поделитесь ссылками на любые материалы, которые произвели на вас сильное впечатление и принесли реальную пользу. Надеюсь информация оказалась полезной и буду очень благодарен, если расшарите данный текст коллегам и знакомым программистам 🙏
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
JS он такой 🧐:
Please open Telegram to view this post
VIEW IN TELEGRAM