Mundarija (27)
- Bu darsda
- 1. Nega bu kerak?
- 2. Hamma fayl — baytlar
- 3. Matnli fayllar
- 3.1 Matnli fayl ichiga qaraymiz
- 4. Binar fayllar
- 5. Kengaytma — faqat nomning bir qismi
- 5.1 Yashirin kengaytma tuzog'i
- 6. Sehrli raqam — faylning "pasporti"
- 7. Baytlarni o'z ko'zingiz bilan ko'rish
- 7.1 xxd (Git Bash, Linux, macOS)
- 7.2 Format-Hex (PowerShell)
- 7.3 VS Code'da
- 8. file buyrug'i — turni o'zi aniqlaydi
- 9. MIME turi — internetdagi fayl yorlig'i
- 10. Hujumchi nigohi
- 11. Ko'p uchraydigan xatolar
- 11.1 Qayta nomlab, formatni o'zgartirdim deb o'ylash
- 11.2 hisobot.txt.txt
- 11.3 Binar faylni matn muharririda saqlash
- 11.4 Binar faylni cat bilan chiqarish
- 12. Mashqlar
- 1-mashq (oson): Baytlarni sanash
- 2-mashq (o'rta): Niqobni ochish
- 3-mashq (qiyin): Qaysi biri xavfli?
- 13. Real ishda
- Xulosa
Matnli va binar fayllar: kengaytma, sehrli raqam va MIME turi
Qisqacha: Har qanday fayl — baytlar ketma-ketligi. Baytlari harflarni bildirsa (masalan, UTF-8 da) — bu matnli fayl, uni istalgan muharrir ochadi. Qolganlari — binar fayllar: rasm, video, arxiv, dastur; ularni faqat maxsus dastur tushunadi. Kengaytma (
.png,.txt) — nomning bir qismi, xolos. Faylning haqiqiy turini uning birinchi baytlari — "sehrli raqam" — ko'rsatadi. Bunixxdvafilebuyruqlari bilan tekshirasiz.
Bu darsda
- Matnli va binar fayl farqini tushuntira olasiz va har biriga misol keltirasiz.
- Kengaytmani o'zgartirish faylni nega boshqa formatga aylantirmasligini bilasiz.
- "Sehrli raqam" (magic number) nima ekanini va eng mashhur formatlarning imzolarini taniysiz.
xxd,Format-Hexvafilebilan faylning ichini va haqiqiy turini tekshira olasiz.- MIME turi nima ekanini va u internetda nega kerakligini bilasiz.
Oldin bilishingiz kerak: O'n oltilik sanoq sistemasi, Matn kodlash: ASCII, Unicode va UTF-8, Fayl tizimi, Qator oxiri (CRLF/LF).
1. Nega bu kerak?
Ikki vaziyatni tasavvur qiling.
Birinchisi. Telegram'da noma'lum odam hisobot.pdf faylini yubordi. Ochsangiz — hujjat emas, dastur ishga tushadi. Aslida faylning to'liq nomi hisobot.pdf.exe edi. Windows esa kengaytmani yashirgan.
Ikkinchisi. Do'stingiz "rasmni .txt qilib yubor, Telegram siqib yubormasin" dedi. Siz rasm.png ni rasm.txt deb qayta nomladingiz. Do'stingiz faylni Bloknotda ochdi — ekranda tushunarsiz belgilar. Rasm matnga aylanmadi.
Ikkala holatda ham bitta haqiqat bor: fayl nomi faylning ichini o'zgartirmaydi. Dasturchi uchun bu juda muhim. Keyinchalik saytingizga foydalanuvchilar fayl yuklaydi. Kimdir zararli dasturni rasm.jpg deb nomlab yuborishi mumkin. Faylning haqiqiy turini tekshira bilish — himoyaning birinchi qadami.
2. Hamma fayl — baytlar
Ikkilik sanoq darsida bayt nima ekanini ko'rgan edik: 8 bitdan iborat, 0 dan 255 gacha son. Diskdagi har qanday fayl — rasm ham, musiqa ham, matn ham — shunday sonlar ketma-ketligi.
Farq baytlarda emas, ularni qanday o'qishda. Masalan, beshta bayt: 53 61 6C 6F 6D (o'n oltilik ko'rinishda — sanoq sistemasi darsidagi kabi).
- Matn sifatida o'qilsa, UTF-8 jadvali bo'yicha:
S,a,l,o,m— "Salom". - Rasm sifatida o'qilsa: beshta piksel rangining qiymatlari.
- Protsessor buyrug'i sifatida o'qilsa: qandaydir mashina buyruqlari.
O'xshatish: nota daftari. Musiqachi undagi belgilarni ko'rib, kuyni chaladi. Musiqa bilmagan odam esa faqat chiziq va nuqtalarni ko'radi. Belgilar bir xil — ularni kim va qanday "o'qishi" farq qiladi.
Tekshirib ko'ring:
41 6C 69baytlarini UTF-8 matn sifatida o'qing. (Ishora: ASCII jadvalida41—A,6C—l,69—i.)
Javob
Ali. Har bayt bitta harf: 41 → A, 6C → l, 69 → i. Lotin harflari ASCII'da ham, UTF-8'da ham bir xil kodlanadi — har biri bitta bayt.
3. Matnli fayllar
Matnli fayl (text file) — barcha baytlari biror kodlash jadvalidagi belgilarni bildiradigan fayl. Bugun bu jadval deyarli doim UTF-8. Bunday faylda harflar, raqamlar, tinish belgilari, bo'sh joy, tab va qator oxiri belgilari bo'ladi.
Misollar: .txt, .html, .css, .js, .json, .csv, .md, .sh, .svg.
Matnli faylni istalgan oddiy matn muharriri ochadi va o'zgartira oladi: Bloknot (Notepad), VS Code, nano. Dasturchining deyarli barcha ishi — mana shunday fayllar bilan. Kod ham, sozlamalar ham matn.
3.1 Matnli fayl ichiga qaraymiz
Terminalda kichik fayl yaratamiz va uning baytlarini ko'ramiz. Buning uchun xxd buyrug'i bor — u Git Bash, Linux va macOS'da tayyor turadi:
echo "Salom" > salom.txt
xxd salom.txtNatija:
00000000: 5361 6c6f 6d0a Salom.Bu qatorni uch qismga bo'lamiz:
00000000:— siljish (offset), ya'ni shu qatordagi birinchi bayt fayl boshidan nechanchi o'rinda turibdi (o'n oltilik sanoqda). Bizda — 0, ya'ni eng boshi.5361 6c6f 6d0a— baytlarning o'zi, o'n oltilik ko'rinishda, qulaylik uchun ikkitadan guruhlangan:53,61,6c,6f,6d,0a.Salom.— o'sha baytlar matn sifatida. Harf bo'lmagan bayt nuqta (.) bilan ko'rsatiladi.
Oxirgi 0a qayerdan chiqdi? Biz faqat 5 ta harf yozgan edik. echo qator oxiriga Enter belgisini — LF (0a) ni qo'shadi. Uni CRLF darsida ko'rgan edik. Demak, fayl 6 bayt.
Tekshirib ko'ring: Xuddi shu
Salomso'zi Windows'da CRLF bilan saqlansa,xxdnatijasining oxiri qanday bo'ladi va fayl necha bayt?
Javob
Oxiri 6d0d 0a bo'ladi: m harfidan keyin 0d (CR) va 0a (LF). Fayl 7 bayt. CRLF — ikki bayt, LF — bitta.
4. Binar fayllar
Binar fayl (binary file) — baytlari harf emas, boshqa narsani bildiradigan fayl: piksel ranglari, ovoz to'lqini, siqilgan ma'lumot yoki protsessor buyruqlari.
Misollar: rasmlar (.png, .jpg), audio va video (.mp3, .mp4), arxivlar (.zip), dasturlar (.exe), shriftlar, PDF, Word va Excel hujjatlari.
Binar faylni Bloknotda ochsangiz, muharrir har baytni harf deb ko'rsatishga urinadi. Natijada ekranda tushunarsiz belgilar chiqadi. Faylni to'g'ri "o'qiy" oladigan dastur kerak: rasm uchun rasm ko'ruvchi, arxiv uchun arxivator.
| Xususiyat | Matnli fayl | Binar fayl |
|---|---|---|
| Baytlar nimani bildiradi | Harf va belgilarni | Formatga qarab: piksel, ovoz, buyruq |
| Qanday ochiladi | Istalgan matn muharriri | Formatiga mos maxsus dastur |
| Muharrirda ko'rinishi | Toza matn | Tushunarsiz belgilar |
| Misollar | .txt, .html, .json |
.png, .zip, .exe |
Ikki kutilmagan holat bor:
.docx— binar. Word hujjatida matn bor, lekin fayl ichi siqilgan arxiv. Bloknotda ochsangiz, harflar o'rniga tushunarsiz belgilar ko'rasiz..svg— matnli. Bu rasm, lekin u chiziq va shakllarning matnli ta'rifidan iborat. Uni muharrirda ochib o'qisa ham, o'zgartirsa ham bo'ladi. SVG ni rasm formatlari darsida ko'ramiz.
Demak, "bu rasm yoki bu matn" degan savol emas, balki baytlar nimani bildiradi degan savol muhim.
Maslahat: Dasturlar faylni matn yoki binar deb qanday ajratadi? Oddiy usullardan biri —
00baytini qidirish. Matnli faylda bu bayt deyarli uchramaydi, binar fayllarda esa juda ko'p. Git (kod tarixini saqlaydigan dastur, kursda alohida o'rganamiz) faylning boshidagi taxminan 8000 baytda00topsa, uni binar deb hisoblaydi.
Tekshirib ko'ring:
rasm.pngni Bloknotda ochib, hech narsani o'zgartirmasdan "Saqlash" bosdingiz. Rasm endi ochilmayapti. Nega?
Javob
Bloknot baytlarni matn deb o'qidi. Saqlashda esa ularni o'z qoidasi bo'yicha qayta yozdi: harf deb tushunmagan baytlarni almashtirdi, qator oxirlarini o'zgartirdi. Bir necha bayt o'zgarsa ham, rasm formati buziladi. Binar faylni hech qachon matn muharririda saqlamang.
5. Kengaytma — faqat nomning bir qismi
Kengaytma (extension) — fayl nomidagi oxirgi nuqtadan keyingi qism: .png, .txt, .exe. U faqat ishora, faylning ichi emas.
Windows kengaytmadan bitta maqsadda foydalanadi: faylni ikki marta bosganda qaysi dastur ochishini tanlash. .docx — Word, .mp3 — pleyer. Lekin faylni qayta nomlaganda uning ichidagi baytlar bittasi ham o'zgarmaydi.
musiqa.wavnimusiqa.mp3deb nomlash uni MP3 ga aylantirmaydi. Buning uchun konvertatsiya kerak — baytlarni boshqa formatga qayta yozadigan dastur (masalan,ffmpeg, audio va video darsida ko'ramiz).rasm.pngnirasm.txtdeb nomlash uni matnga aylantirmaydi. Ichida baribir rasm baytlari.
5.1 Yashirin kengaytma tuzog'i
Windows standart holatda ma'lum kengaytmalarni yashiradi. Natijada hisobot.pdf.exe fayli Explorer'da hisobot.pdf bo'lib ko'rinadi. Bu — zararli dasturlarning eski va hali ham ishlaydigan hiylasi.
Kengaytmalarni doim ko'rinadigan qilib qo'ying. Windows 11 da: Explorer → View (Ko'rinish) → Show → File name extensions ni belgilang. Fayl tizimi darsida buni eslatgan edik — hali qilmagan bo'lsangiz, hozir qiling.
6. Sehrli raqam — faylning "pasporti"
Agar kengaytma ishonchli bo'lmasa, dastur faylning turini qanday biladi? Javob faylning ichida.
Ko'p formatlarda fayl doim bir xil baytlar bilan boshlanadi. Bu baytlar sehrli raqam (magic number) yoki fayl imzosi (file signature) deb ataladi. Masalan, har qanday PNG rasm aynan shu 8 bayt bilan boshlanadi: 89 50 4E 47 0D 0A 1A 0A.
O'xshatish: pasport. Siz o'zingizni "Ali" deb tanishtirishingiz mumkin, lekin pasportdagi ma'lumot boshqa narsa desa — pasportga ishonishadi. Kengaytma — og'zaki tanishtirish, sehrli raqam — pasport.
| Format | Birinchi baytlar (hex) | Matn ko'rinishi |
|---|---|---|
| PNG | 89 50 4E 47 0D 0A 1A 0A |
.PNG.... |
| JPEG | FF D8 FF |
— |
| GIF | 47 49 46 38 |
GIF8 |
25 50 44 46 2D |
%PDF- |
|
| ZIP | 50 4B 03 04 |
PK.. |
Windows dasturi (.exe) |
4D 5A |
MZ |
| Linux dasturi (ELF) | 7F 45 4C 46 |
.ELF |
Qiziq faktlar:
PK— ZIP formatini yaratgan Phil Katz ismining bosh harflari..docx,.xlsxva Android ilovalari (.apk) ham aslida ZIP. Shuning uchun ularning barchasiPKbilan boshlanadi.MZ— Windows dastur formatini loyihalagan Mark Zbikowski ismidan.- Oddiy matnli faylda sehrli raqam yo'q — u to'g'ridan-to'g'ri matn bilan boshlanadi. Istisno — BOM: UTF-8 BOM'li fayl
EF BB BFbilan boshlanadi.
Tekshirib ko'ring: Fayl nomi
hisobot.docx, birinchi baytlari50 4B 03 04. Bu shubhali holatmi?
Javob
Yo'q, bu normal. .docx aslida ZIP arxiv, ZIP esa aynan 50 4B 03 04 (PK..) bilan boshlanadi. Agar hisobot.docx 4D 5A (MZ) bilan boshlansa — mana shunisi xavfli: bu Windows dasturi.
7. Baytlarni o'z ko'zingiz bilan ko'rish
Faylning baytlarini ko'rsatadigan dastur hex ko'ruvchi (hex viewer) deyiladi. "Hex" — o'n oltilik sanoq degani: baytlar shu ko'rinishda chiqariladi.
7.1 xxd (Git Bash, Linux, macOS)
-l (length — uzunlik) flagi nechta baytni ko'rsatishni aytadi:
xxd -l 16 rasm.pngNatija:
00000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452 .PNG........IHDRBirinchi 8 bayt — PNG imzosi: 89 50 4e 47 0d 0a 1a 0a. O'ng tomonda PNG harflari ham ko'rinib turibdi. IHDR — PNG ichidagi birinchi bo'lak nomi, unda rasm o'lchamlari yozilgan.
7.2 Format-Hex (PowerShell)
PowerShell'da xuddi shu ishni Format-Hex qiladi. Butun faylni emas, faqat birinchi qatorni olish uchun natijani Select-Object -First 1 ga uzatamiz:
Format-Hex rasm.png | Select-Object -First 1Natija (PowerShell 5.1):
Path: C:\Users\Ali\rasm.png
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 PNG........IHDRKo'rinishi biroz boshqacha, lekin baytlar bir xil. Path: — qaysi fayl ko'rsatilayotgani. 00 01 ... 0F — ustun raqamlari: har bayt qatorning nechanchi o'rnida turganini ko'rsatadi. PowerShell 7 da jadval ko'rinishi biroz boshqacha, lekin ma'nosi o'sha.
7.3 VS Code'da
Grafik usulni afzal ko'rsangiz, VS Code uchun Microsoft'ning Hex Editor kengaytmasi bor. U faylni xuddi shunday jadval ko'rinishida ochadi. Kengaytmalarni kursda VS Code darslarida o'rganamiz.
8. file buyrug'i — turni o'zi aniqlaydi
Imzolarni yodlab, baytlarni ko'z bilan solishtirish shart emas. file buyrug'i buni avtomatik qiladi. U kengaytmaga qaramaydi: birinchi baytlarni o'qib, minglab ma'lum imzolar bilan solishtiradi. file Linux va macOS'da bor, Git Bash'da ham ishlaydi.
flowchart TD
A["Fayl"] --> B["Birinchi baytlarni o'qish"]
B --> C{"Ma'lum imzoga<br/>mos keldimi?"}
C -- Ha --> D["Format nomi:<br/>PNG, PDF, ZIP..."]
C -- Yo'q --> E{"Baytlar matnga<br/>o'xshaydimi?"}
E -- Ha --> F["ASCII yoki UTF-8 text"]
E -- Yo'q --> G["data — noma'lum binar"]Tajriba qilamiz. Rasmning nusxasini .txt nomi bilan yaratamiz va file dan so'raymiz:
cp rasm.png sirli_hujjat.txt
file sirli_hujjat.txtNatija:
sirli_hujjat.txt: PNG image data, 800 x 600, 8-bit/color RGBA, non-interlacedNomida .txt bo'lsa ham, file bu PNG rasm ekanini aytdi. Hatto o'lchamini ham: 800 × 600 piksel.
Matnli fayllar uchun file kodlash va qator oxirini ham aytadi:
file salom.txt
# salom.txt: ASCII text
file windows.txt
# windows.txt: ASCII text, with CRLF line terminators
file ozbekcha.txt
# ozbekcha.txt: Unicode text, UTF-8 textIkkinchi natija juda foydali: "with CRLF line terminators" — "qator oxiri CRLF". Skriptingiz serverda ^M xatosini bersa, file bilan bir soniyada tekshirasiz. Uchinchi natija: faylda ASCII'dan tashqari belgi bor (masalan, ʻ yoki kirill harfi), kodlash UTF-8.
9. MIME turi — internetdagi fayl yorlig'i
Internet orqali fayl yuborilganda kengaytmaga tayanilmaydi — manzilda kengaytma umuman bo'lmasligi mumkin. Buning o'rniga server har bir javobga MIME turi (MIME type) degan yorliq qo'shadi. Uni ba'zan "media turi" (media type) ham deyishadi.
MIME turi ikki qismdan iborat: tur/kichik_tur. Masalan, image/png — "rasm, PNG formatida".
| MIME turi | Odatiy kengaytma | Nima |
|---|---|---|
text/plain |
.txt |
Oddiy matn |
text/html |
.html |
Veb-sahifa |
text/css |
.css |
Sahifa ko'rinishi (stillar) |
text/javascript |
.js |
JavaScript kodi |
application/json |
.json |
JSON ma'lumot |
image/png, image/jpeg |
.png, .jpg |
Rasmlar |
application/pdf |
.pdf |
PDF hujjat |
application/octet-stream |
istalgan | Noma'lum binar ma'lumot |
application/octet-stream — "shunchaki baytlar, turini bilmayman" degani. Brauzer bunday faylni ochishga urinmaydi, yuklab olishni taklif qiladi.
Maslahat: Eski kod va maqolalarda JavaScript uchun
application/javascriptni uchratasiz. U ham ishlaydi, lekin 2022-yildan beri rasmiy tavsiya —text/javascript.
file buyrug'i MIME turini ham ayta oladi:
file --mime-type sirli_hujjat.txt
# sirli_hujjat.txt: image/pngServer MIME turini Content-Type degan HTTP sarlavhasida yuboradi. HTTP sarlavhalarini 02-qismda batafsil o'rganamiz. Hozircha bitta haqiqiy misol. Server CSS faylini noto'g'ri tur bilan yuborsa, Chrome konsolida (brauzerning dasturchilar uchun oynasi, keyinroq o'rganamiz) shunday xato chiqadi:
Refused to apply style from 'https://example.com/style.css'
because its MIME type ('text/html') is not a supported
stylesheet MIME type, and strict MIME checking is enabled.Tarjimasi: "style.css dagi stillar qo'llanmadi, chunki uning MIME turi text/html — bu stillar uchun yaroqli tur emas". Ko'pincha sababi oddiy: fayl yo'li noto'g'ri, server esa CSS o'rniga "sahifa topilmadi" degan HTML sahifani qaytargan.
Tekshirib ko'ring: Server
hisobot.pdffayliniapplication/octet-streamturi bilan yubordi. Brauzer nima qiladi?
Javob
Faylni ochmaydi, yuklab olishni taklif qiladi. application/octet-stream — "noma'lum baytlar" degani, brauzer esa noma'lum narsani ko'rsatishga urinmaydi. Server application/pdf yuborganida, brauzer PDF'ni o'zida ochgan bo'lardi.
10. Hujumchi nigohi
Saytga fayl yuklash imkoniyati — hujumchilarning sevimli nishoni. Ular nimaga urinadi:
- Soxta kengaytma. Zararli skriptni
avatar.jpgdeb nomlab yuklaydi. Sayt faqat nomning oxirini tekshirsa, fayl qabul qilinadi. - Soxta MIME turi. Brauzer yuborgan MIME turini hujumchi xohlagancha o'zgartira oladi:
image/jpegdeb yozib, ichiga boshqa narsa soladi. - Ikki kengaytma.
hisobot.pdf.exe— foydalanuvchini aldash uchun.
Himoya — bu darsdagi bilim:
- Kengaytmaga ham, yuborilgan MIME turiga ham ishonmang. Server faylning birinchi baytlarini o'qib, sehrli raqamni tekshirsin.
- Faqat ruxsat etilgan turlarni qabul qiling (masalan, faqat PNG va JPEG).
- Yuklangan faylga yangi, xavfsiz nom bering.
Fayl yuklashni to'liq fayl yuklash maydoni darsida va server qismida o'rganamiz.
11. Ko'p uchraydigan xatolar
11.1 Qayta nomlab, formatni o'zgartirdim deb o'ylash
video.mov ni video.mp4 qilib nomladingiz — telefoningiz baribir ochmayapti. Nom o'zgardi, ichi emas. Formatni o'zgartirish uchun konvertor kerak.
11.2 hisobot.txt.txt
Kengaytmalar yashirin bo'lganda faylga hisobot.txt deb nom berasiz. Windows esa o'zi yana .txt qo'shadi. Natijada fayl nomi hisobot.txt.txt, terminalda esa hisobot.txt topilmaydi:
cat: hisobot.txt: No such file or directoryTarjimasi: "hisobot.txt degan fayl yoki papka yo'q". ls bilan haqiqiy nomni tekshiring va Explorer'da kengaytmalarni yoqing.
11.3 Binar faylni matn muharririda saqlash
Rasm yoki arxivni Bloknotda ochish — zararsiz. Lekin saqlash faylni buzadi. Tasodifan ochib qo'ysangiz, saqlamasdan yoping.
11.4 Binar faylni cat bilan chiqarish
cat rasm.png terminalni tushunarsiz belgilar bilan to'ldiradi. Ba'zan terminal "g'alati" holatga ham tushib qoladi. Bunday bo'lsa, reset buyrug'ini yozib, Enter bosing. Binar faylning ichiga qarash uchun xxd ishlating.
12. Mashqlar
1-mashq (oson): Baytlarni sanash
Terminalda bajaring:
echo "Toshkent" > shahar.txt
xxd shahar.txtFayl necha bayt?
Yechim
Natija:
00000000: 546f 7368 6b65 6e74 0a Toshkent.9 bayt: Toshkent so'zidagi 8 ta harf (har biri 1 bayt, chunki ular ASCII) va echo qo'shgan 0a (LF). Tekshirish uchun wc -c shahar.txt buyrug'i ham 9 shahar.txt deb chiqaradi — -c baytlarni sanaydi.
2-mashq (o'rta): Niqobni ochish
Kompyuteringizdagi istalgan PNG yoki JPEG rasmni oling (masalan, skrinshot). Uning nusxasini hujjat.txt nomi bilan yarating. Keyin:
filebilan haqiqiy turini aniqlang.xxd -l 4bilan birinchi 4 baytni ko'ring va jadvaldagi imzo bilan solishtiring.
Yechim
cp skrinshot.png hujjat.txt
file hujjat.txt
xxd -l 4 hujjat.txtfile natijasi PNG image data, ... bo'ladi. xxd -l 4 natijasi:
00000000: 8950 4e47 .PNGBu PNG imzosining boshi. JPEG rasmda esa file JPEG image data deydi, baytlar esa ffd8 ff bilan boshlanadi. Nom .txt bo'lishi hech narsani o'zgartirmadi.
3-mashq (qiyin): Qaysi biri xavfli?
Saytingizga uchta fayl yuklandi. Nomi va birinchi baytlari:
| Fayl nomi | Birinchi baytlar |
|---|---|
pasport.jpg |
FF D8 FF E0 |
shartnoma.docx |
50 4B 03 04 |
avatar.png |
4D 5A 90 00 |
Har birining haqiqiy turini ayting. Qaysi fayl xavfli va nega?
Yechim
pasport.jpg—FF D8 FF— haqiqiy JPEG. Nom va ichi mos.shartnoma.docx—50 4B 03 04(PK) — ZIP..docxaslida ZIP arxiv bo'lgani uchun bu normal.avatar.png—4D 5A(MZ) — Windows dasturi! Rasm deb niqoblangan. Uni rad etish kerak.
Xulosa: faqat kengaytmani tekshirgan sayt uchala faylni ham qabul qilardi. Sehrli raqamni tekshirgan sayt esa uchinchisini to'xtatadi.
13. Real ishda
- Fayl yuklash. Avatar, hujjat, rezyume yuklanadigan har bir saytda server faylning haqiqiy turini tekshiradi. Node.js'da buning uchun
file-typekabi kutubxonalar bor (Node.js va kutubxonalarni kursda keyinroq o'rganamiz). - Sayt sozlash. Rasm yoki CSS noto'g'ri MIME turi bilan kelsa, brauzer uni ko'rsatmaydi. Birinchi tekshiriladigan narsa —
Content-Type. - Xatoni topish. "Skript serverda ishlamayapti" —
file skript.shCRLF'ni bir soniyada ko'rsatadi. - Git. Git matnli fayllarning qatorma-qator farqini ko'rsatadi, binar fayllar uchun esa faqat "o'zgardi" deydi. Shuning uchun katta rasm va videolar kod bilan birga saqlanmaydi.
- Intervyu. "Foydalanuvchi yuklagan fayl turini qanday tekshirasiz?" — "kengaytmaga emas, sehrli raqamga qarayman va ruxsat etilgan turlar ro'yxatini ishlataman".
Xulosa
- Har qanday fayl — baytlar. Baytlar harflarni bildirsa — matnli, boshqa narsani bildirsa — binar fayl.
- Kengaytma — nomning bir qismi; uni o'zgartirish faylning ichini o'zgartirmaydi.
- Ko'p formatlar doim bir xil baytlar — sehrli raqam — bilan boshlanadi: PNG
89 50 4E 47, PDF%PDF, ZIPPK, EXEMZ. xxd(yokiFormat-Hex) baytlarni ko'rsatadi,fileesa turni avtomatik aniqlaydi va CRLF'ni ham aytadi.- MIME turi (
image/png,text/html) — internetda fayl turini bildiradigan yorliq. - Yuklangan faylning turini kengaytma va MIME'ga emas, ichidagi baytlarga qarab tekshiring.
Keyingi dars: JSON: dasturlar tili — dasturlar o'zaro ma'lumot almashadigan eng mashhur matnli format, uning qat'iy qoidalari va tuzoqlarini o'rganamiz.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!