Yazılım Gündemi

 Web SitesiGitHub Deposu | GitLab Deposu

Nedir?

Yazılım Gündemi, benim TeknoSeyir Sosyal platformunda 2019-2020 yılları arasında her hafta düzenli olarak yazmaya çalıştığım bir yazı serisidir. Bu yazı serisi kapsamında, her hafta, o hafta içerisinde programlamanın çeşitli alanlarıyla ilgili internette karşılaştığım haberleri topluyordum. Topladığım haberlerden ilgim ya da bilgim olanları detaylı değerlendiriyor; (b)ilgim olmayanları ise "Diğer Haberler" başlığı altında listeliyordum. İlk yazılarda olmasa da sonradan bir de "Yaklaşan Etkinlikler" bölümü ekledim. Bu bölümde de bir sonraki hafta için planlanmış alanımızla ilgili bulabildiğim tüm etkinlikleri tablo şeklinde veriyordum. Fakat hem biraz motivasyon kaybı yaşadığım için hem de hayatımda farklı şeylere öncelik vermem gerektiği için yazı serisine ara verdim.

Şunu da şöylemeliyim ki: Bu gündem yazıları o hafta içerisinde yazılım dünyasında olan her şeyi kapsama garantisi vermiyor. Takip ettiğim kaynaklarda karşıma çıkan güncel haberleri gündem yazıları içerisine alıyordum. Takip ettiğim kaynakları aşağıdaki Kaynaklar bölümünde bulabilirsiniz.

Motivasyon

TeknoSeyir'in en çok tükettiğim içerikleri Gündem Değerlendirmeleri (teknoloji, oyun ve bilim). Her ne kadar teknoloji sektörünün içerisinden birisi de olsam teknoloji gündemini o kadar sık takip edemiyorum. Aynı çekilde bilim de ilgi alanım fakat onu da sürekli takip edebilecek bir vaktim yok. TeknoSeyir'da hazırlanan bu içerikler tam olarak benim bu ihtiyaçlarımı karşılıyor.

Benim sürekli takip ettiğim bir alan var, o da: Yazılım sektörü. Haftalık Gündem Değerlendirmesi'nde her ne kadar yazılım sektörü içerisinden haberlere sık sık yer verilse de, hitap ettiği kitleye doğal olarak uymadığından, programlamanın daha içerisinden haberler pek fazla yer bulmuyordu. Ben de, "madem kendim sürekli bu haberleri takip ediyorum, o halde neden ben böyle bir içerik çıkartmayayım" dedim ve bu yazı serisini oluşturdum.

TeknoSeyir Sosyal'den birçok arkadaş bu yazı serisini podcast şeklinde sesli bir içerik şeklinde hazırlamamı tavsiye ettiler, hatta şiddetle talep de ettiler fakat ben kendimi yazarak daha iyi ifade edebildiğimi düşündüğüm için girmedim o işlere. Ama günün birinde o yeteneklerimi de geliştirirsem neden olmasın 🙂

Arşiv

Yazılım Gündemi yazılarının HTML, PDF ve ORG formatındaki sürümlerini aşağıdaki listeden bulabilirsiniz.

Toplam gündem sayısı: 49

Toplam özel yazı sayısı: 1

2020

Yazılım Gündemi - 2020/26 29 Haziran - 5 Temmuz 2020 HTML PDF ORG
Yazılım Gündemi - 2020/25 22-28 Haziran 2020 HTML PDF ORG
Yazılım Gündemi - 2020/24 15-21 Haziran 2020 HTML PDF ORG
Yazılım Gündemi - 2020/23 8-14 Haziran 2020 HTML PDF ORG
Yazılım Gündemi - 2020/22 1-7 Haziran 2020 HTML PDF ORG
Yazılım Gündemi - 2020/21 25-31 Mayıs 2020 HTML PDF ORG
Yazılım Gündemi - 2020/20 18-24 Mayıs 2020 HTML PDF ORG
Yazılım Gündemi - 2020/19 11-17 Mayıs 2020 HTML PDF ORG
Yazılım Gündemi - 2020/18 4-10 Mayıs 2020 HTML PDF ORG
Yazılım Gündemi - 2020/17 27 Nisan - 3 Mayıs 2020 HTML PDF ORG
Yazılım Gündemi - 2020/16 20-26 Nisan 2020 HTML PDF ORG
Yazılım Gündemi - 2020/15 13-19 Nisan 2020 HTML PDF ORG
Yazılım Gündemi - 2020/14 6-12 Nisan 2020 HTML PDF ORG
Yazılım Gündemi - 2020/13 30 Mart - 5 Nisan 2020 HTML PDF ORG
Yazılım Gündemi - 2020/12 23-29 Mart 2020 HTML PDF ORG
Yazılım Gündemi - 2020/11 16-22 Mart 2020 HTML PDF ORG
Yazılım Gündemi - 2020/10 9-15 Mart 2020 HTML PDF ORG
Yazılım Gündemi - 2020/09 2-8 Mart 2020 HTML PDF ORG
Yazılım Gündemi - 2020/08 17 Şubat - 1 Mart 2020 HTML PDF ORG
Yazılım Gündemi - 2020/07 10-16 Şubat 2020 HTML PDF ORG
Yazılım Gündemi - 2020/06 3-9 Şubat 2020 HTML PDF ORG
Yazılım Gündemi - 2020/05 27 Ocak - 2 Şubat 2020 HTML PDF ORG
Yazılım Gündemi - 2020/04 20-26 Ocak 2020 HTML PDF ORG
Yazılım Gündemi - 2020/03 13-19 Ocak 2020 HTML PDF ORG
Yazılım Gündemi - 2020/02 6-12 Ocak 2020 HTML PDF ORG
Yazılım Gündemi - 2020/01 1-5 Ocak 2020 HTML PDF ORG

 2019

