Alfa Brain

Все статьи

Как объединить коммиты в Git и зачем это нужно

Алексей ВечкановАлексей Вечканов   

Git — мощная система контроля версий, которая позволяет разработчикам отслеживать изменения в коде и сотрудничать над проектами. Однако в процессе работы история коммитов может стать запутанной из-за множества мелких или неинформативных коммитов. Объединение коммитов (squash) помогает привести историю в порядок, делая её более понятной и управляемой.

Изображение статьи

Как создать пакет NPM

Алексей ВечкановАлексей Вечканов   

Создание собственного npm-пакета может показаться сложной задачей, но на деле это увлекательный процесс, который открывает новые возможности для разработки и обмена своими наработками с сообществом. В этой статье мы подробно разберем, как создать свой первый npm-пакет, шаг за шагом пройдем процесс его подготовки, публикации и управления. Независимо от того, хотите ли вы поделиться полезной библиотекой или автоматизировать задачи в вашем проекте, это руководство поможет вам начать путь к созданию собственного инструмента.

Изображение статьи

Автоматическое переключение версий NodeJS (nvm use)

Алексей ВечкановАлексей Вечканов   

У меня на рабочем PC множество проектов, как рабочих, так и личных. Во многих из них используется разная версия NodeJS. И как же бесит эта надпись: The engine "node" is incompatible with this module. Если в директории проекта есть файл .nvmrc то можно переключить версию NodeJS при помощи NVM (Node Version Manager) командой nvm use. Но делать это каждый раз вручную - дело неблагодарное. Посему, предлагаю автоматизировать.

Изображение статьи

Нагрузочное тестирование API NodeJS с помощью Autocannon

Алексей ВечкановАлексей Вечканов   

Как разработчики, мы всегда заботимся о времени отклика API, чтобы оно не могло стать узким местом для потребителей. Поэтому нам необходимо гарантировать, что время отклика не повлияет на производительность приложения, даже если несколько пользователей используют его одновременно.

Изображение статьи

Тесты всегда являются неотъемлемой частью приложения, обеспечивающей его бесперебойную работу. Как мы можем протестировать наши API, которые будут поддерживать одновременные запросы пользователей?Autocannon, пакет нагрузочного тестирования, может имитировать высокий трафик в нашем приложении.

Отключение микрофона MacBook с помощью клавиши диктовки

Алексей ВечкановАлексей Вечканов   

Впервые, когда мне выдали рабочий MacBook, я по глупости считал кнопку с символом микрофона - кнопкой отключения микрофона (это казалось таким очевидным), но на самом деле это была клавиша диктовки.

Клавиша Диктовки
Клавиша Диктовки

Я никогда не пользовался функцией диктовки. Диктовка позволяет преобразовывать речь в текст. Возможно это полезно каким нибудь писателям, но на мой взгляд намного удобнее было бы использовать эту клавишу как отключение всех микрофонов во всей системе. В этой статье я расскажу как превратить клавишу диктовки в клавишу отключения/включения микрофона.

Переопределение контента, HTTP заголовков и API в Chrome DevTools

Алексей ВечкановАлексей Вечканов   

С удивлением обнаружил, что не многие разработчики и тестировщики знают о возможности DevTools переопределять содержимое ответов на запросы, которые делает браузер. Эта возможность может быть полезна как на этапе разработки, так и на этапе тестирования. Данный функционал называется local overrides или локальные переопределения. Давайте же посмотрим на этот функционал.

Изображение статьи

Как на MacOS вставлять скопированный текст без форматирования

Алексей ВечкановАлексей Вечканов   

Предположим я хочу скопировать код из моего Github в этот блог на MacOS. Выполняю Command + C, затем Command + V. Копирование произошло, но вместе с текстом копировались и стили текста (шрифты, цвет, размер и др.) Набор копируемых свойств зависит от приложения в которое вставляется текст. Это поведение порядком надоедает. Давайте взглянем на варианты решения этой проблемы.

Изображение статьи

В статье несколько решений, поэтому ознакомьтесь со всеми прежде чем приступать к реализации.

Создание простой игры на Python при помощи библиотеки Pygame

Алексей ВечкановАлексей Вечканов   

В данной статье я опишу сценарий создания простой игры на Python. Поможет нам в этом библиотека Pygame. Данная статья не тянет на большой обзор, скорее короткое руководство к действию, чтобы быстро опробовать инструмент.

Справедливости ради, на Python нет больших игр, язык создан для других целей. Но создать простенькую, кроссплатформенную инди-игру - труда не составит.

Изображение статьи

Алгоритм Диффи-Хелмана: безопасный обмен ключами в интернете

Алексей ВечкановАлексей Вечканов   

