Tags: , , , , , , , | Categories: Genel Posted by okutbay on 30.03.2010 10:55 | Yorumlar (5)

Bazen iki tarihin arasında geçen süreyi bulmanız gerekir. Bu kişinin şu anki yaşı olabileceği gibi bir işçinin o gün çalıştığı süre de olabilir. C# bize bu konuda yardımcı olmak için TimeSpan tipini sunar. Bu tipi kullanarak iki tarih arasında geçen süreyi farklı şekillerde alabiliriz. Örneğin iki tarih arasında kaç saat olduğunu bulmak istiyorsak TotalHours özelliğini kullanabiliriz. Eğer iki tarih arasında geçen sürenin sadece saat kısmı bizi ilgilendiriyorsa Hours özelliğini kullanabiliriz.

    1 DateTime myStartTime = Convert.ToDateTime("30.03.2010 08:04:00");

    2 DateTime myEndTime = Convert.ToDateTime("30.03.2010 18:02:00");

    3 TimeSpan myWorkingTime = myEndTime - myStartTime;

    4 double myWorkingHours = myWorkingTime.TotalHours;

Bu işi uygulamanız içinde birden çok kullanacaksanız bir method haline getirmek faydalı olacaktır.

    1 public static double GetWorkingHours(DateTime startTime, DateTime endTime)

    2 {

    3     TimeSpan workingTime = endTime - startTime;

    4     double workingHours = workingTime.TotalHours;

    5     return workingHours;

    6 }

 

bu yeni metodu soyle kullanirsiniz.

    1 DateTime myStartTime = Convert.ToDateTime("30.03.2010 08:04:00");

    2 DateTime myEndTime = Convert.ToDateTime("30.03.2010 18:02:00");

    3 double myWorkingHours = GetWorkingHours(myStartTime, myEndTime);

 

Not:Methodun ve kodun aynı classta olduğu varsayılmıştır...

Kolay gelsin...

1 kişi tarafından 1.0 olarak değerlendirildi

  • Currently 1/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , , , , , | Categories: Programlama, SSS (FAQ), Tip Posted by okutbay on 13.11.2009 17:32 | Yorumlar (0)

Clipboard is a windows object. If you want to use clipboard in your .NET framework console applications you must reference `System.Windows.Forms` and mark your main method with `STAThreadAttribute` attribute.

Then you can use this class's methods e.g. Clipboard.SetText("some text to store in the clipboard");

Happy coding.

1 kişi tarafından 2.0 olarak değerlendirildi

  • Currently 2/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , , | Categories: Genel Posted by okutbay on 08.10.2009 16:01 | Yorumlar (0)

According to business rule all footballer name and surname must be capitalized and not longer than 8 chars length.

Very simple to develop. We develop a wrapper method for this job. Seems working fine. Until this morning. Game masters of the http://icanfootball.com noticed that some player names violates this business rule. After my first debuging i found the problem. ToLowerInvariant method is the guilty. No, infact the developer who uses this method is guilty. Because this methods unable to convert "i" to "İ", "ı" to "I" or reverse. This chars specific to Turkish locale and this methods are invariant (means Culture Indepentend and works same as calling ToLower or ToUpper method with CultureInfo.InvariantCulture enum). 

So in my opinion this methods are useless. Please use ToLower or ToUpper method with appropriate culture info.

You can check this sample code.

 

    1 string a = "ı I ş Ş ç Ç ğ Ğ ö Ö ü Ü i İ";

    2 

    3 string b = a.ToLowerInvariant();//b = "ı i ş ş ç ç ğ ğ ö ö ü ü i İ" fails to convert

    4 string d = a.ToUpperInvariant();//c = "ı I Ş Ş Ç Ç Ğ Ğ Ö Ö Ü Ü I İ" fails to convert

    5 

    6 string culture = "tr-TR";

    7 System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo(culture);

    8 

    9 string c = a.ToLower(cultureInfo);//d = "ı ı ş ş ç ç ğ ğ ö ö ü ü i i"

   10 string e = a.ToUpper(cultureInfo);//e = "I I Ş Ş Ç Ç Ğ Ğ Ö Ö Ü Ü İ İ"

 

 

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , , , | Categories: SSS (FAQ), Web Uygulaması Posted by okutbay on 20.08.2009 11:37 | Yorumlar (0)

Sometimes you need to use Http handlers to respond to requests rather than classical asp.net pages. At that times if you want to use session objects you will see that HttpContext.Current.Session is null.

