Kesintiye uğrayan büyük bir dosya indirmeyi sürdürmeye çalışıyorsunuz. İndirme yöneticiniz ilk 50 megabaytın zaten kendisinde olduğunu biliyor ve akıllıca sunucudan "50.000.000. bayttan sonrasını" istiyor. Ancak kalan verileri almak yerine bir hata alıyorsunuz. Sunucu, "İsteğinizi yerine getiremiyorum çünkü istediğiniz şey benim sınırlarımın dışında" diyor.
Bu özel senaryo, HTTP'nin daha kesin hata kodlarından biri tarafından ele alınır: 416 Range Not Satisfiable.
Bu durum kodu, başarılı 206 Partial Content yanıtının daha az bilinen karşılığıdır. 206 "İstediğiniz veri parçası burada" derken, 416 "İstediğiniz veri parçasını size veremem çünkü hesabınız yanlış" der.
Bu, bir kütüphaneciden 400 sayfalık bir kitabın "500-600. sayfalarını" istemenin dijital karşılığıdır. İstek tamamen anlaşılır, ancak var olmayan bir şeyi istemektedir.
Dosya indirmeleri, video akışı veya büyük veri transferlerini yöneten API'lerle çalışıyorsanız, 416 durum kodunu anlamak sağlam uygulamalar oluşturmanın anahtarıdır.
Bu kapsamlı blog yazısında, **416 Range Not Satisfiable** durum kodunun ne anlama geldiğini, ortaya çıktığı yaygın senaryoları, neden önemli olduğunu ve hem geliştiricilerin hem de kullanıcıların bunu nasıl ele alabileceğini veya önleyebileceğini inceleyeceğiz. Ayrıca, 416 içeren HTTP yanıtlarını test etmek ve hata ayıklamak ve API'lerinizi daha sağlam hale getirmek için **Apidog** gibi araçları nasıl kullanacağımızı da tartışacağız.
Range başlıklarını test etmeyi ve sunucunuzun hem 206 hem de 416 yanıtlarını doğru şekilde işlediğini doğrulamayı kolaylaştıran hepsi bir arada bir API platformudur.Uygulamayı İndir
Şimdi, bayt aralıkları dünyasını ve HTTP 416 Range Not Satisfiable durum kodunu keşfedelim.
Temel: HTTP Aralık İstekleri
416'yı anlamak için öncelikle desteklediği özelliği anlamamız gerekiyor: HTTP aralık istekleri.
Aralık istekleri, istemcilerin bir kaynağın yalnızca belirli kısımlarını istemesine olanak tanıyan bir performans optimizasyonudur. Bu, aşağıdakiler için inanılmaz derecede faydalıdır:
- İndirmeleri Sürdürme: Bir indirme kesintiye uğrarsa, istemci baştan başlamak yerine yalnızca eksik parçaları isteyebilir.
- Video Akışı: Video oynatıcılar, ilgili bayt aralığını isteyerek bir videonun herhangi bir noktasına atlayabilir.
- Paralel İndirmeler: İndirme yöneticileri bir dosyayı parçalara ayırabilir ve bunları eş zamanlı olarak indirebilir.
- Verimli Veri Transferi: Büyük bir dosyanın veya veri kümesinin yalnızca bir kısmına ihtiyacınız olduğunda.
İstemci, isteğine bir Range başlığı ekleyerek bir aralık isteği başlatır. Örneğin:
GET /large-file.zip HTTP/1.1Host: example.comRange: bytes=50000000-
Bu istek, "Lütfen bana 50.000.000. konumdan dosyanın sonuna kadar olan tüm baytları gönderin" der.
HTTP 416 Range Not Satisfiable Gerçekte Ne Anlama Geliyor?
416 Range Not Satisfiable durum kodu, sunucunun istenen aralıkları sunamadığını belirtir. Bu, isteğin Range başlık alanında belirtilen aralığın veya aralıkların seçilen kaynağın mevcut kapsamıyla çakışmaması durumunda meydana gelir.
Daha basit bir ifadeyle: "Dosyanın var olmayan bir kısmını istediniz."
Uygun bir 416 yanıtı, seçilen kaynağın gerçek boyutunu gösteren bir Content-Range başlığı içermelidir. Bu, istemcinin hangi aralıkların gerçekten mevcut olduğunu anlamasına yardımcı olur.
Standart bir 416 yanıtı şöyle görünür:
HTTP/1.1 416 Range Not SatisfiableContent-Range: bytes */50000000Content-Type: text/htmlContent-Length: 147
<html><head><title>416 Aralık Tatmin Edilemez</title></head><body><center><h1>416 Aralık Tatmin Edilemez</h1></center></body></html>
Önemli kısım Content-Range: bytes */50000000 başlığıdır. Bu, istemciye şunları söyler:
bytes: Kullanılan birim- : Geçerli aralık belirtilmemiş (çünkü istek geçersizdi)
50000000: Kaynağın bayt cinsinden toplam uzunluğu
Başka bir deyişle:
İstemci, "Bana X'ten Y'ye kadar baytları ver" der, ancak bu baytlar kaynakta mevcut değildir.
Bu durum, istemcilerin indirmeleri yanlış konumlardan sürdürmeye çalıştıklarında veya kaynağın gerçek uzunluğuyla uyuşmayan bayt aralıkları istediklerinde yaygındır.
416'yı Anlamak Neden Önemli?
"416 nadir görünüyor; gerçekten önemsemem gerekiyor mu?" diye düşünebilirsiniz. Cevap evet, özellikle dayanıklılık, akış veya sürdürme desteği olan sağlam sistemlerde. İşte nedeni:
- Kullanıcı deneyimi: Başarısız bir parça veya video arama, sorunsuz oynatmayı veya indirmeleri bozabilir.
- Hata kurtarma: 416'yı doğru şekilde işlemek, uygulamanızın geri dönmesini veya kendini düzeltmesini sağlar.
- Hata ayıklama netliği: Belirsiz "indirme başarısız oldu" mesajları yerine, "aralık tatmin edilemez" ifadesini bilmek kesindir.
- Birlikte çalışabilirlik: İstemcileriniz ve sunucularınız farklı ekipler tarafından oluşturulduysa, aralık mantığının net bir şekilde ele alınması entegrasyon hatalarını önler.
- Performans: Geçersiz aralık isteklerinden kaçınmak, boşa harcanan ağ trafiğini ve sunucu yükünü azaltır.
Kısacası, uç durumları ele alan dayanıklı sistemler oluşturmak için HTTP 416'yı anlamak çok önemlidir.
Aralık İstekleri Neden Kullanılır?
Aralık istekleri, istemcilerin dosyanın tamamı yerine bir kaynağın belirli kısımlarını istemesine olanak tanır. Bu, birkaç nedenden dolayı faydalıdır:
- Verimli indirmeler: Kesintiye uğrayan indirmeleri baştan başlatmadan sürdürme.
- Akış ortamı: İsteğe bağlı olarak video veya ses dosyalarının bölümlerini alma.
- Önbellekleme optimizasyonları: İstemciler yalnızca yeni veya değiştirilmiş içerik parçalarını alır.
- Bant genişliği tasarrufu: Tam yük indirmelerinden kaçınma.
Bu kısmi istekler, bayt aralıklarını belirten HTTP Range başlığına dayanır.
416 Range Not Satisfiable Hatası Nasıl Meydana Gelir?
Bir 416 şu durumlarda meydana gelir:
- İstenen aralık, kaynağın mevcut boyutunun tamamen dışındadır (örn. dosya yalnızca 500.000 bayt iken 1.000.000'den 1.000.100'e kadar bayt istemek).
- Aralık başlığı hatalı biçimlendirilmiş veya geçersiz aralıklar belirtiyor.
- Kaynak değiştirilmiş ve kısaltılmış, bu da istemci tarafından depolanan aralığı geçersiz kılıyor.
- Sunucu, diğer dahili nedenlerden dolayı kısmi isteği işleyemez veya işlemeyecektir.
Bu gibi durumlarda, sunucu 416 ile yanıt vererek istemciye istenen aralığın sunulamayacağını bildirir.
416 Hatalarını Tetikleyen Yaygın Senaryolar
416 yanıtıyla karşılaşacağınız en yaygın durumlara bir göz atalım.
Senaryo 1: Dosya Boyutunun Ötesinde Bayt İstemek
Bu en basit durumdur. İstemci, gerçek dosya boyutunun ötesine uzanan bir aralık ister.
İstek:
GET /document.pdf HTTP/1.1Host: example.comRange: bytes=5000000-6000000
Sorun: document.pdf toplamda yalnızca 4.000.000 bayttır (yaklaşık 4MB).
Sunucunun 416 Yanıtı:
HTTP/1.1 416 Range Not SatisfiableContent-Range: bytes */4000000
Sunucu, "5.000.000'den 6.000.000'e kadar bayt istediniz, ancak dosya toplamda yalnızca 4.000.000 bayt. İsteğinizin bir anlamı yok" diyor.
Senaryo 2: Dosyanın Boyutu Değişti
Bu genellikle indirmeleri sürdürürken olur. 100MB'lık bir dosyayı indirmeye başladığınızı, ancak 50MB'ta kesintiye uğradığını düşünün. Bu sırada, sunucudaki dosya güncellenir ve şimdi toplamda yalnızca 80MB'tır.
İstemcinin Sürdürme İsteği:
GET /software-update.zip HTTP/1.1Host: example.comRange: bytes=50000000-
Sorun: Dosya şimdi yalnızca 80.000.000 bayt, ancak siz 50.000.000. bayttan sonrasını istiyorsunuz, bu da 80.000.000+'a kadar uzanacaktır.
Sunucunun 416 Yanıtı:
HTTP/1.1 416 Range Not SatisfiableContent-Range: bytes */80000000
Sunucu size, "Dosya değişti. Şimdi toplamda sadece 80MB, bu yüzden 50MB'tan başlayan veri isteğiniz artık gerçekle uyuşmuyor" diyor.
Senaryo 3: Geçersiz Aralık Sözdizimi
Sunucular sözdizimsel olarak geçersiz aralıklar için 400 Bad Request döndürebilirken, bazıları aralık değerleri sayısal olarak imkansızsa 416 kullanabilir.
İstek:
GET /data.bin HTTP/1.1Host: example.comRange: bytes=1000-500
Sorun: Başlangıç baytı (1000), bitiş baytından (500) sonra gelir, bu da matematiksel olarak imkansızdır.
Uygulamalarınızda 416'yı Nasıl Tespit Edersiniz?
416 hatalarını etkili bir şekilde ele almak veya önlemek için, bunları programatik olarak veya hata ayıklama sırasında tespit edebilmeniz gerekir. İşte ipuçları:
- HTTP durum kodlarını kontrol edin: İstemciniz
status === 416(veya bir kütüphanede, hata kodu 416) alırsa, bunu özel olarak ele alın. - Başlıkları inceleyin:
Content-Rangebaşlığına bakın. Eğerbytes */Nise, geçerli uzunluğunNolduğunu bilirsiniz. - Geri dönüş mantığı: 416 oluşursa, belki de tüm kaynağı yeniden getirmeniz (yani
Rangeolmadan) gerekir. Veya ofsetlerinizi ayarlayın. - Günlükleme / hata ayıklama bilgisi: Mantığın ne kadar yanlış olduğunu anlamak için denenen aralığı ve döndürülen geçerli sınırları günlüğe kaydedin.
- Araçları kullanın (Apidog!): Apidog gibi bir REST/API test aracı kullanarak,
Rangebaşlıklarıyla istekleri manuel olarak oluşturabilir, tam yanıtı (başlıklar + gövde) görebilir ve doğru olana kadar tekrarlayabilirsiniz.
Gerçek Dünya Örnekleri ve Kullanım Durumları
416'nın ortaya çıkabileceği birkaç pratik bağlamı inceleyelim.
Video Akışı ve Medya Sunucuları
Video oynatıcılar genellikle bayt aralıklarını kullanarak kısmi içerik isterler, örn. "10. dakikadan itibaren oynatmaya başla". Video dosyası daha kısaysa (veya bir segment mevcut değilse), istemci gerçek verilerin ötesinde bir aralık isteyebilir ve bu da bir 416'ya neden olabilir.
Bu tür akış kurulumlarında, medya sunucunuzun uzunluğu doğru bir şekilde bildirmesi ve geçersiz aralıkları sorunsuz bir şekilde ele alması çok önemlidir.
Sürdürülebilir İndirme Yöneticileri
İndirme yöneticileri genellikle dosyaları parçalara böler (örneğin, 0–1 MB, ardından 1 MB–2 MB vb.). Son parçanın aralığı sınırların dışındaysa (yuvarlama, dosya değişiklikleri vb. nedeniyle), bu parça isteği 416 döndürebilir.
- Son parça boyutunu dikkatlice kontrol eder.
- 416'yı yeniden deneyerek veya parça ofsetlerini yeniden dengeleyerek ele alır.
- Tekrarlanan parça hataları meydana gelirse kullanıcıları günlüğe kaydeder veya uyarır.
Veri Aralıkları Döndüren API'ler
Bazı API'ler, günlükler, büyük metin dosyaları veya ikili büyük nesneler gibi aralıklarla kısmi veri alımını destekler. Bir istemci sınırların ötesinde Range: bytes=… isterse veya kaynak daha küçükse, 416 ile karşılaşırsınız.
Bu tür API'lerde, dokümantasyon ve istemciler koordine olmalıdır. API, kısmi alımın nasıl çalıştığını açıkça belirtmeli ve istemciler istekte bulunmadan önce doğrulamaya dikkat etmelidir.
416 ve Diğer İstemci Hataları: Farkı Bilmek
416'yı diğer 4xx durum kodlarından ayırmak önemlidir.
- 1.
416 Range Not Satisfiableve400 Bad Request: 416, "Aralık isteğiniz sözdizimsel olarak doğru ancak bu belirli kaynak için anlamsal olarak geçersiz" anlamına gelir.400, genel hatalı biçimlendirilmiş sözdizimi nedeniyle "İsteğinizi bile anlayamıyorum" anlamına gelir.- 2.
416 Range Not Satisfiableve404 Not Found: 416, "Kaynak mevcut, ancak istediğiniz aralık mevcut değil" anlamına gelir.404, "Kaynağın kendisi mevcut değil" anlamına gelir.- 3.
416 Range Not Satisfiableve206 Partial Content: 206, geçerli bir aralık isteğine verilen başarılı yanıttır.416, geçersiz bir aralık isteğine verilen hata yanıtıdır.
Geliştiriciler 416 Hatalarını Nasıl Önleyebilir?
Geliştiriciler ve sunucu yöneticileri aşağıdaki gibi önlemler alabilir:
- Kaynak yanıtlarında doğru
Content-Lengthbaşlıklarını sağlayın. - Aralık başlıklarını sağlam bir şekilde doğrulayın ve ayrıştırın.
- Kısmi yanıtlarda uygun
Content-Rangebaşlıklarını döndürün. - Eski istemci aralıklarını geçersiz kılmak için kaynak değişikliklerini güvenli bir şekilde ele alın.
- Desteklenen aralık istekleri konusunda istemcilere rehberlik etmek için API dokümantasyonunu kullanın.
- Apidog gibi araçları kullanarak kısmi içerik işlemeyi kapsamlı bir şekilde test edin.
Apidog ile Aralık İsteklerini ve 416 Yanıtlarını Test Etme

