Arda Çetinkaya Yazılım ve arada kendim ile ilgili karaladıklarım…
Malum 2017 bitiyor, standart olarak da yeni bir yıla 2018’e gireceğiz. Hazır kafam artık düzeliyorken 2018’e nasıl gireceğiz, 2018 yazılım sektörü için teknik anlamda nasıl olacak, neler ile uğraşılacak ve son olarak 2018 dileklerimle ben de geleneksel yeni yıl yazımı yazmış olayım. Çok klişe ama bir nevi 2018 yazılım ve teknoloji burcu beklentileri gibi düşünebilirsiniz 🙂

Yazının genel konsepti teknoloji ile alakalı. Proje ve iş yönetimi anlamında değil. O komple farklı bir konu, baştan söyleyim. Onlara da ayrı bir yazı ile sonra değineceğim. Ayrıca bu yazıda geçen hiç bir şey tavsiye niteliğinde değil, daha çok öngörü şeklinde. Sonra “niye böyle oldu, niye öyle olmadı” diye bana kızmayın. 🙂

2018 yazılım ve yazılım yapan şirketler için dünyaları değiştiren ya da süper geçen bir yıl olmayacak. Çok fazla beklentiye girmeyin yani. 2018 son bir kaç yıla göre daha fazla öğretici, daha fazla “gerçekten” öğreneceğimiz bir yıl olacak. Bu yüzden geleceğe hazırlanmak için gerçek anlamda çok önemli bir yıl olacak hissiyatındayım.

Peki neler popüler olacak? Nelere ilgi olacak? Neleri öğreneceğiz?

Container’lar…

Öncelikle son bir kaç zamandır, buralarda adını bilimum seminer ve konferansta duyduğumuz, hatta dünya genelinde bir çok yerde kullanılan “container” kavramı gerçekten yazılım anlamında, operasyonel hayatımıza girecek. Şirketlerin kendi veri merkezlerine önem vermesi, yazılım ürünlerini operasyonel olarak daha hızlı yürütmek için “container” kavramı ile daha sık haşır neşir olacağız. Sektörün haşır neşir olması ile “container” firmaları yenilikler ile bizi şaşırtıp memnun etmeye devam edecek tabi ki. Bütün bunları öğrenmek bile çok önemli olacak. Çünkü açıkcası son 2 yıldır olduğu gibi önümüzdeki yılların hatırı sayılır bir teknolojisi olacak.

*Bu arada küçük resime tıklayınca linktedeki yazıyı da okumanızı tavsiye ederim. Biraz eski gerçi ama “container” kavramı ile ilgili güzel bir yazı…

İstatistiksel veri tahminleri,analizleri…

Big Data dönemi artık bitti. Herkes büyük veri, kocaman, çok çok gerekli gereksiz veri üretmek, verileri okumak konusunda uzmanlaştı artık. Ama gerçek anlamda farklı problemleri çözmek ve yeni fayda sağlamak için veri işlemlerinde istatistiksel yorumlama ve veriyi analiz etme 2018’de önemli bir noktaya gelecek. Şu an biz zaten yapıyoruz diye düşünenler olabilir ama demek istediğim ilk anlaşılandan biraz daha geniş bir kavram aslında. Mesela verilerin(uygulama verisi, uygulama log’ları, uygulamala hataları, kullanıcı verileri…vs.) istatiksel olarak fayda sağlaması için yorumlanır ve öğrenilebilir hale gelmesi şeklinde düşünebilirsiniz. Bir uygulama çalışırken, uygulamanın ürettiği veri ya da kullandığı verinin, yazılımın özelliklerine göre takip edilip raporlanması ve bundan birşeylerin öğrenilmesi gibi bir şey demek istediğim. Bu tarz veriler çözüm sağlayan yazılımların kalitesini artırmak için çok önemli veri ve istatiksel bilgiler olacak. Sağlanan çözümlerin kalitesini arttırmak ve çözüm vizyonlarını bir adım ileri taşımak için yazılım uygulamaları ve çözümleri için istatistiksel veriden öğrenmek 2018’de daha önemli olacak. Business Intelligence’ın (BI) bir sonraki versiyonu gibi düşünmek belki daha net anlaşılmasında yardımcı olur. İstatistiksel işlemler için R dili, Python dili gibi programlama dilleri direkt ön plana çıkacak. Veri tabanı uygulamalarının yeni versiyonlarının özelliklerinin artması da zaten aslında bu yönde hep. Bu olayı çözdükten sonra Machine Learning ve AI (yapay zeka) konuları için kapılar daha bir açılmış olacak. Yapay zekaya daha emin adımlar ile, daha bilinçli hazır hale geleceğiz. Ama 2018 bu hazırlığın yılı olacak hala bence. Bu arada son zamanların “data scientist” rolü de, ülkemizde daha önemli bir pozisyon ve hatta daha çok aranan bir pozisyon olacak gibime geliyor.

