July 2005 Entries etiketi ile ilgili girdiler...

İnsanoğlu sosyal bir varlık. Bulunduğumuz çevredeki insanları etkileyecek kararlar almadan evvel bir toplantı yapıp enine boyuna tartışırız. Toplantı yapıcı bir olaydır fakat her zaman iyi sonuçlar doğurmaz. Uzun ve yorucu olabilir. Toplantıya katılanların aktif olarak dinlemesi, öneri ve değerlendirme yapması ve çözümler sunması beklenir. Ayrıca katılanlar seslerinide duyurmak isterler. Genelde birbiri ile çelişen fikirler tartışılır.

Eğer alınan kararlar, kararın etkilediği tüm gruplar tarafından duyulmamış ise grup içinde yada gruplar arasında kopukluklara neden olur. Ekip müdürlerine olan güven kırılır. Toplantıların bir amacı ekip içindeki bağları güçlendirmek ve ortak bir hedef için çalışıldığını göstermektir. Diğer bir amacıda verilebilecek en iyi kararı vermektir. Ekip lideri yada müdürü her zaman en iyi kararın ne olduğunu bilemez ama görevi en iyi kararın ne olduğuna karar vermektir. Bunun içinde kararların tartışıldığı ortamı hazırlayıp değerlendirmeyi herkesin huzurunda yapar.

İş yaşamımızın büyük bir bölümü toplantılarla geçer. Özellikle proje başlarında analiz yaparken. Toplantılar pahallıya mal olan olaylardır, sonunda da doğru kararın verilip verilemeyeceği kesin bile değildir. Toplantının verimini anlamak için kendinize sormanız gereken bir kaç soru var:

  • Toplantının başarılı olması için üzerinize düşen her şeyi yaptınız mı?
  • Toplantıya katılan diğer iş arkadaşlarınız verimli bir toplantı olduğu konusundan hemfikirler mi?
  • Toplantı sonucunda alınan kararlar toplantı maliyetlerini amorti ediyor mu?
  • Aynı sonuçlara toplantı yapmadan da ulaşabilir miydiniz? (E-posta, telefon, gayri resmi konuşmalar vb.)

Eğer toplantılar verimsiz geçiyorsa muhakkak anlarsınız. Şüpheniz varsa aşağıdaki göstergeler yardımcı olabilir.

  • Başlangıç ve bitiş saatleri planlandığı gibi yürümez.
  • Kişiler geç gelir ve erken ayrılır.
  • Kişiler toplantıya hazırlanmadan gelir.
  • Toplantı girip çıkan kişiler tarafından bölünür yada cep telefonları çalar.
  • Kişiler diğerlerinin fikirlerini önemsemez ve başka konular üzerinde çalışır.
  • Duygusallaşıp kişisel saldırı yapanlar olabilir.
  • Bir kaç kişi birleşip kendi fikirlerini benimsetmeye çalışır yada toplantıda sadece bir kaç kişi konuşur.
  • Öneriler dandik nedenlerden dolayı geri çevrilir. Benim en sevdiğim dandik nedenler:
    • Bu fikre kesinlikle karşı çıkarlar (müşteriyi kastederek)
    • Biz onu geçen sene denedik (tuhaf bir sırıtma ile)
    • Tamda pazarlama ekibinden duyacağım bir çözüm (konuşan yazılım ekibinden ise)
    • Ben bunu geçen ay patrona söyledim, kabul etmedi. (patron toplantıda olmayacak) *Benim favorim*
  • Birisi konuşmasını bitirip diğeri söz aldığında konuşulanları göz ardı edip tamamı ile başka bir konuda konuşmak.
  • Kesin karara varmadan yada tüm çözümleri dinlemeden toplantının bitmesi.
  • Toplantı sonucunda planlanan işlerin paylaştırılmaması ve kişilerin ne yapacağını bilmemesi. (Bu çok kötü bir durumdur)
  • Toplantı sonucunda işler paylaştırılır ve herkesin yapacağı iş belirlenir fakat kimse görevlerin başarılıp başarılmadığını kontrol etmez.

Verimsiz bir toplantı işiniz için iyi değildir, para ve zaman kaybına neden olur. Yaratacğı stres ve çelişkilerde cabası. Yönetim ekibine olan güveni kırar ve ekip içinde kopmalara neden olur. Peki toplantıları nasıl verimli hale getireceğiz.

Tümden toplantılardan vazgeçmek

İyi bir fikir ve en hızlı biçimde kara geçmenize neden olur. Nede olsa toplantı sırasında harcanacak vakit ve nakit kaybını anında önlemiş oluyorsunuz. Ekip içinde iletişimi biraz öldürür ama zaten daha önceden de bir iletişim yoktu. Ekip liderinin sorumlulukları biraz artar ve kritik kararları vermesi beklenir. Ekip lideri bu yükü kaldırabiliyorsa sorun yok. Kararlar hızlı verilir ve uygulamaya geçilir.