Я задумал написать статью о безопасных способах передачи данных в Интернете. В первую очередь я задался вопросом "Как работает протокол SSH?". Исследования затянулись, я выяснил много нового и все оказалось совсем не так как представляют большинство. Но прежде чем изучать как работает протокол SSH, необходимо разобраться как работает алгоритм Диффи-Хелмана. Дело в том, что этот алгоритм используется и в протоколе SSH, и при настройке шифрования HTTPS, а так же в других протоколах передачи данных. Тема довольно обширная так, что я решил вынести это в отдельную статью и ссылаться на нее по необходимости. 

В статье я расскажу историю алгоритма, его основной принцип работы, рассмотрим реализации данного алгоритма и попробуем реализовать алгоритм на практике.

Изображение статьи

Кеширование в веб приложениях. Часть 2. Заголовок Expires.

Алексей ВечкановАлексей Вечканов   

В предыдущей статье я рассказал (точнее начал рассказывать) про кеширование на клиентской стороне. И в частности мы разобрали заголовок Cache-Control.

По правде говоря я не с того начал. Начать стоило с заголовка Expires. Заголовок Expires появился раньше и до сих пор используется некоторыми веб-сайтами. В данной статье я расскажу историю этого заголовка и отличия от Cache-Control

Изображение статьи

Кеширование в веб приложениях. Часть 1. Заголовок Cache-Control.

Алексей ВечкановАлексей Вечканов   

Кеширование является одной из наиболее распространенных техник оптимизации производительности веб приложений. В своей работе я использую сервер HapiJS. Это довольно надежный сервис, со своим большим комьюнити и обширными инструментариями. Но вы, конечно, можете использовать любой другой веб сервер. В HapiJS кеширование может быть реализовано как на стороне клиента, так и на стороне сервера.  В этой статье мы рассмотрим оба типа кеширования, а также одновременное использование клиентского и серверного кеширования. Статья будет полезна, не только разработчикам использующим Hapi фреймворк, но и всем остальным веб разработчикам, так как затрагивает описание и предназначение заголовков HTTP.

Изображение статьи

В статье я буду приводить примеры которые я загрузил на Github. Настоятельно рекомендую не просто читать статью, а скачивать примеры и пробовать описанное в статье самостоятельно. Так информация запоминается лучше и ваше время не пройдет зря. Я буду много экспериментировать, чтобы точно понять как работает та или иная технология.

С чего начать изучение Python? Как развиваться?

Алексей ВечкановАлексей Вечканов   

Python является одним из самых популярных языков программирования в мире. Он широко используется в различных областях, таких как наука о данных, машинное обучение, разработка веб-приложений и многое другое. Если вы только начинаете изучать Python, вам нужно следовать некоторому Roadmap, который поможет вам улучшить ваши навыки в программировании.

Изображение статьи

Как написать телеграм бота на питоне?

Алексей ВечкановАлексей Вечканов   

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

Изображение статьи

Для написания телеграм бота на Python, вам необходимо выполнить следующие шаги:

Как читать отчет о покрытии тестами, созданный с помощью Jest.

Алексей ВечкановАлексей Вечканов   

Jest поставляется с функцией создания отчетов, которые помогают нам понять покрытие тестами. Этот отчет включает покрытие выражений (statements), покрытие функций и покрытие ветвлений (braches).

Изображение статьи

Это один из примеров отчета о тестовом покрытии, созданного для тестового приложения. В этом отчете говорится, что он имеет 84% покрытие выражений (statements), 100% ветвей и 100% функций и 84% покрытие строк в целом. Так же, возможно посмотреть отчет по каждому файлу в отдельности.

Поддержка нескольких store в React-Redux приложении

Алексей ВечкановАлексей Вечканов   

Использование нескольких redux хранилищ в React приложении быть довольно сложным.

Изображение статьи

В приложении с React-Redux рекомендуется иметь только одно хранилище (один store). Но если по какой-то странной/особой причине вам нужно иметь более одного  store, вы столкнетесь с проблемами.

Переносы строк CRLF и LF, Каретка и клавиша Shift

Алексей ВечкановАлексей Вечканов   

Если разработчик работает за одной разновидностью операционной системы, то он вряд ли столкнется с проблемой описанной ниже. Но как только ему приходится разрабатывать на разных операционных системах (Windows, Linux, MacOs) - вот тут могут появиться вопросы. Вопросы по поводу переносов строк в разных операционных системах.

Изображение статьи

В этой статье я отвечу на вопросы: Что такое переносы строк? Какими последовательностями символов они обозначаются, и наверное самый главный вопрос, почему с ними такая путаница?

Способы отладки NodeJS приложений

Алексей ВечкановАлексей Вечканов   

В современном мире "Фронтенда" необходимо писать не только клиентские приложения на JavaScript, но и серверную часть на NodeJS. Чаще всего такие сервера называют аббревиатурой BFF (Back For Frontend). Часто приходится использовать сервер для рендеринга HTML. Отлаживать такие приложения иногда становится довольно проблематично. Поэтому, я хочу поделиться своим методами.

Изображение статьи

