Pazartesi, Haziran 04, 2007

Knight-Online, herşeyin zarar!

Bu Kinght-Online adlı oyun iyi güzel bir oyun gibi görünsede bir çok yönden zararları var. Eşinizden fırça yemekte buna dahil.

Doctus.net'te bir kaç gün önce biri KnightOnline'da virüs olup olamayacağını sordu. Ben pek önemsemedim, niye önemseyecektim ki. Bırakmıştım çünkü bu oyunu ve bir daha aslada oyanamayacaktım. Fakat bizim acar Doctus.net müdavimleri olayın peşini bırakmamışlar ve şu socuca varmışlar.

Knight-Online Client içinde ProAGENT adlı bir zararlı öbeklenmiş. Bu zararlıdan, programı Download.com gibi sitelerden indiren 8 milyon kadar kişinin etkilenebileceğini söylüyorlar.




Detaylar için lütfen tıklayınız.

Kaynak: blog.doctus.net

Etiketler: , ,

Cumartesi, Ocak 06, 2007

Delphi ve veritabanı uygulamaları ile milyoner olmak!

Wanna be a Delphi Database developer Millionaire?
Ever wonder what "Who Wants to be a Millionaire" might look like if there were only Delphi database (ADO, dbGO) programming questions?

delphi.about.com sitesinde bir yazı var. Sizi bir teste tabi tutuyor. Bu testte Delphi ile Veritabanı uygulamaları konusundaki beceri ve bilginizi sınayabilirsiniz. Tabi bu test sonucunda, delphi ile veritabanı uygulamalarında bir milyoner olup olamayacağınıza karar vereceksiniz.

Bence önemli bir test, bundan önce yine delphi.about.com'da bir test daha vardı. Delphi'de GURU musunuz? gibilerinden. Böyle testler insana özgüvenini sağlamasında faydalı oluyor. 20 yılı aşkındır programlama ile uğraşmama rağmen, zaman zaman kendimi EZİK gibi hissedebiliyorum, böyle testler ile en azından kendimi aynanın karşısında gibi görebiliyor ve öz güvenimi yakalıyorum. Hadi teste başlıyalım..


Test sonuçları yazının sonunda verilmiştir. Sorular ve cevaplar delphi.about.com'daki orjinal testten alınmıştır. Çeviri haricindeki diğer hatalar için lütfen delphi.about.com'u muhattab alınız. Eğer benim tercümemde bir hata var ise lütfen bildiriniz.




