Arda Çetinkaya Yazılım ve arada kendim ile ilgili karaladıklarım…

Kısa olsun… Uzun uzun yazmaya hiç gerek yok bu sefer. Geçenlerde yoğun bir “stored procedure(SP)” kullanımı olan sistemde, geliştirilen SP‘lerde hangi tabloların kullanıldığını öğrenme ihtiyacım oldu. Yoğun iş kuralları içeren, büyük sayıdaki SP’lerde nerelere dokunulmuş öğrenmek için güzel bir yaklaşım olabilir. Kenarda, köşede dursun diye hemen yazasım geldi…Buyrun kullanın, istediğiniz gibi de geliştirin benim bu Gist’i… 🙂

Microsoft’un resmi olarak paylaşmadığı ve kullanmayı tavsiye etmediği ama zaman zaman çok yardımcı olan bazı veri tabanı nesneleri; saklı yordamlar(stored procedure,SP) SQL Server bünyesinde bizlere çaktırılmadan sunuluyor. Benim zamanında çok faydalandığım bu SP’ler ile yakın zamanda tekrardan haşır neşir olma durumum oldu. Hemen kısaca paylaşacak birşeyler de çıkmış oldu böylece 🙂 Dokümante edilmeyen bu SP’ler daha çok Microsoft’un kendi iç uygulamalarında ya da kendi ihtiyaçları doğrultusunda geliştirilmiş SP’ler. SP’lerin çoğunun içeriğini göremiyoruz ve bu SP’ler herhangi bir güncelleme ya da versiyon değişikliğinde değişmiş olabilir. Microsoft’un hizmet olarak sunmadığı ve desteklemediği bu SP’leri bu bilinç ile kullanabiliyoruz. Ama üretim ortamlarında kullanılması Microsoft’un desteklemediği bir durum.

Bahsetmiş olduğum bu dokümante edilmeyen SP’ler, bir çoğumuzun sistem nesneleri diye bildiği sys. şeması altında. sp_MS% ile başlayan bu SP’ler isimlerinden kısmen yaptıklarını anlatır durumda. Tüm SQL Server seviyesinde gerçekleştirmek istediğiniz bir çok operasyonu bu SP’ler sayesinde yapabiliyorsunuz. Mesela SQL Server’daki tüm veri tabanlarında bazı değişiklikler yapmak, bir veri tabanındaki tüm tablodaki INDEX’leri tekrardan oluşturmak, veri tabanındaki tüm tabloların isimlerini değiştirmek ya da spesifik kolon eklemek gibi gibi işlemleri bu SP’ler sayesinde yapabiliyoruz.

Mesela veri tabanındaki tüm tablolara standart bir kolon eklemeniz gerekecek. Veri tabanındaki tablo sayınız 200 civarında diyelim. Örnek senaryoda 200 adet olan tablo içeren veri tabanımızdaki tüm tablolara FirstName ve LastName diye 2 kolon ekleyelim. Bu işlemi tek bir SP yardımı ile çok kolay bir şekilde yapabiliyoruz. Bu senaryo için kullanacağımız SP, sp_MSforeachtable olsun…

  EXEC sp_MSforeachtable N'ALTER TABLE ? 
                                ADD [FirstName] VARCHAR(100),
                                    [LastName] VARCHAR(100)';

Mesela tüm tablolardaki son 5 kaydı görmek istediğimizde de aşağıdaki gibi bir SP kullanabiliriz. Dikkat ederseniz SP’ye parametre olarak isteğimiz her türlü SQL sorgusunu şablon olarak verebiliyoruz. ? anahtar simgesini kullanarak SP’nin tüm tablolar için çalıştığında ? yerine tablo isminin geldiğini söyleyebilirim. Aşağıda da tüm tablolar için çalışacak bir SELECT sorgusu örneğine bakalım…

  EXEC sp_MSforeachtable N'SELECT TOP 5 * FROM ? with (nolock) ORDER BY ID desc'

Örnek olması için sadece tablo seviyesindeki  işlemleri yapabilmek için SP’yi paylaştım ancak bir çok farklı SP mevcut. Dediğim gibi bazı SP’lerin içeriğini görebiliyoruz ama bazıları açılmıyor. SP parametreleri ile SP’lerin nasıl çalıştığını deneyerek biraz debelenmek gerekiyor.

