TimeZoneInfo İle Tarih Dönüştürme İşlemi ve Yaz Saati Uygulaması

C# `da TimeZoneInfo sınıfı altındaki ConvertTimeToUtc methodu ile kullanıcıdan gelen tarihi UTC biçimine dönüştürürken TimeZoneInfo altındaki AdjustmentRule sınıfına dikkat etmek gerekli.

Örneğin; UTC +3 olan bir ülkenin belli tarihler arasında uyguladığı (eskiden bizim ülkemizde de olduğu gibi) saatleri geri veya ileri alma durumlarını tarih aralığı ve ne kadar saat ileri ya da geri alınacağı bilgisi AdjustmentRule sınıfında saklanıyor.

ConvertTimeToUtc ya da benzer diğer methodları kullanırken sistem otomatik olarak AdjustmentRule`da yer alan verilere göre tarihi dönüştürme işlemini yapıyor. Test yaparken çıkan değer bu sebeple ilgili zaman diliminin tanımındakine göre farklı olabiliyor, yani verdiğiniz tarihe +3 ekleneceğini beklerken +2 eklenebiliyor.

Web Service ve Generic Handler Dosyalarında Session Kullanımı

Bir çok kez ihtiyacım olan ve her seferinde de unuttuğum bir konuyu buraya yazayım dedim, böylece hem elimin altında olsun hem de başka arayanlar olursa yardımı dokunsun istedim; Web Service (.asmx) ve Generic Handler (.ashx) dosyalarında Session kullanımı.

Konuya dönecek olursak, Web Service`lerde Session kullanabilmek için yapmamız gerekenler şöyle;

Yeni bir Web Service dosyası oluşturduğunuzda, dosyanızda aşağıdaki gibi “Hello World” adında hazır bir fonksiyon yer alır.

<WebMethod()> _
Public Function HelloWorld() As String
Return “Hello World”
End Function

Bu fonksiyon içerisinde Session kullanabilmek için tek yapmanız gereken şöyle; “<WebMethod()>_” yazan yeri “<WebMethod(EnableSession:=True)> _” veya “<WebMethod(True)> _” şeklinde değiştirmeniz yeterli olacaktır. Bu değişikliği Web Service dosyanızda yer alan ve içerisinde Session kullanmak istediğiniz tüm fonksiyonlara uygulamanız gerekli.

Generic Handler dosyalarında ise durum biraz daha farklı. Burada fonksiyonlara değil tüm Class bazında Session kullanımını aktif yapıyoruz. O da şu şekilde yapılıyor;

Yeni bir Generic Handler dosyası oluşturduğunuzda, dosyanız aşağıdaki gibi bir yapıya sahip olur;

Public Class Handler : Implements IHttpHandler

Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
context.Response.ContentType = “text/plain”
context.Response.Write(“Hello World”)
End Sub

Generic Handler dosyanızda Session kullanabilmek için yapmanız gereken ise şöyle; “Public Class Handler : Implements IHttpHandler” yazan yeri “Public Class Handler : Implements IHttpHandler, IRequiresSessionState” olarak değiştirerek IRequiresSessionState`i dosyanıza implement etmeniz yeterli olacaktır.

Bu şekilde Web Service ve Generic Handler dosyalarımızda Session kullanımını etkinleştirmiş olduk, umarım yardımı dokunur.

DataTable İle Sıralama İşlemi

Bazen veritabanından aldığımız bir veri kümesini tekrar sıralama gereği duyabiliyoruz. Bu işlem için çok farklı yöntemler uygulamışlığım, değişik taklalar atmışlığım görülmüştür, şahitlerim var :)

Çok sık ihtiyacım olmadığı için fazla üstüne düşmediğim bir konuydu fakat geçen gün tekrar ihtiyacım oldu ve daha önceki seferlerde de önüme gelen karışık, hatalı onlarca yöntemden sonra nihayetinde en pratiğini bulabildim.

Hem bu yöntemi her seferinde arayıp bulmakla uğraşmamak hem de ihtiyaç duyabileceklere de yardımcı olması amacıyla burada paylaşmak istiyorum.

Elimizde veritabanından aldığımız bir tablo (DataTable) olduğunu varsayın, bu tabloyu istediğimiz bir kolona göre tekrardan sıralayalım;

Dim DT As System.Data.DataTable = geriyeDataTableDöndürenFonksiyon()
Dim dv As System.Data.DataView =DT.DefaultView
dv.Sort = “KolonAdı DESC”
DT = dv.ToTable

İşte bu kadar basit. İşlem sonunda DT ismini verdiğim DataTable`ım dv.Sort = “KolonAdı Desc” eşitliğinde belirttiğim koşula göre sıralanmış olarak kullanıma hazır durumda.

