четвер, 12 лютого 2009 р.

Відмова диска й відновлення сервера: уроки резервного копіювання

Через відмову жорсткого диска було втрачено робочі бази даних, конфігурацію та операційну систему сервера. Диск замінили, систему встановили заново, а дані відновили з доступного повного архіву початку листопада.

Уточнення хронології: у первісному тексті подію датовано 18 грудня 2009 року, тоді як збережена дата публікації — 12 лютого 2009 року. Ці дати суперечать одна одній; достатніх відомостей, щоб виправити рік або місяць події, немає.

Які копії були доступні

Після збою для баз даних і конфігурацій налаштували щомісячні, щотижневі та щоденні копії на другому диску — три рівні збереження. Водночас створення повного архіву всієї інформації тривало кілька днів і було перервано. Отже, запуск резервного копіювання ще не означав, що придатна повна копія вже існує.

Що планувалося змінити

Після збою я планував посилити адміністрування власного хостингу та резервування, створити власну адміністративну панель і додаткові сервіси керування хостингом. Клієнтам планувалося надати авторизований доступ до останніх резервних копій. Також розглядалася можливість використовувати «Корпорація 2» для створення сайтів. Це були плани, а не підтвердження їхнього виконання.

Практичний висновок: слід перевіряти завершення копіювання й можливість відновлення. Другий диск у тому самому сервері не відокремлює копію від усіх ризиків цього сервера. У рекомендаціях CISA окремо йдеться про автономні зашифровані копії та регулярне тестування відновлення.

Безкоштовний хостинг: архівна добірка 2009 року

У лютому 2009 року для одного проєкту знадобилося розмістити інформацію на сторонньому сервері. Я почав шукати безкоштовний хостинг і виявив, що таких служб чимало. Зібрав їхні адреси й характеристики в одному переліку.

Обсяги, технології, географічні й тематичні обмеження в цій добірці стосуються 2009 року. Чинні умови потрібно перевіряти у конкретного постачальника.

