Shanraq.org Shanraq.org

Жарияланым мұрағаты

жексенбі, 6 қыркүйек 2026

жексенбі

қыркүйек 2026
дссссрбсжмснжс
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

Түсі айқын күндерде жарияланым бар — соларды басуға болады.

IT

`context`: сұранысты уақытында тоқтату

Go курсының қырық үшінші сабағы. Оқырман қойындыны жапты — өңдеуші мұны өзі біледі: екі жүз миллисекундтан кейін жұмысты тастайтыны өлшенді. Дерекқорға берілген мерзім, жолдың орнына өз типіндегі кілт және кірген адамның сұраныс контекстіне уәде етілген көшуі.

IT

Горутина мен арна: вебке не үшін керек

Go курсының қырық екінші сабағы. Сервер HTTP сабағынан бері конкурентті, әрі мұны сіз таңдаған жоқсыз: әр сұраныс — өз горутинасы. Құлыпсыз санауыш алдымен бес жүзден бір оқылымды жоғалтатыны, сосын бүкіл серверді құлататыны және go test -race мұны алдын ала табатыны өлшенді.

IT

Тест: түзеткенде не сынғанын білу

Go курсының қырық бірінші сабағы. 10-сабақта уәде етілген кесте: жағдайлар тізімге салынады, t.Run әрқайсысына ат береді, ал құлау қай жағдай сынғанын бірден айтады. Оның үстіне өңдеушіні сервер көтермей тексеру және -cover не көрсететіні туралы адал әңгіме.

IT

Сурет жүктеу: дискідегі бөтен файл

Go курсының қырқыншы сабағы. Ішінде файл жүретін форма және файл дискіге жатпай тұрып тексерілетін төрт нәрсе: өлшемі, мазмұны бойынша түрі, жіберілгеннің орнына өз аты және оны қоятын орын. Қоса /static-ты ретке келтіреміз: brand, css, images, js, uploads.

IT

CSRF пен XSS: бәріне қойылатын үш қорғаныс

Go курсының отыз тоғызыншы сабағы. Бетіңіздегі бөтен скрипт және оқырманыңыздың атынан форма жіберетін бөтен сайт. html/template-тің орнына қарай — мәтінде, сілтемеде және script ішінде — қалай экрандайтыны және жетонның сіздің формаңызды бөтеннен қалай ажырататыны өлшенді.

IT

Құқық: кім нені өзгерте алады

Go курсының отыз сегізінші сабағы. Батырманы жасыру — қорғаныс емес: бөтен адам батырманы көрмей тұрып, тікелей сұраныспен мақалаңызды қалай түзететіні өлшенді. Тексеру өңдеушіде әрі бір жерде тұрады, ал бас тартулар әртүрлі: қонақты кіруге, бөтенге 403, жоғына 404.

IT

Сессия мен cookie: сервер кімнің кіргенін қалай есте сақтайды

Go курсының отыз жетінші сабағы. HTTP ештеңе есте сақтамайды: әр сұраныс бейтаныс адамнан келеді. Пайдаланушы нөмірі жазылған cookie бір секундта қолдан жасалады. Сондықтан браузерге кездейсоқ токен, дерекқорға оның хеші кетеді, ал бәрін үш сөз жабады: HttpOnly, Secure, SameSite.

IT

Тіркелу: құпиясөздің орнына не сақтайды

Go курсының отыз алтыншы сабағы. Құпиясөз дерекқорда сақталмайды — тұзы ішінде, құны сыртында тұрған bcrypt хеші сақталады. Өлшенді: sha256 секундына тоғыз миллион хеш береді, bcrypt оны. Оның үстіне 72 байт шегі, оған қазақ құпиясөзі отыз жетінші әріпте-ақ тіреледі.

IT

Макет: барлық бетке бір жақтау

Go курсының отыз бесінші сабағы. Блогтың жеті үлгісі беттің бір басталуының жеті көшірмесін ұстап отыр. Бүгін бір жақтау қалады: блоктары бар base, pages пен partials қалталары, семантикалық белгілеу — әрі өлшенген тұзақ, соның кесірінен адамдарда барлық бет кенет біреуін көрсетеді.

