İskelet örnek yazı

Hattın üzerinde denendiği fikstür: bir yazının içerebileceği her öğe, iki dilde. Phase 5'te silinecek.

Yayımlandı
Dizi
Scaffold

Bu yazıyı İngilizce oku

Bu yazı iskeletin iki şeyi kanıtlaması için duruyor. Aynı klasörde İngilizce bir kardeşi var, yani /posts/scaffold-sample ile /tr/posts/scaffold-sample birlikte var oluyor, ikisi de diğerini hreflang ile bildiriyor ve dil değiştirici ana sayfaya uğramadan aralarında geçiyor. Bir de bir yazının içerebileceği her öğeyi taşıyor; böylece tipografi ölçeği, metin ritmi ve kod bloğu boşlukta değil, gerçek malzeme üzerinde görülüyor.

Gerçek bir yazı, girişe giriş yapmadan doğrudan davranışla başlar.

Başlıkta İ, ı, ğ ve ş

Türkçe her sayfada iki font dosyası yükler: ı, ç, ö ve ü latin dosyasında, ğ, ş ve İ ise latin-ext dosyasında durur. Işığı gibi bir kelime ikisinden birden kurulur, dolayısıyla latin-ext isteğe bağlı değildir — düşürülürse Türkçe sessizce bozulur, kelimenin ortasında yedek bir glif belirir.

Bir kapının fiziksel tarifi sentez sonrasında hücre listesinde görünür; bu cümle burada duruyor çünkü fi ikilisi Türkçede bitişik yazılmamalı ve serif yüzün locl kuralı bunu sayfanın lang değerine bakarak hallediyor.

Altındaki ara başlık

Bir yazı için üç seviye yeter. Dördüncüsü, sayfanın aslında iki sayfa olmak istediği anlamına gelir.

Üç değer

Bu sitede değer taşıyan her şey onu iki kez taşır: bir kez renkle, bir kez de rengin elinden alamayacağı bir şeyle.

DeğerHatBasılı
0ince, grimürekkep renginde 0
1iki kat kalın, mavimavi ve kalın 1
Xkesik, kırmızı, taramalı bantkırmızı ve kalın X

Bu tekrar işin özü. --sig-hi ile --sig-lo arasındaki parlaklık farkı yaklaşık 2:1; tek başına hiç yetmez. O yüzden asıl işi çizgi kalınlığı yapar, renk yalnızca doğrular.

Şekil 1. Üç değer, figürlerin kullandığı kalemle çizilmiş. Farkı önce kalınlık taşıyor, sonra renk: renkleri kapatsan da 1 hâlâ kalın olan çizgi.

Okuyan kişi figürü on saniyede çalıştırabilsin, sonra on dakika rahatça okuyabilsin.

Tasarım özetinden gelen bu cümle; ölçü genişliğinin, satır yüksekliğinin ve dokunma hedefi boyutunun tek gerekçesi. Sayfa fazla akıllı görünmeye başladığında yeniden okunmaya değer.

Kod

Kod yazıldığı gibi dizilir. Ligatürler her yerde kapalı, yani <= iki karakterdir ve bir sinyal adı cümlede, şemada ve dalga biçiminde aynı görünür. Aşağıdaki blok bu sayfaya yapıştırılmadı: snippets/rising-edge-detector/rising_edge_detector.sv dosyasının kendisi, çitin file= anahtarıyla dahil ediliyor. Yani okuyanın gördüğü kod, linter ile simülatörün okuduğu metnin ta kendisi — ve İngilizce sayfadakiyle aynı dosya, çünkü kod ve kod yorumları çevrilmez. Kenar sütunu dosyanın kendi satır numaralarını taşıyor; vurgulu satırlar bu sayfada da dosyada da 15–21 ile 24.