Hepinize kolay gelsin.

Ineta Next İstanbul 2. Gün İzlenimleri

ineta next istanbul

Merhaba, dün olduğu gibi bugünde önce etkinlik programını yazarak başlayalım yazımıza.

13 AralıkMicrosoft Ofisi
11.00-12.30 ASP.NET 4.0 Yenilikleri – Uğur Umutluoğlu (nedirtv.com)
14.30-15.45 Workflow Foundation 4.0 – Burak Selim Şenyurt (csharpnedir.com)
16.00-17.00 C# 4.0 Yenilikleri – Erkan Balaban (ceviz.net)
17.15-18.00 IE 8 Toolbar Geliştirme – Barış Kanlıca (yazgelistir.com)

Etkinliğe ait fotoğraflar burada.

Asp.Net 4.0

Öncelikle şunu belirtmek istiyorum, geçtiğimiz Nisan ayında gerçekleştirilen ineta etkinliğinde de Asp.Net 4.0 ile ilgili bir oturum yer alıyordu ve o gün anlatılanlar ile neredeyse aynı içeriğe sahipti bugünki oturumda. Yani Nisan ayında ki etkinliğe katılıpta bugün katılamayanlar varsa Asp.Net 4.0 oturumu açısından fazla birşey kaçırmış sayılmazlar.

ClientIdMode

Konumuza dönecek olursak, öncelikle ClientIdMode`dan bahsedelim, mevcut Asp.Net projelerimizde html çıktımıza bizim kontrolümüz dışında müdaheleler oluyordu şöyleki; bir label`a “lblMetin” diye bir ID tanımladığımızda Html çıktısında içinde bulunduğu kontrole bağlı olarak en basit haliyle label`ımızın ID`si şuna benzer bir hal alıyordu; “ctl00_lblMetin“. Bu label`ımız bir repeater`ın içinde olsaydı alacağı ID dahada karışık olacaktı.