Eğer toplantılara tüm ekibi çağırmak zor oluyorsa bir kaç önerim var

Lider Ekibi: Bu ekip firmanın her bölümünden konusunda uzman kişilerin bir araya gelmesi ile oluşturulur. Lider ekibinde proje müdürleri yada ekip liderleri olmamalıdır başka bir deyişle yönetim ekibinden kimse bu ekibe katılmamalıdır. Lider Ekibinin görevi her gün bir araya gelerek bir önceki günün değerlendirmesini yapmak ve günün problemlerini ve yapılması gerekenleri tartışmaktır. Değişim ve istekleri yöneten bir ekip yok ise Lider Ekibi bu işide yapabilir.

Ayak üstü koridor görüşmeleri: Hızlı ve kesin bilgi akışı ile yüz ifadeleri ve vücut hareketlerinin kullanıldığı bir görüşme tipi. Toplantı sırasında maskelerle oturan yada hiç konuşmayan kişilerin fikirlerini almak için birebir. Bazen yüz ifadelerinden ve vücut dilinden çok daha fazla bilgi almamız mümkün. Sorular ve beklenen cevaplar kısa olmalı, "evet, hayır, yanlış, doğru" gibi cevaplar ve sonunda kişiye ufak bir görev vererek bitirme (bir belge yazma yada, ufak bir prototip hazırlama). Görev verdiğiniz kişiye daha sonra bir e-posta atarak bu görevi verdiğinizi diğerlerinin de bilmesini sağlamayı unutmayın.

Tartışanların ayrı tutulması: Nasıl evlilik müessesesinde fikir çatışmalarından dolayı ayrılıklar oluyorsa, firma içinde de birbiri ile tartışan elemanları bir süreliğine farklı işlerde meşgul edip, düşünmelerini sağlamak gerekir. Konu eğer kişisel boyutlara gelmişse çözmek zor (kanser gibi) fakat önceden sezinleyebilirseniz ve vereceğiniz işlerle konu üzerinde düşünmelerini sağlarsanız çözüm kolay olabilir. Evet EQ önemli bir olay fakat bir iş için IQ yeterli, çatışmaların kişisel alınmaması ve firma çıkarlarının dolayısı ile çalışanların çıkarlarının gözetilmesi hatırlatılmalıdır. Çatışan kişilerin kendi fikirleri üzerine bir rapor hazırlaması ve değerlendirme sonucu iyi olanının seçilmesi işe yarayabilir.

Toplantıların belli bir düzen içinde yapılması

Düzensiz toplantıların zaman ve para kaybına neden olduğunu gördük. Bir toplantının çekiciliğini ve verimliliğini arttırmak için yapmanız gereken bir kaç şey var. Kimse sıkıcı toplantılara katılmak istemez, katılsa da verimli olmaz.

Öncelikle toplatıyı yönetecek kişi belirlenir. Toplantı başkanı konuyu bilen, kiminle tartışacağını ve kimlerin fikirlerine başvuracağını bilen kişi olmalıdır. Toplantı başkanı not tutacak kişiyi ve toplantıya katılacak kişileri belirler. Toplantı sonrasında verilen görevlerin yerine getirilip getirilmediğini de kontrol eder.

Toplantı başkanının yapacağı işlere bakalım:

TOPLANTIDAN ÖNCE

  • Problemi sade bir dille yazılı olarak tanımlar. Problem içinde belli olmayan yada değişken kısımlar listelenir ve olası problem senaryolarıvarsa ortaya çıkarılır. (bazen problemin boyutu değişkenlere göre değişebilir ve etkileri farklı olabilir.)
  • Yazıcıyı belirler. Yazıcı toplantıda sunulan önerileri ve bu önerilere verilen cevapların notunu tutar.
  • Toplantıya katılacakları belirler. Problem hakkında bilgisi olan ve çözümleri hayata geçirecek herkes bu toplantıya katılmalıdır.
  • Problemin anlaşılması için gerekli taban bilgiyi ortaya çıkarır ve katılanlara dağıtır. Bazen bu taban bilginin ortaya çıkartılması sırasında çok farklı çözümler üretilebilir. Probleme yğunlaşmak yerine çevresindeki değişkenlere yoğunlaşmak farklı bakış açıları ve çözümler verebilir.
  • Toplantının zaanını ve yerini tayin eder. Toplantı için gerekli malzemeyide sağlar (beyaz tahta, projektör, hesap makinesi, ağ bağlantısı, dizüstü bilgisayar vesaire.)
  • Diğer katılanları, kimin Toplantı başkanı ve Yazıcısı olduğu hakkında bilgilendirir. Gerekli belgeleri gönderir ve yer ve zaman konusunda bilgilendirir.
  • Toplantının ajandası ve akış şeması hakkında bilgi verir.