Хостинги, зазначені у 2009 році

  • sevhosting.net - 35 МБ, PHP, база MySQL
  • eomy.net - 300 МБ, PHP, бази MySQL
  • alfaspace.net - 100 МБ, PHP, база MySQL
  • i7i.ru - 1gb МБ (неоднозначне позначення в оригіналі), необмежений трафік
  • holm.ru - без обмеження обсягу, SSI, Perl, PHP4, MySQL, FTP-доступ
  • na.by - 128 МБ, PHP5, база MySQL, FTP-доступ
  • np.by - 100 МБ
  • ho.od.ua - обсяг узгоджується заздалегідь, PHP, CGI, база MySQL, FTP-доступ
  • webservis.ru - 100 МБ, PHP, CGI, база MySQL, FTP-доступ
  • hostland.su - 80 МБ, PHP, CGI, база MySQL (20МБ для самої бази), FTP-доступ
  • sbn.bz - 60 МБ + шаблонний конструктор сайтів
  • mirahost.ru - обсяг узгоджується заздалегідь, PHP, CGI, база MySQL, FTP-доступ + безкоштовний пакет просування сайту
  • dama-pik.ru - від 5 МБ і більше (широкий вибір тарифних планів), PHP, CGI, база MySQL, FTP-доступ
  • ho.com.ua - 32 МБ, PHP, CGI, база MySQL, FTP-доступ
  • househost.ru - 100 МБ, PHP, Perl, база MySQL, FTP-доступ
  • by.ru - необмежений простір, SSI, FTP-доступ, прив’язка до домену
  • hut.ru - необмежений простір, PHP, база MySQL, FTP-доступ, доступ до файла .htaccess
  • page.by - 10 МБ, HTML
  • hosting.mk.ua - 10 МБ, HTML
  • eeden.biz - 1 gb, конструктор сайтів, блог, форум, опитування
  • hotbox.ru - 100 МБ + скринька, форум, опитування, HTML, SSI
  • narod.yandex.ru - необмежений простір, готові варіанти дизайну, лічильники, гостьова книга, форум, чат, FTP-доступ
  • jino-net.ru - 70 МБ, PHP5, база MySQL (20 МБ), FTP-доступ
  • hobby.ru - 20 МБ, CGI, FTP-доступ
  • ruhost.biz - від 30 МБ, PHP, CGI, база MySQL, FTP-доступ
  • ucoz.ru - від 100 МБ (до 2000 МБ), FTP-доступ, резервне копіювання даних, конструктор сайту та система модулів
  • miraclehost.ru - 100 МБ, FTP-доступ, PHP, CGI, SSI, база MySQL, 10 поштових скриньок
  • boom.ru - 50 МБ, FTP-доступ, поштова скринька, HTML
  • su74.ru - 5 МБ, FTP-доступ, поштова скринька, конструктор сайтів, модулі "магазин" і "зворотний зв’язок"
  • noka.ru - 50 МБ, FTP-доступ, PHP, CGI, SSI, база MySQL, необмежена кількість поштових скриньок (лише для освітніх проєктів)
  • hosting.webrise.ru - до 200 МБ, FTP-доступ, PHP, CGI, SSI, база MySQL, необмежена кількість поштових скриньок, інтерфейс PhpMyAdmin
  • yard.ru - 50 МБ, безкоштовний домен третього рівня, FTP-доступ, PHP, CGI, SSI, база MySQL, 5 поштових скриньок по 50 МБ, .htaccess .htpasswd
  • nextmail.ru - 200 МБ для сайту або сховища файлів + поштова скринька
  • orthodoxy.ru - від 75 МБ, безкоштовний домен третього рівня, FTP-доступ, PHP, CGI, SSI, база MySQL (лише для православних сайтів)
  • ru-web.net - 30МБ, трафік - 500МБ, одна скринька WebMail, FTP-доступ, PHP
  • bestof.ru - будь-який справді потрібний обсяг, FTP-доступ, MySQL, PHP, HTML + SSI тощо (Ресурс мав бути повністю готовим, а не лише ідеєю)
  • addr.ru - 50 МБ, FTP-доступ, MySQL, PHP, поштова скринька, підтримка доменів другого рівня.
  • pesni.ru - необмежений простір (для музикантів і виконавців), FTP-доступ, CGI, HTML, SSI, поштова скринька.
  • free.dl-hosting.ru - будь-який справді потрібний обсяг, FTP-доступ, MySQL, PHP, HTML + SSI.
  • hostow.net - 40 МБ, трафік 1,5 ГБ, FTP-доступ, MySQL (5), PHP, HTML, SSI, 10 поштових облікових записів.
  • paltus.ru - 300 МБ, трафік 10 Гб, FTP-доступ, MySQL (10 МБ), PHP, HTML, SSI, 10 поштових облікових записів.
  • phpmysql.ru - від 10 МБ, FTP-доступ, MySQL, PHP, HTML, SSI.
  • orgfree.com - від 250 МБ, FTP-доступ, MySQL (5), PHP, HTML, SSI.
  • moshost.com - 25 - 5000 МБ, FTP-доступ, MySQL (2), PHP, HTML, SSI.
  • host.sk - 50 МБ, FTP-доступ, MySQL, PHP, HTML, SSI.
  • awardspace.com - 200 МБ, трафік 2 ГБ, два домени, два піддомени, FTP-доступ, MySQL (10 МБ), PHP, HTML, SSI, 5 поштових облікових записів.
  • internethost.ru - 50 МБ, FTP-доступ, MySQL, PHP, HTML, SSI, 5 поштових облікових записів.
  • city.tomsk.net - 5 МБ, FTP-доступ, HTML.
  • okis.ru - 100 МБ, FTP-доступ, MySQL, PHP, HTML, SSI, Cron, .htaccess.
  • ru-hosting.info - від 30 МБ, FTP-доступ, MySQL, PHP, HTML, SSI, піддомени, .htaccess.
  • iplot.ru - 50 МБ, FTP-доступ, MySQL, PHP, HTML, SSI, Perl, Python.
  • kubcom.ru - 20 МБ, FTP-доступ, MySQL, PHP, HTML, SSI.
  • gomelhosting.com - 50 МБ, FTP-доступ, MySQL, PHP, HTML, SSI, PERL, 10 поштових скриньок (лише для сайтів із Гомеля або присвячених цьому місту).
  • intobservatory.ru - від 200 МБ, FTP-доступ, MySQL, PHP, HTML, SSI, PERL, + безкоштовний домен.
  • host-expert.com - від 50 МБ, FTP-доступ, MySQL (2), PHP, HTML, SSI, PERL.
  • ayola.net - від 200 МБ, FTP-доступ, MySQL, підтримка PHP 5 і GDLib, HTML, SSI, PERL.