Bu durum bir kaç olumsuz sonuca sebep oluyor; birincisi, javascript ile elementlerimize erişmeye çalıştığımızda bizim daha önceden verdiğimiz ID`ler ile erişme şansımızın olmaması. İkincisi ise arama motorları açısından olumsuz sonuçlar doğruması, gereğinden fazla html kod barındırdığı için içerisinde.

ClientIdMode özelliği bu konuda bize bir kaç farklı sçenek sunuyor. Bunlardan “Static” modu seçersek, kontrole verdiğimiz ID html çıktısında da aynı şekilde kullanılacaktır. Yani “lblMetinID`si atadığımız bir label kontrolünün html çıktısında ki ID`si yine “lblMetin” olacaktır.

Bu kullanım esnasında dikkat etmeniz gereken bir durum var, bildiğiniz üzere ID`ler bulunduğu sayfada tek olmalıdır aksi halde çakışırlar ve yazdığımız kod hata verebilir veya sayfamız hiç açılmayabilir. Bu yüzden web sitenizi hazırlarken MasterPage ya da UserControl`ler kullanıyorsanız, bunların içerisinde tanımladığınız ID`ler tanımlayacağınız diğer ID`lerden mutlaka farklı olmalıdır.

ineta next istanbul

Custom Cache Provider

Asp.Net 4.0 ile birlikte gelen bir diğer özellik ise Custom Cache Provider. Kısaca anlatmak gerekirse bu özellik sayesinde web sitenizde istediğiniz bir sayfayı veya veriyi belirli bir süre boyunca, sunucuda ki Disk`de, Ram`de ya da farklı bir sunucuda saklayabiliyorsunuz. Yazacağınız kendi kodlarınızla saklayacağınız verilerin, okunması, yazılması, güncellenmesi gibi işlemleri rahatça kontrol edebiliyorsunuz.

Custom Cache Provider özelliği sayesinde, çok sık değişmeyen, büyük çaplı ve sık sık talep olan verileri her seferinde veritabanından çekerek sunucuya yük bindireceğinize ilk talep edildiğinde kendi belirleyeceğiniz şekilde ve yerde saklayıp, her istek geldiğinde oradan okuyabilirsiniz.

Auto-Start Web Applications

IIS üzerinde barındırdığımız web uygulamalarımız ziyaretçilerden ilk talep geldiği anda derlenip ziyaretçiye gönderilirler. Bundan sonra uygulamamızda bir değişiklik yapmadıkça veya IIS yeniden başlatılmadıkça tekrar derleme yapılmaz ve diğer ziyaretçiler web uygulamamızı ziyaret ettiklerinde ilk ziyaretçiye göre daha çabuk erişirler.

Derlenme süresi, uygulamanın büyüklüğüne, sunucunun özelliklerine ya da  IIS`in o anki durumu gibi bir çok etkenden dolayı uzun sürebilmekte. Bu da ilk ziyaretçinin bazen çok fazla beklemesine ya da beklemeden uygulamamızdan ayrılmasına sebep olabilmekte. Bu durumun önüne geçmek için geliştirilen bu Auto-Start Web Applications özelliği sayesinde IIS yeniden başlatıldığı anda otomatik olarak ilk talebi kendisi uygulamamıza ileterek derlenmesini sağlamakta. Böylece gelen ilk ziyaretçi derleme işlemi için beklemek zorunda kalmayacak.

ineta next istanbul

Response.RedirectPermanent()

Web uygulamalarımızda sayfalar arası yönlendirme yaparken kullandığımız Response.Redirect() komutu sunucuya HTTP 302 (Temporary Redirect) cevabını gönderiyor. Buda arama motorları açısından kötü bir sonuç doğurmaktaymış. Çünki arama motoru gönderildiği sayfada geçici olarak bulunduğunu anlıyormuş.

Bu durumun önüne geçmek için Response.RedirectPermanent() komutu geliyor Asp.Net 4.0 ile birlikte. Response.RedirectPermanent() komutu Response.Redirect() komutunun aksine sunucuya HTTP 301 (Moved Permanently) cevabını gönderiyor yani kalıcı olarak yönlendirildiği bilgisi verilmiş oluyor arama motorlarına.

ViewStateMode

Şuan ViewState özelliği ya sayfanın tamamında veya sadece bir tane kontrol için kapatılabiliyor. Tam tersi bir durum geçerli değil maalesef. Yani sayfanın tamamında ViewState özelliği kapalı olarak ayarlanmış ise siz istediğiniz bir tane kontrol için ViewState özelliğini aktif hale getiremiyorsunuz. Asp.Net 4.0 ile gelen bu ViewStateMode özelliği sayesinde bu sorunlar tamamen ortadan kalkıyor.

URL Routing (URL Yönlendirme)

Bir önceki gün gerçekleştirilen etkinlikte Asp.Net MVC oturumunda bahsedilen bu özellik Asp.Net 4.0 ile birlikte Web Form`lar içinde kullanılabilir hale geliyor. Asp.Net MVC`de olduğu gibi burada da önce global.asax dosyası içerisinde URL Routing kurallarını tanımlıyorsunuz.

