Bilmeyenler için jQuery bir javascript çatısıdır. (framework). Bilidiğiniz üzere web ortamında kullanıcı tarafında yapmamız gereken aksiyonları javascript ile yapabiliyoruz. Web 2.0 ile birlikte kullanıcı tarafındaki özellikler bir hayli arttı ve önem kazandı. Bu olayın şüphesiz öncüleri Facebook ve Google gibi isimler oldu. Hayatımıza giren yeni özelleklerden bazıları şu şekilde; sayfa yeniden yüklenmeden sunucu taraflı işlemler yapabilme (ajax), sekme (tab), aramalarda otomatik tamamlama (auto complete) gibi.. Asp.Net geliştiricilerinin bildiği üzere Ajax Control Kit ile yukarda bahsettiğim işleri çok basit bir şekilde projelerimize uygulayabiliyoruz. Böyle bir imkan varken neden jQuery kullanalım dimi ? Bunun bir çok sebebi bulunuyor, isterseniz bunlara bir göz atalım.
Esneklik: Ajax control kit ile kalıpların az dışına taşmaya kalktığınızda önümüze öyle engeller çıkarki takla üzerine takla atmak zorunda kalırız. jQuery ile bir satırlık kod ile yapacağınız şeyi satırlarca kod yazarak ancak çözeriz, çoğu zaman çözemeyiz bile.
Diğer scriptlerle olan çakışmalar: Projeniz bitmek üzeridir ve sizden istenen son bir özelliğin daha eklenmesi istenir. İnterneti didik didik ararsınız ve bu iş için mükemmel bir script bulursunuz. Scripti projenizde çalıştırmaya kalkarsınız fakat bir türlü çalışmaz çünkü control kit ile çakışmıştır. Durupda pirincin taşını ayıklamak çok uzun zaman alır hatta çoğu zaman taşı ayıklayamazsınız bile :) Burda şunu söyleyebilirsiniz, jQuery kullanılan bir sayfaya farklı bir script eklemeye çalıştığımızda da bu durumun olması olasıdır. Evet doğru fakat bu durum ajax control kit kadar sık karşılaşılan bir durum değildir. Ayrıca jQuery kullanıyorsanız sayfanıza çoğu zaman ekstradan bir script ekleme ihtiyacı duymazsınız, ya kendiniz yazarsınız yada yüzlerce eklentiden bir tanesini alır direk kullanır yada isteğinize göre düzenleyebilirsiniz.
Performans: Siz kullanmasanız bile en basit işler için bile ajax control kit arka planda öyle şeyleri sayfanıza yüklerki performans bu durumdan ciddi anlamda etkilenir. Hatta çoğumuzun başına tarayıcının kitlenmesi gibi durumlar gelmiştir. jQuery ile herşeyin kontrolü bizdedir, biz ne yazarsak o olur, bu yüzden çok daha verimli çalışır.
Tarayıcı uyumluluğu: Bu web tasarımı ile uğraşan herkesin ortak sıkıntısıdır, zaten tasarımı taracıya uydurmak için çeşitli taklalar atıyoruz birde bunun içine ajax control kit girince işkence kaçınılmaz oluyor. Çoğu zamanda elleriniz kollarınız bağlı hiç bir şey yapamıyorsunuz. jQuery tarafında ise böyle bir derdiniz yok bir kere yazın heryerde çalışsın, mobil cihaz tarayıcılarında bile..
Kontrol edilebilirlilik: Eğer yapılan iş sizin kontrolünüz dışındaysa koda, ekleme, çıkarma veya düzenleme gibi işlemler çok zordur. Yeni açtığınız projenize jquery.js yi ekledikten sonra dışarıdan hiç bir scripte gerek kalmadan projenizi sonlandırabilirsiniz. Kodunu yazamayacağınız şeyler içinse jquery eklentilerini gönül rahatlığıyla kullanabilirsiniz.
jQuery dünyasına ilk adımı atmak biraz zor gelebilir fakat içine girdiğinizde kullanması ve kodlanması oldukça kolay bir çatı olduğunu göreceksiniz. Yaptığınız işten bir okadar daha zevk alacağınızın garantisinide ben veriyorum. Şimdilik benden bu kadar ilerleyen günlerde tekrar görüşmek üzere, hoşçakalın..
En son yazımı 31.12.2009 tarihinde yazmışım, pehh epeyde olmuş ! Yazmamaktan çok sıkıldım, bundan sonra haftada en az bir yazı yazmayı planlıyorum. Yazılarımın ağırlığını jQuery ve Asp.net oluşturacak. Geçen süre içerisinde bu konularda epeyce bir şeyler öğrendim, bunları sizlerle paylaşmaya çalışacağım. Birde Blog Ödülleri 2010 var, katılmayı düşünmüyorum ama katılmam yönünde çevremden ciddi anlamda bir baskı var. Düşünmek için önümde 8-9 gün daha var bakalım ne olur, bu arada BÖ! yetkililerine sesleniyorum lütfen bu organizasyonu Aöf sınavlarının olacağa döneme getirmeyin :) Birazdan ders çalıp ardından soru çözeceğim, sonrada üzerimi kuvvetlice giyip Trabzonspor – Galatasaray maçına doğru yollanacağım. Heh tamda bu sırada çayım geldi ! :D Burayı çok özlemişim yahu, tekrar görüşmek üzere..
Geliştirme ortamı ve kullanılan süreçler aşağıdaki gibidir; ° Bilgisayarlara Pardus 2009 işletim sisteminin kurulması ° Bilgisayarlarda tam yetkili (ssh protokollü) aynı kullanıcı adı ve şifreye sahip kullanıcı oluşturulması. ° Bilgisayarlara gcc (C derleyicisi) ve OpenMPI (Mesaj Tabanlı Paralel Programlama Modeli) paketlerinin kurulması. ° Pi sayısını hesaplayan kodun MPI kütüphanesi ile C programlama dili kullanılarak yazılması ° Programın derlenmesi $mpicc MPIdeneme.c – o ck ° Programın tek bilgisayarda çalıştırılması $mpirun –np 10 ck ° Programın birden fazla makinada birden fazla süreçle çalıştırılması $mpirun –H 192.168.1.5 –H 192.168.1.3 –np 10 ck
MPI Nedir? MPI başta dağıtık bellekli sistemler olmak üzere paralel algoritma yazmaya yarayan bir kütüphane standardıdır.Bir programlama dili değildir.MPI kütüphanelerinin C, C++ ve Fortran dili aileleri için sürümleri bulunmaktadır.MPI, “mesaj geçme” mantığına dayalıdır. Değişik işlemciler, birbirleriyle iletiler sayesinde haberleşirler.
MPI kütüphanesine ait bazı fonskiyonlar;
MPI_Init(&argc,&argv) MPI_Init fonksiyonunu bütün kodlarınıza eklemeniz gerekmektedir. MPI_Init fonksiyonuna komut satırından da parametre verebilirsiniz ama mecbur değilsiniz. MPI_Init size bir değer dönmektedir bu “MPI_SUCCESS” olursa kod geri kalan MPI_X fonksiyonlarını kullanabilecektir, eğer bu değer dönmezse MPI_X fonksiyonlarını kullanamazsınız.
MPI_Comm_size(comm,&size) Bu fonksiyonumuz proses sayısını bize vermektedir. Genellikle “comm” kısmına MPI_COMM_WORLD üst fonksiyonu yazılmaktadır. MPI_Comm_rank(comm,&rank) Bu MPI fonksiyonu çağıran prosesin sırasını vermektedir. Başlangıçta bütün prosesler 0 veya -1 değerlerini almaktadır. Daha sonra MPI tarafından sıraya sokulunca bütün prosesler numaralandırılmaktadır. Aşağıda ki örneğimizde göreceğimiz gibi makineler 0 dan başlayarak rank(sıra) alacaklardır.
MPI_Get_processor_name(&name,&resultlength) İşlemcinin adını ve adın uzunluğunu dönmektedir.
MPI_Wtime( ) Double deger olarak paralel kodun çalışmaya başlamasından sonra geçen zamanı vermektedir.
MPI_Send(buf, count, datatype, dest, tag, comm) Bir sürecin bir diğerine değişken göndermek istediği zaman bu fonksiyon kullanılır. Tek bir değişken gönderilebildiği gibi tamamen bir dizi veya bir dizinin bir kısmı da bir kerede gönderilebilir.
MPI_Recv(buf, count, datatype, source, tag, comm, status) Bir süreç, başka bir sürecin gönderdiği değişkeni veya değişkenleri bu fonksiyon yardımıyla alır.
MPI_Finalize( ) Bütün işlemlerimizden sonra MPI_Finalize diyerek işlemlerimizi sonlandırıyoruz.
MPI_REDUCE(data, result, count, type, op, root,comm) Bu fonksiyonumuz N tane makinede oluşmuş sonuçları derleyerek ana proses’ te result dizisinde saklamaktadır. Geri kalan değişkenlerden count “reduce”(alınmış veri) sayısını, type alınan verilerin türlerini, op yapılan alınma işlemlerinin sonuçlarını, root verilerin alındığı prosesleri ve son olarak comm haberleşme ortamının adını (MPI_COMM_WORLD) almaktadır.
Diye girmek isterdim fakat benim için yılın sonu, başı ve ortası arasında çok fazla bir fark bulunmuyor. Beni dini bayramlarımız daha çok ilgilendiriyor. Ama görüyorum ki bayramda evine şeker almayan insanlar yıl başında koli koli içkileri evlerine taşıyabiliyor. Her neyse herkes istediği gibi yaşamakta özgür, sadece aklımdaydı ekledim.
Kabaca 2009 da neler gördüm geçirdim bunları yazayım. Özellikle Aralık ayı bir hayli hareketliydi. Amcamın oğlunu (Samet UĞRAŞKAN) askere yollamamız benim için en önemli olaydı. İlk kez bir yakınımı askere uğurlamış olmamdan da olabilir, kendini manevi kardeşim gibi görmemden de olabilir bu olay her nekadar kimseye çaktırmamaya çalışsamda beni bir hayli etkiledi. Koçuma burdan hayırlı teskereler diliyor ve darısı benimde başıma diyorum.
2009′ u genel olarak ele aldığımda, bilgisayarımın masa üstü kağıdı yapacak kadar beni bunaltan bir “Kötü inanları tanıma senesi” oldu desem sanırım çok güzel bir tanım olur. Detaya çok fazla inmek istemiyorum. Ya büyüyorum ve insanları daha iyi anlıyorum yada insanlar gerçek anlamda raydan çıktı. Belkide benim bir kuruntumdur.
Annemin de dediği gibi ne para ne pul en değerli servet sağlık ! Allah’ ıma sonsuz şükürler olsun ki ailecek ciddi bir sağlık problemi olmadan bir seneyi daha geride bıraktık. En güzeli işte buydu, çünkü sağlığın yanında geri kala her ama her şey teferruattan bir adım ileri geçemez.. Hayatımdaki kritik noktalardan biri olan okulda fena gitmiyor, buda beni ayrı sevindiriyor. İnşallah 2010′ da da bu olaylar tekrarlanır.
Şirketi ele almadan geçmem mümkün değil, yukarıda da belirttiğim gibi Aralık ayı bir hayli hareketliydi. Yazılım işine gerekli ağırlığı yavaş yavaş vermeye başladık. Emre Tekelioğlu ve Emrah Karaalan‘ la artık bir aradayız, zaten bir aradaydık fakat şimdilerde aynı çatı altındayız :) Çok güzel ve heyecanlı bir ekip olduğumuza inanıyorum. İnşallah hedeflediğimiz yerlere gelebilir ve insanlara bu işin sadece büyük şehirlerde kokonaca yapılmadığını gösterebiliriz ki bundan en ufak şüphemiz yok. (Kokonaca ifadesini farklı bir yazıda ele alacağım.)
2009′ un bana kazandırdığı en güzel şeylerden biride Yunus Emre Çavuşoğlu oldu. Her konuda fikir alış verişi yaptığımız, kısa zamanda çok şey paylaştığımız güzel insanada buradan sevgilerimi sunmak istiyorum.
Özetlemem gerekirse 2009 güzel bir yıldı. Hayatı biraz daha anladığım, biraz daha büyüdüğüm güzel bir yıl oldu. İnsanları, hayatı, gülmeyi, kod yazmayı değil ama yazacağım şeyi düşünmeyi çok seviyorum. Herkese sevdikleriyle mutlu, huzurlu ve barış dolu yeni bir yıl diliyorum.
Flash oyunlara hasta olduğumuz zaman zaman dile getiriyorum. Özellikle anlaşılır, basitlerine ayrı bir hastayım. Bu köprü oyunuda tam benim istediğim tarzdan bir oyun. İdaa ediyorum
başından kalkamayacaksınız. Oyundaki amaç çok basit, bir kaç materyal ile köprü kurup karşıdaki nesneleri hedefe taşıyacaksınız. Zaman zaman çok zorlanıp burası olmuyor
diyebilirsiniz ama hemen pes etmeyin, tümü geçiliyor :D Sol üst taraftaki ikona tıklayıp köprünüzü inşa ediyorsunuz, sonrasında yine sol üst kısımdaki butona tıklayıp yaptığınız köprüyü uyguluyorsunuz.
Geçtiğiniz bölümler otomatik olarak kaydedildiğinden kaldığınız bölümden de devam edebiliyorsunuz. Hadi iyi eğlenceler..
Bilgisayarınıza indirmek için buraya sağ tıklayıp hedefi farklı kaydet diyebilirsiniz.
Bilmeyenler için autocomplete nedir onu söyleyeyim, bir textbox’ a kelime girmeye başlıyorsunuz ve o ana kadar girilmiş olan karakterleri veritabanında arayıp alt tarafta açılan listede, ilgili kayıtları kullanıcıya sunan bir sistem. Google buna güzel bir örnek teşkil ediyor. Bu işlem için Ajax Control Toolkit içinde bulunan AutoComplete nesnesiyle de işimizi görebiliyoruz. Fakat ajax control araçlarıyla projemize bir şey eklediğimizde arka planda bir kod ve dosyada beraberinde projemize eklenmiş oluyor, bu durum büyük projelerde problemler çıkartabilir. Hemde zaman zaman tarayıcıdan tarayıcıya antin kuntin problemleride beraberinde getiriyor. Aklıma gelmişken, oldukçada yavaş çalışıyor. Kısacası kullanması basit fakat performansı çok kötü bir yöntem. Uzun zamandır projelerimde jQuery kullanıyorum ve en ufak bir problem dahi yaşamadım. Master sayfama jQuery’ i ekliyorum ve tüm projede istediğim herşeyi rahatlıkla yapabiliyorum. Farklı durumlar içinse bir sürü eklentisi bulunuyor. AutoComplete‘ de bunlardan biri. Eklentinin sayfasına buradan ulaşabilir, demosuna buradan bakabilirsiniz. Anlatacağım örnekte direk veritabanından arama yapacağız. Daha fazla uzatmadan kodlarımıza bakalım. İlk önce gerekli dosyaları indirip, projemize ekliyoruz.
Yukarıdaki kodda txtGizliAlan olarak gördüğümüz alan, seçtiğimiz kaydın id değerinin saklandığı alanımız. Yani ilgili kaydın id sini veritabanına yazacaksak burayı kullanıyoruz.
Ara.aspx sayfamız
protected void page_load(object sender, EventArgs e) {
string strKelime = Request.QueryString["q"];// burada gelen değeri sql enjeksiyondan korunmak için kontrol etmeyi unutmayın !
DataTable dt = veritabani.DataTableGetir("Select * from tabloAdi where aranacakAlan like '%" + strKelime + "%'");
foreach (DataRow dr in dt.Rows)
{
Response.Write(dr["alanAdi"].ToString() + "|" + dr["id"].ToString() + Environment.NewLine);
}
}
İşte bu kadar kolay ! Artık bizimde bir Autocomplete mekanızmamız var.