Bahasa Melayu

Alat pembangun · Docker lari ke Docker compose converter

YAML gotcha dalam fail Karang: memetik, masalah Norway dan 22:22

· Latar belakang

pekerja pelabuhan mengarang yaml

Gambar rajah abstrak yang menggambarkan yaml gotchas dalam fail karang: petikan, masalah norway dan 22:22
Ilustrasi vektor ToolAcre asal

Karang fail ialah YAML dan YAML mempunyai pendapat tentang nilai kosong. Siaran ini menerangkan peraturan penghuraian di sebalik kejutan yang paling biasa dan cara menyemak sebarang YAML yang dijana atau ditulis tangan untuk mereka.

COUNTRY=NO menjadi palsu — fail Karang melepasi boolean yang apl itu mahukan kod dua huruf

COUNTRY=NO menjadi palsu — fail Karang melepasi boolean yang mana apl itu mahukan kod dua huruf. Bukti: nilai seperti NO kosong boleh ditaip semula oleh penghurai. Menghasilkan semula keselamatan skalar yaml dengan literal pakai buang. Gandingkan setiap kejadian sumber dengan jujukan peta nilai petikan; menaip parser rizab untuk semakan destinasi.

Insiden yaml juga mendedahkan bahawa Sempadan insiden yaml yang berasingan ialah rentetan berangka perenambelasan yang kelihatan oktal dan berbentuk tarikh dipetik. Bukti: rentetan berangka heksadesimal yang kelihatan oktal dan berbentuk tarikh dipetik. Kekangan keselamatan skalar yaml ini adalah titik perhentian. Periksa jujukan peta nilai yang disebut tanpa gelagat pembuatan, kemudian dokumen semakan hos untuk menaip parser.

YAML 1.1 skalar — betapa tidak disebut ya, tidak, hidup, mati dan TIDAK menjadi boolean dalam banyak parser

YAML 1.1 skalar — betapa tidak disebut ya, tidak, hidup, mati dan TIDAK menjadi boolean dalam banyak penghurai. Bukti: terpelihara ya tidak pada off boolean dan ejaan nol dipetik. Jejaki token keselamatan skalar yaml ke dalam jujukan peta nilai yang disebut. Asingkan nilai tersusun daripada medan nilai terakhir; menaip parser adalah di luar koleksi.

Sempadan mekanisme yaml yang berkaitan ialah Sempadan tatabahasa yaml yang berasingan ialah peta menggunakan dua ruang dan tatasusunan menggunakan item sempang. Bukti: peta menggunakan dua ruang dan tatasusunan menggunakan item sempang. Gunakan fakta keselamatan skalar yaml ini untuk meramalkan satu ahli atau skalar dalam jujukan peta nilai petikan. Semak amaran sebelum memutuskan apa-apa tentang menaip parser.

Port sexagesimal — mengapa 22:22 yang tidak disebut boleh menghuraikan sebagai integer 1342 dan mengapa dokumen Karang mengatakan kepada memetik port

Port sexagesimal — mengapa 22:22 yang tidak disebut boleh menghuraikan sebagai integer 1342 dan mengapa dokumen Karang mengatakan kepada memetik port. Bukti: rentetan port kolon berangka menerima petikan tunggal. Hakim yaml skalar keselamatan bersiri daripada modelnya. Petikan dalam jujukan peta nilai petikan melindungi jenis tetapi tidak memberikan bukti operasi untuk menaip parser.

Pemerhatian bersiri yaml kedua ialah Sempadan keluaran yaml yang berasingan ialah contoh petikan langsungYamlString mendedahkan keputusan penulis. Bukti: petikan langsung Contoh YamlString mendedahkan keputusan penulis. Output keselamatan skalar yaml ini memisahkan tetapan daripada konteks yang tidak tersedia. Pastikan jujukan peta nilai yang disebut boleh disemak dan semak penaip parser secara bebas.

Sifar pendahuluan dan perlapanan — nilai seperti 0755 dan rentetan versi yang YAML mentafsir semula

Sifar pendahuluan dan perlapanan — nilai seperti 0755 dan rentetan versi yang YAML mentafsir semula. Berhenti di pengecualian keselamatan skalar yaml dan bukannya meneka. Sebarang penambahan berhampiran jujukan peta nilai petikan memerlukan sebab khusus penempatan yang dikaitkan dengan penaipan parser.