Як читати старі характеристики

У переліку збережено позначення кількості баз MySQL, поштових скриньок і місця для баз даних там, де вони були вказані. Запис «1gb МБ» для i7i.ru неоднозначний, тому його не перетворено на нібито точний обсяг. Тодішнє «безлімітно» також не описує всіх можливих обмежень сервісу.

Згадки PHP 4 і PHP 5 показують вік добірки. Для нового проєкту звіряйте доступну версію з офіційним переліком підтримуваних версій PHP.

Перед вибором хостингу перевірте підтримувані технології, ліміти ресурсів і трафіку, HTTPS, резервні копії та можливість експорту даних. Ця історична добірка допомагає згадати ринок 2009 року; поточне рішення варто приймати за чинною документацією конкретного постачальника.

Розцінки на 3D-візуалізацію й анімацію: архівна таблиця 2009 року

Для цікавості зібрав розцінки на 3D-роботи, які опублікував у блозі в лютому 2009 року. У нотатці посилався на http://render.ru/books/show_book.php?book_id=520.

Таблиця розцінок із нотатки 2009 року

Поруч із сумою в доларах важливо читати одиницю розрахунку: квадратний метр, окремий об’єкт, зображення, секунду анімації чи робочий час. Це різні способи оцінки обсягу роботи.

Робота Ціна, дол. США Одиниця Примітка
Дизайн-проєкт житлового інтер’єру 10–40 м² Підбір і візуалізація типових меблів та рекомендації
Дизайн-проєкт громадського інтер’єру 4–20 м² Із типовими меблями
Креслення в AutoCAD ≈50 шт.
Супровід проєкту 300–500 послуга
Моделювання й візуалізація готового дизайн-проєкту 40–80 зображення Також наведено ≈40 за робочий день
Візуалізація невеликих громадських споруд ≈150 набір зображень
Будівлі середньої складності 300–500 набір зображень Приватний будинок, промислова або торговельна споруда
Будівлі підвищеної складності 800–1000 набір зображень Елітні приватні будинки, висотні будівлі
Житлові, торговельні чи промислові комплекси зі складним оточенням ≈1500 набір зображень
3D-об’єкти для реклами 30–50 об’єкт Також 40–80 за зображення
Low-poly моделювання для ігор 50–70 робочий день
Hi-poly персонаж за ескізами 1000–2000 шт. Із налаштуванням, текстурами та ригом
Лише Hi-poly модель за ескізами ≈500 шт.
Рекламна анімація 30–70 секунда
Персонажна анімація 100–500 секунда
Робота аніматора 10–20 робоча година

Від чого залежить обсяг 3D-робіт

Для нового замовлення вартість потрібно розраховувати за складністю сцени, кількістю ракурсів, деталізацією, вихідними матеріалами, вимогами до анімації та обсягом правок.

Финансы по Украински

Нацбанк объявлил ограничение на досрочное изъятие вкладов: "Банки обязаны выполнять свои обязательства по всем типам договоров по привлечению ресурсов в любой валюте только в случае наступления срока окончания обязательств" (п. 2.5). То есть возможность снять деньги, по сути, осталась только у тех, чей срок окончания вклада подошел к концу, а также у владельцев текущих и карточных счетов, бессрочных "гибких" депозитов.