Yazılım Gündemi - 23 23-29 Aralık 2019 HTML PDF ORG
Yazılım Gündemi - 22 16-22 Aralık 2019 HTML PDF ORG
Yazılım Gündemi - 21 9-15 Aralık 2019 HTML PDF ORG
Yazılım Gündemi - 20 2-8 Aralık 2019 HTML PDF ORG
Yazılım Gündemi - 19 18 Kasım-1 Aralık 2019 HTML PDF ORG
Yazılım Gündemi - 18 11-17 Kasım 2019 HTML PDF ORG
Yazılım Gündemi - 17 4-10 Kasım 2019 HTML PDF ORG
Yazılım Gündemi - 16 28 Ekim - 3 Kasım 2019 HTML PDF ORG
Yazılım Gündemi - 15 21-27 Ekim 2019 HTML PDF ORG
Yazılım Gündemi - 14 14-20 Ekim 2019 HTML PDF ORG
Yazılım Gündemi - 13 7-13 Ekim 2019 HTML PDF ORG
Yazılım Gündemi - 12 30 Eylül - 6 Ekim 2019 HTML PDF ORG
Yazılım Gündemi - 11 23-29 Eylül 2019 HTML PDF ORG
Yazılım Gündemi - 10 16-22 Eylül 2019 HTML PDF ORG
Yazılım Gündemi - 09 9-15 Eylül 2019 HTML PDF ORG
Yazılım Gündemi - 08 2-8 Eylül 2019 HTML PDF ORG
Yazılım Gündemi - 07 26 Ağustos - 1 Eylül 2019 HTML PDF ORG
Yazılım Gündemi - 06 12-25 Ağustos 2019 HTML PDF ORG
Yazılım Gündemi - 05 5-11 Ağustos 2019 HTML PDF ORG
Yazılım Gündemi - 04 29 Temmuz - 4 Ağustos 2019 HTML PDF ORG
Yazılım Gündemi - 03 22-28 Temmuz 2019 HTML PDF ORG
Yazılım Gündemi - 02 15-21 Temmuz 2019 HTML PDF ORG
Yazılım Gündemi - 01 8-14 Temmuz 2019 HTML PDF ORG

Özel Yazılar

.NET 5.0 yayınlandı 10 Kasım 2020 HTML PDF ORG

Kaynaklar

Yazılım Gündemi yazılarındaki haberleri topladığım kaynaklar:

Kullandığım Araçlar

Yazılım Gündemi yazılarını Emacs metin editörü içerisinde Org-mode dokümanı şeklinde yazıyorum. HTML ve PDF çıktılarını da bu ORG modu dokümanından elde ediyorum. PDF formatındaki yazılar aslında LaTeX üzerinden derlenip, oluşturuluyor. Org-mode tarafından oluşturulmuş LaTeX dosyaları (.tex uzantılı) dosyalar da ilgili yazılım gündemi yazısının klasöründe mevcut. İsterseniz PDF formatını kendiniz de derleyebilirsiniz.

Yazıları TeknoSeyir'de blog yazısı şeklinde paylaştığım dönemlerde sadece HTML çıktısı alıp, bunu kopyala-yapıştır ile TeknoSeyir'deki editöre alıyor, orada düzenlemelerini yaptıktan sonra paylaşıyordum.

