# Архив сайта cad.ru (1998 год)

## ВСЕ о САПР (CAD/CAM/CAE Archive)

Это архивная версия исторического русскоязычного сайта о системах автоматизированного проектирования (САПР), созданного в 1998–1999 годах для "Русской Промышленной Компании" (РПК). Развернуто по адресу: [1998.cadpoint.ru](https://1998.cadpoint.ru/).

**Осторожно:**
- фреймы (frameset) и meta-refresh;
- оптимизировано под разрешение 640х480;
- кодировка KOI8-R (не UTF-8);
- куча "битых ссылок" на внешние ресурсы.

### ⚠️ Важно: Кодировка KOI8-R

Этот архив хранится в кодировке **KOI8-R** (устаревший стандарт для русского текста в интернете конца 90-х).

#### Отображение в Gitea (веб-интерфейс)

Если в веб-интерфейсе Gitea видишь "кракозябры" или иероглифы вместо русского текста — **это не ошибка, файлы хранятся корректно**. Веб-интерфейс Git/Gitea обычно ожидает UTF-8 и не умеет надёжно показывать KOI8-R как есть. Содержимое в репозитории не повреждено.

#### Правильное отображение и работа

##### 1. Локально (клонирование + IDE)

```bash
git clone https://git.cube2.ru/erjemin/1998-cad-cadpoint.git
cd 1998-cad-cadpoint
```

Откройте файлы в IDE **с явным указанием кодировки KOI8-R**:
- **VS Code**: нижняя панель → `UTF-8` → выберите `KOI8-R`
- **JetBrains IDE** (PhpStorm, IntelliJ и т.д.): правый клик → `File Encoding` → `KOI8-R`
- **nano/vim**: `:set encoding=koi8-r` (vim)

`.editorconfig` в репозитории подскажет IDE открыть KOI8-R файлы с правильной кодировкой автоматически.

##### 2. Через nginx (контейнер/веб-сервер)

Сайт отдаётся через nginx с заголовком:
```
Content-Type: text/html; charset=koi8-r
```

Браузер автоматически декодирует текст корректно. Содержимое отображается правильно для конечного пользователя.

### Структура

```
.
├── html/                    # Статические файлы сайта
│   ├── index.htm            # Промежуточная страница с meta-refresh
│   ├── index1.htm           # Главная (frameset)
│   ├── header.htm           # Шапка фреймовой структуры
│   ├── nav.htm              # Навигация (левая панель)
│   ├── main.htm             # Основной контент
│   ├── _b/                  # Графические элементы (GIF)
│   ├── _co/                 # Раздел "Компании"
│   ├── _pr/                 # Раздел "Программные продукты"
│   ├── _ex/                 # Раздел "События и новости"
│   ├── _pb/                 # Раздел "Публикации"
│   ├── _fr/                 # Раздел "Ссылки"
│   ├── _sh/                 # Раздел "Поиск"
│   ├── images/              # Баннеры и логотипы
│   ├── robots.txt           # Инструкции для поисковых роботов
│   └── favicon.*            # Иконки браузера
├── config/
│   └── nginx/
│       ├── cadpoint1998--internal-nginx.conf    # Конфиг внутреннего nginx (в контейнере)
│       └── cadpoint1998--external-nginx.conf    # Конфиг внешнего nginx (на хосте, для reverse-proxy)
├── Dockerfile              # Контейнеризация архива (nginx + HTML + конфиги)
├── docker-compose.yml      # Dev-конфиг (локальное тестирование)
├── docker-compose.prod.yml # Prod-конфиг (продакшен с Watchtower)
├── .gitignore              # Исключение из репозитория
├── .gitattributes          # Правила кодировки и обработки файлов
├── .editorconfig           # Рекомендации для редакторов
├── .env.example            # Пример переменных окружения
└── README.md               # Этот файл
```

### Важные замечания

#### ❌ НЕ делай

- ❌ Не переводи файлы в UTF-8 без планомерного миграционного процесса
- ❌ Не пересохраняй файлы в редакторе без явного указания `Keep KOI8-R`
- ❌ Не игнорируй предупреждения IDE о кодировке

#### ✅ Делай

- ✅ Явно указывай кодировку KOI8-R при открытии файлов
- ✅ Используй `.editorconfig` (IDE будут читать автоматически)
- ✅ Проверяй git diff перед коммитом, чтобы убедиться, что файлы не перекодированы
- ✅ При внесении изменений убеждайся, что IDE сохраняет KOI8-R

### Технический контекст

#### Фреймовая структура (HTML frameset)

Сайт использует устаревший элемент `<frameset>` для разделения layout:
- Левая колонка: `nav.htm` (навигация)
- Верхний блок: `header.htm` (логотип и заголовок)
- Основная область: `main.htm` (контент)

Это типично для веб-дизайна конца 90-х, но не поддерживается современными стандартами. При миграции на современный сайт потребуется переделка HTML-структуры. Тем не менее, браузеры показывают сайт корректно. 

#### Meta-refresh редирект

Главная страница (`index.htm`) использует `meta http-equiv="refresh"` для редиректа на `index1.htm`. Это также устаревший подход.

#### Внешние ресурсы

В коде есть ссылки на старые внешние сервисы (счётчики, баннеры):
- `counter.rambler.ru` (архивная служба рейтингов)
- `mail.ru` (счётчик Mail.ru)
- `ir.ru` (InterReklama, старая рекламная сеть)

Эти сервисы могут быть недоступны или нестабильны. Они не влияют на функциональность сайта при корректной обработке ошибок.

### Дальнейшее развитие

Проект может быть расширен в отдельных ветках:

- **`legacy-1998`** — архивная версия в оригинальном виде (ветка сохранения истории)
- **`main`** — современная версия с контейнеризацией (текущая ветка):
  - ✅ Docker контейнеризация (nginx:alpine)
  - ✅ docker-compose для dev и prod
  - ✅ Watchtower для автоматических обновлений образа
  - ✅ Gitea CI/CD пайплайн (автосборка при тегировании)
  - ✅ Support для SSL/TLS (через certbot)
  - ✅ Reverse-proxy через внешний nginx

## Контейнеризация (2026)

Архив полностью перемещён в Docker контейнер с современной инфраструктурой:

### Что включено

- **Образ**: `git.cube2.ru/erjemin/1998-cad-cadpoint:latest` (nginx:alpine)
- **Содержимое образа**:
  - nginx (web-сервер)
  - Конфиг для внутреннего nginx (с поддержкой KOI8-R)
  - Весь архив HTML сайта (KOI8-R)
  - Конфиг для внешнего nginx (для reverse-proxy на хосте)

### Как запустить

**Development (локально):**
```bash
docker-compose up --build
# Сайт доступен на http://127.0.0.1:8030
```

**Production (на сервере):**
```bash
docker-compose -f docker-compose.prod.yml up -d
# Watchtower автоматически следит за обновлениями образа
# Сайт проксируется через внешний nginx на хосте
```

### Детальная документация

См. [DEPLOYMENT.md](DEPLOYMENT.md) для полной инструкции по развёртыванию на продакшене.

## Контакты и лицензия

Автор: *Sergei Erjemin* (это я)  
Контакт: `erjemin@gmail.com`

Архив сохранён и перенесён в современную инфраструктуру (Docker) в 2026 году.

---
**Последнее обновление:** March 28, 2026 (добавлена контейнеризация)
