Kocaeli Üniversitesi IT Fest Etkinliği Ekim 2017

04 Ekim 2017 tarihinde Kocaeli Üniversitesi Bilişim Teknolojileri Kulübü tarafından organize edilen IT Fest 2017 etkinliği gerçekleştirildi.

Ben ve sevgili arkadaşım Bora Kaşmer de .Net Core ve Angular ile oluşturulan projenin Azure’da yayınlanması konulu oturumda canlı kodlama (live-coding) yaptık.

Katılan tüm arkadaşlara teşekkür ederim

UWP uygulamasında kullanıcının/bilgisayarın dilini bulmak

Bir UWP projesinde, bilgisayarın hangi dil ile kullanıldığını bulmak ve bu dile göre bir takım değişiklikler yapmak gerekebilir.

Örneğin, ondalık haneleri nokta (.) veya virgül (,) ile ayırmak, tarihi Gün/Ay/Yıl şeklinde yerine Ay/Gün/Yıl şeklinde göstermek, hatta ekrandaki metinlerin Türkçe yerine İngilizce gelmesini sağlamak, gibi.

UWP uygulama geliştirirken kullandığımız Windows SDK içerisinde, bilgisayarın dilini bulabileceğimiz birkaç yol var.

İlk yol, Windows.ApplicationModel.Resources.Core namespace‘inde yeralan ResourceContext sınıfının, GetForCurrentView() methodu ile elde ettiğimiz nesnenin Languages özelliğine başvurmak.

Bu özelliğin içerisinde diller dizi şeklinde durduğu için, ilk öğeyi aldığımızda, kullanıcının tercih ettiği dile ulaşmış oluruz

İkinci yol ise, Windows.System.UserProfile namespace‘inde yeralan GlobalizationPreferences sınıfının static olan Languages özelliğine başvurmak.

Bu özelliğin de içerisinde diller dizi şeklinde durduğu için, ilk öğeyi aldığımızda, kullanıcının tercih ettiği dile ulaşmış oluruz

Hangi yöntemi tercih edersek edelim, elde ettiğimiz dil bilgisi BCP47 formatında olacak (en-US, tr-TR, gibi)

Tarih formatı, Rakam formatı gibi değerlerine ulaşabilmek için System.Globalization namespace‘inde bulunan CultureInfo sınıfına ihtiyacımız var.

Böylece, uygulamamız için gereken tarih formatı, rakam formatı gibi bilgilere ulaşabiliriz.

Ayrıca, .Net‘in ilk yıllarından beri kullandığımız CultureInfo sınıfının CurrentCulture özelliği hala varlığını sürdürmekte.

Bu özellik sayesinde bir adımda, istediğimiz CultureInfo nesnesine kavuşabiliriz.

Angular ile sayfanın en altına geldiğini anlamak (Sonsuz -infinite- scroll)

Bu makaleyi okumadan önce Angular etiketindeki diğer makalelerimi okumanızı tavsiye ederim.

Bazı web sitelerinde sitenin en altına indiğinizde yeni verilerin otomatik olarak yüklendiğini farketmişsinizdir.

Örneğin, facebook, twitter gibi uygulamalar sayfanın en altına gittiğinizde yeni post’ları sayfaya yükler.

Angular ile geliştirdiğimiz uygulamada biz de aynı şekilde sayfanın en altına geldiğimizde daha fazla veri yüklenmesini veya bir sonraki haberin sayfaya getirilmesini sağlayabiliriz.

Bunun için öncelikle bir Angular projesi oluşturmamız lazım, hemen Command Prompt (Windows) veya Terminal (MacOs, Linux) penceresi açalım ve aşağıdaki komutu girelim;

Sayfanın en altına kaydırıldığımızı anlayabilmek için javascript aracılığıyla erişebileceğimiz window nesnesinin scroll event‘ine attach‘lanmamız lazım.

Yapmamız gereken ilk iş, sayfanın yüksekliğini elde etmek. Bunun için, eğer window nesnesinin innerHeight özelliği varsa bu özelliğin değerini, yoksa, document nesnesinin documentElement özelliğinin offsetHeight değerini okumalıyız.

