Yazılım Gündemi - 2020/24
15-21 Haziran 2020

İçindekiler

yazilim-gundemi-banner.png

< Önceki Gündem | 15-21 Haziran 2020 | Sonraki Gündem >

TeknoSeyir'de Oku

1 GitHub varsayılan branch ismini "main" olarak değiştirecek

Yaklaşık bir ay kadar önce ABD'de bir polisin siyahi bir vatandaşın ölümüne yol açmasının ardından ortaya çıkan "Black Lives Matter" protestoları ucundan kıyısından yazılım sektörünü de etkilemeye başlamıştı. Geçtiğimiz haftalarda Google'ın Go projesi içerisindeki "master/slave" ve "blacklist/whitelist" gibi ifadeleri kaldırığını haberleştirmiştim (bkz: Yazılım Gündemi - 2020/22). Bu hafta ise GitHub'ın benzer bir değişikliğe gideceğinin haberi aldık.

Hepimizin bildiği ve neredeyse her gün kullandığımız git versiyon kontrol sisteminin varsayılan branch ismi olan "master" artık "main" olarak değiştiriliyor. Bu dal ismini zaten kendimiz de değiştirebiliyorduk ama artık GitHub'da oluşturduğunuz depoların varsayılan dal ismi "main" şeklinde gelecek. Bunun nedeni olarak ise "master/slave" terminolojisi gösterilmiş. Açıkcası bana bu neden biraz saçma geldi çünkü git versiyonlama sisteminde "master/slave" ikilisi yok; sadece "master" terimi var o da ırkçı bir anlama gelemeyecek kadar genel bir kullanım haline gelmiş durumda. Bu değişikliği saçma bulan bir geliştirici de GitHub'ın bunu uygulamaması için Change üzerinde bir imza kampanyası başlatmış.

Aynı ve benzer değişikliklerin farklı projelerde (Örnek: openssl) ve araçlarda da yapılması gerektiğine yönelik birçok tartışma sektör içerisindeki çeşitli platformlarda dönüyor. "blacklist/whitelist" ikilisinin "blocklist/allowlist" olarak değiştirilmesini anlayabiliyorum; aynı şekilde "master/slave" ikilisini kullanan projelerin de değiştirmesini anlıyorum ama sadece "master" ifadesini kullanan GitHub'ın böyle bir değişikliğe neden gittiğini anlayamıyorum. Sanırım "Ya herkes Black Lives Matter ile ilgili PR çalışması yapıyor, biz de böyle bi' şey yapalım, geri kalmayalım" diye düşünmüş olabilirler. Açıkcası ben bu tarz yüzeysel şeyleri konuyu farklı noktaya çekme çabası olarak görüyorum. Çünkü ırkçılık sorununun asıl kökenini bulma amacından uzaklaştıran bir davranış. O zaman "üniversitede master yapmak" ifadesi ya da ses terminolojisindeki "master" ifadesi de değiştirilsin yani (!).

Bu konuda siz ne düşünüyorsunuz? Yorumlar bölümünde konulaşım.

2 GitHub Super Linter tanıtıldı

Programlama yaparken özellikle de takım halinde çalışırken kodlarda belirli bir standardı oturtmak önceden zaman alıcı olabiliyordu. Her ne kadar günümüzde linter araçları imdadımıza yetişse de onların da konfigürasyonu ile uğraşmak yine süreci uzatıyor. Özellikle de birden çok programlama dilinin kullanıldığı projelerde haliyle birden çok linter aracı kullanmak gerekiyor. İşte bu ve benzeri duruma çözüm getirmek için GitHub'da, geçtiğimiz hafta içerisinde GitHub Super Linter isimli açık kaynak projesini tanıttı. GitHub Action üzerinden çalıştırabilen bir linter aracı.

GitHub Super Linter, aslında isminden de anlaşılacağı gibi birden çok linter aracını tek çatı altında toplayan, bunları çalıştıran ve sonuçlarını raporlayan ve GitHub Action ile projenize kolay bir şekilde dahil edebileceğiniz bir araç. Python, Ruby, JavaScript/TypeScript ve Go gibi popüler programlama dillerinin yanında JSON, YAML, DockerFile ve CSS gibi dosya formatlarını da destekliyor. Yalnız PHP için phpcs aracı ile bir destek sunmamışlar. Belki bunu ben ekleyip pull request gönderebilirim. Bakacağım buna.

github-super-linter.png

Şekil 2: Birçok programlama dili ve dosya formatı için linter çalıştırabiliyor

GitHub Super Linter'in sağladığı bazı kolaylıklar ise şu şekilde:

  • master vb. dallara çalışmayan kodların eklenmesini önleme
  • Birden çok programlama dili ile çalışırken kolayca kod standardı oluşturma ve tüm projede kontrolleri sağlama
  • Code review süreçleri için otomatizasyon yardımı

GitHub'da depoladığınız projenize GitHub Action üzerinden çok kolay bir şekilde ekleyip, istediğiniz diller ve dosya formatları için özelleştirmesini yaparak aktifleştirebiliyorsunuz. Kullanımı ve özelleştirilmesiyle ilgili diğer konular için şu GitHub deposunun README.md dosyasına göz atabilirsiniz.