rising_edge_detector.sv
// One rising edge of sig_in produces one clock period of pulse.
//
// Reset style for this module: asynchronous, active low. One style per page,
// stated up front, so nothing on the page has to be read twice.
module rising_edge_detector (
    input  logic clk,
    input  logic rst_n,
    input  logic sig_in,
    output logic pulse
);

  // The value sig_in had one clock period ago.
  logic sig_d;

  always_ff @(posedge clk or negedge rst_n) begin
    if (!rst_n) begin
      sig_d <= 1'b0;
    end else begin
      sig_d <= sig_in;
    end
  end

  // High for exactly one clock period, on the cycle after sig_in rises.
  assign pulse = sig_in & ~sig_d;

endmodule

Bu blokta dikkat çeken üç şey var ve üçü de mantıkla değil, tipografiyle ilgili:

  • always_ff ve logic birer anahtar kelime, tek bir renk alıyorlar; 1'b0 ise bir sabit ve başka bir renk alıyor.
  • Yorum satırı soluk ve dik. Eğik yorumlar, kod gösteren her sayfaya yalnızca eğim için 43 KB'lık bir mono italik dosya bindirirdi.
  • Hiçbir kelime tirelenmiyor. rising_edge_detector satır sonunda bölünse okunamazdı, bu yüzden hyphens site genelinde manual.

Satır numaraları yalnızca okundukları yerde çiziliyor: dosyadan gelen bir blokta — numaralar dosyanın kendi numaraları — highlight= taşıyan bir blokta, numbers diyen her çitte ve bir diff'te; orada aynı sütun numara yerine + veya taşıyor. Bunların dışında, elle yazılan bir çitte numara yok; ilk karakteri bu paragrafla aynı sol kenarda duruyor. Kenar sütunu telefonda satırın yaklaşık onda birini yiyor ve içine sayılacak bir dosya yokken bir satır numarası hiçbir şey ifade etmiyor:

npm run lint:sv

Vurgu, dosyanın içine // [!code highlight] yorumu koymak yerine meta dizesinde yazılıyor; çünkü diskteki .sv dosyası, Verilator'ın, Icarus'un ve Yosys'in okuduğu metnin aynısı kalmalı. Elle yazılan bir çit hâlâ yorum biçimini kullanabilir; bir diff de işaretini numaranın duracağı yere koyuyor:

logic pulse_q;            
logic pulse_d, pulse_q;   

Matematik

Formüller KaTeX ile diziliyor; stil dosyası yalnızca formül içeren sayfalara yükleniyor. Satır içinde: bir yolun en yüksek saat frekansı fmax=1/Tclkf_{\max} = 1/T_{\mathrm{clk}}. O yoldaki bolluk (slack) ise, yol üzerindeki her şey payını aldıktan sonra periyottan geriye kalan:

tslack=Tclk(tcq+tlogic+tsetup+tskew)t_{\mathrm{slack}} = T_{\mathrm{clk}} - \left( t_{\mathrm{cq}} + t_{\mathrm{logic}} + t_{\mathrm{setup}} + t_{\mathrm{skew}} \right)

Bu bir tanım, ölçüm değil: bu terimlerin gerçek bir parçadaki değerleri zamanlama raporundan gelir ve bu sitede hiçbir sayı rapor olmadan yazılmaz. Blok hâlindeki bir denklem yana kayan bir kutuda duruyor; tablo ve kod satırıyla aynı gerekçeyle — uzun bir formül telefonda sayfanın genişliğini belirlememeli.

Bağlantılar ve vurgu

Metin içindeki bağlantı vurgu rengini ve altı çizgisini alır; çünkü vurgu renginin tek bir işi var: okuyanın dokunabileceği şeyi işaretlemek. Sayfada başka hiçbir şey onu ödünç alamaz — ne bir başlık, ne bir figür, ne de bir hat. Hakkında sayfası bunu kimin ve neden yazdığını anlatıyor.

Vurgu, bir kelime için eğik ve bir öbek için yarı kalın; ikisi de renk değil.

Etiketler rtl scaffold

Bir hata mı buldun? Düzeltme gönder