Excel listelerinizdeki mükerrer kayıtları kolayca kaldırın!

      Excel ileri eğitim konularından Yinelenenleri Kaldır işlevi, Excel listelerinizdeki mükerrer kayıtları sizin yerinize bulabilir ve onları çok hızlı ve kolay bir şekilde kaldırarak verilerinizi benzersiz hale getirebilir!

      İşlem çok basit!

     Mükerrer kayıtları kaldırmak istediğimiz liste seçilir ya da listenin içinde bir hücreye tıklanır.

     Veri Sekmesi-> Veri Araçları Grubundan-> Yinelenenleri Kaldır butonu tıklanır.

Listemizdeki veriler, kişisel bilgiler olduğundan satır boyunca birbirleriyle ilişkilidirler. Listede Ad Soyad, Unvan ve İl bilgilerinin birebir aynı olduğu başka satırlar varsa, kaldırması için açılan Yinelenenleri Kaldır penceresindeki Sütunlar alanından Ad Soyad, Unvan, İl sütunlarının her biri seçilir ve Tamam butonu tıklanır.

 

Bu işlem sonunda yinelenen değerler kaldırılmıştır.

 

 Yinelenenleri Kaldır penceresini inceleyelim:    

Tümünü Seç butonu seçili olduğunda tüm sütun değerleri birbirleriyle ilişkili olarak değerlendirilerek, benzersiz değerlere ulaşılır.
Tüm Seçimleri Kaldır butonu sütun seçimlerini kaldırır.
Verilerimde üst bilgi var seçeneği ise sütun başlıklarımızı temsil eder. Sütun başlıklarınız varsa bu seçeneği seçeriz. Aksi halde başlıklarla veriler arasında aynı olan değerler denk gelirse başlık veri olarak kabul edilir ve kaldırma işlemine dahil edilir.
Sütunlar penceresinden mükerrerliğinin kontrol edilmesini istediğimiz sütunları seçebiliriz.

 

Tablo içerisinde bir veya birkaç sütun seçilerek yinelenenleri kaldırma işlemi yapmaya başlandığında ilgili seçimin doğruluğunu sınamak için Yinelenenleri Kaldır Uyarısı Penceresi açılır. Bu ekranda Seçimi genişlet ve Geçerli seçimle devam et isimlerinde iki seçenek vardır. Aşağıdaki gibi uygulanabilirler…

 

  1. Seçimi genişlet ; Eğer verilerimizin yukardaki örnekte olduğu gibi, birbiri ile bağı varsa, mutlaka seçimi genişlet diyerek ilgili listenin tamamının seçilmesi sağlanmalıdır, böylece kaldırma işlemi tüm satırlar için gerçekleşir.    

     

    Ardından Yinelenenleri Kaldır penceresi açılır. Buradan yinelenmesini istemediğimiz sütunun başlığını seçeriz. Ad Soyad ve Unvan alanlarının benzeşmesine bakmaksızın, yalnızca il bazında mükerrer olan kayıtların kaldırması için yalnızca İl seçeneğini işaretleriz.  

      

    Açılan pencerede mükerrer değerlerin ve benzersiz değerlerin sayısı karşımıza gelir. Bu işlem sonucunda il bazında mükerrer değerler kaldırılmış olacaktır.    

  2. Bu işleme,  Geçerli seçimle devam et  ile işleme devam edilirse, yinelenenleri kaldır penceresinde  yalnızca il sütunu görünür ve bu şekilde işlem yapıldığında, sütunlar birbirlerinden bağımsız şekilde değerlendirilerek yalnız il sütunundaki yinelenen değerler kaldırılır ve verileriniz arasındaki veri bütünlüğünün bozulmasına neden olur. Ancak, eğer listenizdeki sütunların değerleri  birbirleriyle ilişkili değilse, yalnızca tek sütun seçerek  ilgili sütun üzerinden kaldırma işlemi yapabilirsiniz.

 

 

 

 

15 Satırda IoC Container

Bu yazımda IoC ile ilgili pek fazla detaya girmeyeceğim, bunu daha sonra telafi eder burayı da güncellerim.
Geçenlerde alternatif IoC container paketleri bulmaya çalışırken Scott Hanselman’ın yazısına denk geldim. Dikkatimi çeken altlarda listelenen Oren Eini‘nin ve Ken Egozi‘nin DIY (Do It Yourself) olanları oldu. Ben de bir deneyeyim bakalım diye düşündüm ve sonuç aşağıda;

https://gist.github.com/fatihdgn/d40fa1b6f7a3c34f8677bec9a42813fa

Daha sonra görüşmek üzere…

Swashbuckle, Web API ve Swagger (OpenAPI) Tanımı

Giriş

Hayatınızda hiç ASP.NET Web API projesi yaptınız mı? Yaptıysanız eğer en azından bir kere bu API’ı kullanacak istemci (client) için de bir kütüphane yazmışsınızdır. Sonrasında ya bunun daha iyi bir yolu olması lazım diye kendi kendinize düşünmüşsünüzdür ya da Swashbuckle’ı duymuşsunuzdur.

Swagger ve Swashbuckle

Swashbuckle’ın ne yaptığını sorarsak, kendisinin Swagger tanımı oluşturan bir kütüphane olduğunu söyleyebiliriz. Tabii öncesinde Swagger ve tanımının ne olduğunu bilmemiz gerekiyor.

Swagger, bir API’ın bütün hayat döngüsü içerisinde kullanılabilecek araçları kapsamaya çalışan bir kütüphanedir. Spesifikasyonun adı 3.0 versiyonu ile birlikte OpenAPI olarak değiştirildi ve artık ekosistemde bir standart oldu.

