OneNote ile CAPTCHA Testi

Geçenlerde bir uygulama için Captcha örneği hazırlıyorum. Test aşamasında iken güvenilirliğini nasıl test edebiliriz diye düşündüm. Akabinde aklıma MS OneNote uygulaması geldi.
Uygulamanın özellikleri saymakla bitmez ama bizi ilgilendiren ise bir çeşit OCR özelliği barındırmasıdır. Bu özellik sayesinde resimlerin içindeki metinleri ayrıştırabiliryorsunuz.

Resime sağ tıkla ve metni ayrıştır.
Copy Text from Picture

Basit bir örnek ile başlayalım.

Arial 14 gri üzerine siyah metin.
captcha example 1
Sonuç -> 5TSRB5

İki çizgi atalım
captcha example 2
Sonuç – > KW4

Arka planı HatchBrush ile değiştirelim
captcha example 3
Sonuç -> String.Empty 🙂

Bu test 100% güvenilir değildir. Daha iyi algoritmalar ile ayrıştırma daha başarılı olabilir.

Application.Idle

Windows tabanlı uygulama geliştirirken başlangıçta yüklü işlemleriniz olmasa bile çok fazla kontrol yada yüksek hacimli arkaplan resimleri kullanıldığında parça parça erkrana gelen kontroller yada kilitlenmeler kaçınılmaz olabiliyor.

Bu gibi durumlarda çözüm olarak Applicationuygulama Classsınıfının Idle Eventolay ikullanılabilir. Bu olay yardımı ile bir işlemin bittiği ve bekleme durumuna geçtiği anlayabiliriz.

Örnekte;
FormOpacitysaydamsızlık özellliği 0 yapılarak gizlenir. (Uygulamayı simüle etmek için Load olayında 3000 milisaniye bekleme sözkonusu) İşlem bittiğinde ise Opacity özelliği ile Form gösterilir.

 

Burada dikkat edilmesi gereken en önemli husus, görevi bittiğinde Idle olayının kaldırılmasıdetach gerekiyor.

Application Idle

Aksi takdirde olay sürekli tetiklenecektir.

Application Idle

Sql Server Management Studio’dan Kod Çalma

Hepimiz zaman zaman standart Sql komutları (select insert gibi) dışında da kodlar yazmak durumda kalabiliyoruz. Çok tekrarlanmayan kodlar maalesef hafızamızda kalmıyor. Bu gibi durumlarda SSMS dan yardım almakta bir sakınca görmüyorum 🙂

Bu yazıda bildiğim 4 yöntemi sizlerle paylaşacağım.

1 – Template Explorer

View -> Template Explorer ile açılan pencere içinde birçok işlevin templateşablon kodlarına ulaşabilirsiniz. Çift tıkladığımızda kodlar ekrana gelecektir. Kolaylık olması için Ctrl+Shift+M kısa yolu ile template içindeki değişkenlere erişebilir ve değiştirebilirsiniz.

Sql Cheat 1

2 – Script As

Object Explorer içindeki sınıflere sağ tıklama ile erişebileceğiniz Script As menusu ile sql kodlarını elde edebilirsiniz.

Sql Cheat 2

3 – Generate Scripts

Yine Object Explorer içinde Database sınıfsine sağ klik ile Tasks -> Generate Scripts… ile açılan sihirbazwizard ile sql kodları oluşturabilirsiniz.

Sql Cheat 3

4 – Script Action

Son olarak işlem yapılabilen pencerelerde bulunan Script düğmesibutton yardımı ile sql kodları da oluşturmak mümkün.

Sql Cheat 4

Umarım yardımı dokunmuştur.

SqlBulkCopy İle Veri Kopyalama

Excel yada benzeri bir kaynaktan elde ettiğimiz yaklaşık bir milyon kayıt içeren bir DataTable olduğunu düşünelim. Bu kayıtları veritabanında ki x bir tabloya nasıl eklerizinsert ?

Tek tek Insert yapmak mı? Bildiğin intihar olur.
DataAdapter ile UpdateGüncelleme yapmak mı? İnanılmaz zahmetli ve gereksiz.(Çalışacağından emin bile değilim)

Biri Bulk Insert mü dedi, işte aradığımız cevap.
Bulk Insert, yüklü miktarda ki verileri herhangi bir tablotable ya performanslı bir şekilde aktarmak için veri katmanında kullanabileceğimiz bir komuttur. Ado.Net teknolojisi SqlBulkCopy (kısaca sbc diyelim) sınıfıclass ile bu işlemi kolaylıkla kullanmamıza olanak verir.
Tabi kullanımı bu kadar kısıtlamamak gerekir. Sbc ile iki farklı sunucu yada aynı sunucu içinde iki farklı tablo da kopyalanabilir.

Örnek

Excel dosyasındaki verileri DataTable nesnesine dolduracağız.  Sonar Sbc ile DataTable içindeki verileri örnek bir tabloya ekleyeceğiz.

Örnek Excel dosyası
Excel

Hedef tablo
Table

Excel dosyasındaki alanlar ile tablo alanlarını bilerek farklı isimlendirdim. Sbc sınıfının bir özelliği de bu gibi durumlarda alanları adresleyebilmesidirmapping.