Asp.Net 4.0 ile gelen diğer bazı özellikler ise, Grafik Chart kontrolü, FormView`in HTML çıktısında tablo oluşturmasını engelleyebilme olarak sayabilirim sanırım.

Workflow Foundation 4.0 oturumuna katılmadığım için o konu hakkında yazamıyorum malesef. Fakat konu ile ilgili bilgi almak isterseniz Burak Selim Şenyurt hocamızın kişisel blogunda veya makalelerini yayınladığı web sitesinde bu konuda ki yazılarını bulabilirsiniz.

C# 4.0 konusunda ise aklımda kalan dinamik değişken tanımlama (Dynamic Type) ve opsiyonel parametre (Optional Parameters) özellikleri oldu.

IE 8 Toolbar Geliştirme oturumunda ise aslında açık kaynaklı bir framework`den bahsedildi; SpicIE. SpicIE sayesinde IE 7 ve IE 8 için kendinize özel toolbar`lar geliştirebiliyorsunuz. Çalışmanızı da tamamen C# veya VB ile yazabiliyorsunuz. SpicIE framework 2.0, 3.0 ve 3.5 desteğine sahip.

Evet yeterince uzun bir yazı oldu sanırım :) daha fazla uzatmayayım artık. Aklıma gelmeyen özellikler varsa siz yorumlarınızda belirtirseniz sevinirim,  sağlıcakla kalın.

Ineta Next İstanbul 1. Gün İzlenimleri

Öncelikle ilk gün programını tekrar hatırlayalım ardından yazımıza geçebiliriz.

10.00-11.00 Silverlight 4 – Daron Yöndem (yazgelistir.com)
11.00-12.00 ASP.NET MVC 2 – Oğuz Yağmur (csharpnedir.com)
14.00-15.00 IIS Media Services – Muammer Benzeş (birliktegelistir.com)
15.15-16.15 Visual Basic 10 Yenilikleri – Daron Yöndem (yazgelistir.com)

Silverlight 4

Silverlight 4`de en göze batan yeniliklerden birisi tarayıcıdan ve işletim sisteminden bağımsız olarak masa üstü uygulaması olarak çalışması sırasında, sıradan herhangi bir masa üstü uygulaması gibi davranabilmesi. Fakat bunun için uygulamanın “trusted mode” denilen güvenilir modda çalışması gerekiyor. Bu işlem için kurulum öncesinde diğer program yüklemeleri esnasında çıkan güvenlik uyarısına onay vermeniz yeterlidir. Bu sayede uygulamanız işletim sisteminin verdiği izinler dahilinde Belgelerim, Resimlerim gibi ortak dizinlere ulaşabilir ve işlem yapabilirler.

Silverlight 4 ile geliştirdiğiniz uygulamanızda ayrıca tarayıcı dışında kullanırken sürükle bırak (drag & drop) desteğide geliyor. Örneğin bilgisayarınızda yer alan resimleri sürükleyip uygulamanıza taşıyabiliyor, taşıdığınız tüm dosyaların bilgilerine (fileinfo) tek tek erişip üzerilerinde işlem yapabiliyorsunuz.

Gerçek hayattan bir senaryo ile anlatmak gerekirse, ürünlerinin yer aldığı bir web sitesi için müşterinize Silverlight 4 ile hazırladığınız uygulamayı masa üstüne yükletmeniz ve müşterinizin mevcut ürünleri buradan rahatça yönetebilmesini örnek olarak verebiliriz sanırım. Yeni bir ürün ekleyip, bu ürüne ait resimleri uygulamaya sürükleyip bırakması, ardından resimleri boyutlandırmak, firma logosunu resme eklemek (Watermark) gibi her tür işlemi  kullanıcı bilgisayarı üzerinde yapabilmeniz ve en son olarak sadece sunucuya her tür düzenlemesi yapılmış verileri kaydetmesi için gönderebiliyor olmak oldukça hoşunuza gidecektir diye tahmin ediyorum.

Silverlight 4 ile gelen bir diğer yeni özellik ise HTML yorumlama desteği. Şuan sadece javascript ve css kullanarak sayfadaki bir div`in içerisine html içeriği yazdırıp, animasyonun üzerinde görünmesini istediğimiz yere konumlandırarak yapabiliyoruz. Sanırım Flash`ta da bu şekilde yapılabiliyor sadece.