Yapay zeka için hala erken…

Son sene yapay zeka için çok konuştuk, çok dinledik, çok izledik. 2018’de tıpkısının aynısı olacak. Yapay zeka ile ilgili ülkede ciddi bir çözüm üretimi olmayacak diye düşünüyorum. PoC kapsamında yeni örnekler ve çözümler ile tanışabiliriz. İstatiksel veriden ortaya çıkabilecek ML(machine learning) modelleri ile yapay zekanın önünü daha çok açabilir, kendi çözümlerimizin reklamını yapabilir hale gelebiliriz ama kesin bilgi, yapay zeka yine 2018’de oyun alanı olacak genel yazılım dünyası için. Ama buna rağmen farklı servis sağlayıcıların servislerini daha sık kullanır hale gelebiliriz (Örnek: Microsoft’un; Cognitive Services ya da Bot Services yada Google’ın TensorFlow) Biraz iddialı olacak belki ama bunların hiç biri kendi yaptığımız AI çözümleri değil. Kendi ürünlerimizde AI yöntemlerini kullanmak için 2018 yine erken olabilir.

Blockchain geliştiricileri…

Blockchain jetonu beyinlere daha net ve düzgün bir şekilde düşecek. Blockchain ile geliştirilen çözümler artacak. Blockchain için, finansal sektörün PoC konseptinde ilk olduğunu düşünüyorum. Çoğunlukla çok fayda ya da başarı sağlayan ürün ve çözümler ile karşılaşmadık bence. Karşılaştığımız çözümler yeni sorular sormamızı sağladı belki de. Ama jetonun daha düzgün düşmesi ve blockchain’nin daha iyi öğrenilmesi ile daha “basit” ama daha “doğru” çözümlerin ortaya çıkacağını düşünüyorum. Farklı sektörler için yeni çözümler ile 2018’de tanışabiliriz. Blockchain geliştiricileri şeklinde ayrı bir kafada imrendiğimiz yazılımcı arkadaşlarımız bile olacak. Mevcut sağladığımız çözümlerin bazı kısımlarını blockchain konseptine uyarlamaya çalışmamız gibi zorluklar ya da kendi kendimize ürettiğimiz problemler çıkacak belki; ama onlarda zamanla düzelecek ve her şey güzel olacak. İlerleyen yıllarda blockchain artık daha oturmuş olacak gibime geliyor.

Yazılım güvenliği kaldığı yerden devam…

Yazılım güvenliği her yıl artık karşımızda oluyor. 2018’de de olacak. Her yıl çünkü güvenlik yaklaşımı konsepti değişiyor. 2018’de de yine bu konular hayatımızda olacak. Hash algoritmaları özelinde farklı durumlar ile karşılacağımızı hissediyorum. Güvenlik algoritmalarında kullandığımız hash yöntemlerine bir kez daha bakacağız gibi. Büyük sıkıntı sebebi ile umarım bakmak durumda kalmayız. Bunun dışında standart olarak yazılım güvenliği konusundaki deneyim ve bilgiler arttığı için geliştirilen çözümlerde bu konulara dikkat etmeye devam edeceğiz. “Yok arkadaş biz bakmıyoruz hiç” diyenler için 2018 yılı bir başlangıç olmalı

Uygulama performans konuları…

Malum 2018…Ne oluyoruz, yaşlanıyoruz 🙂 Yazılım ve yazılım çözümleri de artık yaşlandı. 2.nesil çözümlerin tercih edildiği dönemleri bile yaşadık. Hala 1.nesil çözümler kullanılıyor bile. İlk tasarlandıkları zamandan şu zamana kadar yaşayan sistemler artık belli kalite özelliklerini zamandan dolayı kaybediyor. Bu da ciddi bir anlamda müşterileri üzüyor. Değişen teknoloji ile büyük liderler artık kendi aralarında geliştirdikleri çözümleri baştan yazma konularına değinecek. Ama tabi ki tak diye hemen 2018’de başlaması söz konusu değil ama mevcut çözümlerde, uygulamalarda neler yapılabilir, yapılabilenler yapılsın konuları hayatımıza girecek. Kaynak artırımı yapabilen firmalar için sistemsel konular daha kolay olacak ama yine de uygulama performansını kontrol eden araçlar ile kodumuzdaki yanlış ya da “artık” yanlış çalışan kodları tespit edeceğiz. Bol bol bu araçları kullanıp, bol bol debug yapacağız. Bu tarz şeylere zaman ayırmak gerekecek. Çözümlerde bu tarz düzenlemeler ile iyileştirmeler yaparak çözümlerin kalitesi artacak. Verilerin yoğun kullanıldığı çözümlerde arşiv konuları gündeme gelecek, eğer daha önce yapılmadıysa…Veri tabanı ile uğraşanlar daha bir uğraşır olacak. Dediğim gibi uygulama tarafında da bol bol debug yapılacak. Hata ve bug konusu dışında uygulama performansını iyileştirmek için daha fazla debug yapılacak. Dediğim gibi çok fazla farklı tool yardımına ihtiyaç duyulabilir. İlk senesinde 50 adetle çalışan iterasyonlar 2017-2018’de 5000-10000> adetle çalışmaya başladığı için kod tarafında da iyileştirmeler yapılacak belki. Kod tarafında yavaş çalışan algoritmalar gözden geçirilip, iyileştirme ve düzenlemelere daha çok zaman ayrımı yapılacak diye düşünüyorum. 5-6 sene önce büyük bir zevkle yazdığımız algoritmalara ve fonksiyonlara dönüp, “aaa ne biçim yazmışım” diyeceğiz 🙂 Tabi gerekli düzenlemeler de yapılıp, her şey düzelmiş bir şekilde devam edeceğiz.

