- Katılım
- 15 May 2013
- Konular
- 971
- Mesajlar
- 6,650
- Online süresi
- 2ay 11g
- Reaksiyon Skoru
- 5,350
- Altın Konu
- 314
- Başarım Puanı
- 319
- TM Yaşı
- 12 Yıl 11 Ay 12 Gün
- MmoLira
- 22,212
- DevLira
- 15
Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!
Veri her yerde. İnsanlar konuşuyor, cihazlar konuşuyor, yazılımlar konuşuyor ve şimdi de yapay zeka konuşuyor. Ancak ham bilgi karmaşık ve okunaksız olabilir. Makinelerin ve insanların okuyabilmesi için veriyi şekillendirmenin yollarına ihtiyacımız var. Metin veri formatları bize bu şekli veriyor. Bu ders, neden bunları kullandığımızı, nasıl çalıştıklarını, ne tür formatlar olduğunu açıklıyor ve CCNA otomasyonunda göreceğiniz örnekleri gösteriyor.
Neden Veri Formatlarına İhtiyacımız Var?
İletişim kurduğumuzda, temelde birbirimiz arasında bilgi iletiyor ve alıyoruz. Bunu her yaptığımızda, aşağıdaki diyagramda gösterildiği gibi, aynı dilde konuşmak, konuşmamızı cümleler halinde yapılandırmak ve konuşmaya bir selamlama ile başlamak gibi bir dizi kurala uyuyoruz.
İngilizce, bir veri formatına çok benzer. Alıcının bilgiyi sizin anladığınız gibi tam olarak anlayabilmesi için bilgiyi nasıl yapılandıracağınızı ve yazacağınızı tanımlayan bir kurallar kümesidir.
Şöyle düşünün: Düşünceleriniz kafanızın içindeki verilerdir. Ancak bu düşünceleri doğrudan başka birine gönderemezsiniz. Bunları ortak bir formata (sizinle başkası arasında ortak bir dile), örneğin İngilizce, Fransızca, İspanyolca vb. çevirmeniz gerekir.
İngilizce konuşurken veya yazarken, düşüncelerinizi ortak bir dile (örneğin İngilizceye) serileştiriyorsunuz. İngilizce anlayan herkes daha sonra söylediklerinizi "çözebilir" ve orijinal düşüncenizi anlayabilir.
İki kişinin ortak bir veri formatı -her ikisinin de anladığı ortak bir dil- kullanmaması durumunda ne olduğunu herkes bilir: Aşağıdaki diyagramda gösterildiği gibi birbirlerini anlayamazlar.
Aynı prensip uygulamalar arasındaki iletişim için de geçerlidir. İki yazılım programı veri alışverişi yaptığında, bu bilgilerin aynı dil kullanılarak yapılandırılması gerekir; aksi takdirde uygulamalar birbirini anlayamaz. Biz insanlar yapılandırılmamış verileri anlamlandırmada çok iyiyiz, ancak uygulamalara verileri nasıl ayrıştıracakları açıkça söylenmelidir. Aynı bilginin farklı şekillerde temsil edildiği aşağıdaki örnekleri inceleyin:
Kod:
interfaceFastEthernet0/0.2encapsulationdot1q210.1.1.10255.255.255.0mtu1500
interface FastEthernet0/0.2
encapsulation dot1q 2
10.1.1.10 255.255.255.0
mtu 1500
Diyelim ki bir uygulama bu verileri ağ üzerinden başka bir uygulamaya (veya ağ yöneticisine) iletmek istiyor. Sadece örnek olması açısından, uygulamanın bilgileri yapılandırılmış bir şekilde serileştirmek için herhangi bir veri formatı kullanmadığını varsayalım. Aşağıdaki örnek, neler olacağını göstermektedir.
Veri formatlarını ve veri serileştirmeyi kullanmadığımızda neler olduğunu kolayca görebilirsiniz. Alıcı uygulama, alınan veriyi anlamlandıramaz. Arayüz adının nerede bittiğini ve IP adresinin nerede başladığını nasıl anlayacak?
Elbette, örnek biraz abartılı, ancak ana fikri gösteriyor. Bilgisayarların, alınan bilgileri yeniden oluşturmak için açık bir kurallar kümesine ihtiyacı vardır. Aynı örneğe bakalım, ancak bu sefer en yaygın formatlardan biri olan XML (Genişletilebilir İşaretleme Dili) adı verilen iyi tanımlanmış bir veri formatı kullanarak.
Verilerin ne kadar daha yapılandırılmış ve hem insanlar hem de bilgisayarlar için ne kadar daha okunabilir olduğunu açıkça görebilirsiniz. Bu nedenle, verileri depolarken veya iletirken önceden tanımlanmış veri formatlarını kullanıyoruz.
Veri Formatları Nasıl Çalışır?
Genel olarak, veri formatları iki şey yapar:
Yapıyı tanımlarlar = Yapı, verilerin nasıl organize edildiğidir. Örneğin, bir arayüzün adı, IP adresi ve açıklaması vardır. Yapı, her değerin nereye yerleştirileceğine karar verir.
Sözdizimini tanımlarlar = Sözdizimi, kullandığınız karakterlerin tam halidir. XML, <arayüz> gibi etiketler kullanır. JSON, süslü parantezler, tırnak işaretleri ve iki nokta üst üste kullanır. CSV, virgül ve yeni satırlar kullanır. YAML, girinti kullanır.
Aşağıdaki örnek, en yaygın üç formatta temsil edilen bir arayüz yapılandırmasını göstermektedir. Bilgilerin aslında aynı olduğunu, ancak farklı şekilde "sarmalandığını" fark edin. Hangisi sizin için okunması en kolay?
Çoğu insan YAML'ı okuması en kolay format olarak bulur. Bu nedenle Kubernetes ve Ansible gibi DevOps ve NetDevOps araçları için en popüler formattır.
Yukarıdaki diyagramda aynı orijinal bilginin farklı veri formatlarına serileştirilmiş halini görebilirsiniz. Verilerin aynı olduğunu, ancak XML, JSON ve YAML olarak biçimlendirildiğinde farklı göründüğünü ve hissettirdiğini açıkça görebilirsiniz. Önümüzdeki derslerde her bir veri formatı hakkında daha fazla konuşacağız, ancak şimdilik temellere odaklanalım.
Bu bölümde ele alacağımız her bir veri formatının yapısını ve sözdizimini anlamak için, bilginin en basit ancak en önemli kavramlarından birini - anahtar-değer çiftlerini - açıklığa kavuşturmamız gerekiyor.
Anahtar-Değer Çiftleri
Anahtar-değer çifti, her veri parçasının bir etiket (anahtar) ve bir değer (bu etikete bağlı veri) olarak saklandığı ve iletildiği anlamına gelir. Bunu bir etiket ve bir kutu gibi düşünün:
Anahtar, kutunun üzerindeki etikettir - size içinde ne olduğunu söyler. Değer, kutunun içinde gerçekten ne olduğudur.
Etiket olmadan, kutunun içinde ne olduğunu bilemezsiniz, değil mi? Ve tam tersi, kutu olmadan, aşağıdaki diyagramda gösterildiği gibi, hiçbir şeye işaret etmeyen bir etiketiniz olur.
Bilgisayar dünyasında verilerin her zaman anlamlı olması için anahtar:değer çiftleri şeklinde yapılandırıldığını anlamak ve hatırlamak çok önemlidir. Bu, veriyi anlaşılabilir ve makine tarafından okunabilir hale getirir. Tek bir sayı, kelime veya ham sinyal gibi anahtar (etiket) içermeyen ham bilgi anlamsızdır.
Örneğin, bir sensör sadece 75 sayısını gönderebilir. Bu veridir, ancak bağlam olmadan - 75'in ne anlama geldiğini bilmiyoruz. Sıcaklık: 75 gibi bir anahtar eklediğimizde, anlamlı bir bilgi haline gelir. Sensörün sıcaklığı 75 derecedir.
ÖNEMLİ NOT: Her veri formatı bilgiyi anahtar-değer çiftleri halinde yapılandırır. Anahtar olmadan değer anlamsızdır.
Aşağıdaki şemada görebileceğiniz gibi, her formatın anahtar-değer çiftlerini ifade etmenin kendine özgü bir yolu vardır.
Anahtar-değer kavramını sağlam bir şekilde anlamanız ve bilmeniz gerekiyor. Bu, tüm CCNA Otomasyon dünyasının temelidir. Herhangi bir bilgi türüyle çalışırken, bu bölümde ele aldığımız formatlardan birinde (XML, JSON veya YAML) saklayacak, düzenleyecek ve ileteceksiniz.
Dersin bu bölümünü, bilinen bir veri gösteriminin (CISCO CLI) XML, JSON ve YAML'ye nasıl biçimlendirildiğini gösteren birkaç örnekle bitirelim. Her kod bölümünün aynı bilgiyi içerdiğine, ancak yazıldığı dilin kuralları kullanılarak farklı bir veri formatında yapılandırıldığına dikkat edin. Farklı görünebilirler, ancak bilgiler temelde aynıdır.
Cisco CLI:
Anahtar, kutunun üzerindeki etikettir - size içinde ne olduğunu söyler. Değer, kutunun içinde gerçekten ne olduğudur.
Etiket olmadan, kutunun içinde ne olduğunu bilemezsiniz, değil mi? Ve tam tersi, kutu olmadan, aşağıdaki diyagramda gösterildiği gibi, hiçbir şeye işaret etmeyen bir etiketiniz olur.
Bilgisayar dünyasında verilerin her zaman anlamlı olması için anahtar:değer çiftleri şeklinde yapılandırıldığını anlamak ve hatırlamak çok önemlidir. Bu, veriyi anlaşılabilir ve makine tarafından okunabilir hale getirir. Tek bir sayı, kelime veya ham sinyal gibi anahtar (etiket) içermeyen ham bilgi anlamsızdır.
Örneğin, bir sensör sadece 75 sayısını gönderebilir. Bu veridir, ancak bağlam olmadan - 75'in ne anlama geldiğini bilmiyoruz. Sıcaklık: 75 gibi bir anahtar eklediğimizde, anlamlı bir bilgi haline gelir. Sensörün sıcaklığı 75 derecedir.
ÖNEMLİ NOT: Her veri formatı bilgiyi anahtar-değer çiftleri halinde yapılandırır. Anahtar olmadan değer anlamsızdır.
Aşağıdaki şemada görebileceğiniz gibi, her formatın anahtar-değer çiftlerini ifade etmenin kendine özgü bir yolu vardır.
Anahtar-değer kavramını sağlam bir şekilde anlamanız ve bilmeniz gerekiyor. Bu, tüm CCNA Otomasyon dünyasının temelidir. Herhangi bir bilgi türüyle çalışırken, bu bölümde ele aldığımız formatlardan birinde (XML, JSON veya YAML) saklayacak, düzenleyecek ve ileteceksiniz.
Dersin bu bölümünü, bilinen bir veri gösteriminin (CISCO CLI) XML, JSON ve YAML'ye nasıl biçimlendirildiğini gösteren birkaç örnekle bitirelim. Her kod bölümünün aynı bilgiyi içerdiğine, ancak yazıldığı dilin kuralları kullanılarak farklı bir veri formatında yapılandırıldığına dikkat edin. Farklı görünebilirler, ancak bilgiler temelde aynıdır.
Cisco CLI:
Kod:
!
interface GigabitEthernet0/0/0
description VLAN20
ip address 10.1.1.1 255.255.255.0
ip mtu 1400
duplex full
speed 1000
!
XML:
<?xml version="1.0" encoding="UTF-8"?>
<interfaces>
<interface>
<name>GigabitEthernet0/0/0</name>
<description >VLAN20</description >
<address>10.1.1.1</address>
<mask>255.255.255.0</mask>
<MTU>1400</MTU>
<duplex>full</duplex>
<speed>1000</speed>
</interface>
</interfaces>
JSON:
{
"interfaces":[
{
"name":"GigabitEthernet0/0/0",
"description ":"VLAN20",
"address":"10.1.1.1",
"mask ":"255.255.255.0",
"MTU ":"1400",
"duplex ":"full",
"speed ":"1000"
}
]
}
YAML:
---
- GigabitEthernet0/0/0:
description: VLAN20
address: "10.1.1.1"
mask: "255.255.255.0"
MTU: 1400
duplex: full
speed: 1000
Serileştirme ve Ayrıştırma Nedir?
Şimdi, programlama tarafına geçelim ve veri formatlarının daha büyük resme nasıl uyduğunu görelim. Çoğu durumda, bilgi kendiliğinden ortaya çıkmaz; C++, Java veya Python gibi dillerde yazılmış bir program tarafından oluşturulur, işlenir veya kullanılır. Bu programlar genellikle verileri bellekte nesneler olarak saklar ve işler.
Bir programın bu veriyi kaydetmesi, göndermesi veya alması gerektiğinde, onu JSON, XML veya YAML gibi bir veri formatına dönüştürmesi gerekir. İşte burada iki önemli terim devreye giriyor:
Serileştirme, bir programdan (bellekteki bir nesne gibi) veriyi, örneğin bir dosyada veya veritabanında saklanabilen veya bir ağ üzerinden iletilebilen bir formata dönüştürme işlemidir. Veri daha sonra, farklı bir dilde yazılmış veya başka bir sistemde çalışan başka bir program tarafından bile yeniden oluşturulabilir.
Ayrıştırma ise bunun tam tersidir. Yapılandırılmış metni (JSON veya XML gibi) alıp, programın kullanabileceği sözlükler veya nesneler gibi veri yapılarına geri dönüştürmek anlamına gelir.
Özet:
Ayrıştırma, metni okur ve veriye dönüştürür.
Serileştirme, veriyi alır ve metne dönüştürür.
Veri Biçimleriyle Çalışma
Metin biçimleriyle çalışmak o kadar kolay değildir ve hatasız değildir. Serileştirme veya ayrıştırıcı kodunu bozabilecek hatalar yapmak çok kolaydır. Örneğin:
CSV dosyaları, alanlar virgül içeriyorsa bozulabilir.
XML ağır olabilir ve gözle okunması zor olabilir. Bir etiketi kapatmayı unutursanız bozulabilir.
JSON katıdır. Virgül eksikliği ayrıştırıcıyı bozar.
YAML, girintiye ve boşluğa duyarlıdır. Bir yerde yanlış girinti kullanırsanız bozulabilir.
Her zaman verileri doğrulayın. Doğrulama araçlarını kullanın ve yapısal hataları kendiniz gidermeyi öğrenin. CCNA Otomasyon sınavındaki soruların çoğu, hatalı veri biçimi kodu etrafında yazılmıştır.
Veri Biçimleri Neden Geleceğe Hazır?
Metin biçimleri tek bir programlama diline bağlı değildir. Bağımsız yapılardır. Aşağıdaki şemada gösterildiği gibi, her modern programlama dili ve DevOps aracı XML, JSON veya YAML dosyalarını ayrıştırabilir.
Ayrıca, metin formatları Git, CI/CD ve bulut araçlarıyla entegre olur. Bu da onları geleceğe hazır hale getirir.
Ayrıca, metin formatları Git, CI/CD ve bulut araçlarıyla entegre olur. Bu da onları geleceğe hazır hale getirir.
Önemli Noktalar
Metin veri formatları, cihazların ve araçların yapılandırılmış bilgileri alışveriş etmesine olanak tanır. Çoğu öğrenci, tek bir veri formatını öğrenip tüm görevler için kullanabileceğini düşünür. Ancak gerçekte, bir tür teknoloji bağımlılığı söz konusudur. Gerçek iş hayatında çoğu formatı karıştırıp kullanacaksınız:
Hızlı listeler için CSV kullanacaksınız.
Ansible playbook'ları için YAML kullanacaksınız.
RESTCONF için JSON kullanacaksınız.
NETCONF için XML kullanacaksınız.
Bu nedenle, otomasyon ve DevOps dünyasına iyi hazırlanmak için her biriyle uygulamalı deneyim kazanmanız gerekir. Bunu sonraki derslerde yapacağız.
ÖNEMLİ NOT: XML, JSON ve YAML gibi veri formatları kendi başlarına hiçbir şey yapmazlar. Sadece verileri iyi tanımlanmış, yapılandırılmış bir şekilde temsil etmek için kullanılırlar.
En yaygın metin tabanlı veri formatları hakkında tartıştıklarımızı özetleyelim:
CSV (Virgülle Ayrılmış Değerler) - Ayırıcılarla tablo yapısı. İnsan tarafından okunabilir metinsel veri. Genellikle elektronik tablo veya düz metin olarak açılır. Düz metin veritabanı olarak kullanılır. Ağ iletişiminde, verileri izleme uygulamalarına aktarırken veya içe aktarırken sıklıkla kullanılır.
XML (Genişletilebilir İşaretleme Dili) - İç içe geçmiş metinsel format. İnsan tarafından okunabilir ve düzenlenebilir. Şema tabanlı doğrulama. Ağ iletişimi ve otomasyon alanında yaygın olarak kullanılır. Web servislerinde de çok popülerdir.
JSON (JavaScript Nesne Gösterimi) - Anahtar-değer çiftlerinden oluşan veri nesnelerini depolamak ve iletmek için insan tarafından okunabilir metin kullanan açık standart dosya formatı ve veri alışverişi formatı. Ağ iletişimi de dahil olmak üzere çok çeşitli uygulamalara sahip çok yaygın bir veri formatıdır.
YAML (YAML İşaretleme Dili Değildir) - Hafif metin formatı. JSON'un üst kümesi. İnsan tarafından okunabilir. Yorumları destekler ve bu nedenle kolayca düzenlenebilir. Karmaşık veri türlerini destekler. Yerel veri yapılarına kolayca eşlenir. Ağ iletişimi, ağ otomasyonu ve DevOps'ta çok yaygın olarak kullanılır.
Hızlı listeler için CSV kullanacaksınız.
Ansible playbook'ları için YAML kullanacaksınız.
RESTCONF için JSON kullanacaksınız.
NETCONF için XML kullanacaksınız.
Bu nedenle, otomasyon ve DevOps dünyasına iyi hazırlanmak için her biriyle uygulamalı deneyim kazanmanız gerekir. Bunu sonraki derslerde yapacağız.
ÖNEMLİ NOT: XML, JSON ve YAML gibi veri formatları kendi başlarına hiçbir şey yapmazlar. Sadece verileri iyi tanımlanmış, yapılandırılmış bir şekilde temsil etmek için kullanılırlar.
En yaygın metin tabanlı veri formatları hakkında tartıştıklarımızı özetleyelim:
CSV (Virgülle Ayrılmış Değerler) - Ayırıcılarla tablo yapısı. İnsan tarafından okunabilir metinsel veri. Genellikle elektronik tablo veya düz metin olarak açılır. Düz metin veritabanı olarak kullanılır. Ağ iletişiminde, verileri izleme uygulamalarına aktarırken veya içe aktarırken sıklıkla kullanılır.
XML (Genişletilebilir İşaretleme Dili) - İç içe geçmiş metinsel format. İnsan tarafından okunabilir ve düzenlenebilir. Şema tabanlı doğrulama. Ağ iletişimi ve otomasyon alanında yaygın olarak kullanılır. Web servislerinde de çok popülerdir.
JSON (JavaScript Nesne Gösterimi) - Anahtar-değer çiftlerinden oluşan veri nesnelerini depolamak ve iletmek için insan tarafından okunabilir metin kullanan açık standart dosya formatı ve veri alışverişi formatı. Ağ iletişimi de dahil olmak üzere çok çeşitli uygulamalara sahip çok yaygın bir veri formatıdır.
YAML (YAML İşaretleme Dili Değildir) - Hafif metin formatı. JSON'un üst kümesi. İnsan tarafından okunabilir. Yorumları destekler ve bu nedenle kolayca düzenlenebilir. Karmaşık veri türlerini destekler. Yerel veri yapılarına kolayca eşlenir. Ağ iletişimi, ağ otomasyonu ve DevOps'ta çok yaygın olarak kullanılır.