İkinci adımda, document nesnesinin body özelliğinde ve documentElement özelliğinde bulunan scrollHeight, offsetHeight, clientHeight özelliklerinden değeri en büyük olanı alıyoruz.

Artık tek yapmamız gereken, o anda scroll‘un bulunduğu pozisyonu, sayfanın yüksekliği ile karşılaştırmak ve sayfanın el altına gelip gelmediğimizi bu karşılaştırmadan elde etmek.

Eğer bu kodları herhangi bir Angular Component class‘ının constructor‘ına yazacak olursak ilgili sayfada scroll‘un en alta geldiği anı tespit edebiliriz.

Örneğin;

Açık Akademi Yaz Okulu 2017

Her sene üniversitelerin yaz tatiline girmesiyle Microsoft tarafından bir Yaz Okulu etkinliği gerçekleştiriliyor.

Son yıllarda olduğu gibi bu yıl da Microsoft Yaz Okuluna eğitmen olarak katıldım.

04 Ağustos 2017, 08 Ağustos 2017, 16 Ağustos 2017 ve 22 Ağustos 2017 tarihlerinde Microsoft Türkiye ofisinde gerçekleştirdiğim seanslarda Universal Windows Platform, Microsoft Azure, HTML, Javascript, CSS, Xamarin ve Asp.Net Core konularında eğitimler verdim.

Tüm Yaz Okulu öğrencilerine, beni sabırla dinledikleri için teşekkür ediyor, özverili katılımlarından dolayı da tebrik ediyorum.

Windows 10 UWP uygulamasının kendini kapatıp tekrar başlatması (Restart)

Birçok uygulama için kendini kapatıp tekrar başlatma (özellikle de değiştirilen bir ayarı veya lisansı güncelleyerek başlatma) sıklıkla ihtiyaç duyulan bir özelliktir.

Windows 10 UWP uygulamalarını kapatmak için Windows.ApplicationModel.Core namespace’inde yeralan CoreApplication sınıfının Exit() methodunu çağırmamız yeterli.

Fakat uygulamanın tekrar başlatılmasını kullanıcıdan beklemek zorunda kalıyoruz. Daha iyi bir kullanım deneyimi için aslında uygulamanın kendisini kapatıp tekrar başlatabilmesi lazım.

Windows 10 UWP projelerinde, uygulamanın kendini kapatıp tekrar başlatabilmesini sağlamak, aslında çok kolay.

Önemli not : Bu özelliğin çalışması için bilgisayarda Windows 10 Build 16226 veya sonrası kurulu olmalı

Hemen yeni bir Visual Studio açalım ve Windows 10 UWP projesi oluşturalım, ben bu makalede projeme RestartProject ismini verdim.

Öncelikle MainPage.xaml dosyasını açalım ve aşağıdaki şekilde güncelleyelim;

Şimdi MainPage.xaml.cs dosyasını açalım ve aşağıdaki kodları yazalım;

Bu seçim ile yeniden başlat butonuna tıklandığı zaman, CoreApplication sınıfında yeralan RequestRestartAsync() methodunu çağırıyoruz.

RequestRestartAsync() methodu parametre alabiliyor ve bu parametreyi, uygulama baştan başlatıldığı zaman App.xaml.cs dosyasında yeralan OnActivated() methoduna gönderiyor.

Projede yeralan App.xaml.cs dosyasını açalım ve aşağıdaki kodları yazalım;

Böylece ekrandaki listeden seçili olan öğreyi uygulama kapanıp tekrar açılırken parametre olarak kullanıyoruz. Uygulama tekrar başladığı zaman seçili olan öğe seçili olarak başlatılıyor.

Örnek kullanım alanları;

  • Tema seçimi
  • Yeni versiyon güncellemesi
  • Ayar değişikliği
  • vs

Bu makale How to Restart your App Programmatically makalesi baz alınarak yazılmıştır :)

Engin Polat hakkında

Senior Software Engineer, @Microsoft

Ada ve Ege'nin babası ;)

Kategoriler

İstatistik

Makale Adedi: 484

Creative Commons Lisansı