Peki katılanların ve Yazıcının görevleri nelerdir?

  • Gönderilen belgeleri okumak ve toplantıya getirmek.
  • Sunulan belgelerde değişiklik gerekiyorsa Toplantı Başkanını uyarmak.

TOPLANTI SIRASINDA

  • Her katılan kendini tanıtır ve çalıştığı alanı belirtir.
  • İlk adım olarak problemin bir tanımı yapılır ve konunun anlaşılması için belli miktarda detaya girilir. Tam olarak anlaşılmayan bir konu üzerinde tartışmak hiç kimseye yarar sağlamaz.
  • Tüm katılanların fikirlerinin tek tek dinlenmesi gerekir böylece herkes bir diğerinin deneyimlerinden yararlanabilir.
  • Çözümler ortaya çıktıkça tahtaya yazar ve bir numara verir. Çözümü üreten kişinin isminin baş harflerinide çözümün yanına yazar.
  • Bazı çözümleri birleştirerek farklı bir çözüm yaratır ve birleştirilen çözümleri üreten kişilere fikirlerini sorar.
  • Çözümleri yargılamadan anlamaya çalışır.
  • Yeni bir çözüm çıkmayana kadar bu işlem devam eder.

Bu arada Yazıcıda şunları yapar.

  • Katılanların bir listesini oluşturur.
  • Olası çözümleri listeler.
  • Tartışmaların kaydını tutar.

Bir kaç çözüm üretildikten sonra, bu çözümlerin fizibilite çalışmaları yapılır. Hangi çözüm firmaya en yararlı olandır bulmaya çalışılır. En iyi çözümü bulmak için irdelenmesi gereken konular:

  • Önemlilik derecesi
  • Çözülebilirlik (günün teknolojisi bunu yapabilir mi?)
  • Maliyet Analizi (ne kadara mal olacak)
  • Kaynak ve İşgücü var mı?
  • Yeterli bilgi firma içinde mevcut mu?
  • Bu çözüm başka problemler doğuruyor mu? (en önemlisi bu)

Tüm çözümler liste halinde katılanlara dağıtılır ve 1'den 10'a kadar bir önemlilik derecesi vermeleri istenir. Sonuçta herkesin verdiği önemlilik dereceleri toplanır ve en yüksek puanı alan çözümler üzerine yoğunlaşılır. Katılanların bu sonuçları tasdik etmesi ve tekrar düşünmeleri istenir. Sonuçlar tekrar değerlendirilir.

Bir problemin mutlak bir çözümü olmayabilir. Bir kaç çözümün bir araya gelmesi ile daha şık bir çözüm elde edilebilir. Yada iki farklı çözüm aynı anda uygulamaya konulabilir fakat bu daha fazla iş demektir.

En iyi çözüm belirlendikten sonra bir ekip veya bir kişi bu çözümü hayata geçirmek üzere atanır. Çözümü hayata geçirecek kişinin yaptıklarını takip edecek ve durumu raporlayacak bir kişi de atanır.

TOPLANTI SONRASINDA

Toplantı sırasında tutulan tüm notlar Yazıcı tarafından elektronik ortama aktarılır. Sonuçta karar verilen çözüm veya çözümler listelenir ve kimin ne iş yapacağı belirlenir. Tüm bu plan toplantıya katılan herkese gönderilir.

Toplantı başkanı bu planı takip eder ve kişilerle kontak kurarak ilerlemeler hakkında bilgi alır.

En sonunda klavye olayında çığır açtılar. Aşağıdaki adresten bakın...

Tuşlar hangi uygulamayı kontrol ediyorsa, uygulamanın ikonu tuş üzerinde beliriyor.

http://www.artlebedev.com/portfolio/optimus/

Aslında birde DasKeyboard var. O'da bunun tam tersi; tuşların üzerinde hiç bir yazı yok, fakat tuşlar tek tek farklı ağırlıklarda dizayn edilmiş. E tabii işaret parmağı ile serçe parmak aynı güçte değil dimi. www.daskeyboard.com

Tüm okuduğum blogların OPML dosyasını siteye gönderdim. Yarın öbürgün bilgisayarı yeniden kurmak gerekirse lazım olacak. OPML dosyasını indirip uygun bir RSS okuyucu ile kullanabilirsiniz. Benim favori RSS okuyucum RSS Bandit tavsiye ederim.

Indigo servis tabanlı mimarilerin geliştirilmesi için Microsoft tarafından oluşturulmuş programlama modelidir ve System.ServiceModel sınıfını kullanır. Servislerin birbirleri arasında ki asenkron mesaj alışverişini kolaylaştırmak üzere geliştirilmiştir. Eskiden ayrı bulunan .NET Remoting, ASMX (Web Hizmetleri) .NET Enterprise Services gibi mimarilerin en iyi tarafları Indigo ile bir çatı altına toplar. HTTP, TCP ve IPC gibi haberleşme mekanizmalarını destekler, "public", "symetric" anahtarlarını ve güvenlik sertifikalarının kullanımını kolaylaştırır. XML ve SOAP temelli mesaj alışverişini de destekler. Indigo, Longhorn Windows içine entegre edilmiş halde geliyor fakat Windows XP ve 2003 sunucu sistemleri içinde bir sürüm mevcut. Longhorn'a has bazı özellikler XP ve 2003 sunucular üzerinde mevcut değil fakat ana fonksiyonlar ve sınıflar erişilebilir durumda.