Dokümante edilmeyen bu SP’lerin varlığından haberdar olmak bazı operasyonlar için uğraşmayı kolaylaştırıyor. Fikir vermesi adına umarım faydalı olmuştur… Şimdilik bu kadar.

Not: Bu arada bu yazıyı yazarken MS SQL Server 2017‘yi macOS üzerinde Docker üstünde çalıştırdım. Ayrıca SQL Operations Studio ile SQL sorgularını çalıştırdım.

Machine Learning” nedir sorusuna verilebilecek bir çok cevap var aslında. Günümüzdeki popülerliğinden dolayı dışarı çıkıp sorsak eminim herkesin söyleyecek bir şeyi olacaktır. Yapay zeka, robotlar, otomasyon, tahmin etme gibi gibi günümüzün bir çok konseptiyle ilişkili olduğundan hepimizin bir fikri olacaktır. Ve bu söylenen şeylerin büyük bir kısmı da doğru(?) olarak nitelendirilebilir. Açıkcası profesyonel olarak uğraştığım bir konu değil; araştırma-öğrenme şeklinde takip ettiğim, belli PoC(Proof of Concept) çalışmaları yaptığım bir konu. Dolayısıyla “dışarı çıkıp sorsak” kısmında, benim de söyleyecek bazı şeylerim oluştu ve ben de kendimce paylaşmak istedim, buyrun efenim… 🙂

Peki gerçekten nedir bu “Machine Learning”?

Çok basit ve yalın olması için, “Machine Learning” ’in bilgisayar sistemlerinin bir öğrenme süreci olduğunu söyleyebilirim. Verilerin, bilgiye dönüşmesi için bilgisayar sistemlerinin gücünün kullanıldığı teknik bir süreç… Açıkcası ne olduğu sorusundan çok, nasıl olduğu sorusunun, “Machine Learning” ‘in anlaşılması ve öğrenilmesi için daha önemli olduğunu düşünüyorum. “Nasıl?” sorusunun cevabı tabi ki çok geniş ve ayrıntılı. Ben sadece giriş tadında olması için bazı fikirlerimi paylaşmaya çalışacağım.

Peki nasıl öğreniyor bu sistemler?

Verilerdeki belli kalıpların bulunması, “Machine Learning” sürecinin temeli. Verilerdeki kalıpların bulunması ve bunların üzerinde çeşitli algoritmalar çalıştırılması ile sistemler öğrenebilir hale gelmeye başlıyor. Bu süreç aslına bakarsanız iteratif yani kendini tekrarlayan bir süreç. Sistemlerin öğrenebildiğinin doğrulanması ve geçerli olduğunun kabul edilmesi gerekiyor. Bu sayede öğrenme hızı ve şeklide gelişiyor doğal olarak. Bu doğrulamayı ve kabulu de, aslında biz ya da bizim oluşturduğumuz sistematik süreçler yapıyor. Bilgisayar sistemlerinin öğrenme yaklaşımı çeşitli “tahmin etme” yaklaşımları ile somutlaşıyor. Bizim için en önemli çıktı bu şekilde oluşuyor aslında. Bu tahminlere göre, belli durumlarda da tanımlı aksiyonlar gerçekleştiriliyor. Bu sayede bir çok kolaylık insanoğlu için sağlanıyor. (Yapay zekanın temeli de bu aslında.)

Biraz daha anlaşılır olması için hepimizin geçtiği bir süreçten bir örnek verebilirim. Açıkcası okuma-yazma öğrenme süreci bütün bu “Machine Learning” konseptinin anlaşılması için güzel bir giriş noktası bence. Hepimiz okuma yazmayı; hatırlarsınız belli çizgiler çizerek harfleri öğrenerek başladık. Daha sonra harflerin bir araya geldiği kalıpları bulup, bu kalıpların tekrarlanmasını çıkartıp kelimeleri tanımlayabilir hale gelmiştik. Kelimelerin anlamlarını da çıkartıp, benzer kelimelerin anlamlarının ne olabileceğini tahmin edip, yeni kelimelerin anlamını çıkarmıştık. Bu sürecin sürekli tekrarlanması ile kelime dağarcığımız gelişmiş ve okumayı da böyle böyle çözmüştük. Çok geçmiş zaman kullandım ama temel olarak öğrenme süreci hala böyle aslında. 🙂

