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

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

P.S. Обратная связь со мной: @if_devlpr_feedback_bot
Download Telegram
Если захочется поиграться и запустить собственного ChatGPT-бота в Telegram, то можете начать экспериментировать на базе проекта:

➡️ https://github.com/karfly/chatgpt_telegram_bot

Там же автор указал ссылку на уже рабочий ChatGPT-бот https://t.me/chatgpt_karfly_bot для проверки возможностей (ограничение 2500 токенов бесплатно + с оплатой за доп.токены). На вопросы отвечает, контекст запоминает. Красота 😍

#chatgpt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
От сидячей работы спина часто начинает побаливать и доставлять дискомфорт. Ниже простой рецепт для снятия напряжения (да и руки крепче будут 😀):

➡️ https://youtube.com/shorts/PNFvCw3uygY
🔥4
Хорошая и подробная статья по логированию вашего node.js приложения с помощью Pino:

➡️ https://betterstack.com/community/guides/logging/how-to-install-setup-and-use-pino-to-log-node-js-applications/

От себя:
На сегодня Pino один самых (если не самый) богатых модулей для логирования по возможностям и поддержке. Есть множество транспортов (или источник куда писать залогированные данные) практически куда угодно. Список транспортов тут — https://github.com/pinojs/pino/blob/master/docs/transports.md. При желании/необходимости можно написать свой кастомный без особых проблем. Из альтернатив Pino можно выделить winston, bunyan и более молодой, но неплохой cabinjs

Если говорить в целом, то логирование критически необходимо, хотя многие считают это нудным занятием и в итоге на него забивают. Как минимум, нужно отлавливать все ошибки глобально и регистрировать их куда-нибудь централизованно. Из внешних сервисов мне нравится Bugsnag — он условно-бесплатный, но такой версии хватит большинству Proof-of-Сoncept и мелко-средних приложений. Аналоги — Sentry, Datadog, LogRocket и множество других (например, такие: https://www.atatus.com/blog/bugsnag-alternatives/). Если не хотите стороннее решение, то можно настроить Grafana Loki (открывается под VPN). Как пример такой настройки для Pino — https://skaug.dev/node-js-app-with-loki/.

Так что логируйте, не забивайте 😄

#nodejs #logging
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🕊1
Довольно старая, но всё еще актуальная статья про ошибку десятилетий - null:

➡️ https://www.lucidchart.com/techblog/2015/08/31/the-worst-mistake-of-computer-science/

Решение проблемы с null/undefined тоже приложено к статье. Если лень читать, то решение заключается в использовании специальной Maybe-монады или ее аналогов для не ФП-ориентированных языков (больше информации, что такое монада с примером Maybe на вики). Maybe выступает в роли обертки над значением, которое может быть null/undefined. Фактически мы объявляем новый тип, который может иметь реальное значение, либо его не будет. В относительно современных языках отдельного значения null может и отсутствовать как такового, например, как в Rust, Zig, Swift и т.д, и там как раз используется данный прием с Maybe (может называться по другому, например Option в Rust, но суть та же).

Касательно JS/TS, то, как по мне, то подход с Maybe сложно-применим, особенно с его введением в уже существующий проект. Да, помогает избавится от некоторых проблем, но это за счет существенного увеличения порога вхождения в проекта, т.к нужно изучать функциональных подход к решению задач. Для TS задачу проверки на null и undefined можно переложить на сам язык через конфигурацию:

tsconfig.json:
strictNullChecks: true (а лучше strict: true в целом)
noUncheckedIndexedAccess: true

Но если же ваш проект изначально использует (или вы планируете использовать) библиотеки с ФП-парадигмой такие как rxjs (из коробки фронтовый Angular и бекендовский Nestjs хорошо дружат с rxjs), ramda, lodash/fp или прям fp-ts, то подход выше может отлично вписаться

#general #fp
🔥2🤪2
Ниже очень подробная статья по популярным npm-модулям для создания интерактивных консольных утилит и их раскраски:

➡️ https://blog.kilpatrick.cloud/posts/node-cli-app-packages/

Еще подкину в список https://lars-waechter.gitbook.io/voici.js/ для форматирования консольных таблиц

#cli #nodejs
Достаточно подробный гайд от 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