Başka başka…

En hızlı gelişen sektör olan yazılım sektörü için tabi ki başka konularda 2018’de hepimizin karşısına çıkacak. Ama açıkcası ilk bu yukarda bahsetmiş olduğum teknik konular karşımıza çıkacak diye düşünüyorum. Umarım yanılırım bazıları için…(Hangileri için olduğunu da seneye yazarım artık 😛 )

2018’den diliyorum…

Sağlıklı, huzurlu ve mutlu olduğunuz bir yıl sizin olsun…

Çok klasik bir ifade ile; yani 2018 dileklerim ile yazıyı bitireyim. Şahsen ben 2018’den ilk dileklerim ile 2017’ye güle güle diyorum. Bu yüzden yukarıda bahsettiğim konuları bir süreliğine unutuyorum, hatta çok uzaklara atıyorum. 2018’den sağlık, sağlık ve sonra yine sağlık diliyorum. Daha sağlıklı, huzurlu ve mutlu olduğunuz, sahip olduğunuz değerlerin farkında olduğunuz bir yıl sizin olsun. Hayallerinize ulaştığınız, daha fazla hayal kurduğunuz bir yıl size gelsin. Yaptığınız her şeyin, yaşadığınız her anın farkında olduğunuz bir yıl sizin olsun.

 

2018’de görüşmek üzere…

Önceden yazdığım (Kasım 2017 ortası) ama yeni fark ettiğim bir yazıyı şimdi yayınlayabiliyorum. Yayınlama sebebim, güzel bir gelişme hakkında Webrazzi’de yayınlanan haber aslında. Türkiye İş Bankası’nın yeni veri merkezi ile ilgili…Mutlaka okuyun derim. https://webrazzi.com/2017/12/18/turkiye-is-bankasi-dijital-donusum/  Benim yazı ise aşağıda, buyrun efenim. Hızlıca bir göz atın derim. Zevkli 🙂

Bir ara veri merkezi konsepti Türkiye’deki şirketler için önemli bir konuydu. Son yıllarda tüm IT şirketleri ya da ciddi anlamda IT operasyonu olan şirketler veri merkezlerine yatırım yapıyordu.

Son bir kaç senedir bu yatırımlar biraz azalmış daha doğrusu farklı yatırımlar bunların önüne geçip bu konuların unutulmasına sebep olmuştu. Önümüdeki zamanlarda tekrar “veri merkezi” projelerinden bolca haber duyabileceğimizi paylaşmak isterim. Mevcutların yenilenmesi, yeniden yapılanlar ya da operasyonel olarak değişmelerini örnek verebilirim.

Önümüzdeki yakın günlerde Türkiye İş Bankası’nın, Garanti Bankası’nın yeni veri merkezlerinin reklamlarını, IBM ve Oracle’ın veri merkezi hizmetlerinin yeniliklerini “reklam” konsepti altında ülkemizde, Türkiye’de daha sık görebiliriz şeklinde kendi dedikodumu paylaşım. Şimdilik dedikodu ağırlıkları daha yüksek ama ilerleyen zamanda daha sık duyacağız diye inanıyorum. Mevcut yenilenenler teknolojik olarak belli ihtiyaçları karşılamak adına tasarlanıyor. Güçlü bir yazılım alt yapısı desteği şu an öncelikli olsa da tüm veri merkezlerinin son tier 4 desteğine sahip olması veri merkezlerinin en büyük özelliği. Hata toleransı olsun, yedekleme olsun, güvenlik olsun, performans olsun ciddi anlamda çok kuvvetli veri merkezleri ülkemizde artık günümüzün hatta 2018’in konusu. Açıkcası mimari olarak çok bildiğim konular değil ama ilgilenenler varsa, enerji tüketimi, kablo alt yapısı, soğutma, lokasyon, acil durum falan konularını araştırsın çok değişik konular…Hatta Tier4 konularına da giriş yapın derim.