Başarılar diliyorum.
  1. Basit ifade ile bir veritabanı:

    a) Bir sistemdeki tüm dosyaların koleksiyonudur.
    b) Bir klasör içindeki tüm dosyaların koleksiyonudur.
    c) DBF uzantılı tüm dosyaların koleksiyonudur.
    d) İlgili verilerin (data) bir koleksiyonudur.
  2. Delphi ile farklı tipteki veritabanlarına bağlanabiliyoruz. Microsoft'un ADO adlı veritabanı arabirimi:

    a) Microsoft'un BDE sürücüleri takımıdır.
    b) Bir sürücüdeki DAO ve RDO'dur.
    c) Size çeşitli veritabanlarına erişim iznini veren "COM bileşenleri" takımıdır.
    d) MS Access erişimi sağlayan takım setidir.
  3. Delphi'de ADO kullanarak, bir MS Access tablosundaki verilere erişim (okuma ve yazma) esnasında; en az hangi üç bileşeni uygulamamızdaki formun üstüne eklemeliyiz?

    a) TTable, TQuery, TDBGrid
    b) TADOTable, TDbGrid, TDataSource
    c) TDataSource, TADOTable, TADOConnection
    d) TDbGrid, TDBEdit, TADOQuery
  4. Açıkçası Delphi'de ADO ile bir MS Access veritabanından veri alabilmek için, ConnectionString özelliğini tanımlamamız gerekiyor. Bir ConnectionString özelliği ise:

    a) Veritabanının fiziki olarak depolandığı yeri ve ona nasıl erişeceğimizi gösterir.
    b) Bir BDE takma adıdır.
    c) MDB dosyası ve klasörünün yerini işaret eder.
    d) Tüm veritabanı bileşenleri ile birlikte birbiren bağlar.
  5. TADOConnection bileşeninin ana amacı:

    a) Veritabanından bir veriyi görüntülemektir.
    b) Veritabanındaki bir sorguya bağlanmaktır.
    c) ADO veri deposu ile bir bağlantıyı kurarmaktır.
    d) Verinin görüntülendiği görsel veri-farkındalığı bileşenlerine veritakımı bileşenlerini bağdaştırır.
  6. DBNavigator bileşeni:

    a) INSERT, DELETE ve CANCEL gibi işlemleri sağlar.
    b) Bir veritabanı bağlantısı yoluyla, tüm veritabanı bileşenlerini yönlendirir.
    c) Basit ve dostça, kayıt-kümesi (recordset) yönlendirilmesi aracıdır.
    d) Veritabanı rapor oluşturmak için kullanılır.
  7. TField bileşen(ler)i nedir?

    a) Çalışma anında, veri-kümesinin işaret ettiği görsel olmayan nesneleridir.
    b) Bir veri-kümesi içinde veriyi düzenlemek üzere TEdit'den türetilen bilşenlerdir.
    c) TADODataset ile bir veri-kümesi içindeki her bir alana bağlantıyı sağlayan görsel olmayan bileşenlerdir.
    d) Bir DBGrid içindeki herbir veri-kümesinin gösterimidir.
  8. Ne zaman ki bir veritabanı tablosundaki tüm satırlara erişebilmek için kullandığımız TADOTable bileşeni ile hangi metodu kullanarak veri alımını sağlıyabiliriz.

    a) TADOTable.Open
    b) TADOTable.OpenTable
    c) TADOTable.SetActive
    d) TADOTable.GetData
  9. Sadece MAAŞ alanı bulunan bir veritabanı tablosuna bağlı ADOTable1 adlı bileşeniniz var diyelim. Bu tabloda sadece bir alan var (MAAŞ). Buna göre aşağıdakilerden hangisi MAAŞ adlı alandaki değere ulaşmamızın doğru yolu değildir?

    a) ADOTable1.GetValueOf(Salary)
    b) ADOTable1Salary.Value
    c) ADOTable1.Fields[0].Value
    d) ADOTable1.FieldByName('Salary').Value
  10. Bir veri-kümesini (kayıt) düzenleme (edit) esnasında değişikliklerin uygulanması için kullandığımız metod nedir?

    a) SaveChanges
    b) Post
    c) Refresh
    d) Update
  11. Sorgu kullanarak bir ADO veritabanından bir veya birden çok tablo'dan veri çekebilmek için kullanılan bileşen hangisidir?

    a) TQuery
    b) TADOView
    c) TADOQueryTables
    d) TADOQuery
  12. Aşağıdaki yöntemlerden hangisi bir veri-kümesinde (dataset) ara-bul-getir (search) görevi yapmaz?
    Bu sorudaki şıkları değiştirdim, sanırım hatalı yada eksik ifade kullanılmıştı. Orjinal soru için tıkla

    a) Locate
    b) Lookup
    c) Seek
    d) FindFirst, FindPrev, FindNext, FindLast
  13. FILTER özelliği TRUE yapılmış bir TADOTable'ın kullanıldığı bir Client/Server uygulamanız var. Filitre kullanılması durumunda filitre:

    a) Client tarafından belirlenir.
    b) Server tarafından belirlenir.
    c) Her iki taraftan belirlenir.
    d) TADOTable'ın filitre özelliğini desteklemez.
  14. Eğer 15 alan içeren bir tablodan 4 alana ihtiyacınız varsa; neden TADOTable değilde, TADOQuery kullanırsınız?

    a) TADOTable ve filitre özelliğiyle daha iyi bir kullanım olurdu.
    b) Hayır, mutlaka TADOTable kullanırdım.
    c) TADOQuery ile belirli alanları geri döndürerek ağ trafiğini azaltır ve performansı arttırırdık.
    d) TADOQuery hızlıdır.
  15. TFiled.OnValidate olayının amacı nedir?

    a) OnBeforeValidate olayının tetiklenmesinden sonra eğer bir hata meydana gelmediyse; veri alanının başarıyla güncellenmesine olanak sağlar.
    b) Düzenleme amacıyla tetiklenen veri alanının biçimlendirilmesine izin verir.
    c) Görüntülenme amacıyla tetiklenen veri alanının biçimlendirilmesine izin verir.
    d) Verinin kaydedilmeden önce onun test edilmesine izin verir. Eğer girilen veri uygunsuz şekilde kaydedilmek istenirse, bir hata meydana gelir.
  16. İki alfanümerik alan içeren yeni bir tablo oluşturmak için aşağıdaki SQL komut dizilimlerinden hangisini kullanmalıyız?

    a) SELECT NEW Table (FirstField TEXT(20), SecondField TEXT(10))
    b) CREATE Table (FirstField TEXT(10), SecondField TEXT(10))
    c) CREATE NEW Table (FirstField STRING(10), SecondField STRING(10))
    d) ALTER Table (FirstField TEXT(10), SecondField TEXT(10))
  17. Bir uygulamanın, iki adet TADOQuery arasında asıl-detay (master-detail) ilişkilendirilmesine ihtiyaç vardır. Diyelim ki, asıl SQL sorgumuz ADOQuery1, DataSource1'den okuma yapıyor. Bu uygulama ile detay sorgu ADOQuery2 bileşenin DataSource özelliğini nasıl ayarlamalıyız?

    ADOQuery1.SQL.Text := 'select * from orders'
    ADOQuery2.SQL.Text := 'select * from items where orderNo = :orderNo'


    a) ADOQuery2.DataSource = DataSource1
    b) ADOQuery2.DataSource = DataSource2
    c) ADOQuery2.DataSource = ADOQuery1.SQL
    d) ADOQuery2.DataSet = DataSource1
  18. Hangisi veritabanı grafiksel raporları için güçlü bir araçtır.

    a) TDrawGrid
    b) TChart
    c) TDBChart
    d) TADOChart
  19. Başka bir tablodan veya önceden tanımlanmış değerler listesinden bir değer seçebilmemize imkan veren iki adet veri-farkındalığı olan kontrol bileşenleri hangileridir?

    Two data-aware controls that enable us to choose a value from another table or from a predefined list of values are

    a) TDBLookupListBox and TDBLookupComboBox
    b) TDBListBox and TDBComboBox
    c) TDBLookupListBox and TDBADOLookup
    d) TDBADOListBox and TDBADOComboBox
  20. Genellikle, ......... amacıyla bir TDataModule sınıfı kullanılmazdı.

    a) kodlama ve veri erişimi paylaşımı
    b) tasarım anında görsel düzenleme
    c) kod bakımı ve kuralların merkezileştirilmesi
    d) bir veritabanındaki TÜM tablolara erişim
  21. Aşağıdaki olay-tetikçilerinden hangisi TADODataset'e bağlı tipik bir HATA yordamı değildir?

    a) OnPostError
    b) OnFilterError
    c) OnEditError
    d) OnInsertError
  22. Veri kaynağına kaydet veya değişikliklerden vazgeçme yaptırımını TADOConnection ile beraber Delphi'de ADO'nun muamele (transaction) sürecinde şu üç metod kullanılır:

    a) BeginTransaction, CommitTrans and UndoChanges
    b) StartTrans, CommitTrans and UndoTrans
    c) BeginTrans, UpdateTrans and RollbackTrans
    d) BeginTrans, CommitTrans and RollbackTrans


