173 lines
9.6 KiB
Markdown
173 lines
9.6 KiB
Markdown
# Архив сайта 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 (добавлена контейнеризация)
|