Türkiye İş Bankası yeni lokasyonu ile mevcut veri merkezini “ciddi” bir şekilde güçlendirmiş olarak karşımıza çıkıyor. Garanti Bankası’nın yeni teknoloji merkezi de (biterse tabii, ama bu sefer bitiyor, kesin bilgi yayalım,tüm yazı içerisindeki tek doğru şey bu bilgi 😛 🙂 sanırım ) yeni binasıyla veri merkezini çok güçlendirmiş bir şekilde yerini alacak. Ülkedeki “cloud” yatırımları ve oluşumları kısıtlı olduğu için firmaların kendi veri merkezlerini oluşturmaları ve işletmeleri onlar için hala ciddi bir getiri. Bu sene bunun ciddi haberlerini sık sık duyacağız diye düşünüyorum. Azure Stack sayesinde mevcut veri merkezlerinde Azure kullanımları şirketlerin kendileri bazında sınırlı sayıda gündemimizde olacak. Ortadoğunun bu konuya daha sıcak bakması bizden hızlı ilerlemesine sebep olabilir, bunun altını çizmek isterim. İlgilenen varsa bir takip etsin…

Şimdilik daha çok bankaların bu tarz veri merkezlerinin bir oyuncusu olacağını düşünüyorum. FINTECH sektörü, AI ve Raporlama ihtiyaçları bankaların veri merkezlerini önemli hale getirse de, diğer IT şirketlerinin de veri merkezlerine yöneleceğine inanıyorum. Dijital Dönüşüm projeleri ve Dijital Üretim konuları ile artık tüm IT şirketleri daha yoğun bir şekilde dijital dünya oyuncusu olacak. Fiziksel olarak veri merkezleri bu oyunlara ev sahipliği yapacak gibi.

Spekülasyon ve dedikodu konulu bu yazım umarım ilerleyen zamanda gerçekler ile tüm IT çalışanlarını mutlu eder. 🙂

Tam tamına 15 gün geçti. Şu an bilgisayar tekrar kullanabiliyorum… Açılan şeyleri %100 anladım mı bilemem ama kendi başıma açabilim.

Kısa özet olması adına, tam 15 gün önce, sebebini hatırlamadığım bir trafik kazası geçirdim. Nasıl geçirdim, niye geçirdim açıkcası hiçbir şey hatırlamıyorum, Hatırlayabilecek durumda da değilim pek. Doktorların yorumlarına göre de muhtemelen hatırlamayacağım. Kazayı geçirdiğim zamandan birkaç gün öncesini hatırlayabiliyorum en fazla. Kaza zamanını hiç hatırlamıyorum. Sonrasını falan hele hiç…

Bu saçma sapan zamanda yanımda olan, bana destek ve yardımcı olan kişilere çok ama çok teşekkür ederim. Hepsinin adı falan bir şekilde bende, ilginç bir şekilde hatırlıyor ve farkındayım o insanların kim olduğunun. Bu abuk sabuk dönemimde yanımda olan bu “özel” insanlara çok teşekkür ederim.

Bir süre tedavim devam edecek. Düzenli içtiğim ilaçlar var. Tedavi(?) adı altında yürüyüş yaparak ve bir şeyler okuyarak normal hayatıma geri dönmeye çalışıyorum. Okuma olayını kitap dışında makale ve küçük yazılar okuyarak da yapıyorum. Aynı şekilde ben de yazıyorum, taslak olarak, fikir başlangıcı olarak yeni konseptlere yelken açıyorum. Çoğu saçma sapan oluyor ama kafanın çalışması ve çalışmaya başlaması açısından çok fazla duraksamadan, aklıma gelen, öğrendiğim gördüğüm şeyleri bir şekilde harflere falan dökmeye çalışıyorum.

Hüsnü Özyeğin’nin Bir Dünya Kurmak ve Akın Öngör’ün Benden Sonra Devam kitaplarına başlama niyetindeyim. Öğrendiğim kadarıyla herkesin mutlaka bir noktada okuması gereken kitaplarmış. Siz de okuyun ki, okuduktan sonra darlayabileceğim insanlardan olun 🙂

İletişim kanalları üzerine bir şeyler okumak ve araştırmak beynin gelişmesini sağlamak için muazzam bir yöntemmiş, şu sıralar bunları keşfediyorum. Direkt girişin.

Teknik konulardan insan olarak kopmam pek mümkün değil, hobi olarak içime işleyen konular zaten aynen devam. Dışında kalan ilgimi çeken konuları da araştırma ve öğrenme şeklim eskisi gibi devam ediyor. Biraz açıkçası yavaşladı. Ama hala büyük iştahla devem etmek istemem beni çok memnun ediyor.

Tedavim bitince “gerçek” problemlere hızlıca yöneleceğim. Onlar ile ilgili farklı bir “ayrıntı” paylaşacağım. Güzel konulara ekstra acıkıyorum çünkü.