Swagger tanımı aslında API’ınızın içerisinde hangi uçnoktaların (endpoint) olduğunu, o endpointlerden alınabilecek cevapların neler olduğunu ve cevabın bir modeli varsa bu modelin ne olacağını belirten bir döküman. Bu döküman ve Swagger içerisinde bulunan araçlar sayesinde, API tanımına uygun bir sunucu (server) ve ya istemci oluşturulabiliyor. Aynı zamanda bu araçların içerisinde size bu API’a istek yapabilmenizi sağlayan bir kullanıcı arayüzü de var.

Swashbuckle ise sizin oluşturduğunuz ASP.NET Web API projesi içerisinde olan Controller sınıfları üzerinden bu Swagger tanımını oluşturabiliyor. Aynı zamanda API’ınızı kullanabileceğiniz Swagger UI arayüzünü de ekleyebiliyor. Böylece siz yazdığınız server tarafındaki endpointleri kullanabilecek client projesini Swagger tanımı aracılığıyla otomatik olarak oluşturabiliyorsunuz. Swagger Editor size bu konuda yardımcı olacaktır.

Kodu Görelim

Bu örnekte, herhangi bir yerden veri çekme ile uğraşmayalım diye bir kategori listesi üreteceğiz ve bu kategorilere Id özellikleri ile birlikte tekil olarak erişebileceğiz.

Öncelikle boş bir Web API projesi oluşturuyoruz.

 

Proje içerisine, NuGet içerisinden Swashbuckle’ı bulup referans ediyoruz.

Models klasörünün içerisine aşağıdaki “Category” sınıfını ekliyoruz.

https://gist.github.com/fatihdgn/0f19875969487b341a5517547b6350c0

Sonrasında ise Providers adında bir klasör oluşturuyoruz ve içerisine aşağıdaki “CategoryProvider” sınıfını ekliyoruz. Bu sınıf ile birlikte, uygulama başlatıldığında random üretilmiş beş adet kategoriye sahip olacağız.

https://gist.github.com/fatihdgn/f5e9b5b26d0363829632ff49d9a8bad6

Son adım olarak Controllers klasörünün içerisine “CategoryController” ekliyoruz.

https://gist.github.com/fatihdgn/94f8bfd157aa07193e02a95d696a4b3d

Sonuç olarak aşağıdaki ekran görüntüsüne benzer bir ekran elde etmiş olmanız gerek.

 

Ve web projenizi başlatın. /swagger adresine gittiğinizde Swagger UI paneli ile karşılaşacaksınız.

 

Üst menüde, API’ınızın Swagger dökümanına ulaşabileceğiniz bir adres bulunuyor. Bu döküman sayesinde uygulamanıza istek yapabileceğiniz bir istemci oluşturabilirsiniz.
Aynı zamanda aşağıda, biraz önce eklediğimiz “CategoryController” içerisindeki iki endpoint bulunuyor. Arkada oluşturduğumuz kategori listesini almak için, “/api/Category” üzerine tıklayıp, aşağıda beliren “Try it out!” butonuna tıklayın.

 

Bunun sonucunda, hemen aşağıda kategorilerinizin bir listesini görebilirsiniz.

 

Arasından herhangi birinin Id özelliğini kopyalayıp, “/api/Category/{id}” tabında aynı adımları izleyerek, spesifik bir kategoriyi getirme isteğini de yapabilirsiniz.

Bugün, Swashbuckle ve Swagger’ı tanımladık, inceledik. Umarım keyifli ve öğretici bir yazı olmuştur. Bir sonraki yazıda görüşmek üzere.

SharePoint Framework (SpFx) İçerisinde jQuery Kullanımı

SharePoint Framework kullanarak geliştirme yaparken UI ve Http istekleri için kullanabileceğiniz birçok seçeneğe sahipsiniz. Popüler JavaScript Framework’lerinden bazılarının isimlerinden bahsetmek gerekirse Angular, React, Vue.js, Knockout başta gelebilir. Bunun yanında dilerseniz JavaScript kütüphanesi olarak jQuery de kullanabilirsiniz. Basit WebPartlar geliştirmek için Pure JavaScript’te iyi bir seçenek olarak köşede durabilir.

Kodun bakımı, yönetilebilir olması, devamlılığın sağlanması, birlikte geliştirilebilirlik ve UI’daki kompleksliğe göre en uygun framework’ü veya kütüphaneyi seçmek elbette size kalıyor. Ben bu yazımda SharePoint Framework ile birlikte jQuery nasıl kullanılabilir bundan bahsedeceğim. Sharepoint Framework ile jQuery‘yi seçme sebebim hem çokça geliştiricinin jQuery’e hâkim olması hem de topluluklar ve doküman anlamında iyi bir kaynağa sahip olması. Bunun yanında ek olarak ihtiyacım olan tüm taleplere cevap verebilir düzeyde olması yeterli bir sebep olacaktır diye düşünüyorum.

Önceki yazılarımda çokça bir proje için SharePoint Framework ile kurulumun nasıl yapıldığını çokça anlattım. Bu nedenle artık kurulum aşamasını geçiyorum ve kurulu bir ortama sahip olduğunuzu varsayıyorum.

Öncelikle “npm install –save jquery@2″ komutunu çalıştırarak projemiz içerisine kütüphaneyi indirelim.

Daha sonra “npm install –save @types/jquery@2” komutunu çalıştırarak jQuery Typinglerini de projemiz içerisine eklemiş olalım. Typingler sayesinde geliştirme yaparken çok güçlü bir intellisense (otomatik tamamlama) desteği alabiliriz.

SharePoint Framework kurulumuna nazaran bu kütüphaneler boyutları küçük olması nedeniyle yüklenme aşamasında çok fazla vakit almayacaktır.

WebPart ile ilgili işlemlerimizi tamamlayıp ilgili projeyi SharePoint online içerisinde deploy ederken scriptleri bundle ettiğimizde bu paket içerisinde jQuery’nin de olması gerekiyor. Bu nedenle configconfig.json dosyayı içerisine aşağıdaki tanımlamayı yapalım.

