Kullanıcıya Bilgilendirme Mesajı Gösterme

09 Haziran 2011 Perşembe

Bu yazımızda Asp.net te kullanıcıyı bilgilendirme mesajı yapacaz. Toastmessage adlı hazır bir Jquery eklentisi kullanacaz. Fakat konuda önemli olan kısım ne kullandığımız değil nasıl kullandığımız olacak.Öncelikle seneryomuzu inceleyelim:
bu uyarı mesajlarını kullanıcı bir işlem yaptığında çıkacak, ve bu uyarının çeşidi onay,uyarı,hata,bilgilendirme olabilir. Her bir uyarı türü için kodumuz değişecek ve ayrıca bu uyarı mesajlarının türü genelde aspx.cs kısmında oluşan sonuca göre belli olacak.
Durumu genel olarak gözden geçirdikten sonra öncelikle toastmessage a ait dosyaları projemize ekliyoruz.


MVC-3(Razor) Telerik Kullanımına Giriş

30 Nisan 2011 Cumartesi

Telerik componentleri Ajax tabanlı çalışan ve şunu yaspasalarda kullansak dediğimiz J bir çok yapan bir component seti dir. ASP.NET AJAX,Mono, Silverlight,WPF gibi birçok ortam için componentleri bulunmaktasır. Ayrıca resmi sitede bulunan Demolar, yardımlar ve forum da neredeyse tüm sorunlarınız için çözüm bulabiliyorsunuz. Ortalama fiyatları 1000$ civarında olan bu componentler arasında MVC ücretsiz.MVC componentleri aynı zamanda Open-Source.
-Anlatım MVC 3.0 Razor engine için yapılmıştır
BU makalemizde bu componentleri kullanmayı göreceğiz.
http://www.telerik.com/download.aspx adresinden öncelikle componentlerimizi indiriyoruz ve bilgisayarımıza kuruyoruz.
 ardından MVC projemizi açıp dll lerimizi projemize import ediyoruz (C:\Program Files\Telerik\Extensions for ASP.NET MVC Q1 2011\Binaries içerisinde)
Telerik.Web.MVC dll ini referans olarak ekledikten sonra web.config içerisine <systrem.Web><pages><namespaces> altına aşağıdaki satırı ekleyin:
      <add namespace="Telerik.Web.Mvc.UI"/>

 
 
Ardından C:\Program Files\Telerik\Extensions for ASP.NET MVC Q1 2011\Scripts içerisindeki tüm scriptleri projenizin Script klasörüne alın.
MVC componentlerinin tüm sayfalarımızda çalışması için scriptleri register etmemiz gerek bunu tek seferde yapmak için _Layout içerisine aşağıdaki kodu ekliyoruz
öncelikle sayfa başına:
@using Telerik.Web.Mvc.UI

sayfa içerisine ASP.Net teki scriptmanager ile benzer işlevi gören aşağıdaki kodu ekliyoruz
      @(Html.Telerik().ScriptRegistrar())

Ardından kullanacağımız css leri projemize ekliyoruz. Kod kısmı aşağıdaki gibi ayrıca Content klasöru içerisine ilgili css ve image leri eklemeniz gerekmektedir.
@(Html.Telerik().StyleSheetRegistrar().DefaultGroup(group => group.Add("telerik.common.css").Add("telerik.vista.css")))

artık view kısmında çalışmalara başlayabiliriz.
Yine sayfa başına aşağıki kodu ekleyin
@using Telerik.Web.Mvc.UI

artık projemize neler ekleyebiliriz:
-Calendar
-combobox
-DatePicker
-DateTimePicker
-Editor
-Grid
-Menu
-Numeric TextBox
-PanelBar
-Slider
-Splitter
-TimePicker
-TabStrip
-TreeView
-Upload
-Window

örnek olarak bir adet editör ekleyelim:
    @(Html.Telerik().Editor().Name("reEditor").Value(@<text>
    <p>Tahsin Sevinç<br/>Razor Engine ve Telerik MVC component</p>
    </text>)
    )


Kod Yazmak Yazılımın Neresinde

14 Nisan 2011 Perşembe

 