Казалось бы должна была бы быть возможность снятия денег, если они на накопительном счёте или карточном счёте, но... Фактические банки заморозили все накопительные и депозитные счета, не зависимо от того, есть срок у депозита или это "гибкий" депозит. Так, например, банк Надра уже неделю назад заблокировал возможность перечисления денег с накопительного счёта на текущий и возможность снятия их с карточки. Объясняя, что это из-за постановления НБУ...

Так же есть статья на подобную тематику: http://news.finance.ua/ru/~/2/0/all/2008/10/20/140653

MySQL у тестовому проєкті: перелік версій, модулів та утиліт

Оскільки основною тестовою базою даних у нашому проєкті була MySQL, я зібрав потрібні дистрибутиви, модулі Perl та допоміжні утиліти в одному списку. У публікації 2009 року поруч опинилися пакети кількох поколінь — від MySQL 3.23 до експериментальної 6.0.

Дистрибутиви

Назви файлів і розміри збережено з первісної нотатки. Архіви ZIP були зазначені як Windows-версії, TAR.GZ — як UNIX-версії. Початковий перелік Windows 95/98/NT/2000/XP/2003 не слід вважати перевіреною матрицею сумісності кожного випуску.

MySQL 6.0.6 — Alpha

mysql-6.0.6-alpha-win32.zip (63.2M)
mysql-6.0.6-alpha.tar.gz (27.5M)

MySQL 5.1.28 — пакет Release Candidate

mysql-5.1.28-rc-win32.zip (82.3M)
mysql-5.1.28-rc.tar.gz (26.7M)

MySQL 5.0.67 — позначка «Recommended» у моєму переліку

mysql-5.0.67-win32.zip (45.3M)
mysql-5.0.67.tar.gz (27.1M)

MySQL 4.1.22 — попередня гілка GA в переліку

mysql-4.1.22-win32.zip (41.3M)
mysql-4.1.22.tar.gz (16.9M)

MySQL 3.23 — старі виробничі випуски

mysql-3.23.58-win.zip (12.8M)
mysql-3.23.58.tar.gz (11.5M)

Позначка Release Candidate вище належить конкретному пакету 5.1.28, а не всій гілці MySQL 5.1 станом на лютий 2009 року. За документацією MySQL 5.1, випуск 5.1.30 отримав статус General Availability 14 листопада 2008 року. Тому стару позначку «Recommended» біля 5.0 не варто використовувати для визначення актуальної на той час гілки.

Модулі Perl

  • DBI-1.18 — старий варіант Perl DBI; DBI-1.50 у переліку вимагав Perl 5.006.
  • DBD-mysql-2.9007 — старий варіант; також наведено DBD-mysql-3.0002_4.tar.gz.
  • Net-MySQL-0.08 — реалізація інтерфейсу мережевого протоколу MySQL мовою Perl.
  • Msql-Mysql-modules-1.2219 — модуль DBD для доступу до mSQL і MySQL.
  • Data-Dumper-2.101 — Data::Dumper, згаданий для старих інсталяцій Perl з DBI/DBD.
  • Data-ShowTable-3.3 — допоміжний модуль для подання таблиць із DBI/DBD.

Інші програми й архіви

  • mysql_snap10_rus.exe, mysql_snap10_eng.exe — MySQL Snap, російський та англійський варіанти; у нотатці описано створення копій і перенесення баз між серверами.
  • mysqlgui-win32-static-1.7.5-2.zip — MySQLGUI для Windows; mycc-0.8.4-win32.zip — MySQL Control Center.
  • mod_auth_mysql-2.20.tar.gz — модуль автентифікації для Apache.
  • phpMyAdmin-2.7.0-pl2.tar.gz, phpMyAdmin-2.7.0-pl2.zip — пакети phpMyAdmin.
  • MySqlODBC.zip — архів драйвера ODBC для MySQL.
  • dbf2mysql.zip — утиліта Win32 для перенесення даних із файлів FoxPro DBF до MySQL.
  • dbexport.zip — описаний у джерелі засіб імпорту й експорту MS Access–MySQL через API без ODBC, з відкритим кодом.
  • myaccess2000_1_3.zip, myaccess97_1_3.zip, excel2mysql.zip, DelphiMySQL.zip — інші архіви з початкового списку.