“externals”: {

“jquery”:”node_modules/jquery/dist/jquery.min.js”

}

Projemizi geliştirdiğimiz .ts uzantılı dosyamızda, en yukarıda kütüphaneleri çağırdığımız namespace alanında aşağıdaki tek satırlık kodla jQuery’i hangi alias (takma isim) ile kullanacağımız da belirttikten sonra proje içerisinde jQuery’nin tüm yeteneklerinden faydalanabiliriz. Burada “as” direktifinden sonra kullanacağınız isimlendirme ile tüm class içerisinde sağlayacağınız erişim anahtar kelimesini belirttiğinizi de bildirmek isterim.

import * as jQuery from
‘jquery’;

Bir örnek vermek gerekirse, DOM içerisinde bir objeye en kolay aşağıdaki satırları kullanarak ulaşabilirsiniz.

 

Bir sonraki yazımızda görüşmek üzere.

Excel Veri Doğrulama (Data Validation)

Bu yazımızda özellikle Excel Eğitimlerimizde detaylıca anlattığımız önemli bir konu olan Excel Veri Doğrulama (Data Validation) Metodları hakkında bilgi vermeye çalışacağız.

Excel’de Veri Doğrulama ile kullanıcıların bir sayfada sadece istenilen hücre aralıklarına sizin koyduğunuz kısıtlamalar dahilinde veri girişi yapmasını sağlayabilirsiniz. Bu özellik ile izin verilmeyen hücre aralıklarına veri girişi yapılmasını engellemiş olursunuz. Veri Doğrulama ile hücreye Tamsayı, Ondalıklı Sayı, Liste, Metin Uzunluğu, Tarih, Saat türlerinden birini kullanabileceğiniz gibi özel bir durumda Formül yazarak da Özel veri doğrulama ölçütleri tanımlayabilirsiniz.

Veri Doğrulama’yı kullandığınızda kullanıcı kural koyulmuş hücrelerden birine tıkladığında bir uyarı mesajı göstererek kullanıcıya hücreye gireceği aralık ve veri türü hakkında bilgi verebilirsiniz. Eğer kullanıcı sizin koyduğunuz kurallar dışında bir değer girdi ise hata mesajı göstererek girilen değerlerin geçersiz olduğunu gösterebilirsiniz.

Veri Doğrulama özelliğine Veri Sekmesi > Veri Araçları gurubunda ulaşabilirsiniz.

Veri Doğrulamanın yanındaki oku tıkladığımızda açılan listeden tekrar Veri Doğrulama seçeneğini seçiyoruz. Ayrıca bu listeden veri doğrulama kuralı oluşturduğumuzda geçersiz olan verileri daire içine alınmasını sağlayan (Geçersiz Veriyi Daire İçine Al) özelliğimizi de kullanabiliriz.

Veri Doğrulama seçeneğini tıkladığımızda aşağıda görülen ayarlarımızı yapacağımız Veri Doğrulama penceresi açılır.

Yukardaki pencere ilk açıldığında İzin Verilen kısmında Herhangi Bir Değer yazan bu ifade sizin Excel hücrelerine istediğiniz her veriyi kısıtlama olmaksızın giriş yapabileceğiniz anlamına gelir.

Bir senaryo üzerinden özelliğimizin uygulamasını yapalım.

Örneğin bir Excel Sayfasında A1:A5 aralığına sadece 18 ile 50 arasıda tamsayı tipinde bir değer girişi yapmak istiyoruz. Kullanıcı bu aralıktan herhangi bir hücreye tıkladığında bir uyarı iletisi göstererek hangi değerleri girebileceği hakkında bir mesaj gösterilmesini sağlayacağız. Eğer kullanıcı izin verilen aralık veya tür dışında bir değer girişi yaparsa Hata Uyarısı göstereceğiz ve duruma göre ya hiç giriş yapamamasını veya bir uyarı gösterip yinede devam et şeklinde bir şeçenek sunarak giriş yaptırabiliriz.

Aşağıdaki pencerede İzin Verilen kısmında Tamsayıyı seçiyoruz ve 18 ile 50 arası bir sayıya izin verecek dediğimiz için Veri kısmına arasında olarak şeçiyoruz en az ve en çok kısımlarına sırayla 18 ve 50 değerlerini giriyoruz. Böylece kuralımızı koymuş olduk bu kadar yapmamız yeterlidir. İstersek Girdi iletisi ve Hata Uyarısı ayarlarınıda yapabiliriz eğer yapmaz isek sistemin varsayılan ayarı geçerli olur.

Şimdide Girdi İletisini hazırlayalım. Bunun için Girdi İletisi sekmesine tıklıyoruz ve aşağıda solda bulunan ekran geliyor. Bu ekranda Başlık kısmına “Lütfen okuyunuz” tarzında bir ileti Girdi iletisi kısmına da detaylı bir mesaj yazabilirsiniz.

Ve son olarak “Hata” Uyarısı ayarını yapalım. Amacımız sadece 18-50 arasında bir değer girişi yapıldı ise izin verilecek aksi durumda kesinlikle giriş yapılmasın şeklinde bir ayar yapacağız Stil kısmında Durma ifadesini seçersek kesinlikle giriş yapamaz ama Uyarı veya Bilgi ifadelerini seçersek önce bir uyarı alır Devam et seçeneğini seçersek giriş yapılır. Başlık kısmında Hata oluştu, Hata İletisi kısmında da Girdiğiniz değer geçerli değildir uyarısını verdirebiliriz.

Yukardaki tüm ayarları yaptıktan sonra kullanıcı veri girdiğinde aşağıdaki gibi bir görüntüyle karşılaşır. Eğer girilen değerler şartları sağlıyor ise bir sorun oluşmaz.