“Machine Learning” de direkt olarak böyle aslında. Verilerdeki kalıpları bulup, bu kalıplara anlam yüklememiz ve bu anlamları, artan verilerde yine bulup bilgisayar sistemlerinin belli tahminler yaparak veri kalıplarını öğrenme süreci ve bilgi üretme de direkt böyle oluyor.

Read More

ASP.NET Core uygulamaları, cross-platform uygulamalar olduğu için, bildiğiniz üzere geliştirdiğimiz web uygulamalar için artık IIS gereksinimi zorunlu değil. ASP.NET Core tarafında geliştirilen yeni “host” modeli sayesinde, uygulamaların nasıl host edileceği, kod seviyesinden yönetilip, geliştirilebiliyor. Bu ASP.NET Core’un ilk versiyonundan beri olan oldukça güzel, kolay ve yeni kapılar açan bir özellik bildiğiniz üzere.

Kod seviyesinde, bu host özellikleri ASP.NET Core’un IWebHost ve IWebHostBuilder arayüzlerinden yaratılan sınıflar ile gerçekleşiyor. ASP.NET Core uygulamalarının ilk giriş noktası olan kodlarda, WebHost.CreateDefaultBuilder() eminim dikkatinizi çekmiştir.

Bu method varsayılan host modelini oluşturmak için ve arka tarafta bazı standart işlemleri yapıp, geliştiricilerin işini kolaylaştırmak için sunulmaktadır. Özetle WebHost.CreateDefaultBuilder() ile web uygulamamızın, varsayılan bazı özellikleri kendiliğinden tanımlanmaktadır.

GitHub’dan da bakarsanız, varsayılan bazı özellikleri zaten görebilirsiniz. Açık kaynak geliştirmeyi bu yüzden çok seviyorum 🙂

Loglama, konfigürasyon, uygulama root dizini, Kestrel kullanımı, IIS entegrasyonu ve “dependency-injection” gibi temel şeyler bu şekilde biz direkt çok kafa yormadan mümkün oluyor ve Web uygulamasının çalışması sağlanıyor. Daha basitçe özetlemek için; basit bir konsol uygulaması ile bir web uygulamasını ayağa kaldırmak ve çalıştırmak bu sayede mümkün olabiliyor. ASP.NET Core’un en büyük artı noktalarından biri de bu. Az önce dediğim temel şeyler aslında “cross-cutting concerns” olarak adlandırdığımız tüm yazılım sistemlerinde olabilecek konular.

Farklı tipteki uygulamalar için nasıl oluyor?

WebHost, doğal olarak sadece web uygulamaları için olan özellikler de içerdiğinden farklı tipte uygulamalarda bu tarz şeyleri kullanmak çok mümkün değildi. WebHost sınıfında olduğu için, HTTP dışında,herhangi farklı bir tipte protokolü host eden bir uygulama; mesela konsol, için bu şekilde “cross-cutting concerns” leri eklemek uğraştırıcı ya da mevcut şekilde pek mümkün değildi .NET Core’un mevcut versiyonlarında. .NET Core 2.1 ile beraber farklı uygulama tiplerinde de “host” yaklaşımı ile “cross-cutting” konularını kolayca geliştirmek mümkün oluyor.

Şu an Preview aşamasında olan, ama önümüzdeki günlerde RTM olacak .NET Core 2.1 ile hayatımıza yeni bir “host” modeli geliyor. HostBuilder, IHostedService, IHostBuilder gibi, arayüz ve sınıflar ile farklı uygulama tiplerini de geliştirmek ya da arka planda sürekli çalışan operasyonları servis olarak geliştirmek mümkün. Sadece “Web Uygulaması” yaklaşımı değil de biraz daha genel kullanıma imkanlar sunan bir servis yaklaşımı, .NET Core 2.1 ile geliştirici hayatımıza girecek.

