C# ile Nesne Yönelimli Programlama

Gelen bir çok istekte Coder Bilişim Akademisi‘nde veridiğim uzaktan eğitim ortamının nasıl olduğu, ders işleyiş biçimi merak ediliyordu. Bunun üzerine canlı verdiğim eğitimlerden birinin ders kaydını paylaşmak istedim.

Bu eğitimde C# ile nesne yönelimli programlama (Object Orianted Programming) konusuna hızlı bir giriş yapmıştık.

Çok sorulan sorulardan biride etkileşim. Sınıf ortamı gibi olur mu? Evet sınıf ortamından farksız hatta daha rahat diyebilirim. Öğrenciler sesli yada yazılı olarak canlı eğitim sırasında sorularını sorabiliyor. Hatta öğrencilerin PC lerine bağlanıp sorunlarını çözebiliyorum. Yani tam etkileşimli.

Visual Studio 2017

untitled-1

Bugün Visual Studio 2017 RC ile test sürüşü yaparken ilginç bir durum ile karşılaştım. Google da Visual Studio 2017 RC ile ilgili kimler ne yazmış bir bakayım dedim. Arama için “Visual Studio 2017 RC” yazdım ve en çok aranan sorguları getirdi google. İşte koptuğum an yukarıdaki resimdede görünmekte. 🙂

Sanırım crack bağımlısı bir hal almışısız. Hatta o kadar bağımlı hale gelmişiz ki Microsoft Visual Studio yu ücretsiz verdiği halde illa biz crack li kullanmak için çabalıyoruz.

Şaka bir yana Microsoft Visual Studio Community sürümünü ücretsiz veriyor. Ayrıca RC sürüm hakkında da bilmeyenler için kısa bi açıklama yapalım. RC (Release Candidate) demek sürüm adayı demektir. Crack ‘li Visual Studio arayanlar için daha da açayım 🙂 . Satışa başlamadan büyük testlerin yapıldığı ve bu testler için ücretsiz dağıtılan bir sürümdür RC.

Peki Visual Studio yu nereden indirebilirim diyenler : buradaki linkten

Açılacak sayfanın ekran görüntüsü bu yazıyı yazdığım tarihte aşağıdaki gibiydi.

vsdownload.PNG

Gördüğünüz gibi Visual Studio Community ücretsiz olarak indirilip kullanılabiliyor. gerekli lisans koşullarını da okuyun.

Bir de bizim insanımızda “bendeki en iyisi olsun” gayesi vardır. Bu yüzden sanırım enterprise yada professional sürümlerinde crack vs. gibi yasa dışı çözümler aramaktalar. Arkadaşlar önce bi Visual Studio’nun Community, Professional ve Enterprise sürümlerini karşılaştırın. Eminim bir çoğunuz ücretsiz olan Community sürümü tercih edecek.

Bilişimde Uzaktan Eğitim Mi ? Yüz Yüze Eğitim Mi ?

Bu yazımda sizlere bilişim sektöründe uzaktan eğitim ile yüzyüze eğitim tercihinin yapılması konusunda hem eğitimci hem öğrenci olarak tecrübelerimi aktaracağım. Yaklaşık 10 yıldır MCT olarak Microsoft eğitimleri vermek suretiyle eğitimcilik yapmaktayım. Tabiki yeni çıkan teknolojiler biz eğitimcilere vahi yolu ile inmiyor öğrenmek için bizlerde zaman zaman eğitim alıyor sıklıkla araştırmalar yapıyoruz. Bu yüzden konumumun bu yazı için oldukça elverişli olduğunu söyleyebilirim.

Öncelikle eğitim yöntemlerimizi açıklayalım.

Yüz yüze eğitim : Öğrenci ve eğitmenin aynı fiziki ortamda bulunduğu eğitim şeklidir.
Uzaktan Eğitim : Uzaktan eğitim bilgi sistemleri üzerinden yapılan zaman ve mekan bağımsız eğitim yöntemidir. Uzaktan eğitimin de 2 farklı yöntemi bulunmakta.

  • Online Eğitim : Derslerin canlı verildiği yöntem. Eğitimci ve öğrenci aynı anda derse bağlanır ve sesli, görüntülü, yazılı iletişim mümkündür.
  • Offline Eğitim : Dersler daha önceden hazırlanmıştır. Öğrenci istediği zaman derse bağlanıp izleyebilir. Etkileşim olabilir fakat karşısında canlı bir eğitmen yoktur.

