Yazılım Gündemi - 2020/25

< Önceki Gündem   |   22-28 Haziran 2020   |   Sonraki Gündem >

Yazılım Gündemi ile ilgili gelişmeler hakkında bildirim almak için bu adresdeki konuya bakabilirsiniz. Yazılım Gündemine katkı sağlamak için yazılımın herhangi bir alanıyla ilgili karşılaştığınız haberleri sosyalde #YazılımGündemineMalzeme etiketi ile paylaşabilirsiniz.

Container güvenliği ile ilgili gelişmeler: XORDDoS, Kaiji ve kripto para madenciliği

Container teknolojisinin yaygınlaşmasıyla birlikte güvenlik sorunlarının da ön plana çıktığını zaten yazılım gündemi yazılarında sürekli dile getiriyorum. Geçtiğimiz hafta ise yine Container teknolojisini hedef alan birçok güvenlik açığı ortaya çıkarıldı.

Bunlardan ilk ikisi Trend Micro güvenlik araştırmacıları tarafından ortaya çıkarılan ve Docker sunucularını botnet ağına katarak DDoS saldırıları gerçekleştirmeye yarayan XORDDoS (Backdoor.Linux.XORDDOS.AE) ve Kaiji DDoS (DDoS.Linux.KAIJI.A) isimli zararlılar. XORDDoS zararlısı sistemdeki tüm Docker konteynerlerini tarayıp kendini onlara enjekte ederken diğeri Kaiji ise kendi zararlı docker konteynerlerini oluşturup, onları çalıştırıyor. Dolayısıyla Kaiji'yi tespit etmek daha kolay. Eğer docker ps komutunu çalıştırdıktan sonra çıkan listede tanımadığımız bir konteyner varsa onlardan şüphelenebilirsiniz.

Geçtiğimiz hafta içinde ortaya çıkan bir diğer olay ise, Docker Hub platformundaki "azurenql" isimli kullanıcının paylaştığı Kripto para madenciliği için kullanılan Docker İmaj'ları. Kullanıcı adını Microsoft'un Azure bulut hizmetine benzetmiş ve bu sayede platforma yüklediği imajlar yüzlerce kez indirilmiş.

"azurenql" isimli kullanıcının paylaştığı docker imajları

Paloalto Networks isimli firmanın altındaki Unit 42 güvenlik takımı bu imajları ortaya çıkardıktan sonra hepsi silinmiş ve ilgili Docker Hub kullanıcısı da sistemden atılmış. Fakat bu imajların yayınlandığı tarihten (Ekim 2019) bu yana ilgili kripto para cüzdanı için 36.000$'dan (525.38 XMR) fazla para madencilik yoluyla oluşturulmuş. Yani yapan kişi bayağı bir para kazanmış gözüküyor.

Bu haberdeki birçok güvenlik açığına yol açan sorun ise Docker'ı yönetmek için kullanılan port numarasının (2375) tüm internete açılmış olması. Kötü amaçlı kişiler interneti tarayarak bu açık portları yakalayıp, ilgili sistemlere girebiliyor. Dolayısıyla yapılması gereken ilk iş bu portu internete kapatmak. Daha sonra da sunucularınızda çalışan docker konteynerlerini kontrol etmek.

Apple WWDC20 etkinliğinde duyurulan bazı gelişmeler

Apple, geçtiğimiz hafta Pazartesi günü World Wide Developers Conference 2020 (WWDC20) etkinliğini gerçekleştirdi. Her ne kadar isminde "geliştiriciler" ifadesi geçse de Apple'ın daha çok son kullanıcılar için duyurular yaptığı bu etkinliğe damgasını vuran konu ise Apple'ın Mac sistemlerde Intel işlemcilerden kendi ARM tabanlı işlemcisine geçecek olması oldu. Daha çok son kullanıcıları ilgilen konular için TeknoSeyir'de yayınlanan Apple WWDC20 Değerlendirmesi videosunu izleyebilirsiniz. Ben bu yazıda daha çok geliştiricileri ilgilendiren bazı kısımlara değineceğim.

Öncelikle en baştan söylemek gerek ki Apple'ın bu ARM tabanlı kendi işlemcisine geçme işi hemen gerçekleşecek bir şey değil (teknik olarak mümkün olsa da pratikte sorunlar yaratır). Bu geçiş 2 yıllık bir süreçe yayılmış durumda. Bu geçiş süreci elbette bağımsız geliştiricilerin uygulamalarını ARM tabanına geçirmesini de içeriyor. Bu bağlamda Apple, geçtiğimiz hafta içerisinde Universal App Quick Start Program'ını duyurdu.

Programın içeriği: Beta yazılım ve araçlara erişim, Geliştirici Geçiş Kiti (Donanım), Developer Labs, özel forumlar, teknik destek ve geliştirme için dokümantasyonlar

Yalnız bu programa başvurmak ücretsiz değil. Apple yukarıdaki hizmetler için geliştiricilerden 500 Dolar talep ediyor ve henüz ülkemizden sipariş edilemiyor. Donanımsal bir değişim olduğu için elbette Apple, bu programa başvuran kişi ve firmalara ARM tabanlı, geliştirme için kullanılabilecek bir kit sistemi de veriyor. Tabii ki program tamamlandığında geri verilmesi kaydıyla.

Bu yılın sonunda ve 2021'in başında ilk ARM tabanlı ürünleri çıkarmaya başlayacaklar fakat tabii ki bu süre zarfında tüm geliştiricilerin ARM tabanına geçmesi mümkün değil. İşte bu sorunu çözmek adına Apple, geçmişte de PowerPC'den Intel'e geçerken kullandığı Rosetta emülatörünü tekrar canlandırıp Rosetta 2 ismiyle işletim sisteminin içine gömecek. Yüklediğiniz bir uygulama eğer x86_64 mimarisi komutlarını barındırıyorsa bu uygulama otomatik olarak tanınacak ve Rosetta 2 emülatörü ile ARM tabanına dönüştürülüp, çalıştırılacak. Native ARM tabanlı uygulama kadar performanslı olamayacağı söylense de bunun zaten geçiş süreci içerisinde kullanılacak bir ara çözüm olduğu düşünülünce pek sıkıntı çıkaracağını düşünmüyorum. Yalnız bunun da birkaç kısıtlaması mevcut: JIT (Just-in-time) derleyicisi içeren uygulamalar, Kernel eklentileri ve sanal makine uygulamalarını ARM tabanına dönüştüremiyor. Bu da demek oluyor ki WMWare vb. yazılımların şu anki halleriyle orada çalışamayacak. Elbette ilgili firmalar ARM tabanlı sistemler için sanallaştırma çözümlerini geliştireceklerdir ileriki zamanlarda.

Benim önüme düşen bir diğer yenilik ise iOS tarafında: App Clips. Artık kullanıcılarımıza uygulamamızın tamamını yüklemeden sadece küçük bir parçasını kullandırabileceğiz. Bu küçük parça uygulama da işi bitince kullanıcıya uygulamanın tam halini yüklemesi de tabii ki teklif ediliyor. Yani bir nevi demo sunabileceğiniz kullanıcılara.

Apple'ın mobil cihazlarındaki uygulama marketinin işleyişiyle ilgili de bir değişiklik söz konusu. Artık geliştiriciler App Store kurallarını ihlal ettiği durumlarda Apple'a itiraz edebilecekler. Apple da bu süre zarfında kullanıcıların hatalardan mağdur olmaması için geliştiriciye hata giderme güncellemelerini yayınlama izini verecek.

Konferansı canlı olarak izlemedim. Sadece takip ettiğim kaynaklardan önüme düşen haberlere göz atıp değerlendirmelerimi yaptım. Haliyle duyurulan her konuya yer verememiş olabilirim. Eğer bu konferansta duyurulan ve geliştiricileri ilgilendiren başka konular biliyorsanız yorumlar bölümünde dile getirebilirsiniz.

GitLab 13.1 sürümü yayınlandı

GitLab, geçtiğimiz hafta içerisinde 13.1 sürümünü yayınladı. Bu sürümden gözüme çarpan bazı yenilik ve değişiklikler ise şu şekilde:

Merge Request Reviews artık herkese açık

İlk olarak GitLab 11.4 sürümüyle birlikte GitLab Premium özelliği olarak sunulan bu özellik artık herkesin kullanımına açıldı. Artık bir merge request'i review ederken birden çok yorumu tek seferde yazıp gönderebileceksiniz. Böylece karşı tarafın e-posta kutusu da birden çok maille dolmamış olacak.

Değiştirilen dosyalar için testleri önceliklendirme

Büyük projelerde kod yazarken en can sıkıcı şeylerden biri de kodunuzu uzak git sunucusuna gönderdiğiniz çalışan CI/CD süreçlerinin sonuçlanmasını beklemek. Bazen yeni yazdığınız bir testin geçemediğiniz görmeniz için çok uzun süreler beklemeniz gerekebiliyor. İşte GitLab da tam bu soruna çözüm getirmiş ve eğer bir test dosyasında değişiklik yapılmışsa o dosyadaki testleri daha önce çalıştırıyor ve sonuçlarını gösteriyor. Böylece vakit kazanmış oluyorsunuz. Yalnız bu özellik henüz ücretsiz sürümde mevcut değil.

Code Intelligence

GitLab ve Sourcegraph partnerliğiyle ortaya çıkan bu özellikle birlikte artık GitLab'ın Web IDE'sinde kodlarda gezinirken bir fonksiyonun üzerine geldiğimizde onun dokümantasyon bilgilerini görebileceğiz ve istersek tanımlandığı dosyayı açabileceğiz. Ayrıca bu sürümle birlikte Web IDE'ye EditorConfig desteği de gelmiş. Bugüne kadar olmaması şaşırttı beni.

İlgili sürüm notları sayfası epeyce bir uzun hepsine göz atamadım fakat baktıklarım ve GitLab'ın kendi öne çıkardıkları içerisinde gözüme çarpanları aktarmak istedim. Diğer gelişmeler ve değişiklikler için konu başlığına eklediğim bağlantıya tıklayabilirsiniz.

GitHub ana sayfa ve depo sayfalarının tasarımını güncelledi

Aslında bir önceki gündem yazısında değerlendirecektim bu konuyu ama GitHub ile ilgili iki tane önemli gelişme verken bir GitHub haberi daha eklemek hem çeşitliliği azaltacaktı hem de bir hafta önce bu değişiklik henüz beta aşamasındaydı. Bu hafta ise artık beta'dan çıkmış ve resmi olarak duyurulmuş durumda.

GitHub'ın yeni depo sayfası tasarımı.

Görülebildiği gibi profil resimleri dahil tüm elemanlara kenar yuvarlatma işlemi uygulanmış. Ayrıca ikonlar da değiştirilmiş. Benim henüz alışamadığım bir değişiklik de eskiden üst kısımda olan kısa depo açıklaması, versiyon bilgileri, kullanılan programlama dilleri gibi görselliklerin sağ tarafa taşınmış olması oldu. Bir depo sayfasına girdiğimde istemsiz olarak ilk üst kısma bakıyorum, bulamayınca yana bakıyorum. Buna alışabilirim bir süre sonra ama hâlâ daha karanlık tema özelliğinin gelmemiş olmasına ne alışabiliyorum, ne de tahammül edemiyorum. Gerçekten anlamakta zorlanıyorum. Geliştiriciler için hazırlanmamış birçok sitede bile bu özellik varken GitHub gibi çoğunlukla bizim kullandığımız ve geceleri aktif olduğumuz bir platformun karanlık tema özelliğin olmaması nereden bakarsanız bakın saçmalıktır! Beta süresindeyken geri bildirim olarak göndermiştim fakat dikkate alınmamış demek ki. GitHub'dan biraz soğumaya başladım ne yalan söyleyeyim.

Yeni tasarım hakkında siz ne düşünüyorsunuz? Alışabildiniz mi yoksa siz de benim gibi elemanların eski tasarımdaki yerlerine hala bakanlardan mısınız? Karanlık temasının hala daha gelmemiş olmasına kaç rezalet puanı verirsiniz? Yorumlar bölümünde konuşalım.

Python'a Pattern Matching özelliği eklenmesi için taslak öneri sunuldu

Geçtiğimiz hafta içerisinde yayınlanan taslak öneri dokümanıyla birlikte eğer öneri kabul edilirse artık Python'da şu bir söz dizimi (syntax) yazmak mümkün olacak:

match degisken:
    case 0 | 1 | 2:
        print("Küçük sayı")
    case [] | [_]:
        print("Kısa bir dizi")
    case str():
        print("String bir ifade")
    case _:
        print("Başka bir şeyler")

Türkçe'ye örüntü tanıma ya da desen tanıma olarak çevirirsek yanlış olmaz sanırım. Bu özellikle birlikte gördüğünüz gibi birden çok sorgulama ifadesini tek bir değişken için çalıştırabileceğiz. Python'da diğer birçok dilde olan switch/case yapısının olmaması da düşünüldüğünde bence böyle bir özelliğe günümüzde ihtiyaç var.

Daha önce de bir tane dilin yaratıcısı tarafından olmak üzere 2 kez denenmiş bu özelliğin eklenmesi fakat kabul edilmemiş (bkz: PEP 275) (bkz: PEP 3103). Bakalım bu seferki denemenin sonucu ne olacak? Hep birlikte göreceğiz.

Angular 10.0.0 sürümü yayınlandı

Eskilerin popüler ön yüz geliştirme frameworklerinden biri olan Angular geliştirilmeye devam ediyor. Geçtiğimiz hafta yayınlanan 10.0.0 sürümüyle birlikte gelen bazı özellik ve değişiklikler ise şu şekilde:

Bu sürümle birlikte eklenen yeni tarih aralığı seçme aracı

Yeni Date Range Picker elemanını mat-date-range-input ve mat-date-range-picker komponentleriyle birlikte kullanabilirsiniz. Daha fazla detay için bu sayfayı ziyaret edebilirsiniz.

Ayrıca bu sürümle birlikte opsiyonel olarak "strict" mod özelliği de gelmiş durumda. Yeni bir proje oluştururken ng new --strict komutunu kullanırsanız bu modun aktif olduğu bir proje yaratabilirsiniz.

Angular'ın geliştirilmesi için kullanılan teknolojilerin sürümleri de yükseltilmiş. Bunlar arasında TypeScript 3.9 sürümüne geçiş, TSLib ve TSLint araçlarının güncellenmesi de var.

Bu sürümle birlikte gelen diğer özellik ve değişiklikler için konu başlığına eklediğim bağlantıya tıklayabilirsiniz. Eğer projenizi Angular 10 sürümüne yükseltmek istiyorsanız yükseltme rehberi için bu sayfayı ziyaret edebilirsiniz: https://update.angular.io/.

Perl 7 sürümü duyuruldu

Geçtiğimiz hafta düzenlenen Perl konferansında, Perl programlama dilinin yeni sürümü olan Perl 7 duyuruldu. Fakat düşündüğünüz gibi büyük kod değişiklikleri içeren bir sürüm değil, daha çok Perl 5'in daha modern varsayılan ayarlarla birlikte gelen hali gibi düşünebilirsiniz. Tabii ki ileride büyük kod değişiklikleri içeren major sürümler de gelecek.

Bu aynı zamanda demek oluyor ki Perl 6 sürümü hiçbir zaman olmayacak. Bana PHP 5'den PHP 7'ye geçişi hatırlattı bu durum. İlginç bir bilgi: PHP 6 etiketli bir sürüm olmamasına rağmen Türkiye'de bir yayınevi bu isimde kitap basmıştır 🙂

Diğer Haberler

BeğenFavori PaylaşYorum yap
  • Eren Hatırnaz @erenhatirnaz

    Geldi!
    Apple etkinliğini izleyemedim ama takip ettiğim kaynaklardan önüme düşenleri değerlendirmeye çalıştım. Umarım beğenirsiniz 🙂
    Geçen hafta değerlendiremediğim ve "beta'dan çıksın öyle bakalım" dediğim GitHub'ın yeni tasarımı şansımıza bu hafta betadan çıkmış. Değerlendirmesi yazının içinde mevcut.
    Herkese iyi okumalar 🙂

  • Bezmialem @bezmialem

    Tarayıcıda "Dark Reader" eklentisi ile heryere siyahı bastım. Bu zamanda beyaz arkaplan tasarlayan tasarımcının, talep eden girişimcinin mezarına bir tas su dökmem.

    Xodo" ile pdf arkaplanlarını da siyaha çevirdim. Adobe işe yaramazının readerindan daha kaliteli okuma deneyimi veriyor.

    • Eren Hatırnaz @erenhatirnaz

      Dark Reader'ı ben sevemedim bi' türlü ya. Sayfanın render edilmesini uzatıyor biraz. Sitenin kendinden desteklemesi çok daha iyi oluyor.

      Ben de GNU/Linux üzerinde Zathura kullanıyorum PDF okuyucu olarak normalde CTRL+R ile renkleri tersine çevirebiliyoruz (arkaplanı siyah yapma vb.) ama ben ayarlardan direkt bunu varsayılan olarak ayarladım. Normali siyah zaten, istersem beyaz yapıyorum.

Yazılım Gündemi - 2020/24

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

Yazılım Gündemi ile ilgili gelişmeler hakkında bildirim almak için bu adresdeki konuya bakabilirsiniz. Yazılım Gündemine katkı sağlamak için yazılımın herhangi bir alanıyla ilgili karşılaştığınız haberleri sosyalde #YazılımGündemineMalzeme etiketi ile paylaşabilirsiniz.

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.

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.

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.

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})

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.

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.

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.

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.

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.

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:

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.

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.

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

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.

Diğer Haberler