Де вибрати дистрибутив для встановлення

Наведені вище назви допомагають розібратися зі старою конфігурацією проєкту. Для нового встановлення вибирайте версію й операційну систему в офіційному розділі MySQL Community Server та перевіряйте вимоги саме цього випуску: пакети зі списку 2009 року до сучасної конфігурації не належать.

«Корпорація» 2.0.0.27: заплановані інструменти розробки

У лютому 2009 року для нової версії «Корпорації» 2.0.0.27 планували додати три інструменти:

  • інтегроване середовище розробки застосунків — IDE;
  • запис макросів;
  • дизайнер діаграм.

Linux: власник, група та права каталогу вебпроєкту

Довго я налаштовував права файлів і каталогів через Midnight Commander: запускав пошук у всьому проєкті, виділяв знайдені об’єкти, призначав власника й групу, а потім знову виділяв їх для зміни прав доступу. На великому проєкті це займало багато часу.

Рекурсивні команди дають змогу обробити дерево каталогу без такого ручного повторення. У своїй нотатці 2009 року я навів приклад для каталогу web та користувача й групи www-data:

chown -R www-data web
chgrp -R www-data web
chmod -R g+rws web

Що змінює цей приклад

  • chown -R www-data web рекурсивно змінює власника каталогу web і його вмісту.
  • chgrp -R www-data web рекурсивно змінює групу.
  • У chmod -R g+rws web літера g означає групу, r і w додають читання та запис, а s задає спеціальний біт setgid. Це не те саме, що звичайне право виконання x.

На каталогах setgid у типових системах допомагає успадковувати групу новими об'єктами. Рекурсивна команда, однак, застосовує зміну також до файлів; її не слід механічно переносити на будь-який вебпроєкт.

Чому права потрібно добирати для конкретного проєкту

Надання вебсерверу запису до всього дерева коду може бути зайвим. Спочатку визначте потрібного власника й групу, окремо перевірте каталоги завантажень, кешу та інші місця, де застосунок справді має записувати дані. Наведений фрагмент — пояснення старої конфігурації, а не універсальний шаблон прав.

Довідка GNU: chown, chgrp, chmod, спеціальні біти каталогів.

Зміна адміністративного доступу до сервера: повідомлення 2009 року

12 лютого 2009 року я повідомив користувачам нашого сервера про зміни, зроблені для підвищення його безпеки: адміністративні права при підключенні через SSH2 було скасовано, а пароль адміністратора бази даних MySQL — змінено.

Куди звертатися, якщо сайт або підключення не працювали

Якщо після цих змін не працював сайт або не вдавалося підключитися до бази даних, я просив звертатися безпосередньо до власника сервера — тобто до мене :) Тоді для цього була вказана адреса rs@rsa.ms.

З актуальних питань K2 можна написати у WhatsApp: +380679016322.

Основні команди SVN: робоча копія, зміни та імпорт

Із Subversion можна працювати через графічний клієнт або командний рядок. Коли підключаєшся до сервера через SSH у PuTTY чи іншому терміналі, робота відбувається саме командами. Тому я зібрав основні операції SVN в одну пам’ятку: від створення репозиторію до надсилання змін.

У початковій нотатці джерелом частини прикладів зазначено ibm.com без адреси конкретної сторінки. Пояснення команд нижче звірено з документацією Subversion.

Створення репозиторію й робочої копії

# Створити репозиторій на диску
svnadmin create /home/user/new_repository

# Отримати робочу копію у каталог new_repository
svn checkout file:///server/svn/existing_repository new_repository