İster uzaktan eğitim ister yüz yüze eğitim olsun illaki eksik noktaları olacaktır. Fakat bu kısımda değerlendirme yaparken bilişim sektöründe bir eğitim almak için hangisinin daha avantajlı olacağını ve aralarındaki farkı öne çıkarmak istiyorum.

1. Senaryo Sınıfta Eğitim
Bu senaryoda öğrencimiz bir bilişim eğitimi almak üzere belli gün ve saatlerde eğitim merkezine gitmektedir. Genellikle günde 3 ila 6 saat arası ders işlenmektedir. Eğitimin belirli bir süresi vardır. Bu süre sonunda eğitimini tamamlamış olur.

2. Senaryo Uzaktan Eğitim
Bu senaryomuzda ise öğrencimiz yine bilişim eğitimi almaktadır. Fakat uzaktan eğitim yöntemi olduğundan derslere katılmak için bir bilgisayar ve internet bağlantısı olması yeterlidir. Her hangi bir zaman diliminde olması gerektiği bir mekan yoktur. Dilediği her yerden ders alabilmektedir. Canlı eğitimi kaçırsada video kayıtlarından eksiğini tamamlayabilir. Uzaktan eğitim sistemi üzerinde bulunan tartışma ortamından sınıf arkadaşları ve eğitmeni ile tartışmalar yapabilecektir. Öğrenme belirli bir zaman dilimine bağlı olmayacaktır.

Öğrencimiz bilişim alanında kendini geliştirmek istiyorsa eğitim alsada almasada bir bilgisayar ve internet bağlantısına ihtiyacı var. Ayrıca sadece eğitim merkezinden aldığı eğitim ile kalmayıp kendisini geliştirmek için ders saatleri dışında da bol bol araştırma yapmalı.Yüz yüze yada uzaktan eğitim farketmeksizin bunlar olmazsa olmaz şartlar.

Genel olarak her iki senaryoyuda incelediğimizde;

Yüz Yüze Eğitim Yöntemi

  • Eğitim gün ve saatinde eğitim yerinde olmak zorunlu
  • Kaçırılan dersler ancak eğitim merkezinin insiyatifinde ek ders yapılırsa tamamlanır
  • Ders tekrarı mümkün olmaz

Uzaktan Eğitim Yöntemi

  • Eğitim gün ve saatinde canlı derse internet bağlantısı olan her yerden katılabilir.
  • Kaçırılan dersler ders kayıtları izlenerek tamamlanabilir
  • Ders tekrarı videolardan her zaman mümkündür
  • Tartışma platformlarında diğer öğrenciler ve eğitmeni ile tartışmalar yapabilir.

Yıllardır bilişim sektöründe faaliyette bulunmamın yanı sıra temelden ileri seviyelere bilişim eğitimleri veriyorum. Son bir kaç yıldır Coder Bilişim Akademisi ‘nde uzaktan eğitim yöntemini oldukça yoğun şekilde kullanmaktayım. Yüz yüze eğitim alan öğrencilerim ile uzaktan eğitim alan onlarca öğrencimi karşılaştırdığımda başarı oranının uzaktan eğitimde çok daha yüksek olduğunu gönül rahatlığı ile söyleyebilirim. En önemli sebebi ise; canlı verdiğimiz uzaktan eğitimlerde öğrencilerimin izni ile bilgisayarlarına bağlanıp uygulamalarda yaşadığı sorunları çok rahat bir şekilde çözebiliyorum. Canlı eğitimlerimiz kayıt edildiğinden katılamayan öğrencilerimiz videoları izleyip akıllarına takılanları tartışma platformunda sorup cevap alabiliyor. Power point sunularından kendi bilgisayarımın masaüstüne hatta beyaz tahta ya kadar eğitim sırasında bir çok etkili aracı kullanabiliyorum. Canlı eğitim sırasında öğrenciler ister mikrofonları aracılığı ile sesli, ister chat ekranından yazılı olarak o anda sorularını sorup cevap alabiliyorlar.