Emacs ve Org-mode konusuyla ilgili başlangıç niteliğinde şöyle iki kaynak önerebilirim (bu araçları ben de bu kaynaklar sayesinde keşfettim):

Emacs ve Org-mode hakkında bilgiliyseniz ve Yazılım Gündemi yazılarını Org dokümanı üzerinden derlemek istiyorsanız, yaptığım bazı özelleştirmelere ihtiyacınız olacak. Bunun için ayarlar.el dosyasına göz atabilirsiniz. İleride yazılım gündemi yazılarını tekrar yazmaya başlarsam ya da boş bir zamanımda motivasyon bulabilirsem, yazım süreci ve teknik tarafla ilgili daha çok bilgi içeren bir yazı hazırlarım.

Bilinen Sorunlar

  • Yazıların içerisinde eklediğim GIF (hareketli görseller), yazının PDF formatındaki halinde sadece bağlantı olarak gösteriliyor. Örnek
    • Buna yapabileceğim bir şey yok maalesef. Aslında çeşitli yöntemler ile GIF animasyonlarını da PDF içerisine ekleme yolları var fakat çok zahmetli. Bu durumla karşılaştığınızda GIF dosyasının bağlantısını yeni bir sekmede açarak izleyebilir ya da yazının HTML formatındaki haline bakabilirsiniz.
  • PDF formatındaki yazılarda Bu şekilde biçimlendirilmiş ifadeler bazen paragraf çizgisinden taşabiliyor. Örnek 1, Örnek 2, Örnek 3.
    • Açıkcası pek fazla sayıda olmadığı için bu sorunu pek araştırmadım. Şimdilik görmezden gelmenizi rica edeceğim.
  • HTML formatındaki yazılarda bazı kod parçaları sayfadan taşabiliyor.
    • Bu sorun genelde tek satırdan oluşan, bash ya da powershell komutlarında oluşuyor. HTML formatı için bir çözüm üretebilirim fakat bu sefer de PDF formatındaki halinde istemediğim durumlar oluşuyor. Bu sorunu da şimdilik bırakıyorum.

Lisans

 

Bu yazı ve diğer tüm yazılım gündemi yazıları Eren Hatırnaz tarafından Creative Commons Atıf-GayriTicari-AynıLisanslaPaylaş 4.0 Uluslararası Lisansı (CC BY-NC-SA 4.0) ile lisanslanmıştır.

BeğenFavori PaylaşYorum yap

.NET 5.0 sürümü yayınlandı

Geçtiğimiz sene düzenli olarak yazmaya çalıştığım Yazılım Gündemi yazılarını takip etmiş arkadaşlar .NET Framework ve .NET Core projelerinin artık tek bir isim altında ".NET 5.0" olarak devam edeceği haberini[1]​ hatırlayacaklardır. İşte o gün geldi. Bugün Microsoft, .NET 5.0 sürümünü yayınladı.

.NET SDK'sının bu sürümüyle birlikte C# 9 ve F# 5 sürümleri de hayatımıza girmiş bulunuyor. Visual Basic de SDK içerisinde mevcut fakat daha önceden de haberini yaptığım[2]​ gibi artık geliştirilmeye devam edilmediği için dil değişikliği içermiyor. Visual Basic Application Framework tarafında birkaç iyileştirilme yapılmış o kadar. Visual Studio kullanıcılarının .NET 5.0'ı kullanabilmesi için Visual Studio 16.8 ya da daha üstü bir sürüme ihtiyaçları var. Visual Studio Code kullanıcıları için ise C# eklentisi zaten hali hazırda C# 9'u destekliyormuş.

Ayrıca bir sonraki .NET sürümü 6.0 için de şimdiden tarih verilmiş: Kasım 2021. Bundan sonra her Kasım ayında yeni bir büyük .NET sürümü gelecek diye de not düşmüşler. .NET 5.0 sürümü, .NET 6.0 sürümü yayınlandıktan 3 ay sonrasına kadar (Şubat 2022) desteklenmeye devam edilecek.

.NET Core'dan alışık olan arkadaşlar yadırgamayacaklardır (zaten uzun zamandır kullandıkları için) fakat .NET Framework kullanıcıları için ilginç bir gelişme olarak .NET 5.0 sürümü Windows, MacOS ve Linux tabanlı işletim sistemlerininde ve x86, x64, Arm32 ve Arm64 mimarilerinde destekli şekilde geliyor. Desteklenen tüm işletim sistemi ve mimariler için şu sayfayı inceleyebilirsiniz.

Şimdi bu sürümle birlikte gelen birkaç gelişmeye göz atalım isterseniz. Özellik başlıklarını Türkçe'ye çevirince anlam kaybı olduğu için İngilizce şekilde kullanacağım.