3 Go dili topluluğu generic programlama özelliği için yeni bir öneri yayınladı: Type Parameters

İlk yazılım gündemi yazılarının birinde (bkz: Yazılım Gündemi - 4) Go dili topluluğunun programlama diline generic programlama özellikleri eklemeyi tartıştığını haberleştirmiştim. Geçtiğimiz hafta ise uzun bir aradan sonra bu konuda ilk kez bir gelişme oldu ve Go takımı yeni bir öneriyi ("proposal") tasarım taslağı olarak yayınladı. Dolayısıyla bunun henüz dile eklenmiş yeni bir özellik ("feature") olmadığını ve üzerinde çeşitli değişikliklerin devam edeceğini söylemekte fayda var.

Bu generic programlama özelliği için daha önce yayınlanan proposal'da duyurulan Contracts yapısı artık terk edilmiş gözüküyor. Onun yerine gelen tasarımsal değişiklik ise Type Parameters özelliği oldu. Kısaca bir örnek yapmak gerekirse:

func Print(type T)(s []T) {
  for _, v := range s {
    fmt.Println(v)
  }
}

Yukarıda tanımladığımız fonksiyon kısaca herhangi bir türden diziyi alıp, içerisindeki elemanları her biri bir satır olacak şekilde yazdırıyor. Yani artık int dizisi için ayrı, string dizisi için ayrı fonksiyon yazmaya gerek kalmıyor. Yukarıdaki fonksiyonun kullanımı ise şu şekilde:

Print([]string{"Selam TeknoSeyir!", "Go generic programlama", "özelliğini deniyoruz.\n"})
Print([]int{1, 2, 3, 4, 5})

go-generic-programlama.png

Şekil 3: Siz de bu özelliği test etmek isterseniz Go takımı tarafından hazırlanmış şu Playground sayfasını kullanabilirsiniz: https://go2goplay.golang.org/

Go takımı ve topluluğu özellik hakkında geri bildirimler toplamaya ve taslağı geliştirmeye devam edecekler. Eğer bir aksilik olmazsa bu özelliği Ağustos 2021'de yayınlanması beklenen Go 1.17 sürümüyle birlikte stabil olarak kullanabileceğiz.

Takım tarafından sunulan proposal sayfası acayip detaylı ve uzun bir sayfa, benim de hepsini okumaya vaktim olmadığı için şimdilik bu kadar bilgi verebiliyorum ama tabii ki dilerseniz detaylı bilgi ve kullanım örnekleri için konu başlığına eklediğim bağlantılara tıklayabilirsiniz.

4 Chromium takımının 2020 yılı tarayıcı uyumluluğu çalışmaları

2019 yılında yayınlanan MDN Developer Needs Assessment anketi sonuçlarından sonra görüldü ki eskisi kadar olmasa da hâlâ daha web geliştiricilerin en önemli sorunlarından birisi tarayıcılar arasındaki uyumsuzluk sorunları. Bu bağlamda geçtiğimiz hafta içerisinde de Chromium takımı bir blog yazısı yazarak 2020 yılı boyunca üzerinde çalışacakları uyumsuzluk sorunlarından ve yaptıkları şeylerden bahsettiler.

Mart ayındaki bir yazılım gündemi yazısında (bkz: Yazılım Gündemi - 2020/13) form elemanlarının stillerinin yenilendiğinden bahsetmiştim. Dolayısıyla bu yazıya onu tekrar dahil etmiyorum. Sadece şöyle bir ekleme yapayım: Form elemanlarının stillerinin güncellenmesine devam edilecekmiş. Bunun dışında diğer konular ise şu şekilde:

  • Flexbox ile ilgili uyumsuzluk sorunlarının üzerinde yoğun bir şekilde çalışılıyormuş.
  • Flexbox ve CSS Grid özellikleri, takımın üzerinde çalıştığı yeni LayoutNG arayüz motoru ile yenilenecekmiş.
  • Scroll olayı ile ilgili de yeni uyumluluk çözümleri düşünülüyormuş fakat tıkanılan, çözülmesi gereken bazı sorunlar varmış.

Çalışmalar ile ilgili daha detaylı bilgiler için konu başlığına eklediğim bağlantıya tıklayabilirsiniz.

5 Google, geliştiricilere uygulamayı yüklemeden abonelik satma imkanı sağlayacak

Google'ın kendi Android işletim sistemiyle birlikte dağıttığı Play Store mağaza uygulaması üzerinde artık kullanıcılar uygulamayı indirmeden de Google üzerinden ilgili uygulamanın aboneliğini satın alabilecek. Geçtiğimiz hafta Android 11'in yayınlanmasıyla birlikte sessizce duyurulan yeni Google Play Billing kütüphanesinin versiyon 3 sürümü buna izin veriyor.

Şimdilik sadece belirli birkaç geliştirici ve firmaya test olarak sunulmuş bu özellik ile birlikte uygulamanın market sayfasında "Yükle" butonunun yanına yeni bir "Abone ol ve yükle" butonu geliyor. Eğer uygulama birkaç günlük ücretsiz bir teklif sunuyorsa "Free trials & Install" yazabiliyor.