BeğenFavori PaylaşYorum yap
  • Eren Hatırnaz @erenhatirnaz

    Yine dopdolu bir gündem yazısı geldi! Herkese iyi okumalar 🙂

    GitHub'ın yeni tasarımını da ekleyecektim fakat çok fazla GitHub haberi olacaktı. Neyse onu artık Beta'dan çıktığında değerlendiririz. Sonraki gündemler içim malzeme olsun biraz da 😀

  • M. Galib Uludag @mguludag

    Yazılım dünyasında politik doğruculuk uygulanması çok saçma bence. Duyarlı davranılacaksa herkese duyarlı davranmak ekstra efor harcatır ve zaman kaybettirir. Bir de bugüne kadar gelmiş sorun olmamış terimleri değiştirmeye çalışmak önceden azınlıkların yaşadığı haksızlığı ve tarihi unutturma çabası gibi bence. Ellerinde olsa yaşanmış tarihin yerine ütopyalarını yaşanmış tarih kabul ettirecekler ama yaşanılmış şeyleri değiştiremezler ne yazıkki kötü insanlar da olacak kötü olaylar da yaşanacak, önemli olan ders çıkarıp iyileşmeye faydalı olmaya çalışmak.

  • Tarık Başoğlu @trbasoglu1996

    Master kelimesi gerçekten siyasiler için incitici oluyorsa kaldırılmalı. Ülke olarak da olaylardan uzak olduğumuz olin empati kurması zor. Bu yüzden önemli olmadığını düşünüyorum. Benim için bir anlamı yok.

  • wermacht-1942 @wermacht

    GitHub inanılmaz bir Scjw provokatörü. Sektör standartı olmasa bir dakika kullanmam.

Yazılım Gündemi - 2020/23

< Önceki Gündem   |   8-14 Haziran 2020   |   Sonraki Gündem >

Yazılım Gündemi ile ilgili gelişmeler hakkında bildirim almak için bu adresdeki konuya bakabilirsiniz. Yazılım Gündemine katkı sağlamak için yazılımın herhangi bir alanıyla ilgili karşılaştığınız haberleri sosyalde #YazılımGündemineMalzeme etiketi ile paylaşabilirsiniz.

PHP 25 yaşında ve PHP 8 sürümü yayın takvimi yayınlandı

Geçtiğimiz hafta içerisinde PHP programlama dili 25 yaşına girdi. Yani yaratıcısı Rasmus Lerdorf'un Personal Home Page Tools adı altında kendi kişisel ihtiyaçları için geliştirdiği C kütüphanesinin ilk sürümünün yayınlanmasının ardından 25 yıl geçti. Bugün ise web arka yüz (back-end) tarafında en çok kullanılan programlama dillerinden birisi haline gelmiş durumda. JetBrains firması da PHP'nin 25 yıllık hikayesini anlatan bir sayfa hazırladı. Mutlaka göz atmanızı tavsiye ederim. Ben de PHP ile yaşıtım 🙂

Ben de programlamaya derinlemesine merak salmadan önce ortaokuldayken forum siteleri açıp, kapatmakla uğraşıyordum sürekli. phpBB, MyBB, SMF (Simple Machines Forum) ve vBullettin gibi birçok forum altyapıysa uğraştım. Bunları özelleştirdim, eklentiler geliştirdim fakat maalesef açtığım hiçbir forum sitesi tutmadı. Hepsi PHP ile geliştirilmiş sistemler olduğu için tabii bir miktar PHP de öğrenmiş oldum. Sonraları programlamaya ilgim daha da arttı ama o zamanlarda güzel zamanlardı :). Paket yönetim sistemleri ve standardizasyon çalışmalarından önceki PHP gerçekten zor zamanlar yaşatıyordu insanlara ama Composer ve PHP-FIG ile birlikte bu tarz sorunlar da aşıldı fakat o zamanlardan kalan insanların ön yargılarını hala daha kırabilmiş değil. Hala daha insanlar "PHP öldü" deseler de PHP, diğer hype teknolojilerin uzağında sektörde daha aktif kullanılarak yaşımına devam ediyor. Benim de yazmaktan zevk aldığım bir programlama dili, umarım bir gün PHP kaynak kodlarına katkı sağlama noktasına da gelebilirim. İyi ki doğdun PHP, nice senelere! 🙂

Ayrıca geçtiğimiz hafta içerisinde PHP 8.0 sürümü için de yayın takvimi duyuruldu. Eğer bir aksilik olmazsa PHP 8.0 sürümünün yayın çizelgesi bu şekilde olacak:

Tarih Sürüm Etiketi
25 Haziran 2020 Alpha 1
09 Temmuz 2020 Alpha 2
23 Temmuz 2020 Alpha 3
04 Ağustos 2020 Feature Freeze (bu tarihten sonra yeni özellik eklenmeyecek)
06 Ağustos 2020 Beta 1
20 Ağustos 2020 Beta 2
03 Eylül 2020 Beta 3
17 Eylül 2020 Release Candidate 1
01 Ekim 2020 Release Candidate 2
15 Ekim 2020 Release Candidate 3
29 Etkim 2020 Release Candidate 4
12 Kasım 2020 Release Candidate 5
26 Kasım 2020 General Available (Stabil son sürüm)

Android 11 Beta yayınlandı

Google Android takımı mayıs ayının son haftasında Android 11 Beta sürümünü, Amerika'daki olaylar nedeniyle yayınlamayı ertelediklerini duyurmuştu. Aradan geçen birkaç haftanın ardından geçtiğimiz hafta ise Android 11 Beta sürümü yayınlandı. Canlı yayın yerine bu sefer çeşitli kısa videolar yayınlayarak duyuruyu yaptılar.

Bu sürümde üzerinde durdukları üç ana konu var: İnsanlar, Kontroller ve Gizlilik. Bu üç konu altındaki yenilikler ise şu şekilde:

  • İnsanlar:
    • Anlık mesajlaşma uygulamalarından gelen bildirimler bildirim panelinde ayrı özel bir bölümde gösterilecek.
    • Başka bir uygulamadayken mesajlaşma uygulamalarından bildirim gelince uygulamayı açmadan bildirime tıklayarak cevap yazılabilecek. Bubbless API buna izin veriyor.
    • Otomatik tamamlama önerileri artık daha içeriğe özel olacak.
    • Sesli kontrol ile telefonun birçok özelliğini kontrol edebilme.

  • Kontroller:
    • Cihaz Kontrolleri ile artık telefonunuza bağlı akıllı cihazları tek bir konumdan yönetebileceksiniz. Kilit tuşuna basılı tutarak açabileceğiniz bu ekranda akıllı cihazlarınıza çeşitli komutlar gönderebileceksiniz. Teknik detaylar için buraya tıklayabilirsiniz.
    • Medya Kontrolleri ile de telefonunuzun ses ve görüntü içeriklerini farklı cihazlar arasında paylaştırma işlemleri yapabileceksiniz. Teknik detaylar için buraya tıklayabilirsiniz.

  • Gizlilik:
    • Tek seferlik izinler ile artık ilgili uygulamaya bir izini sadece bir seferlik verebileceksiniz. Uygulamanın ikinci kez aynı şeyi kullanabilmesi için tekrar izin vermeniz gerekecek. Teknik detaylar için buraya bakabilirsiniz
    • İzinleri otomatik sıfırlama: Android 11'de artık bir uygulama belirli bir periyotta hiç kullanılmadıysa, sistem onun aldığı izinleri otomatik olarak sıfırlayacak. Kullanıcı tekrar uygulamayı açarsa tekrar izin verilmesi gerekecek. Teknik Detaylar
    • Arka planda konum verisi kullanabilmek için artık özel izin almak gerekiyor. Bu konuya yazılım gündeminin önceki yazılarında da (bkz: Yazılım Gündemi - 2020/15) değinmiştik. Detaylar
    • Geçtiğimiz yıllarda hayatımıza giren Google Play Sistem Güncellemeleri ile güncellenebilecek yeni 12 tane modül eklendi.

Biz geliştiricileri ilgilendiren özelliklerden bazıları da şu şekilde:

  • Geliştirici Özellikleri kısmına birçok ayarın açılıp kapatılabileceği yeni bir arayüz eklendi.
  • Uygulamalarınızı stabil bir şekilde yeni sistemlere geçirebilmeniz için yeni Platform Stability
  • Uygulamada hata ayıklama için kablosuz ADB özelliklerinde iyileştirmeler.

Android Studio 4.1 Beta ve 4.2 Canary ile gelen özellikler

Bu sürümle birlikte gelen diğer özellik ve değişiklikler için konu başlığına eklediğim ya da yazı içerisinde satır aralarında verdiğim teknik detaylar bağlantılarına tıklayabilirsiniz. Eğer aramızda Android uygulama geliştirmede deneyimli arkadaşlar varsa, onlar da yorumlar bölümünde önemli buldukları özellik ve değişiklikleri vurgulayabilirler.

Visual Studio Code Go eklentisi artık Go projesinin parçası haline geldi

Microsoft tarafından açık kaynak olarak geliştirilen Visual Studio Code metin editörünün Go programlama dili için olan eklentisi, geçtiğimiz hafta içerisinde sahibi Microsoft'dan Google'a Go takımına geçti. Eklentinin yeni depo adresi bu şekilde oldu: https://github.com/golang/vscode-go. Benim tahminim artık yeni bir Go sürümü yayınlandığında periyodik olarak aynı zamanda VS Code Go eklentisi de güncellenecek, böylece de yeni özellikler için Microsoft'un ilgili takımının ya da açık kaynak topluluğunun geliştirme yapmasını beklemek gerekmeyecek.

Geçiş ile ilgili Go takımının yazdığı blog yazısına konu başlığına eklediğim bağlantıya tıklayarak ulaşabilirsiniz.

Apache Software Foundation belgeseli yayınlandı

Visual Studio Code Mayıs 2020 (v1.46) sürümü yayınlandı

Yaklaşan Online Etkinlikler

Etkinlik İsmi Tarihi
Özgür Öztürk - Temel Bulut Bilişim Workshop 15 Haziran 19:00
Veli Bacık - Powerful Mobile Application Development 15 Haziran 21:00
Açık Seminer 35. Gün: 5G-MEDIA Servis Geliştirme Kiti 16 Haziran 14:00
Gerçek Hayatta Yapay Zeka 16 Haziran 14:00
Zafer Ayan - ReactJS ile Web ve Mobil Uygulamaları Geliştirme 16 Haziran 19:00
Spring Boot REST Service 16 Haziran 21:00
AWS Summit Online 17 Haziran 09:00
Açık Seminer 36. Gün: 5G Kullanım Örnekleri ve Kablosuz Haberleşme Ağları 17 Haziran 14:00
Ender Ahmet Yurt - Pandemide Yazılımcı Olmak 17 Haziran 19:00
Yazılımcı Buluşması {MaviDurakIO} 17 Haziran 20:00
Fatih Kadir Akın - Sosyal Yönleriyle Açık Kaynak Geliştiriciliği 17 Haziran 21:00
Açık Seminer 37. Gün: 5G Nedir? 18 Haziran 14:00
Bilal Çınarlı - Performans Neden Önemlidir? 18 Haziran 19:00
React Native ile Mobil Uygulama Geliştirme 18 Haziran 20:00
Berk Ulsoy - Yazılım Mühendisliğinde Kariyer 18 Haziran 21:00
Let's meet with Microsoft Student Partner Program 18 Haziran 21:00
Açık Seminer 38. Gün: Haberleşme Teknolojileri Kümelenmesi (HTK) 19 Haziran 14:00
Murat Şişman - Sinyal İstihbaratı 19 Haziran 19:00
Web Sitesinin Çalışma Prensipleri ve Temel HTML Eğitimi 19 Haziran 20:30
Eser Özvataf - Node.js, Deno ve JS ile Backend Geliştirmenin Dünü ve Bugünü 19 Haziran 21:00
.NET Core ile Gerçek Zamanlı Web Uygulaması Geliştirme 19 Haziran 21:00
Online Microservices & DDD Konferansı 20 Haziran 09:30
ASP.NET Web API ile OData Kullanımı 20 Haziran 19:00
Baran Somaklı - Freelance ve Uzaktan Çalışma 20 Haziran 19:00
Introduction to ABP Framework by Ahmet Çotur 20 Haziran 21:00
Career Talks no.8 - Oğuz Kılıç - Bir Geliştiricinin Kariyer Yolculuğu 20 Haziran 21:00

Diğer Haberler

BeğenFavori PaylaşYorum yap

Yazılım Gündemi - 2020/22

< Önceki Gündem   |   1-7 Haziran 2020   |   Sonraki Gündem >

Yazılım Gündemi ile ilgili gelişmeler hakkında bildirim almak için bu adresdeki konuya bakabilirsiniz. Yazılım Gündemine katkı sağlamak için yazılımın herhangi bir alanıyla ilgili karşılaştığınız haberleri sosyalde #YazılımGündemineMalzeme etiketi ile paylaşabilirsiniz.

GitHub, geliştiricileri hedef alan yeni bir zararlıyı ortaya çıkardı: Octopus Scanner

Yazılım gündemi yazıları yazmaya başladığımdan beri sıklıkla geliştiricileri hedef alan zararlı yazılımların arttığına yönelik haberleri sizlere iletiyorum fakat bu seferki durum biraz farklı. Mart ayının başlarında GitHub'a JJ takma isimli güvenlik araştırmacısı GitHub'ı bir güvenlik zafiyeti hakkında uyarıyor ve GitHub'ın güvenlik takımı harekete geçiyor. Daha önce karşılaştığımız diğer zararlı yazılım türlerinde saldırganın kendisi kodlarını GitHub'a yükleyip, yemin yutulmasını beklerken bu sefer zararlı kod bulunan depoların (repository) sahiplerinin durumdan haberi yok.

Zararlı yazılımın bulaşma sistemini gösteren grafik

NetBeans ile geliştirilen Java projelerini hedefleyen bu zararlı yazılım, ilk olarak bilgisayarınızda NetBeans'in kurulu olup olmadığını kontrol ediyor, eğer kuruluysa bütün NetBeans projelerinize bekiyor ve proje klasörünüzün içindeki nbproject dizini altına cache.dat isimli bir dosya bırakıyor. Daha sonra nbproject/build-impl.xml dosyasını düzenleyerek kendisini sizin geliştirdiğiniz uygulamanın içerisine enjekte ediyor. Oluşturduğunuz JAR dosyasının içinde bu zararlı yazılım da oluyor. Zararlı yazılım ise bilgisayarınızda uzak komut çalıştırmaya yarayan bir arka kapı işlevi görüyor. Ayrıca zararlı yazılım bulaştığı JAR dosyalarının enjekte olmamış hallerini üretmeyi de önlüyor, yani kendisinin yerine başka bir şey gelmesini zorlaştırmış oluyor.

GitHub Güvenlik Takımı, bu zararlı yazılımın bulaştığı 26 tane açık kaynaklı proje tespit etmiş fakat bu projelerin zararlı yazılımdan temizlenmesi biraz sıkıntılı. GitHub, ilgili repository'lerin sahiplerini bilgilendirerek virüsü o depolardan temizlese bile kodları bilgisayarına çekmiş olan kullanıcıların sistemlerinde olan virüs ilgili depolara tekrar kendini kopyalayacak. Takımın elinde Octopus Scanner zararlısının birkaç varyasyonlu kopyası mevcut fakat suçlu olmayan kullanıcıları cezalandırmak istemedikleri için şimdilik bir aksiyon almış değiller fakat geliştiricileri uyarmadan da geçmek istememişler.

Sizler de Java projeleriniz için NetBeans kullanıyorsanız mutlaka projelerinizdeki nbproject klasörünü kontrol edin. Zararlı yazılım hakkında daha teknik detaylar için konu başlığına eklediğim blog yazısına göz atabilirsiniz.

Microsoft Defender SmartScreen, bağımsız geliştiricileri zora sokuyor

Microsoft tarafından geliştirilen Windows 10 işletim sistemiyle birlikte dağıtılan Microsoft Defender antivirüs yazılımının bir özelliği olan SmartScreen, bağımsız geliştiriciler tarafından yayınlanan uygulamaları "tanınmayan" (unknown, unrecognized) olarak işaretlediği için kullanıcılar bu uygulamaları çalıştırmaya çekiniyorlar.

Microsoft Defender SmartScreen tarafından tanınmayan bir uygulamayı açmaya çalıştığınızda gösterilen uyarı penceresi. Yine de uygulamayı çalıştırmak istiyorsanız "More info" yazısına tıklayıp, oradan "run it anyway" düğmesine tıklamanız gerekiyor.

SmartScreen'in çalışma mantığını aslında oyunlardaki "itibar" (reputation) sistemi gibi düşünebiliriz. .exe ile uzantısıyla dağıttığınız uygulamanız ne kadar kişi tarafından çalıştırılırsa o kadar güvenilir oluyorsunuz. Fakat tek değerlendirme kriteri bu değil tabii ki, Microsoft aynı zamanda uygulamanın kim tarafından yayınlandığına da bakıyor fakat bu basit bir "Geliştiren: Eren Hatırnaz" ifadesinden ibaret değil, tanınmış bir otorite tarafından onaylanmış bir sertifika almanız ve kodlarınızı bu şekilde imzalamanız gerekiyor. Tahmin edebileceğiniz gibi ücretsiz bir işlem değil bu. Kod İmzalama Sertifikası fiyatları sitelere göre değişiklik gösterse de bağımsız geliştiriciler için uygun denilebilecek bir noktada değil. Üstelik web tarafında ücretsiz SSL sertifikası sağlayan "Let's Encrypt" gibi bir çözüm de bu tarafta mevcut değil.

 

 

 

ssl.com sitesinin Kod İmzalama Sertifikasının yıllık fiyatları

Bu sertifika ile dağıttınız exe dosyalarını imzalamak maalesef "güvenilir" olmaya yetmiyor. Çünkü zararlı yazılım geliştiren kişi de aynı şekilde fiyatını verip, dağıttığı virüsün "güvenilir" sayılmasını sağlayabilir. Dolayısıyla SmartScreen'in 'itibar' sistemi hala daha geçerli. Exe dosyanız imzalı olsa bile SmartScreen, daha fazla kullanıcı bu programı çalıştırana kadar uyarıyı göstermeye devam ediyor. Fakat burada şöyle bir sonsuz döngü de ortaya çıkıyor: Kullanıcılar uyarı aldığını için programdan şüphelenip kurmuyorlar, kurmadıkları için SmartScreen, ilgili programın itibar puanını yükseltmiyor, programın itibarı yükselmediği için de kullanıcılar uyarı mesajı görmeye devam ediyor.