Top-level programs

C# ve diğer dillerden alışık olduğumuz yapının aksine artık C# 9.0 ile birlikte Python ve diğer betik dillerindeki gibi şu şekilde kod yazabileceğiz:

using System;

var ad = "Eren";
var soyad = "Hatirnaz";
var suan = DateTime.Now;

Console.WriteLine($"Merhaba {ad} {soyad}!");
Console.WriteLine($"Guncel tarih-saat: {suan}");

Yani artık main fonksiyonu tanımlamaya gerek yok. Daha gelişmiş bir örnek için burayı inceleyebilirsiniz.

Records

Records için aslında yeni bir class türü diyebiliriz. Basit objeler tanımlamak için gerçekten ideal bir yapı sunuyor. Şöyle ki:

public record Kisi (string Ad, string Soyad, string Meslek, int Yas)

şeklinde tek bir satırda sınıfınızı tanımlayıp sonra da onu bu şekilde kullanabiliyorsunuz:

var eren = new Kisi {
    Ad = "Eren",
    Soyad = "Soyad",
    Meslek = "Back-End Developer",
    Yas = 25
};

Bu tarz basit tanımlamalar için oldukça sade bir kullanım sunuyor bence.

Logical and property patterns

Artık kontrol ifadelerimizi daha okuma diline yakın bir şekilde bu şekilde yazabileceğiz:

Console.WriteLine("Programdan cikmak istiyor musunuz? (e/H): ");
var kullanici_tercihi = Console.ReadKey();

if (kullanici_tercihi.KeyChar is 'E' or 'e')
{
    System.Environment.Exit(0);
}

Windows Forms designer güncellendi

Visual Studio 16.8 sürümüyle birlikte içerisindeki Windows Form tasarlayıcı aracı de güncellenmiş. Artık tüm Windows Forms ve Telerik komponentlerini destekliyormuş. Bu zaten yıllardır Visual Studio içerisinde olan bir özellik değil mi? Ben uzun zamandır Microsoft teknolojilerinden uzak kaldığım için (ben en son .NET yazarken dolar 1.7 falandı 😀 ) gelişmeleri o kadar net bilmiyorum. Neden bu yenilik olarak yazıya eklenmiş. Bilen arkadaşlar aydınlatsın beni lütfen.

Single file applications

İsminden de kolayca anlaşılabileceği gibi bu özellikle birlikte artık uygulamalarınızı tek bir çalıştırılabilir (executable) haline getirip, kullanıcılarınıza daha kolay bir şekilde ulaştırabileceksiniz. Bu özellik .NET Core 3.1 sürümüyle birlikte gelmişti fakat bu sürümle birlikte çalışma mantığıyla ilgili bazı değişiklikler yaparak çeşitli performans iyileştirmelerine gitmişler. İsmi bana son senelerde web tarafında çokça popülerleşen "Single Page Application" yaklaşımını hatırlattı 🙂

Oluşturabileceğiniz iki çeşit Single File Application var. Birisi framework'e bağımlı (kullanıcının bilgisayarında .NET 5.0 Runtime kurulu olmak zorunda) uygulama, diğeri de tamamen kendi başına çalışabilir uygulama. Tamamen kendi başına çalışabilen SFA içerisinde çalışması için gerekli araç setini ve tüm bağımlılıklarını içerdiği için boyutu büyük olacaktır. Yazdığınız bir programı SFA şeklinde paylaşmak için şu komutları kullanabiliyorsunuz:

  • Framework bağımlı: dotnet publish -r linux-x64 --self-contained false /p:PublishSingleFile=true
  • Tamamen kendi başına çalışan dotnet publish -r linux-x64 --self-contained true /p:PublishSingleFile=true

Son sözler ve ileri okuma önerileri

Yazılım Gündemi yazıları yazmayı bitirdikten uzun bir zaman sonra ilk defa oturup tekrar böyle bir yazı kaleme alabildim. Açıkcası özlemedim desem yalan olur ama maalesef artık yazılım gündemini eskisi kadar sık takip edemiyorum.

Her neyse fazla nostalji duygusuna girmeden bu yazıyı da burada noktalamış olayım. Elimden geldiği ölçüde yayınlanan blog yazısı üzerinden dikkatimi çeken ve anlayabildiğim özellik ve değişiklikleri sizlere aktarmaya çalıştım. Diğer özellikler ve değişiklikler için Microsoft'un blogunda yayınlanan detaylı yazıyı okumanızı şiddetle tavsiye ederim. Eğer yanlış değerlendirdiğim ya da doğru hatırlamadığım kısımlar varsa lütfen beni düzeltmekten kendinizi geri koymayın.