Ama girilen değerler geçersiz olursa seçtiğiniz Stil’e göre ki biz Durma Stilini seçtik hiçbir şekilde o değeri giremeyiz ve aşağıdaki gibi bir hata penceresi açılır.

Eğer Stil olarak Uyarı seçilirse aşağıdaki gibi bir mesaj çıkar.

Yukardaki bu mesajda Evet’i tıklarsak değer girişi kabul edilir. Diyelim ki tüm girişler yapıldı ama bizim kural koyarken sınırladığımız alanlar dışında da veriler girilmiş bunlar hangileridir tespit etmek istersek Geçersiz Veriyi Daire İçine Al seçeneğini seçiyoruz.

Ve bu işlem sonunda geçersiz olan veriler kırmızı daire içine otomatik alınır. Bu kırmızı daireleri temizlemek istersek Doğrulama Dairelerini Temizle seçeneğini seçeriz.

Yukarıda anlatılan süreç diğer veri türleri olan Ondalıklı Sayı, Metin Uzunluğu, Tarih, Saat türleri içinde aynı şekildedir.

Veri Doğrulama ile Açılır Listeler Yapmak

Açılır liste bir hücreye tıkladığımızda seçeneklerin gelmesidir. Bu özellik de bir Veri Doğrulama kuralıdır. Bir örnek ile konuyu anlatalım.

A1 hücresine tıkladığımızda açılır listeden departman bilgileri olan Finans, Muhasebe, Satış alanlarını seçebileceğimiz bir liste oluşturalım bunun için Veri Doğrulama penceresini açtıktan sonra Liste’yi seçip bilgileri arasında noktalı virgül olacak şekilde giriyoruz.

Yukardaki ayarı yaptığımızda A1 hücresinde aşağıdaki gibi açılır listeden seçim yapabiliriz.

Formül ile Veri Doğrulama Kuralı Oluşturmak

Veri Doğrulamada formül kullanmak bize sunulan var olan özellikler ile işin içinden çıkamayacağımız durumlarda kullanılır. Bu formülleri yazarken özellikle durumların sağlanıp sağlanmamasına göre bir formül yapısı kurarız ve bu formüllerin sonuç itibari ile Doğru veya Yanlış ifadelerini oluşturmaları gerekir.

Bir örnek ile konuyu anlatalım. Örnek: A1 hücresine girilecek metin C karakteri ile başlıyor ise hücreye giriş yapılabilir olsun aksi taktirde hiçbir şekilde giriş yapılmayacak.

Bunun için A1 hücresini seçtikten sonra Veri Doğrulama penceresini açıyoruz ve Özel’i seçtikten sonra Formül kısmına =Soldan(A1;1)=”C” formülünü yazıyoruz.

Tamam düğmesini tıkladıktan sonra A1 hücresine sadece C karakteri ile başlayan bir kelime girdiğimizde giriş yapılacak diğer durumlarda giriş yapılamayacak kuralı koymuş oluruz.

Aşağıdaki resimde görüldüğü gibi A1 hücresine Ali yazdığımızda hata alıyoruz çünkü C karakteri ile başlamıyor. (Varsayılan hata uyarısı)

Fakat A1 hücresine C karakteri ile başlayan Cihan ifadesini yazdığımızda herhangi bir sorunla karşılaşmıyoruz.

Böylelikle Veri Doğrulama yöntemleri ile hücreler içerisine rapor ya da hesaplamalar için doğru verilerin girilmesini kesin olarak sağlayabiliriz.

Başka bir yazıda görüşmek dileğiyle.

Metni Sütunlara Dönüştür (Text To Columns)

Excel’in en yararlı ve pratik özelliklerinden biride şüphesiz Metni Sütunlara Dönüştür sihirbazıdır. Bu yazımızda bu özelliğin detaylarını irdeleyeceğiz.

Çok işlevsel bir özellik olmasından dolayı İleri Excel eğitimlerimizde 7-8 farklı çözüm yöntemini uygulamaları ile gösterip anlattığımız bu konunun birkaç özelliğini aşağıdaki makalemizde bulabilirsiniz.

Bu özellik ile tek sütunda olan verileri farklı sütunlara ayrıştırabiliriz. Özelliğimiz bir nevi veri birleştirme işleminin tersidir aslında. Kullanımı oldukça kolay olan bu özellik ile verileri ayrıştırırken iki durum söz konusudur.

  1. Sınırlandırılmış Veriler
  2. Sabit Genişlikli Veriler

Sınırlandırılmış veri herhangi bir karakter ile ayrılan verilere denir. Örneğin Adı Soyadı yazılırken arada kullanılan boşluk karakteri bir sınırlandırma karakteridir.

Sabit Genişlikli veri ise metin uzunluğu anlamında eşit ve sınırlandırılmış veriye göre düzenli verilerdir. Örneğin Telefon numarası, Vergi numarası gibi.

Metni Sütunlara Dönüştür özelliği bir sihirbaz olduğu için 3 adımda bitecek bir işlemdir. Özelliğimiz ile ilgili farklı örnekler üzerinden konumuzu anlatalım.

Örnek 1:

Aşağıdaki tabloda amacımız tek sütunda verilen Adı Soyadı bilgilerinden Adı kısmının B sütununa Soyadı kısmının ise C sütununa gelmesini istiyoruz.

Yukardaki tabloda öncelikle A sütunu taratıyoruz ve Veri Sekmesinin Veri Araçları grubunda Metni Sütunlara Dönüştür özelliğine tıklıyoruz.

Daha sonra aşağıdaki pencere açılacaktır.

