Кыргызстандагы биринчи веб-тиркемелер: 2011-жылдын технологиялык тажрыйбасы
2011-жылы биз Бишкекте онлайн-тиркеме жасап баштаганда, эң негизги суроо мындай болчу: сервер кайда жайгашат?
Кыргызстандын өзүндө data-центр жок болчу. VPS хостинг компаниялары жок болчу. Варианттар: Москвадагы сервер (ping 80–120мс), Германиядагы сервер (ping 140–200мс), же Украинадагы (ping 100–150мс). Колдонуучуларыбыз Бишкекте, сервер 5000 километр алыс.
Бул жерде биз жасаган биринчи туура чечим — Москвада хостинг алганыбыз. Ping башка опциялардан эки эсе аз болчу.
PHP жана MySQL: негизги стек
2011-жылы PHP 5.3 жана MySQL 5.1 — стандарт болчу. Framework катары Kодeigniter колдонгонбуз (Laravel 1.0 эми чыга баштаган кез болчу, продакшнга даяр эмес). ORM жок, таза SQL-суроолор.
<?php
// Ошол кезде жазган типичный код
class UserModel {
private $db;
public function __construct() {
$this->db = new CI_DB();
}
public function getUserById($id) {
$query = $this->db->query(
"SELECT id, name, email, created_at
FROM users
WHERE id = ? AND is_active = 1",
array((int)$id)
);
return $query->row();
}
public function getUserPosts($userId, $limit = 10) {
// 2011-жылы JOIN жазуу "чеберчилик" деп эсептелчү
$query = $this->db->query(
"SELECT p.id, p.title, p.created_at, u.name as author
FROM posts p
INNER JOIN users u ON p.user_id = u.id
WHERE p.user_id = ?
ORDER BY p.created_at DESC
LIMIT ?",
array((int)$userId, (int)$limit)
);
return $query->result();
}
}
Кыргызча мазмун — техникалык кыйынчылык
2011-жылда кыргызча текст менен иштөө — өзүнчө маселе болчу.
UTF-8 баары жерде: MySQL tablелерин utf8_general_ci collation менен жасабасаң, кыргыз тамгалары (ң, ү, ө, ж ж.б.) базада ???? болуп сакталчу. Бул мааселени 3–4 жолу башынан кечирдик.
-- Туура конфигурация (2011-жылы унутула берчү)
CREATE TABLE content (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci,
body TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci,
lang ENUM('ky','ru','en') DEFAULT 'ky'
) CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE=InnoDB;
-- MySQL туташуусун дагы орнотуу керек
mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER SET utf8");
Кыргызча менен орусча бирге: платформада эки тил болчу. Content таблицасына lang талаасын кошуп, ар бир мазмун үчүн ар бир тилде жазуу сакталчу. Азыркы i18n frameworks жок болчу — баарын кол менен жасачубуз:
// Тил логикасы — жөнөкөй, бирок иштечү
function getContent($id, $lang = 'ru') {
$content = $this->db->query(
"SELECT * FROM content WHERE id = ? AND lang = ?",
array($id, $lang)
)->row();
// Эгер кыргызча жок болсо, орусча кайтар
if (!$content && $lang === 'ky') {
$content = $this->db->query(
"SELECT * FROM content WHERE id = ? AND lang = 'ru'",
array($id)
)->row();
}
return $content;
}
Жайылтуу: SSH жана FTP
2011-жылы "деплоймент" деген — SSH аркылуу серверге кирүү жана файлдарды өзгөртүү.
# Типичный "деплоймент" процесс
ssh user@server.ru
cd /var/www/myproject
git pull origin main # Git 2010-жылдан баштап колдонгонбуз
php artisan migrate # Же вручную SQL файлды жүктөтчүбүз
service apache2 restart # Же: /etc/init.d/apache2 reload
Эгер бирдеме бузулса — rollback дегени git checkout болчу. Staging environment жок болчу. Баарын продакшнда тестирдик. Ушундай болчу.
Жетишкен нерселер
2011-жылы биз Бишкекте сатуу платформасы деген жасадык. Ошол убакта Кыргызстанда онлайн-соода мүмкүнчүлүгү болгон платформа болгон эмес. Учурдагы стандарттар боюнча техника жөнөкөй, код кемчиликтүү. Бирок ошол учур үчүн бул — реалдуу чечим болчу.
Негизги сабак: технология абсолют мааниде "жакшы" же "жаман" болбойт. Ал ошол убактагы команданын мүмкүнчүлүгүнө, рыноктун шартына жана колдонуучулардын реалдуу муктаждыгына жараша баа берилет.
2011-жылдагы Кыргызстан рыногу үчүн PHP + MySQL + Москвадагы сервер + мобилдик GPRS колдоосу — бул туура архитектура болчу. 2025-жылы ошол эле чечим — туура эмес болор эле. Технология убакыт менен бирге өзгөрөт. Принцип калат: реалдуу колдонуучуну жана реалдуу шартты биринчи орунга кой.
Биз 2011-жылы Бишкекте иштеп чыкканды бүгүн дагы колдонобуз — рыноктун чынчыл баасы катары.