Bu yazımda sizlere Indigo ile istemci sunucu tabanlı çok basit bir programın nasıl yazılacağını göstereceğim. Aslında bu yazıyı Mitch benden önce yazmıştı bende hem Türkçe'ye çevireyim hem herkes yararlansın diye daha ayrıntılı biçimde yeniden düzenledim. Aşağıdaki kodları çalıştırmak için VS2005 Beta2 ve Avalon-Indigo Beta1 sürümlerini kurmanız gerekiyor.

Öncelikle projelerimizi barındıracağımız bir "solution" açalım.



Daha sonra bu "solution"'a bir C# Console projesi ekleyin. İsmini HelloWorldService verin.



Program.cs dosyasını açıp kodumuzu yazmaya başlayalım. Öncelikle bir arayüz sınıfı oluşturacağız. Diğer kodlara dokunmadan aşağıdaki kodu yazın.

public interface IHelloWorldService{
    string SayHello(string Name);
}

Bu arayüz, servisin SayHello fonksiyonunu kullanmamızı sağlayacak. References kısmına gidip System.ServiceModel isim alanını projenize ekleyin. Eğer bu isim alanını bulamıyorsanız Indigo yüklü değil demektir. Önce Avalon-Indigo Beta2'yi indirip kurmanız gerekiyor. Kodun en tepesine çıkarak "using" bölümüne aşağıdaki kodu ekleyin. Böylece System.ServiceModel isim alanı içerisindeki sınıflara erişim sağlamış olacağız. Az önce oluşturduğumuz arayüzü de aşağıdaki gibi değiştirin.

.
.
using System.ServiceModel;
.
.
.
[ServiceContract()]
public interface IHelloWorldService
{
    [OperationContract()]
    string SayHello(string Name);
}

Şimdi bu arayüzü doğrulayacak bir sınıf oluşturup SayHello fonksiyonun gerçekte ne iş yapacağını belirtelim.

public class HelloWorldService:IHelloWorldService{
    public string SayHello(string name){
        string greeting = string.Format("Hello {0}", name);
        return greeting;
    }
}

Bu işlemlerden sonra esas port dinlemesini yapacak ve SayHello fonksiyonunu tetikleyecek sınıfı yazalım. Projeyi ilk yarattığınızda oluşturulan Program sınıfını aşağıdaki gibi değiştirin.

public class Program{
    public static void Main(){
        ServiceHost<HelloWorldService> host = new ServiceHost<HelloWorldService>();
        host.AddEndpoint( typeof(IHelloWorldService),        
            new WSProfileBinding(),
            new Uri ("http://localhost:8000/HelloWorldService")
        );
        host.Open();
        Console.WriteLine("Servis dinlemede. ENTER tusu ile sonlandırabilirsiniz");
        Console.ReadLine();
        host.Close();
    }
}

Artık programımız çalıştırmaya hazır. Tabii bu sadece sunucu tarafı. Fakat çalışıp çalışmadığını kontrol edebiliriz. Eğer buraya kadar herşeyi doğru yaptıysanız F5 tuşu ile çalıştırdığınızda aşağıdaki DOS ekranını görmeniz gerekir.



Servisimiz çalıştığına gore Internet Explorer ile test edebiliriz. http://localhost:8000/HelloWorldService adresine giderseniz aşağıdaki ekranı görmeniz gerekir.



Bu ekranda anlatıldığı gibi servise ulaşmak için bir WSDL dosyası üretmemiz ve bir proxy sınıfı oluşturmamız gerekiyor.

VS2005 komut satırını açın ve svcutil.exe çalışıyor mu bakın. Çalışıp çalışmadığını anlamak için svcutil.exe yazıp enter'a basmak yeterli. Eğer "svcutil bulunamadı" şeklinde bir hata mesajı alıyorsanız veya Dos komut satırını ilk açtığınızda hata mesajları veriyorsa VS2005 komut satırınız hatalı açılmış demektir. Kapatıp özelliklerinden Target kutusundaki yolu değiştirmemiz gerekiyor. Doğrusu:

%comspec% /k ""C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat"" x86


Aşağıdaki komut ile iki dosya oluşturacağız. Bunlar istemci programımızda proxy sınıfını oluşturmak için kullanılacak. Dosyaların nerede oluşturulduğuna dikat edin daha sonra bunları istemci programımızın bulunduğu dizine kopyalayacağız. Projenizi çalışır halde bırakıp aşağıdaki komut ile dosyaları yaratın.