Tarattığımız A sütunundaki veri, Adı Soyadı bilgilerinden oluşan bir veridir ve boşluk karakteri ile ayrılmıştır haliyle bir sınırlandırma olduğu için Sınırlandırılmış seçeneği ile devam edip İleri düğmesini tıklıyoruz ve aşağıdaki ekranımız geliyor.

Yukarıdaki adıma geldiğimizde verilerin hangi ayırıcı karakter(ler) ile ayrıldığını seçiyoruz. Bu kısımda birden fazla seçeneği işaretleyebiliriz veya burada olmayan bir karakter ise Diğer kısmına o karakteri yazabiliriz örneğin “/” karakteri gibi. Aynı zamanda Veri Önizleme kısmından yaptıklarımızın sonuçlarını anlık görebiliyoruz. İleri demeden önce bu kısmı incelemenizi tavsiye ederim. Yukarıdaki işlem için Boşluk kutucuğunu seçip İleri diyoruz ve aşağıdaki son adımımız olan 3. Adım geliyor.

Bu adımda son diyerek direkt işlemi bitirebiliriz ama buradada bazı şeyleri bilmeniz faydanıza olacaktır. Öncelikle Sütun veri biçiminde Genel seçeneği seçili bu ayar Excel’in standart hücre formatıdır ve son deyip işlemi bitirdiğimizde Excel de bu kısım Genel olarak gözükecektir. Eğer Metini seçersek Excel hücresinde formatı Metin olacaktır.Tarih seçeneği ise Tarih bilgisi olan sütünun Excele hangi formatta yansıyacağıdır. (GAY=Gün Ay Yıl formatı gibi.) Eğer Sutunu içeri aktarma seçeneğini seçerseniz bu sutunu Excel’e yazmadan atlayacaktır.

Hedef kısmında ise ayrıştırmanın hangi hücreden itibaren yapılacağını gösterir. Biz burada herhangi bir hedef göstermez isek yanındaki dolu hücreleri ezer o yüzden kaç sutuna ayrılacağını önizleme kısmında gördüğümüzde ona göre boş sutun açmalıyız veya başka bir hedef hücre göstermeliyiz.

Gelişmiş kısmı ise sayısal verileri Excel’e yazarken ondalık ve binlik ayraçlarını ayarlamak içindir. Örneğin Türkiye’de sayılar yazılırken ondalık ayırcaç virgül, binlik ayıraç ise noktadır ama Amerika da ise bu durum tam tersidir. Önemli bir durumdur dikkat edilmezse sayısal değerlerde hata olabilir.

Son düğmesine tıkladığımızda Hedef kısmına B1 hücresini seçtiğimiz için ayrıştırma işlemi B sütununda Ad’lar C sütununda da Soyad’lar olacak şekilde aşağıdaki gibi ayrıştırılır.

Örnek 2: Tarihleri Düzenlemek

Tek sütunda geçersiz bir formatta yazılan tarihleri arasında Nokta(.) olacak şekilde düzenleyelim.

İlk etapta veriyi taratıp Metni sütunlara Dönüştür Özelliğimize tıklıyoruz.

İlk adımda hiçbir şey yapmadan İleri diyoruz.

2. Adımda da hiçbir şey yapmıyoruz ve İleri diyoruz.

3. Adımda Sütun veri biçimi kısmında Tarih’i seçiyoruz ve bilgilerin YılAyGün formatında olduğunu anlaması için “YAG” kalıbını seçiyoruz ve Hedef kısmında B1 hücresine tıklıyoruz.

Son düğmesine tıkladığımızda aşağıdaki şekilde Tarih alanındaki bilgilerimizi düzenlemiş oluyoruz.

Başka bir makalede görüşmek üzere hoşçakalın.

Microsoft Bot Framework Giriş Part-1

Hepinizin farkında olduğu üzere ChatBot‘lar artık tüm sosyal ağlar ve web sitelerde olmazsa olmaz hale gelmiş durumda, gerek QnA yardımcısı gerek sistem tarafından sunulan hizmetlerin erişilebilir olması adına birçok platformda karşımıza çıkıyor.

Ben de Microsoft’un Bot Oluşturmak için sunmuş olduğu Bot Framework’den bahsedeceğim.

Öncelikle belirtmeliyim ki Bot Framework henüz Preview durumda, gelen yenilikleri buradan takip edebilirsiniz.

Nedir bu Bot Framework, bana ne gibi kolaylıklar sunuyor?

Microsoft’un kolay ve hızlı şekilde bot oluşturmak, oluşturduğunuz botları test etmek ve desteklenen platformlara entegre etme kolaylığı sunduğu platformudur.

 

 

Bot framework’ün içinde bulunan hizmetlerden yararlanarak, akıllı, öğrenen, insan dilini algılayan, görsel ve video işleyebilen botlar oluşturabiliriz.

Botlarımızı daha akıllı hale getirebilmek için Cognitive Services den yararlanabiliriz.

Language Understanding 5 hizmet sunuyor.

  1. Language Understanding Intelligent Service (LUIS) : Bot ile konuşma esnasında anlatılmak istenilen Fiil(almak, öğrenmek, sipariş vermek, rezerve etmek vs.),  Nesne(pizza, bilet vs.)  Adet(1 adet, 2kg, 3metre vs.) parametleri  algılayıp aksiyon alabilme imkanı sunuyor senaryoları kendinize göre geliştirebilirsiniz.
  2. Text Analytics APIBir metnin yazıldığı dili, hakim olan duyguyu, en fazla geçen kelimeleri algılayabilirsiniz.
  3. Bing Spell Check APIYazım denetimi yapılmasını sağlar, Argo içerikleri marka adlarını algılayabilir.
  4. Linguistic Analysis APIDoğal dil işleme, konuşma bölümü etiketleme ve ayrıştırma özellikleri sunar.
  5. Web Language Model (WebLM) API : Konuşmadaki kelime yoğunluğunu algılama ve sıradaki kelime tahmini özellikleri sunar.