Üstelik SmartScreen sertifika yenileme işlemini tanımıyor. Yani yeni bir sertifika aldığınızda tüm bu süreçleri baştan yaşamanız gerekiyor. Bunun da bir çözümü mevcut fakat bağımsız geliştiriciler için değil, büyük yayıncılar için mevcut. EV Code Signing Sertifikaları burada devreye giriyor. Yazılım bu tarz sertifikalar ile bir kere imzalandıktan sonra SmartScreen'den otomatik olarak geçiyor. Fakat dediğim gibi bu sertifikaların fiyatları bağımsız geliştiriciler için hiç de ulaşılabilir noktalarda değil.

Sonuç olarak Windows ekosistemi için bağımsız olarak uygulama geliştirmek ve dağıtmak bir eziyet haline geliyor. Açık kaynak dünyasına iyi bir giriş yapan Microsoft'un artık Windows ekosistemiyle ilgili bazı şeyleri de tekrar gözden geçirmesi gerekiyor.

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

SpaceX Yazılım Takımı, Reddit üzerinde Soru&Cevap etkinliği gerçekleştirdi

Bir önceki hafta gerçekleşen başarılı Crew Dragon 2 görevinden sonra gündeme gelen SpaceX, geçtiğimiz hafta da Reddit üzerindeki /r/spacex kanalında yazılım ekibiyle soru & cevap etkinliği gerçekleştirdi. Binlerce yorum içerisinden benim gözüme çarpan bazı soruları ve ekibin yazdığı cevapları sizlere aktarmak isterim.

Falcon 9 roketinde ve Dragon kapsülünün yazılım tarafında en çok kullanılan programlama dili nedir? Hangi programlama paradigmalarını kullanıyorsunuz? Kaynak

Otonom sistemlerdeki yazılımların tamamı C++ programlama diliyle ve nesne yönelimli programlama teknikleriyle geliştirildi. Her şeyi mümkün olduğunca basit tutmaya çalışıyoruz.

Uçuş sırasında hata algılama ve hata doğrulama işlerini nasıl yapıyorsunuz? Kaynak

Bilgisayarın hesaplamasından kaynaklanabilecek sorunlar için farklı bilgisayarlar üzerinde aynı hesaplamaları yaptırıyor ve çıktılarını karşılaştırıyoruz. Sensörlerden kaynaklanabilecek hatalar için de aynı şekilde birden fazla sensör verisini değerlendiriyoruz. Veri aktarımı sırasında ortaya çıkabilecek sorunlar için ise aktarılan verilerin içerisine eklenmiş hata tespit ve hata doğrulama kodlarını kullanıyoruz.

Yazılımlarınız küçük küçük parçalardan oluşan bir yapıda mı yoksa her şey tek bir büyük modül olarak mı geliştiriliyor? [Kısaca micro service mi, yoksa mono-repo mu kullanıyorsunuz demek istemiş] Kaynak

Yazılımlarımız kesinlikle birden çok küçük modülde oluşan bir yapıda. Araçtaki alt seviye komponentlerden, ara sistemlere kadar her kısımda bir hiyerarşi mevcut. Farklı alt sistemler genelde birbirlerinden izole edilmiş durumda; bu izolasyon bazen aynı bilgisayar içerisinde olabilirken, bazen de farklı bilgisayarlarla sağlanmış izolasyonlar tercih edebiliyoruz.

Yazılımlarınızı araçlara yüklemeden önce nasıl test ediyorsunuz? Falcon/Dragon/Starlink için ne kadar telemetri verisi topluyorsunuz? Bu veriler üzerinde makine öğrenmesi ya da veri analizi yapıyor musunuz? Kaynak

Her cihaz için, loop simulator'de olan bir donanıma sahibiz [anladığım kadarıyla yazılım ekibinin elinin altında sadece geliştirme için kullanılan cihazın bir kopyası mevcut]. Production ortamına gitmeden önce tüm kodlarımız bu simülasyonda test edilip sonra asıl aracın içine yükleniyor.

Tipik bir Dragon görevinde yüzlerce GB telemetri verisi topluyoruz. Starlink cihazlarımız için bu durum 5TB gibi rakamlara ulaşmış durumda. Her uçuştan sonra, topladığımız tüm verileri gözden geçirip, ilgili cihazın beklediğimiz gibi çalışıp çalışmadığını kontrol ediyoruz.

Benim okuduklarım içerisinde gözüme çarpan ve aktarmak istediğim sorular ve cevapları bu şekildeydi (hatalı çevirdiklerim varsa lütfen yorumlar bölümünde beni uyarın) fakat ilgili reddit gönderisinin altında ilginizi çekebilecek yüzlerce hatta binlerce soru ve cevap görebilirsiniz. Konu başlığına eklediğim bağlantıya tıklayarak ilgili gönderiye ulaşabilirsiniz. Eğer sizin ilginizi çeken başka bir soru ve cevabı varsa yorumlar bölümünde bundan bahsetmeyi unutmayın.

Tarayıcılara :is() ve :where() CSS özelikleri geliyor

WebPlatform.news sitesinde geçtiğimiz hafta yayınlanan blog yazısına göre yeni CSS standartlarından :is() ve :where() artık tarayıcılar tarafından desteklenecekler. Safari ve Firefox bu özelliği implement etmişler, Chromium ise özellik üzerinde çalışmaya başlamış gözüküyor. Gelelim bu özelliklerin ne işe yaradıklarına:

is() özelliği Dokümantasyon

is aslında bir parametre olarak birden fazla CSS selector kabul edip, içerisindeki seçiciler tarafından seçilebilen herhangi bir elemanı seçen bir pseudo-class. Cümle biraz karışık oldu farkındayım ama aşağıdaki örneği inceleyince ne demek istediğini anlayacaksınız. Diyelim ki elimizde şöyle bir HTML yapısı var:

<div class="div1">
  <h1>Selam TeknoSeyir</h1>
</div>
<div class="div2">
  <h1>is() özelliğini</h1>
</div>
<div class="div3">
  <h1>deniyoruz</h1>
</div>

ve her div'in içerisindeki h1 elemanının yazı rengini kırmızı yapmak istiyoruz. Önceden bunu şu şekilde yapıyorduk:

.div1 h1, .div2 h1, .div3 h1 {
    color:red;
}

Fakat artık böyle daha sade bir şekilde yazabileceğiz:

:is(.div1, .div2, .div3) h1 {
    color: red;
}

Önceden bu ihtiyacımızı :any() ile giderebiliyorduk fakat onda istediğimiz düzeyde karışık seçicileri kullanamıyorduk.

:where() özelliği de :is() ile benzer bir yapıya sahip fakat bazı farkları mevcut. Front-end tarafına pek yakın birisi olmadığı için ne kadar anlamaya çaba göstersem de farklarını tam olarak anlayamadım o yüzden sizi Mozilla Developer Network'deki dokümantasyon sayfasına yönlendirmek durumundayım. Eğer konu hakkında bilgili arkadaşlar varsa lütfen yorumlar bölümünde bizimle paylaşsın.

Swift programlama dili topluluğu kendi Paket Kayıt Servisi'ni tanımlamayı tartışıyor

Apple tarafından geliştirilen açık kaynak kodlu programlama dili Swift, geçtiğimiz Haziran ayında GitHub'ın kendi paket kayıt (Package Registry) servisine eklenmişti. Fakat bu paket kayıt sisteminin GitHub'ın tekelinde olmasını istemeyen topluluk üyeleri Swift'in kendi paket kayıt servisini tanımlaması gerektiği konusunda tartışmalar başlatmıştı. Geçtiğimiz hafta ise bu paket kayıt servisini tanılamak için bir öneri taslağı ("proposal") yayınlandı.

Burada şunu belirtmekte fayda var: Swift programlama dilinin, projedeki bağımlılıklarınızı yönetebileceğiniz bir paket yönetim aracı zaten var; burada konuşulan paket npm gibi, RubyGems gibi paket kayıt sistemleri. Elbette bu tartışmaların sonucunda yine bu paket yöneticisine, kendi paket kayıt servislerimizi ekleme özelliğinin gelmesi planlanıyor.

Swift programlama dilinin forum sayfasında ilgili tartışma devam ediyor. İlerleyen süreçlerde ne gibi sonuçların çıkacağını hep birlikte göreceğiz.

Go takımı kaynak kodlardaki "blacklist", "whitelist", "master", "slave" gibi ifadeleri kaldırdı

Amerika Birleşik Devletlerinde bir polisin siyahi bir vatandaşı öldürmesiyle başlayan olaylardan sonra ırkçılık konusuyla ilgili var olan hassasiyetlerin seviyesi de oldukça artmış durumda. Geçtiğimiz hafta içerisinde de Google tarafından geliştirilen Go programlama dilinin kaynak kodları içerisindeki "kara liste" ("siyah liste"), "beyaz liste", "efendi" ve "köle" gibi ifadelerin yerini "allowlist" ("kabul listesi"), "blocklist" ("engel listesi"), "control" ve "process" gibi ifadelere bıraktılar.

Özellikle "blacklist" ve "whitelist" sadece programlama alanında değil birçok farklı alanda da artık kalıplaşmış kelimeler olduğu için pek önemli değil gibi gözükse de biraz düşününce aslında bu değişikliğin mantıklı olduğu ortaya çıkıyor. En azından bana öyle geliyor. Kaynak kodlardan bu tarz ifadelerin kaldırılması iyi olmuş bence de.

Diğer Haberler

BeğenFavori PaylaşYorum yap
Önceki yorumları gör 9 / 16
  • Temp 🔴 @temp

    @erenhatirnaz Yine güzel bir derleme olmuş. Eline sağlık.
    Microsoft kadar tutarsız bir firma görmedim hakkaten. Kendi programları Visual Studio ile herhangi bir kod girmeden içi boş şekilde çıktı alsan bile defender yada farklı antivirüs programları virüs olarak algılayabiliyor.
    Koca firma bunu bile hesap edemiyor. Bağımsız, freeware üreten geliştiriciler gerçekten de bir çıkmaza girmiş gözüküyor.

    • Eren Hatırnaz @erenhatirnaz

      Teşekkür ederim. Faydalı bir içerik oluşturabiliyor isem ne mutlu bana 🙂
      Microsoft her ne kadar açık kaynak camiasına temelli bir giriş yapmış olsa da bazı davranışlarını geçmişten miras alarak sürdürüyor. Umarım yakın zamanda bu durumu da bir gözden geçirirler.

  • Felix @felix

    master ve slave'in kaldırılması belki mantıklı olabilir ama blacklist ile whitelist'in köken olarak ırkla, ırkçılıkla bir ilgisi bulunmuyor sanıyorum. buna rağmen kullanımdan kaldırılması bana çok mantıklı gelmedi.

    • qubit @qubit

      allowlist blocklist fena değil. Tabii bir 10 yıl sonra da inşallah vay bu emperyalist lisanını niye kullanıyoruz derler de onu da değiştiririz 😀

      Master-Slave'e ne önermişler bakayım.

    • Eren Hatırnaz @erenhatirnaz

      Kalıplaşmış kullanımlar olduğu için normal geliyor ama ben şahsen biraz düşününce doğrudan ırkçı kelimeler olmasa da bu hassasiyeti taşıyan insanlar üzerinde bir etkisi olabileceğini düşünüyorum. Dediğim gibi belki çok ehemniyetli bir şey değil ama yine de dikkat etme gereği duymuşlar.

  • xpow3r @xpow3r

    emek var emek, bu azmin ve çabandan dolayı seni tebrik ediyorum.

  • Tarık Başoğlu @trbasoglu1996

    Windows milyarlarca kullanıcıya sahip. Halen bir marketi oturtamaması başarısızlıktır. Zamanında bunu yapabilseydi belki bugün steam gibi launcherlar olmayacaktı. Steam'in sadece uygulama kurma&kaldırma işlevinin olmadığının farkındayım ama steamin yapılma amacı oydu. Bilgisayara format sonrası gerekli bütün yazılımları google'da aratıp, kurulum dosyasını indirip ve dosyayı çalıştırıp yapıyoruz. Smart Screen androiddeki bilinmeyen kaynaklar ile aynı işlevi görüyor. Açık kaynak yazılımları ücretsiz dağıtmak için android tarafında da google play'e tek seferlik de olsa para vermek gerekiyor. Apple tarafında yıllık ücret gerekiyor ve bildiğim kadarıyla market dışı uygulama yüklenmiyor. Pc tarafında ilgili yazılımları kullanan kullanıcılar için çok sorun olduğunu düşünmüyorum. Bence her plartformda açık kaynaklı yazılımlar desteklenmeli hatta öne çıkarılmalı.

    Rokette açıkçası makine öğrenmesi kullanmamalarına şaşırmadım. Bu kadar hassas hesaplamaların olduğu bir alanda makine öğrenmesi kullanmak riskli olurdu.

    Hocam, bu haberlerin tartışıldığı podcast ya da video kanalı biliyor musun? Okumanın yanında yorumları da duymak iyi olurdu.

    • Eren Hatırnaz @erenhatirnaz

      Katılıyorum hocam. Microsoft zamanında bu paket yöneticisi/uygulama mağazası olayını iyi çözebilmiş olsa yazılım geliştiricilerin bir kısmı GNU/Linux ya da MacOS gibi sistemlere yönelmeyecekti. Geçen Build 2020'de duyurdukları winget'in bu soruna çözüm olma potansiyeli var ama henüz yolun çok başında. Bakalım ileride nerelerde göreceğiz winget'i.

      Benim bildiğim bir podcast ya da video kanalı yok hocam bu tarz bir içerik hazırlayan ama belki de ben bilmiyorumdur.

Yazılım Gündemi - 2020/21

< Önceki Gündem   |   25-31 Mayıs 2020   |   Sonraki Gündem >

Yazılım Gündemi ile ilgili gelişmeler hakkında bildirim almak için bu adresdeki konuya bakabilirsiniz. Yazılım Gündemine katkı sağlamak için yazılımın herhangi bir alanıyla ilgili karşılaştığınız haberleri sosyalde #YazılımGündemineMalzeme etiketi ile paylaşabilirsiniz.

StackOverflow Geliştirici Anketi 2020 sonuçları açıklandı

StackOverflow sitesinin her yıl düzenli olarak yaptığı geliştirici anketi bu yılın Şubat ayında duyurulmuştu. Geçtiğimiz hafta içerisinde ise bu anketin sonuçları yayınlandı. Yaklaşık 65.000 kişinin katıldığı bu ankete Türkiye'den katılım oranı %1.22 çıkmış. Sektördeki en yaygın 3 rol ise tahmin edebileceğiniz üzere şunlar: Back-End Developer (%55.2), Full-Stack Developer (%54.9) ve Front-End Developer (%37.1). Ankete katılanların çoğunluğu ise %26.5 ile 25-29 yaş arası insanlar oluşturuyormuş. Teknolojilerle ilgili diğer sonuçlar ise şu şekilde:

En popüler programlama, betik ve işaretleme dilleri sıralaması

En popüler web framework'leri

En çok sevilen ve nefret edilen programlama dilleri

SOL: En çok sevilen programlama dilleri, SAĞ: En çok nefret edilen programlama dilleri

Bu tarz konuları değerlendirirken sürekli söylediğim bir şeyi yine tekrarlamak isterim: Teknoloji tercihlerinizi bu anketlerin sonuçlarına göre değil kendi ihtiyaçlarınıza göre yapın. Bu veriler sadece geliştirici ekosisteminin büyük resmini görmeye yarıyor.

Anketin tüm sonuçlarını buraya eklemek mümkün olmadığı için sadece bu başlıkları aldım ben ama diğer sonuçlar da oldukça ilgi çekici. StackOverflow da zaten sonuçlar için çok güzel bir sayfa hazırlamış. Konu başlığına eklediğim bağlantıya tıklayarak diğer anket sonuçlarını inceleyebilirsiniz.

Microsoft'un paket yöneticisi WinGet, AppGet'den 'esinlenmiş'

Bir önceki yazılım gündemi yazısında (bkz: Yazılım Gündemi - 2020/20) sizlere Microsoft'un Build 2020 etkinliğinde duyurduğu paket yöneticisi WinGet'den bahsetmiştim. Yine aynı hafta içerisinde AppGet isimli farklı bir paket yöneticisinin de geliştiricisi tarafından artık devam ettirilmeyeceği duyurulmuştu fakat bunu gündeme eklememiştim (İtiraf etmek gerekirse geliştiricinin yayınladığı yazıyı okumadığım için konuyu farklı bir şey sanmıştım). Bu hafta The Verge sitesinde yayınlanan haber ve Microsoft'un ilgili takımının yöneticisinin yayınladığı yazıyla birlikte konu daha fazla gündeme geldi.

AppGet'in geliştiricisi Keivan Beigi, geçtiğimiz hafta bir blog yazısıyla AppGet'i artık geliştirmeyeceğini, 1 Ağustostan itibaren de kapatacağını duyurdu. Bu hareketinin nedenini ise şöyle açıkladı: "Microsoft WinGet'i geliştirirken benimle iş görüşmesi yaptı, ben onlara AppGet'in arka planından ve teknik kısımlarından bahsedip, gelecekle ilgili fikirlerimi aktardım fakat sonrasında bana hiç geri dönüş yapmadılar. Geçtiğimiz hafta duyurulan WinGet'i görünce çok oldum. Microsoft'la rekabet edemem ve topluluğu da bölmek istemiyorum. O yüzden AppGet'i artık geliştirmeyeceğim". Üstelik WinGet'in duyuru yazısının hiçbir yerinde de bu geliştiriciden ve emeğinden bahsedilmemiş.

Olayın Reddit ve HackerNews gibi platformlarda gündem olmasının ardından olaya konu olan Microsoft takımının yöneticisi açıklama yapmak zorunda kaldı ve yaptıklarını bir nevi kabul edip, AppGet'deki şu şeylerden esinlendik gibi bir yazı yazıp Keivan Beigi'ye teşekkür etmiş. "Geç gelen adalet, adalet değildir" atasözünü şu şekilde değiştirirsek konuya çok uyumlu oluyor: "Geç gelen teşekkür, teşekkür değildir".

Geçmişteki Microsoft davranışlarının terk edilip, açık kaynağa yaklaşmalarının ardından böyle bir haberle gündeme gelmeleri hiç iyi olmadı. Açıkcası ben de Microsoft'un artık bakış açısını değiştirdiğini düşünüyordum fakat bu olay ve sonrasında yaşananlar bende hiç iyi bir intiba bırakmadı.

Bu konu hakkında siz ne düşünüyorsunuz? Yorumlar bölümünde konuşalım.