Evet sabırla buraya kadar geldiyseniz, sonuç ne olursa olsun siz bu işi çok seviyorsunuz demektir. Tabi gerçekten teste katıldıysanız.

Hadi şimdi cevaplara bakalım. Eğer 22 sorunun hepsini doğru bildiyseniz siz bir ADO ile programlama konusunda GURU sayılıyormuşsunuz. (1-2 soru istisna, yanlış yapmış olabilirsiniz)

Cevaplar:
  1. D
  2. C
  3. B
  4. A
  5. C
  6. C
  7. A
  8. A
  9. A
  10. B
  11. D
  12. D
  13. A
  14. C
  15. D
  16. B
  17. A
  18. C
  19. A
  20. D
  21. B
  22. D

Etiketler: , , ,

Salı, Aralık 26, 2006

Doğal ama yasak: Pornografi

İnsanların yükselişinde tabularımızın faydası var mıdır bilinmez. Ancak Pornografiye karşı yasaklayıcı bir zihniyetin, insan üremesi bakımından çok faydalı olacağı kanaatindeyim.

İnsanlar her zaman birşeyleri elde etmek ister ve bunun için mücadele eder. Elde edildiğinde ise, çoğunlukla hemen sıkılırlar ve bir başka alternatife yönelirler. Cinsel hayatımızda da böyle şeylerin olması elbette doğaldır. Bu istekler elbette yeni şeyleri görerek ve bunları arzu ederek daha da kuvvetlenirler.


