Привет! 👋🏻
Я решил создать канал, где могу делиться своими мыслями, советами и хитростями по программированию. Сначала он был создан для личной пользы, но если вы каким-либо образом наткнулись на него – добро пожаловать!
❓Итак, кто я?
Меня зовут Тони. Я Node.js разработчик с опытом работы в C# и Python. Моя карьера началась с C#. Однако, набрав несколько лет опыта, я перешел на JavaScript и TypeScript хоть и продолжаю время от времени писать на C# и Python.
❓Почему Node.js?
• JS повсюду: Легко разрабатывать приложения любого вида и использовать JavaScript как на фронтенде, так и на бэкенде. Этот подход способствует повторному использованию кода и последовательному опыту разработки. Если честно, я особо не увлекаюсь разработкой фронтенда; большинство моих проектов связаны с серверной частью.
• Быстрое прототипирование: Node.js часто предпочтительный выбор для быстрого прототипирования и создания MVP благодаря быстрой настройке и гибкости.
• Масштабируемость: Node.js способен обрабатывать большое количество одновременных подключений при относительно низком использовании ресурсов. Это делает его отличным выбором для создания масштабируемых приложений, таких как чаты в реальном времени или платформы для онлайн-гейминга.
❓А что насчет TypeScript?
Я всегда использую TypeScript, когда начинаю новый проект. Он помогает предотвращать ошибки, связанные с типами, и повышает качество кода.
❓Что будет на этом канале?
По большей части мои рассуждения, лайфхаки и интересные находки. Я каждый день просматриваю GitHub в поиске новых и интересных проектов.
❓Чем сейчас занимаюсь?
В данный момент разрабатываю личный проект, о котором напишу в отдельном посте. Вообще различных идей много, буду стараться постепенно их реализовывать.
Несмотря на то, что не очень люблю фронтенд как таковой, сейчас решил углубиться в React.js и Next.js. Возможно в дальнейшем доберусь до React Native т.к. некоторые из идей включают разработку мобильных приложений.
Если вы наткнетесь здесь на что-то интересное в будущем, не стесняйтесь поделиться этим с друзьями 😉
Я решил создать канал, где могу делиться своими мыслями, советами и хитростями по программированию. Сначала он был создан для личной пользы, но если вы каким-либо образом наткнулись на него – добро пожаловать!
❓Итак, кто я?
Меня зовут Тони. Я Node.js разработчик с опытом работы в C# и Python. Моя карьера началась с C#. Однако, набрав несколько лет опыта, я перешел на JavaScript и TypeScript хоть и продолжаю время от времени писать на C# и Python.
❓Почему Node.js?
• JS повсюду: Легко разрабатывать приложения любого вида и использовать JavaScript как на фронтенде, так и на бэкенде. Этот подход способствует повторному использованию кода и последовательному опыту разработки. Если честно, я особо не увлекаюсь разработкой фронтенда; большинство моих проектов связаны с серверной частью.
• Быстрое прототипирование: Node.js часто предпочтительный выбор для быстрого прототипирования и создания MVP благодаря быстрой настройке и гибкости.
• Масштабируемость: Node.js способен обрабатывать большое количество одновременных подключений при относительно низком использовании ресурсов. Это делает его отличным выбором для создания масштабируемых приложений, таких как чаты в реальном времени или платформы для онлайн-гейминга.
❓А что насчет TypeScript?
Я всегда использую TypeScript, когда начинаю новый проект. Он помогает предотвращать ошибки, связанные с типами, и повышает качество кода.
❓Что будет на этом канале?
По большей части мои рассуждения, лайфхаки и интересные находки. Я каждый день просматриваю GitHub в поиске новых и интересных проектов.
❓Чем сейчас занимаюсь?
В данный момент разрабатываю личный проект, о котором напишу в отдельном посте. Вообще различных идей много, буду стараться постепенно их реализовывать.
Несмотря на то, что не очень люблю фронтенд как таковой, сейчас решил углубиться в React.js и Next.js. Возможно в дальнейшем доберусь до React Native т.к. некоторые из идей включают разработку мобильных приложений.
Если вы наткнетесь здесь на что-то интересное в будущем, не стесняйтесь поделиться этим с друзьями 😉
🚀 Повышение производительности Node.js: Быстрые советы и хитрости 🚀
Привет, любители Node.js! 🌟
Каждый проект сталкивается с проблемами производительности и оптимизации. Давайте рассмотрим несколько быстрых советов и хитростей, чтобы улучшить производительность ваших проектов! ⚡️
1. Используйте Async/Await
Если вы все еще не пользуетесь async/await для обработки асинхронных операций, то у меня есть вопросы. Этот современный синтаксис упрощает читаемость кода и обеспечивает эффективную обработку неблокирующих операций.
2. Мониторинг и Профилирование
Не забывайте о средствах профилирования. Они помогут выявить узкие места в вашем проекте. Инструменты, такие как встроенный профайлер Node.js, heapdump или сторонние варианты, например v8-profiler, могут помочь выявить проблемный код.
3. Минимизируйте блокирующие операции
Избегайте синхронных операций, которые блокируют цикл событий и вызывают замедление. Используйте worker threads или переносите вычислительно интенсивные задачи в отдельные процессы.
4. Оптимизируйте запросы к БД
Настройте запросы к базе данных, создав индексы для часто используемых полей и избегая избыточного извлечения данных. Инструменты, такие как Mongoose, могут помочь эффективно управлять запросами к MongoDB.
5. Используйте кэширование
Внедрите механизмы кэширования, например Redis, чтобы хранить часто используемые данные в памяти. Это уменьшает необходимость многократного извлечения данных из базы данных и улучшает время ответа.
6. Используйте сжатие
Включите сжатие Gzip для уменьшения размера ответов, отправляемых клиентам. Это приведет к более быстрой передаче данных по сети.
7. Используйте балансировку нагрузки
Внедрите балансировку нагрузки для распределения входящего трафика между несколькими экземплярами Node.js, улучшая общую производительность и масштабируемость.
8. Используйте HTTP/2 и SSL/TLS
Переходите на HTTP/2 для мультиплексирования нескольких запросов через одно соединение. Реализуйте SSL/TLS для повышения безопасности и улучшения производительности благодаря оптимизации браузера.
p.s. В будущем подробно распишу каждый из пунктов
#nodejs #производительность #советы
Привет, любители Node.js! 🌟
Каждый проект сталкивается с проблемами производительности и оптимизации. Давайте рассмотрим несколько быстрых советов и хитростей, чтобы улучшить производительность ваших проектов! ⚡️
1. Используйте Async/Await
Если вы все еще не пользуетесь async/await для обработки асинхронных операций, то у меня есть вопросы. Этот современный синтаксис упрощает читаемость кода и обеспечивает эффективную обработку неблокирующих операций.
2. Мониторинг и Профилирование
Не забывайте о средствах профилирования. Они помогут выявить узкие места в вашем проекте. Инструменты, такие как встроенный профайлер Node.js, heapdump или сторонние варианты, например v8-profiler, могут помочь выявить проблемный код.
3. Минимизируйте блокирующие операции
Избегайте синхронных операций, которые блокируют цикл событий и вызывают замедление. Используйте worker threads или переносите вычислительно интенсивные задачи в отдельные процессы.
4. Оптимизируйте запросы к БД
Настройте запросы к базе данных, создав индексы для часто используемых полей и избегая избыточного извлечения данных. Инструменты, такие как Mongoose, могут помочь эффективно управлять запросами к MongoDB.
5. Используйте кэширование
Внедрите механизмы кэширования, например Redis, чтобы хранить часто используемые данные в памяти. Это уменьшает необходимость многократного извлечения данных из базы данных и улучшает время ответа.
6. Используйте сжатие
Включите сжатие Gzip для уменьшения размера ответов, отправляемых клиентам. Это приведет к более быстрой передаче данных по сети.
7. Используйте балансировку нагрузки
Внедрите балансировку нагрузки для распределения входящего трафика между несколькими экземплярами Node.js, улучшая общую производительность и масштабируемость.
8. Используйте HTTP/2 и SSL/TLS
Переходите на HTTP/2 для мультиплексирования нескольких запросов через одно соединение. Реализуйте SSL/TLS для повышения безопасности и улучшения производительности благодаря оптимизации браузера.
p.s. В будущем подробно распишу каждый из пунктов
#nodejs #производительность #советы
Привет!
Раз уж это мой блог, значит буду писать не только о разработке. Краткая сводка новостей или "куда пропал?"
1. Сейчас погрузился в работу, взял несколько интересных проектов и веду переговоры с потенциальными заказчиками
2. Есть крутые планы на жизнь, потому активно ищу работу не на фрилансе и отправляю резюме в зарубежные компании
3. Начал изучать немецкий 🙈 даже что-то получается и немного понимаю простые вещи. Параллельно задумался о том, что было бы хорошо и английский повторить
4. После нескольких лет в backend разработке решил окунуться в мир фронтенда. Изучаю TailwindCSS, React. Практически сразу подвернулся и соответствующий проект. В процессе познакомился с React Router
5. Работаю над личными проектами. Как уже писал - идей достаточно, а времени на них не так много. Стараюсь час в день уделять, но пока получается так себе
Постараюсь не пропадать на долго) и, да, это первый пост, который я изначально написал на русском
#блог #тонивещает
Раз уж это мой блог, значит буду писать не только о разработке. Краткая сводка новостей или "куда пропал?"
1. Сейчас погрузился в работу, взял несколько интересных проектов и веду переговоры с потенциальными заказчиками
2. Есть крутые планы на жизнь, потому активно ищу работу не на фрилансе и отправляю резюме в зарубежные компании
3. Начал изучать немецкий 🙈 даже что-то получается и немного понимаю простые вещи. Параллельно задумался о том, что было бы хорошо и английский повторить
4. После нескольких лет в backend разработке решил окунуться в мир фронтенда. Изучаю TailwindCSS, React. Практически сразу подвернулся и соответствующий проект. В процессе познакомился с React Router
5. Работаю над личными проектами. Как уже писал - идей достаточно, а времени на них не так много. Стараюсь час в день уделять, но пока получается так себе
Постараюсь не пропадать на долго) и, да, это первый пост, который я изначально написал на русском
#блог #тонивещает
🚀 Откройте для себя Vite: молниеносный инструмент для современной веб-разработки 🚀
Приветствую, уважаемые! Устали от медленной сборки проектов и головной боли при настройке? Пришло время открыть для себя Vite. Это революционный инструмент сборки, который переосмысливает современную веб-разработку 🌐
Что это? 🤔
Vite, произносится как «veet», по-французски означает «быстро» — и это действительно так! Vite, разработанный Эваном Ю, создателем Vue.js, представляет собой инструмент сборки и сервер разработки, созданный для скорости и простоты.
Почему Vite? 🚀
Причин забыть про древний Webpack, Rollup или Parcel (нужное подчеркнуть) довольно много, вот некоторые из них:
1. Моментальный запуск сервера
2. Молниеносно быстрая сборка
3. Интеграция с Vue.js
4. Поддержка JS и TS
5. Гибкая настройка инструмента
6. Мощная система плагинов
7. Различные режимы разработки
Как начать использовать сие чудо? 🚀
1. Устанавливаем Node.js и npm (если еще этого не сделали)
2. Создаем новый проект или переходим в существующий каталог проекта
3. Выполняем
4. Следуйте подсказкам, и все готово!
Удачной разработки с помощью Vite, и пусть ваш рабочий процесс будет быстрее, чем когда-либо! 🎉
Более подробную информацию всегда можно найти на сайте проекта: Vite
#frontend #tools
Приветствую, уважаемые! Устали от медленной сборки проектов и головной боли при настройке? Пришло время открыть для себя Vite. Это революционный инструмент сборки, который переосмысливает современную веб-разработку 🌐
Что это? 🤔
Vite, произносится как «veet», по-французски означает «быстро» — и это действительно так! Vite, разработанный Эваном Ю, создателем Vue.js, представляет собой инструмент сборки и сервер разработки, созданный для скорости и простоты.
Почему Vite? 🚀
Причин забыть про древний Webpack, Rollup или Parcel (нужное подчеркнуть) довольно много, вот некоторые из них:
1. Моментальный запуск сервера
2. Молниеносно быстрая сборка
3. Интеграция с Vue.js
4. Поддержка JS и TS
5. Гибкая настройка инструмента
6. Мощная система плагинов
7. Различные режимы разработки
Как начать использовать сие чудо? 🚀
1. Устанавливаем Node.js и npm (если еще этого не сделали)
2. Создаем новый проект или переходим в существующий каталог проекта
3. Выполняем
npm init vite@latest
(или yarn create vite
), чтобы создать новый проект Vite4. Следуйте подсказкам, и все готово!
Удачной разработки с помощью Vite, и пусть ваш рабочий процесс будет быстрее, чем когда-либо! 🎉
Более подробную информацию всегда можно найти на сайте проекта: Vite
#frontend #tools
Решил создать отдельный канал для книг по миру IT. Там буду делиться полезной, интересной и, возможно, редкой литературой.
Для удобства у каждой книги есть хештеги, а в закрепленном сообщении - навигация по ним. Надеюсь, что найдете для себя что-то новое и вдохновитесь на прочтение. Подписывайтесь ;)
Всех обнял 🤗
#полезное #книги #блог
Для удобства у каждой книги есть хештеги, а в закрепленном сообщении - навигация по ним. Надеюсь, что найдете для себя что-то новое и вдохновитесь на прочтение. Подписывайтесь ;)
Всех обнял 🤗
#полезное #книги #блог
Поговорим о комфорте 😌
Разработчику всегда важен комфорт на рабочем месте. Да, и кто бы не хотел уютного айти-дзена в самом сердце кодинга? Поэтому я хочу поделиться с вами одной невероятно полезной функцией для достижения идеальной гармонии ☯️
Лично меня всегда удивляло отсутствие встроенной функции автоматической смены цветовой схемы Windows в зависимости от времени суток. Днем - светлая тема, ночью - темная. Это звучит вполне логично, но, видимо, не для Microsoft 🤨
Сколько времени понадобилось им, чтобы наконец реализовать полноценную темную тему? Добавить возможность удобного переключения между темами они, похоже, тоже не спешат 🐢
Но не стоит отчаиваться! Есть разработчики, которые не медлят, а действуют. Они создали простое, но невероятно полезное приложение - Auto Dark Mode. Думаю, нет необходимости подробно описывать, почему оно стоит вашего внимания 🌙
Просто убедитесь сами:
GitHub
Microsoft Store
#совет #софт #полезное
Разработчику всегда важен комфорт на рабочем месте. Да, и кто бы не хотел уютного айти-дзена в самом сердце кодинга? Поэтому я хочу поделиться с вами одной невероятно полезной функцией для достижения идеальной гармонии ☯️
Лично меня всегда удивляло отсутствие встроенной функции автоматической смены цветовой схемы Windows в зависимости от времени суток. Днем - светлая тема, ночью - темная. Это звучит вполне логично, но, видимо, не для Microsoft 🤨
Сколько времени понадобилось им, чтобы наконец реализовать полноценную темную тему? Добавить возможность удобного переключения между темами они, похоже, тоже не спешат 🐢
Но не стоит отчаиваться! Есть разработчики, которые не медлят, а действуют. Они создали простое, но невероятно полезное приложение - Auto Dark Mode. Думаю, нет необходимости подробно описывать, почему оно стоит вашего внимания 🌙
Просто убедитесь сами:
GitHub
Microsoft Store
#совет #софт #полезное
GitHub
GitHub - AutoDarkMode/Windows-Auto-Night-Mode: Automatically switches between the dark and light theme of Windows 10 and Windows…
Automatically switches between the dark and light theme of Windows 10 and Windows 11 - AutoDarkMode/Windows-Auto-Night-Mode
Tailwind CSS — топ? 🧑💻
Привет, друзья! 👋🏻
Как вы помните, я решил углубиться во фронтенд-разработку, и время от времени я натыкаюсь на интересные и перспективные технологии и инструменты, которые стараюсь внедрить в свои проекты. Один из таких инструментов - Tailwind, и сегодня я помогу вам понять, почему Tailwind - настоящий друг для создания интерфейсов.
Итак, что же такое этот Tailwind? 🤔
Tailwind CSS — это удивительно мощный и гибкий CSS-фреймворк, который упрощает процесс стилизации вашего веб-проекта. Он предоставляет множество классов, которые вы добавляете прямо в HTML, делая процесс стилизации интуитивным и быстрым. Забудьте о множестве строк CSS-кода — просто используйте классы Tailwind для создания красивых и адаптивных интерфейсов.
Все еще не поняли почему Tailwind CSS выделяется? 🧐
🚀 Скорость и Простота: Одним из главных достоинств Tailwind CSS является его простота использования. Вы просто добавляете классы в HTML и мгновенно видите результат. Это убирает необходимость постоянно переключаться между файлами CSS и HTML, что экономит уйму времени. К тому же, рекомендую добавить Vite для еще большего удовольствия от фронтенд-разработки (сам до сих пор не верю в это, но мне действительно понравилось).
🎨 Кастомизация: Tailwind легко настраивается под ваши потребности. Вы можете настроить цвета, шрифты, размеры и многое другое, чтобы ваш интерфейс соответствовал вашей визуальной концепции.
📱 Адаптивность: С Tailwind CSS создание адаптивных дизайнов — это просто. Классы для медиа-запросов позволяют настраивать стили для разных устройств и экранов.
👨👩👧👦 Сообщество и Экосистема: Tailwind имеет активное сообщество и множество ресурсов. Вы с легкостью найдете обширную документацию, обучающие материалы и полезные плагины, которые упростят вашу работу.
✨ Онлайн-демо: Вы всегда можете попробовать Tailwind CSS в действии здесь, чтобы ближе познакомиться с этим инструментом до его внедрения в проект.
Единственное, что может показаться сложным — выучить все эти классы. Но не стоит это специально делать. Просто начните использовать Tailwind, и мозг вместе с мышечной памятью сделают свое дело.
Помните, practice makes perfect! 😉
Поделитесь своим мнением! Если у вас есть вопросы о Tailwind CSS или вы хотите поделиться своим опытом, оставьте комментарий. Буду рад услышать вас! 🔍💬
За дополнительной информацией загляните на официальный сайт.
#tailwind #frontend #полезное
Привет, друзья! 👋🏻
Как вы помните, я решил углубиться во фронтенд-разработку, и время от времени я натыкаюсь на интересные и перспективные технологии и инструменты, которые стараюсь внедрить в свои проекты. Один из таких инструментов - Tailwind, и сегодня я помогу вам понять, почему Tailwind - настоящий друг для создания интерфейсов.
Итак, что же такое этот Tailwind? 🤔
Tailwind CSS — это удивительно мощный и гибкий CSS-фреймворк, который упрощает процесс стилизации вашего веб-проекта. Он предоставляет множество классов, которые вы добавляете прямо в HTML, делая процесс стилизации интуитивным и быстрым. Забудьте о множестве строк CSS-кода — просто используйте классы Tailwind для создания красивых и адаптивных интерфейсов.
Все еще не поняли почему Tailwind CSS выделяется? 🧐
🚀 Скорость и Простота: Одним из главных достоинств Tailwind CSS является его простота использования. Вы просто добавляете классы в HTML и мгновенно видите результат. Это убирает необходимость постоянно переключаться между файлами CSS и HTML, что экономит уйму времени. К тому же, рекомендую добавить Vite для еще большего удовольствия от фронтенд-разработки (сам до сих пор не верю в это, но мне действительно понравилось).
🎨 Кастомизация: Tailwind легко настраивается под ваши потребности. Вы можете настроить цвета, шрифты, размеры и многое другое, чтобы ваш интерфейс соответствовал вашей визуальной концепции.
📱 Адаптивность: С Tailwind CSS создание адаптивных дизайнов — это просто. Классы для медиа-запросов позволяют настраивать стили для разных устройств и экранов.
👨👩👧👦 Сообщество и Экосистема: Tailwind имеет активное сообщество и множество ресурсов. Вы с легкостью найдете обширную документацию, обучающие материалы и полезные плагины, которые упростят вашу работу.
✨ Онлайн-демо: Вы всегда можете попробовать Tailwind CSS в действии здесь, чтобы ближе познакомиться с этим инструментом до его внедрения в проект.
Единственное, что может показаться сложным — выучить все эти классы. Но не стоит это специально делать. Просто начните использовать Tailwind, и мозг вместе с мышечной памятью сделают свое дело.
Помните, practice makes perfect! 😉
Поделитесь своим мнением! Если у вас есть вопросы о Tailwind CSS или вы хотите поделиться своим опытом, оставьте комментарий. Буду рад услышать вас! 🔍💬
За дополнительной информацией загляните на официальный сайт.
#tailwind #frontend #полезное
Сервис отправки уведомлений
Добрый день, друзья!
Сегодня я расскажу о своем опыте в разработке сервиса для отправки уведомлений. Однажды ко мне обратился клиент из Канады с просьбой разработать удобный сервис уведомлений с API для медицинского приложения. Его интересовали 3 способа коммуникации: SMS, Email и Push.
Проект заинтересовал меня, и я решил взять его в работу, несмотря на отсутствие четкого ТЗ. После выяснения всех деталей с клиентом, я приступил к написанию ТЗ, проектированию архитектуры и последующей разработке. Было решено использовать Node.js и микросервисы. Каждый способ коммуникации был реализован в виде отдельного сервиса.
Структура микросервисов:
Микросервисная архитектура была выбрана для обеспечения гибкости и масштабируемости системы. Каждый из микросервисов отвечал за один способ коммуникации (SMS, Email или Push), что позволило эффективно управлять каждым из них и масштабировать их по мере необходимости. Микросервисы взаимодействовали друг с другом с использованием RabbitMQ, что обеспечивало надежную передачу сообщений между ними.
Безопасность:
Безопасность данных и обработки уведомлений была одним из приоритетов. Я использовал JWT для аутентификации и авторизации запросов к API. Это позволило обеспечить доступ только авторизованным пользователям и предотвратить несанкционированный доступ к сервису.
Сложности и решения:
В ходе разработки возникали различные сложности, включая оптимизацию расходов на отправку SMS в разных странах. Было проведено тщательное сравнение различных вариантов и выбрано оптимальное решение, которое позволило клиенту сэкономить средства.
Отправку Email осуществляли через SMTP, за Push-уведомления отвечал Google Cloud Messaging (GCM), а для SMS мы использовали Twilio, как самый оптимальный.
Перспективы и будущее:
Сервис, который был разработан, стал гибким и масштабируемым, с удобным API, документацией, шаблонами сообщений и отправкой по расписанию. В будущем есть возможность расширять его функциональность и добавлять новые функции и способы отправки. Можно сказать, что получился некий аналог OneSignal, с которым тоже пришлось работать позднее.
Проект получился со следующим стеком:
NestJS, TypeScript, RabbitMQ, Mongoose, Redis, JWT
Также хочу добавить, что строить микросервисы на NestJS очень приятно. Да и в целом, я обожаю Nest. Я сделал на него ставку несколько лет назад, постепенно изучая его возможности, следя за развитием и всегда оставаясь в курсе последних новостей. Сейчас я считаю, что это один из самых перспективных фреймворков для бекенда.
#опыт #проект #nodejs #nestjs #микросервисы
Добрый день, друзья!
Сегодня я расскажу о своем опыте в разработке сервиса для отправки уведомлений. Однажды ко мне обратился клиент из Канады с просьбой разработать удобный сервис уведомлений с API для медицинского приложения. Его интересовали 3 способа коммуникации: SMS, Email и Push.
Проект заинтересовал меня, и я решил взять его в работу, несмотря на отсутствие четкого ТЗ. После выяснения всех деталей с клиентом, я приступил к написанию ТЗ, проектированию архитектуры и последующей разработке. Было решено использовать Node.js и микросервисы. Каждый способ коммуникации был реализован в виде отдельного сервиса.
Структура микросервисов:
Микросервисная архитектура была выбрана для обеспечения гибкости и масштабируемости системы. Каждый из микросервисов отвечал за один способ коммуникации (SMS, Email или Push), что позволило эффективно управлять каждым из них и масштабировать их по мере необходимости. Микросервисы взаимодействовали друг с другом с использованием RabbitMQ, что обеспечивало надежную передачу сообщений между ними.
Безопасность:
Безопасность данных и обработки уведомлений была одним из приоритетов. Я использовал JWT для аутентификации и авторизации запросов к API. Это позволило обеспечить доступ только авторизованным пользователям и предотвратить несанкционированный доступ к сервису.
Сложности и решения:
В ходе разработки возникали различные сложности, включая оптимизацию расходов на отправку SMS в разных странах. Было проведено тщательное сравнение различных вариантов и выбрано оптимальное решение, которое позволило клиенту сэкономить средства.
Отправку Email осуществляли через SMTP, за Push-уведомления отвечал Google Cloud Messaging (GCM), а для SMS мы использовали Twilio, как самый оптимальный.
Перспективы и будущее:
Сервис, который был разработан, стал гибким и масштабируемым, с удобным API, документацией, шаблонами сообщений и отправкой по расписанию. В будущем есть возможность расширять его функциональность и добавлять новые функции и способы отправки. Можно сказать, что получился некий аналог OneSignal, с которым тоже пришлось работать позднее.
Проект получился со следующим стеком:
NestJS, TypeScript, RabbitMQ, Mongoose, Redis, JWT
Также хочу добавить, что строить микросервисы на NestJS очень приятно. Да и в целом, я обожаю Nest. Я сделал на него ставку несколько лет назад, постепенно изучая его возможности, следя за развитием и всегда оставаясь в курсе последних новостей. Сейчас я считаю, что это один из самых перспективных фреймворков для бекенда.
#опыт #проект #nodejs #nestjs #микросервисы
Привет 👋🏻
Хочется дополнить предыдущую историю про уведомления. Да, проект завершен, работает и все окей, но история на этом не заканчивается. Через пару недель после запуска я нашел Novu — на тот момент еще довольно сырое, но активно развивающееся open-source решение. Сейчас я бы с уверенностью интегрировал его в новые проекты, где требуется подобный инструмент. Хорошо спроектированный, гибкий и очень удобный центр уведомлений. Обязательно рекомендую попробовать 😉
Website
GitHub
#полезное #совет #nodejs
Хочется дополнить предыдущую историю про уведомления. Да, проект завершен, работает и все окей, но история на этом не заканчивается. Через пару недель после запуска я нашел Novu — на тот момент еще довольно сырое, но активно развивающееся open-source решение. Сейчас я бы с уверенностью интегрировал его в новые проекты, где требуется подобный инструмент. Хорошо спроектированный, гибкий и очень удобный центр уведомлений. Обязательно рекомендую попробовать 😉
Website
GitHub
#полезное #совет #nodejs
novu.co
Novu - Open-source notifications infrastructure for devs and product teams
Novu is an open-source notification platform that empowers developers to create robust, multi-channel notifications for web and mobile apps. With powerful workflows, seamless integrations, and a flexible API-first approach, Novu enables product teams to manage…
Чертовски нравится это обновление Telegram с Replies 2.0. Казалось бы, что особенного, но посмотрите на эту возможность подсветки синтаксиса! Теперь айтишные блоги будут выглядеть красиво.
Чтоб применить хайлайт необходимо обернуть текст в тройные апострофы с названием языка, например:
```js
// Ваш код
```
Ну и как пример - работа с модулями ES6.
mathUtils.ts
Чтоб применить хайлайт необходимо обернуть текст в тройные апострофы с названием языка, например:
```js
// Ваш код
```
Ну и как пример - работа с модулями ES6.
mathUtils.ts
export function addNumbers(a: number, b: number): number {app.ts
return a + b;
}
import { addNumbers } from './mathUtils';
const result = addNumbers(5, 7);
console.log(`The result is: ${result}`);
Разбираемся с командой EXPLAIN в PostgreSQL 🔍
Привет, коллеги! 👋🏻
Я сейчас активно ищу работу и прохожу собеседования. Не так давно было приятное собеседование (даже скорее душевный разговор) с одной компанией из Саудовской Аравии в ходе которого я открыл для себя кое-что новое и теперь хочу поделиться с вами этим знанием. Сегодня мы поговорим о том, как глубже понять, что происходит внутри вашей базы данных PostgreSQL при выполнении запросов. Для этого мы используем мощную команду
❓ Что такое EXPLAIN?
EXPLAIN - это команда в PostgreSQL, которая позволяет анализировать и понимать запросы SQL. Просто поместите
❓ Как это работает?
Когда вы выполняете EXPLAIN с вашим запросом, PostgreSQL возвращает план выполнения, который описывает:
1. Пути доступа к данным
2. Оценки стоимости (начальной и полной)
3. Предполагаемое количество строк, которые будут обработаны
4. Предполагаемый объем данных
Пример:
Если добавить к команде
Заключение:
Используйте
#PostgreSQL #DatabaseOptimization #SQLTips #советы
Привет, коллеги! 👋🏻
Я сейчас активно ищу работу и прохожу собеседования. Не так давно было приятное собеседование (даже скорее душевный разговор) с одной компанией из Саудовской Аравии в ходе которого я открыл для себя кое-что новое и теперь хочу поделиться с вами этим знанием. Сегодня мы поговорим о том, как глубже понять, что происходит внутри вашей базы данных PostgreSQL при выполнении запросов. Для этого мы используем мощную команду
EXPLAIN
.❓ Что такое EXPLAIN?
EXPLAIN - это команда в PostgreSQL, которая позволяет анализировать и понимать запросы SQL. Просто поместите
EXPLAIN
перед вашим запросом, и вы получите описание плана выполнения запроса. Это помогает оптимизировать запросы и находить узкие места производительности.❓ Как это работает?
Когда вы выполняете EXPLAIN с вашим запросом, PostgreSQL возвращает план выполнения, который описывает:
1. Пути доступа к данным
2. Оценки стоимости (начальной и полной)
3. Предполагаемое количество строк, которые будут обработаны
4. Предполагаемый объем данных
Пример:
EXPLAIN SELECT * FROM users WHERE id = 1;Получите что-то наподобие:
Seq Scan on users (cost=0.00..1.25 rows=1 width=240)Это означает, что PostgreSQL планирует выполнить последовательное сканирование всей таблицы users, чтобы найти строки, где
Filter: (id = 1)
id = 1.
Расширенный анализ: EXPLAIN ANALYZEЕсли добавить к команде
EXPLAIN
слово ANALYZE
, то PostgreSQL выполнит запрос и покажет реальное время выполнения и другие метрики. Это полезно для измерения фактической производительности запроса.Заключение:
Используйте
EXPLAIN
, чтобы лучше понять, как PostgreSQL исполняет ваши запросы. Это даст вам возможность оптимизировать их и улучшить общую производительность системы. Не забывайте, что правильная оптимизация начинается с понимания!#PostgreSQL #DatabaseOptimization #SQLTips #советы
Отказаться от пароля и сделать сервер безопаснее? Легко! 🛡
После долгого перерыва решил написать пост на тему кибербезопасности. Сегодня поговорим о важном – использовании приватных ключей вместо традиционных логинов и паролей для SSH-соединений. Ведь безопасность – это не просто слово, это основа надежной ИТ-системы.
🔑 Что такое приватный ключ?
Приватный ключ – это уникальная форма аутентификации, которая использует криптографические методы. В отличие от стандартного логина и пароля, приватный ключ представляет собой длинную последовательность символов, которую практически невозможно взломать.
🔒 Почему это безопаснее?
🔸 Сложность взлома: Приватный ключ генерируется с использованием сложных алгоритмов и имеет гораздо большую длину, чем обычные пароли, что делает его взлом крайне затруднительным.
🔸 Отсутствие повторного использования: В отличие от паролей, которые люди часто используют повторно на разных платформах, каждый приватный ключ уникален для конкретной сессии или устройства.
🔸 Физическая безопасность: Приватный ключ хранится на устройстве пользователя, что уменьшает риски, связанные с удаленными атаками.
🔸 Двухфакторная аутентификация: Использование приватного ключа вместе с паролем обеспечивает дополнительный уровень безопасности.
🔧 Как это работает?
Когда вы устанавливаете SSH-соединение, сервер проверяет подлинность приватного ключа, прежде чем предоставить доступ. Это обеспечивает надежное и защищенное соединение между вашим устройством и сервером.
🌐 Заключение:
Переход на использование приватных ключей для SSH – это шаг в сторону повышения безопасности ваших систем. Это снижает риски связанные с фишингом, перехватом данных и другими видами кибератак.
💡 И помните, безопасность начинается с нас самих. Будьте бдительны и выбирайте надежные методы защиты данных!
#безопасность #советы
После долгого перерыва решил написать пост на тему кибербезопасности. Сегодня поговорим о важном – использовании приватных ключей вместо традиционных логинов и паролей для SSH-соединений. Ведь безопасность – это не просто слово, это основа надежной ИТ-системы.
🔑 Что такое приватный ключ?
Приватный ключ – это уникальная форма аутентификации, которая использует криптографические методы. В отличие от стандартного логина и пароля, приватный ключ представляет собой длинную последовательность символов, которую практически невозможно взломать.
🔒 Почему это безопаснее?
🔸 Сложность взлома: Приватный ключ генерируется с использованием сложных алгоритмов и имеет гораздо большую длину, чем обычные пароли, что делает его взлом крайне затруднительным.
🔸 Отсутствие повторного использования: В отличие от паролей, которые люди часто используют повторно на разных платформах, каждый приватный ключ уникален для конкретной сессии или устройства.
🔸 Физическая безопасность: Приватный ключ хранится на устройстве пользователя, что уменьшает риски, связанные с удаленными атаками.
🔸 Двухфакторная аутентификация: Использование приватного ключа вместе с паролем обеспечивает дополнительный уровень безопасности.
🔧 Как это работает?
Когда вы устанавливаете SSH-соединение, сервер проверяет подлинность приватного ключа, прежде чем предоставить доступ. Это обеспечивает надежное и защищенное соединение между вашим устройством и сервером.
🌐 Заключение:
Переход на использование приватных ключей для SSH – это шаг в сторону повышения безопасности ваших систем. Это снижает риски связанные с фишингом, перехватом данных и другими видами кибератак.
💡 И помните, безопасность начинается с нас самих. Будьте бдительны и выбирайте надежные методы защиты данных!
#безопасность #советы
Must-Have для любого проекта 🚀
Сегодня поговорим о маленьком, но мощном инструменте, который сделает вашу разработку еще более эффективной — lint-staged. 🛠
🔍 Что такое lint-staged?
❓ Почему это мастхэв?
1. Нет необходимости тратить время на ручную проверку каждого файла. lint-staged делает это за вас!
2. Использование данного инструмента повышает качество вашего кода, автоматически исправляя ошибки и следуя лучшим практикам.
3. Также очень рекомендую его использовать в командной работе, что позволит гарантировать соблюдение общих стандартов кода коллегами.
4. Как уже успели догадаться, интеграция lint-staged в CI/CD тоже положительно скажется на разработке
🔧 Окей, понял. Как начать?
1. Установите lint-staged через любой менеджер пакетов:
2. Настройте .lintstagedrc или lint-staged секцию в package.json.
3. Интегрируйте его с git хуком
📦 NPM
🔗 GitHub
Рекомендую всем разработчикам ознакомиться и использовать lint-staged в своей работе. Опытом можете поделиться в комментариях 😉
#cleancode #cicd #repo #github
Сегодня поговорим о маленьком, но мощном инструменте, который сделает вашу разработку еще более эффективной — lint-staged. 🛠
🔍 Что такое lint-staged?
lint-staged
— это утилита для запуска линтеров на git staged файлах. Проще говоря, это значит, что перед каждым коммитом вы можете автоматически проверять и корректировать код на наличие ошибок и несоответствий стандартам. Это как личный ассистент, который поддерживает порядок в вашем коде!❓ Почему это мастхэв?
1. Нет необходимости тратить время на ручную проверку каждого файла. lint-staged делает это за вас!
2. Использование данного инструмента повышает качество вашего кода, автоматически исправляя ошибки и следуя лучшим практикам.
3. Также очень рекомендую его использовать в командной работе, что позволит гарантировать соблюдение общих стандартов кода коллегами.
4. Как уже успели догадаться, интеграция lint-staged в CI/CD тоже положительно скажется на разработке
🔧 Окей, понял. Как начать?
1. Установите lint-staged через любой менеджер пакетов:
npm i lint-staged
2. Настройте .lintstagedrc или lint-staged секцию в package.json.
3. Интегрируйте его с git хуком
pre-commit
через husky или другой инструмент.📦 NPM
🔗 GitHub
Рекомендую всем разработчикам ознакомиться и использовать lint-staged в своей работе. Опытом можете поделиться в комментариях 😉
#cleancode #cicd #repo #github
GitHub
GitHub - lint-staged/lint-staged: 🚫💩 — Run linters on git staged files
🚫💩 — Run linters on git staged files. Contribute to lint-staged/lint-staged development by creating an account on GitHub.
Привет, друзья!👋
Пока я сражаюсь с собой за регулярность постов предлагаю ознакомиться с некоторыми удобными веб-шорткодами для тех или иных действий:
• doc.new - создать документ Google
• sheet.new - создать Google таблицу
• slide.new - создать презентацию Google
• form.new - создать форму Google
• meet.new - начать новую встречу в Google Meet
• cal.new или meeting.new - создать новое событие в Google Календаре
• keep.new - создать новую заметку в Google Keep
• site.new - создать новый сайт в Google Sites
• repo.new - создать новый репозиторий на GitHub
• gist.new - создать новый Gist на GitHub
• story.new - создать новую историю в Medium
• canva.new - создать новый дизайн в Canva
Если знаете еще какие-то - пишите в комментах, в дальнейшем соберу все воедино
#советы #продуктивность
Пока я сражаюсь с собой за регулярность постов предлагаю ознакомиться с некоторыми удобными веб-шорткодами для тех или иных действий:
• doc.new - создать документ Google
• sheet.new - создать Google таблицу
• slide.new - создать презентацию Google
• form.new - создать форму Google
• meet.new - начать новую встречу в Google Meet
• cal.new или meeting.new - создать новое событие в Google Календаре
• keep.new - создать новую заметку в Google Keep
• site.new - создать новый сайт в Google Sites
• repo.new - создать новый репозиторий на GitHub
• gist.new - создать новый Gist на GitHub
• story.new - создать новую историю в Medium
• canva.new - создать новый дизайн в Canva
Если знаете еще какие-то - пишите в комментах, в дальнейшем соберу все воедино
#советы #продуктивность
💥 Новый горизонт в управлении серверами: Termius
Привет! 👋
Сегодня хочу поделиться с вами таким удобным и функциональным инструментом в арсенале каждого разработчика и админа как Termius.
Termius – это не просто SSH клиент, это целая экосистема для управления серверами и облаками. С его помощью вы можете легко подключаться к любому удаленному серверу, будь то Linux, Unix или Windows, используя SSH, Mosh или Telnet протоколы.
Среди преимуществ для себя выделил такие:
⭐️ Мультиплатформенность: Termius доступен на всех популярных платформах, включая iOS, Android, Windows, macOS и Linux. Вы с легкостью можете управлять серверами с любого устройства, просто попробуйте один раз и отказаться уже не сможете.
⭐️ Синхронизация: Все данные (соединения, ключи, команды) автоматически синхронизируются между устройствами через облачный сервис, что позволяет продолжить работу с любого места в любое время.
⭐️ Безопасность: Инструмент использует шифрование AES-256 для защиты данных и поддерживает двухфакторную аутентификацию для дополнительной безопасности.
⭐️ Удобный интерфейс: Черт, возьми, по интефейсу Termius превосходит аналоги! Он имеет максимально чистый и интуитивно понятный интерфейс, который делает работу с серверами простой и приятной без ущерба функциональности.
⭐️ Расширенные функции: Termius предлагает множество расширенных функций, таких как проброс портов, SFTP для передачи файлов, поддержка различных типов терминалов и многое другое.
Считаю, что Termius – это маст-хев инструмент, который должен быть в арсенале каждого IT-специалиста 😉
#полезное #инструменты
Привет! 👋
Сегодня хочу поделиться с вами таким удобным и функциональным инструментом в арсенале каждого разработчика и админа как Termius.
Termius – это не просто SSH клиент, это целая экосистема для управления серверами и облаками. С его помощью вы можете легко подключаться к любому удаленному серверу, будь то Linux, Unix или Windows, используя SSH, Mosh или Telnet протоколы.
Среди преимуществ для себя выделил такие:
⭐️ Мультиплатформенность: Termius доступен на всех популярных платформах, включая iOS, Android, Windows, macOS и Linux. Вы с легкостью можете управлять серверами с любого устройства, просто попробуйте один раз и отказаться уже не сможете.
⭐️ Синхронизация: Все данные (соединения, ключи, команды) автоматически синхронизируются между устройствами через облачный сервис, что позволяет продолжить работу с любого места в любое время.
⭐️ Безопасность: Инструмент использует шифрование AES-256 для защиты данных и поддерживает двухфакторную аутентификацию для дополнительной безопасности.
⭐️ Удобный интерфейс: Черт, возьми, по интефейсу Termius превосходит аналоги! Он имеет максимально чистый и интуитивно понятный интерфейс, который делает работу с серверами простой и приятной без ущерба функциональности.
⭐️ Расширенные функции: Termius предлагает множество расширенных функций, таких как проброс портов, SFTP для передачи файлов, поддержка различных типов терминалов и многое другое.
Считаю, что Termius – это маст-хев инструмент, который должен быть в арсенале каждого IT-специалиста 😉
#полезное #инструменты
Termius
Termius - SSH platform for Mobile and Desktop
Termius helps to organize the work of multiple DevOps and engineering teams. It reduces the admin work for managing users. Enterprise compliance. SOC2 II report.
Эффективное управление параллельными задачами в JavaScript
Привет! 🖖
Внезапно решил поделиться своим опытом работы с p-limit. Эта библиотека позволяет контролировать количество одновременно выполняющихся асинхронных операций, что особенно полезно при работе с ресурсозатратными или ограниченными API.
❓ Почему это важно?
Во время работы с большим количеством асинхронных задач, например, запросов к API или операций ввода-вывода, выполнение всех задач одновременно может привести к перегрузке системы или превышению лимитов API. Для избежания данной ситуации и улучшения производительности приложения необходимо ограничивать количество параллельных задач.
В целом, документация проекта предельно ясна. Я лишь покажу верхушку айсберга.
Установка производится как обычно, через любой менеджер пакетов. Я предпочитаю pnpm, но приведу пример для npm:
Для проектов CommonJS:
Предположим, что у нас есть массив асинхронных задач и хотим ограничить выполнение до 2-х параллельных выполнений:
Да, так просто можно решить данную задачу :)
Хочу отметить важный момент. Пакет не поддерживает CJS начиная с версии 4.0.0. Так что либо ставим младшую версию - 3.1.0, либо переводим проект на ESM.
📦 NPM
🔗 GitHub
#npm #полезное #инструменты
Привет! 🖖
Внезапно решил поделиться своим опытом работы с p-limit. Эта библиотека позволяет контролировать количество одновременно выполняющихся асинхронных операций, что особенно полезно при работе с ресурсозатратными или ограниченными API.
❓ Почему это важно?
Во время работы с большим количеством асинхронных задач, например, запросов к API или операций ввода-вывода, выполнение всех задач одновременно может привести к перегрузке системы или превышению лимитов API. Для избежания данной ситуации и улучшения производительности приложения необходимо ограничивать количество параллельных задач.
В целом, документация проекта предельно ясна. Я лишь покажу верхушку айсберга.
Установка производится как обычно, через любой менеджер пакетов. Я предпочитаю pnpm, но приведу пример для npm:
npm install p-limit
Для проектов CommonJS:
npm install p-limit@3.1.0
Предположим, что у нас есть массив асинхронных задач и хотим ограничить выполнение до 2-х параллельных выполнений:
const pLimit = require('p-limit');
const limit = pLimit(2); // Ограничение до 2 одновременных задач
const tasks = [
async () => { /* Задача 1 */ },
async () => { /* Задача 2 */ },
async () => { /* Задача 3 */ },
async () => { /* Задача 4 */ }
];
const limitedTasks = tasks.map(task => limit(task));
Promise.all(limitedTasks).then(results => {
console.log(results);
});
Да, так просто можно решить данную задачу :)
Хочу отметить важный момент. Пакет не поддерживает CJS начиная с версии 4.0.0. Так что либо ставим младшую версию - 3.1.0, либо переводим проект на ESM.
📦 NPM
🔗 GitHub
#npm #полезное #инструменты
О визуальных текстовых редакторах
Недавно столкнулся с задачей разработки/интеграции rich-text редактора. Попробовал несколько готовых решений и даже собрал собственное.
Сначала о проекте - на Next.js сайт понадобился визуальный редактор текста с возможностью задавать заголовки и базово форматировать текст. За основу взял Lexical. Это фрейморк от Facebook для создания редакторов текста. Штука очень мощная и невероятно гибкая. По началу все было окей, но когда заказчик запросил доработку, то столкнулся с рядом веселых и не очень проблем. Таким образом я попробовал около 6 разных редакторов и остановился на.. Нет, не Lexical 🥲
Напишу про выбор отдельным постом, а пока кратко о том, почему стоит и нет выбирать Lexical:
+ Гибкий. Он действительно гибкий и позволяет сделать все, что душе захочется. Если фокусироваться на разработке кастомного редактора, то смотрите в сторону именно Lexical.
+ Современный. Проект активно поддерживается и развивается, вопрос к используемым технологиям не возникает
+ Компактный. Нет желания тащить на фронт громоздкий редактор в котором половина функций не будет использоваться? Lexical.
Теперь к минусам:
- Сложность внедрения. Настройка и интеграция Lexical требуют значительных усилий и глубоких знаний. Это может быть сложным и времязатратным процессом, что особенно критично при ограниченном бюджете.
- Отсутствие некоторых готовых функций. Некоторые привычные и желаемые функции, такие как управление изображениями и таблицами, требуют дополнительной разработки и интеграции.
- Местами слабо документирован. Решили взять Lexical? Приготовьтесь курить документацию, но так или иначе вопросы будут оставаться. По модулям вообще далеко не везде есть нормальная инфа, только API.
Выбирать Lexical или искать альтернативу решать вам, но прежде чем поиграв с ним в Playground радоваться и думать ЭТО ОНО ознакомьтесь с документацией (да, я этот шаг решил упустить 😅) и примерами других проектов на данном фреймворке.
Всем добра и кода без багов! 🫶
📦 NPM
🔗 GitHub
#npm #полезное
Недавно столкнулся с задачей разработки/интеграции rich-text редактора. Попробовал несколько готовых решений и даже собрал собственное.
Сначала о проекте - на Next.js сайт понадобился визуальный редактор текста с возможностью задавать заголовки и базово форматировать текст. За основу взял Lexical. Это фрейморк от Facebook для создания редакторов текста. Штука очень мощная и невероятно гибкая. По началу все было окей, но когда заказчик запросил доработку, то столкнулся с рядом веселых и не очень проблем. Таким образом я попробовал около 6 разных редакторов и остановился на.. Нет, не Lexical 🥲
Напишу про выбор отдельным постом, а пока кратко о том, почему стоит и нет выбирать Lexical:
+ Гибкий. Он действительно гибкий и позволяет сделать все, что душе захочется. Если фокусироваться на разработке кастомного редактора, то смотрите в сторону именно Lexical.
+ Современный. Проект активно поддерживается и развивается, вопрос к используемым технологиям не возникает
+ Компактный. Нет желания тащить на фронт громоздкий редактор в котором половина функций не будет использоваться? Lexical.
Теперь к минусам:
- Сложность внедрения. Настройка и интеграция Lexical требуют значительных усилий и глубоких знаний. Это может быть сложным и времязатратным процессом, что особенно критично при ограниченном бюджете.
- Отсутствие некоторых готовых функций. Некоторые привычные и желаемые функции, такие как управление изображениями и таблицами, требуют дополнительной разработки и интеграции.
- Местами слабо документирован. Решили взять Lexical? Приготовьтесь курить документацию, но так или иначе вопросы будут оставаться. По модулям вообще далеко не везде есть нормальная инфа, только API.
Выбирать Lexical или искать альтернативу решать вам, но прежде чем поиграв с ним в Playground радоваться и думать ЭТО ОНО ознакомьтесь с документацией (да, я этот шаг решил упустить 😅) и примерами других проектов на данном фреймворке.
Всем добра и кода без багов! 🫶
📦 NPM
🔗 GitHub
#npm #полезное