Sanırım Silverlight 4 ile gelen yenilikler ana hatlarıyla bu kadar, aklıma gelmeyenler varsa yorum olarak yazabilirsiniz.

Asp.Net MVC 2

Silverlight 4 oturumu ardından Asp.Net MVC 2 konusu ile sahneye Oğuz Yağmur çıktı.

Bazı yönleriyle benim uzun zamandır ilgimi çeken fakat bir türlü inceleme fırsatı bulamadığım Asp.Net MVC 2`yi dinlemek çok keyifliydi. MVC adını Model, View ve Controller kelimelerinin baş harflerinden alıyor. Bu üç yapıyı özetleyecek olursak; Model, kodlarınız, View; tasarımınız, Controller ise kodlarınız ile tasarımınız arasında ki ilişkiyi yöneten araç olarak tanımlayabiliriz kısaca.

Genel anlamda üzerinde çok fazla sayıda kişinin çalıştığı, uzun süreli, sık sık tasarım veya yazılım tarafında değişikliklere ihtiyaç duyan, özellikle yazılım ve tasarım ekibinin dışında bağımsız olarak test edilmeye uygun, tasarım, yazılım ve test ekiplerinin tamamen birbirinden ayrılabildiği bir yapıda proje geliştirecekseniz Asp.Net MVC 2 doğru tercih olacaktır. Fakat yapı gereği Asp.Net`de ki Webform mantığının tamamen dışında bir yapıya sahip olduğunun kesinlikle altını çizmek isterim.

Basitçe açıklamak gerekirse MVC`de Default.aspx sayfanızın arkasında Default.aspx.vb diye bir dosya mevcut değil. Onun yerine View dizini altına Default.aspx sayfanız yani html barındıran sayfanız var, Default.aspx sayfanızla alakalı kodlarınız ise Model dizini altında yer alıyor. Bu karışık yapıyı çabuk kavramanız açısından Visual Studio`da yeni bir Asp.Net MVC 2 projesi oluşturduğunuzda tüm temel dizinler oluşturulmuş olarak geliyor ve hatta projeyi oluşturur oluşturmaz hemen çalıştırıp Hello World sayfasını görebilirsiniz.

Asp.Net MVC 2 ile birlikte URL Routing desteğide standart olarak sunuluyor. Bununla ilgili ayarları global.asax dosyasından yapabiliyorsunuz. Projeyi ilk oluşturduğunuzda ihtiyacınız olacak tüm temel özellikler gibi URL Routing ile ilgili örnek kodlar da yer alıyor proje içerisinde.

Seminerde Asp.Net MVC 2`nin açık kaynaklı (open source) bir proje olduğu ve Microsoft`un jQuery`için verdiği desteğin en çok MVC odaklı olduğu vurgulandı.

IIS Media Services

Muammer Benzeş`in anlattığı ve önceden Windows Media Services ile sunulan bu hizmet artık tamamen IIS 7 üzerinde yer alıyor. Bu sayede sunucunuza ayrı bir yazılım yüklemek zorunda kalmıyorsunuz ve tüm IIS 7 sunucular bu desteği sağlamış oluyor.

IIS Media Services ile birlikte gelen Smooth Streaming özelliğini en basit haliyle açıklayacak olursam, internet üzerinden video yayınlarının mümkün olduğu kadar akıcı olarak izlenebilmesini ve bunu yaparken de sunucu yükünü hafifletmeyi sağlıyor diyebilirim.

Smooth Streaming dışında bir de Live Smooth Streaming var ve buda canlı yayınlar için kullanılmakta, ayrıca yurt dışında HD kalitesinde canlı yayınlar yapılmaya başlandı bile, yakında bizde de olacaktır :)