Kısaca ve özetle farklı Network servisleri(TCP,UDP…vs.), Message Queue(MQ) servisleri ya da “arka plan işleri” gibi yapılarda da “cross-cutting” konularını kolayca geliştirmek mümkün olacak .NET Core 2.1 ile.

Read More

İşletim sistemlerinde arka tarafta çalışan, kullanıcı ile etkileşimde olmayan bir çok uygulama olur, bildiğiniz gibi. Bunlara da en temelinde, basitçe “servis” diyoruz. Her işletim sisteminde farklı şekilde yönetilir ve çalışırsa da temel olarak uygulamaların; arka planda çalışıp, kullanıcı ile etkileşim olmadan, belli yönetimsel işlemleri yapmasını sağlarlar. Örnek olması için Windows ortamlarındaki IIS(Internet Information Services)’in üzerinden geçebiliriz. svchost.exe’nin servis olarak çalışır olması sayesinde; IIS’in temel özellikleri aktif olduğu takdirde, işletim sisteminin Web Server özellikleri arka planda çalışır. Bu sayede çeşitli web uygulamaları çalıştırabilir hale geliriz. Uygulamalar da w3wp.exe ile IIS “process”’leri olarak çalışır…Bunların başka çok ayrıntısı var, asıl konumuz bunlar olmadığı için ve taaa buradan “Offf…Kes!!! Bunları biliyoruz.” dediğinizi duyduğum için konuya giriyorum… 🙂

Peki konu ne?

Bu yazıda ASP.NET Core web uygulamaları, Linux tabanlı işletim sistemlerinde, nasıl servis olarak çalıştırılabilir bundan bahsetmeye çalışacağım. Daha çok bazı temel kavramlardan bahsederek, yönelmeniz gereken konulara yöneltici bir yazı olmasını amaçlıyorum. Bir nevi aklınızdaki; “İşletim sisteminin sürekli çalışan bir web uygulaması nasıl olur? Her seferinde konsoldan çalıştırmak yerine otomatik çalışan hale nasıl getiririm?” gibi sorulara cevap olması için, basit bir anlatım yapmaya çalışacağım. Her türlü ayrıntıyı, bilgiyi ve soruyu yorum kısmından paylaşabilirsiniz. Başlıyoruz…
Read More

Son bir kaç zamandır Raspberry Pi üzerinde IoT(Internet of Things) yaklaşımları ile uğraşıyorum. Önceki yazılarımdan hatırlayanlar olacaktır. Son bir kaç zamandır da işin içine LEGO’yu da katarak içimdeki çocuk ile daha farklı şeyler yapmaya başladım. Twitter’dan takip edenler arada görmüştür zaten. LEGO Mindstorms’un sensör ve motorlarını Raspberry Pi üzerinde çalışan uygulamalar ve scriptler ile kontrol edip, basit robotik atraksiyonlar ile oynuyorum, pardon uğraşıyorum 🙂

Açıkcası tamamen hobi ve öğrenme amaçlı, kendi çapımda yaptığım çalışmalar diyebilirim. Bir yazılımcı olarak oldukça keyifli bir öğrenme ve yeni konular keşfetme yöntemi diyebilirim.

Paylaşımlarıma güzel tepkiler ve güzel sorular alıyorum. Bu yüzden gaza gelip, basit bir yazı ile hem bu konulara giriş yapmak, hem de ilgilenen kişilere ön ayak olması için neler yaptığımı anlatmak istedim. Buyrun efenim…

Ne yapıyorum?

Raspberry Pi üzerinde yazdığım bir uygulama ile LEGO parçalarıyla yapmış olduğum hareket eden, kamerası olan, fotoğraf çeken ve çektiği fotoğraflar ile öğrenen, basit bir robot ile uğraşıyorum. “Robot” demek çok doğru olmaz tabi, ama “robotik” bazı hareketleri yaptırabildiğim için ben öyle diyeceğim. Bütün bunları belli teknolojileri öğrenmek için yapıyorum. Dünyayı ele geçirmek ya da bir robot ordusu kurmak gibi bir amacım yok…En azından henüz 😛 hihihihihihihihi

Nasıl yapıyorum?