Svcutil.exe http://localhost:8000/HelloWorldService?wsdl




Buraya kadar her şey mükemmel gidiyor. Bir Indigo servisi oluşturup bu servise ulaşım için gerekli proxy sınıflarını oluşturacak dosyaları yarattık. Şimdi "solution"'a ikinci bir Console projesi ekleyip ismini HelloWorldClient verin. Proje oluşturulduktan sonra bir önceki adımda yarattığımız iki dosyayı client projesinin bulunduğu dizine kopyalayın. Output.config dosyasının ismini app.config olarak değiştirin ve son olarak ta bu iki dosyayı client projesine ekleyin. App.config dosyası servise nasıl ulaşılacağını tempuri.org.cs dosyasıda servisi çağırmak için kullanılacak proxy sınıfını tanımlar.

İstemci programındaki Program sınıfını aşağıdaki gibi değiştirin. Intellisense HelloWorldServiceProxy sınıfını otomatik olarak göstermelidir. Eğer göstermiyorsa bir yerlerde yanlışlık yaptınız demektir.

class Program
{
    static void Main(string[] args){
        HelloWorldServiceProxy proxy = new HelloWorldServiceProxy();
        string greeting = proxy.SayHello("Gurkan");
        Console.WriteLine(greeting);
    }
}

Proje dosyalarının son görüntüsü aşağıdaki gibi olmalıdır.



Artık istemci programımızda hazır olduğuna göre test edebiliriz. Sadece istemci projesini derleyip exe'leri oluşturun. Ana proje HelloWorldService olduğu için F5'e basınca bu proje çalışacaktır. F5'e basıp sunucu projesini çalışır halde bırakın. İstemci projesinin derlenmiş exe dosyasını (<proje dizini>\HelloWorldClient\bin\Debug) bulup DOS komut satırında çalıştırın. Aşağıdaki mesajı almanız gerekir.



İşte size bir Indigo servisinden gelen mesaj. Bende biraz endorfin etkisi yaratmıştı ilk çalıştırdığımda umarım sizede bir nebze mutluluk verir.
 

Ağ sayfalarınızın Gmail gibi hızlı olmasını istiyorsanız Asenkron JAvaScript ve Xml kullanmanız gerekiyor. Nedir AJAX, sunucuda çalışan bir kodun çıktılarının postback (sayfanın yeni verilerle yeniden yüklenmesi) olmadan istemciye ulaştırılmasıdır. AJAX aslında yeni bir olay değil sadece var olan bir kaç teknolojinin bir araya gelmesi ile oluşturulmuş bir yöntemdir diyebiliriz. Michael Schwarz’ın yazdığı AJAX.NET modülü ile bu yöntemi ASP.NET sayfalarına da uygulayabiliriz. Temelde XMLHttpRequest nesnesini kullanarak yazılmış bir yöntemdir.
Daha fazla bilgiyi aşağıdaki adreslerden alabilirsiniz:
http://en.wikipedia.org/wiki/AJAX
http://www.adaptivepath.com/publications/essays/archives/000385.php

Nasıl çalışır:
.NET içinde AJAX metodu olarak işaretlenmiş fonksiyonlar için birer JavaScript oluşturulur. Bu script istemci tarafından sunucu tarafındaki fonksiyonu çağırmak için proxy görevi görür. Sunucu tarafında Ajax handler’ı reflection yolu ile çağırılan metoda benzeyen bir metod arar, bulur, çalıştırır ve sonuçları istemciye döndürür. Bu arada gerekli olan alt yapıyıda kendisi otomatik olarak düzenler.
Diyelimki aşağıdaki gibi bir fonksiyonunuz var:

[Ajax.JavascriptMethod]
public string SayHello(string ad)
{
    return “Hello “ + ad;
}

AJAX.NET sınıfı otomatik olarak ismi SayHello olan bir JavaScript fonksiyonu oluşturur. Bu fonksiyon çağırıldığında, istek sunucuya gönderilir ve geriye dönüş değeride istemciye döner.

Kurulum
AJAX.NET’in son sürümünü bu adresten indirebilirsiniz. Tüm yapmanız gereken projenizde References kısmına bu dll’i yüklemektir.
Daha sonra web.config dosyasında bazı değişiklikler yapacağız. Aşağıdaki handler’ı <httpHandlers> kısmına eklemeniz gerekiyor. Handler aslında var olmayan bir sayfaya istek yapıldığında ASP.NET uygulamasının nasıl karşılık vereceğini belirtir.

<add verb="POST,GET" path="ajaxwrapper/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />

Web.config dosyasındaki bu değişiklikten sonra herhangi bir ASP.NET sayfasının Page_Load fonksiyonuna aşağıdaki kodu eklemeniz gerekiyor.

private void Page_Load(object sender, EventArgs e){
    Ajax.Utility.RegisterTypeForAjax(this.GetType());
//...
}