Knowledge Extraction 5 hizmet sunuyor.

  1. Entity Linking Intelligence Service : Önceki sohbetlerden çıkarım yaparak yeni sohbetlerde sonuca daha hızlı ulaşılmasını sağlar.
  2. Recommendations API : Önceki seçimlerden çıkarım yaparak yeni öneriler sunar. (Bunu isteyenler bunu da istediler gibi)
  3. Knowledge Exploration : Yazılan kelimeleri otomatik algılayarak tamamlayan veya tamamlama önerileri sunar.
  4. Academic Knowledge API : Akademik yazılar, dergiler, makaleler gibi kaynaklarda arama yapılmasını sağlar.
  5. QnA Maker : Kullanıcılarla sohbet diliyle sorularına cevap verebilen servistir, önceden tanımlanan soru cevap setlerine göre soruları algılar ve cevap verir.

Speech Recognition and Conversion 3 hizmet sunuyor.

  1. Bing Speech API : Konuşmayı metne yada metni konuşmaya çeviren servistir.
  2. Custom Recognition Intelligent Service (CRIS) : İnsan sesini yada herhangi bir kaynaktan gelen sesi tanıyarak, aksiyon alınabilen servis.
  3. Speaker Recognition API : Sadece tanıtılan sesler tanıyarak çalışan komutlar oluşturabilirsiniz.
  1.  Web Search API : Webde arama yapabilen servis, resim, video, haber aramaları yapabilir.
  2. Image Search API : Resim arama servisi, filtreler uygulayarak resim aratabilirsiniz (deniz resmi, doğa resmi vs.)
  3. Video Search API : Video arama servisi, filtreler uygulayarak videolar aratabilirsiniz (kedi videosu vs.)
  4. News Search API : Haber arama servisi, filtreler uygulayarak haberler aratabilirsiniz (dünya futbolu, güncel haberler vs.)
  5. Autosuggest API : Otomatik tamamlama servisi. Uygulamanızda kullanarak kullanıcıların aramalarını otomatik tamamlayarak kolaylaştırabilirsiniz.

Image and Video Understanding 4 hizmet sunuyor.

  1. Computer Vision API : Görselleri algılayıp içerikleri hakkında bilgi verebilir. Örn. görselde yer alan metinleri algılayabilir, nesneleri tanıyabilir.
  2. Emotion API : Görseldeki yüzleri algılayarak duygu analizi yapabilir. Örn. 4 kişi var ve mutlu, üzgün, yorgun, sıkılmış vb. bilgiler verebilir.
  3. Face API : Yüz algılama servisidir, yüzleri algılayarak doğrulama yapabilir yada benzer yüzleri gruplayabilir.
  4. Video API : Vidoları analiz edebilir, yüzleri algılayıp takip edebilir, videodaki titremeleri düzeltebilir, haraketleri algılayıp aksiyonlar alınabilir.

Bot’larımızı .Net ve NodeJS ile geliştirebiliyoruz, Microsoft’un iki platform içinde SDK’sı bulunuyor;

NodeJs için buradan, .Net için buradan ulaşabilirsiniz, ayrıca son güncellemelerin yayınladığı blog’a buradan ulaşabilirsiniz.

.NET Core, .NET Standart ve Felsefe Taşı – Part II

Previously on : .NET Core, .NET Standart ve Felsefe Taşı – Part I

“It does not do to dwell on dreams and forget to live.” ― J.K. Rowling, Harry Potter and the Sorcerer’s Stone

J.K. Rowling’in de dediği gibi, hayal dünyasının içerisinde hayat sürüp yaşamayı unutmak pek olmuyor. İşte PCL’ler hayatımıza böyle girmişti fakat, hayal dünyasının içerisinde, yani teoride mantıklı bir yaklaşım, gerçek hayata uyarlandığında pek de tutarlı olmadı, olamadı. Çok mu abarttım? Olabilir. Ama bu ortada çözülmesi gereken bir durumun olduğu gerçeğini değiştirmiyor.

Soruyu tekrar alabilir miyim?

Ha, şu soru. .NET Standart neden var? Ondan öncesinde PCL’ler neden var diye sormamız gerekiyor değil mi? Çözmeye çalıştığı problem aslında yazdığınız kodların farklı .NET proje tiplerinde kullanılabilmesini sağlamak. Peki neler bu proje tipleri ? .NET Framework, Silverlight, Windows 8 (Metro), Windows Phone, Xamarin, Mono, Universal Windows Platform (UWP), XBox 360, liste daha uzuyor.

enter image description here

Evet, tabii, güzel fikir. Bir çok ihtiyacı da karşıladı aslında, bu sebeple tamamen kötülemek doğru olmaz ama bir süre sonra bu yaklaşımın eksikliklerini görmeye başladık.

Nerede benim API’ım ?

dotnet-today

Birinci problem, PCL altyapısı, uygulamayı yazarken kullanabileceğiniz API’ı, desteklemeye çalıştığınız platformların kesişimine göre belirliyor. Bir platformda olan bir API diğer platformda yoksa, o kısım çıkartılıyor. Örneğin Xamarin.iOS, Xamarin.Android ve UWP için yaratayım bir PCL dediğinizde, yapacağınız dosya okuma ve yazma işlemleri artık düşündüğünüz kadar kolay olmuyor. Çünkü bir tarafta System.IO varken, diğer tarafta Windows.Storage var. Kesişimin içerisinde bu iki API da yok. Yani, var da yok. System.IO namespace olarak var ama tanıdık olduğumuz File ve Directory yok mesela. Bu sefer kulağınızı tersten tutmaya ve şuradaki gibi bir guide’ı takip etmeye başlıyorsunuz. Bu da size hayatınızı ve mesleki kararlarınızı sorgulatabiliyor. Halbuki sadece bir dosya okumak istemiştiniz. Bu tür eksiklikleri kapatmak için ortaya PCLStorage gibi paketler çıkıyor ama bu nedense yama hissiyatı yaratıyor. Her kombinasyonda eksik kalan parçalar ve o eksiklikleri kapatmaya çalışan paketler. Sonu gelmez bir döngü.