Bol bol araştırarak ve okuyarak yapıyorum en temelinde. Bolca da kod yazıyorum. Kendi kendime yarattığım sorular, öğrenmem ve yapabilmem için motivasyonum oluyor. “LEGO parçalarını otomatik hareket ettirebilir miyim? Raspberry Pi üzerinden kontrol eder miyim? Raspberry Pi’da uygulama nasıl geliştiririm? Raspberry Pi ile fotoğraf çekip, evdeki kedileri takip eder miyim? Kedilerin maması biterse bana bildirim gelir mi? LEGO ile yaptığım araba düşen kalemi alıp, kaldırır mı? Cloud platformlarındaki servisler ne? Nasıl çalışıyorlar? Öğrenen sistemler geliştirebilir miyim, LEGO kendi başına hareket eder mi?” gibi gibi bir ton gereksiz soru bu çalışmaları yaparken bana destek oluyor.

Teknik alt yapıyı nasıl oluşturdum?

Farklı bir çok teknoloji ile uğraşıyorum. Bu farklılıktan dolayı bir çok yeni teknolojiyi öğrenme şansım oluyor. Zaten yetkin olduğum ve bildiğim yaklaşımların farklı versiyonlarını ve hiç bilmediğim teknolojiler ile oluşturmayı tercih ediyorum. Temel olarak yemek tarifi gibi içindekilerden kısaca bahsedeyim; ilerleyen dönemlerde basit örnekli hallerini yazmaya da çalışacağım.

  • Raspberry Pi: Cihaz olarak Raspberry Pi 2 kullanıyorum. Bilmeyenler için, basit ve küçük bir bilgisayar sistemi diyebilirim. HDMI çıkışı, USB girişleri, çeşitli bileşen entegreleri olan bir bilgisayar kartı diyebilirim.
  • Raspbian: Bu bilgisayar sistemi için, işletim sistemi(OS) olarak bir Linux dağıtımı olan Raspbian kullanıyorum. Debian’dan türetilmiş olan Raspbian, Raspberry Pi’lar için tercih edilen bir işletim sistemi. Linux özelliklerini kullanarak, geliştirdiğim uygulamaları servis yaklaşımı ile Raspbian üzerinde çalıştırıyorum.
  • BrickPi: Dexter Industries firmasının, LEGO motor ve sensörlerini kontrol etmek için geliştirdiği bir devre kartı olarak BrickPi’yi kullanıyorum. Bu devre kartı tamamen Raspberry Pi için üretilmiş olup, Raspberry Pi uygulamalarından LEGO motor ve sensörlerini kontrolü sağlıyor.

  • Python: Raspberry Pi üzerinde temel bazı işler için küçük uygulamalar geliştirmek için python da kullanıyorum. Geniş API desteği ile Raspberry Pi üzerinde çalışan entegreleri yönetmek ve entegreler ile I/O işlemleri için tercih ediyorum.

  • Raspberry Pi Camera Module: Fotoğraf ve video çekmek için Raspberry Pi kartı için oluşturulmuş Camera Module’u kullanıyorum. USB’den takılan web-cam tarzı kameralar ile de başka cihazlar kullanmak mümkün. Ama açıkcası Camera Module’ün boyutlarından dolayı tercih ediyorum.
  • .NET Core: Unix tabanlı işletim sistemlerinde de, .NET Framework bilgimi kullanarak uygulama geliştirmek için, son yılların yeni platformu .NET Core ve ASP.NET Core ile çeşitli uygulamalar geliştirerek, cihaz üzerinde bazı işlemleri gerçekleştirebiliyorum. ASP.NET Core ile geliştirdiğim bir web uygulamasını, tamamen Raspbian üzerinde çalıştırarak, cihazı bir web uygulaması üzerinden yönetebiliyorum. Ayrıca .NET Core sayesinde cihaz üzerinde C# ile aşina olduğum bir çok şeyi yapabiliyor ve geliştirebiliyorum.
  • Vue.js: Malum bir web uygulaması dedim, javascript’siz bir web uygulaması da olmaz. 🙂 Son bir kaç yılın popüler JavaScript Framework’lerinden biri olan Vue.js’yi, öğrenme kolaylığı ve yapılabilecek ihtiyaçları yapmanın daha kolay olduğu bir framework olarak tercih ediyorum.

Read More

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…