SpaceX Dragon 2 kapsülünün uçuş arayüzü Chromium üzerinde JavaScript çalıştırıyormuş

Geçtiğimiz hafta içerisinde 2011'den beri ilk defa Amerikan topraklarından astronot gönderildi. Bu görevin diğerlerinden farklı ve özel bir yanı daha var: Tarihte ilk kez özel bir şirket uzaya insan gönderdi. Çoğumuz zaten NASA ve SpaceX tarafından yapılan canlı yayını izlemiştir. İşte bu yayınlarda gördüğümüz SpaceX Dragon 2 kapsülünün dokunmatik uçuş arayüzü Chromium üzerinde çalışan bir arayüzüymüş. Bunu da 2015'yılında StackExchange sitesinde sorulmuş bir soruya verilmiş cevaptan öğreniyoruz. Cevabı yazan kişinin kaynağı ise Google Developer Conferance 2015 ve 2016'de SpaceX mühendisleri ile olan konuşmasıymış.

SpaceX canlı yayınından alınmış, çeşitli açılardan Dragon 2 kapsülünün uçuş arayüzü görselleri

Bir kişinin bulup Reddit ve HackerNews gibi platformlarda paylaşması üzere konu üzerine bayağı bir espri yapıldı. SpaceX mühendisleri mutlaka JavaScript'in yol açabileceği şeylerin önüne geçecek önemleri almıştır tabii ki, zaten uzun yıllardır test edilen kapsül geçtiğimiz hafta sorunsuz bir şekile Uluslararası Uzak İstasyonuna kenetlendi ve astronotları sağlıklı şekilde taşıdı. Dragon 2 kapsülünün kenetlenme ekranının bir benzeri için şu adresdeki simülasyonu deneyebilirsiniz: https://iss-sim.spacex.com/ (arkaya da Interstellar filminin meşhur müziğini açarsanız daha eğlenceli oluyor 🙂 )

İlgili StackOverflow cevabından öğrendiğimiz diğer bilgiler ise Falcon 9 roketi hakkında. Falcon 9 roketinin C/C++ dilleri kullanılarak oluşturulmuş yazılımı kendilerine göre özelleştirdikleri Linux çekirdeği üzerinde 3 farklı işlemcide çalışıyormuş ve sonuçlar karşılaştırılıp uyumsuzluk durumlarında işleme alınmıyormuş.

Ayrıca benim de bu hafta keşfettiğim SpaceX API'sini de sizlerle paylaşmak isterim. Bu hafta içerisinde Dragon kapsülleri için de birçok end-point kullanıma sunulmuş: https://docs.spacexdata.com/.

Android Studio 4.0 sürümü yayınlandı

IntelliJ IDEA temelli, Google tarafından geliştirilen Android Studio IDE'sinin geçtiğimiz hafta içerisinde 4.0 numaralı sürümü stable etiketiyle birlikte yayınlandı. Bu sürümle birlikte gelen birkaç özelliği birlikte inceleyelim:

Motion Editor

Android işletim sisteminin 4.0 sürümünden beri desteklenen MonitonLayout API'si sayesinde objelere animasyon kazandırabiliyorduk zaten ama artık Android Studio 4.0 ile bu daha kolay bir hale geldi. Özel editör sayesinde artık XML dosyalarıyla boğuşmadan grafik arayüzünü kullanarak animasyonlar yaratabileceğiz. İsterseniz yine XML görünümüze geçebiliyorsunuz tabii.

Layout Validation

Android sistemler için uygulama geliştirirken tek bir cihaz olmamasından dolayı birçok farklı ekran boyutu için tasarımınızı ayarlamanız gerekiyor (web tarafındaki responsive tasarım gibi). Artık Android Studio 4.0 ile birlikte her cihaz için farklı emülatör çalıştırmak yerine Layout Validation sekmesini kullanarak tasarımınızın farklı ekran boyutlarında nasıl gözüleceğini görebiliyorsunuz.

Build Analyzer

Geliştirdiğiniz uygulamaları derlerken bazen derleme süreleri acayip uzayabiliyor fakat bunun hangi eklenti ya da kütüphaneden kaynaklandığını bulmak biraz zordu. Bu sürümle birlikte gelen Build Analyzer ile artık uzun süren build işlemlerinde sorunlu olan eklenti ya da kütüphaneleri kolaylıkla tespit edebileceksiniz.

Android Studio'nun bu sürümüyle birlikte gelen diğer özellikler ve değişiklikler için konu başlığına eklediğim bağlantıya tıklayabilir ya da Android Developers kanalında yayınlanan aşağıdaki videoyu izleyebilirsiniz:

Google Chrome takımının nedensiz eklenti kaldırmalarının yeni kurbanı: Kozmos

2016 yılındaki left-pad olayıyla tanıdığımız Azer Koçulu, npm'den sonra bu sefer de Google Chrome Eklenti Takımı'ndan haksızlık gördü. left-pad olayını hatırlamayanlar için Azer Koçulu'nun kendi sitesinde yazdığı şu yazıya göz atabilirler (alternatif Türkçe kaynak) ya da kendisinin konuk olduğu şu podcast yayınına göz atabilirler. Bugünkü konumuz 2017'den beri geliştirmekte olduğu ücretli Chrome eklentisi olan Kozmos.

Kısaca Kozmos, tamamen çevrimdışı çalışma imkanı sunan bir çeşit yerimi depolama çözümüydü. İnternet bağlantınız yokken bilgilerinizi tarayıcının içinde depolayan, internete bağlandığınızda ise her yerden erişebilmeniz için onları kendi sunucularına gönderen bir yeni sekme sayfası eklentisiydi. Azer Koçulu böyle bir girişimde bulunmuş fakat pek beklediği yatırımlara ulaşamamış olsa da projeyi pasif gelir olarak sürdürmeye devam etmiş. Hiçbir kullanıcı verisini satmamış, tamamen Google'ın Eklenti Marketi Kurallarına uygun şekilde geliştirmesini yapmış.

Son 2 yıldır ise tabiri caizse Google'ın Chrome eklenti takımı Azer'in başına musallat olmuş. Birkaç haftada bir eklentisini marketten kaldıran otomatik botlar ile arasında şöyle bir diyalog geçirdikten sonra insan çalışanlar durumu düzeltiyormuş (basit özet şeklinde):

  • Google (Bot): Eklentini marketten kaldıracağız.
  • Azer Koçulu: Bu bir yanlışlık olmalı.
  • Google (Bot): Yanlışlıklık yok, kuralları gözden geçir, senin eklentin kurallardan birini ihlal ediyor.
  • Azer Koçulu: Hiçbirini ihlal etmiyor, bu bir yanlışlık!
  • Google (sonunda insan): Özür dileriz, yanlışlık oldu.

ve bu tarz konuşmalar sürekli tekrarlandığı halde doğru düzgün bir çözüm sunulmamış. En sonunda da birkaç ay önce Google'ın Chrome eklenti takımı Kozmos'u hiçbir uyarı ya da bilgi vermeden Kozmos'u marketten kaldırmışlar. Üstelik iletişim kurup durum hakkında bilgi alınabilecek bir destek sistemi bile yokmuş.

Üzerine planlar yaptığınız, az da olsa gelir elde ettiğiniz bir projeniz işte böyle rahat bir şekilde Google tarafından fişi çekilebiliyor. Bu yazı geçen hafta yayınlanmış olmasına rağmen bu haftanın gündemine almamın sebeplerinden biri de Google'ın bu yüzünü sizlere tekrar göstermek istemem. Üstelik bu olaylar Google'ın elinde tuttuğu tüm uygulama marketlerinde (özellikle Android Play Store üzerinde)sürekli tekrarlanıyor. Google'a güvenerek yola çıkacak olanlar bir kez daha düşünsün.

Bu konu hakkında siz ne düşünüyorsunuz? Yorumlar bölümünde konuşalım.

Qt 5.15 LTS sürümü yayınlandı

C++ ile platformlar arası (cross-platform) uygulama geliştirmeye yarayan kütüphane Qt, geçtiğimiz hafta içerisinde 5.15 sürümünü Uzun-dönem desteği (Long-term Support) etiketiyle yayınladı. Bu yılın başında duyurdukları (bkz: Yazılım Gündemi - 2020/05) gibi LTS etiketli sürümler artık sadece kurumsal lisansı olan müşterilerine sunuluyor. Önümüzdeki 3 yıllık periyotda destek almaya devam edecek olan 5.15 sürümüyle birlikte gelen bazı yenilikler ise şu şekilde:

  • 3 boyutlu grafik API'lerinin soyutlanması: Farklı işletim sistemlerinde çalışan farklı grafik kütüphanelerinin yaygınlaşmasıyla birlikte Qt de, cross-platform sözünü tutabilmek için artık sadece OpenGL kullanmayacak. Onun yerine bu katmanı soyutlayarak (abstracting), Metal, Vulkan ve Direct 3D 12 gibi farklı grafik kütüphaneleriyle de çalışılabilmesini mümkün kılan Qt Rendering Hardware Interface (RHI) sistemini getiriyor.
  • Qt Quick 3D: Qt tabanlı uygulamalarda 3 boyutlu içerikleri kullanmayı kolaylaştıracak bir araç için tam destek geldi. Benchmark Demosu aşağıda:

Bu sürümle birlikte gelen diğer özellikler ve değişiklikler için konu başlığına eklediğim bağlantıya tıklayabilir ya da 4 Haziran günü gerçekleştirilecek olan şu webiner etkinliğine kayıt olabilirsiniz: Qt 5.15 LTS: Built to Last.

Qt ile ilgili diğer haberler:

Diğer Haberler

BeğenFavori PaylaşYorum yap
Önceki yorumları gör 4 / 5

Yazılım Gündemi - 2020/20

< Önceki Gündem   |   18-24 Mayıs 2020   |   Sonraki Gündem >

Yazılım Gündemi ile ilgili gelişmeler hakkında bildirim almak için bu adresdeki konuya bakabilirsiniz. Yazılım Gündemine katkı sağlamak için yazılımın herhangi bir alanıyla ilgili karşılaştığınız haberleri sosyalde #YazılımGündemineMalzeme etiketi ile paylaşabilirsiniz.

C# 9.0 sürümü yayınlandı

Microsoft'un geliştiriciler için özel olarak düzenlediği etkinliği olan BUILD bu yıl koronavirüs nedeniyle sanal olarak düzenlendi. Geçtiğimiz hafta düzenlenen BUILD 2020 etkinliğinde .NET ekosistemi altında geliştirilen programlama dili C#'ın da 9.0 numaralı sürümü yayınlandı. Her ne kadar uzun bir süredir .NET ekosisteminden uzak kalmış olsam da C# ilk göz ağrılarımdan biridir. Programlama başlarken kullandığım dillerden biri olması dolayısıyla yapısı hakkında bilgim var. Bu sürümle birlikte gelen birkaç özelliği birlikte inceleyelim:

Init-only properties

Nesne yönelimli programlama dili olmasından dolayı verileri nesne olarak temsil etme özellikleri oldukça gelişmiş olan C#'da halihazırda bu şekilde basit bir sınıf oluşturup kullanabiliyorduk:

public class Kisi
{
    public string Ad { get; set; }
    public string Soyad { get; set; }
}

new Kisi
{
    Ad = "Eren",
    Soyad = "Hatırnaz"
}

Fakat bazı durumlarda bazı property'lerin tanımlandıktan sonra değiştirilememesini isteyebiliriz. İşte bu durumda imdadımıza init-only propert'ler yetişiyor ve bu şekilde bir tanımlama ile isteğimizi gerçekleştirebiliyoruz:

public class Kisi
{
    public string Ad { get; init; }
    public string Soyad { get; init; }
}
Records

Eğer yukarıdaki kullanımın askine birkaç property'yi değil tüm objeyi immutable yapmak istiyorsanız o zaman da yardımımıza yeni Records özelliği koşuyor:

  public data class Kisi
{
    public string Ad { get; init; }
    public string Soyad { get; init; }
}

Tanımladığınız sınıfı public data class olarak işaretlediğinizde o artık bir Record haline gelmiş oluyor ve artık bir kere oluşturduğunuz bir record objesini bir daha değiştiremiyorsunuz, onun yerine artık bu şekilde var olan objenin özelliklerini değiştirip yeni objeler oluşturarak devam ediyorsunuz:

var digerKisi = person with { Ad = "Ahmet" }

Daha önce "Ad=Eren, Soyad=Hatırnaz" olarak tanımladığımız objeyi kullanarak "Ad=Ahmet, Soyad=Hatırnaz" şeklinde yeni bir obje oluşturmuş olduk.

Immutable konusu benim de zaman zaman kafamı karıştıran bir konu, dolayısıyla bu tarz kullanımların tam olarak hangi sorun için bir çözüm olduğunu bilemiyorum ama takip ettiğim kadarıyla topluluk bu özellikler için sevinmiş durumda.

Top-level programs

Diğer birçok programlama dilinden de alışık olduğumuz üzere C#'da basit bir programın yapısı şöyle oluyor genelde:

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("Merhaba Dünya");
    }
}

Fakat artık daha da basit şekilde, Python ve Ruby gibi dillerden aşılık olduğumuz gibi bu şekilde de uygulamalar yazabileceğiz:

using System;

Console.WriteLine("Merhabe Dünya");

C# 9.0 ile birlikte gelen diğer özellikler ve detaylar için konu başlığına eklediğim bağlantıya tıklayabilirsiniz. Ayrıca geçtiğimiz hafta içerisinde .NET 5 Preview 4 sürümü de duyuruldu.

Microsoft yeni platformlar arası uygulama geliştirme çözümünü tanıttı: .NET Multi-platform App UI

Microsoft'un 2016 yılında .NET için açık kaynaklı teknolojiler üreten Xamarin firmasını satın almıştı. Xamarin tarafından geliştirilen Xamarin.Forms'da doğal olarak Microsoft'a geçmiş oldu. İşte bu satın almanın yeni meyvesi olacak şey de bugün konuşacağımız .NET Multi-platform App UI oldu.

Xamarin.Forms hatırlamayan ya da bilmeyenler için .NET ekosistemi içerisinde platformlar arası (cross-platform) uygulama geliştirmeye yarayan bir teknoloji. Geçtiğimiz hafta içerisinde ise bu teknolojinin artık evrimleşip başka bir teknolojiyle birleşme vaktinin geldiğini duyuruldu. .NET MAUI, kısaca Xamarin.Forms'un evrimleşmiş ve gelişmiş halidir diyebiliriz. Microsoft, henüz erken geliştirilme aşamasında olan bu teknolojisi ile biz geliştiricilere tek bir projeden hem Windows hem macOS hem de iOS ve Android uygulaması çıkarmayı vaat ediyor.

Xamarin.Forms ve .NET MAUI arasındaki farklar tablosu

.NET 6 sürümüyle birlikte hayatımıza girmesi planlanan bu teknolojiyle birlikte MVVM (Model-View-ViewModel) ve RxUI gibi Design Pattern ve uygulama modellerinin yanı sıra .NET MAUI, MVU(Model-View-Update) ve Blazor gibi yapıları da destekleyecek.

Peki bu gelişmeler Xamarin ve Xamarin.Forms için ne anlama geliyor? diye soracak olursanız ise cevabı çok zor değil. Microsoft'un birçok uygulama geliştirme teknolojisini .NET 5 ile tek çatı altında toplamak istediğini önceki yazılım gündemi yazılarının birinde belirtmiştim. İşte bu gelişmeyi de aynı bağlamda değerlendirebiliriz-ki Microsoft'da zaten planlarında bu olduğunu açıkladı. Xamarin'in ve alt teknolojilerinin yeni sürümleri bir süre daha gelmeye devam edecek fakat Microsoft'un artık yeni odağı .NET 6'nın içerisinde olacak bu teknoloji. Geliştiricilerin geçiş yapmasını kolaylaştıracak gelişmelerden sonra da Xamarin projesi büyük ihtimal durdurulur.

GitLab 13.0 sürümü yayınlandı

Uzak git sunucusu ve proje yönetimi hizmetleri sunan GitLab, geçtiğimiz hafta içerisinde 13.0 sürümünü duyurdu. Aynı zamanda GitLab.com'da son sürüme güncellenmiş oldu. Bu sürümle birlikte gelen bazı özellikler ise şu şekilde:

Amazon ECS'ye otomatik deploy (GitLab Auto DevOps)

Artık geliştirdiğiniz projeleri otomatik olarak AWS Elastic Container Service tarafına gönderip, uygulamanızı ayağa kaldırabileceksiniz. Bunun için deponuzun CI/CD ayarlarından Auto DevOps özelliğini aktifleştirmeniz ve deponuza şu değişkenleri tanımlamanız gerekiyor: AWS_ACCESS_KEY_ID, AWS_ACCOUNT_ID ve AWS_REGION. Nasıl çalıştığını görmek için aşağıdaki kısa demo videosunu izleyebilirsiniz:

Versioned Snippets

GitLab'in Snippet olarak isimlendirdiği şeyi biz aslında GitHub'daki Gist ile biliyoruz. İkisi de aynı amaca hizmet ediyorlar. Tek başına deposu (repository) olması gerektirmeyen betikleri ya da kodları paylaşmak için kullandığımız bir hizmet. Ülkemizde hala daha yasaklı olan pastebin.com gibi yani. İşte GitLab'daki bu snippet sistemine yeni bir özellik geldi, artık bunları da git ile bilgisayarımıza clone edip, değişiklik yapıp ve commit'leyip onu gitlab'a gönderebileceğiz. Böylece hem versiyonlanmış olacak hem de kendi bilgisayarımızda dosyayı düzenleyebileceğiz. Fakat web arayüzünde henüz snippet geçmişini gösteren bir özellik yok, ileride eklenir diye umuyorum. Benim örneğimi bu şekilde clone edip, geçmişe bakabilirsiniz.

git clone https://gitlab.com/snippets/1980000.git
Web IDE için karanlık tema

Tarayıcı üzerinden kod yazmaya olanak sağlayan GitLab Web IDE'de artık karanlık tema mevcut.

GitLab 13.0 ile gelen diğer özellikler için konu başlığına eklediğim bağlantıya tıklayabilirsiniz.

Docker ve Snyk firmalarından konteyner güvenliği alanında iş birliği duyurusu