У другому прикладі file:///server/... — локальний шлях, що починається з /server, а не ім'я віддаленого SSH-сервера. checkout створює робочу копію; для отримання наступних змін у наявній копії використовується update.

Щоденна робота

# Оновити робочу копію
svn update

# Запланувати додавання файла або підкаталогу
svn add <file subdirectory="">

# Переглянути локальні зміни
svn diff

# Перейменувати об'єкт
svn rename <old_file> <new_file>

# Запланувати видалення
svn delete <file subdirectory="">

# Надіслати підготовлені зміни до репозиторію
svn commit

Позначення в кутових дужках — заповнювачі з оригіналу: замініть їх реальними шляхами, не вводьте буквально. Операції над шляхами робочої копії завершуються передаванням змін через commit. Операції безпосередньо над URL можуть мати іншу поведінку.

Архівні приклади підключення

svn checkout file://localhost/mnt/d/svn_repository/corp2 --username ИмяПользователя --password Пароль
svn checkout svn+ssh://localhost/mnt/d/svn_repository/corp2 --username ИмяПользователя --password Пароль

Ці два рядки збережено для повноти старої публікації, але їхні початкові пояснення були неточними. localhost означає ту саму машину. Для svn+ssh автентифікацію виконує SSH, тому параметри пароля Subversion не слід сприймати як налаштування пароля SSH. Реальні паролі не варто вставляти в такі командні рядки.

Початковий імпорт

svn import mytree file:///usr/local/svn/newrepos/some/project -m "Initial import"

import переносить незаверсійоване дерево до репозиторію та одразу створює ревізію. Початковий каталог при цьому не стає робочою копією: для подальшої версійної роботи потрібен окремий checkout.

Джерела: основний цикл роботи, імпорт, доступ через SSH. Це документація для Subversion 1.7; для іншої версії звіряйте її власну довідку.

SVN-репозиторії «Корпорації»: адреси й доступ через SSH

Для отримання вихідних текстів «Корпорації 2» та спільної роботи над іншими нашими проєктами використовувався Subversion (SVN). У нотатці 2009 року я навів чотири адреси репозиторіїв.

Якому проєкту відповідає кожна адреса

  • corp2 — система «Корпорація 2».
  • corp1 — система «Корпорація 1».
  • corp_web — «Корпорація 2 CMS», вебчастина «Корпорації 2».
  • rs_sites — наші корпоративні сайти.
svn+ssh://corp2.net/mnt/d/svn_repository/corp2
svn+ssh://corp2.net/mnt/d/svn_repository/corp1
svn+ssh://corp2.net/mnt/d/svn_repository/corp_web
svn+ssh://corp2.net/mnt/d/svn_repository/rs_sites

Чому в адресі вказано svn+ssh

Таке підключення передає протокол Subversion через зашифрований SSH-тунель. Автентифікацію виконує SSH, а на сервері для роботи з репозиторієм запускається svnserve у тунельному режимі. Механізм описано в розділі svnserve книги Version Control with Subversion.

Це пояснює спосіб підключення, але саме існування адреси не надає прав на вихідні тексти. Для використання потрібні чинний доступ до сервера та дозволи на відповідний репозиторій.

Клієнт SVN у Windows

Для роботи я вказував TortoiseSVN: цей клієнт інтегрується в оболонку Windows і дає змогу працювати з SVN через Провідник. Чотири адреси вище відтворюють структуру наших репозиторіїв на час написання нотатки; актуальну адресу потрібного проєкту слід брати в його адміністратора.

SVN на сервері titanr: початок обліку змін вихідного коду

У лютому 2009 року нам удалося встановити й налаштувати систему керування версіями SVN на сервері titanr.

Після цього планували контролювати зміни всіх вихідних текстів програмними засобами — вести роботу з кодом через систему керування версіями.

Калькулятор K2: від запитання про ціну до готової комерційної пропозиції

«А скільки коштуватиме інша комплектація?» — природне запитання покупця. Якщо для відповіді менеджер щоразу відкриває таблицю, шукає коефіці...