Nisan | 2007 | Yaz?l?m Notlar?
12/04/2007 YaşamTankut ?entürk
Nikah: 5 MayÄ±s 2007 Cumartesi Saat 16:00’da
ZÃ¼beyde HanÄ±m KÃ¼ltÃ¼r Merkezi
OÄŸuzhan Cad. OÄŸuzhan Ä°ÅŸ HanÄ±.
No: 19/1 GiriÅŸ FÄ±ndÄ±kzade / Ä°stanbul
(Vatan caddesi Migros’dan FÄ±ndÄ±kzade’ye doÄŸru Ã§Ä±karken solda, FÄ±ndÄ±kzade Tramvay duraÄŸÄ±ndan Vatan caddesine inerken saÄŸda.)
ÅžiÅŸirme Veri GiriÅŸi / Bulk Data Creation
06/04/2007 Bilgisayar, Ruby (Ruby on Rails)Tankut ?entürk
BugÃ¼n sizlerle acayip, acayip olduÄŸu kadar da zor bir konuyu paylaÅŸacaÄŸum. Son bir haftadÄ±r Ã§alÄ±ÅŸtÄ±ÄŸÄ±m firmada ‘ÅžiÅŸirme Veri GiriÅŸi’ (Bulk Data Creation) ile uÄŸraÅŸmaktayÄ±m. Uzun bir sÃ¼re deÄŸil mi ? evet uzun :) ama yapacak birÅŸey yok uzun sÃ¼rÃ¼yor iÅŸte :)
AklÄ±nÄ±zda hemen, bu konu neden Ã¶nemli, Ã¼zerinde neden Ã§alÄ±ÅŸÄ±yoruz ÅŸeklinde sorular oluÅŸabilir, oluÅŸmalÄ±dÄ±r da :) bu nedenle sizlere Ã¶ncelikle mÃ¼ÅŸterilerin ÅŸiÅŸirme veri giriÅŸini neden istediklerini izah etmeye Ã§alÄ±ÅŸayÄ±m;
– Ä°lk Ã¶rneÄŸimiz Microsoft’un Windows iÅŸletim sisteminden; iÅŸletim sistemine Ã§ok fazla program ekleyip kaldÄ±rdÄ±ÄŸÄ±mÄ±zda sistemin yavaÅŸladÄ±ÄŸÄ±nÄ± Registery dosyasÄ±nÄ±n ÅŸiÅŸmesine baÄŸlarÄ±z. ZamanÄ±nda Microsoft’da Ã§alÄ±ÅŸan arkadaÅŸlar, bu durumu test etmemiÅŸ veya test etmiÅŸ fakat sonuÃ§larÄ±nÄ± dikkate almamÄ±ÅŸlar ki biz halen ‘Windows’u nasÄ±l hÄ±zlÄ± kurarÄ±m’ gibi iÅŸlerle uÄŸraÅŸÄ±yoruz.
– 3~5 yÄ±ldÄ±r kullanÄ±lan yazÄ±lÄ±mlarÄ±nÄ±zda, Ã§ok uyduruk iÅŸlemlerin bile artÄ±k Ã§ok fazla zaman aldÄ±ÄŸÄ±na ÅŸahit olabilirsiniz. Bunun nedeni baÅŸlangÄ±Ã§ verinin Ã§ok kÃ¼Ã§Ã¼k olacaÄŸÄ±nÄ± dÃ¼ÅŸÃ¼nÃ¼p, veri tabanÄ±nda uygun indeksleri kullanmamÄ±z veya yazdÄ±ÄŸÄ±mÄ±z algoritmalarÄ±n p = n^2 (buradaki ‘n’ veri adedi, ‘p’ performans) veya buna benzer bir ÅŸekilde Ã§alÄ±ÅŸmasÄ± olabilir. Ã–rnek vermek gerekir ise; n = 1 ise, p = 1, n = 2 ise p = 4, n = 3 ise p = 9, n = 4 ise p = 16 olur… bu durumda 3~5 sene sonra n = 100 olduÄŸunda p = 10.000 olur ki… sistem artÄ±k Ã§alÄ±ÅŸmÄ±yor demektir. Elbetteki Ã¶rnekler daha da arttÄ±rÄ±labilir.
AkÄ±llÄ± yazÄ±lÄ±m mÃ¼ÅŸterilerinin artÄ±k bu soruyu sormaya baÅŸlamalarÄ±nÄ±n nedeni iÅŸte bunun gibi nedenler arkadaÅŸlar. Peki biz yazÄ±lÄ±mcÄ±lar bu durumda neler yapabiliriz. AklÄ±nÄ±za ‘Veri boyutu 2 katÄ±na Ã§Ä±karsa sistemin bunu iÅŸleme sÃ¼resi de 2 katÄ±na Ã§Ä±kar.’ gibi bir yaklaÅŸÄ±m gelebilir. Bu yanlÄ±ÅŸtÄ±r, bu ÅŸekilde olmamalÄ±dÄ±r. GÃ¼nÃ¼mÃ¼zdeki veri tabanÄ± uygulamalarÄ±nÄ± akÄ±lcÄ± kullanmak ve eÄŸer bu da yetmiyor ise, yazÄ±lÄ±ma arviÅŸleme yeteneÄŸi eklemek gerekir.
Veri tabanÄ± performansÄ± gÃ¼nÃ¼mÃ¼zde Ã§ok bÃ¼yÃ¼k problemler teÅŸkil etmemektedir. AsÄ±l problem, programÄ±n yazÄ±ldÄ±ÄŸÄ± algoritmanÄ±n ve yapÄ±lan dizaynÄ±n getirdiÄŸi kÄ±sÄ±tlamalardÄ±r. Ä°ÅŸte bu tÃ¼r kÄ±sÄ±tlamalarÄ± ve bunlara baÄŸlÄ± performans dÃ¼ÅŸÃ¼ÅŸlerini daha rahat yakalamak iÃ§in uzun vadeli Ã§alÄ±ÅŸacak olan sistemlerde ÅŸiÅŸirme veri giriÅŸi(bulk data creation) iÅŸlemi ile beraber performans sÄ±namasÄ± gerÃ§ekleÅŸtirilmelidir.
Evet tanÄ±mÄ± yaptÄ±ktan sonra aklÄ±nÄ±zda oluÅŸan bazÄ± karÄ±ÅŸÄ±klÄ±klarÄ± gidermek gerekir. Ã–ncelikle Ã–rnek Veri GiriÅŸi ile ÅžiÅŸirme Veri GiriÅŸi arasÄ±ndaki farkÄ± sizlere tarif etmem gerekiyor. Ã–rnek veri giriÅŸi; sistemin olanaklarÄ±nÄ± Ã§ok zorlamayacak ÅŸekilde, Ã¶rnek teÅŸkil edecek Ã§oklukta veri girmektir. En fazla sistemde oluÅŸabilecek bir aylÄ±k verinin oluÅŸturulmasÄ±dÄ±r. ÅžiÅŸirme Veri GiriÅŸi ise; Sistemde stres test yapmak ve data boyutlarÄ±nÄ±n hangi sevilere doÄŸru Ã§Ä±ktÄ±ÄŸÄ±nÄ±, en kÃ¶tÃ¼ koÅŸullarda veri tabanÄ± Ã¼zerinde yapÄ±lacak iÅŸlemlerin veya yazÄ±lmÄ±ÅŸ algoritmalarÄ±n ne kadar sÃ¼receklerini gÃ¶rebilmek iÃ§in yapÄ±lan iÅŸlemdir. Tahmini 2 veya 3 seneden daha az olmamak kaydÄ± ile veri giriÅŸ yapÄ±lmalÄ±dÄ±r. DiÄŸer bir deyiÅŸle Ã–rnek Veri GiriÅŸinin 30 veya 40 katÄ± kadar veri girilmesi gerekir. Girilen bilgiler en az Ã¶rnek veri giriÅŸinde olduÄŸu kadar mantÄ±klÄ± ve kendi iÃ§erisinde tutarlÄ± olmalÄ±dÄ±r.
Bu aÅŸamadan sonra sizlere nasÄ±l hÄ±zlÄ± ve mantÄ±klÄ± ÅŸiÅŸirme veya Ã¶rnek veri giriÅŸi nasÄ±l yaparsÄ±nÄ±z onlarÄ± tarif etmeye Ã§alÄ±ÅŸacaÄŸÄ±m. Bu iÅŸlem iÃ§in elbetteki Ruby’yi :) kullanacaÄŸÄ±z(.NET veya Java’yÄ± da kullanabilirdik ama henÃ¼z onlarda bu iÅŸlemler kolaylaÅŸmadÄ±.).
Bu iÅŸlemi Microsoft SQL Server iÃ§in gerÃ§ekleÅŸtireceÄŸiz. BÃ¶ylece Microsoft SQL Server iÃ§in ActiveRecord baÄŸlantÄ±sÄ±nÄ± da incele fÄ±rsatÄ± bulmuÅŸ oluruz. Ã–ncelikle sizlere neden ActiveRecord kullandÄ±ÄŸÄ±mÄ±zÄ± aÃ§Ä±klamam gerekir, daha Ã¶nceki ODBC yazÄ±larÄ±mda (1,2,3,4) belirtiÄŸim kÃ¼tÃ¼phane ile deÄŸilde, neden ActiveRecord ile gerÃ§ekleÅŸtiriyoruz. Ã‡Ã¼nkÃ¼ ODBC dÃ¼ÅŸÃ¼k seviyeli bir baÄŸlantÄ± prokolÃ¼dÃ¼r. Fakat ActiveRecord yÃ¼ksek seviyeli bir veri tabanÄ± ile Ruby arasÄ±nda bir eÅŸleme kÃ¼tÃ¼phanesidir. Yani ActiveRecord’da veri tabanÄ±nda bulunan tablolardan Ruby sÄ±nÄ±flarÄ± oluÅŸturulabilir, bu sÄ±nÄ±flar Ã¼zerinde ‘Insert’, ‘Delete’, ‘Update’ ve ‘Select’ gibi SQL iÅŸlemleri birkaÃ§ kÃ¼Ã§Ã¼k hareket ile gerÃ§ekleÅŸtirilebiliriz. Fakat ODBC bize bu ÅŸekilde bir yardÄ±mda bulunmaz, aynÄ± iÅŸlemleri ODBC kullanarak bizlerde gerÃ§ekleÅŸtirebiliriz, ama bunun iÃ§in kod yazmamÄ±z gerekir ki :) tembel adamÄ±n istiyeceÄŸi en son ÅŸeydir :). HazÄ±rÄ± var iÅŸte ActiveRecord :). EÄŸer ActiveRecord Ã¼zerinde hoÅŸumuza gitmeyen bÃ¶lÃ¼mler olursa Ruby’nin esnekliÄŸinden faydalanarak bunlarÄ± deÄŸiÅŸtirebiliriz. AyrÄ±ca ActiveRecord, ODBC gibi bir baÄŸlantÄ± kÃ¼tÃ¼phanesi deÄŸildir, tek baÅŸÄ±na herhangi bir veri tabanÄ±na baÄŸlanamaz fakat ODBC, ADO, DBI, OCI gibi birÃ§ok baÄŸlantÄ± kÃ¼tÃ¼phanesini kullanabilir.
ÅžiÅŸirme Veri GiriÅŸi / Bulk Data Creation yazısına devam et →
Ruby Bucak Semineri
02/04/2007 Bilgisayar, Ruby (Ruby on Rails)Tankut ?entürk
GeÃ§tiÄŸimiz hafta sonu Ã§ok gÃ¼zel bir organizasyona katÄ±ldÄ±k. Bu gÃ¼zel anÄ± bizlerle paylaÅŸtÄ±klarÄ± iÃ§in organizasyonu dÃ¼zenleyen Ã§ok deÄŸerli Ã¶ÄŸretim Ã¼yelerime ve katÄ±lÄ±mcÄ±lara Ã§ok teÅŸekkÃ¼r ederim. Burdur-Bucak’ta gerÃ§ekten Ã§ok gÃ¼zel, organize ve istekli insanlarla karÅŸÄ±laÅŸtÄ±k. UmarÄ±m bu istekleri devamlÄ± olur, eÄŸitimlerini baÅŸarÄ± ile tamamlar ve sektÃ¶rde Ã¶nemli yerlere gelirler. TÃ¼m ihtiyaÃ§larÄ±nÄ±n kendi ellerinde olduÄŸunu anladÄ±klarÄ±nÄ± tahmin ediyorum.
HÃ¼seyin GÃ¶mleksizoÄŸlu ile beraber Ã§Ä±ktÄ±ÄŸÄ±mÄ±z bu yolculukta, HÃ¼seyin’in bazÄ± Ã§ekinceleri ve ÅŸÃ¼pheleri vardÄ±, ama sorunsuz bir yolculuktan sonra Bucak’a vardÄ±r.
Merak edenler olabilir hemen anlatayÄ±m; Ä°stanbul-Bucak arasÄ±, uÃ§ak ve otobÃ¼s macerasÄ± :)
Ä°stanbul’dan 19:10’da kalkan Pegasus’a ait uÃ§aÄŸÄ±mÄ±z saat 20:10’da Antalya havaalanÄ±na indi. Daha sonrasÄ±nda HavaÅŸ’Ä±n servisi ile Antalya’nÄ±n diÄŸer ucunda bulunan otobÃ¼s terminaline gittik, vardÄ±ÄŸÄ±mÄ±zda saat 21:15 idi. Ä°stanbul’dan yaptÄ±ÄŸÄ±mÄ±z telefon gÃ¶rÃ¼ÅŸmelerinde 20:00’dan sonra Bucak’a gidemeyeceÄŸimizi kesin bir dille sÃ¶ylemiÅŸlerdi. Ama benim gazÄ±mla beraber HÃ¼seyin’de ikna olunca biz ÅŸansÄ±mÄ±zÄ± denemeye karar vermiÅŸtik, terminale gittiÄŸimizde, 2. sorduÄŸumuz kiÅŸiden 18 ytl karÅŸÄ±lÄ±ÄŸÄ±nda saat 22:00 otobÃ¼sÃ¼nde Bucak iÃ§in bilet almÄ±ÅŸtÄ±k. Bu kadar kolay bulmamÄ±za ÅŸaÅŸÄ±rarak bileti hemen aldÄ±ÄŸÄ±mÄ±z iÃ§in kendimize kÄ±zdÄ±k, hiÃ§ araÅŸtÄ±rmamÄ±ÅŸtÄ±k belki baÅŸka bir firmada 21:30 otobÃ¼sÃ¼nde yer vardÄ± :) neyse almÄ±ÅŸtÄ±k iÅŸte biletleri; saat 22:00’da otobÃ¼s kalktÄ± ve saat 23:00’da Bucak’taydÄ±k.
KÄ±sadan hisse durumuna indirecek olursak; tÃ¼m tur yetkililerinin veya otobÃ¼s iÅŸletmecilerinin o saatte gidemezsiniz dediÄŸi Ä°stanbul – Bucak arasÄ±nÄ± uÃ§ak + otobÃ¼s ile 4 saat gibi bir sÃ¼rede katettik :) mutluyuz, gururluyuz :)