Bir kılıç ustasının eline en iyi kılıçlardan birini verirler. Ustanın gözünü kapatıp savaş meydanına sürerler. Kılış ustası hafif yaralanır ama dost düşman demeden çevresinde kim var kim yok kesip atmıştır…
Bir projeye başlarken ne yapacağını bilmemek gözleri bağlı kılıç ustasının savaş meydanında savaşmasına benzer. Kod yazılır, yeni ihtimaller doğar kod değiştirilir, farklı sonuçlar görülür baştan kodlanır tekrar en başa tekrar en başa… bu döngü uzun süre bu şekilde devam eder ta ki proje son şeklini alana kadar.
Amatör geliştirmede de yaşanan en büyük sıkıntı belki de bu. Bilgisizlikten ziyade yapılacak işin araştırılmamış olmaması. Bu yönden bakıldığında kod yazmak yazılımın neresinde acaba? En önemli yerinde mi yoksa en son kısmında mı?
Bir programlama diline baktığımızda yazılan kodlar bellidir. Basitçe örneklemek gerekirse Bir otomasyon projesinde veri tabanından okuma yazma güncelleme silme işlemi dışında yapılan iş çok azdır. Bu işlemleri biraz kendini ilerletmiş birisi rahatça yapabildiğine göre proje geliştirmeyi engelleyen ne? Elbette ki iş akışının tasarlanamamasıdır.
Bir proje ele alındığında konu ile ilgili araştırma yapılmalı, veriler kağıda dökülmeli, ihtimaller düşünülmeli, benzer uygulamalar incelenip art ve eksi yönleri çıkarılmalı. Son olarak analiz yapılıp ortaya bir model dökülmeli. Model ne kadar iyi ve esnek tasarlanırsa ileriki zamanlarda geliştirilmesi de o kadar olacaktır.
İyi bir modelleme işleminden sonra kod yazmaya geçilebilir fakat nasıl kod yazmak?
-Kod yazarken hata kontrolü yapılmalı try-catch blokları kullanılmalı. Bu durum istisnai durumlarda uygulamanızın istem dışı davranmasını engelleyecektir. Ayrıca hataların loglanması kontrolü tamamen geliştiriciye verecektir.
-Kodlama notasyonunuz olsun. Belli bir kodlama notasyonuna bağlı kalmanız hem projenizin ileriki zamanlarda okunabilirlik ve geliştirile bilirliği açısından hem de kullandığınız metotları tekrar kullanmak istediğinizde rahat kullanmanız açısından işinizi çok kolaylaştıracaktır. Kodlama notasyonu olarak Macar notasyonu gibi sık kullanılan bir notasyon tercih etmeniz sizi hem de geliştirecektir.
-Object-Oriented Mantığı ile kod yazın. Nesne yönelimli programlama ile kod tekrarlarından kurtulur hem de iş öbeklerini belirleyip projenizin daha esnek ve modüler olmasını sağlarsınız. Fakat Object Oriented ı sadece public class tan ibaret kullanırsanız bu projenizi sadece fonksiyon dosyalarına bölmenizi sağlar Nesne yönelimli yazılım tasarımlarını (Object Oriented Design)kesinlikle inceleyin ve kullanın.
-Kodlarınız içinde sıkça yorum cümlelerine ve summarylere yer verin bunlar gelişen projenizde neyi niçin yazdığınızı hatırlamanızı sağlayacaktır.
-Performans a özen gösterin. Yazdığınız kodu en iyi performansla nasıl çalıştırabileceğinizi düşünün. Örneğin veri tabanına defalarca gitmek yerine tek seferde datatable a atabilirsiniz. Ama Verileri DataTable a yüklerken fazla veri yüklememek için mümkün olduğunca parametrik metot yazmalısınız.
-Kullandığınız dil ve framework ün özelliklerini bilin. Bu size avantaj ve zaman kazandıracaktır.
-Hamallık ile Profesyonelliği karıştırmayın. Gereksiz kod yazmak hamallıktır. Ama fazladan size fayda sağlayacak kodu yazmak profesyonelliktir.
-Projenizde kullanacağınız component setleri, raporlama dll lerini inceleyin hangisinden daha fazla verim almışsanız onu kullanın.
-Bir kodu bir kez yazın ama tam yazın. Koda tekrar tekrar geri dönmek size belli bir süre çıkmaza sürükleyecektir. Bundan dolayı kodunuzu yazarken her olayı düşünerek yazın ve bir kez yazın.
Bu maddeler arttırılabilir fakat genel olarak özetlemek gerekirse aklıma gelenler bunlar.
Dikkat ederseniz daha kod yazma aşamasına gelmedik bahsedilen şeyler proje ihtiyaçlarının belirlenmesi, modelleme, kod nasıl yazılmalı nelere dikkat edilmeli gibi şeyler… Bunları başardıktan sonra kod yazma aşamasına geçilebilir.


MVC yi Tanıma ve Proje Oluşturma

06 Nisan 2011 Çarşamba

PROJE OLUŞTURMA ve TANIMA

Öncelikle Visual Studio yu açıp projemizi oluşturuyoruz..

Ardından karsınıza bu ekran çıkacak burada test projesi oluşturmak istermisiniz diye soruyor. Ben olusturmuyorum.

Şimdi proje dosyalarına göz atalım.



 