Bu dönem planlı bir kaç etkinliğim vardı (bir kısmı devnot öncelikliydi.Bu arada etkinlikler için devnot’u takip edin derim.) ne yazık ki hepsi iptal oldu ama ilerleyen zamanda bir şekilde  umarım gerçekleşir.

  • dotnet core Razor Pages
  • blockchain(bunun hakkında kafam karışık, daha da karıştı, iptal oldu diye sevindim)
  • dotnet core signalR(çıkış tarihinde tekrardan güzel bir şey düzenlenebilir)
  • dotnet core ve azure

Şimdilik bu kadar, diğer yazıda görüşene kadar kalın sağlıcakla 🙂

Internet Of Things(IoT) konuları hobi olarak takip ettiğim, evde boş zamanlarımda kendimce bir şeyler yapmaya çalıştığım bir konu. Uzun süredir beni takip edenler, ara sıra paylaşımlarımdan fark etmiştir zaten. Hatta basit bir çalışma ile de bir şeyler paylaşmaya çalışmıştım. “Maket yapma” hobisinin yeni nesil versiyonu gibi sanırım. Mevcut yazılım bilgilerim ile de birleştirince açıkçası yaptığım şeylerden daha fazla keyif alıyorum. Bir şeyler paylaşarak, biraz olsun ilham vermek, benden daha fazla bu konulara ilgisi olanlara fikir vermek adına bir şeyler paylaşmak istiyorum.

Geçen gün Twitter’dan bir tweet paylaşmıştım. Yeni bir yazının yolda olduğu mesajı ile beraber. Ahaaa da işte bu o yazı 🙂 Buyrun başlıyoruz…

Bu küçük ve basit projeden bahsederek, Internet Of Things(IoT)’in ne olduğu, neleri nasıl yapabiliyoruz, bunu bir “konsept” olarak anlatmaya çalışacağım.

Öncelikle projemiz Raspberry Pi(3) üzerinde; Windows IoT Core ile basit bir sıcaklık ve nem ölçer. DHT11 sıcaklık sensörü ile ortamdaki sıcaklığı ölçüp, I2C üzerinden bir LCD(16×2) ekrana bunu yazdırıyoruz. Aynı zamanda Azure IoT Hub servisi üzerinden bu bilgiyi düzenli aralıklar ile Microsoft Azure’a aktarıyoruz. Kullandığım sensör, bunların bir biri ile bağlantısı ve bunları nasıl alabilirsiniz gibi konuları yazının sonunda bulabilirsiniz. Şimdilik bunlara takılmayalım.

Nem ve sıcaklık ölçen Raspberry Pi cihazımızı basit bir IoT cihazı olarak düşünebiliriz. Bu cihazın üzerinde Windows IoT Core çalışıyor. Dolayısıyla UWP tipinde bir uygulamayı bu cihazın üzerinde geliştirip, çalıştırabiliyoruz. Window IoT Core’da çalışacak uygulamamız bir Background Application(IoT) uygulaması olacak. Dolayısıyla projemizi seçerken buna göre seçmek gerekecek. Tabi öncelikle proje şablonunu yüklemek gerekecek. Yüklemek için Visual Studio Market Place‘e gitmeniz yeterli.

Projemize başlamadan önce, geliştireceğimiz senaryo için aşağıdaki NuGet paketlerini de projemize eklememiz gerekecek.

Dht, sensörümüzü kullanabilmemiz için gerekli kütüphane, Microsoft.Azure.Device.Client, IoT cihazımızın Azure IoT Hub ile iletişim kurmasını sağlayan kütüphaneler. Microsoft.NETCore.UniversalWindowsPlatform ise Windows IoT Core için temel kütüphaneleri barındırıyor. Bu zaten projeyi yarattığımız zaman otomatik olarak geliyor.

Projeyi yarattıktan sonra aşağıdaki gibi bir metoda sahip bir sınıf oluşacak.

    public sealed class StartupTask : IBackgroundTask
    {
        public void Run(IBackgroundTaskInstance taskInstance)
        {


        }

    }

IBackgroudTask arayüzünden oluşturulan bu sınıf, Windows IoT Core’da arka tarafta çalışan uygulamalar için başlangıç noktası. Run() metodunun içerisinde bütün gereksinimlerimizi yazabiliriz. Bizim projemizde de burası giriş noktamız.


        public void Run(IBackgroundTaskInstance taskInstance)
        {

            //Attach to cancel event to cancel if it is needed;
            taskInstance.Canceled += TaskInstance_Canceled;
            _deferral = taskInstance.GetDeferral();

            _deviceClient = DeviceClient.CreateFromConnectionString(_deviceConnectionString);

            //Thread timer to check sensor data
            _periodicTimer = ThreadPoolTimer.CreatePeriodicTimer(new TimerElapsedHandler(PeriodicTimerCallback), TimeSpan.FromSeconds(60));

            //Init PINs and LCD 
            _pin = GpioController.GetDefault().OpenPin(4, GpioSharingMode.Exclusive);
            _screen = new displayI2C.LCDisplay(DEVICE_I2C_ADDRESS, I2C_CONTROLLER_NAME, RS, RW, EN, D4, D5, D6, D7, BL);
            _screen.Init();

        }