Давайте же приступим.

Python SimpleHTTPServer - Простой HTTP на Python

Алексей ВечкановАлексей Вечканов   
Превью статьи Python SimpleHTTPServer - Простой HTTP на Python

Модуль Python SimpleHTTPServer — очень удобный инструмент. С помощью этого модуля можно легко превратить любой каталог в вашей операционной системе в простой HTTP веб сервер.

Создание пользовательской страницы 404 в Next.js

Алексей ВечкановАлексей Вечканов   
Превью статьи Создание пользовательской страницы 404 в Next.js

В данной статье показан простой пример создания страницы 404 в NextJS.

Создаем динамические модули используя Webpack Module Federation

Алексей ВечкановАлексей Вечканов   
Превью статьи Создаем динамические модули используя Webpack Module Federation

Изучая технологию Webpack Module Federation я задался следующим вопросом: Как подключить удаленный модуль (remote module), не во время сборки, а во время работы нашего JS приложения?

Я воспринимаю remote модуль как коробку, которую можно перенести в любое место и распаковать ее содержимое, и в нашем случае это компоненты React. Моей же задачей стало понять, как запаковать компонент в коробку, а затем положить эту коробку в более крупную и перенести все вместе за один раз?

Погружение в модули JavaScript. Типы модулей, форматы, загрузчики и сборщики модулей.

Алексей ВечкановАлексей Вечканов   
Превью статьи Погружение в модули JavaScript. Типы модулей, форматы, загрузчики и сборщики модулей.

Разрабатывая веб сайты или веб приложения мы все чаще переносим выполнение кода на клиент, в браузер. Это и обычные страницы с множеством ajax вызовов, и популярные в наше время SPA (Single Page Application), а так же полноценные приложения по типу Figma и прочих конструкторов, где 90% работы выполняет именно браузер.

Но по мере того как расширяется кодовая база клиентского приложения возникают разумные вопросы: Как управлять большой кодовой базой? Как разделить код на части и переиспользовать их? Как создать гибкую и расширяемую архитектуру приложения?

На эти и другие вопросы я отвечу в данной статье. Мы посмотрим на решения в других языках программирования, заглянем в историю JavaScript, увидим как развивались модульные системы в нашем любимом языке и какова ситуация на данный момент.

Как создать объект в JS? Для этого нужно изучить Java

Алексей ВечкановАлексей Вечканов   
Превью статьи Как создать объект в JS? Для этого нужно изучить Java

На днях мне понадобилось объяснить как работают конструкторы в JavaScript, как создавать объекты и наследоваться от нужных прототипов. На первый взгляд тут нет ничего сложного, но на самом деле тема эта очень обширна.

При прочтении этой статьи обязательно практикуйтесь, иначе материал усвоится плохо.

Итак, чтобы разобраться в создании объектов в JavaScript нужно изучить синтаксис создания объектов в Java? Так! Стоп! Java? Да, да! Все в порядке - это будет увлекательное путешествие, так что не будем терять время.

11 полезных советов по современному JavaScript

Алексей ВечкановАлексей Вечканов   
Превью статьи 11 полезных советов по современному JavaScript

Автор статьи: Krina Sardhara
Оригинал: https://medium.com/dhiwise/11-useful-modern-javascript-tips-9736962ed2cd

В нашей повседневной программистской рутине мы часто использовали числа для преобразования строк, проверки ключей в объекте, условного манипулирования данными объекта, фильтрации ложных значений в массиве и т. д.

Здесь я описала несколько советов, которые мне очень нравятся ❤️ ️. Мне кажется они очень полезны и делают мой код короче и чище.

Давайте начинать

Использование файла конфигурации SSH

Алексей ВечкановАлексей Вечканов   
Превью статьи Использование файла конфигурации SSH

Привет. Иногда мы подключаемся к удаленному компьютеру с помощью технологии ssh (secure shell). Сначала мы генерируем пару ключей: приватный и публичный. Публичный кладем на удаленный компьютер. Далее вбиваем в терминале что-то вроде ssh [email protected] Соединение установлено и мы можем работать на удаленном компьютере как на собcтвенном.

Отлично, но что делать если вы хотите подключаться к нескольким удаленным компьютерам? Можно поступить глупо и положить на все удаленные сервера один и тот же публичный ключ. Это будет работать, но значительно снизит безопасность таких соединений. В идеальном мире, каждое соединение должно осуществляться с собственной парой приватного и публичного ключа. К примеру, если вам понадобится дать своему коллеге доступ к серверу, вы можете передать ему только один ключ (в идеале нужно сгенерировать новый) и коллега получит доступ только к одному компьютеру, а не ко всем сразу. К тому же, разные сервера имеют разные ip адреса, на них установлены разные пользователи, могут быть нестандартные порты и другие мелкие детали. Все это нужно помнить, либо где-то записывать. Все это отнимает наше драгоценное время.