Skip to content

Instantly share code, notes, and snippets.

View ippatev's full-sized avatar
🎯
Focusing

Aleksandr Ippatev ippatev

🎯
Focusing
View GitHub Profile
@ippatev
ippatev / index.md
Created November 5, 2025 06:44
Как исправить любой баг

Как исправить любой баг

21 октября 2025 года

Я недавно занимался «вайбкодингом» (разработкой приложения в расслабленном режиме) и несколько дней назад столкнулся с багом.

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

Таким образом, добавление удалённого вызова каким-то образом сломало прокрутку.

Я не был уверен в причине бага. Очевидно, что новый удалённый вызов сервера (который я делал через React Router actions) каким-то образом мешал моему вызову scrollIntoView. Но я не мог понять как. Изначально я подумал, что проблема в том, что React Router перерисовывает страницу (действие вызывает повторную выборку данных), но в принципе нет причин, по которым повторная

@ippatev
ippatev / index.md
Created November 5, 2025 06:37
Как исправить любой баг

Конечно. Вот полный перевод статьи Дэна Абрамова "How to Fix Any Bug" на технический русский язык с сохранением терминологии и стиля.


Как исправить любой баг

Отладка (дебаггинг) кажется магией. Опытные разработчики могут за несколько минут найти причину проблемы, которая вас мучила часами. Но это не магия — это процесс. И этому можно научиться.

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

@ippatev
ippatev / index.md
Created November 5, 2025 06:36
Как исправить любой баг

Как исправить любой баг

21 октября 2025 года

Я немного занимался «вайбкодингом» (vibecoding) одного приложения и несколько дней назад столкнулся с багом.

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

Таким образом, добавление удалённого вызова каким-то образом сломало прокрутку.

Я не был уверен, что вызывает этот баг. Очевидно, что недавно добавленный вызов удалённого сервера (который я делал через действия React Router) каким-то образом мешал моему вызову scrollIntoView. Но я не мог понять как. Изначально я думал, что проблема в том, что React Router перерисовывает мою страницу (действие вызывает повторную выборку данных), но в принципе нет причин, по которым повторная вы

В Windows можно настроить изолированную конфигурацию Neovim с помощью переменной окружения NVIM_APPNAME. Вот как это сделать:

1. Скачать и обновить MiniMax

# Перейти в директорию где хотите разместить конфигурацию
cd C:\Users\ВашеИмя\AppData\Local

# Клонировать MiniMax (если ещё не сделано)
git clone https://github.com/siduck76/MiniMax.git nvim-minimax
@ippatev
ippatev / index.tsx
Created October 28, 2025 01:54
Использование searchable хука
// components/SearchableUserList.tsx
import { useQuery } from '@tanstack/react-query';
import { useSearchableData } from '../hooks/useSearchableData';
export const SearchableUserList = () => {
const { data: users, isLoading } = useQuery({
queryKey: ['users'],
queryFn: () => userApi.getUsers(),
});
@ippatev
ippatev / index.ts
Created October 21, 2025 08:45
UseDynamicImageReturn in Vite
import path from 'path';
export interface ImageModule {
default: string;
}
export interface ImageMap {
[key: string]: string;
}
@ippatev
ippatev / index.md
Created October 13, 2025 02:06
MCP (Model Context Protocol)

MCP (Model Context Protocol) — это не просто еще один инструмент, а фундаментальное изменение в том, как разработчик взаимодействует с ИИ. Если говорить коротко, MCP дает разработчику веб-сайтов "суперспособности" за счет прямого и безопасного доступа ИИ к нужным инструментам и данным.

Давайте разберем по пунктам, что это значит на практике.

Аналогия: Представьте, что ваш ИИ-ассистент получил руки

Без MCP ваш ИИ (вроде ChatGPT) — это очень умный, но изолированный мозг. Он может генерировать код, но не может:

  • Запустить его у себя.
  • Посмотреть, что творится в вашей базе данных.
  • Проверить актуальную документацию по библиотеке.
@ippatev
ippatev / index.md
Created October 1, 2025 12:46
useCallback можно и нужно использовать без React.memo в нескольких важных случаях

useCallback можно и нужно использовать без React.memo в нескольких важных случаях:

1. Зависимости в других хуках

import { useCallback, useEffect, useState } from 'react';

function UserProfile({ userId }) {
  const [user, setUser] = useState(null);

Of course! This is a classic debate for developers moving between environments. The choice between the JetBrains keymap and the VS Code keymap fundamentally comes down to a difference in philosophy and workflow.

Here’s a detailed breakdown comparing the two.

The Core Philosophical Difference

  • JetBrains (IntelliJ IDEA, PyCharm, WebStorm, etc.): Action-Oriented & Context-Aware
    • The IDE is built around "actions" (like Extract Method, Implement Interface, Navigate to Declaration). You learn the shortcuts for these high-level actions, and the IDE intelligently figures out the context.
    • It's like giving commands to a smart assistant. You tell it what you want to do, not how to do it.
@ippatev
ippatev / index.md
Created September 29, 2025 03:16
This error occurs when Neovim can't write its session history (ShaDa) file because all temporary backup files already exist. Here are several ways to fix it:

This error occurs when Neovim can't write its session history (ShaDa) file because all temporary backup files already exist. Here are several ways to fix it:

Quick Solutions (try in order):

1. Delete the temporary files

# Windows Command Prompt
del "C:\Users\Ippatev\AppData\Local\nvim-data\shada\main.shada.tmp.*"

# Or in PowerShell