google-play-install.png

Şekil 4: Arayan ve SMS engelleme uygulaması Truecaller bu özelliği test edebilen uygulamalardan birisi.

Böylece artık kullanıcılarımız uygulamayı indirmeden de uygulama içerisinde satılan uygulama-içi satın almalar hakkında bilgi alabiliyor ve dilerse Play Store üzerinden bu işlemini gerçekleştirebiliyor olacak.

Diğer detaylar için konu başlığına eklediğim haber bağlantısına ya da Google'ın yayınladığı blog yazısına bakabilirsiniz.

6 Bootstrap 5 Alpha yayınlandı

Birçok back-end geliştiricinin kolayca uygulama çıkarabilmesini sağlamış ve bu alandaki diğer arayüz framework'lerine de yol göstermiş olan Bootstrap v5 Alpha sürümü geçtiğimiz hafta içerisinde duyuruldu.

Bu sürümle birlikte artık jQuery terk edilmiş ve eski Internet Explorer sürümleri için de destekler sonlanmış gözüküyor. Artık Bootstrap kullanırken yanında bedava ve ekstra olarak gelen jQuery bağımlılığı yok. Yine de jQuery'ye katkılarından dolayı teşekkür etmek gerek.

Internet Explorer desteğinin sonlandırılmasının bir getirisi olarak artık Bootstrap 5 ile birlikte CSS üzerinde "Custom Properties" özelliğine sahip olduk. Bu sayede artık CSS kodunun herhangi bir yerinde kullanabilmek üzere değişkenler tanımlayabileceğiz. Örnek vermek gerekirse:

:root {
  --teknoseyir-kirmizisi: #ab1500;
  --beyaz: #fff;
}

.tekno {
  background-color: var(--beyaz);
  color: var(--teknoseyir-kirmizisi);
  /* */
}

Artık bu yapıyı Bootstrap kendisi de elemanlarında kullanıyor.

Tabii ki bu sürümün Alpha etiketiyle yayınlandığını hatırlatmakta fayda var. Yani henüz geçiş yapmak için çok erken. Yine de diğer detayları merak ediyorsanız konu başlığına eklediğim bağlantıya tıklayabilirsiniz.

7 Windows Terminal Preview 1.1 sürümü yayınlandı

Microsoft, geliştiricileri Windows ekosistemine çekmek için hamlelerine devam ediyor. Geçtiğimiz hafta yayınlanan Windows Terminal Preview 1.1 sürümüyle birlikte gelen özelliklerin bazıları şu şekilde:

winterm11-font-weight.png

Şekil 5: Artık "fontWeight": "normal" gibi bir ifadeyi ayar dosyanıza ekleyerek terminal ekranındaki fontun kalınlığını ayarlabileceğiz. Tüm opsiyonlar için buraya bakabilirsiniz.

Artık Alt+Tıklama kombinasyonunu aşağıdaki gibi kullanarak terminal ekranımızı çoklu panellere bölebileceğiz.

winterm11-alt-tiklama.gif

Bu sürümle birlikte Windows Terminal'in sekme özellikleri de gelişmiş durumda. Artık sekmelerin isimleri değiştirebileceğiz ve onlara özel renkler atayabileceğiz.

winterm11-sekme-renk.png

Şekil 7: Sekmenin rengini değiştirmek için sağ tıklayıp, "Color…" seçeneğine gelmek gerekiyor.

winterm11-sekme-adlandir.gif

Şekil 8: Sekmenin ismini değiştirmek için sağ tıklayıp "Rename Tab" demek gerekiyor. Sekme isimlerinde Emoji de kullanılabiliyor :)

Bunlara ek olarak artık komut satırını kullanarak yeni bir Windows Terminal penceresi oluştururken iki yeni opsiyonumuz da var. İlki --maximized ya da -M ile yeni pencereyi ekranı kaplayacak şekilde oluşturabiliyoruz; ikincisi ise --fullscreen ya da -F ile yeni pencereyi tam ekran modunda oluşturabiliyoruz. Ayrıca siz de benim gibi "Terminal benim yaşam ortamım birçok şeyi orada yaparım" diyenlerdenseniz Windows 10'un açılışıyla birlikte bir Windows Terminal penceresi açılsın istiyorsanız ayar dosyanıza aşağıdaki satırı ekleyebilirsiniz:

"startOnUserLogin": true

Her ne kadar GNU/Linux tarafına çoktan geçmiş bir geliştirici olsam da bu gelişmelere Windows üzerinde çalışmak zorunda olan arkadaşlar için seviniyorum. Mutlaka bir ara ben de deneyeceğim. Bakalım Microsoft ilerleyen sürümlerde başka ne gibi özellikler gelecek.

8 Yaklaşan Online Etkinlikler

9 Diğer Haberler

10 Lisans

Tarih: 22 Haziran 2020

Yazar: Eren Hatırnaz

Oluşturuldu: 2021-01-24 Sun 22:46

Validate