Aralık isteği davranışını test etmek, dosya transferlerini yöneten uygulamalar için çok önemlidir. Apidog bu amaç için mükemmel araçlar sunar.
Apidog ile şunları yapabilirsiniz:
- Hassas Aralık İstekleri Oluşturun: İsteklerinize belirli bayt aralıklarıyla kolayca
Rangebaşlıkları ekleyin. - Geçerli Aralıkları Test Edin: Meşru aralık isteklerinin doğru
Content-Rangebaşlığıyla206 Partial Contentdöndürdüğünü doğrulayın. - Uç Durumları Test Edin: Sunucunuzun uygun
416yanıtları döndürdüğünden emin olmak için bilerek geçersiz aralık istekleri gönderin:
- Dosya boyutunun ötesindeki aralıkları isteyin
- Ters çevrilmiş aralıklarla test edin (başlangıçtan önce bitiş)
- Negatif aralıkları yanlış kullanın
4. Başlıkları İnceleyin: 416 yanıtlarının gerekli Content-Range: bytes */{total_length} başlığını içerdiğini doğrulamak için Apidog'un ayrıntılı yanıt görünümünü kullanın.
5. Testleri Otomatikleştirin: Sunucunuzun çeşitli senaryolar altında aralık isteği işlemeyi otomatik olarak doğrulayan test paketleri oluşturun.
Bu test, indirme yöneticilerinizin, video oynatıcılarınızın ve diğer aralık farkındalığına sahip istemcilerinizin uç durumlarla karşılaştıklarında doğru şekilde davranmasını sağlar.