Ama Cross-Platform oluyor değil mi ?

Aslında tam değil. Yazdığınız kod her platform için ayrı ayrı derleniyor. Evet, bir PCL paketini NuGet üzerinden çekerken bütün desteklenen platformlar için derlenen dosyalar da yanında geliyor. Şimdi, bundan iki yıl sonra başka bir .NET platformu çıksa – ki bu hızda giderse hiç de düşük bir olasılık değil – bu paket o platformda çalışacak mı? Tabii ki hayır. Çünkü paketin, bu platform da eklenerek tekrar derlenmesi gerekiyor. Bu arada kaybedebileceğiniz API’ları da bir yandan düşünseniz iyi olur. Onlara da bir “yama” gerekecek.

.NET Standart

Yani bu iki büyük soru işaretine karşı çözüm olacak yapının, öncelikle stabil bir API sunması gerekiyor. Bu ise, hali hazırdaki platformların bu API’ı implemente etmesi gerektiği anlamına geliyor ki geliştirmek istediğim platformlara göre erişebildiğim API oranı azalmasın. Aynı zamanda, sonrasında geliştirilebilecek diğer platformların da aynı API’ı implemente etmesi sağlanırsa, bu yapı için derlenen paketlerin de gelecek platformda çalışması sağlanabilir.
Buradan ise yapının görevinin, bütün .NET platformları için ortak bir API sunmak ve bunun devamlılığını sağlamak olduğunu söyleyebiliriz ve iki soru işaretimiz de böylece ortadan kalkmış olur.

Sonuç olarak ortaya .NET Standart çıkıyor.

.NET Standart sayesinde artık tek bir API kullanarak, .NET Standart API’ını implemente etmiş olan bütün .NET platformlarını destekleyebiliyoruz. Yakın zamanda 2.0 versiyonu çıkan .NET Standart tarafından desteklenen API setinin içerisinde Networking, IO ve Threading gibi önemli yapı taşları mevcut.

netstandard-apis

Bir süre sonra PCL’ler yerini .NET Standart’a bırakacak. Kişisel kanaatim, .NET Standart’ın çok daha iyi bir yaklaşım olduğu yönünde. Umarım yakın zamanda bir standarta daha ihtiyaç duymayız.

“The truth.” Dumbledore sighed. “It is a beautiful and terrible thing, and should therefore be treated with great caution.” ― J.K. Rowling, Harry Potter and the Sorcerer’s Stone

Bir sonraki yazıda görüşmek üzere.

Hangi Özellikler Aktif Edildiğinde Exchange Enterprise Client Access License (E-CAL) Kullanmak Gerekir

Bu yazımızda lisanslama konusunda sıklıkla soru işareti yaşanan, Exchange Server Enterprise CAL kullanımının gerekli olduğu durumlara açıklık getirmek istedik. Yazı içerisinde bu konulara ilişkin bilgiler verecek ve Enterprise CAL kullanımı konusunda lisans içerikleri ve kullanım yöntemlerini anlatmaya çalışacağız.

Exchange kurulumların da yanlış yapılan aksiyonlar sonucu on-premise kullanımlarda beklenmedik CAL & SERVER lisans maliyeti çıkmaktadır. Office 365 ile birlikte Office uygulamalarına yönelik ihtiyacınızı karşılarken aynı zamanda e-posta hizmetinizi de ek lisans maliyeti düşünmeden BT süreçlerinize çözüm sağlayabilirsiniz.

Exchange İstemci erişim lisansları (CAL) ile ilgili önemli bir noktaya değinmek isterim: Eğer Exchange Standard CAL özelliklerine sahip olmak istiyorsanız sadece Standard CAL almanız yeterli olacaktır. Ancak Exchange Enterprise CAL özelliklerine sahip olmak istiyorsanız hem Exchange Standard CAL hemde Enterprise CAL almanız gerekmektedir.

Aşağıdaki tabloda ve maddelerde Exchange Standart CAL ve Enterprise CAL kapsamında gelen özellikleri inceleyebilirsiniz:

 

Exchange Standard CAL

  • E-posta gönderip alma ve e-postaları kişisel bir posta kutusuna kaydetme, randevuları ve toplantıları planlama ve kişisel takvim oluşturma
  • E-posta ve fiziksel adresleri, telefon numaraları ve diğer kişisel bilgileri içeren bir rehber veritabanını saklama; görevleri zamanlama ve tamamlanma süreçlerini izleme
  • E-posta, takvim, kişiler ve görevler için tarayıcı tabanlı erişim (Outlook Web App üzerinden)
  • Exchange yazılımının kötü amaçlı yazılım ve spam filtreleme özellikleri, virüsleri, casus yazılımları ve istenmeyen iletileri posta yoluyla toplu halde siler.
  • Mobil aygıtın Exchange ActiveSync protokolü aracılığıyla Exchange’e erişmesini sağlayan ve verileri mobil aygıtlarla senkronize eden ve minimum mobil aygıt parolası uzunluğu gibi temel yönetim ilkelerini zorunlu kılacak şekilde temel mobil aygıt yönetimi
  • Bir grup posta kutusuna gönderilen ve bu posta kutularından gönderilen tüm iletileri arşivleyen temel günlük (bazen Günlük Veritabanı Günlüğü olarak da bilinir)
  • Varsayılan klasörlerde bulunan iletilerin ne kadar süre tutulacağı ve bir ileti alıkoyma yaşına ulaştığında sistemin ne yapması gerektiğini denetleyen temel saklama politikaları (bazen Varsayılan Saklama Politikaları olarak adlandırılır)
  • Önceki sürümlerin Çoklu Posta Kutusu Aramasını genişleten ve yetkili personelin (yasal ve uyum görevlileri gibi) e-posta, takvim, görev ve kişi öğelerinde organizasyon çapında arama yapmasını sağlayan yerinde eDiscovery.
  • Site posta kutuları, ekip üyelerinin tek bir kullanıcı arabirimi aracılığıyla bir SharePoint sitesinin belgelerine ve ilişkili e-posta iletilerine erişmesini sağlayan Exchange Server 2013’e yeni bir özellik (ve SharePoint 2013).