Smooth Streaming`de mantık şu şekilde, sunucuda daha önceden aynı videonun farklı kalitelerde hazırlanmış (encoding) olan sürümlerini her iki saniyede bir ziyaretçinin indirme hızını kontrol ederek  bu hıza göre seçtiği uygun kalitedeki videoyu ziyaretyçiye gönderiyor. Böylece ziyaretçi akıcı bir şekilde videoyu izlerken, sunucuda ziyaretçinin indirme hızı doğrultusunda gereksiz yere büyük veri paketleri göndermeyerek veri trafiğini azaltmış oluyor.

Birde sunucu ile ziyaretçi arasına özel bir sunucu daha koyarak daha önceden talep edilen video paketlerini burada yedekleyip, farklı bir ziyaretçiden yeni bir istek geldiğinde ana sunucuyu meşgul etmeden daha önceden talep edilen videoların direkt kullanıcıya gönderilmesi de sağlanabiliyor. Böylece sunucu yükü ve veri trafiği ciddi anlamda düşürülmüş oluyor ve maliyet açısından da ciddi bir kazanç sağlıyor.

Konu ile ilgili örnek uygulamayı incelemek isterseniz şöyle buyrun.

Visual Basic 10 Yenilikleri

Visual Basic 10`da gelen yenilikleri aklımda kaldığı kadarıyla yazacak olursam;

  1. XML to Shema desteği
  2. Sub içerisinde Sub yazabilme desteği
  3. Aynı satırda olması gereken kodu alt tire ( _ ) işareti ile ayırmaya gerek yok artık, kodun nerede bittiğini anlıyor CLR :)
  4. Sub içerisinde #Region benzeri gruplamalar yapabilme desteği
  5. Property tanımlamalarında get, set vb yazılan kodlar kaldırılmış, artık “Public Property Osman as String” yeterli :)

Seminer sonrası aklımda kalanlar bunlar, aslında bir kaç satır yazmaktı düşüncem fakat gördüğünüz üzere bayağı uzun bir yazı oldu. Buraya kadar okuduysanız teşekkür ederim :)

Seminer sonunda yapılan t-shirt ve Windows 7 çekilişinde kazandığım t-shirt`ümün resmini yarın ki  Ineta Next 2. gün yazımda paylaşırım artık :) Yarın bir de Windows 7 kazanırsam tadından yenmez artık :) Yarınki seminer programını da tekrar paylaştıktan sonra yazımı bitiriyorum. Hepiniz sağlıcakla kalın, görüşmek üzere.

13 AralıkMicrosoft Ofisi (Kroki)
11.00-12.30 ASP.NET 4.0 Yenilikleri – Uğur Umutluoğlu (nedirtv.com)
14.30-15.45 Workflow Foundation 4.0 – Burak Selim Şenyurt (csharpnedir.com)
16.00-17.00 C# 4.0 Yenilikleri – Erkan Balaban (ceviz.net)
17.15-18.00 IE 8 Toolbar Geliştirme – Barış Kanlıca (yazgelistir.com)

INETA NEXT Türkiye Turu Oturumları Belli Oldu

Ineta`nın “Bir katılımcıya yeni bir beyin verilecektir” sloganı ile duyurduğu ve tarih sırasıyla Diyarbakır (5-6 Aralık), İstanbul (12-13 Aralık), Kayseri (19-20 Aralık) ve Denizli (26-27 Aralık) olmak üzere 4 farklı ilde gerçekleştireceği oturumların yerleri ve oturum detayları www.inetatr.org adresinde açıklandı. Detayları olduğu gibi sizlere aktarıyorum.

Diyarbakır – Dicle Üniversitesi, Tıp Fakültesi Konferans Salonu
5 Aralık
11.00-12.30 Visual Basic 10 Yenilikleri – Daron Yöndem (yazgelistir.com)
14.00-15.30 Windows 7’de neler var? – Muammer Benzeş (birliktegelistir.com)
16.00-17.00 Silverlight 4 – Daron Yöndem (yazgelistir.com)
6 Aralık
11.00-12.30 C# 4.0 Yenilikleri – Erkan Balaban (ceviz.net)
14.00-15.30 WPF 4 ile 3D Animasyon Programlama – Daron Yöndem (yazgelistir.com)
16.00-17.30 ASP.NET 4.0 – Erkan Balaban (ceviz.net)