Otomatik olarak oluşan klasörler bunlar. Şimdi bu klasörleri inceleyelim:
Content: Css ve resimler gibi tasarımla ilgili dosyalar bulunur,
Scripts: Javascript dosyaları bulunur.
Views: Buradaki dosya ve klasörler kullanıcıya gösterilen son dosyalardır.
Models: Veritabanı ile baglantı, veritabanı işlemi yapan sınıflar burada tutulur. LınqToSql model dosyası, EntityFramework dosyası gibi dosyalar burada bulunur.
Controllers: Viewlar ile Modeller arasında köprü işlemleri burada olur. Yani modelden alınan veri işlenip kullancıya gösterilecek sekle getirilir. Controller adları view da klasör adı olarak eklenir. Örneğin HomeController’a ait sayfalar Views klasörü altında Home Klasörü içerisinde bulunur.
Global.asax: Genellikle Permalink işlemleri için kullanıyoruz.
View: Views klasöründe bulunan kullanıcıya gösterilen sayfalardır.
Action: Son kullanıcıdan gelen istek doğrultusunda hangi işlemi yapacağını belirtilen controller sınıfında yer alan metodlara verilen isimdir. Metod dediğimize göre bir değer döndürmelidir. ActionResult 8 farklı değer döndürür. Bunlardan ençok kullanılan View() ve RedirectToAction dır. return View() Action la ilgili View i, RedirectToAction ise farklı bir view a yönlenmemizi sağlar.
ViewData["name"]: Contoller ile View arasında muhakkak iletişim kurmamız gerekecek. Bu veri iletişimini return View()içerisinden sağlayacağımız gibi ViewData ile de sağlayabiliriz. ViewData ile genelde tekil veriler veya View ın bir kısmını ilgilendiren veriler taşınır. Bunların örneklerini ileriki zamanlarda sıkça göreceğiz.


Yazılımcı Karinca

27 Mart 2011 Pazar

Eski bir hikaye arşivimde denk geldi paylaşmak istedim:

 


FireFox 4 Çılgınlığı

24 Mart 2011 Perşembe

Diyecek fazla bir şey yok, indirilme sayısı herşeyi ifade ediyor.
http://glow.mozilla.org/

 

İlk izlenimlerim
Tasarım İE9 a benziyor
hız çok iyi
Eklenti sorunu olabilir


Kendime Not-1

06 Mart 2011 Pazar

Microsoft a ait open source projeler. Projeleri kodları yapıları kesinlikle incelemek gerek

http://www.microsoft.com/opensource/directory.aspx


Nesne Yönelimli Tasarımı Nasıl Açıklarım

05 Mart 2011 Cumartesi

Temmuz 2010’da Codeproject tarafından ödül almış bir makaledir.

Karım Farhana, kariyerine yazılım geliştirici olarak tekrar başlamak istiyor (kariyerine yazılım geliştirici olarak başlamıştı, ilk çocuğumuzun doğumu nedeni ile fazla ilerleyememişti) ve bugünlerde tecrübeli bir yazılım tasarımcısı ve geliştirici olarak ona Nesne Yönelimli Tasarımı öğretmeye çalışıyorum.
Yazılım uzmanlığımın ilk günlerinden itibaren, teknik bir meselenin ne kadar zor göründüğünü önemsememeye dikkat ederim,  konuşma diline uygun biçimde açıklama, real hayat perspertifinden ve tartışmalarından olursa bu her zaman daha kolay olacaktır. Aynen bizim Nesne Yönelimli Tasarım konusunda yaptığımız verimli konuşma gibi, düşündüm ki bunu sizinle paylaşabilirim, belki birinin Nesne Yönelimli Tasarımı öğrenmesini için ilginç bir taktik olabilir.
Nesne yönelimli tasarımın bizim konuşmamızda nasıl yer aldığını izleyin.

NESNE YÖNELİMLİ TASARIMA GİRİŞ 

Shubho:
Hayatım, hadi Nesne yönelimli tasarımı öğrenmeye başlayalım, Nesne Yönelim ilkelerini biliyorsun, değilmi?

Farhana: Yani, Kapsülleme, Kalıtım ve Çok biçimlilikten bahsediyorsun değilmi? Evet, bu ilkeleri biliyorum.


Ustam! Sana Güvenmediğim için Beni Affet

27 Şubat 2011 Pazar

"Gün gelecek Allah’a bana yaşattığı bu sıkıntılar için şükredeceğimi biliyorum" demişti bir arkadaşım. Belki de hayatının en zor günlerini yaşıyordu. Zorlukların insana ne kadar büyük dersler verdiğini uzun uzun konuşmuştuk. Bir acının öğrettiğini bin kahkahanın öğretemeyeceği üzerine birçok örnekler vermiştik o konuşmamızda.

Aradan iki yıla yakın bir zaman geçince arkadaşımın haklı çıktığını gördük.
O günlerin acı görünen olaylarının, kendisine ne kadar büyük kapılar açtığını gördükçe "verdiğin acılar için sana şükürler olsun Allah’ım!" demeye başladı.

