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 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
@ippatev
ippatev / index.md
Created September 4, 2025 02:50
Зависимость @rollup/rollup-win32-x64-msvc иногда необходима в проектах Turborepo

Зависимость @rollup/rollup-win32-x64-msvc иногда необходима в проектах Turborepo, потому что Rollup использует платформ-специфичные нативные бинарные файлы для оптимизации производительности на разных операционных системах и архитектурах процессора.

Эта зависимость специально предназначена для Windows-систем, работающих на архитектуре x64 с инструментарием компилятора MSVC (Microsoft Visual C++). 1

Rollup, как сборщик JavaScript-модулей, предоставляет эти платформ-специфичные пакеты в качестве опциональных зависимостей, которые автоматически выбираются на основе платформы пользователя. Пакетный менеджер (npm, pnpm или yarn) установит только соответствующий платформ-специфичный бинарный файл, подходящий для текущей системы. 2

Это похоже на то, как сам Turborepo обрабатывает платформ-специфичные бинарные файлы — через использование опциональных зависимостей, которые условно устанавливаются в зависимости от целевой платформы. Нативные бинарные файлы обеспечивают лучшую производит

@ippatev
ippatev / index.md
Created September 4, 2025 02:47
Что такое `@rollup/rollup-win32-x64-msvc`

1. Что такое @rollup/rollup-win32-x64-msvc?

Этот пакет является частью стратегии Rollup по распространению предварительно собранных нативных бинарных файлов для повышения производительности.

  • @rollup/: Пространство имен для официальных пакетов Rollup.
  • rollup-win32-x64-msvc: Это название описывает целевую платформу для бинарного файла:
    • win32: Операционная система (Windows).
    • x64: Архитектура процессора (64-битная).
    • msvc: Инструментарий C++, с помощью которого он был собран (Microsoft Visual C++), стандартный для Windows.

Ещё один отличный и содержательный вопрос. Вы точно задумываетесь о механике графов зависимостей.

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

Давайте разберёмся, почему.

1. Назначение dependencies против графа Turborepo

Прежде всего важно помнить, что поле dependencies в package.json имеет первичное, стандартное назначение в экосистеме JavaScript: оно указывает менеджеру пакетов (npm, yarn, pnpm), какие пакеты необходимо установить в node_modules, чтобы ваше приложение или библиотека могли работать.

@ippatev
ippatev / index.md
Last active September 3, 2025 07:15
Функциональность `--graph` в Turborepo

Функциональность --graph в Turborepo

Флаг --graph в Turborepo генерирует граф зависимостей задач, а не граф зависимостей пакетов. Его взаимодействие с devDependencies и лениво загружаемыми модулями работает следующим образом:

Что отображает флаг --graph

Флаг --graph визуализирует граф зависимостей задач, который отображает, как задачи зависят друг от друга на основе вашей конфигурации в turbo.json 1. Граф показывает зависимости между задачами, а не напрямую зависимости между пакетами.

Как обрабатываются devDependencies

@ippatev
ippatev / index.md
Last active September 3, 2025 06:51
Как Turborepo строит свой граф

Отличный вопрос. Он затрагивает самую суть работы графа зависимостей Turborepo.

Короткий ответ: Нет, turbo build --graph (и граф задач Turborepo в целом) не включает «ленивые импорты» (динамические импорты) в свой анализ зависимостей.

Вот подробное объяснение, почему это так и что это означает.

Как Turborepo строит свой граф

Turborepo создает свой граф зависимостей, анализируя файлы package.json в вашем монорепозитории. Он ищет две ключевые вещи:

Excellent question. It gets to the heart of how Turborepo's dependency graph works.

The short answer is: No, turbo build --graph (and Turborepo's task graph in general) does not include "lazy loading imports" (dynamic imports) in its dependency analysis.

Here’s a detailed breakdown of why and what that means.

How Turborepo Builds Its Graph

Turborepo creates its dependency graph by analyzing the package.json files within your monorepo. It looks for two key things:

Основные аспекты миграции Tailwind CSS v3 → v4:

  1. Новый движок на Rust
    V4 использует движок Oxidize для компиляции, что требует обновления инструментов сборки. Убедитесь, что ваша среда поддерживает необходимые зависимости.

  2. Изменения в конфигурации
    Ключевые секции theme, plugins и presets перенесены в @tailwind-директивы в CSS. Основной конфиг может быть упрощен или заменен настройками в CSS.

  3. Директивы в CSS
    Вместо @tailwind base; @tailwind components; теперь используется единая директива @theme {...}. Перепишите кастомные стили с использованием нового синтаксиса.