Günlük · Geliştirici yazısı
Bir Stitchu kalıbı nasıl hazırlanıyor: bir elbisenin altındaki katmanlar
Her Stitchu kalıbı aynı katman zincirinden çıkıyor. Her katman bir öncekinin yazdığı dosyayı okuyor; son katmanlar bir kalıbın altı dosyasını yazıyor: teknik çizim, kalıp görünümü ve dört PDF. Bu yazı zinciri katman katman anlatıyor: her katman ne yapıyor, ne alıp ne veriyor, kırmızı kareli önden düğmeli miniden bir sayı ve hangi çalışma hattına ait. Elbiselerin hiçbiri henüz dikilmedi.
Bu yazı sistemin bütününe bakıyor. Tek bir elbisenin resimli, adım adım hikâyesi: Fotoğraftan kalıba. Hatların bir gün boyunca nasıl birlikte çalıştığı: Stitchu’yu neden dört çalışma hattına böldük?.
- Zincire kısa bir bakış
- Okuma
- Fotoğraf ölçüm araçları
- Kalıp grafı
- C++ motoru
- Çizim
- Kalıp ve bedenleri
- Paket
- Kontroller
- Hangi katman hangi hattın
- Hâlâ açık olanlar
Zincire kısa bir bakış
Bir istek bu katmanlardan geçiyor. Okumadan sonra tek bir iş hattı fotoğraf ölçüm araçlarını koşuyor, ardından kalıbı, çizimi ve paketi üretiyor; kalıp çizimden önce geliyor, çünkü çizim bazı dikişlerini motordan alıyor.
- Okuma: bir fotoğraf ya da tarif, elbisenin yapılandırılmış bir tanımına dönüşüyor.
- Fotoğraf ölçüm araçları: fotoğrafın gösterebildiği ölçülüyor ve okumaya yazılıyor.
- Kalıp grafı: okuma, temel bir giysi grafı üzerinde bir işlem listesine dönüşüyor.
- C++ motoru: işlemleri uyguluyor, sonucu denetliyor ve çiziyor.
- Çizim: elbise, moda figürü üzerinde teknik çizim olarak.
- Kalıp ve bedenleri: aynı graf, gerçek bir bedende, milimetre olarak.
- Paket: A4 ve A0 kalıplar, kesim planı ve dikiş rehberi.
- Kontroller: neyin otomatik denetlendiği ve bunun neyi kanıtlamadığı.
Sonunda iş hattı altı dosya teslim ediyor: SVG olarak çizim ve kalıp görünümü; PDF olarak A4 kalıp, A0 kalıp, dikiş rehberi ve kesim planı. Çalışırken okuma ya da motor programları değiştiyse, ya da çizim veya paket artık okumayla uyuşmuyorsa teslim etmeyi reddediyor.
1. Okuma
Bir fotoğrafı, yazılı bir tarifi ya da ikisini birden elbisenin yapılandırılmış bir okumasına çeviriyor: parçalar ve nasıl birleştikleri, boylar ve oranlar, yaka, dikişler, açıklıklar, kapamalar ve kenar bitişleri, kumaş ve girdinin gösteremediklerinin listesi. Okuma, çizimin kullandığı kural fonksiyonlarının aynısıyla denetleniyor. Okuma en fazla üç kez deneniyor; her denemeye önceki hatalar veriliyor. Hiçbiri geçmezse en yakın olanı ihlalleri listelenmiş olarak kaydediliyor ve sonraki katmanlar ondan üretim yapmayı reddediyor.
- Girdi: bir fotoğraf, bir tarif ya da ikisi.
- Çıktı: her fotoğraf ve istek için tek bir önbellek klasöründe tutulan tek bir JSON okuma. Çizim de kalıp da yalnız bu dosyayı okuyor; aynı girdi ikinci kez okunmuyor.
- Kırmızı kareli mini: ön ortada sekiz adet 22 mm düğme, ilki yaka kenarının 23 mm altında; 22 mm düğme bindirmesi ve 69 mm pervaz. 20 konstrüksiyon seçiminin 18’inin yazılı bir gerekçesi var; dört varsayım listelenmiş, ilki fotoğrafın göstermediği arka. Ücretsiz beş kalıbın hepsinde okuma, okuma adımının ürettiği hâliyle alınmadı; fotoğrafa göre düzeltildi ya da doğrudan yazıldı. Bu elbisenin okuması 4 Ekim’de yeniden yapıldı ve kareleri sayıldı.
- Hat: okuyucu hattı.
2. Fotoğraf ölçüm araçları
Okumanın yalnız tahmin edebildiğini fotoğraf üzerinde ölçüyor ve değeri, kaynağı olarak aracın adıyla birlikte okumaya yazıyorlar. Emin olmayan araç hiçbir şey yazmıyor ve nedenini söylüyor. Fotoğraflı her istekte, kalıp üretilmeden önce üçü koşuyor: biri kumaş ve desen renkleri, biri yakanın derinliği ve biçimi, biri de kol oyuğu ve omuz yeri için. Diğerleri henüz iş hattında değil ve ayrıca koşuluyor; aralarında kareleri ya da çizgileri sayan, düğmeleri bulan, etek ucunu sarkan bileğe göre yerleştiren ve giysi enini satır satır ölçen araçlar var. 3 Ekim’den beri fotoğraf üzerinde araçsız ölçülen bir değer aynı turda bir araca çevriliyor; böylece bir sonraki elbise de ondan yararlanıyor.
- Girdi: fotoğraf ve okuması.
- Çıktı: okumada, her biri kaynağıyla birlikte ölçülmüş alanlar.
- Kırmızı kareli mini: kare sayma aracı göğüs satırında 24.2 kare buldu; öncesinde çizim, fotoğrafta 24 kare olan yerde 31 kare gösteriyordu. Sarkan bileğe göre okununca etek ucu belin 460 mm altına düşüyor; gövdeden alınan ölçek 554 mm vermişti. Okuma 460 mm’yi hâlâ doğrulanmamış olarak işaretliyor, çünkü karelerin boyu ayrıca ölçülmedi.
- Hat: üç otomatik araç çizim koduyla birlikte duruyor ve motor hattına ait. Ayrıca koşulan araçların, yine çizim koduyla duran biri dışında, 17 Ekim’de bir hattı yoktu; çoğu, aynı anda tek bir elbise üzerinde çalışılan 3–8 Ekim arasında yazıldı.
3. Kalıp grafı
Giysi, yazılı bir sözleşmeye göre bir graf olarak tanımlanıyor. Panel, kenarlardan oluşan kapalı bir halka. Dikiş iki kenar zincirini bir uzunluk kuralıyla birleştiriyor: bir taraf, diğerinin bir oranla çarpımı artı bir bolluk; yani büzgü ayrı bir özellik değil, 1’den büyük bir oran. Noktalar milimetreyle değil, beden işaret noktaları (landmark) ve oranlarla veriliyor; bu yüzden tek bir graf her bedende hesaplanabiliyor. Kalıp derleyicisi okumayı, ön ve arka beden, ön ve arka etek ve bir kol paneli olan dondurulmuş bir temel graf üzerinde bir işlem listesine çeviriyor. İşlemler geometri işlemleri (kenarı yeniden biçimlendir, panelleri böl ya da birleştir, kloş ver, pensi biçimlendir, kapama koy, işaret ekle) ve giysi adı taşımıyor; her biri yalnız adını verdiği panelleri değiştiriyor.
- Girdi: okuma.
- Çıktı: bir işlem listesi ve motor onu uyguladıktan sonra giysi grafı.
- Kırmızı kareli mini: depodaki güncel hâliyle okuması 75 işleme derleniyor; bunların 25’i kenar biçimlendirme, 16’sı işaret, 2’si de elbisede bel dikişi olmadığı için gövdeyle eteği birleştiren işlem. Ortaya çıkan grafta 4 panel ve 7 dikiş var.
- Hat: motor hattı; kalıp derleyicisi ve graf sözleşmesi onun.
4. C++ motoru
Kalıbın geometrisi burada hesaplanıyor. Graf üzerinde üç program çalışıyor: ilki işlemleri verilen bedende temel grafa uyguluyor, doğrulayıcı sonucun dikilebilir olup olmadığını denetliyor ve bitmiş giysiyi ölçüyor, üçüncüsü de onu SVG olarak çiziyor: çizim, kesim kalıbı ya da dikilmiş yapı. Doğrulayıcı her dikişin iki tarafını karşılaştırıyor, çentikleri eşliyor, kendini kesen dış hatları arıyor ve her dikiş halkasının kapandığını kontrol ediyor; tek bir kırmızı hüküm varsa paket yazılmıyor. Temel grafın notları bolluğun nereden geldiğini yazıyor (Aldrich, Threads dergisi ve hazır giyim ölçüleri; kolunki FreeSewing’in Brian kalıbından) ve varsayılan değerleri sıralıyor.
Aynı C++ kodu iki kez derleniyor: komut satırı için CMake ile yerel olarak, tarayıcı için WebAssembly olarak (yaklaşık 5 MB’lık tek bir betik). Bir test, depodaki her elbisenin işlem listesini bir kez WebAssembly’de, bir kez yerel programla uyguluyor ve iki grafın her işlem ve geometri kaydında aynı olmasını istiyor; yalnız programı adlandıran not farklı olabilir.
- Girdi: temel graf, işlem listesi ve bir beden.
- Çıktı: çözülmüş graf, bitmiş ölçüleriyle doğrulayıcı raporu ve SVG.
- Kırmızı kareli mini: EU36’da doğrulayıcı bitmiş göğsü 900 mm, kalçayı 950 mm, etek ucu çevresini 1112 mm ölçüyor.
- Hat: motor hattı; motor kaynağı ve WebAssembly dosyası onun. Yerel programları entegrasyon dalında entegratör Root derliyor.
5. Çizim
Elbiseyi moda figürü üzerinde, önden ve arkadan teknik çizim olarak çiziyor. Figür, moda çizimlerindeki gibi sabit ve idealleştirilmiş tek bir EU36 kroki; bu yüzden her elbise aynı ölçekte çiziliyor, gerçek bedenleri yalnız kalıp kullanıyor. Depodaki 20 elbisenin 12’sinde, kırmızı kareli mini dahil, çizimdeki dikişler motorun çözdüğü parçalardan geliyor; bu yüzden kalıp çizimden önce üretilmek zorunda. Aynı çizim kodu komut satırında da tarayıcıda da çalışıyor.
- Girdi: okuma ve o 12 elbisede motorun çözdüğü yapı.
- Çıktı: SVG olarak teknik çizim.
- Kırmızı kareli mini: figür üzerinde etek olduğundan uzun görünüyor. Çizimin kendi notu, EU36 bedende eteğin belden 460 mm olduğunu ve dizin 120 mm üstünde bittiğini söylüyor.
- Hat: motor hattı.
6. Kalıp ve bedenleri
Aynı graf gerçek bir bedende hesaplanıyor ve gerçek ölçekte, milimetre olarak yazılıyor: kesim ve dikiş çizgileri, çentikler, düz boy okları, kat işaretleri ve kesim adetleriyle. Bedenler bir beden sözleşmesinde tanımlı: ücretsiz kalıpların EU36 bedeni (göğüs 84, bel 66, kalça 90 cm; burda style’ın kadın beden tablosundan) ve EU34’ten EU44’e bir seri. Her bedende aynı işaret noktaları var; çevre ve boy ölçüleri beden tablosundan geliyor, doğrulanmamış birkaç değer EU36’dan taşınıyor. Sabit bir “her bedende 4 cm ekle” kuralı yok. Graf işaret noktalarını ve oranları sakladığı için başka bir beden, aynı grafın başka bir bedende hesaplanması demek.
- Girdi: graf ve bir beden.
- Çıktı: paketin bastığı, SVG olarak kesim kalıbı.
- Kırmızı kareli mini: dört parça: ön orta ve ön yan, her biri 2 adet; arka orta, katlı kumaştan 1 adet; arka yan, 2 adet. 10 Ekim’de kalıp tarayıcıda EU34–EU44 bedenlerinde üretildi ve dikilebilirlik denetimi hata bulmadı; indirilebilen yalnız EU36.
- Hat: motor hattı. Kayıtlı bir tasarımı kayıtlı okumasından tarayıcıda başka bir bedende yeniden üretmek web hattının işi.
7. Paket
Kalıbı kâğıda döküyor ve talimatları yazıyor. Paketleyici geometriye dokunmuyor: bastığı her milimetre motorun hesapladığı bir milimetre; yanlış bir kalıp sessizce düzeltilmiyor, yanlış basılıyor. Dikiş sırası dikiş grafından geliyor: ayrı parçaları birleştiren dikişler önce, bir halkayı kapatıp düz işi tüpe çeviren dikiş en son; düz dikim (flat construction) yönteminde olduğu gibi. Rehberin cümleleri kodda yazılı ve bu kalıbın sayılarıyla dolduruluyor: bitmiş ölçüler, dikiş boyları ve çentiklerin yerleri. Aynı kod PDF’leri hem komut satırında hem tarayıcıda üretiyor.
- Girdi: kesim kalıbı, graf, okuma ve doğrulayıcının ölçüleri.
- Çıktı: dört PDF: bindirmeli, hizalama işaretli ve 100 mm’lik deneme kareli A4 kalıp; fotokopici için A0’da aynı kalıp; 115 ve 150 cm enli kumaş için kesim planı; ve dikiş rehberi.
- Kırmızı kareli mini: A4 kalıp 23 sayfa, A0 iki sayfa, dikiş rehberi 6 sayfa, kesim planı 1 sayfa; 115 cm enli kumaştan 1.69 m. Rehber vücut ve bitmiş giysi ölçülerini veriyor: göğüs 84 / 90 cm, bel 66 / 68.5 cm, kalça 90 / 95 cm.
- Hat: motor hattı (PDF ve rehber kodu); Root’un iş hattı onu en son çağırıyor.
8. Kontroller
Kodun denetledikleri: okuma kuralları; o olmadan paket yazılmayan doğrulayıcı; her pakette, paketin üretildiği dosyaların (kalıp, graf, okuma, yapı) ve paketleyicinin kendi kodunun içerik özetlerini (hash) taşıyan bir mühür; böylece herhangi bir değişiklikle geride kalan paket bayat diye bildiriliyor, yeniden üretiliyor ya da reddediliyor; iş hattının çizimin hâlâ okumayla uyuştuğunu denetleyen son adımı; ve yerelde koşulan, sitedeki motoru yerel motorla da karşılaştıran motor test takımı. Motor dosyaları değişince commit öncesi kanca (pre-commit hook) ve CI bir negatif kapı listesini koşuyor.
Kanıtlamadıkları: elbisenin oturduğu, kumaşın nasıl davrandığı ya da çizimin fotoğrafa sadık olduğu. Doğrulayıcının sıfır kırmızı hükmü bir biçim değişikliğini de yakalamıyor. Yeşil bir kontrol geometri hakkında bir bilgi, prova değil; hiçbir elbise dikilmedi. Birkaç sorun yeşil kontrollerden geçti ve ayrı bir inceleme ya da gerçek çıktı okunarak bulundu; dört hat yazısı bunlardan yedisini sıralıyor.
- Kırmızı kareli mini: depoda paketinin mührü, 17 Ekim’de 0 kırmızı hükümle biten bir doğrulayıcı koşusunu kaydediyor. Kalıbı ayrıca gerçek dosyalar üzerinden dokuz dijital incelemeden geçti; ilk sekizi geri çevirdi.
- Hat: her hat kendi dosyalarının testlerini koşuyor; Root her birleştirmeden sonra onları yeniden koşuyor.
Hangi katman hangi hattın
17 Ekim’deki koşuda iş dosyalara göre bölündü; her dosyanın tek bir yazarı vardı. Bu katmanlar için bunun anlamı şuydu:
- Okuyucu hattı: okuma.
- Motor hattı: üç otomatik fotoğraf ölçüm aracı, graf sözleşmesi, kalıp derleyicisi, C++ motoru ve WebAssembly dosyası, çizim, PDF ve rehber kodu.
- Root, entegratör: katmanları sırayla koşan iş hattı, site ile zincir arasındaki yerel köprü, yerel derleme ve entegrasyon testleri.
- Web hattı: motoru, çizim ve PDF kodunu tarayıcıda çalıştıran atölye ve gardırop sayfaları.
- 17 Ekim’de hattı olmayanlar: ayrıca koşulan ölçüm araçlarının çoğu, bağımsız kapılar ve komut satırı paketleyicisi.
Bir katman ile onu tarayıcıda çalıştıran sayfa farklı hatlara ait olabiliyor; ikisi Root’un birleştirmelerinde buluşuyor.
Hâlâ açık olanlar
- Hiçbir elbise dikilmedi ya da prova edilmedi. Beş ücretsiz EU36 kalıbı dijital örnek; kumaşını kesmeden önce bir prova (toile) dik.
- Ücretsiz beş kalıbın okumaları fotoğrafa göre düzeltildi ya da doğrudan yazıldı. Okuma adımının ürettiği hâliyle doğru olan bir okuma hâlâ açık.
- Motor EU34’ten EU44’e kadar her bedeni çizebildiği hâlde ücretsiz kalıplarda indirilebilen yalnız EU36.
- Bu sitedeki atölye tarayıcında tek bir örnek tasarım üretiyor. Henüz senin fotoğrafını ya da tarifini okumuyor.
İlgili: bir elbise, fotoğraftan PDF’e · dört çalışma hattı · prova (toile) dikmek