Ülkemizde ki uzaktan eğitimin durumunu incelediğimizde bir çok üniversiteninde bu yöntemi kullandığını ve gün geçtikçe yaygınlaştığını görmekteyiz. Dünyada ise uzaktan eğitimin çok daha yaygın olduğunu rahatlıkla görebilirsiniz. Günümüzde zaman oldukça değerli ki uzaktan eğitimin avantajları göz önüne alındığında bir çok alanda yüz yüze eğitimin önüne geçtiği aşikar.

Konumuza dönecek olursak ben de bir eğitici olarak kendimi bir çok dalda sürekli güncel tutmak için yurt dışı kaynaklı uzaktan eğitimler alıyorum. Ve bana göre oldukça başarılı. Hele ki bizimde Coder Bilişim Akademisi nde uyguladığımız gibi hem online hem offline uzaktan eğitim yöntemi kullanılıyorsa tereddütsüz uzaktan eğitim tercih edilmelidir.

Bazen sosyal medya “youtube gibi video paylaşım sitelerinden de öğreniriz uzaktan eğitim ile aynı…” şeklinde yorumlar görüyorum. Yapmayın arkadaşlar uzman bir eğiticiden başarısı kanıtlanmış profesyonel müfredatı ile eğitim almak onun tecrübelerinden faydalanmanın yerini asla tutmaz.

İncelemek isteyenler için aşağıda canlı verdiğimiz uzaktan eğitimin video kaydını paylaşıyorum.

Microsoft SQL Server 2014 Standalone Kurulum Videosu

Öğrencilerimden gördüğüm kadarı ile MSSQL Server kurulumunda zorlanılmakta. Aslında bir uygulamayı kurmak ne kadar zor olabilir ki ? Tabi ki MSSQL ‘in colletion, authentication, instance ve servisleri gibi kavramlara hakimseniz zor değil. Bu kavramları yeni öğrenecek olan arkadaşlar için verdiğimiz uzaktan eğitimlerden bir kesiti yayınlmak istedim.

 

Microsoft SQL Server 2016 Geliyor!

Microsoft SQL Server 2016 oldukça güçlü yenilikler ile geliyor. Bizler de sabırsızlıkla bekliyoruz. Yeniliklere kısaca değineceğim ileride fırsat buldukça daha detaylı yazılar yazmaya çalışacağım tabi ki.

  • Sql Server 2012 de tanıştığımız ve SQL Server 2014 ile yeni özellikler eklenen Columnstore index yapısı SQL Server 2016 ile daha bi dikkat çeker olmuş. Nonclustered columnstore indexler artık hem update edilebiliyor hemde In Memory table üzerine Columnstore index oluşturulabiliyor.
  • SQL Server 2016 bazı kısıtları da ortadan kaldırmış gibi görünüyor. Bildiğiniz üzere memory-optimized tablolarınız ve natively compiled stored procedure ler üzerinde alter yapamıyorduk. Tahmin edin. Evet. Yeni SQL Serverımız ile yapabiliyoruz.
  • Biraz maliyetli bir yenilikte olsa SQL Server 2016 ile gelen Management Studio Tools üzerinde çalışmakta olan canlı sorgularınızın execution planlarını inceleyebileceğiz. Include Live Query Statistics özelliğini aktifleştirmek yeterli. Aman dikkat maliyetli olabilir
  • Diğer bir özellik olarak Query Store yardımıyla çalıştırılan sorgularımıza ait execution planları  artık geçmişe dönük saklayabiliyoruz. Napcaz bunu diye sorabilirsiniz. Planlarda oluşan değişikliklerin getirdiği performans farklılıklarını inceleyip, istersek sakladığımız query plan lardan istediğimizi kullanması için SQL Server’ı force edebileceğiz.
  • Temporal Tables özelliği ilgimi çeken bir diğer özellik. Bu özellik ile verilerinizde ki tarihsel değişime ulaşabiliyoruz. System-versioned-tables olarak da adlandırılan yenilik ile tablolarımızın hem güncel, hem geçmiş bir zaman dilimindeki verinin değerine ulaşabileceğiz.
  • Azure üzerine alacağınız backuplar sadece page blob yapısında değil block blob yapısında da alınabiliyor.
  • Managed Backup yenilikleri ile managed backuplarımızı ister otomatik, ister özel bir zamanlama ile alabileceğiz. En güzeli Simple Recovery Model kullanıyor olsak dahimanaged backup kullanabileceğiz.
  • Bir yazılım olarak en çok hoşuma giden özelliklerden biri de  SQL Server 2016 ile sorgu sonuçlarını yalnızca XML değil JSON formatında da alabiliyor olacağız.
  • Bu da bomba özelliklerden birisi olmaya aday. SQL Server 2016  bizlere Always Encrypted özelliğini getiriyor. SQL Server şifrelenmiş verinin sadece veriye erişen uygulama tarafından ele alınabilmesini sağlayabiliyor. Ekstra yazılım maliyeti, hatta mimarilerimizin application katmanındaki encrypt/decrypt maliyeti de SQL Server tarafına yıkılıyor. Tabi ki SQL Server ın en yetkili Adminleri dahi veriye erişemeyecek.
  • Stretch Database özelliği ile çok sık kullanılmayan verilerimiz Azure Blob Storage üzerine aktarılıyor.  Transactional verilerimizi de on premise sistemler üzerinde saklayabiliriz.  Eğer bu verilere erişmemiz gerekirse ilgili sorgularımız veriyi Azure Storage’dan getirirken diğer sorgularınız lokalden çalışmaya devam ediyor. Hatta Azure Blob Storage deki verilere sık başvurmaya başladıysak SQL Server bunu anlayıp Azure Storage den geri getiriyor.