Gündüzleri fırsat buldukça bir araya geldiğimiz arkadaşıma o günlerde aşağıdaki hikayeyi yollamıştım.

Hikayemizin Başlıyor ;

Yaşlı kadın, bir antika dükkanından aldığı yüzyıllık fincanı özenle salon vitrinine yerleştirdi. Fincanın biçimi, üzerindeki işlemeler, renkler onun bir sanat eseri olduğunu söylüyordu. Ödediği fiyatı hatırladı; hayır, hiç de pahalıya almamıştı. Hayranlıkla fincanı seyretmeye devam etti. Derken, birden fincan dile geldi ve kadına şöyle dedi;


ENTERPRISE LIBRARY

21 Şubat 2011 Pazartesi

Son 20 gündür yoğun bir tecrübe dönemi yaşıyorum bu yazıya başlamadan önce Telerik Components, team foundation server, Enterprise Library, Elektronik Belge Yönetim Sistemi Uygulamaları gibi konular arasında gidip gelmeler sonucu Enterprise Library de karar kıldım.

Büyük ve orta dereceli proje geliştirenler için muhakkak bazı işlemleri sık sık projelerimizde yapmışızdır. Hatta firma bazında çalışanlar bilirler ki bu konuya çözüm bulmak için kendi frameworklerini oluşturur firmalar. Enterprise Library bu noktada devreye giriyor ve diyor ki “sizin sık kullandığınız şeyleri biz inceledik, araştırdık ve bu işleri yapan bir kütüphane oluşturduk buyurun kullanın”.Ayırıca açık kaynak kodlu olduğu için istediğiniz gibi geliştiebiliyorsunuz.

Enterprise Library 5.0 9 katmandan oluşuyor
                -Caching Application Block (Önbellek işlemleri)
                -Cryptography Application Block (Şifreleme)
                -Data Access Application Block (Veri Erişimi)
                -Exception Handling Application Block (Hata Yönetimi)
                -Logging Application Block (Loglama)
                -Policy Injection Application Block (Katmanlar arası iletişim)
                -Securtiy Application Block (Güvenlik)
                -Validation Application Block (Doğrulama)
                -Unity Application Block()

DATA ACCESS APPLICATION BLOCK
-Farklı veritabanlarına bağlantı desteği
-Hazır veri katmanı yapısı
-Kolay Strored Procedure çağırma
-Hızlı sonuç almak
-Microsoft SQLServer ilişkili özel nesneler.

CACHING APPLICATION BLOCK
-Uygulamamızın ön bellek yönetimini kontrol etmemizi sağlar. Önbelleği fazla kullanan projelerde büyük performans kazançları sağlayabiliriz.

CRYPTOGRAPHY APPLICATION BLOCK
-Şifreleme işlemlerini yapmamızı sağlar. Hash ve simetrik şifre üretip çözme de ilgili katmandır

EXCEPTION HANDLING APPLICATION BLOCK
-Hata yönetimi yapılandırmasını etkin ve verimli kullanmamızı sağlar.

LOGGING APPLICATION BLOCK
-Standart loglama işlemlerinin yapıldığı katmandır.

SECURITY APPLICATION BLOCK
-
Uygulamamızda kullanıcıları yetkilendirme, sınırlama,veri güvenliği gibi işlerin yapıldıgı classlar bulunur

VALİDATİON APPLİCATION BLOCK
Veri Doğrulama işlemlerinin yapıldığı kısımdır.

POLICY INJECTION APPLICATIoN BLOCK
Birlik inşa kesme mekanizması ile güçlendirilen bu uygulama bloğu, istisna işleme, önbelleğe alma, kayıt ve doğrulama, bir sistem genelinde gibi ortak özellikleri, uygulanması düzene durdurma politikaları uygulamak için kullanılabilir.

UNITY APPLICATION BLOCK
Bizim Uygulama config üzerinde (web ise web.config, windows ise app.config) tanımladığımız arayüzlerin ve o arayüzlere karşılık gelen sınıfların çalışma anında bir kutuya yüklenmesini ve daha sonra ihtiyaç halinde ilgili arayüz için yüklenen sınıfın istenen kişiye verilmesini sağlar. Yani yazılımcı ya da müşteri, uygulamanın konfigurasyon dosyasına sizin belirlediğiniz arayüzünüze karşılık gelecek olan sınıfın tanımını yapıyor ve buna göre o arayüz çağrıldığında size o arayüz için kullanıcının tanımladığı sınıfın örneğini yaratıp verebiliyor.

 

Enterprise Lıbrary'i indirmek için tıklayın


1 2 3 4 (Toplam 40 yazi bulunmaktadır)