If you want to read session state from you http handler your http handler must implement System.Web.SessionState.IReadOnlySessionState interface. If you want to modify the session state you can implement System.Web.SessionState.IRequiresSessionState.

Sample:

    1 public class Login : IHttpHandler, SessionState.IRequiresSessionState

Happy coding.

3 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , , , , | Categories: Security, Web Uygulaması Posted by okutbay on 18.08.2009 13:51 | Yorumlar (0)

Web uygulamaları Internet üzerinden anonim (kimliği belirsiz) ziyaretçiler tarafından kullanılırlar. Kullanıcılar hakkında bilgi toplamak ya da sadece belirli kaynaklara erişimlerini sağlamak istiyorsak öncelikle onların kim olduğunu belirli bir kaynaktan sorgulayıp, doğru kişi olduklarını onaylamamız gerekir. Bu işleme "Kimliklendirme (Authentication)" denir.

Web uygulamalarında farklı kimliklendirme yöntemleri olsada Internet üzerinden erişilen uygulamalar için uygun olan kimliklendirme yöntemi "Forms" yöntemidir. (Bu noktadan sonra Forms Authentication olarak anılacaktır.)

Forms authentication kullanımını aktif hale getirmek için web uygulamanızın ayar dosyası Web.Config içinde <authentication mode="Forms" /> satırı yer almalıdır.

1 <configuration>
2 <system.web>
3 <authentication mode="Forms"/>
4 </system.web>
5 </configuration>

Aktif edilen Forms authentication için giriş sayfası, varsayılan sayfa, zaman aşımı, çerez adı gibi ayarlar yapılmalıdır. Bu noktada yapılabilecek ayalar bu kadar değildir. Detaylı bilgi için makalenin sonunda yer alan makaleye göz atmanızı öneririm.

1 <authentication mode="Forms">
2 <forms loginUrl="login.aspx"
3 defaultUrl="default.aspx"
4 timeout="30"
5 name=".ASPXAUTHWEBLEBICI"/>
6 </authentication>

Böylece FormsAuthenticationModule sınıfının gerektirdiği asgari ayarları yapmış oluruz. Artık kimliklendirme aşamasını takip eden "Yetkilendirme" (Authorization) aşaması için gerekli ayarları yapmaya geçebiliriz.

Yetkilendirme için web.config dosyamızda authorization elemanını kullanarak UrlAuthorizationModule sınıfını ayarlayabiliriz.

1 <system.web>

2 <authorization>

3 <deny users="?" />

4 </authorization>

5 </system.web>

Uygulamamızın ana ayar dosyasında yapılan bu ayarla birlikte uygulamamıza gelen anonim kullanıcıların kaynaklara erişimi reddedilerek kimliklendirme ayarında belirtilen giriş sayfasına kimliklendirme işlemi için gönderilmeleri sağlanacaktır. Burada soru işareti anonim (kimliksiz) kullanıcıları temsil ederken tüm kullanıcıları temsil etmek için "*" değeri kullanılabilir. Unutulmaması gereken noktalardan biri ise ayar dosyalarının yukarıdan aşağıya doğru işlendiğidir. Örneğin deny satırı üzerine yazacağınız <allow users="*" /> ayarı tüm kullanıcların siteye erişmesi anlamına gelecektir...

Önemli Not: Authentication ayarı sadece uygulamamızın ana klasöründe bulunan web.config dosyasında yapılabilirken authorization ayarı ana klasör veya alt klasörler için oluşturulacak web.config dosyalarında bulundukları klasörü kapsayacak şekilde yapılabilir. Yani uygulamanız anonim erişime açıkken sadece belli bir klasörü yetkili erişim için ayarlayabilirsiniz.

Belirlenen giriş sayfasına gelen kullanıcılar belirlenmiş olan veri kaynağından kimliklerini onayladıktan sonra ilgili kaynağa girmeye yetkiliyseler bu kaynağa erişebilirler. Aksi halde tekrar giriş sayfasına geri gönderilirler ve kaynağa erişmeye yetkili bir kullanıcı bilgisi ise giriş yapmaları beklenir. Bizim senaryomuzda kimlik doğrulamasını geçen tüm kullanıcılar kaynaklara erişmeye yetkilidir. Farklı kişi ya da gruplar için erişim deny ya da allow elemanları users ya da roles öznitelikleri ile kullanılabilir...