şimdilik bu kadar. Görüşmek üzere.

Windows Server 2016

Microsoft Windows Server ailesinin en yeni üyesi olan 2016 sürümünü teknik ön izleme sürümü 4 ile inceleyebilirsiniz. Hyper-V, konteynır yapısından Nano Server a incelenmesi gereken önemli özellikler barındıran Windows Server 2016 modern uygulama geliştirme ilkelerini içermekte. Aşağıda indirebileceğiniz bir bağlantıyı paylaşıoyorum.

url : Windows Server Technical Preview 4

Yeni Özelliklerin Faydalarından Bazıları :

  • Tam bir Windows Server dağıtımına göre 25 kat daha küçük olan Nano Server, Windows Server 2016 için yeni bir dağıtım seçeneği olarak geliyor. Bu dağıtım ile veri merkezlerine yapılacak atak yüzeyleri de azaltılmış.
  • Modern uygulama platform yetenekleri ile inavasyonlar çok daha kolay.
  • Güçlü ve gelişmiş güvenlik özellikleri, korulamalı sanal makineler, Host Guardian Service ve  dahası ile saldırıların engellenmesine yardımcı.
  • Maliyetleri düşürüyor

Vakit buldukça test edip daha detaylı incelemeler paylaşıyor olacağım. 😉

Neden ASP.NET 5 ‘e Terfi Etmeli ?

ASP.NET 5 ilk kez 1.0 versiyonu ile yaklaşık 15 yıl kadar önce duyurulmuştu. Milyonlarca geliştirici irili ufaklı birçok uygulamasını ASP.NET üzerinde geliştirdiler ve geliştirmeye güncel sürümler ile de devam etmekteler.

ASP.NET 5 in genel yapısına baktığımızda çok daha yalın ve modüler bir çekirdek framework mimarisi olduğunu görüyoruz. ASP.NET 5 System.Web.dll ‘inden bağımsız demiştik. Artık bunun yerine yalnızca ihtiyacımız olanları optimize etmemizi sağlayan NuGet paketleri bulunmakta. Bu sayede uygulama güvenliğini artırmak, hizmet yükünü azaltmak ve ayrıca “ne kullanıyorsan onun bedelini öde” modeli ile performansı artırılabilmekte.

ASP.NET 5 yeniden inşa edilirken günümüz web uygulamalarının ihtiyaçları düşünülerek tasarlanmıştır. Web uygulamalarınızın kullanıcı ara yüzü ve Web API’ ler günümüzün modern istemci taraflı frameworkleri ile birlikte çalışma gereksinimleri de düşünülmüştür. Ayrıca ASP.NET 5 dependency injection desteği de sunuyor. Böylece daha önce kullandığımız ninject vb. injection yöntemlerini projemize sonradan dahil etmemize de gerek kalmadı.