Bazen herşeyi bilmek ve görmek çok iyi olamayabiliyor. Tam tersi olarak da, hiç görmemek ve bilmemek de iyi olmayabiliyor. Cinsellik bunlardan biridir.

Ben pornografi diyorum, ama cinsellikte diyebiliriz. Ya da doğru bir ifadeyle seks yaşantısı diyelim.

Pornografi, herkes tarafından bilinen seks yaşantısının ifşa edilmiş halidir. Daha çok ticari emeller ile popülaritesini kazanmış daha sonra doğal bir davranış biçimine girerek WEB CAM ile kendimizi teşhir etme noktasına kadar gelmiştir.
Bildiğim kadarıyla hemen tüm semavi dinler, cinsellik konularında oldukça tutucu davranırlar. Semavi dinlerin temelinde insan vardır. Bu dinler elbette insanların kendi kendilerini kontrol edebilme ve kendilerini kullanabilme kitapçıkları gibidir. Bilinen bu semavi dinlere ait kitaplarda toplumsal yaşam ve toplumu oluşturan insanlar baz alınarak, kimi zaman öneri, kimi zaman ise bir ŞART niteliğinde emirler vardır. Bunlar elbette ALLAH tarafından bizlere gönderilen değerli bilgilerdir.

Değerlidir, çünkü yaratan; yaratılanı yaratılandan daha iyi bilir.

Doğa bir sistem üzerine kurulmuştur, bu sistem bir makina gibi düzenli şekilde çalışmak zorundadır. Sistemi bozacak herhangi birşey, sisteme bağlı hemen herşeyi etkiliyebilir. Üremekte sistemin getirdiği önemli şeylerden biridir.

Üreme aşamalarına bilimsel olarak yaklaştığınızda enterasan olgular ortaya çıkacağından eminim. Ama alalede bir bakış ile üreme aşamaların ilki olan İSTEK davranışının üremede çok etkili olduğunu söyleyebilirim. Biz burada üremeden bahsediyoruz.

Bir şeyi istemeden önce onu hayal etmemiz, istediğimiz şeyin elde edilme sürecini hızlandırır. Hayallerimiz, gördüklerimiz ve bildiklerimiz ile doğru orantılıdır. Hemen hiç birşey bilmeyen bir kişi rüyasında ya da hayallerinde bir helikopter göremez. Çünkü böyle bir bilgi birikimine sahip değildir.

Cinsel yaşantımızda, cinsellikle alakalı bilinenlerin abartı derecesine çıkartılması ve görsel olarak tasavvur edilemez boyutlara çıkılması, bizdeki İSTEK oluşma kriterlerini çok yukarılara çıkartacaktır. Çünkü hayallerimiz daha da büyük olacak. İsteklerimiz kabul göremez dereceye çıkacak, imkansıza yakınlaşacak. Bu imkansızları yapmak için TABU'ları yıkmak için uğraşacağız. Dernekler kuracağız, isteklerimizi kabullendirecek zeminler sağlıyacağız. Olmayacak ve SAPIK olarak anılacağız. Toplum bunu kaldıramayacak.

Tüm bu anlattıklarım elbette günümüz konusu olan internet pornografisinin engellenmesi ile alakalıdır. Biz hep çocuklarımızı internetin zararlarından koruyalım derken, kendimizi nelerden koruyacağımızdan hiç bahsetmiyoruz. En azından ben bu yazıda bunlara dilim döndüğünce değindim.

Temelde, çocuklarımızı pornografiden -pornografik görüntülerden- korumak için kullandığımız programlar aslında, bizleri çocuklara bunları izah edememe utancından koruyorlar.