Linux içerisindeki cgroups ile birlikte gelen konteyner sistemini popülerleştirmesiyle bilinen Docker firması ve yazılımın çeşitli alanlarıyla ilgili güvenlik çözümleri sunan Snyk şirketi, geçtiğimiz hafta içerisinde iş birliği yaptıklarını duyurdular.

Bu iş birliği kapsamında Docker Hub sistemine eklenecek yeni bir entegrasyon sayesinde artık Docker Hub'a gönderdiğimiz konteyner imajlarına otomatik olarak güvenlik taraması yaptırabilir ve raporlayabilir olacağız.

Container teknolojisinin artan popülaritesi ile birlikte güvenlik ihtiyaçlarının da aynı oranda artacağı tahmin edilebilir bir durum. Snyk firması da bu alana erkenden giren firmalardan birisi olmuş.

Bu iş birliğinin ilk meyvelerini 2020'nin üçüncü yarısında görmeye başlayacağız. Container teknolojisi ile ilgili arkadaşlara "Container Security" alanına bakmalarını tavsiye ederim.

Electron 9.0.0 sürümü yayınlandı

JavaScript kullanarak platformlar arası masaüstü uygulama geliştirmeye yarayan kütüphane Electron, geçtiğimiz hafta içerisinde 9.0.0 etiketli sürümünü yayınladı. Bu sürümle birlikte gelen bazı yenilik ve değişiklikler ise şöyle:

Bu sürümle gelen diğer yenilik ve değişiklikler için konu başlığına eklediğim bağlantıya tıklayabilirsiniz.

Windows Terminal 1.0 sürümü yayınlandı ve Windows Package Maganer Preview tanıtıldı

Microsoft'un GNU/Linux ve MacOS taraflarına kaybettiği geliştirici kitlesini geri kazanmak için yaptığı hamleler sürüyor. Uzun süredir geliştirilmekte olan, benim de sık sık gündemde yer verdiğim Windows'un yeni Terminal'i geçtiğimiz hafta düzenlenen BUILD 2020 etkinliğinde 1.0 olarak stabil versiyonuna kavulmuş oldu.

Artık Windows üzerinde de gelişmiş bir terminal emülatörümüz mevcut.

Önceki yazılım gündemi yazılarında zaten birçok Windows Terminal sürümününde gelen yenilikleri konuşmuştuk. Bugün biraz daha önemli olduğunu düşündüğüm Windows Package Manager üzerine konuşmak istiyorum.

sudo apt install firefox

Aramızdaki çoğu kişi yukarıda yazdığım komut satırı kodunun ne iş yaptığını biliyor. Gerçi bilmeseniz bile ingilizce olarak okuduğunuzda zaten anlaşılıyor. Firefox yazılımını sisteme kuruyor. İşte bu yapının benzeri artık windows tarafında şu şekilde mevcut:

winget install firefox

Henüz ön izleme sürümü yayınlanmış bu paket yöneticisi Windows için oyun değiştirici olma rolünü üstlenebilir. Şimdilik sadece şu depodaki manifest dosyaları üzerinden exe dosyalarını indirip, çalıştırma görevi görüyor olsa da hash doğrulama gibi önemli özellikleri de mevcut. Bence paket yöneticilerinin en önemli özelliği upgrade komutu ile sistemde yüklü tüm uygulamaları tek seferde güncelleyebilmek fakat bu henüz winget'e gelmiş değil. Bu özelliğin kesinlikle getireceklerdir. Geliştirme ortamlarını Windows üzerinde kurmuş birçok kişiye hatta son kullanıcıların bile çok işine yarayacağını düşünüyorum.

Diğer Haberler

BeğenFavori PaylaşYorum yap

Yazılım Gündemi - 2020/19

< Önceki Gündem   |   11-17 Mayıs 2020   |   Sonraki Gündem >

Yazılım Gündemi ile ilgili gelişmeler hakkında bildirim almak için bu adresdeki konuya bakabilirsiniz. Yazılım Gündemine katkı sağlamak için yazılımın herhangi bir alanıyla ilgili karşılaştığınız haberleri sosyalde #YazılımGündemineMalzeme etiketi ile paylaşabilirsiniz.

Yanlış ayarlanmış Firebase veritabanları binlerce Android uygulamasının kullanıcı verilerinin sızmasına yol açtı

Firebase, genelde mobil ve front-end geliştiricileri için içerisinde veritabanından, uygulama içi mesajlaşmaya kadar birçok ürünü barındıran bir Google hizmeti. Gündeme girmesine neden olan ise sunduğu veritabanı ürünlerinin yanlış konfigüre edilmesinden doğan bazı güvenlik sorunları. Comparitech isimli firma geçtiğimiz haftanın başında blog sitesinde yayınladığı yazı ile bazı Android uygulamalarının kaynak kodlarını açarak, içerisinden Firebase veritabanı URL'lerini alıp kullanıcı verilerine erişebildiklerini açıkladılar.

Sızan bilgiler arasında binlerce E-posta adresi, telefon numarası, parola, ad soyad ve hatta GPS verisi bile mevcut.

Comparitech Güvenlik Araştırması Takım Lideri Bob Diachecko'nun açıkladığına göre 515.735 Android uygulaması incelenmiş ve bunların içerisinden 4.282 uygulamanın hassas kullanıcı verilerini sızdırığını tespit etmiş.

Firmanın bu güvenlik açığını ortaya çıkarmak için kullandığı ise çok basit hiçbir yüksek teknoloji ürünü gerektirmeyen bir yöntem. Şöyle ki; uygulamanın kaynak kodları (biliyorsunuz ki APK dosyaları aslında kaynak kodların bir çeşit sıkıştırılmış hali ve gerekli uygulamalar ile açılabiliyorlar) içerisinde "*.firebaseio.com" ifadesini aramak ve buldukları tüm bağlantıların sonuna ".json" ekleyerek istek göndermek. Eğer ilgili veritabanı yanlış ayarlanmışsa bu isteğin cevabı tüm veritabanının içeriğinin JSON formatında sunulmuş hali oluyor. Burada hatırlatmak lazım ki, APK dosyanız şifrelenmiş (encrypted) olsa bile veritabanınızın URL'sini bir string değişkeninde tuttuğunuz için yine görülebiliyor.

Comparitech firması 22 Nisan tarihinde bu güvenlik sorununu Google'a bildirmiş ve Google'da "biz geliştiricilere yanlış konfigüre edilmiş durumlar için bildirim gönderiyoruz. Bu durum için de etkilenen uygulamaların geliştiricilerini bilgilendireceğiz" demiş. Eğer sizin de Firebase veritabanı ürünlerini kullanan bir uygulamanız varsa açığın olup olmadığını kontrol ederek ve ilgili dokümantasyon sayfalarını detaylıca inceleyerek olası bir güvenlik sızıntısının önüne geçebilirsiniz. Hassas verileri veritabanında şifrelenmiş bir şekilde tutmanın ne kadar önemli olduğunu bir kez daha anlamış olduk.

Deno 1.0 yayınlandı

Gün geçmiyor ki yeni bir JavaScript teknolojisi daha çıkmasın. Şaka bir yana, bu yeni teknoloji diğerlerine göre daha fazla gündemde kaldı ve konuşuldu. Node.js'e alternatif olarak geliştirilen(fork değil), yine Node.js'i yaratan kişinin de (Ryan Dahl) yazarları arasında olduğu Deno projesinin ilk stabil versiyonu 1.0, geçtiğimiz hafta içerisinde duyuruldu. Deno da Node.js gibi sunucu tarafında JavaScript çalıştırmaya yarayan bir runtime çözümü.

Deno'nun neden ortaya çıktığını anlamak için önce Node.js'in sorunlarını anlamak gerekiyor. Node.js'de Promise yapısının olmaması, güvensiz bir runtime'a sahip olması, paket yönetimi, testler vb. konularda içerisinde bir çözüm barındırmaması gibi sorunlar uzun zamandır Node.js kullananlar tarafından dile getiriliyordu fakat bu ihtiyaçlar hep üçüncü parti araçlar tarafından giderilebiliyordu. Node.js paket yönetimi için npm ile birlikte geliyor fakat npm doğrudan Node.js tarafından geliştirilen bir araç değil, kontrol onlarda değil yani. Güvensiz runtime'dan kast edilen ise Node.js'in kontrolsüz sistem çağrıları (sys calls) yapabiliyor olması. Node.js ile bir JavaScript dosyası çalıştırdığınızda o işlem, sistemin tüm kaynaklarını kullanabiliyordu. Örneğin istediği bir dosyayı okuyabilir ya da yazabiliyordu. Bunun gibi Node.js'in tasarımından kaynaklanan diğer sorunlar için doğrudan Node.js'in yaratıcılarından Ryan Dahl'ın JSConf EU 2018 etkinliğinde yaptığı konuşmayı buraya tıklayarak izleyebilirsiniz.

Deno'nun resmî logosu

Gel gelelim Deno'ya… Deno'da yukarıdaki birçok sorun çözülmüş durumda, artık tek bir araç kurarak geliştirme ortamınızdaki birçok ihtiyacınızı giderebiliyorsunuz. Şöyle ki:

  • deno run: Bu komut ile kodlarınızı direkt çalıştırabilirsiniz. Üstelik kendi içerisinde TypeScript desteği ile geliyor, yani TypeScript kodlarınızı derleyici ile JavaScript'e dönüştürüp o şekilde kullanmanıza gerek yok. Direkt deno run deneme.ts şeklinde çalıştırabiliyorsunuz.
  • deno bundle: Bu komuta parametre olarak verdiğiniz bir kaynak kod dosyası (JS ya da TS olabilir), tüm bağımlılıklarıyla birlikte tek bir dosya haline getiriliyor. bir dosya haline getirmeye yarıyor.
  • deno fmt: Kodlarınızın otomatik olarak formatlanmasını sağlar.
  • deno doc: Bir modül için tanımlanmış dokümantasyon metinlerini gösteriyor.
  • deno test: Projeniz için yazdığınız testleri bu komut yardımıyla çalıştırabiliyorsunuz.

Deno'yu sizler için denedim. Örnek tabii ki çok basit ama Node.js'e göre daha hızlı geliştirebildim.

Yukarıdaki örnekte de gördüğünüz gibi hiç package.json dosyası gibi şeylerle uğraşmadan doğrudan ilgili dosyanın adresini import olarak belirterek dosyama ekledim ve deno info komutuyla hem kodlarımı derledim hem de bağımlılıkları indirdim. deno info komutunu çalıştırmak zorunda değilsiniz elbette direkt deno run teknoseyir.ts komutu da çalıştırabilirsiniz. Eğer siz de yukarıdaki dosyayı denemek isterseniz bu adresten indirip, deneyebilirsiniz: https://gist.github.com/erenhatirnaz/fc6e726fff2731bc1ed763bb2ba7d3e8

Hepimizin aklındaki soru ise "Node.js'yi bitirir mi?" olduğunu tahmin ediyorum fakat henüz böyle bir çıkarım yapabilmek için çok erken olsa da sunduğu özellikler bakımından gerçekten umut vaat ettiğini düşünüyorum. Node.js için yazılmış kütüphaneler için henüz bir uyumluluk çözümü yok fakat şu an geliştirilme aşamasındaymış, ileride Node.js için de yazılmış kütüphaneleri kullanabilir hale geldiğimizde belki o zaman Node.js'in ömrünü konuşmaya başlayabiliriz. Bakalım JavaScript ekosistemini ileride ne gibi değişlikler bekliyor. Hep birlikte göreceğiz.

Deno hakkında daha detaylı bilgiler için konu başlığına eklediğim bağlantıya tıklayabilir ya da DevNot sitesinden Zafer Ayan'ın yazdığı şu türkçe yazıyı okuyabilirsiniz.

Siz Deno hakkında ne düşünüyorsunuz? Deneyebildiniz mi? Denediyseniz olumlu/olumsuz eleştirileriniz neler? Yorumlar bölümünde fikir alışverişi yapalım.

Unreal Engine 5 ilk bakış duyuruldu

Geçtiğimiz hafta içerisinde Epic Games firmasının sahip olduğu Unreal Engine oyun motorunun 5 numaralı versiyonunun ilk bakış videoları ve yayınlanma süreci hakkında bazı detaylar duyuruldu. Zaten geçtiğimiz haftanın olay yaratan konularından biri de bu oldu.

Front-end geliştirme alanından bile daha uzak olduğun oyun geliştirme alanıyla ilgili bir haber olduğu için teknik kısımlarını pek iyi yorumlayamayacağım fakat duyurulan şeyleri anladığım ölçüde sizlere aktarmaya çalışayım:

  • Nanite: Bu yeni teknoloji sayesinde artık 3D tasarım yapan sanatçılar poligon sayısını çok kafasına takmadan hayallerindeki tasarımları dijital ortama aktarabilecekler. ZBrush ile taratılmış nesnelerden, CAD verilerine kadar birçok obje bu şekilde kullanılabilecek. Gerçek zamanlı olarak çalışan bu teknoloji kalite kaybı olmadan daha hızlı geliştirme yapmaya olanak sağlayacak.
  • Lumen: Bu sürümle birlikte gelecek olan tamamen dinamik aydınlatma çözümü. Bu özelliği okuyunca benim aklıma NVIDIA'nin RTX çözümü geldi. Bu da aynı onun gibi ışığın dinamik olarak hesaplanmasını ve dolayısıyla ortamlara ve zamana göre nesnelere vuran ışığın değişmesini sağlıyor. Tabii ki bu da gerçek zamanlı olarak GPU üzerinde hesaplanıyor ve oyuna yansıtılıyor. Teknik bilgim olmadığı için bu özelliğin RTX ile bağlantılı olup olmadığını bilemiyorum fakat konu hakkında bilgisi olan arkadaşlar yorumlar bölümünde belirtirse buraya ekleme yapabilirim.

Unreal Engine 5 ile birlikte çekirdeğe eklenen yeni teknolojiler bu şekildeydi. Unreal Engine 5 ön izleme sürümünün 2021'in ilk ayları içerisinde duyurulması beklenirken, tamamen stabil sürümün ise 2021'in daha ileri tarihlerinde yayınlanması planlanıyor. Unreal Engine 4 kullanan geliştiricilerin 5'e geçebilmeleri için uyumluluk çalışmalarının da devam ettiğini, geçiş sürecini kolaylaştırmak için çaba gösterdiklerini aktarıyorlar.

Unreal Engine 5 ile birlikte Epic Games bir de yeni bir servis duyurdu: Epic Online Services. Bu yeni servis sayesinde oyun geliştiricileri oyunlarına daha kolay bir şekilde çoklu oyuncu desteği eklemenin yanı sıra, lider tabloları, başarımlar vb. şeyleri de ekleyebilecekler. Üstelik bu hizmet tüm geliştiriciler için ücretsiz olarak sunuluyor. Epic Games, bu hizmeti sadece kendi oyun mağazası için sınırlamamış platformlar arası (cross-platform) desteği de eklemiş. Yani Playstation'dan XBox'a oradan iOS ve Android'e kadar birçok platformda oyuncular aynı şeylere sahip olabilecek.

Son olarak ise artık Unreal Engine kullanan geliştiriciler ve oyun yapımcıları yıllık gelirleri 1 milyon dolar olana kadar Unreal Engine'e lisans ücreti ödemek zorunda değiller. Lisanslama ile ilgili sorular için şu bağlantıda yer alan sıkça sorulan sorular kısmına göz atabilirsiniz.

Bu gelişme oyun geliştirme dinamiklerini nasıl etkiler, ilerleyen süreçlerde bizi neler bekliyor pek bilemiyorum ama oyun geliştirme alanında çalıştığını tahmin ettiğim Sosyal'den @ardazeytin arkadaşımızın yazdığı şu gönderiye bakabilirsiniz: https://teknoseyir.com/durum/1265228.

Oyun geliştirme alanında çalışan başka arkadaşlar varsa bu konu hakkında düşündüklerini yorumlar bölümünde dile getirirse çok memnun olurum.

Eclipse Foundation Avrupa'ya taşınıyor

Çoğunlukla Java IDE'si olarak tanıdığımız Eclipse, aslında Eclipse Foundation isimli bir yapının parçası. Geçtiğimiz hafta içerisinde ise Eclipse Foundation, tüzel kişiliklerini Brüksel'e taşıyarak bir Uluslararası kâr amacı gütmeyen dernek haline geleceklerini açıkladılar.

Şu anda Amerika merkezli bir vakıf olan Eclipse Foundation, taşınma nedeniyle ilgili açıklamalarda genelde "üyelerimiz ve katkı sağlayanlarımızın çoğu Avrupa'da olduğu için biz de onlara yakın olmak için merkezimizi oraya taşıyoruz" şeklinde özetliyorlar fakat ben Amerika'daki güncel siyasi durumun da konu üzerinde etkisi olabileceğini düşünüyorum. Bir de tüzel kişilikle ilgili bazı yasal kolaylıklardan bahsedilmiş sanırım fakat alanım olmayan bir konu olduğu için pek fazla bir şey anlamadım.

Taşınma süreciyle ilgili detaylar şu şekilde özetlenebilir:

  • Uluslararası kar amacı gütmeyen derneğin resmî işlemlerinin Temmuz 2020'de tamamlanması bekleniyor.
  • Fiziksel olarak Avrupa'da barındırılan, üzerinde GitLab kurulu sunucularda tüm projelerinin kaynak kodlarına ve dokümanlarına bu yılın yaz ayları itibariyle erişilebilecek. Burası geliştiriciler ve katkı sağlayanlar için üçüncü bir seçenek olarak sunulacak.
  • Eclipse ve Eclipse Foundation isimleri ve markaları yeni Belçika varlığı olarak kontrol edilecek.
  • Eclipse Foundation zaten hali hazırda Kanada ve Avrupa (Almanya ofisi mevcuttu) üzerinde eş zamanlı yönetildiği için vakfın operasyonlarının en düşük seviyede etkileneceği tahmin ediliyor.

Biz geliştiricileri pek fazla etkileyeceğini sanmıyorum ama yinede sektörümüzdeki önemli bir vakıfın böyle büyük bir taşınma işine girişmesini gündeme almak istedim. Daha detaylı bilgiler için konu başlığına eklediğim bağlantıya tıklayabilir ya da şu adresdeki sıkça sorulan sorular sayfasını ziyaret edebilirsiniz. Eclipse Foundation Europe ana sayfası için burayı ziyaret edebilirsiniz: https://www.eclipse.org/europe/