Özetleyecek olursak ASP.NET 5 aşağıda sıralanan temel iyileştirmeleri sunaktadır.

  • NET 5 MVC 6, Web API 3, Web Pages 4, SignalR3 ün yeni cloud optimizasyonunu da içeriyor.
  • MVC Web Api ve Web Pages tek bir framework içerisinde birleştirilmiş olarak MVC 6 adı ile sunuluyor. Bu da üç programlama yaklaşımını birlikte getiriyor. Web siteleri ve servisler için tek bir programlama modeli gibi. Örneğin : Birleşik controller, routing kavramları, action selection, filters, model binding ve dahası var. Bu şekilde aynı HTTP üzerinden tek controller, MVC view lerimizi ve Web Api cevaplarımızı dönebiliyor.
  • NET vNext uygulamalarının cloud ortamına hazır olduğundan bahsetmiştik. Session state, caching gibi servisler hosting ortamına bağlı olarak (cloud yada geleneksel hosting hizmetleri) davranışlarını ayarlayacaklar. Cloud yada geleneksel hosting için doğru implementasyonu sağlamak için perde arkasında dependency injection kullanılıyor. Bu şekilde uygulamalarımızı geleneksel hostlarımızdan clouda kolayca taşıyabiliyoruz. Kod değişikliği yapmamız da gerekmiyor.
  • .NET in sonraki versiyonu .NET vNext host agnostic . Yani Host bilinmez olarak geliyor. Bu sayede ASP.NET vNext uygulamalarımızı IIS üzerinde veya kendi hostunuz üzerinde custom process dahilinde host edebilirsiniz.
  • NET vNext side by side deployment desteği de sunuyor. Eğer uygulamanız cloud optimizasyonu alt kümelerini de kullanıyor ise, .NET vNext te dahil olmak üzere uygulamanızın tüm bağımlılıklarını bin altına yükleyerek deploy edebilirsiniz. Bu sayede uygulamanızı aynı sunucudaki diğer uygulamalar etkilenmeden güncelleyebilirsiniz.
  • Dependency injection framework içerisine inşa edilmiş. Artık tercih ettiğiniz IoC container ı kullanabilirsiniz.
  • Geliştirdiğimiz kodları dinamik olarak derlemek için .NET vNext Roslyn compiler kullanıyor. Bu sayede kod dosyalarımızı düzenleyip değişiklikleri browserımızı refresh ederek görebiliyoruz. Projemizi durdurmak yada rebuild yapmak ta gerekmiyor.
  • .NET vNext açık kaynaklı ve cross platform da çalışabiliyor. Mono, MAC ve Linux üzerinde de çalışabildiği anlamına geliyor.

ASP.NET 5 Nedir?

ASP.NET 5 yeni tasarımı ile .Net kullanarak bulut tabanlı modern web uygulamaları  geliştirmek için, açık kaynaklı ve cross platform destekli bir framework olarak karşımıza çıkıyor.

Bildiğiniz üzere Microsoft ASP.NET 5’ i uygulamaların, bulut tabanlı ya da kurum içinde çalıştırmak ve dağıtmak için sıfırdan inşa etti. Bunu yaparken de daha önce ki bir çok bağımlılığımızdan da bizleri kurtardı. Örnek vermek gerekirse bunların en önemlisi bence System.Web dll’i . Artık IIS pipeline’da yalnızca bizim kullandığımız bileşenleri oluşturuyor. Bu gereksiz birçok nesnenin oluşturulması önlediğinden daha performanslı, daha esnek çözümler üretebilmemize olanak veriyor.

Diğer bir artısı da günümüzün gerekliliği cross platform development. ASP.NET 5 ile artık Windows, Mac ve Linux platformları üzerine de geliştirmeler yapabiliyoruz.

Daha öncede bahsettiğim gibi ASP.NET 5 açık kaynaklı ve GitHub üzerinden projeye erişebilirsiniz.

Yeni Blog Sitem

Artık blog olayına adam akıllı girmenin vakti geldi de geçiyor. Bundan sonra blogumu burada yazmaya devam edeceğim. Daha önceki blog girişimlerim hep sistem üzerindeki yazılım ve sistem denemelerim yüzünden perişan oldu. En azından yazılarım kalıcı olacak. Özellikle C# .NET ASP.NET MVC gibi konuları için takip etmenizi tavsiye ederim. Elimden geldiğince bilgi ve tecrübemi aktarıyor olacağım. Şimdilik hoşçakalın.