Exchange Enterprise CAL

  • Standard CAL tarafından sağlanan özelliklere ek olarak yasal zorunluluklara ve kamusal düzenlemelere uyma yeteneğini geliştirmek için aşağıdaki maddelerde yer alan ek özellikle Enterprise CAL ile beraber gelir. Böylece Exchange Server altyapısında daha kurumsal yetenekler aktif edilebilir.
  • Bir mobil telefonun bir PC için bir modem olarak kullanılmasını önleme gibi Exchange ActiveSync ile daha kapsamlı politika uygulanmasını sağlayan birinci sınıf mobil cihaz yönetimi
  • Günlük kaydı belirli kullanıcılara veya gruplara gönderilen e-postaya sınırlandırarak daha ayrıntılı denetimi ve dolayısıyla daha küçük dergileri sunan birinci sınıf günlük kaydı (bazen Kullanıcı Başına / Dağıtım Listesi Günlüğü olarak da bilinir)
  • Saklama ilkesinin varsayılan olmayan klasörler üzerinde (örneğin, kullanıcılar tarafından oluşturulan klasörler) ayarlanmasına ve kullanıcıların belirlediği saklama parametrelerinden önce gelen tek tek iletiler için bir saklama politikası belirlemesine izin veren, birincil Saklama politikaları (bazen Özel Saklama Politikaları). sistem yöneticisi
  • Sesli postaları metne çeviren (kullanıcılara arayan kişinin mesajının okunabilir bir önizlemesini verir) birleştirilmiş mesajlaşmaya sahip sesli posta, sesli posta ses ve metnini e-posta ve fakslar olarak aynı gelen kutusuna yerleştirir ve birleştirilmiş gelen kutusuna erişim sağlar Sesli komutları kullanarak standart bir telefondan
  • Exchange çevrimiçi koruması, kötü amaçlı yazılım ve spam gönderen e-postaları filtreleyen ve Exchange Enterprise CAL üzerinde Yazılım Güvencesi kapsamını koruyan kuruluşlara ek bir ücret ödemeyen ve Microsoft tarafından barındırılan bir hizmettir.
  • Yetkili personelin diğer tüm bilgi saklama politikalarını (süresiz veya belirli bir süre için) geçersiz kılmasını ve belirtilen posta kutularında önceden saklanan mesajların korunmasını ve bu posta kutularında önceden depolanmış iletilerin korunmasını sağlayan Yerinde Kayıt Olun (önceden Hukuk Mahfazası veya Dava Tutma adı verilir). sonraki tüm gelen ve giden iletiler korunur
  • Kuruluşlara, Outlook kişisel mağaza (PST) dosyalarının aksine yöneticiler tarafından güvenilir bir şekilde yedeklenebilen, kurumsal politika uyarınca korunan bir sunucu tabanlı e-posta arşivleme seçeneği sunan Yerinde Arşiv (önceden Kişisel Arşiv) adı verilen ve gerektiğinde arandı
  • Yöneticilerin kullanıcılara herhangi bir müdahalede bulunmadan iletileri ve ekleri koruyan kuralları tanımlamalarını sağlayan Otomatik İleti Koruması, Windows Rights Management Services’ı kullanıyor (korumalı iletileri gönderen veya alan her istemci de bir Windows Rights Management Services CAL’ıyla lisanslanmalıdır)
  • İleti içeriğini kişisel tanımlanabilir bilgiler gibi hassas bilgileri analiz eden ve iletileri filtrelemek veya sonuçları izlemek için ilkeler yapılandırmasına izin veren Veri Kaybını Önleme

    Sunucu tarafındaki lisanlama kapsamı için aşağıda güncel Exchange Server 2016 Lisanslamasını inceleyebilmeniz adına paylaşıyorum.

Exchange Server 2016 Lisanslaması

Sunucu lisansları

İki sunucu sürümü vardır

  • Standart: Küçük ve orta ölçekli kuruluşların posta kutusu ihtiyaçları için tasarlanmıştır. Ayrıca daha büyük bir Exchange dağıtımında posta kutusu olmayan roller için de uygundur. Bu sürüm 1’den 5’e kadar posta kutusu veritabanlarını destekler.
  • Kullanıcı Basına Exchange Standard Cal ile lisanslanmış olması gerekmektedir.
  • Enterprise: daha büyük sayıda posta kutusu veritabanları gerektirebilecek daha büyük kuruluşlar için tasarlanmıştır. Bu sürüm 1’den 100’e kadar posta kutusu veritabanını desteklemektedir.Enterprise CAL özelliklerini etkinleştirebilmek için kullanıcı başına Standard CAL’a ek olarak bir de Enterprise CAL ile alması gerekmektedir.


Exchange Server Standard & Enterprise özellikleri aşağıdaki gibidir
Sunucu ve Kullanıcı için Standart ya da Enterprise lisanslama yaklaşımı, tablolara ve maddelediğimiz listelerde yer alan özellikler göz önünde bulundurularak kurumsal ihtiyaçlara yönelik geliştirilmelidir.
Başka bir yazıda görüşmek dileğiyle.