Firefox 77 ile birlikte <input> ve <textarea> elemanlarında davranış değişiklikleri geliyor

Mozilla tarafından geliştirilen web tarayıcısı Firefox'un bir sonraki sürümü olarak yayınlanacak 77 numaralı sürümünde <input> ve <textarea> elemanlarında değişiklikler olacağı geçtiğimi hafta Firefox Site Compatibility sitesinde duyuruldu.

Artık bu elemanlara kopyala/yapıştır ile bir içerik yapıştırdığımızda eğer içeriğin boyutu, elemanın maxlength property'sindeki boyuttan büyükse, yapıştırdığımız içerik otomatik olarak kırpılmayacak. Yani kullanıcılar o elemana daha uzun içerikler yapıştırabilecekler fakat bu demek değil ki Firefox bizim koyduğumuz kuralı görmezden geliyor. Firefox, maxlength değerine uymayan formları submit etmemeye devam edecek. Yapılan davranış değişikliğinin sebebi ise kullanıcıların şifre yönetim uygulamalarının ilgili elemana otomatik olarak yapıştırdığı şifrelerin kırpılmamasını sağlamak. Yani kullanıcının "acaba parolamla ilgili bir sıkıntı mı var" endişesini gidermeye yönelik. Eğer girilen metin olması gerekenden uzunsa Firefox kullanıcıya şöyle bir mesaj gösterecekmiş: "Lütfen bu metini 20 karakter ya da daha az olacak şekilde kısatın (şu an 30 karakter kullanıyorsunuz)".

Çalışan projelerimizi doğrudan etkileyecek bir durum göremiyorum ama yine de dikkate almaya değer bir davranış değişikliği olduğu için değinmeden geçmek istemedim. Daha detaylı bilgiler ve referanslar için konu başlığına eklediğim bağlantıya tıklayabilirsiniz.

GitHub Desktop 2.5 ve GitHub CLI 0.8 sürümü yayınlandı

GitHub'ın grafiksel masaüstü uygulaması ve komut satırı üzerinden çalışan aracı geçtiğimiz hafta içerisinde yeni sürümlerine kavuşturlar. Yeni sürümler ile gelen bazı özellikler şu şekilde:

[GitHub Desktop] Etiket oluşturma ve gönderme

Artık GitHub uygulaması üzerinden yeni git etiketleri (git tag) oluşturup, bunları GitHub.com üzerindeki uzak deponuza gönderebileceksiniz. Tabii ki var olan etiketleri de listeleme özelliği mevcut.

[GitHub CLI] Isseu ve Pull Requestleri kontrol etme

GitHub CLI üzerinden zaten bir proje üzerinde issue oluşturabiliyor ya da pull request gönderebiliyorduk fakat işlemler sadece bunlarla kısıtlıydı. Diğer ek işlemler için tarayıcıda açmak gerekiyordu. Bu sürümle birlikte artık issue ve pull requestlerimizi yaratırken onlara label, reviewer, projects, milestone gibi ek bilgiler iliştirebileceğiz. Aynı zamanda gh pr
close
, gh pr reopen ve gh issue close, gh issue reopen gibi komutlarla ilgili issue ya da pull requestleri açıp kapatabileceğiz. Komut satırı kullanmayı seven biri olan beni mutlu eden gelişmeler fakat henüz tam zamanlı kullanılabilecek kadar gelişmedi hele bir 1.0 sürümü çıksın bakalım…

SourceHut, PeerTube projesini desteklemek için fon programını duyurdu

SourceHut'ın ne olduğundan ve felsefesinden önceki yazılım gündemi yazılarının birinde (bkz: Yazılım Gündemi - 2020/17) bahsetmiştim. O yazıyı okumayanlar için kısa bir özet: SourceHut da GitHub ve GitLab gibi uzak bir git deposu hizmeti fakat tamamen özgür yazılım prensiplerine göre ve açık kaynak şekilde geliştiriliyor (ve JavaScript kullanmıyor). PeerTube ise YouTube'a benzer, gelişmiş ve dağıtık bir video paylaşma platformu. Teknik detaylarına pek fazla hakim değilim fakat siz bir PeerTube sitesine bir video yüklediğinizde aslında bir çeşit torrent paylaşmış gibi oluyorsunuz ve tarayıcı üzerinden o videoyu izleyen diğer kişiler de hem indiriyor hem de diğer kullanıcılar için gönderiyor. Bu sayede dağıtık bir yapı kurulmuş oluyor. İsterseniz sizde kendi sunucularınızda bir PeerTube ayağa kaldırabilir ve bu ağın bir parçası olabilirsiniz. İkisi de çok sevdiğim ve bir çeşit gönül bağı kurduğum projeler. Hazır yeri gelmişken ikisini birden gündemde konuk etmek istedim :).

SourceHut ise geçtiğimiz hafta içerisinde PeerTube projesini desteklemek ve içerik sayısını arttırmak için bir çeşit fon ayırdığını açıkladı. 5.000$'lık bu fon sayesinde PeerTube'a içerik üretmek isteyen kişilere ekipman desteği ve kitle fonlama araçları sağlanacak. Kitle fonlama aracı ise yine özgür yazılım prensipleriyle geliştirilen Librepay. Fakat bu fondan faydalanabilmenin bazı şartları var:

  • Hali hazırda başka bir platform üzerinde videolu içerik üretmiyor olmanız gerekiyor fakat bu o kadar sert bir kural değil sanırım, birkaç video üretmişseniz yine de başvurunuzda bunu açıkca belirterek değerlendirilme süreçlerine dahil olabiliyorsunuz.
  • Videolarınızı sadece PeerTube'a yükleyebilirsiniz. YouTube, Vimeo vb. platformlarda PeerTube için özel ürettiğiniz içerikler bulunamaz.
  • Oluşturduğunuz video içerikler Creative Commons lisansları ile paylaşılmalıdır.
  • En az 5 video üretmeniz bekleniyor. Eğer bu 5 videodan sonra videolu içerik üretmenin size göre olmadığına karar verirseniz fon yardımıyla aldığınız ekipmanları geri vermeniz gerekiyor.
  • Librepay üzerinden aylık en az 20$'dan fazla kazanmaya başladığınızda, devam eden barındırma maliyetleri tüm içerik oluşturucular arasında eşit olarak paylaştırılacak. Yani şimdilik aylık 45$ olan bu maliyet içerik oluşturucular arasında eşit bir şekilde bölüştürülür. Librepay gelirinizin %25'inden fazla ödeme yapmanız asla beklenmiyor; SourceHut gerisini
    tamamlıyor.

Eğer bu fona başvurmak isterseniz sir@cmpwn.com e-posta adresine, başlığı "PeerTube bootstrap application: <ad soyad>" olan ve içeriğinde de kendinizi tanıtarak ne tür bir içerik oluşturmak istediğinizden bahsedebilirsiniz.

SourceHut'ın kendi barındırdığı PeerTube hizmeti için burayı ziyaret edebilirsiniz: SpacePub. Diğer detaylar için konu başlığına eklediğim bağlantıya tıklayabilirsiniz.

Geçtiğimiz hafta SourceHut'daki diğer bazı gelişmeler de bu şekilde:

Diğer Haberler

BeğenFavori PaylaşYorum yap
Önceki yorumları gör 10 / 17

Yazılım Gündemi - 2020/18

< Önceki Gündem   |   4-10 Mayıs 2020   |   Sonraki Gündem >

Yazılım Gündemi ile ilgili gelişmeler hakkında bildirim almak için bu adresdeki konuya bakabilirsiniz. Yazılım Gündemine katkı sağlamak için yazılımın herhangi bir alanıyla ilgili karşılaştığınız haberleri sosyalde #YazılımGündemineMalzeme etiketi ile paylaşabilirsiniz.

GitHub, Satellite 2020 etkinliğini gerçekleştirdi

Geçtiğimiz yıllarda Microsoft tarafından satın alınan GitHub, geçtiğimiz hafta içerisinde Satellite 2020 etkinliğini sanal olarak gerçekleştirdi. Etkinlikte duyurulan yeniliklere birlikte göz atalım.

GitHub Discussions

Örnek bir discussions sayfası için burayı ziyaret edebilirsiniz

Yazılım geliştiriciler olarak sıklıkla takıldığımız konularda yardım alma ihtiyacımız oluyor. Uzun bir zamandır bu ihtiyacımızı StackOverflow üzerinde gideriyorduk. Zaman zaman alternatifleri çıksa da StackOverflow kadar tutmadı fakat artık yalnız değil. GitHub, Discussions özelliği ile doğrudan StackOverflow'u hedef alıyor bence. Herkese açık depolar için yakında beta olarak açılacak bu özellikle artık GitHub üzerinde proje sayfalarında da ilgili projeyle ilgili sorular sorup, çözümü yazan kişilerin mesajlarını çözüldü olarak işaretleyebileceğiz. Önceden beri issue sistemi zaten vardı fakat bu discussions ile artık StackOverflow'daki gibi sorular sorabileceğiz. GitHub ve StackOverflow arasında ortaya çıkan bu rekabet nereye varacak.

GitHub Codespaces

Yazılım gündemi yazılarını takip edenler bu ismi mutlaka hatırlayacaklardır. Evet, bir önceki gündem yazısından hatırlıyorsunuz. Microsoft, "Visual Studio Online" olan cloud tabanlı geliştirme çözümünün ismini "Visual Studio Codespaces" olarak değiştirmişti (bkz: Yazılım Gündemi - 2020/17). Ne tesadüftür ki bir başka Microsoft firması da aynı isimde özellik tanıtıyor :). Çoğunuzun da anladığı üzere artık GitHub üzerinden tek bir tıklama ile cloud tabanlı geliştirme ortamımızı ayağa kaldırabileceğiz. Henüz limitli açık beta sürecinde ücretsiz olarak kullanılabilen bu özellik herkese açıldığında kendine özel bir ücretlendirme ile gelecekmiş. Muhtemelen geçen hafta duyurduğum "Visual Studio Codespaces"deki fiyatlarla aynı olacaktır. GitHub'daki normal basit dosya düzenleme özelliği ücretsiz kalmaya devam edecek tabii ki. Limitli açık beta için başvuru yapmıştım fakat henüz onay gelmediği için detaylı bir şeyler yazamıyorum. Sizler de konu alt başlığına tıklayarak özelliğin sunum sayfasına erişebilir, açık beta için başvuru yapabilirsiniz. Onay alıp, deneme imkanınız olursa deneyimlerinizi yorumlar bölümünde paylaşmaktan kendinizi geri koymayın.

GitHub Codescanning ve Secret Scanning

Geçtiğimiz senenin yazılım gündemi yazılarının birinde (bkz: Yazılım Gündemi - 10) GitHub'ın Semmle isimli kod analizi çözümü sunan bir şirketi satın aldığını haber yapmıştım ve "GitHub bunu mutlaka kullanır bir şekilde" demiştim. İşte o kullanımlar geçtiğimiz hafta duyuruldu. Artık GitHub'a yüklediğimiz kodlar üzerinde güvenlik açıkları ve zafiyetler için otomatikleştirilmiş süreçler içeren 2 ürün var. Henüz ikisi de beta sürecinde olsa da incelemeye değer.

  • GitHub Code scanning ile herkese açık depolarımız üzerinde potansiyel güvenlik açıklarına yönelik taramalar yapabiliyor ve bunu CI/CD gibi süreçlerin bir parçası yapabiliyoruz. Yani "ben git push yaptığımda otomatik olarak taramaları yap" diyebileceğiz. Olası güvenlik sorunlarına karşı uyarı bildirimleri gönderen bu servis, arka planda GitHub tarafından geliştirilen CodeQL motorunu kullanıyor. Projeleriniz için beta başvurusunda bulunmak için bu sayfayı ziyaret edebilirsiniz.
  • Secret scanning ise GitHub'da 2018'den beri olan bir özellik fakat artık private depolarınız için de kullanabileceksiniz. Ne kadar dikkat etsek de bazen boşta bulunup kodlar içerisinde olmaması gereken bir şifreyi ya da gizli bir anahtarı unutabiliyoruz. Bu da haliyle güvenlik sorunlarına yol açıyor. İşte secret scanning tam da bu sorunu çözmeye yönelik bir özellik. Projelerinizde şifreye ya da gizli anahtara benzer metinsel ifadeler gördüğünde sizi uyarıyor ve yapmanız gerekenler hakkında bilgi veriyor.

GitHub'ın bu mecburiyetten dolayı sanal olarak düzenlediği Satellite 2020 etkinliğinde duyurulan belli başlı özellikler bu şekildeydi. Etkinliğin toplam 12 saatlik kaydı YouTube üzerinde mevcut, buraya tıklayarak ilgili videoya erişebilirsiniz.

Gördüğünüz gibi GitHub yazılım geliştirme ekosisteminin her alanı için bir çözüm üretmeye devam ediyor. Elbette çoğu geliştirici için GitHub'da tüm işlerini halledebilmek çok büyük bir kolaylık olacaktır ama ben GitHub'ın sektördeki konumundan da dolayı giderek tekelleştiğini düşünmeye başladım. Elbette bir firma açısından baktığımızda müşterilerini başka firmaların ürünlerini kullanmak zorunda bırakmadan, kendi bünyesi içerisinden çözümler sunmak istemesi çok doğal fakat ben şahsen yazılım geliştirmeyle ilgili her şeyimi GitHub'a emanet etmek istemezdim. Bunun için de haklı nedenlerim olduğunu düşünüyorum. Geçmişte Amerika'nın ambargo uyguladığı ülkelerdeki geliştiricilerin hesaplarını nasıl kilitlediklerini ve kodlarına resmen el koyduklarını hep birlikte görmüştük (bkz: Yazılım Gündemi - 3). Elbette tüm kararınızı olası bir "ambargo" kararına göre vermek mantıklı değil fakat Levent Abi'nin sözünü tekrar hatırlatmak istiyorum: "Cloud dediğin başkasının bilgisayarıdır. Gün gelir de 'sana hizmet vermiyorum kardeşim' derse yapabileceğin bir şey yok". Bu konuda siz ne düşünüyorsunuz? GitHub'ın bu kadar büyümesi ve yeni hizmetler sağlaması sizi endişelendiriyor mu? Yoksa bu yönde çekinceleriniz yok mu? Yorumlar bölümünde konuşalım.

Microsoft'un GitHub hesabı hacklendi

BleepingComputer sitesinin geçtiğimiz hafta yayınladığı habere göre "Shiny Hunter" rumuzlu hacker, Microsoft çalışanlarından birinin GitHub hesabını hackleyerek, private (herkese açık olmayan) depolara erişim sağladığını ve 500GB'dan daha fazla büyüklükte veri çaldığını iddia etti. Haftanın ilerleyen günlerinde ise bir Microsoft çalışanından olayın gerçek olduğunu öğrendik.

Hacker'ın paylaştığı ekran görüntüsündeki tarih bilgilerinden olayın 28 Mart günü gerçekleştiği ortaya çıkıyor.

Hacker ilk bu verileri yer altı forumlarında satmayı düşünmüş olsa da, sonradan ücretsiz olarak sızdırmayı tercih etmiş gibi gözüküyor. BleepingComputer sitesinin incelediğine göre sıvan private repoların içinde Microsoft'u zora sokacak derecede projelerin kodları yok. Çoğunlukla gizlilik gerektirmeyen kodlar, kod örnekleri, test projeleri ve e-kitapların yer aldığı söyleniyor. Zaten bu yüzden de pek fazla ses getirmedi bu olay ve çok az konuşuldu.

Facebook SDK kütüphanesindeki bir hata, popüler iOS uygulamalarının çökmesine yol açtı

Günümüzde birçok mobil uygulama ve web sitenin açılış ekranlarında çok sık "Facebook ile giriş yap", "Twitter ile kayıt ol" tarzı alternatif kimlik doğrulama yöntemlerini görüyoruz. Biz yazılım geliştiriciler olarak bu tarz özellikleri yine ilgili sosyal medya sitesinin sağladığı Software Development Kit'ler (SDK) aracılığıyla uygulamalarımıza ya da web sitelerimiz ekliyoruz. Geçtiğimiz hafta içerisinde de Facebook'un sağladığı SDK paketinin iOS sürümünde çıkan bir hata, bu paketi kullanan popüler iOS uygulamalarının açılırken çökmesine yol açtı. Bu uygulamalar arasında Spotify, TikTok ve Pinterest gibi uygulamalar da var. "Facebook ile giriş yap" özelliğinden faydalanmayan kullanıcılar da durumdan etkilenmişler.

Olay hakkında daha detaylı bilgi için konu başlığına eklediğim bağlantıya tıklayabilirsiniz ya da Facebook'un iOS SDK paketinin GitHub deposundaki şu issue sayfasını ziyaret edebilirsiniz. Uygulama geliştiren arkadaşların Facebook SDK ile olan bağlarını tekrar gözden geçirmelerini tavsiye ederim.

Flutter 1.17 ve Dart 2.8 sürümleri yayınlandı

Google tarafından geliştirilen platformlar-arası (cross-platform) uygulama geliştirme framework'ü Flutter ve programlama dili Dart, geçtiğimiz hafta içerisinde yeni sürümlerini yayınladılar. Birbiriyle ilişkili iki teknoloji olduğu için birlikte değerlendirmek istedim.

Flutter 1.17 ile birlikte gelen bazı yenilik ve değişiklikler:

  • Mobil performans ve boyut iyileştirmeleri: Hiçbir şey yapmadan sadece uygulamanızın Flutter sürümünü 1.17'ye yükselterek bile daha hızlı animasyonlar, daha küçük uygulama boyutları ve daha az bellek kullanımları elde edebiliyorsunuz. Flutter takımının iddiasına göre %40 oranında CPU/GPU kullanımında azalma ve uygulama boyutunda %18.5'lik bir azalma oluyor. Flutter'ın örnek Flutter Galery uygulaması bu sürüm değişikliğiyle birlikte 9.6MB'dan 8.1MB'a düşmüş.
  • iOS için Metal desteği, %50'lik bir performans iyileştirmesi sağlıyor: OpenGL gibi bir grafik kütüphanesi olan ve Apple tarafından geliştirilen Metal, artık Flutter'ın iOS tarafında varsayılan olarak kullandığı grafik kütüphanesi haline gelmiş. Apple tarafından geliştirilmesinden dolayı da iOS işletim sisteminde iyi performansla çalışabiliyor. Artık Flutter ile geliştirdiğimiz uygulamaların grafik işlemleri öncekine göre daha hızlı gerçekleşecek.
  • Material tasarıma sahip yeni widget'lar: NavigationRail, DatePicker. Doğrudan Google Material Design takımı tarafından tasarlanan bu yeni widget'lar artık Flutter 1.17 ile emrinize amade.