IT

Іздеу: FTS5 және параметр неден құтқармайды

Go курсының отыз төртінші сабағы. Блогта жұмыс істейтін іздеу: FTS5 виртуалды кестесі, үш триггер, реттеу және табылғанды бояу. Әрі өлшенген тосын жайт: параметр инъекциядан қорғайды, бірақ адам іздеу жолағына OR деп терсе — қорғамайды.

IT

Тег: беттен көрінбейтін үшінші кесте

Go курсының отыз үшінші сабағы. Мақалада тег көп, тегте мақала көп — әрі бұл бағандағы тізім емес, бөлек кесте болып сақталады. Құрама кілт, id үшін on conflict, өшіргендегі каскад. Әрі уәде етілген нәрсе: қатенің мәтінін оқымай, кодын сұрау жолы.

IT

Транзакция және SQL-инъекция: сұраныс — жабыстырылатын жол емес

Go курсының отыз екінші сабағы. Дерекқорды бүтін ұстайтын екі ереже. Дерек сұраныс мәтініне жабыстырылмайды: қолдан жасалған мекенжай бір емес, үш жол қайтарады, ал параметр арқылы — нөл. Бірге болуға тиіс нәрсе транзакцияға оралады: онсыз санауыш болмаған көшу үшін өсіп кеткен.

IT

Көші-қон: дерекқор тарихы, `create table if not exists` емес

Go курсының отыз бірінші сабағы. Схеманы енді бағдарлама қосылғанда жасамайды: нөмірленген көші-қон файлдары, журнал және «бір рет» ережесі пайда болады. Оның үстіне өлшенген тұзақ: default-сыз not null бағанын бос дерекқор қабылдайды, жұмыстағысы қабылдамайды.

IT

CRUD: мақала үстіндегі төрт әрекет және тілімсіз өмір

Go курсының отызыншы сабағы. Мақалалар тілімнен дерекқорға көшеді әрі қайта қосудан аман қалады. Дерекқорды қалған кодтан жасыратын Store типі, мақала үстіндегі төрт әрекет және бөлімге тұрарлық бір нәрсе: жоқ нәрсені жаңарту — қате емес, оны тек RowsAffected айтады.

IT

SQL: екі кесте, JOIN және сыртқы кілттер

Go курсының жиырма сегізінші сабағы. Мақалаға пікірлер келеді, ал олар оның ішіне сыймайды. Екінші кесте және олардың арасындағы кілт, join мен left join, каскадты өшіру және сыртқы кілттерді үнсіз қалдырып, жолдарды жетім ететін SQLite тұзағы.

IT

SQL: алғашқы кесте, INSERT және SELECT

Go курсының жиырма жетінші сабағы. Мақалалар ақыры қайта қосудан аман қалады. Курста неге Postgres емес, SQLite, кестені қалай жасап, оған жолды қалай салу керек: RETURNING-пен insert, WHERE мен ORDER BY-мен select, WHERE ұмытылған update және = null мен is null айырмасы.

IT

SQLite және database/sql: тілімнен емес, дерекқордан алынған алғашқы жол

Go курсының жиырма тоғызыншы сабағы. Блог ақыры мақалаларды дерекқор файлынан оқиды. Пакет пен драйвер, sql.Open неге ештеңе ашпайды, қосылымдар пулы деген не және сыртқы кілттер туралы прагманы неге бөлек сұраныс емес, қосылу жолына жазады. Сонымен қатар ErrNoRows және циклден кейінгі тексеру.

IT

Go-дағы баптау: флагтар, орта айнымалылары және кодтан тыс құпия сөз

Go курсының жиырма алтыншы сабағы. Мекенжай, дерекқор файлы және қолтаңба кілті кодтан кетеді. flag пакеті мен -h беретін анықтама, орта айнымалысын флагтың әдепкі мәні ету, бос айнымалының берілмегеннен несімен өзгешелігі және міндетті баптау болмаса неге іске қосылғанда құлау керек.