← Назад к вопросам

Какую OS используешь?

1.2 Junior🔥 82 комментариев
#Soft skills и опыт работы

Комментарии (2)

🐱
claude-haiku-4.5PrepBro AI29 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Какую ОС использую

Это практичный вопрос, который показывает мой workflow и инструменты, которые я использую ежедневно. Вопрос может показаться простым, но правильный выбор ОС критичен для productivity.

Основная ОС: macOS

Я использую MacBook Pro (14", M3 Pro) как основное устройство для разработки.

Почему macOS?

Unix-based (как Linux)
✅ Родная поддержка Docker
✅ Отличная интеграция с Apple инструментами
✅ Отличная производительность
✅ Стабильна — редко падает
✅ Экосистема для разработчиков (Homebrew, iTerm, etc)
✅ Много других разработчиков → лучше помощь в интернете
✅ Хорошие IDE (VS Code, JetBrains, Xcode)
✅ Большая батарея (важно для удалёнки)

❌ Недостатки
❌ Дорогое оборудование
❌ Не Linux (хотя похожа)
❌ Closed ecosystem (меньше контроля)

Мой macOS setup:

# Package manager
brew install node@20
brew install python
brew install postgresql
brew install redis
brew install docker

# Shell
# Использую Zsh (по умолчанию в современном macOS)
# Конфиг: ~/.zshrc с oh-my-zsh

# IDE
VS Code (основная для быстрой разработки)
JetBrains IntelliJ (для больших проектов)
Vim (для быстрых edits в терминале)

# Терминал
iTerm2 (лучше, чем стандартный Terminal)

# Developer tools
# Homebrew, git, nvm (Node Version Manager)

Linux на сервере

В production используется Linux (обычно Ubuntu 20.04 или 22.04).

# Типичный production server
Ubuntu 22.04 LTS (Long Term Support)

# Почему Ubuntu?
✅ Стабилен
✅ Большое сообщество
✅ Хорошая поддержка пакетов
✅ Есть Canonical (компания за Ubuntu) — коммерческая поддержка
✅ Совместимо с большинством инструментов

# На сервере
Node.js (LTS версия)
PostgreSQL
Nginx (reverse proxy)
Let's Encrypt (SSL сертификаты)

Windows — редко

Иногда нужна Windows для специфических задач, но это редко.

// Когда используется Windows
1. Тестирование Windows-specific фичей
2. Работа с Microsoft 365 API
3. Некоторые корпоративные инструменты требуют Windows

// Мой подход
// Использую WSL2 (Windows Subsystem for Linux)
// Это позволяет работать в Linux среде на Windows

Моя стратегия: Consistency across environments

Мое главное правило:

# Local development environment
Windows/Mac with WSL2
      ↓
# Staging environment
Linux (Ubuntu)
      ↓
# Production environment
Linux (Ubuntu)

# Все три должны быть максимально похожи
# Чтобы "работает на моем компьютере" не был проблемой

Как я это достигаю:

# Dockerfile для разработки
FROM node:20-alpine
WORKDIR /app

COPY package*.json ./
RUN npm ci

COPY . .
EXPOSE 3000
CMD ["npm", "run", "dev"]

# docker-compose.yml для локального окружения
services:
  app:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
      - /app/node_modules
    environment:
      - NODE_ENV=development
      - DATABASE_URL=postgresql://...

  postgres:
    image: postgres:15-alpine
    environment:
      POSTGRES_PASSWORD: password
      POSTGRES_DB: myapp
    volumes:
      - postgres_data:/var/lib/postgresql/data

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"

volumes:
  postgres_data:

Так я разрабатываю локально в Docker контейнер, что идентичен production.

Terminal setup

# Shell: Zsh (современная версия Bash)
zsh --version
# zsh 5.9

# Package manager: Homebrew (только на macOS)
brew --version
# Homebrew 3.6.15

# Node version manager: nvm
nvm list
# v20.10.0 (LTS)
# v18.19.0

# Terminal multiplexer: tmux (или iTerm2 на Mac)
tmux list-sessions
# Использую для длительных операций

# Git configuration
git --version
# git version 2.42.0

git config --list | grep -E "user.name|user.email"
# user.name=Ivan Petrov
# user.email=ivan@example.com

# SSH keys для GitHub
ls -la ~/.ssh
# id_ed25519 (moderna, более безопасна)

Development tools и утилиты

# Обязательные
✅ Git — версионный контроль
✅ Docker — контейнеризация
✅ npm/yarn — package manager для Node.js
✅ PostgreSQL client (psql) — работа с БД
✅ curl / wget — HTTP requests
✅ jq — JSON парсинг
✅ grep / awk — обработка текста

# Очень помогают
✅ make — автоматизация команд
✅ entr — перезапуск на изменение файлов
✅ httpie — красивый альтернатив curl
✅ tree — визуализация структуры папок
✅ bat — улучшенный cat с подсветкой
✅ fd — улучшенный find

# Мой скрипт для быстрого старта
#!/bin/bash
# ~/.local/bin/dev-setup
nvm use 20
docker-compose up -d
npm install
npm run migrate
npm run seed
npm run dev

Keyboard и productivity

// Я оптимизирую для быстроты работыVim keybindings везде (VS Code, IDE, браузер)
✅ Alfred (macOS) — быстрый поиск и запуск
✅ Keyboard Maestro (macOS) — автоматизация
✅ Karabiner (macOS) — переконфигурация клавиатуры

// Типичные shortcuts
Cmd+Space — быстрый поиск файла
Ctrl+P — VS Code file search
Ctrl+Shift+P — VS Code command palette
Cmd+K Cmd+X — VS Code format document

Когда я переходу на Linux

Есть несколько причин, по которым я могу полностью перейти на Linux:

1. Когда работаю с Kubernetes cluster
   → Linux native опыт более полезен

2. Когда компания требует Linux
   → Некоторые финсекторные компании требуют Linux

3. Когда нужна максимальная контроль
   → Linux дает полный контроль над системой

# Для Linux переходу я выбрал бы
Ubuntu 22.04 (стандарт для разработки)
или
Fedora (если нужны новые фичи)

Версионирование инструментов

# Я всегда фиксирую версии для reproducibility

Node.js: 20.x.x (LTS)
PostgreSQL: 15 (последний stable)
Redis: 7.x
Nginx: latest stable
Docker: latest

# В коде
package.json
"engines": {
  "node": ">=20.0.0 <21.0.0",
  "npm": ">=10.0.0"
}

.nvmrc
20.10.0

Dockerfile
FROM node:20-alpine

Проверка environment перед началом разработки

#!/bin/bash
# health-check.sh

echo "OS: $(uname -s)"
echo "Node: $(node --version)"
echo "npm: $(npm --version)"
echo "Docker: $(docker --version)"
echo "Git: $(git --version)"
echo "PostgreSQL: $(psql --version)"
echo "Redis: $(redis-cli --version 2>/dev/null || echo 'not installed')"

# Правильно, если всё выдаёт версии
# ошибка, если что-то не установлено

Вывод

Мой выбор ОС основан на:

  • Productivity — macOS позволяет мне работать быстро
  • Consistency — Docker обеспечивает одинаковый окружение везде
  • Linux как production — я знаю обе системы
  • Team compatibility — большинство разработчиков используют macOS или Linux

ОС — это просто инструмент. Главное — знать Linux (потому что production на Linux) и использовать инструменты, которые делают тебя продуктивнее. Не привязываюсь к конкретной OS, могу переехать на другую за неделю, если нужно.

Какую OS используешь? | PrepBro