Dart programlama dili kendi içerisinde pub isimli bir paket yöneticisi (bağımlılık yöneticisi) ile birlikte geliyor. Geçtiğimiz hafta yayınlanan Dart 2.8 sürümüyle de Dart takımının bu paket yöneticisini daha iyileştirmeye yönelik çalışmalar yaptığını görebiliyoruz. Şöyle ki:

  • pub get komutunda hız iyileştirmeleri: Artık pub.dev üzerinden paketleri daha hızlı indirebileceğiz. Flutter takımı örnek veri olarak Flutter 1.12 sürümünde flutter create komutunun 6.5 saniye sürdüğünü, fakat artık Dart 2.8'de bunun sadece 2.5 saniye sürdüğünü belirtmiş.
  • Yeni komut pub outdated: Bu yeni komut sayesinde artık eski sürümde kalmış kütüphaneleri daha kolay tespit edebilecek ve sürümler arası geçişler için daha fazla bilgi edinebileceksiniz.

Flutter 1.17 ve Dart 2.8 ile birlikte gelen diğer özellik ve değişiklikler için konu başlığına eklediğim bağlantılara tıklayabilirsiniz.

Firefox 76 ile gelen yeni özellikler

Popüler web tarayıcılardan biri olan Mozilla Firefox, geçtiğimiz hafta içerisinde 76.0 numaralı sürümünü yayınladı. Bu sürümle birlikte gelen ve biz geliştiricileri ilgilendiren yeni özelliklerin birkaçına birlikte bakalım.

Debug yaparken dizini tamamen görmezden gelme

Her ne kadar çoğumuz hata ayıklama (debug) için printf, echo, console.log gibi komutları kullansak da tarayıcıların sağladığı Debugger özelliği bazı durumlarda daha işe yarar olabiliyor. Bu durumlarda da genellikle sadece proje klasörünüzün içerisindeki dosyaları debug etmek, oradaki olaylara bakmak isterseniz. İşte Firefox 76 ile birlikte gelen "blackboxing" özelliği ile bu mümkün. Debugger panelinin, Sources sekmesinden bir dizin seçip "bu dizin içindeki tüm dosyaları görmezden gel (ignore)" ya da "bu dizin haricindeki tüm dizinleri görmezden gel" diyebileceğiz".

Audio Worklets

Firefox 76 ile birlikte gelen bu yeni API sayesinde tarayıcı üzerinde arka planda ses işleme süreçleri işletebileceğiz. Açıkcası benim de çok yabancı olduğum bir alan fakat ilgili arkadaşlar alt konu başlığına eklediğim bağlantıya tıklayarak detaylı dokümantasyon yazısına ulaşabilirler.

Developer Edition için: CSS Uyumluluk Paneli

Bildiğiniz gibi Mozilla, Firefox'un bir de pre-release kanalı olarak Developer Edition sürümünü kullanıma sürüyor. Bu sürümde genelde sonraki Firefox sürümlerinde olan özellikler önceden geliştiricilerin kullanımına açılıyor ve test ediliyor. Bu özelliklere bir yenisi daha eklendi. F12 ile açtığımız Geliştirici Araçlarındaki CSS bölümüne artık Compatibility sekmesi de eklendi. Bu sekme sayesinde seçilen HTML elamanındaki aktif CSS özelliklerinin hangi tarayıcılarda desteklendiğini görebiliyoruz.

Firefox 76 ile birlikte gelen diğer geliştirici özellikleri için konu başlığına eklediğim bağlantıya tıklayabilirsiniz.

TIOBE popüler programlama dilleri sıralamasını Mayıs 2020 için güncelledi

Belirli periyotlarla internetteki programlama trendlerini analiz edip bunlardan programlama dilleri popülerliğini çıkartan TIOBE firması, Mayıs 2020 için güncel popüler programlama dilleri sıralamasını geçtiğimiz hafta içerisinde yayınlandı. Yeni tablo bu şekilde:

Elbette bu liste sadece popülerliğe göre belirlendiği için bizim için çok bir anlam ifade etmiyor. Sonuçta geliştireceğimiz yazılımlarda işimize en uygun olanı hangisiyse onu tercih ediyoruz, popülerlik sıralamasına göre tercih yapmıyoruz ama yine de programlama alanıyla ilgili olduğu için gündeme almak istedim.

Daha detaylı analizler ve interaktif grafikler için TIOBE sitesindeki bu sayfayı ziyaret edebilirsiniz.

Diğer Haberler

BeğenFavori PaylaşYorum yap
Önceki yorumları gör 7 / 8

Yazılım Gündemi - 2020/17

< Önceki Gündem   |   27 Nisan - 3 Mayıs 2020   |   Sonraki Gündem >

Yazılım Gündemi ile ilgili gelişmeler hakkında bildirim almak için bu adresdeki konuya bakabilirsiniz. Yazılım Gündemine katkı sağlamak için yazılımın herhangi bir alanıyla ilgili karşılaştığınız haberleri sosyalde #YazılımGündemineMalzeme etiketi ile paylaşabilirsiniz.

Lise öğrencilerine yönelik uluslararası yazılım eğitimleri erişime açıldı

Milli Eğitim Bakanlığının web sitesinde bugün yayınlanan duyuruya göre zaten öğretmenler için devam etmekte olan bazı yazılım geliştirme eğitimleri, lise öğrencileri için de erişime açılmış.

"Öğrencilerimiz için başlatılan bu eğitimlere, Android mobil uygulama geliştirmek için gerekli teorik bilgiler ile programlama dillerini öğrenecekleri ve bol bol pratik yaparak eğlenceli ve öğretici uygulamalar yazacakları üç yeni eğitim daha eklendi." bilgisini veren Selçuk, şunları kaydetti: "Google iş birliğinde 'Flutter ile Yazılım Geliştirme' ve 'Kotlin ile Yazılım Geliştirme' android uygulama eğitimleri, Öğretmen Yetiştirme ve Geliştirme Genel Müdürlüğü Youtube kanalı üzerinden tüm öğrenci ve öğretmenlerin erişimine açıldı. Google ve Cisco iş birliğinde hazırlanan bu programlarla öğrencilerin mobil uygulama oluşturma, yapay zeka, gömülü sistemler, robotik, big data konusundaki bilgi ve becerilerinin artırılmasını hedefliyoruz."

Öğretmen Yetiştirme ve Geliştirme Genel Müdürlüğünün YouTube Kanalındaki yazılım geliştirme videolarını içeren oynatma listelerine aşağıdaki bağlantılardan ulaşabilirsiniz:

Ayrıca Cisco tarafından sertifikalı öğretmenler de Python programlama dili için eğitimler verecekmiş fakat ilgili YouTube kanalında o eğitimleri bulamadım. Sanırım henüz yayınlanmamış.

"Delphi eğitimi" olayından (bkz: Yazılım Gündemi - 2020/04) sonra bence güzel bir gelişme bu. Elbette sadece internet üzerinden videolarla olacak iş değil, farklı eğitimsel içeriklerle ve pratiklerle de desteklenmeli ama başlangıç için güzel bir adım. Video sayıları henüz az gözüküyor ama anladığım kadarıyla hepsini birden paylaşmamışlar, her güne ayrı video şeklinde yayınlıyorlar. İlgili arkadaşlar yukarıdaki bağlantıları takip edebilirler ya da çevresindeki lise öğrencilerine tavsiye edebilirler.

Visual Studio Online hayatına Visual Studio Codespaces olarak devam edecek

Geçtiğimiz senenin yazılım gündemi yazılarının birinde (bkz: Yazılım Gündemi - 17) Microsoft'un "Cloud Geliştirme" çözümü olan Visual Studio Online'ın tanıtıldığından bahsetmiştim. "Cloud Geliştirme" ortamları giderek daha da popülerleşirken Microsoft'da bu hizmetinin ismini değiştirdi ve fiyatlarını da aşağıya çekti.

Kasım ayından bu yana Microsoft aldığı geri bildirimlerle birlikte çoğu kişinin yüksek özellikli geliştirme ortamlarına ihtiyaç duymadığını öğrenmişler ve hizmetlerine yeni bir paket eklemişler: Basic. Bu paket 2 sanal çekirdek, 4GB RAM ve 64GB SSD bulunuyor. Benim de üzerinde çalıştığım çoğu proje için yeterli bir paket fakat "cloud development" bana pek cazip gelmiyor. Güncellenen fiyat listesi işe şu şekilde:

Linux instance tipi Şimdiki fiyatı (Fiyat/Saat) Yeni Fiyat (Fiyat/Saat)
Basic (2 çekirdek, 4GB RAM $0.24 $0.08
Standard (4 çekirdek, 8GB RAM) $0.45 $0.17
Premium (8 çekirdek, 16GB RAM) $0.87 $0.34

Fakat yeni fiyatlar hemen yürülüğe girmiyor. Microsoft'un 19 Mayıs'da düzenleyeceği sanal Build 2020 etkinliğinden sonra yeni fiyatlarla kullanılmaya devam edilebilecek.

Sıkça soruyorum ama konusu açılmışken yine sorayım: Geliştirme ortamınızı "cloud development" olarak güncellemeyi düşünüyor musunuz? "Cloud Development" olayına bakışınız nasıl? Yorumlar bölümünde konuşalım.

Microsoft, Rust/WinRT ön izleme sürümünü tanıttı

Geçtiğimiz yazılım gündemi yazılarında detaylıca değindiğim konular arasında olmasa da Microsoft'un Rust programlama diline olan ilgiliyle alakalı haberleri "Diğer Haberler" bölümü altında paylaşmıştım. Rust, Mozilla tarafından geliştirilen güvenlik ve performans odaklı bir programla dili ve popülaritesi de gün geçtikçe artmaya devam ediyor. Bu hafta ise Microsoft, Windows için Rust ile uygulama geliştirmeye yarayan WinRT kütüphanesinin ön izleme sürümünü GitHub üzerinde açık kaynak olarak paylaştı.

Şu anda güncel olarak C++/WinRT üzerinde desteklenen tüm API'ler Rust/WinRT üzerinde de destekleniyor ve kullanılabiliyor. Yani artık Rust ile Windows üzerinde masaüstü uygulamalardan, cihaz sürücülerine (driver) kadar birçok tipte yazılımı geliştirebileceğiz. Microsoft'da örnek olması açısından Rust ile bir mayın tarlası uygulaması geliştirmiş ve GitHub üzerinde kodlarını paylaşmış.

Henüz gerçek uygulamalarda kullanmak için çok erken bir ön izleme sürümü fakat yeni denizlere açılmayı seven geliştirici arkadaşların ilgisine sunmuş olayım. Konu hakkında daha detaylı bilgi ve örnekler için konu başlığına eklediğim bağlantıya tıklayabilirsiniz.

Ayrıca Microsoft'un Rust'a olan ilgisi de devam edecek gibi gözüküyor. Çünkü Azure takımı da Rust dilini WebAssembly ile birlikte Kubernetes üzerinde test ediyormuş. Önümüzdeki süreçlerde Microsoft'un Rust'a olan ilgisinin ne kadar süreceğini hep birlikte göreceğiz.

Chrome Web Store, Geliştirici Programı Politikalarını güncelledi

Google tarafından geliştirilen Chrome web tarayıcısının eklenti mağazası olan Web Store'da eklenti yayınlarken geçerli olan kurallar bu hafta içerisinde güncellendi.

Google, yollanan her eklentiyi markete eklemeden önce denetimden geçiriyor. Güvenlik vb. gibi konular düşünüldüğünde bu çok da normal bir süreç aslında fakat bazı geliştiriciler sürekli birbirinin benzeri uygulamaları göndererek bu süreç içerisindeki diğer eklentilerin incelenme sürelerini uzatıyorlarmış. Yani siz bir eklenti yapıp bunu markete ekletmek istediğinizde bunun için beklemeniz gereken süre uzuyor. Bu durumun önüne geçmek için Google'da politikalarını değiştirmeye yoluna gidiyor. Politikalardaki güncellemeler şu şekilde:

  • Birbirinin aynısı deneyimleri ve fonksiyonları olan eklentiler artık yayınlanmayacak.
  • Yanıltıcı, yanlış biçimlendirilmiş, açıklayıcı olmayan, alakasız, aşırı veya uyumsuz meta bilgileri olan eklentiler fakat bunlar sadece eklentinin açıklamasını kapsamıyor aynı zamanda eklentinin ismi, başlığı, ikonu, ekran görüntüleri ve promosyon görüntüleri de bu kurallara uymak zorunda.
  • Geliştiriciler Chrome Web Store'daki eklentilerin sıralamalarını değiştirmeye yönelik hareketlerde bulunamazlar. Sahte incelemeler, eklentiyi otomatik indiren ve puanlayan botlar vb. şeyler.
  • Sadece başka bir web sitesini, uygulamayı ya da temayı aktifleştirmeye yarayan eklentiler artık kabul edilmeyecek.
  • Kullanıcılara sürekli spam olarak mesajlar, reklamlar, hedefli saldırılar (phishing), promosyon gönderen eklentiler yayınlanmayacak.

Bu yeni politikların uygulanmasına 27 Ağustos 2020 tarihinde başlanacakmış. Eğer Chrome Web Store'da yayınlanmış bir eklentiniz varsa yeni politikaları ihlal edip etmediğinizi kontrol edin. Zira 27 Ağustos itibariyle bu kurallara uymayan tüm eklentiler marketten kaldırılacaklar.

Daha fazla bilgi için konu başlığına eklediğim bağlantıya ya da Chromium takımının hazırladığı Sıkça Sorulan Sorular sayfasını ziyaret edebilirsiniz.

TypeScript 3.9 RC sürümü yayınlandı

Microsoft tarafından geliştirilen, JavaScript'e derlenebilen tipli programlama dilin olan TypeScript, bu hafta içerisinde 3.9 Release Candidate sürümüne kavuştu. Açıkcası uzun bir zamandır front-end teknolojileri ile pek ilgilenmiyorum dolayısıyla bu haberi de "Diğer Haberler" kısmına taşımıştım ki son anda anlayabildiğim bir yeni özellik fark ettim. Hız iyileştirmeleri hakkında zaten fazla bilgi verilmiş, gidip kodları okumak gerekiyor. Editör iyileştirmelerini de programlama dilinin yapısıyla ilgili olmadığı için almadım. Öyleyse anladığım özelliği aktarayım size :).

// @ts-expect-error yorum satırı Pull Request Sayfası

TypeScript kullanarak bir kütüphane yazıyor olduğunu düşünün ve şöyle bir fonksiyonunuz var:

function hadiBirSeylerOlsun(abc: string, xyz: string) {
    assert(typeof abc === "string");
    assert(typeof xyz === "string");

    // bir şeyler oluyor
}

Bu fonksiyon iki tane string türünden değer kabul ediyor, biz TypeScript ile bu fonksiyonu kullanırken string dışında bir türden değişken gönderirsek TypeScript hata vererek derlenmeyecek, benzer şekilde bu fonksiyonu JavaScript tarafında kullanmaya çalışırsak da çeşitli hatalar görüyoruz. Bu durum için test yazmaya çalıştığımızda ise şöyle bir kod yazabiliriz:

expect(() => {
  hadiBirSeylerOlsun(123, 456);
}).toThrow();

Fakat bu kod TypeScript'de derlenmeyecektir çünkü fonksiyona string dışında bir değer gönderdik. İşte bu durumun önlemek için fonksiyonumuzun hemen üst satırına // @ts-expect-error yorum satırını ekliyoruz ve artık TypeScript derleyicisi bu fonksiyonun çalıştırılmasıyla bir hata beklendiğini anlayacak ve bu satırın tip kontrolünü atlayacak.

Bu iş için daha önceden ts-ignore ifadesi kullanılıyormuş sanırım fakat bazı durumlarda soruna yol açabildiği için bu özel durum için özel bir yorum satırı işaretleyicisi oluşturmuşlar.

TypeScript 3.9 Release Candidate sürümü ile birlikte gelen diğer özellikler ve değişiklikler için konu başlığına eklediğim bağlantıya tıklayabilirsiniz.

SourceHut project hub duyuruldu

SourceHut, tıpkı diğer uzak git sunucuları (GitHub, GitLab vb.) gibi size git depolarınızı uzak bir sunucuda tutma imkanı veren bir web sitesi. Tabii ki artık modern yazılım geliştirme süreçlerinin birer parçası olan CI (Continuous Integration), proje yönetimi (issue takibi vb.), wiki, kod inceleme (code review) gibi farklı sorunlara da çözüm üreten servisleri mevcut. Yalnız SourceHut'ın diğerlerinden farklı bir yani var: sitede JavaScript kullanılmıyor, her şey sunucu tarafında çalışıyor. Ayrıca %100 açık kaynak ve özgür yazılım olarak bir kişi tarafından geliştiriliyor. İlk yazılım gündemi yazısında bu siteye gelen bir özellikten bahsetmiştim ve benim de çok beğendiğim bir servis olduğu için ne zamandır tekrar gündemde değinmek için bahane arıyordum :).

SourceHut bu hafta içerisinde "project hub" ismini verdiği yeni servisini duyurdu. Bu yeni servisin ne işe yaradığını anlamak için öncesince SourceHut'ın arkasındaki UNIX felsefesini bilmek gerek. GNU/Linux kullananların da aşina olduğu üzere işletim sistemiyle birlikte gelen araçların çoğu "sadece bir şeyi yap ama en iyi yap" anlayışıyla geliştirilmiş araçlardır. Dolayısıyla elinizin altında birbiriyle kombinleyebileceğiniz bir sürü araç olmuş oluyor. Örneğin cat komutu sadece bir dosyanın içeriğini yazdırmaya yararken, grep komutu bir dosya içerisinde metin arama gibi işlemleri yapabiliyor. İşte SourceHut da bu yaklaşımla geliştiriliyor. Sadece bir işi en iyi şekilde yapmaya çalışan birçok alt servis var. Git depolarınızı barındırmak için git.sr.ht, issue takibi vb. işler için todo.sr.ht, CI işlemleri için builds.sr.ht vb. birçok alt servis bulunmakta. Hepsini görmek için sourcehut.org adresini ziyaret edebilirsiniz.

Yani oluşturduğunuz bir git deposu sadece git deposu olma işini yapıyor. Issue takip vb. diğer işler için diğer alt servislerden oluşturmanız gerekiyor. İşte "project hub" ise bütün bu alt servisleri GitHub ve GitLab'dan alıştığımız gibi tek bir sayfada birleştiriyor. Fakat yanlış anlaşılmasın bu alt servisler birleşip tek hale gelmiyor, sadece bir projeye ait tüm alt kaynaklar bir sayfada toplanıyor, isterseniz tıklayarak o alt servisteki işlemlerinize gidebiliyorsunuz. Üstelik bir projeye istediğiniz kadar alt servis ekleyebiliyorsunuz, mesela bir uygulamanın Android ve iOS sürümlerini ayrı ayrı git depolarında tutuyorsanız onları da tek bir projeye ekleyebiliyorsunuz.

Örnek için SourceHut'ın tüm alt servisleriyle birlikte kodlarını barındıran bu proje sayfasını ziyaret edebilirsiniz.

SourceHut dışından gelenler için böyle bir sayfanın olması çok önemliydi ve sonunda eklediler. Siz de benim gibi UNIX felsefesinden hoşlanan ve GNU/Linux araçları gibi basit ve sade araçları kullanmayı seviyorsanız mutlaka SourceHut'a bir göz atın. Ayrıca tek kişi tarafından geliştirildiğini aklınıza getirerek bağış yapmayı da düşünebilirsiniz.

Diğer Haberler

BeğenFavori PaylaşYorum yap

Yazılım Gündemi - 2020/16

< Önceki Gündem   |   20-26 Nisan 2020   |   Sonraki Gündem >

Yazılım Gündemi ile ilgili gelişmeler hakkında bildirim almak için bu adresdeki konuya bakabilirsiniz. Yazılım Gündemine katkı sağlamak için yazılımın herhangi bir alanıyla ilgili karşılaştığınız haberleri sosyalde #YazılımGündemineMalzeme etiketi ile paylaşabilirsiniz.

1 Milyon Yazılımcı Projesi duyuruldu

Geçtiğimiz haftanın yazılım gündemi yazısında (bkz: Yazılım Gündemi - 2020/15) Sanayi ve Teknoloji Bakanı Mustafa Varank'ın Açık Seminer etkinliğinin ilk gününde yaptığı bazı açıklamalara yer vermiştim. Bu hafta da sırasıyla Cumhurbaşkanı ve Hazine ve Maliye Bakanı da alanımızla ilgili bir proje duyurdular ve bazı söylemlerle bulundular. Proje ilk "3 yılda 1 milyon yazılımcı" gibi sloganlarla duyuruldu fakat sonrasında "1 Milyon İstihdam Projesi" olarak güncellendi.

Proje kapsamında 'yazılımcı' olmak isteyen adaylar bu adres üzerinden kayıt yaptırdıktan sonra BTKAkademi'nin web sitesinin "Eğitim Kataloğu" sayfasında yer alan eğitimleri, uzaktan eğitim yoluyla takip edebilecekler. Bitirdikleri her eğitim, "1 Milyon İstihdam Projesi" kapsamında oluşturulacak öz geçmişlerine (CV) yetenek olarak otomatik şekilde eklenecek. Firmalar ve kurumlar ise bu öz geçmiş havuzundaki kişilerden seçip işe alım yapabilecekler.

Konu hakkında yorumlarımı TeknoSeyir Sosyal'de birkaç gönderi belirtsem de eleştirilerimin politik bir yanı da olduğu için pek fazla detay vermedim. Bu yazıda da politikadan uzak durmaya çalışarak neden bu projenin karşısında olduğumu açıklamaya çalışacağım.

Açıkcası ben, bu projenin amacı eğitim sistemimizdeki ve sektördeki sorunları halının altına süpürüp, insanların odaklarını farklı ve alakasız bir noktaya çekmek olduğunu düşünüyorum. Çünkü sektörümüzdeki ve eğitim sistemimizdeki asıl sorun nicelik, yani yazılımcı sayısı değil; niteliktir! Sorun yazılımcı sayısı olmadığı için de bilmem kaç yılda bilmem kaç tane yazılımcı yetiştirerek bu sorunu çözemezsiniz, aksine yeni sorunlar ortaya çıkardığınız gibi mesleğimizin itibarını da zedelemiş olursunuz.

Asıl konuşmamız gereken meslek alanımızdaki üniversite bölümlerinin kalitesidir. Bu bölümlerden her yıl binlerce öğrenci mezun olmasına rağmen neden sektördeki kalifiye mühendis/yazılımcı ihtiyacı karşılanamıyor? Sorulması ve üzerine kafa yorulup, projeler yapılması gereken konu budur. Her ne kadar artık ülkedeki bu tarz şeylere şaşırmıyor olsam da kendi alanımla ilgili bu tarz şeyler görünce sinirlenmeden edemiyorum.

Yazının tamamını bu konuya ayırmak istemiyorum o yüzden sizleri Bilgisayar Mühendisleri Odası'nın bugün yayınladığı bildiriyi okumaya devam ediyorum. Bildiride yazılan her şeye ben de sonuna kadar katılıyorum ve destekliyorum.

Bu konu hakkında siz ne düşünüyorsunuz? Yorumlar bölümünde konuşalım.

Tek satırlık kütüphane tüm JavaScript ekosistemini kırdı

function isPromise(obj) {
  return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
}

Yukarıdaki tek satırlık fonksiyon aslında is-promise isimli bir JavaScript kütüphanesi. Yaptığı tek işlem ise verdiğiniz değişkenin "Promise" objesi olup olmadığını kontrol etmek ve geriye boolean değer döndürmek. Yaptığı iş bu kadar basit olmasına rağmen kütüphane(!) olabilmiş, hatta yetmemiş 3.4 milyon farklı projede kullanılmış, hatta ve hatta komple bir ekosistemi birkaç saatliğine kırabilmiş. İşte size modern yazılım geliştirme süreçlerindeki bağımlılık yönetiminin geldiği halin özeti.

Bu kütüphaneye 25 Nisan günü yapılan bir değişiklik ve 2.2.0 sürümüyle birlikte ES Module desteği gelmişti fakat sanırım bu standardı iyi bir şekilde projeye eklememiş olacaklar ki sürümün yayınlanmasından sadece birkaç saat sonra bu kütüphaneyi kullanan projelerin geliştiricileri hatalar almaya başladılar. Kütüphanenin yeni sürümündeki hatanın etki alanı oldukça büyük: Facebook'un "Create React App" aracından, Google'ın AngularJS framework'üne, oradan Amazon'un AWS Serverless komut satırı aracına kadar birçok yerden sarsıntılar hissedildi. Hali hazırda çalışan uygulamalarda anlık bir soruna yol açmadı fakat geliştiriciler derleme sırasında hata aldıkları için projelerin geliştirilme süreci aksamış oldu.

Neyse ki sorunun çözülmesi fazla uzun sürmedi. Birkaç saat içerisinde önceki değişiklikleri geri alan ve sorunu çözen 2.2.2 sürümü yayınlandı.

Aslında JavaScript ekosistemi için bu olay hiç de yeni bir şey değil. Takip edenler mutlaka hatırlayacaktır. 2016 yılında da left-pad isimli bir kütüphanenin npm'den silinmesi üzerine aynı şeyler yaşanmıştı. Üstelik ilgili kütüphanenin geliştiricisi Türkiye'den bir isimdi: Azer Koçulu. Konuyla ilgili kendisinin konuk olduğu şöyle bir podcast yayını var. Mutlaka dinlemenizi tavsiye ederim.

Görünüşe göre yazılım camiası o olaydan dersini almamış. Bu olay da her ne kadar Reddit ve HackerNews gibi platformlarda uzun süre ilk sıralarda otursa da yine ders çıkarılacağını pek sanmıyorum. Modern yazılım geliştirme süreçlerinin geldiği durumu pek beğenmiyorum. Şu yukarıdaki gibi tek satırlık bir kodu bile üçüncü parti kütüphane olarak eklemek bana soracak olursanız üşengeçlikten başka bir şey değil.

Bu konu hakkında siz ne düşünüyorsunuz? Günümüz modern yazılım geliştirme süreçlerinden memnun musunuz? Sizin karşılaştığınız ya da tespit ettiğiniz sorunlar neler? Yorumlar bölümünde konuşalım.

Hollanda, kamu hizmetlerinin yazılımlarının açık kaynak olmasını teşvik etmeye başlayacak

Geçtiğimiz hafta Hollanda İçişleri ve Krallık ilişkileri Devlet Sekreteri Raymond Knops, kamu kurum ve kuruluşlarında açık kaynak kullanımıyla ilgili açık mektup yayınlayarak (metnin İngilizce çevirisi için bu reddit yorumuna bakabilirsiniz) diğer ülkelere de çağrıda bulundu.

Metinde kamu kurum ve kuruluşlarının ürettiği yazılımları neden açık kaynak olarak paylaşılması gerektiğinden bahseden Knops, "Eğer iyi bir nedeniniz yoksa kamu yazılımlarını açık kaynak olarak paylaşmalısınız" dedi. Tabii ki bunlara askeri sistemler vb. güvenliğin çok hassas olduğu projeler dahil değil. Bu bağlamda Hollanda'nın da 2021'in ilk aylarında kamu yazılımlarının açık kaynak yapılmasını önünde duran bazı yasal bariyerleri kaldıracaklarını ve kamu kurumlarının yazılımlarının daha şeffaf olması yönünde düzenlemeler yapacaklarını belirttiler. Fakat bu yeni düzenlemeler çıktığı tarihten sonra geliştirilmeye başlanan yazılımları kapsayacak görünüyor. Yalnız şunu belirtmekte fayda var "artık kamu kurum ve kuruluşları yazılımlarını açık kaynak yapmak zorunda" gibi bir durum yok, şu an sadece kurumlara yazılımlarını açık kaynak yapabilmeleri için imkan ve teşvik sağlıyorlar.

Bu haber farklı bir kaynakta da karşıma çıktı fakat biraz kendi taraflarına yormuşlar gibi geliyor bana. Özgür Yazılım Vakfı Avrupa (FSFE) organizasyonun (bildiğimiz Özgür Yazılım Vakfı ile çalışmaları var fakat birbirlerine bağlı değiller) web sitesinde de bu haber "Netherlands commits to Free Software by default" başlığıyla yayınlandı. Fakat ben Raymond Knops'un yayınladığı açık mektupun İngilizce çevirisini okuduğumda özgür yazılımla ilgili bir ibareye rastlamadım. Knops, daha çok açık kaynağın getirdiği ekonomik ve teknik faydalardan bahsetmiş. Teknik faydalardan kast ettiğim şunlar: topluluk tarafından desteklenme, ortak geliştirme yapabilme, diğer geliştiricilerin katkı sağlayabilmesi, şeffaflık. Burada özgür yazılım tarafına yorabileceğimiz bir ifade var, o da "şeffaflık". Yazıda parantez içerisinde "açık kaynak" ("open source") ifadesini de kullanmışlar fakat benim bu haberden anladığım Hollanda da, büyük yazılım firmaları gibi açık kaynağı kendi amaçları için kullanmak istiyor. Ben de bir özgür yazılım destekçisiyim ama bu habere tarafsız gözle incelediğimde özgür yazılım adına bir ifade göremedim. Yine de başlangıç için çok güzel bir gelişme, ileride özgür yazılımı konuşmanın önünü açabilecek bir gelişme bence.

Bu konu hakkında siz ne düşünüyorsunuz? Sizce kamu kaynakları kullanılarak oluşturulan yazılımların kaynak kodları yine kamuya açılmalı mı? Devletlerin özgür yazılım tarafına geçmesi mümkün mü? Yorumlar bölümünde konuşalım.

Ayrıca yeri gelmişken Özgür Yazılım Vakfı Avrupa tarafından başlatılmış "Halkın Parası. Halkın Kodu!" ("Public Money? Public Code!") kampanyasının da şu videosunu izlemenizi öneririm:

GitHub'ın yeni bildirim sayfası tasarımı Beta'dan çıktı

Popüler uzak git sunucularından biri olan GitHub, bu hafta içerisinde uzun bir süredir Beta programında olan bildirim sayfasının yeniden tasarlanmış halini program kapsamından çıkararak, herkes tarafından erişilebilir yaptı. Bu yeni tasarımda artık bildirimler arasında arama yapabilir ve çeşitli filtreler seçerek ekranınızı özelleştirebilirsiniz.

GitHub'ın yeni bildirim sayfası tasarımı

Yeni tasarımı incelemek için siz de kendi GitHub hesabınızın bildirimler sayfasına göz atabilirsiniz.

GitLab 12.10 sürümü yayınlandı

GitHub'ın en büyük rakiplerinden biri olan GitLab, bu hafta içerisinde 12.10 numaralı sürümünü duyurdu. Bu sürümle ile birlikte gelen bazı özellikler ücretsiz kullanıcılara da açıkken, bazıları da sadece ücretli paketlerdeki lisanslı kullanıcılara açık. Gelin birkaç özelliği birlikte inceleyelim.

CI/CD anahtarlarını HashiCorp Vault üzerinden getirme

Artık HashiCorp firması tarafından sağlanan şifre, anahtar ve sertifika yönetimi servisi Vault üzerinden ihtiyacımız olan anahtarları getirip, CI (Continuous Integration) ve CD (Continuous Delivery) süreçleri üzerinde JWT (JSON Web Token) doğrulama yöntemiyle kullanabileceğiz. Bu özelliklik ücretsiz ve ücretli tüm GitLab kullanıcılarına açık.

Jira üzerinden issue'leri içeri aktarma

Atlassian firması tarafından issue takibi ve proje yönetimi hizmeti olarak sağlanan Jira platformu üzerindeki issue'leri artık GitLab'a aktarabileceğiz. Bu özellik de herkesin kullanımına açık.

GitHub CI işlerini AWS Fargate üzerinde otomatik ölçekleme

Günümüz modern yazılım geliştirme süreçlerinin önemli bir parçası da artık Continuous Integration süreçleri oldu. Projede bir değişiklik yaptığınızda bu değişikliklerin yol açabileceği şeyler farklı sistemler üzerinde denenmek ve raporlanmak zorunda. Bu deneme ve raporlama işleri de GitLab tarafında GitLab CI ile çözülüyor. Bu güncelleme ile birlikte artık CI süreçlerinde çalışan işler AWS Fargate üzerinde otomatik ölçeklenebilecek (autoscaling). Dolayısıyla deneme ve raporlama süreçleri daha erken bitebilecek. Bu özelliği GitLab.com üzerinde kullanamıyorsunuz fakat kendi sunucunuzda GitLab kullanırken ücretsiz olarak bu özellikten faydalanabiliyorsunuz.

Bu sürüm ile birlikte pek çok farklı özellikte geldi fakat hepsine burada değinemiyorum. GitLab 12.10 sürümüyle birlikte gelen diğer özellikler için konu başlığına eklediğim bağlantıya tıklayabilirsiniz.

NodeJS 14.0 sürümü yayınlandı

Sunucu tarafında JavaScript kullanımına olanak sağlayan NodeJS, bu hafta itibariyle 14 numaralı sürümünü yayınladı. Bu sürümle birlikte gelen bazı özelliklere birlikte bakalım.

Şu anda "Current" dalında olan bu sürüm Ekim 2020'de Long-Term Support sürecine girecek. Yani üretim ortamında kullandığınız bir NodeJS var ise onu hemen güncellemeniz tavsiye edilmez. Uzun dönem desteklenecek hale geldiğince üretim ortamı için daha uygun olacaktır.

JavaScript motoru sürümü V8 8.1 olarak güncellendi

Bu JavaScript motoruyla birlikte gelen bazı özellikler de doğal olarak NodeJS'e gelmiş oldu. Bunlardan bazıları şu şekilde:

Deneysel Asenkron Local Storage API

Asenkron yapılar artık günümüzde birçok projede kullanılıyor. Kısaca açıklamak gerekirse bu yapılar sayesinde belirli bir zaman alan işlemlerin yazılımı durdurmasının önüne geçiliyor. Yani siz bir siteye girdiğinizde, sitenin içerisindeki bazı bilgiler başka servislerden geliyor olabilir. Bu bilgilerin gelme işlemi devam ederken siz site üzerinde gezinti yapmaya devam edebiliyorsunuz. İşte bu yapı artık Local Storage için de geldi. Artık Local Storage üzerine veri kayıt ederken ve okurken asenkron olabileceğiz.

NodeJS 14 ile birlikte gelen diğer özellik ve değişiklikler için konu başlığına eklediğim bağlantıya; değindiğim özelliklerin detayları için de ilgili alt başlığın içerisindeki bağlantılara tıklayabilirsiniz. Ayrıca alternatif kaynak için IBM'deki geliştiriciler tarafından hazırlanmış şu videoyu da izleyebilirsiniz:

Python 2 için son güncelleme: 2.7.18

Geçtiğimiz senenin eylül ayı içerisinde Python 2 sürüm dalının 3 aylık ömrü kaldığını haber vermiştim (bkz: Yazılım Gündemi - 9). Bu hafta ise Python 2 sürüm dalı son güncellemesini aldı. Artık Python 2 sürümü geliştirilmeye devam edilmeyecek. Bu haber vesilesiyle Python 2 ile artık yeni projelere başlanmamasını, var olan aktif geliştirilen projelerin de Python 3 sürüm dalına geçirilmesini tavsiye etmiş olayım.

Ayrıca konuyla ilgili StackOverflow'un Blog sayfasında da bir yazı yayınlandı. İlgili arkadaşlar nostalji yapmak için o yazıyı da okuyabilirler.

Diğer Haberler

BeğenFavori PaylaşYorum yap