Belki utanç kelimesi bir çoklarınız için kaba kaçmış olabilir, ama bir çoğumuz için gerçektende çocuklarımızın bizlere cinsel konularda sorular sorması bizi utandırır. Gereksiz tepkiler verebileceğimiz gibi, mantıklı yaklaşımlar yapabilmemiz de mümkündür.

Bir internet filitresi kullanın veya kullanmayın. Ne olursa olsun, şu günün oluşumlarına bakarsak çocuklar eninde sonunda pornografik bir görüntü ile karşılaşacaklar. Peki siz buna hazır mısınız?

Şunu bilmelisiniz, kim yapmış olursa olsun, internet filitreleri sadece filitreleme yüzdelerini artırabilirler. Asla %100 filitreleme yapılamaz.

Hiç bir filitre kullanmayıp, çocukları tehlikenin içine atmakta mümkün değil elbet. Ancak kendinizi yine de hazırlayın: Bir gün çocuğunuz size gördüğü şeyi soracaktır.

Saygılar.

Etiketler: , , ,

Perşembe, Ağustos 31, 2006

ASP.NET; Türkçe sorunu (Unicode problem)

Hemen ilk ASP.NET'e başlayanlar bilirler, Türkçe karakterlerde sorunlar çıkıyor. Aslında sadece Türkçe değil, diğer dillerde de sorunlar çıkıyordur. Ben hep bilnen yöntemleri yaptığım halde bazen istemediğimiz sonuçlar çıktığını gördüm.

Şöyleki, eğer sadece Türkçe bir site yapıyorsanız, web.config dosyasını bilinen şekilde düzeltmeniz yeterli olmaktadır. Ancak bir çok dili destekleyecek bir site yapmak istediğinizde, işler karmaşıklaşıyor.

Ben burada şunun için şu kodu bunun için bu kodu yazın demiyeceğim. Çok yakın bir zamanda farkettiğim ve gerçekten GEYİK bir sebepten ötürü Unicode karakterlerin görünmeme sorunun çözümünü anlatacağım. Bu sorunun tespitinde yıllar önce Unix sistemde bir Perl scripti yazarken karşılaşmıştım:

Hazır bir mail gönderme scripti ile kendi yazdığım bir kaç kodu ilave ederek bir form gönderme olayı yapmak istiyordum. Kodları güzelce yazıyorum, ama bir türlü çalışmıyordu. Merhaba dünya gibi basit bir kodu bile çalıştıramadığımı görmüştüm. Sonra şunu farkettim, ben NOTEPAD ile yazıp Unix'e upload ettiğimde script çalışmıyordu. Ama MS-DOS Edit programı ile düzenleyip sonra da upload ettiğimde script gayet güzel çalışıyordu.

Bu tamamen işletim sistemleri arasındaki TEXT format farklığıydı. Evet Unix'ten gelen TEXT metin NOTEPAD ile düzgün açılıyordu, ama NOTPAD ile kaydedilen metin Unix'te düzgün çalışmıyordu. Fazlada kafamı yormadım, ve buna hep dikkat ettim o dönemlerde.

Şöyle basit bir ASP.NET formu yapıyordum, bir etiket ve etikete "ŞİŞLİ YAĞMUR ISLAK" yazıyordum, sonra bu sayfayı çağırdığımda bu metin bozuk görünüyordu. Unix sistemde başıma gelen olayı hatırladım ve ben ASP.NET sayfalarını (dosya formatı) ANSI olarak kaydettiğimi düşündüm. Delphi 2005'te acaba bunu UTF-8 olarak kaydetmenin bir yolu var mı diye düşünürken, pat kapı çaldı kimo dedim, dışarıdaki ses "abi ben contex menü, hani sağ düğmeye basınca açılıyor ya" birden şimşek çaktı kafamda ve editörün üstündeyken sağ düğmeye basıp menüyü açtım orada FORMAT seçeniği içinden UTF-8'i gördüm. Ve öylece dosyayı kaydettim. Artık ASP.NET örnek sayfam UTF-8 formatında keydedilmişti. Hemen sayfayı çağırdım; tam istediğim sonuç karşıma gelmişti.