Burada bir kaç önemli satırın üzerinden geçerek bazı şeyleri netleştirmek isterim. Öncelikle uygulamamızın Azure IoT Hub ile iletişimini sağlayan DeviceClient sınıfı üzerinden sağlıyoruz. 8 satırda, bu cihazımızı oluşturuyoruz. Azure tarafında oluşturduğumuz cihaz bilgileri ile cihazımız bu sınıf üzerinden eşleşiyor. Cihazımızın Azure IoT Hub ile iletişimini sağlamak için öncelikle Azure IoT Hub üzerinde bir Hub yaratıp, daha sonra cihazımızı Provision etmemiz lazım. Bunlar ile ilgili daha ayrıntılı linkleri yine aşağıda paylaşacağım. Azure IoT Hub üzerinde tanımladığımız Hub bilgileri içerisinde bir ConnectionString bilgisi var. Bunu DeviceClient.CreateFromConnectionString() ile kullanıp cihazımızı Hub ile eşleştiriyoruz. Burada önemli bir nokta var, bizim senaryomuzda Hub’ın Azure Iot Hub tarafında yaratılmış olduğunu varsaydık. Eğer orada yaratmadıysak, kod tarafında önce Hub’ı yaratan bir geliştirmemiz lazım.

TheadPoolTimer ile sensörleri ne kadar bir sürede kontrol edeceğimizi belirtiyoruz. Daha sonra Raspberry Pi tarafındaki PIN’leri ve LCD ekranımızı tanımlıyoruz. LCD ekranı için yine bir kütüphane kullandım.

Read More

Geçtiğimiz hafta SignalR‘ın ASP.NET Core için Alpha(2) versiyonu yayınlandı. ASP.NET Core için baştan yazılan ve bazı önemli değişikliklere sahip olan bu yeni versiyon, açıkcası şu an PROD ortamlar için bence çok yeterli değil. Ancak .NET Core’un gelişim süresini göz önüne alınca yeni SignalR’ın da hızlı bir şekilde günümüz ihtiyaçlarını karşılayacağına eminim. Hem ASP.NET Core’a uygun olması, hem de daha basit bir şekilde kullanılabilmesi için bu değişikliklerin yapıldığının altını çizmek isterim.

SignalR’ın ne olduğu ya da ne olmadığıyla ilgili değil de, yeni SignalR’da şimdilik neler değişiyor, yeni neler geliyor onlardan bahsetmek istiyorum. Yeni versiyona olan hazırlıklarınızı yapmanıza ya da SignalR’ı cesaret edip şu an bile kullanmayı düşünüyorsanız neler sizi bekliyoru görmenize biraz olsun yardımcı olabilirim belki.

Şu an BETA bile olmadığının, Alpha versiyonun olduğunu ve en son versiyonu ile yazıda bahsedeceğim şeylerin değişebileceğini hatırlatmak isterim.

Client uygulamalar için yeni Javascript kütüphanesi…

SignalR’ın JavaScript client’ı için olan kütüphaneler de baştan yazıldı. TypeScript ile yazılan yeni client kütüphaneleri jQuery bağımlığını ortadan kaldırıyor. Ancak kütüphane tarafındaki farklılıklar ve genel SignalR’daki yeniliklerden dolayı, yeni client’ların eski SignalR Server uygulamaları ile iletişimi mümkün değil. Aynı şekilde yeni SignalR Server uygulamalarınında eski client’lar ile iletişimi mümkün değil. Yeni JavaScript kütüphaneleri popüler tüm browser’lar ile uyumlu.

Otomatik bağlantı desteği şu an yok…

Önceki versiyonlarda SignalR client’ları bağlantı koptuğu zaman otomatik olarak yeniden bağlanıyor, bağlanmayı deniyordu. Şu anki versiyonda bu özellik yok. Bağlantının kopması durumlarında, tekrar bağlantı kurma işlerini client tarafında bizim yönetiyor olmamız lazım.

Sticky-Session zorunlu…

Şu an ne yazık ki sticky-session zorunlu. Büyük bir ihtimal bunun son versiyonda değişeceğini düşünüyorum ama şu anki versiyonda, eğer Load-balance arkasında çalışan uygulamalarınız varsa SignalR Client’ları sadece ilk bağlandığı server ile iletişim kurabiliyor.

İletişim yöntemlerindeki değişiklik…

Önceki versiyonlarda SignalR Client’ları ve Server uygulamaları, browser’ların desteklediği transport yöntemlerine göre iletişim kuruyor, SignalR desteklenmeyen bir transport yöntemi varsa, diğerini deniyordu. Yani eğer WebSockets desteklenmiyorsa, Server-Sent Events ya da foreever-frame ya da hiç bir şey desteklenmiyorsa long-polling şeklinde bağlantı kuruluyorsa. Yeni versiyonda artık bu da değişiyor. Eğer desteklenmeyen bir transport var ise, diğer transport yöntemleri denenmiyor.