Satu lagi kekangan pengecualian yaml ialah Sempadan pengecualian yaml yang berasingan ialah sambungan penambat dan penghuraian YAML am berada di luar penyeri ini. Bukti: sambungan sauh dan penghuraian YAML umum berada di luar penyeri bersiri ini. Simpan arahan keselamatan skalar yaml asal di sebelah amaran. Perbandingan menunjukkan nilai petikan yang mengandungi jujukan peta dan keputusan menaip parser yang masih manual.

Lekukan dan senarai — konvensyen dua ruang, senaraikan item di bawah kunci, dan bentuk persekitaran peta lawan senarai:

Lekukan dan senarai — konvensyen dua ruang, senaraikan item di bawah kunci, dan bentuk persekitaran peta lawan senarai:. Bina contoh keselamatan skalar yaml daripada nama sintetik. Jadikan setiap item jujukan peta nilai yang dipetik boleh dikesan tanpa mendedahkan butiran menaip parser pengeluaran.

Contoh contoh yaml yang sama menunjukkan bahawa Sempadan contoh yaml yang berasingan ialah petikan defensif melindungi subset yang dipancarkan sahaja. Bukti: petikan defensif melindungi subset yang dipancarkan sahaja. Fakta keselamatan skalar yaml berpasangan harus kelihatan dalam jujukan peta nilai yang disebut. Catat baris itu dan elakkan andaian tentang menaip parser.

Contoh yang berfungsi: membetulkan fail yang rosak dengan tangan — menjalankan konfigurasi karang buruh pelabuhan untuk melihat apa yang sebenarnya dihasilkan oleh penghurai

Contoh yang berjaya: membetulkan fail yang rosak dengan tangan — menjalankan konfigurasi karang docker untuk melihat perkara yang sebenarnya dihasilkan oleh penghurai. Terjemahkan akibat keselamatan skalar yaml kepada satu perbezaan jujukan peta nilai petikan yang boleh diperhatikan. Docker memiliki keputusan menaip parser kemudian.

Pelaksanaan akibat yaml juga menunjukkan Sempadan kesan yaml yang berasingan ialah nilai seperti NO kosong boleh ditaip semula oleh penghurai. Pisahkan tanggungjawab keselamatan skalar yaml: penukaran menulis nilai petikan memetakan jujukan, repositori mengalih keluar rahsia dan operator mengesahkan penaipan penghurai.

Perkara ini tidak meliputi — YAML sauh, medan sambungan (x-*) dan spesifikasi penuh YAML 1.2

Perkara ini tidak meliputi — YAML sauh, medan sambungan (x-*) dan spesifikasi penuh YAML 1.2. Hadkan skop keselamatan skalar yaml kepada cawangan jujukan peta nilai dipetik yang ditunjukkan di sini. Borang jiran dan lalai tidak dapat menjawab soalan menaip parser.

Satu lagi had skop yaml berikutan daripada Sempadan had yaml yang berasingan ialah terpelihara ya tidak pada off boolean dan ejaan nol dipetik. Anggap sempadan keselamatan skalar yaml ini sebagai pengecualian. Lebih suka jujukan peta nilai petikan yang tepat berbanding tekaan tentang menaip parser.

Bawa pulang: petik apa-apa yang jelas bukan rentetan — dan bandingkan tulisan tangan YAML dengan output penukar untuk menangkap nilai kosong

Bawa pulang: petik apa-apa yang jelas bukan rentetan — dan bandingkan tulisan tangan YAML dengan output penukar untuk menangkap nilai kosong. Audit keselamatan skalar yaml sebagai pilihan sumber, medan model, nilai petikan memetakan baris jujukan dan amaran. Alih keluar rahsia sebelum menyemak menaip parser.

Akhir sekali, sumber bawa pulang yaml mengesahkan Sempadan keputusan yaml yang berasingan ialah rentetan port kolon berangka menerima petikan tunggal. Tutup keselamatan skalar yaml secara sempit: nilai dipetik jujukan peta ialah calon; menaip parser dan kesetaraan shell bukan jaminan.