Bu noktada bazı kararlar vermeniz gerekecektir. Ama hangi kararları alırsanız alın temelde yapacağınız işlemler aynıdır. Kullanıcı bilgilerini web.config de depolayabilir ya da bir veritabanı tablosu, web servis gibi bir kaynakla kontrol edebilirsiniz. Her halukarda kullanıcı adı ve şifresini kullanıcıdan girmesini isteyeceğiniz bir sayfanız olacaktır. Kullanıcı bilgileri girip, giriş butonuna tıklayacak ve siz arka tarafta hangi mekanizmayı kullanıyor olursanız olun yapacağınız işlem bu kullanıcının varolup olmadığına bakmak, şifresinin uyup uymadığını kontrol etmek, doğru ise siteye girişine izin vermek yanlış ise tekrar giriş sayfasına yönlendirmek olacaktır.

Kısıtlanmış bir kaynağa erişilmek istendiği zaman yapılan ayarlar gereği kullanıcı dönüş adresi ile birlikte login sayfasına yönlendirilecektir.

Referanslar:

Explained: Forms Authentication in ASP.NET 2.0 (patterns & practices Developer Center)

How To: Use Forms Authentication with SQL Server in ASP.NET 2.0
http://msdn.microsoft.com/en-us/library/ms998317.aspx

How To: Use Membership in ASP.NET 2.0
http://msdn.microsoft.com/en-us/library/ms998347.aspx

How To: Use Role Manager in ASP.NET 2.0
http://msdn.microsoft.com/en-us/library/ms998314.aspx

1 kişi tarafından 3.0 olarak değerlendirildi

  • Currently 3/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , , , | Categories: Programlama Posted by okutbay on 23.09.2007 14:01 | Yorumlar (0)
Extensible Application Markup Language - XAML (zamıl) dosyaları XML dosyalarıdır. Temel olarak "Canvas" nesnesi ve bu nesne içine yerleştirilmiş diğer kanvas, şekil, imaj, medya gibi nesnelerden ibarettir. Text tabanlı olduğundan herhangi bir metin editörü (notepad vs.) ile değişiklik yapabilirsiniz. Yazmak zor geliyorsa bir Microsoft Expression Blend veya benzeri bir uygulama ile XAML dosyalarınızı oluşturabilir, değiştirebilirsiniz.

Esasen XAML dosyaları silverlight teknolosine özel dosyalar değildir. .NET Framework 3.0 ile birlikte gelen yeni teknolojilerin temelini oluşturan çok daha sofistike bir yazılım teknolojisidir. Microsoft, .NET Framework 3.0 ile birlikte masaüstü uygulamalarının daha gelişmiş görsel özellikler sunabilmesi için "Windows Presentation Foundation" ı sunmuştur. Bu görsellik geliştirmelerinin web uygulamalarına sirayeti silverlight teknolojisinin geliştirilmesi şeklinde meydana gelmiştir. Bu nedenle bir yok yeni .NET teknolojisinin merkezinde yer alan .XAML dosyaları silverlight teknolojisi için de önemli bir yerde bulunmaktadır.

Not: XAML dosyaları varsayılan olarak "Windows Presentation Foundation Host" uygulaması ile açılmak üzere ilişkilendirilmiştir.


Basit anlamda boş bir XAML dosyası şöyle görünecektir.

<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

</Canvas>


.XAML dosyasında tanımlamış olduğumuz bu kanvas içine yerleştirilecek diğer nesneler ile birlikte web sayfamız üzerinde hazıladğımız div içine eklenecektir.

Kanvas üzerine uygulayabileceğimiz nesneler şunlardır: Canvas, Ellipse, Rectangle, Line, Polyline, Polygon, Path, Image, TextBlock, MediaElement

Tabi yapılabilecekler bu kadarla sınırlı değil. Bu nesnelere renk, sınır çizgisi, en, boy, konum, opaklık vb. ayarlarının yanı sıra farklı fırça uygulamaları ile değişik görünümler kazandırabiliriz. Daha heyacan verici olan ise oluşturduğumuz bu nesnelerin olayları için olay kavrayıcı javascript metodları geliştirebilir ve silverlight uygulamamızı etkileşimli bir hale getirebiliriz.

Görüldüğü üzere Silverlight teknolojisi aslında .XAML ve Javascript teknolojilerini kullanarak bizim için daha zengin web uygulamaları geliştirme olanağı sunuyor.

Klavyeler şen ola...

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5