JavaScripti sayfaya kaydettikten sonra aspx sayfasını ağ gezgini ile çağırdığınızda aşağıdaki gibi bir kod meydana gelecektir.

<script language="javascript" src="ajaxwrapper/common.ashx"></script>
<script language="javascript" src="ajaxwrapper/NAMESPACE.PAGECLASS,ASSEMBLYNAME.ashx"></script>

NAMESPACE.PAGECLASS sayfanın sınıfı olacak ve Inherits parametresinin değerini alacaktır.
ASSEMBLYNAME ise sayfanın bağlı olduğu assembly ismini alacaktır. Büyük ihtimalle projenizin ismi olacaktır.

Sunucu-tarafında çalışan fonksiyonların AJAX metodu olarak işaretlenmesi gerekiyor. Yukarıda da anlattığım gibi Ajax.JavaScriptMethod() etiketi ile fonksiyonların asenkron olarak çağırılmasını sağlayabilirsiniz. Bu yöntem ile integer, string, double, boolean, DateTime, DataSet ve DataTable geriye döndürebilirsiniz.

Bu yöntem ağ uygulamalarına Windows Forms uygulamaları gibi esneklik sağlıyor ve ağ uygulamalarının daha hızlı cevap vermesini sağlıyor. Günümüzde herkesin hızlı internet servislerinden yararlanmadığını düşünürsek AJAX gibi bir metodun yararları daha da fazla beliriyor.
Bu arada Microsoft’ta boş durmuyor. ASP.NET 2.0 ile AJAX benzeri bir teknolojiyi Atlas adı ile Framework 2.0 içine entegre etmeye çalışıyorlar. Böylece bu metoddan yararlanarak ağ uygulamaları geliştirebileceğiz. Bu proje ile yeni form kontrolleri de gelecek.
Atlas bir adım ileri giderek Ağ Hizmetlerine ve Indigo servislerine asenkron olarak bağlanabilecek. İstemci tarafındaki nesneleri sunucu tarafındaki nesnelere bağlayabilme özelliği sayesinde güvenlik, kulanıcı tanımlama, arayüz kişiselleştirme gibi işlemler daha kolay mümkün olabilecek. Kimbilir belki kullanıcı tokenlarını dahi internet üzerinde taşıyıp uzak sistemlere login olmak bile mümkün olabilecek. İstemci tarafında lokal olarak “cache” tanımlayıp verileri burada tutmak mümkün olabilecek. Ne yazık ki Atlas, VS2005 Beta2 içinde yok. Ancak Eylüldeki PDC ’05’de duyurulacak ve sanırım beta olarak dağıtılacak. Genede Kasımda çıkması planlanan VS2005 paketinde Atlas olmayacak.

Scott Guthrie’nin blogundan Atlas hakkında ayrıntılı bilgi alabilirsiniz.
 

XHTML’in ismi EXtensible Hypertext Markup Language kelimelerinden türemiştir. Amacı HTML’yi ortadan kaldırmaktır. HTML 4.01 sürümü ile benzer bir çok yönü vardır. XHTML HTML’nin daha kolay anlaşılır ve kuralcı sürümüdür de diyebiliriz. XHTML HTML’nin XML olarak düzenlenmiş halidir.

XHTML bir web standardı olarak 26 Ocak 2000’de W3C tarafından kabul edilmiştir. XHTML normalde kullanılan HTML’nin yeni nesil sürümü olduğu için web gezginleri ve diğer uygulamalar tarafından kabul edilmesi zaman alacaktır. Bu arada örütbağı uygulamalarınızı mevcut XHTML standardına getirmek istiyorsanız HTML 4.01 sürümü ile uygun hale getirmek ile işe başlayabilirsiniz. Aşağıdaki 10 kuralı da uygularsanız uygulamalarınız XHTML uyumlu hale gelecektir.

1. Dökümanlar XML uyumlu olmalıdır.
HTML’de geçerli olan bu kod:
        <b><i>Bu yazı kalın ve yatıktır</b></i>
XHTML’de geçerli değildir. Elemanlar düzgün biçimde iç içe geçmelidir.
    <b><i>Bu yazı kalın ve italiktir</i></b>
Tüm XHTML elemanları <html> kök elemanı içinde bulunmalıdır. Diğer tüm elemanlar alt elemanlara sahip olabilir. Alt elemanların başlangıç ve bitiş tagları olmalı ve doğru biçimde iç içe geçmelidir. Temel döküman yapısı şu şekilde olmalıdır.

       <html>
    <head>.......</head>
    <body>.......</body>
    </html>


2. Tüm elemanlar küçük harfler kullanılarak yazılmalıdır. XHTML bir XML uygulamasıdır ve XML’de küçük büyük harf ayrımı vardır. Örneğin <BR> ve <br> tagları farklı biçimde yorumlanır.
Bu yazım yanlışdır.
    <BODY>
    <P>Bu bir paragrafdır</P>
    </BODY>