Uygulamayı İndir
Bunu etkileşimli olarak yaparak, aralık mantığınızın tam olarak nerede başarısız olduğunu teşhis edebilirsiniz. Apidog'un arayüzü, her şeyi görmenize yardımcı olur: başlıklar, gövde, zamanlama; bu da 416 hatalarında hata ayıklamayı yalnızca kod üzerinden tahmin etmekten çok daha kolay hale getirir.
Daha önce Apidog kullanmadıysanız, şimdi denemek için harika bir zaman. Ücretsiz indirin, API uç noktanızı yükleyin ve farklı Range başlık kombinasyonlarıyla test etmeye başlayın. 416 gibi yeniden üretilmesi zor hatalarla uğraşırken tam da istediğiniz anında geri bildirim alacaksınız.
İstemciler 416 Yanıtlarını Nasıl Ele Almalı?
İyi davranan bir istemci, bir 416 hatasından nasıl kurtulacağını bilmelidir. Akıllı uygulamalar şunları yapar:
Content-RangeBaşlığını Ayrıştırın: Toplam kaynak uzunluğunuContent-Range: bytes */{total_length}başlığından çıkarın.- Anlayışlarını Sıfırlayın: Toplam boyut değiştiyse, daha önce indirilmiş tüm içeriği atın.
- İndirmeyi Yeniden Başlatın: Baştan yeni bir indirme başlatın (
Range: bytes=0-) veya yeni toplam boyuta göre geçerli aralıkları yeniden hesaplayın. - Kullanıcıyı Bilgilendirin: Uygunsa, kullanıcıya dosyanın değiştiğini ve indirmenin yeniden başlaması gerektiğini bildirin.
Örnek İstemci Mantığı:
// 416 yanıtını işlemek için sözde kod
if (response.status === 416) {
// Content-Range başlığından toplam dosya boyutunu çıkar
const totalSize = extractTotalSize(response.headers['Content-Range']);
// Dosyanın farklı bir boyutta olduğunu düşünüyorsak, baştan başlamamız gerekir
if (totalSize !== this.expectedFileSize) {
this.downloadedBytes = 0;
this.expectedFileSize = totalSize;
this.restartDownload();
}
}
HTTP Aralık İstekleriyle Çalışırken En İyi Uygulamalar ve İpuçları
İşte gerçek dünya sistemlerinde 416 hatalarından daha zarif bir şekilde kaçınmanıza veya bunları ele almanıza yardımcı olacak hızlı ipuçları ve en iyi uygulamaların bir listesi:
- Her zaman önce toplam boyutu alın:
Content-Lengthveya dosya boyutunu almak içinHEADveya bir meta veri uç noktası kullanın. - Mümkün olduğunda "açık uçlu" aralıklardan kaçının:
bytes=1000-yerine, gerçek bitiş sınırını hesaplayın vebytes=1000-<end>kullanın. - Parça mantığınızı koruyun: Parçalara ayırırken, son parçanın aşırıya kaçmadığından emin olun.
- 416'da geri dönüş uygulayın: 416 alırsanız, tam GET'e veya güvenli daha küçük bir parçaya geri dönün.
- Kaynaklar değiştiğinde önbellekleri geçersiz kılın: Böylece istemciler eski toplam boyutları kullanmaz.
- Yardımcı hata meta verileri döndürün: İstemciler için
Content-Range, hata mesajı, gövdedeki ipuçlarını ekleyin. - Saçma aralıkları erken sınırlayın veya reddedin: Sunucu tarafında, mantık kontrolleri yapın (örn. "başlangıç < bitiş olmalı", "bitiş < maksimum"). Geçersizse 400 veya 416'yı erken döndürün.
- "accept-ranges" başlığını destekleyin: Başarılı bir GET isteğinde, desteği belirtmek için
Accept-Ranges: bytes'ı ekleyin. - Aralık davranışınızı belgeleyin: API belgelerinizde, aralık isteklerinin nasıl çalıştığını, sınırlar ve geri dönüş davranışı dahil olmak üzere açıklayın.
- Kapsamlı test yapmak için araçlar kullanın: Manuel olarak veya otomatik testler aracılığıyla, sıfır uzunluklu aralıklar, negatif ofsetler vb. gibi uç durumları kapsayın.
Üretimde aralık hatalarını günlüğe kaydedin: Böylece birçok istemcinin 416'ya çarptığını gösteren kalıpları görebilir ve mantıklarındaki bir hatayı ortaya çıkarabilirsiniz.
Yaygın Yanlış Anlamalar ve Tuzaklar
416 ile uğraşırken küçük yanlış anlamalarla takılmak kolaydır. İşte dikkat etmeniz gereken birkaç tanesi:
- "416 sadece indirmelerde olur": Doğru değil. Herhangi bir kısmi alım (örn. API büyük nesneleri) bunu tetikleyebilir.
- "416 bir sunucu hatasıdır": Her zaman değil. İstemci tarafı mantığının aralık sınırlarını yanlış seçmesi olabilir.
- "416 sunucunun bozuk olduğu anlamına gelir": Genellikle hayır, istemcinin var olmayan bir aralık istemesidir.
- "416'dan kaçınmak için Range başlıklarını kullanmayın": Bu güvenlidir ancak kısmi alım/sürdürme optimizasyonlarını kaybedersiniz.
- "416 yanıtlarının asla gövdesi olmaz": Bazı sunucular daha fazla bağlam sağlamak için bir hata mesajı veya JSON gövdesi içerir.
- "416 = dosya bulunamadı": Hayır, dosya bulunamadı için 404 görürsünüz, 416 değil.
Bunların farkında olarak yanlış teşhisten kaçınabilirsiniz.
Bu Neden API ve İndirme Sistemleri İçin Önemli?
416 hatalarını birinci sınıf bir senaryo olarak ele alarak, daha dayanıklı sistemler oluşturursunuz. Bazı özel faydaları:
- Daha iyi kullanıcı deneyimi: daha az bozuk indirme veya medya arama
- Daha güçlü hata kurtarma: aralıklar başarısız olduğunda uygulamanız otomatik olarak uyum sağlayabilir
- Net teşhisler: günlükler ve meta veriler sorunları belirlemenize yardımcı olur
- Birlikte çalışabilir istemciler: sunucular: iyi tanımlanmış aralık davranışı entegrasyon sürtünmesini azaltır
- Geliştirilmiş performans: körü körüne aşırıya kaçmalar nedeniyle boşa harcanan istek veya zaman yok
Unutmayın: ağa bağlı sistemlerde, uç durumlar (kesilmiş dosyalar, güncel olmayan önbellek, kısmi yeniden denemeler) birçok hatanın yaşadığı yerdir. 416 etrafında "güvenli bir şekilde dans etmeyi" bilmek, API olgunluğunun bir işaretidir.
Sonuç: Bayt Sınırlarının Koruyucusu
HTTP 416 Range Not Satisfiable durum kodu, verimli dosya transferlerinin ekosisteminde kritik bir rol oynar. Çoğu kullanıcı için yaygın bir hata olmasa da, indirme yöneticileri, video akış hizmetleri ve kısmi içerik isteklerini kullanan diğer uygulamaların sağlam çalışması için hayati öneme sahiptir.
416'yı anlamak, geliştiricilerin ağ transferlerinin, dosya değişikliklerinin ve sürdürme işlemlerinin gerçek dünya karmaşıklıklarını ele alabilen daha dayanıklı uygulamalar oluşturmasına yardımcı olur. Bu, protokolün veri bütünlüğünü koruma ve aralık isteklerinin bozuk indirmelere veya kafası karışmış istemcilere yol açmamasını sağlama yoludur.
Bu nedenle, bir dahaki sefere büyük dosyalarla ilgilenen bir uygulama geliştirirken, hem 206 başarılı durumunu hem de 416 hata durumunu zarif bir şekilde ele almayı unutmayın. Ve bu senaryoları test etmeniz gerektiğinde, Apidog gibi güçlü bir araç, aralık isteği işlemenizin kusursuz olduğundan emin olmak için gereken hassasiyeti ve kontrolü size sağlayacaktır.
Ve yine unutmayın: Apidog'u ücretsiz indirin, uç noktanızı çalıştırın ve bazı Range isteklerini deneyin. Sunucunun nasıl yanıt verdiğini izleyin ve tartıştığımız uç durumları test edin. Bu, bu bilgiyi pekiştiren uygulamalı bir öğrenmedir.
Mutlu kodlamalar ve kısmi alımlarınız her zaman sınırlar içinde kalsın.
Uygulamayı İndir
