stitchu

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?.

  1. Zincire kısa bir bakış
  2. Okuma
  3. Fotoğraf ölçüm araçları
  4. Kalıp grafı
  5. C++ motoru
  6. Çizim
  7. Kalıp ve bedenleri
  8. Paket
  9. Kontroller
  10. Hangi katman hangi hattın
  11. 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.

  1. Okuma: bir fotoğraf ya da tarif, elbisenin yapılandırılmış bir tanımına dönüşüyor.
  2. Fotoğraf ölçüm araçları: fotoğrafın gösterebildiği ölçülüyor ve okumaya yazılıyor.
  3. Kalıp grafı: okuma, temel bir giysi grafı üzerinde bir işlem listesine dönüşüyor.
  4. C++ motoru: işlemleri uyguluyor, sonucu denetliyor ve çiziyor.
  5. Çizim: elbise, moda figürü üzerinde teknik çizim olarak.
  6. Kalıp ve bedenleri: aynı graf, gerçek bir bedende, milimetre olarak.
  7. Paket: A4 ve A0 kalıplar, kesim planı ve dikiş rehberi.
  8. 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.

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.

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.

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.

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.

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.

Four-piece EU36 cutting pattern of the red gingham button-front mini: front centre with the button lap, cut-on facing and eight button marks, front side, back centre on the fold, and back side, each with a grainline arrow.
Kırmızı kareli mininin yayımlanan EU36 kesim kalıbı, motorun yazdığı hâliyle. Bu genel görünümde parça adları Türkçe; PDF’lerde İngilizce.

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.

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.

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:

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

← Bütün günlük yazıları