Bu yazım ise doğrudur.
    <body>
    <p>Bu bir paragrafdır</p>
    </body>

3. Tüm XHTML elemanlarının sonlandırılması gerekir. Boş olmayan her elemanın sonlandırılması gerekir, örneğin aşağıdaki yazım yanlışdır:
    <p>Bu bir paragrafdır
    <li>Bu bır liste maddesidir

Doğru olan:
    <p>Bu bir paragrafdır</p>
    <li>Bu bir liste maddesidir</li>


4. Boş elemanlarda sonlandırılmalıdır. Boş elemanlar ya bir sonlandırma elemanına yada “ />” işaretine ihtiyaç duyar. Örneğin aşağıdaki yazım yanlışdır.
    Bu bir satır atlar<br>
    Yatay çizgi böyle yapılır<hr>
    Burada resim olacak <img src=”dosyaismi.gif”>

Doruları ise:
    Bu bir satır atlar<br></br>
    Yatay çizgi böyle yapılır<hr />
    Burada resim olacak <img src=”dosyaismi.gif” />


XHTML web sayfalarınızı bugünün web gezginleri ile uyumlu hale getirmek istiyorsanız “/” işaretinden önce bir boşluk bırakmalısınız. <br /> yada <hr /> gibi.

5. Parametre isimleri küçük harf olmalıdır. Aşağıdaki örnek yanlıştır:
    <table WIDTH=”100%”>
    <div ALIGN=”center”>

Doğrusu:
    <table width=”100%”>
    <div align=”center”>


6. Parametre değerleri tırnak işareti içinde olmalıdır. Aşağıdaki örnek yanlıştır:
    <table width=100%>
    <div align=center>

Doğrusu:
    <table width=”100%”>
    <div align=”center”>


7. Parametre sadeleştirme kaldırılmıştır. Örneğin:
    <input checked>
    <option selected>

yanlıştır. Doğrusu:
    <input checked=”checked” />
    <option selected=”selected” />


8. “id” parametresi “name” parametresinin yerine geçer.
    <img src=”dosyaismi.gif name=”resim1” />
    <a name=”namedanchor”></a>

Yerine doğrusu:
    <img src=”dosyaismi.gif id=”resim1” />
    <a id=”namedanchor”></a>


9. XHMTL DTD zorunlu elemanları tanımlar. Tüm XHTML dökümanlarının DOCTYPE tanımlama zorunluluğu vardır. Html, head ve body bulunmalı ve title head içinde yer almalıdır. Aşağıda minimum bir XHTML dökümanını görüyorsunuz.
    <!DOCTYPE Doctype goes here>
    <html>
    <head>
    <title>Title goes here</title>
    </head>
    <body>

    Body text goes here
    </body>
    </html>

DOCTYPE elemanı bir XHTML elemanı değildir ve standartlara uymasına gerek yoktur. Ayrıca sonlandırılması da gerekmez.

10. DOCTYPE zorunlu olarak mevcut olmalıdır. Geçerli 3 adet XHTML döküman tipi vardır:
a- XHTML Strict
XHTML Dökümanlarını css dökümanları ile beraber kullanmanız gerektiğinde kullanılır. HTML’nin dizayn unsurlarını içermez.
Tanımı:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

b- XHTML 1.0 Transitional
CSS anlamayan web gezginlerini desteklemek ve HTML’nin dizayn unsurlarını kullanmak istiyorsanız bu döküman tipini kulanın.
Tanımı:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
    Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-
    transitional.dtd">


c- XHTML 1.0 Frameset
Eğer XHTML dökümanları pencerelere bölünmüş olarak gösterilecekse bu döküman tipini kullanın.
Tanımı:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">


DTD nedir?
DTD bir web sayfasının tipini SGML (Standard Generalized Markup Language) dili ile belirler.
DTD, HTML gibi SGML uygulamaları tarafından kullanılır. Amacı sayfa için geçerli olan markup sitilini belirtmektir. XHTML SGML döküman tipinde tanımlanmıştır. Bir XHTML DTD dökümanı sayfada uyulması gereken kuralları, bilgisayarın anlayabileceği bir dille belirtir.

Yazdığınız XHTML dökümanlarının hangi standartlara uyduğunu DTD belirtir ve sayfada ilk satır olarak yer almalıdır. Sayfalarınızın standarda uygunluğu testlerini W3C’nin doğrulama araçları ile yapabilirsiniz. http://validator.w3.org adresinden bu araçlara ulaşabilirsiniz.

Örütbağı üzerinde bir kaç kaynak adresi de işinize yarayacaktır.
W3C XHTML Anasayfa- http://www.w3c.org/MarkUp/
W3C standart bildirgesi - http://www.w3.org/TR/2000/REC-xhtml-basic-20001219/
W3Schools XHTML sayfaları - http://www.w3schools.com/xhtml
Web tasarımcılarının sanal kütüphanesi (WDVL) XHTML sayfaları - http://www.wdvl.com/Authoring/Languages/XML/XHTML/
Webmonkey XHTML Genel Bakış - http://hotwired.lycos.com/webmonkey/00/50/index2a.html
XHTML tartışmaları - http://www.webreview.com/tag/2000/09_01_00.shtml