Microsoft'un bugün yayınladığı .NET 5.0 sürüm hakkında siz ne düşünüyorsunuz? Özellikle .NET teknolojilerinde aktif çalışan arkadaşların bu sürüm hakkında yorumlarını okumayı çok isterim. Aktif projelerinizi hemen geçirmezsiniz büyük ihtimal ama yeni projelerde bunu tercih eder misiniz? Artıları ve eksileri nelerdir? "Şu sorunuma derman olacak özellikler geldi" dediğiniz bir şey var mı? Tüm bu soruları -dilerseniz- aşağıdaki yorumlar bölümünde cevaplayabilirsiniz.

.NET kod örnekleri için buraya tıklayabilirsiniz.

İleri Okuma Önerileri

Etiketler: #YazılımGündemi #Programlama #YazılımGeliştirme #Microsoft #DotNet #DotNet5 #Linux #Arm #VisualStudio #VisualStudioCode #CSharp #FSharp

BeğenFavori PaylaşYorum yap

Raspberry Pi 400 Tanıtıldı

Raspberry Pi 400

Özellikleri

  • İşlemci: Broadcom BCM2711 quad-core Cortex-A72 (ARM v8) 64-bit SoC @ 1.8GHz
  • Bellek (RAM): 4GB LPDDR4-3200
  • Wi-Fi: Dual-band (2.4GHz ve 5.0GHz) IEEE 802.11b/g/n/ac
  • Bluetooth 5.0, BLE
  • Gigabit Ethernet
  • 2 × USB 3.0 ve 1 × USB 2.0 portlar
  • Yatay 40-pin GPIO başlığı
  • 2 × micro HDMI girişi (4Kp60 desteğiyle birlikte)
  • Donanımdan video çözme/kodlama (decode/encode) yetenekleri:
    • H.265 (4Kp60 decode)
    • H.264 (1080p60 decode, 1080p30 encode)
    • OpenGL ES 3.0
  • İşletim sistemi ve veri depolama için MicroSD kart girişi
  • 78- ya da 79-tuşlu klavye (TR Klavye desteği yok)
  • USB üzerinden 5V güç girişi
  • Ölçüleri: 286 mm × 122 mm × 23 mm
  • Fiyatı: $70
    • İçerisinde Pi 400 bilgisayar, USB fare, USB güç kaynağı, Micro HDMI to HDMI kablo vb. gibi ürünler içeren kiti ise $100 olarak satışa çıkmış.

Görseller

Tanıtım videosu

Kişisel Yorumum: Önceden çoğunlukla kişisel ev kullanımı (tüketim odaklı) için önerilen Raspberry Pi ürünleri, bu ön yargıyı Pi 4 ile ile hafiften kırmaya başlamıştı. Bugün duyurdukları bu ürün ile birlikte bence artık kişisel kullanım ve tüketim odaklı bir ürün olmaktan çıkıp, çeşitli üretim işleri için de kullanılabilecek bir cihaz olmuş. Çoğunlukla web işleri yapan bir yazılım geliştirici olarak bellek miktarı konusunda bir çekincem olmasa bu bilgisayarı çok rahatlıkla kullanabilirdim. Zaten çoğu işimizi artık uzak sunucularda hallediyoruz. Bilgisayarımız -birçok durum için- sadece kodları düzenlediğimiz bir istemci (client) oldu diyebiliriz. Elbette form olarak biraz hepsi bir arada bir bilgisayarı andırdığı için çoğumuz tarafından cazip görülmeyebilir ama bence hiç de küçümsenemeyecek özellikleri mevcut.

Raspberry Pi ailesinin bu yeni üyesi için siz ne düşünüyorsunuz? Yorumlar bölümünde konuşalım.


Raspberry firmasının duyuru yazısı: https://www.raspberrypi.org/blog/raspberry-pi-400-the-70-desktop-pc/

Ürün sayfası: https://www.raspberrypi.org/products/raspberry-pi-400-unit/

Etiketler: #HaftalıkGündemeMalzeme #Raspberry #RasppberyPi #Pi400 #Bilgisayar

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

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.

  • trbasoglu @trbasoglu

    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 8 / 12
  • 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.

  • trbasoglu @trbasoglu

    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.

  • Eren Hatırnaz @erenhatirnaz

    Teşekkür ederim. Faydalı bir içerik oluşturabiliyor isem ne mutlu bana 🙂

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

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 [email protected] 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 8 / 15