Streaming artık mümkün…

Server-Client arasında veri akışı artık mümkün. Bu sayede bir metod çalışmasını bitirmeden veriyi client tarafına aktarmak mümkün olacak.

“Binary Data” ve yeni protokollerin desteği…

Yeni SignalR versiyonu ile binary formatında verileri iletmek mümkün. Bu hem verilerin boyutlarında(burası değişken) avantaj sağlayacak hem de performans konusunda. Bu destek MessagePack mesaj protokolü alt yapısına uygun bir şekilde geliştirildiği için, custom protokollerinizi geliştirip veri iletişimini bunlar üzerinden sağlamanız mümkün.

Şimdilik bu kadar… Umarım az biraz olsun bazı konularda aklınızdaki sorulara cevap sağlamış ya da cevaplar için anahtar kelimeleri sağlamışımdır.

Son olarak aşağıdaki videoya da göz atmanızı tavsiye ederim. Biraz uzun ama SignalR’ın yeni versiyonu için tüm sorulara cevap veriyor.

Introducing ASP.NET Core Sockets – Damian Edwards & David Fowler from NDC Conferences on Vimeo.

Razor Pages’in adını ilk olarak ASP.NET Core 2.0 Preview 1 çıktığında duymuştuk. İlk çıktığında da oldukça merak uyandırmıştı açıkcası, akıllara da ASP.NET Web Pages’i getirmişti. Sonu onun gibi olursa falan diye biraz çekinerek yaklaşmıştım. Küçük bir kaç PoC için tercih etmem gerekti ve oldukça hoşuma gitti. ASP.NET Core 2.0 da artık son halini aldığına göre biraz daha ayrıntılı bahsetmenin tam zamanı diye düşünüyorum.
Nedir bu Razor Pages?

ASP.NET Core 2.0 ile beraber hayatımıza giren Razor Pages, ASP.NET Core MVC alt yapısında, sayfa bazlı web uygulamaları geliştirebileceğimiz bir programlama modeli. Tamamen MVC alt yapısı üzerine geliştirilmiş bir kabuk olarak düşünebilirsiniz. MVC template’lerindeki klasör sayısını azaltmak, sayfa bazlı uygulamaları daha kolay geliştirmek için tasarlanmış yeni bir model. Altını çizerek belirtmek isterim ki, MVC’ye alternatif ya da onun yerini alacak bir model değil. Genelde yeni bir şey çıkınca bu şekilde soru işaretleri oluşuyor. Ben baştan söyliyim, yok öyle bir şey…

PHP ya da eski ASP ile tecrübesi olanların ya da scripting dilleri ile uygulama geliştirenlerin daha çok hoşuna gideceğini düşünüyorum. Büyük bir ihtimal, web uygulaması geliştirmeyi daha basite indirgemek ve script tabanlı dilleri tercih edenleri de mutlu etmek için böyle bir modele yönelmiş olabilir Microsoft. Ama asıl önemlisi web uygulaması yapmayı yeni öğrenmek isteyen kişileri çekmek sanırım Razor Pages’ın en büyük amacı.Çünkü gerçekten kolay.

MVC alt yapısını kullanarak yapıldığı için uzun zamandır MVC modeli ile geliştirme yapanlar için çok fazla bir şey ifade etmeyecektir. Hatta bir çok MVC tercih eden kişi, ne gerek vardı falan da diyor. Kendilerince haklılar. Burda tekrar belirtmek isterim ki, Razor Pages, MVC’nin bazı özelliklerini daha basit ve kolay hale getiriyor. Uzaya roket gönderebileceğiniz bir teknoloji değil…

Razor Pages, adından da anlaşılacağı üzere “Razor” ve “Sayfa” konsepti üzerine geliştirilmiş bir model. MVC’deki View kavramı, biraz daha geleneksel tabirle “sayfa” olarak karşımıza çıkıyor. Ama tabii ki Layouts, TagHelpers gibi yaklaşımlar Razor Pages’de de var.

Razor Pages’de sayfalar birer PageModel ile tanımlanıyor. PageModel’leri MVC’deki Controller ve Model olarak düşünebilirsiniz. Web sayfanıza gelen talepler(request), Controller’daki gibi PageModel tarafından karşılanıyor. Controller’a ek olarak View tarafına taşınan model de bu PageModel üzerinde olabilmekte.