İstanbul – Microsoft Ofisi (Kroki)
12 Aralık
10.00-11.00 Silverlight 4 – Daron Yöndem (yazgelistir.com)
11.00-12.00 ASP.NET MVC 2 – Oğuz Yağmur (csharpnedir.com)
14.00-15.00 IIS Media Services – Muammer Benzeş (birliktegelistir.com)
15.15-16.15 Visual Basic 10 Yenilikleri – Daron Yöndem (yazgelistir.com)
13 Aralık
11.00-12.30 ASP.NET 4.0 Yenilikleri – Uğur Umutluoğlu (nedirtv.com)
14.30-15.45 Workflow Foundation 4.0 – Burak Selim Şenyurt (csharpnedir.com)
16.00-17.00 C# 4.0 Yenilikleri – Erkan Balaban (ceviz.net)
17.15-18.00 IE 8 Toolbar Geliştirme – Barış Kanlıca (yazgelistir.com)

Kayseri – Erciyes Üniversitesi Mühendislik Fakültesi Konferans Salonu
19 Aralık
11.00-12.30 C# 4.0 Yenilikleri -Burak Selim Şenyurt (csharpnedir.com)
14.00-15.30 Silverlight 4 – Daron Yöndem (yazgelistir.com)
15.45-16.45 ASP.NET 4.0 – Selçuk Yavuz (ceviz.net)
20 Aralık
11.00-12.30 ASP.NET MVC 2 – Selçuk Yavuz (ceviz.net)
14.00-15.30 Visual Basic 10 Yenilikleri – Daron Yöndem (yazgelistir.com)
15.45-16.45 Workflow Foundation 4.0 – Burak Selim Şenyurt (csharpnedir.com)

Denizli – Pamukkale Üniversitesi Kongre Kültür Merkezi Ana Salon
26 Aralık
11.00-12.30 Silverlight 4.0 – Daron Yöndem (yazgelistir.com)
14.00-15.30 C# 4.0 Yenilikleri – Oğuz Yağmur (csharpnedir.com)
15.45-16.45 Asp.NET 4.0 Yenilikleri – Uğur Umutluoğlu (nedirtv.com)
27 Aralık
11.00-.12.30 Visual Basic 10 Yenilikleri – Daron Yöndem (yazgelistir.com)
14.00-15.30 Asp.NET MVC 2 – Oğuz Yağmur (csharpnedir.com)
15.45-16.45 ASP.NET AJAX 4.0 – Uğur Umutluoğlu (nedirtv.com)

Ineta`nın ücretsiz olarak gereçekleştirdiği bu etkinliklere katılmak için hala vaktiniz var, kayıt işlemini www.inetatr.org adresinden katılacağınız ildeki etkinliğin altında bulunan formu kullanarak gerçekleştirebilirsiniz. İstanbul etkinliğinde görüşmek üzere :)

“InnerJoin” Kullanılmış SQL Sorgusunda “Select Top” Kullanımı

Bugüne kadar birden fazla tabloyu innerjoin ve benzeri ile birbirine bağlayarak bir sorgu oluşturmuşsanız ve bu sorguda sadece 5 adet kayıt gelsin gibi bir beklentiniz olmuş ise hüsrana uğramış olmanız muhtemeldir.

Böyle bir durumla karşılaşmışsanız ya da karşılaşma ihtimaliniz varsa eğer çözümü burada. Sizi daha fazla oyalamadan hemen örneğimize geçelim. Okumaya devam et

Ineta Next Hit!

Uzun bir aradan sonra yeni bir Ineta semineri geliyor, vakit kaybetmeden kaydınızı yaptırın.

Program;

11 Nisan
09.30-10.00 Açılış
10.00-10.45 Windows 7 Deep-Dive – Mehmet Nuri Çankaya
11.00-13.00 Silverlight 3.0 – Daron Yöndem
14.00-15.30 Bulut Bilişimi ve Azure – Panel
16.00-17.00 PHP On Windows ve Hyper-V – Muammer Benzeş

12 Nisan
10.00-12.00 Sürpriz Oturum – Daron Yöndem
13.00-15.00 ASP.NET 4.0 – Uğur Umutluoğlu
15.15-17.00 WCF 4.0 ve WF 4.0 – Burak Selim Şenyurt

Katılım için;
Yıldız Teknik Üniversitesi, Beşiktaş Kampüsü Oditoryum`unda düzenlenecek olan aktiviteye katılmak için, http://inetatr.org adresinden kayıt yaptırmanız gerekiyor.