İşte tek sorun buymuş meğerse. Zaten varsayılan olarak web.config içindeki kodlarda UTF-8 tanımlaması mevcut, hiç edit yapmanıza gerek yok.



Yapnamız gerekenler sırasıyla:


  • "web.config" dosyasında aşağıdaki satırları gösterildiği değiştirin. globalization yazan satırı silip aşağıdakini yazın.


.
.
.
<system.web>

. . .
<globalization
fileEncoding="utf-8"
requestEncoding="utf-8"
responseEncoding="utf-8"
/> </system.web> . .
.
  • ASPX dosyanızı UTF-8 formatında kaydedin. Delphi 2005 kullanıyorsanız, CODE sayfasına geçip, sayfanın ortasındayken mouse sağ düğmeye basın ve çıkan menüden FILE FORMAT seçeniği içindeki UTF-8'i seçiniz.

Buraya kadar olan kısımdakiler bize ne sağladı?
Şimdi ASP.NET formu üstüne ister Türkçe ister Japonca ya da başka bir dil ile yazacağımız metinlerin düzgün çıkması sağlıyor. Mesela formun üstüne bir Button koyup, button'a basılında bir etiketin içine "ŞİŞLİ YAĞMUR" yazdırmak istersek düzgün çıkacaktır. Hoş bunun için ikinci anlattığıma gerek kalmıyor. Enterasandır, .ASPX file format ile .ASPX'e bağlı kodarkası file format farklı oluyor. İkinci anlattığım yani .ASPX dosyasını (kodarkası bir başka deyişle CODEBEHIND olarak ayrı duran .PAS, .VB kastetmiyorum) UTF-8 olarak kaydederek, ASP.NET formu üstüne manuel olarak yazdığınız Türkçe vb. dillerin düzgün çıkmasına olanak sağlıyoruz. web.config içindeki ayar ise, çıktı olarak üretilecek karakter setini tanımlıyor. Hani, düğmeye basınca bir etiketin içine "ŞİŞLİ YAĞMUR" metnini düzgün görünmesi için web.config içindeki değişikliğe ihtiyaç var. Gelelim diğer önemli konuya. Bu ASP.NET formu içindeki bir editbox'a Türkçe karakter yazıp gerek VeriTabanına gerekse de başka bir amaçla düzgün olarak iletilmesi için gerekli olan META TAG'dır.
  • Şimdi aşağıdaki META TAG'ı .ASPX içine yerleştirin.


<meta http-equiv="content-type" content="text/html; charset=UTF-8">

Şimdilik hepsi bu kadar. Aşağıdaki linklerde UTF-8 olarak keydedilmiş ve kaydedilmemiş iki örnek veriyorum. Özellikle FILE FORMAT olayı için iyi birer örnek olacaktır.
NO UNICODE EXAMPLE
UNICODE EXAMPLE
SOURCE CODES
Bu noktadan sonra şunuda belirtmek istiyorum. Daha önceden, Visual Studio ile ASP.NET sitesi yaparken manuel olarak yazılan yazılarda hiç bir sorun olmamıştı. Bu kullanılan IDE'ye göre farklılıklar olabileceğini gösteriyor. Normalde Delphi IDE'si ile form üstüne Japonca bir karakter yazıp SAVE derseniz, size bu dosyayı UNICODE olarak saklıyayım mı diyor. Visual Studio ise bunu sormuyor olsa gerek ki, düzgün çalışıyor. Ancak Delphi Türkçe bir metni Unicode olarak görmemiş olacak ki, dosyayı Unicode olarak saklamak istermisin siye sormuyor. Bunu ayrıca FILE FORMAT ile UTF-8 olarak belirterek çözüyoruz.
Sizinde anlayacağınız gibi, kullanılan araçlara göre farklılıklar olabiliyor. Kullandığımız araçları iyi bilmemiz bizlerin iyi şeyler ortaya çıkartmasına neden olacaktır.
Eğer bir ASP.NET sayfası hazırlarken kullandığınız IDE zaten UTF-8 formatında dosyayı kaydediyorsa -ki bunu manuel olarak formun üstüne yazdığınız bir metin ile test edebilirsiniz- siz sadece META TAG ve web.config değişikliklerini yapınız.

Etiketler: , , ,