IE 7.0 RSS desteği ile beraber gelecek.
http://www.microsoft.com/presspass/press/2005/jun05/06-24RSSIntegrationPR.mspx

Bu sektörde devinim gösteren yazılımlar içinde böyle bir gelişmenin olması kaçınılmazdı ama daha da mutlu edici bir olay bu desteğin Longhorn platformu içine entegre edilmiş olması. Sanırım Longhorn piyasaya çıktığında öğrenecek daha pek çok şeyimiz olacak.

 

Microsoft en sonunda grafik dizayn alanına el attı. Acrylic ileride Avalon ara yüzü ile beraber xaml dosyalarını üretmek içinde kullanılabileceğine bahse girerim.

[Listening to: 10- Whisper My Name When You D - Orphaned Land - El Nora Alila (0:-1)]

Sistem yöneticilerinin sesini dinleyen MS, yeni sistem yönetimi komut satırı MONAD programını beta olarak çıkardı. Genelde Cygwin veya open source programlar kullanan sistem yöneticileri artık tam entegre bir shell'e sahip olacaklar. İndirmek için BetaPlace bölümüne gidip Passport ile login olun, mshPDC kullanıcı parolasını girerek indirebilirsiniz.

.NET yazılım mühendisleri için pek çok yenilik getirdi; Monad'de sistem yöneticileri için aynı seviyede yenilikleri hizmete sunacak. Kurulum için .NET Framework Beta 2'ye ihtiyacınız var ama genede kurup denemeye değer.

[Listening to: 08- Flawless Belief - Orphaned Land - El Nora Alila (6:46)]

Siteyi nihayet biraz daha güncelledim. Epeydir sorun çıkaran aggregate sayfası şimdi tam olarak çalışıyor. Aggregate sayfasındaki OPML blogger listesi ve RSS linkleride çalışıyor. bunu düzeltmek için stored procedure'lardan ikisini fix etmek gerekti. Önemli bir gelişme olarak HIP CAPTCHA uygulamasını siteye uyarladım, poker linkleri bırakan geri zekalı sitelerden böylece kurtulmuş olduk. Her gün 70 tane poker linkini temizlemek pek kolay olmuyordu. Birde trackback'ler için bir formül bulsak fena olmaz. web.config dosyasında pıngback ve trackback için değerler var hepsini false yaptım bakalım bir kaç gün geçsin göreceğiz işe yarıyor mu yoksa gene temizlik ile mi uğraşacağım.

[Listening to: 06 - My Resurrection - Yngwie J. Malmsteen - Facing The Animal (4:48)]

Arama



Hakkımda

Merhaba, ben Gürkan Yeniçeri. 10 yılı aşkın süredir özel sektör ve hükümet iştiraklerinde yazılım mühendisliği yapıyorum. Bu sitede 2005 Mart ayından beri genelde yazılım mühendisliği ve hobilerim hakkında yazmaktayım. Profesyonel iş geçmişim hakkında daha fazla bilgiyi aşağıdaki Linkedin.com linkinden alabilirsiniz.
Gürkan Yeniçeri'nin profilini görmek için tıklayın

Kontak

Soru sormak veya öneride bulunmak isterseniz buradaki kontak formunu kullanın. Mesajlarınıza en kısa zaman içinde cevap vermeye çalışacağım. Ayrıca Windows Live Messenger kullanarak gyeniceri {AT} hotmail {DOT} com adresinden bana ulaşabilirsiniz.

Eğer İngilizce blogumu okumak isterseniz buraya buyrun.
Blogumu RSS Bandit gibi bir RSS okuyucusu ile de takip etmek için kullanın.
Ayrıca aşağıdaki linklerden hakkımda ayrıtılı bilgi alabilirsiniz.
Twitter
Friendfeed
Facebook

RSS 2.0

Reklamlar


Vezir

Vezir Proje Danışmanı
Sitede birde Vezir isminde wikimiz var. Bu wikiyi yazmayı düşündüğüm bir kitap için oluşturmuştum daha sonra herkese açmaya karar verdim. Vezir yazılım firması kurmak isteyenlere tavsiyeler vermek için hazırlandı. Ayrıca UML ve Modül Tabanlı Geliştirme hakkında da bilgiler mevcut. Vakit buldukça yeni eklemeler yapıyorum. Değişikliklerden haberdar olmak için RSS çıktısına üye olabilirsiniz.

Tag Bulutu

Tüm taglar...
www.flickr.com
This is a Flickr badge showing public photos from gurkanyeniceri. Make your own badge here.
Bu blogda 265 yazı ve 509 yorum var. Diğer sitelerden 26 adet link gelmiş.

Reklamlar