Access ve Random Kayıt

Veritabanı olarak access kullanılan bir projede rasgele seçilmiş 5 tane resmi sayfada göstermemiz gerekiyordu.

Fakat Sql`de çalışan ve bize her seferinde 5 farklı kayıt getiren şu kod access`de çalışmıyor.

SELECT top 5 ID FROM Tablo_Adi ORDER BY newid()

Çünki newid() fonksiyonu access için geçerli değildi. Bende zaman sorunu olduğu için en iyi kod çalışan koddur mantığından yola çıkarak dolaylı bir çözüm bulmuştum.

Önce ID leri bir arrayList`e çekip bunların içerisinden rasgele 5 ID yi çekiyordum ama aynı kaydın gelme ihtimali yüzünden her bulduğum ID`yi farklı bir arrayList`e aktarıp bir önceki arrayList`imden çıkartıyordum. Sonuçta elimde birbirinden farklı rasgele seçilmiş 5 adet ID vardı. İşlemin geri kalanını bu 5 ID üzerinden tamamlıyordum. Fakat performans açısından çokta verimli değildi açıkçası :)

Neyse zaman sorunu olduğu için bu şekilde projeyi tamamladım ama araştırmalarım devam ediyordu. Araştırmalar sonucunda şöyle bir örnek buldum;

SELECT TOP 5 ID FROM Tablo_Adi Order By rnd(ID)

Fakat bu seferde rasgele gelen 5 kayıt sorgumuz her çalıştığında aynı geliyordu. Bunun üzerine ufak bir araştırma yaptıktan sonra sorgumuz aşağıdaki son halini almış oldu. Böylece sorgumuz her çalıştığında rasgele seçilmiş 5 farklı kayıt getirir hale geldi.

SELECT TOP 5 ID FROM Tablo_Adi Order By rnd(-(ID)*Time())

Sorgumuzun bu son hali ile ihtiyacımız olan işlemi kolayca gerçekleştirdim. Benzer bir durumla karşılaşan olursa ve benim tekrar ihtiyacım olursa diye buradan da paylaşmak istedim, umarım faydası olur.

INETA Professional Hit İstanbul Çıkartması

Daron hoca Kıbrıs semineri ardından İstanbul`a döndü ve İstanbul`da gerçekleştirilecek olan seminerin haberini verdi bizlere; INETA Professional Hit.

Bu seminer önceki seminerlerden biraz farklı, seminer içeriği başlangıç seviyesinde değil aksine ileri düzeyde konuları içeriyor. Seminer hakkında detaylı bilgi almak istiyorsanız şu sayfaya bakabilirsiniz.

Seminere katılmak ücretsiz ve herkeze açık fakat kayıt yaptırmanız gerekiyor. Kayıt işlemi için http://daron.yondem.com/kayit adresini ziyaret edebilirsiniz.

Seminer Detayları

24 Ocak
10.00-12.30 Silverlight ile Veri Uygulamaları – Daron Yöndem – Level 300
13.00-16.00 ADO.NET Data Services – Burak Selim Şenyurt – Level 300
16.30-18.00 SharePoint üzerinde özel kolon geliştirmek – Nezih Tınas – Level 400

25 Ocak
10.00-12.30 Derinlerde C# 3.0 – Burak Selim Şenyurt – Level 300
13.00-15.00 ASP.NET AJAX 4.0 – Daron Yöndem – Level 300
15.30-18.00 Asp.Net Application ve Page LifeCycle – Oğuz Yağmur – Level 300

Adres
Microsoft İstanbul Ofisi,  Bellevue Residence, Levent Mahallesi Aydin Sokak, No: 7 Levent