Razor Pages dosya düzeniDosya yapısı olarak MVC’den biraz daha basit bir yapısı var. Default olarak Pages klasörü altına koyduğunuz *.cshtml’ler sayfalarınızı oluşturuyor. MVC’deki routing ile ilgili uymanız gereken yapı biraz daha basitleştirilmiş. Bir Razor Pages’in tanımlamak için *.cshtml’in @page yol göstericisinin sayfanın başında olması gerekmekte. Benzer bir şekilde @model yol göstericisi ile de sayfanın hangi PageModel sınıfını kullandığı belirtilmek durumunda. PageModel, Razor Pages ile gelen yeni bir abstract sınıf. Geliştirdiğimiz sınıflar, bu sınıftan(PageModel) türemek durumunda. Razor Pages’i sağlıklı kullanmak için geliştirdiğimiz sayfaların modelleri mutlaka bu şekilde olmalı.

Razor Pages’in önemli bir özelliği *.cs(code-behind) dosyası olmadan, *.cshtml’in içinde C# kodu yazarak, sunucu tarafında çalışacak kod ile HTML ve Razor kodlarını bir arada yazabilmeniz. Biliyorum kulağa çok kötü geliyor. Hatta sadece kulağa değil, göze de çok kötü geliyor. Böyle bir özelliğin olması, illa ki o şekilde kullanmanın zorunlu olduğu anlamına gelmiyor. Bu yüzden siz böyle kullanmayın 🙂

Read More

İş, güç, hayat derken yine burayı çok ihmal ettim. Ayıp bana…Ama artık alışmış olduğunuzu düşünüyorum. (: Bu hafta başında .NET tarafında güzel gelişmeler oldu, hem arayı kapatmak için, hem de bu güzel gelişmeleri özetlemek için güzel bir zaman olduğunu düşünüyorum…Buyrun efenim;

.NET Core 2.0 için geçen hafta nuget paketleri güncellenmiş ama resmi bir açıklama yapılmamıştı. Bu haftanın başında tüm .NET Core 2.0 alt yapısındaki API’ler RTM oldu. Yani artık; ASP.NET Core 2.0, Entity Framework Core 2.0‘ı üretim ortamlarında kullanabilirsiniz. Bu yayınlanma döngüsü içerisinde .NET Standard 2.0‘da tamamlandı. 1.6 versiyonuna göre desteklenen API sayısı ciddi anlamda artmış oldu böylece. .NET Framework’deki toplam yaklaşık 32000 API, .NET Standard 2.0 ile kullanılabilir hale geldi. Bu ne demek? Yani eğer geliştirdiğiniz kütüphaneler,kodlar…vs., .NET Standard 2.0’ın kontratının sunduğu API’leri kullanarak geliştirildiyse, farklı işletim sistemlerinde de çalışabilecek. Çok güzel, değil mi… 🙂

.NET Core 2.0, tamamen .NET Standard 2.0 API’lerini destekleyecek şekilde RTM olmuş durumda. En önemli çıktı bu diyebilirim ama tabi ki bunun dışında performans konusunda da ciddi iyileştirmeler mevcut. Ayrıca ARM32 sistemlerinde de kullanılabilir durumda. .NET’i her ortamda çalıştırabilmek için güzel bir gelişme.

NetStandardPlatforms

ASP.NET Core 2.0 ile beraber de bir çok iyileştirme ve yenilik mevcut. En dikkat çeken Razor Pages diyebilirim. MVC kalıbının biraz daha kolay uygulanabilmesini sağlayan ek bir sayfa modeli diyebilirim. Biraz daha ön yüz tarafına odaklanmanız gerek uygulamalar için kullanabileceğiniz bir yapı. Rahmetli ASP.NET Web Pages’i hatırlayanlar ve sevenler Razor Pages’ı da çok sevecektir diye düşünüyorum.  Bir yeni ve güzel özellik DbContextPooling… DbContext tipindeki EF context objelerinizi pooling yaparak daha performanslı kullanmanıza olanak sağlanıyor. DBContext instance’larının her request’de baştan tekrar tekrar yaratılmasının sebep olduğu sıkıntılar biraz olsun giderilmiş durumda. Tüm geliştirilen maddeler ve giderilen bug’ları daha ayrıntılı bir şekilde GitHub sitesinden takip edebilirsiniz.

Son olarak EF Core 2.0‘dan da biraz bahsederek, sizleri daha ayrıntılı araştırmanız için azat edim. LINQ sorgularının oluşturduğu T-SQL sorgularında ciddi anlamda bir iyileştirme yapılmış. Kompleks LINQ ifadelerinden oluşturulan T-SQL cümlecikleri artık biraz daha hızlı oluşacak. Bunun haricinde EF.Functions.Like() ile artık SQL’deki LIKE ifadesine denk gelen LINQ ifadeleri yazmak mümkün. Bir güzel gelişme EF6.x’de olan ama EF Core’da sıkıntılı olan TableSplitting kavramı da EF Core 2.0’da çözümlenmiş durumda. İki farklı entity’yi tek bir tabloya map etmek artık daha kolay.

Son olarak .NET Core 2.0’ı indirmek için https://www.microsoft.com/net/download/core adresini hatırlatmak isterim. Her şeyin başlangıcı…Yumulun…