Perşembe
Programcılar İçin Yazarlık Dersleri 2
Film yönetmenleri kendilerine gelen hikayeyi veya senaryoyu nasıl anlatacaklarına, hangi noktalara vurgu yapacaklarına, olayları nasıl sıralayacaklarına karar vermeden önce uzun çalışmalar yaparlar. Ne ki benzer çalışmayı programcılık üzerine yazanlar pek yapmıyorlar. Bildikleri konuları başlıyorlar anlatmaya. Tabi neyi nasıl anlatmak gerek sorusu üzerinde yeterinde kafa yormamış yazarların konuları anlatış şeklinin ve sırasının akıbeti çoğunlukla şans eseri kabul edilebilir olgunlukta oluyor. Bir önceki ders yani makaleyi okunabilir boyutta tutmak için kullandığım ölçülere göre 8. sayfada kesmiştim. Her ne kadar "yazdıklarım üzerine yazmak" çok zaman alsa bile Yazarlık Derslerini yazmayı sevdim. Belki C# 3.0 kitabımı baştan sona değerlendirip bir "Yazarlık Dersleri kitabı" hazırlarım.
Yazar Okurun İhtiyaç Duyduğu Tekniklere Mi Odaklanmalı?
Konu programcılık veya bir programlama dili üzerine yazmak olduğunda yazar temelde 2 kaygından etkilenir. Birinci kaygı; okurun muhtemel ihtiyaçlarını gözetip bilgi vermek ve çok kullanılan tekniklerden söz etmektir. Örneğin ADO.NET konulu bir kitap yazıyorsanız veya bir eğitim merkezinde hocalık yapıyorsanız okurların öğrencilerin hazırladıkları SQL Server veritabanını başka bilgisayara götürme ihtiyaçlarını öngörüp ona göre okuru ya da öğrencileri bilgilendirmeyi hedeflersiniz. Tabii okurların veya öğrencilerin konu programcılık olduğunda ileri ki günlerdeki muhtemel ihtiyaçlarının hepsini baştan öngörüp kitabın içeriğini oluşturmak mümkün olmadığına göre yazar kendince bazı seçimler yapar.
Yazarın veya hocanın programcılık anlatırken etkisinde kaldığı ikinci kaygı ise bazı kavramları veya işlemleri anlaşılabilir yapmak, okurun bu kavramları anlayabilmesidir. Eğer birincil amacınız programcılıkla ilgili bir kavramı, bir işlemi okurun veya öğrencinin anlaması ise, konuyu işlerken veya örnek verirken pratik değer aramaz, vereceğiniz örneğe okurun ileri ki günlerde ihtiyacı olur mu olmaz mı bakmazsınız. Örneğin .NET uyumlu programlama dillerinde Application sınıfı ile hiç ilgilenmeden profesyonel kalitede programlar yazmak mümkündür. Bu nedenledir ki birçok yerli yabancı kaynakta ya Application sınıfından söz edilmez ya da birkaç cümle ile geçiştirilir. Tabii Application sınıfının sık sık gerek duyulan bir kaç metodundan söz edilir ama bu söz etmede Application sınıfına vurgu yapılmaz. Örneğin uygulamanın çalışması sona erdirilirken gerek duyulan Exit() metodundan bir cümle ile söz edilir. Okurunuzu Application sınıfı hakkında mutlaka bilgilendirmek istiyorsanız belki de okurların hiçbir zaman kullanmaya gerek duymayacakları bazı işlemlerden söz edeceksiniz. Örneğin sanki Application sınıfı .NET Framework ile gelmiyormuş gibi davranıp, başka bir deyişle C++ programcıları gibi mesaj kuyruğu hazırlamak isteyebilirsiniz.
Gelelim bu derslerde sık sık atıfta bulunduğum C# 3.0 kitabıma: Bu kitapta zaman zaman anlattığım konunun kolay kavranmasını sağlamak için yaptığım veya anlattığım işlemlerin pratik değeri var mı yok mu göz ardı ettim. Örneğin Application sınıfı hakkında bilgi verilen bölümde birincil amaç Application sınıfı hakkında yazılanların anlaşılmasını sağlamak olduğundan zaman zaman pratik değeri olmayan işlemler yapılıp üzerinde konuşuldu. Örneğin .NET uygulamalarında Application sınıfının Run() metodu çok özel durumlar hariç yalnızca bir kez kullanılır. Run() metodunun işlevinin kavranması için henüz Application sonlanmamış iken Run() metodunu ikinci kez kullanılıp hata meydana gelmesine neden olup okurun konu üzerinde düşünmesi sağladım. Bu bağlamda yazarlara önerim şudur: Anlattığınız konu kolay anlaşılan ve arka planını bilmek gerekmeyen bir konu ise mümkünse verilen örneklerde pratik değer aranmalıdır. Anlatılan konu zor anlaşılan bir konu ise pratik değer kaygısı başlangıçta bir tarafa bırakılabilinir.
Ekran Görüntüleri Hangi Büyüklükte Olmalıdır?
1992 yılında dergilerde yayınlanan ilk yazılarımda ve 1994 yılında yayınlanan ilk kitabımda o günlerin kitaplarından farklı olarak ekran görüntülerine yer vermiştim. Memik Yanık'a hücum etmek isteyenlerin ilk enstrümanı şuydu: "Memik Yanık'ın kitaplarında ekran görüntülerinden başka bir şey yoktur". Şimdilerde bakıyorum da bırakınız ekran görüntüsüz programcılık kitabı bulmayı makale bulmak bile zor. Asıl sorun da tam burada başlıyor: Kitap metni içinde veya makalede ne sıklıkta ekran görüntüsü kullanılmalı, ekran görüntüleri hangi büyüklükteki olmalı, ekran görüntüsü sayfanın neresine konulmalıdır, okurun ekran görüntüsünü yazının parçasıymış gibi görmesi için neler yapılmalıdır? Bu gibi sorulardan "bi haber" olanların kitaplarında veya makalelerinde ekran görüntülerini işlevsel kullanabilmeleri şansa veya tesadüfe kalmıştır. İncelediğim birçok yerli yabancı kaynakta yazar ekran görüntülerini alıp kitaba konulmasını sağlamış. Ekran görüntüsünü alırken öyle özensiz davranıyorlar ki dikkatli incelerseniz şaşırırsınız. Örneğin yazarın birisi kitabında Visual Studio'nun ilk karşılaşılan penceresini okuruna göstermek için şöyle bir ekran görüntüsünü alıp kitabında kullanıyor.
Tabi bu ekran görüntüsünün orijinal genişliği çok fazla olduğu için ancak %50-60 oranında küçültüldüğü zaman kitaba sığabiliyor. Bu durumda ekran görüntüsünün üzerindeki yazıları ve pencere başlıklarını çıplak gözle okuyabilmek mümkün olamayacak. Memik Yanık tarafından kaleme alınan kitaplarda ise bu ekran görüntüsü aşağıdaki gibi olmaktadır. Tabi bu ekran görüntüsü kitapta fazla yer kaplamasın diye belli bir oradan küçültülüp öyle kullanılırdı.
Gerçekte yazdığım kitaplarda bu tip ekran görüntüleri daha küçüktür. Sanırım ne demek istediğim anlaşıldı. Ekran görüntüleriyle ilgili olarak yapılan bir başka yanlış ise şudur. Yazarımızın(yerli veya yabancı) MessageBox sınıfının Show() metodundan söz ettiğini varsayalım. Yazarımız kitabında muhtemelen aşağıdaki gibi bir ekran görüntüsü kullanır.
Dikkat edilirse bu ekran görüntüsü çok büyük değildir ve kitapta fazla yer kaplamaz. Birçoklarınıza bu normal gelir. Hal bu ki yukarıda verilen ekran görüntüsü %50-60 küçültülürken bu ekran görüntüsü olduğu gibi bırakılmış ve orijinal büyüklüğüyle kullanılmıştır. Yani ne büyütülmüş ne de küçültülmüştür. Bu ekran görüntüsü Memik Yanık tarafından yazılan bir kitapta kullanılsaydı aşağıdaki gibi olurdu. Çünkü Memik Yanık kitaplarında kullandığı bütün ekran görüntülerinin tümünü %30 ile 35 arasında değişen oranlarda küçültüp öyle kullanmaktadır. Çünkü Memik Yanık için en önemli parametre ekran görüntülerinin üzerindeki yazıların çıplak gözle ve gözlerinde bozukluk olmayanlar tarafından kolaylıkla okunabilmesidir.
Belki en doğrusu ekran görüntülerinin boyutları hakkında bilgi verirken yerli yabancı birkaç kitap kullanılan ekran görüntülerini buraya alıp üzerinde konuşmak olurdu. Ancak bu tercih Memik Yanık'ın suçlanmasına neden olurdu: Yazarlık dersi adı altında başka yazarların eksikliklerini bize anlatıyorsun derlerdi. Tam bu noktada bir yıl önce karşılaştığım trajik komik durumu size anlatacağım. Programcılık konulu bir forumda okurun birisi bir programcılık kitabı hakkında bilgi istiyordu; kitabı satın almadan forumun diğer üyelerinin görüşlerini almak istemişti. Konu dallanıp budaklanınca "söz konusu kitap elime geçince ciddi bir incelemeden geçirip fikirlerimi sizlerle paylaşırım" demiştim. Aradan henüz yarım saat geçmişken bir mail aldım: Maili gönderen söz konusu kitabı yayınlayan firmanın avukatıydı. Kitap hakkında konuşursam beni dava edeceklerini beyan ediyordu. Yani henüz görmediğim, içeriğinden haberdar olmadığım, tanımadığım bir yazarın kitabı hakkında ileri ki günlerde bir şeyler yazmam istenmiyordu. İşin garip tarafı bu mail bana ulaştıktan sonra birkaç ay sonra kitabı inceleme imkanım oldu. Baktım yazar konuya hakim ama bazı anlatım ve konuları sıralama sorunları var. Eğer ben o kitap hakkında yazsaydım adım gibi eminim ki yazar kitabının ikinci baskında büyük değişikliklere giderdi.
Şimdi ise 2. bir olayı anlatacağım. Bir gün bir yayınevinde oturuyordum. İçeriye kendisini tanımayıp ancak C üzerinde yazdığı kitaptan dolayı adını bildiğim bir yazar geldi. Tanışma faslından hemen sonra yazarımız gitti kitabının örneğini alıp geldi. Çünkü yakın bir zamanda kitabının yeni basımını hazırlamak istiyordu. Kitabında yapacağı ekleme veya çıkarmalar konusunda fikirlerimi almak istiyordu. Yarım saat içinde kitabının bazı sayfalarını inceledim kendisine önerilerde bulundum. Oldukça tecrübeli yazarımız bu önerileri tek tek not alıp gitti. Yarım saat içinde kitapta görebildiğim eksikleri, aksaklıkları tek tek saymıştım. Çünkü amacı kitabını daha iyi yapmaktı, amacı övgü duymak değildi.
Ekran Görüntüleri Nasıl Kullanılmalıdır?
Kitap metni içinde kullanılan ekran görüntülerinin büyüklüklerinden biraz söz ettikten sonra şimdi sırada ekran görüntülerini kullanma sıklığı ve işlevinin üzerinde biraz durmak gerekecek.
1995 yılında DOS ve Windows 3.1 ağırlıklı Herkes İçin Bilgisayar kitabımı yayınladığım günlerde bilgisayar ve programcılık kitaplarında ekran görüntüsü kullanımı pek yaygın değildi. Çünkü DOS ortamında ekran görüntüsü almak zahmetliydi. O zamanlarda kitaplarda ekran görüntülerine yer vermeme kimse bir şey dememişti. Bırakın itiraz edilmesini bu kitaplar okurlardan yoğun ilgi görmüştü. Ne zaman ki kitaplarımın sayısı fazlalaştı saldırılar başladı. Bazıları çeviri yaptığımı söylerken bazıları "kitaplarında ekran görüntüsünden başka bir şey yok" diyorlardı. Tabii bunları söyleyenler genelde Memik YANIK kitabı okumamış ve Memik Yanık kitaplarına ihtiyaç duymayan kişilerdi. Memik YANIK'a kızıyorlardı, bir konu hem de programcılık gibi teknik bir konunun bu kadar kolay öğrenilebilir olması insanları şaşırtıyordu. Neden Memik Yanık kitapları diğer yazarların kitaplarından daha kolay okunuyor, kolay anlaşılıyordu? Bu sorunun en kestirme cevabı; okuru ikna etmeye çalışırken karışık cümlelerden kaçınmak, yer yer ekran görüntülerini kullanmak, küçük tekrarlar yapmaktır.
Şimdi gelelim asıl konumuza. Yani ekran görüntüleri nerede nasıl kullanılmalıdır sorusuna cevap arayalım. Konumuz Delphi'de kod yazarak kontrolleri ilk yerleştirildikleri formdan başka bir forma taşımak olsun. Amacınız okurun hayal gücünü geliştirmek değilse yapmak istediğiniz işlemi veya amacımızı bir iki cümle ile ortaya koyduktan sonra 2 forma sahip bir Delphi projesi hazırlarsınız. Tabii kitabınızı şişirmeme gibi bir kaygınız varsa veya ekran görüntüleri konusunda özenli davranmayı ilke edinmişseniz kitap metni içinde ekran görüntüsü olarak kullanacağınız formların boyutlarına dikkat edersiniz.
Bazıları çıkıp diyecekler ki yukarıda bold yapılan cümle yeterince açık değil mi? Eğer okurunuz tıpkı üniversite seçme sınavındaki gibi konuya odaklanmışsa bu cümlenin yeterince açık ve anlaşılır olduğu söylenebilir. Daha doğrusu kolay okunma diye bir kaygınız yoksa veya hemen anlaşılma, hızlı okunma amaçlarınız yoksa yukarıdaki cümleden sonra formdan forma kontrol taşıyan Delphi kodunu verirsininiz olur biter. Bu durumda yazılanların programlama dilinin help metinlerinden bir farkı olmaz. Aşağıda verilen metni kendi cümlelerimle yazmış olmakla birlikte kaleme alırken başka yazarları taklit etmeye çalıştım. Konunun devamında ekran görüntülerini kullanıp kendi tarzımda anlatacağım.
Tam noktada Delphi ile ilgisi olmayan yazarlar ve yazar adayları için 2 cümle yazmam gerekiyor: Aşağıda hiç ilgilenmediğiniz, belki de bundan sonra hiç ilgilenmeyeceğiniz bir programla dili hakkında son derece teknik bir işlem hakkında bilgi verilmektedir. Bazı arkadaşlar tam bu noktada Delphi ile ilgili sayfaları atlayacaklardır. Nasıl ki lisede verilen matematik derslerinde ikide bir söylenip "türevin integralin hayatta bana ne faydası olacak, hangi işlemi yaparken kullanacağım?" diye fikirlerini beyan edenler bilim üretebilme becerisine sahip kişiler değillerse Delphi konulu bu metni okuma zahmetine katlanamayacak olanların iyi yazar olabilmeleri şüphelidir. Yazar olmak istiyorsan, yazdıklarım anlaşılsın istiyorsan öncelikle yabancısı olduğun konuları okuyabilme sabrını göstermen gerek. Üzerinde konuşacağım örnek metni metni italik yaptım.
Delphi'de bir formdaki nesneleri veya kontrolleri başka bir forma taşırken RemoveComponent ve InsertComponent metotları kullanılmaktadır. Form1'deki Edit1 ve Edit2'nin Parent özelliklerinde değişiklik yapılırsa Form2'nin üzerinde görüntülenirler.
procedure TForm1.AktarClick(Sender: TObject);
begin
Edit1.Parent := Form2;
Edit2.Parent := Form2;
end;
Şimdi ise Form2�de görüntülenen ilk 2 nesnenin silinmesini sağlayacağım.
procedure TForm1.SilClick(Sender: TObject);
begin
Form1.Components[1].Free;
Form1.Components[0].Free;
end;
Bu 2 satır sayesinde Form1'deki ilk 2 kontrol silinir. Koda dikkat ederseniz Edit1 ve Edit2 nesneleri Form2'nin üzerinde görünürken bu kontroller henüz Form1'e aittir veya Edit1 ile Edit2'nin sahibi Form1'dir. Bu nedenle Free metodu ile silme işlemini yaparken Form2 yerine Form1'ın adını yazdım. Şimdi RemoveComponent ve InsertComponent metotlarını bir yordama alıp öyle işleteceğim.
procedure TForm1.Uzaklastir(Bilesen: TComponent; Sahip: TComponent);
begin
Bilesen.Owner.RemoveComponent(Bilesen);
Sahip.InsertComponent(Bilesen);
end;
"Uzaklastir" adını verdiğim yordamı bu şekilde hazırladıktan sonra aşağıdaki gibi hazırlık yaptım. Bu kod sayesinde Form1'deki 2 Edit Form2'ye aktarılır.
procedure TForm1.AktarClick(Sender: TObject);
begin
Form1.Edit1.Parent := Form2;
Form1.Edit2.Parent := Form2;
Uzaklastir(Edit1, Form2);
Uzaklastir(Edit2, Form2);
end;
Aslında bu metin Delphi konusunda ortalama bilgiye sahip olanlar için son derece anlaşılırdır. Ne ki Delphi uzmanları dönüp bu metne bakmazlar bile. Onların burada yazılanları anlamaları için metindeki kod satırlarına uzaktan bir kaç saniye bakmaları yeterlidir. Biz yazarlar uzmanlar için kitap yazmadığımız için, başka bir deyişle yazdıklarımızla hiç ilgilenmeyecekleri baştan belli olanları gözeterek konuları kaleme almadığımız için uzmanların böyle bir metin karşısındaki yaklaşımlarını ölçü almayız. Hemen söyleyeyim ki yukarıda verilen kısacak metin ve birkaç satırlık kod Delphi'nin bileşen kavramının temelini oluşturuyor. Bu nedenle oldukça önemlidir. Önemli olduğu için de okurun yazılanları kavraması için ek açıklamalar yapılmalıdır. Üstelik bu ek açıklamalar pat diye yapılmamalıdır. Okur öncelikle olası sorunlarla yüz yüze getirilmelidir. Okur formlar arası nesne taşıma konusunda karşılaşacağı sorunlar hakkında bilgi sahibi yapıldıktan sonra çözümden söz edilmelidir.
Bu metni okuyan kişi Delphi uzmanı değilse(ki Delphi uzmanı zaten böyle bir metne dönüp bakmaz) yapılan işlemlerin geri planını merak eder. Belki de işin içinden çıkamaz. Bu konu bu şekilde anlatıldığı zaman anlaşılmama olasılığına karşı, başka bir deyişle anlaşılmayı garanti etmek için bu konuyu aşağıdaki gibi anlatmayı tercih ettim. Bir kez okursunuz, hem de hızlıca okursunuz ikna olmuş, konuyu kavramış halde başka konuya geçersiniz.
Delphi hakkında ortalamanın üzerinde bilgisi olan birisi bu metni gördüğünde büyük bir ihtimalle "yazar için kitabı şişirmiş, sayfaları ekran görüntüleri ile doldurmuş" diyecektir. Programcılığı meslek olarak seçmiş olanların ve programcılık üzerine yazanların gözden kaçırdıkları önemli bir nokta var: Programcılar hayal güçleri olağanüstü kişiler değildir. Bu nedenle zaman zaman ekran görüntülerine yer verip konudan kopmalarının önüne geçmek gerekir.
Nesneleri Bir Formdan Diğerine Taşımak
Delphi projelerinde bir formdaki kontrolleri başka bir forma taşırken RemoveComponent ve InsertComponent metotları kullanılmaktadır. Bu 2 metodun nasıl kullanıldığını anlatmak için 2 forma sahip bir proje hazırladım.
Bu ekran görüntüsü kitap veya makale metni içinde yaklaşık 5 satırlık yer kaplamaktadır. Başka bir deyişle kitapta bu büyüklükte bir ekran görüntüsüne yer verildiği zaman kitap metni 5 satırlık bir paragraf kadar artmış olur. Yazarın bu ekran görüntüsünü 2 satırda tarif edeceğini düşünürsek kitapta bu ekran görüntüsüne yer verilmekle gerçekte kitap metni 3 satır kadar artmış oluyor. Çünkü yukarıda verdiğim metne bakarsanız "2 forma sahip proje hazırladım" demekle yetindim. Eğer ekran görüntüsüne yer vermeseydim okurun hayal gücüne yaslanıp ekran görüntüsü verilen 2 formu uzun uzun tarif etmem gerekecekti. Tabi bazı yazarlar özensiz davranıp sanki artı bir faydası olacakmış gibi ekran görüntülerini kocaman kocaman alıyorlar sonra da küçültüyorlar. Bu durumda ekran görüntüsündeki yazıları okumak için büyütece gerek duyuluyor.
Çalışma anında ilk formdaki "Göster" düğmesi tıklandığında "Form2" ekrana getirilecek. Bu amaçla Unit2'yi Uses bloğunda Unit1'e dahil ettikten sonra "Goster" düğmesi için aşağıda verdiğim kodu yazdım.
procedure TForm1.GosterClick(Sender: TObject);
begin
Form2.Show;
end;
Çalışma anında "Aktar" düğmesi tıklandığında Edit1 ve Edit2'nin Parent özelliklerinde değişiklik yapılıp Form2'nin üzerinde görüntülenmesini sağlayacağım.
procedure TForm1.AktarClick(Sender: TObject);
begin
Edit1.Parent := Form2;
Edit2.Parent := Form2;
end;
Aşağıda verilen ekran görüntüsünü önce 'Göster', sonra 'Aktar' düğmelerini tıkladıktan sonra aldım. Bu sırada Edit1 ve Edit2 projedeki 2. formun üzerinde görünüyor olsalar bile bu 2 nesnenin sahibi henüz Form1'dir.
Gerçekte tam bu noktada Delphi programcıları için önemli bir konu var: Edit nesneleri Form2'nin üzerinde görünürken sahibi henüz Form1'dir. Bu ekran görüntüsü sayesinde okurun bu önemli noktaya dikkati çekilmektedir. Bu ekran görüntüsü kullanılmasaydı okur belki aynı metni 2 kez okumak zorunda kalacaktı.
Çalışma anında "Sil" düğmesi tıklandığında Form2'de görüntülenen ilk 2 nesnenin Form1'den silinmesini sağlayacağım. Bu amaçla ilk formdaki "Sil" düğmesinin Click olayıyla ilgili metodu aşağıdaki gibi düzenledim.
procedure TForm1.SilClick(Sender: TObject);
begin
Form1.Components[1].Free;
Form1.Components[0].Free;
end;
"Sil" düğmesinin Click olayını temsil eden metoda yazılan bu 2 satır sayesinde Form1'deki ilk 2 kontrol silinir. Koda dikkat ederseniz Edit1 ve Edit2 nesneleri Form2'nin üzerinde görünürken bu kontrollerin henüz Form1'e aittir veya Edit1 ile Edit2'nin sahibi Form1'dir. Bu nedenle Free metodu ile silme işlemini yaparken Form2 yerine Form1'ın adını yazdım. Burada yapılması gereken Parent özelliği ile nesnenin görüntülenmesinden sorumlu olacak formu değiştirdikten sonra Owner özelliğini de değiştirmektir. Bu işlemi yapmak için aşağıda verdiğim kodu yazdım.
procedure TForm1.AktarClick(Sender: TObject);
begin
Form1.Edit1.Parent := Form2;
Form1.Edit1.Owner.RemoveComponent(Edit1);
Form2.InsertComponent(Edit1);
Form1.Edit2.Parent := Form2;
Form1.Edit2.Owner.RemoveComponent(Edit2);
Form2.InsertComponent(Edit2);
end;
Bu kod hakkında bilgi vermeden bu kodun hataya neden olacağını söylemeliyim. Bu kodda önce Form1'deki 'Edit1' nesnesi RemoveComponent metodu ile Form1'den uzaklaştırılıp InsertComponent metodu ile Form2'ye eklenmektedir. Ancak Edit'ler ve diğer nesneler RemoveComponent metodu ile Form1'den uzaklaştırıldığı anda bellekten silinmiş olmaktadır. Dolayısıyla olmayan bir nesneyi InsertComponent metoduna parametre olarak vermek hataya neden olur.
Bu sorunu gidermek için ilk akla gelen yöntem bu işlemi yapacak bir procedure hazırlamaktadır. Daha önce Türkiye'de yayınlanan bir kitapta bu yöntem anlatıldığı için öncelikle söz konusu Edit nesnesini RemoveComponent metodu ile Form1'den uzaklaştırmadan önce bir değişkene aktaracağım.
procedure TForm1.AktarClick(Sender: TObject);
Var
E :TEdit;
begin
Form1.Edit1.Parent := Form2;
E := Form1.Edit1;
Form1.Edit1.Owner.RemoveComponent(Edit1);
Form2.InsertComponent(E);
Form1.Edit2.Parent := Form2;
E := Form1.Edit2;
Form1.Edit2.Owner.RemoveComponent(Edit2);
Form2.InsertComponent(E);
end;
Bu kod sayesinde Edit1 ve Edit2'nin Form1 ile bir ilişkisi kalmaz. Bu kod işletildikten sonra Edit1 ile Edit2'nin hem Owner'ı hem de Parent'ı Form2 olur. Bu şartlarda, yani Form2'de yalnızca 2 nesne varken 'Sil' düğmesi için yazılan kodda önce Edit2 silinmelidir yoksa hata meydana gelir.
procedure TForm1.SilClick(Sender: TObject);
begin
Form2.Components[1].Free;
Form2.Components[0].Free;
end;
Şimdi ise RemoveComponent ve InsertComponent metotlarını bir metoda alıp öyle işlete¬ceğim. Hazırlayacağım metot TComponent tipinde 2 parametreye sahip olacaktır.
procedure TForm1.Uzaklastir(Bilesen: TComponent; Sahip: TComponent);
begin
Bilesen.Owner.RemoveComponent(Bilesen);
Sahip.InsertComponent(Bilesen);
end;
'Uzaklastir' adını verdiğim metodu bu şekilde hazırladıktan sonra 'Aktar' düğmesinin Click olayını temsil eden metodu aşağıdaki gibi düzenledim. Bu kod sayesinde Form1'deki 2 Edit Form2'ye aktarılır.
procedure TForm1.AktarClick(Sender: TObject);
begin
Form1.Edit1.Parent := Form2;
Form1.Edit2.Parent := Form2;
Uzaklastir(Edit1, Form2);
Uzaklastir(Edit2, Form2);
end;
Birinci anlatım daha kısa oldu. Delphi konusunda belli bir düzeye gelmiş kişilere, daha doğrusu artık kitap almayıp, Memik YANIK veya başka bir yazar tarafından kaleme alınmış metinlere dönüp bakmayanlara göre kısa olanı tercih etmek gerekir. Nasıl olsa onların bu konuyu öğrenme gibi bir dertleri yok. Yazar arkadaşım fazladan yazılan her kelime her cümle okur için zaman kaybıdır, kitabınızdan alınacak faydanın azalmasıdır. Ne ki vur deyince öldürmemek gerekir, metin kısa olacak diye okunması zor, okunsa bile söylenenler anlamak zahmetli oluyorsa durup düşünüp metni yeniden kaleme almak gerekir.
Kod İçinde Açıklama Metni Kullanmak
Bazı yerli yabancı yazarlar makalelerinde ve kitaplarında kullandıkları 15-20 satırlık yani yarım sayfalık kodun içine uzun uzun açıklamalar yerleştirerek söz konusu kodun 1,5-2 sayfa kadar uzamasını tercih ediyorlar. Kodun arasına uzun açıklamalar ekleyerek kolay anlaşılmak veya kodda kullanılan her satırın işlevinin okur tarafından hemen fark edilmesini istiyorlar. İlk bakışta sanki doğru bir terciymiş gibi görülür bu. Böyle bir tercih ile hazırlanan metni okumak bir bakıma dublajı bilmediğiniz bir dilde yapılmış olup bol konuşmalı alt yazılı bir filmi izlemeye benzer. Hele hele filmdeki karakterler hızlı konuşuyorlarsa bazen de aynı anda birden fazla kişi konuşuyorlarsa bütün alt yazıları okuyup filmi anlamak ağır bir işte çalışmak gibi yorucudur. Yani yazarlarımız kodun içine bol bol açıklama metni koyarken sanıyorlar ki okur konuyu daha kolay anlıyor, kodda yapılan işlemleri bir bakışta kavrıyor.
Yıllardır yüz binlerce programcılık konulu sayfa okumuş birisi olarak söylemek isterim ki kodun içinde uzun açıklamalar yapmak kadar metni zor okunur yapan başka bir teknik yoktur. Elbette kodun içine açıklama metni yazılır, elbette dozunda tutulmuş açıklama metninin okura katkısı olur. Burada dikkat edilmesi gereken açıklama metinlerin kısa olması ve sayılarının fazla olmamasıdır.
Yazarın birisi daha önce hakkında hiç söz etmediği bir kavram veya anahtar kelime hakkında kodun içinde 3 satırlık yani neredeyse bir paragraflık açıklama metnine yer veriyor. Devamında bir sonraki kod satırı için tekrar açıklama metni kullanıyor. Başka bir deyişle kod satırları, kod satırlarını açıklayan metinlerin içinde kayboluyor.
Açıkçası hazırladığınız 10 satırlık kodun 5-6 satırı için kod içinde açıklama metni hazırlıyorsanız okurunuzu o kod için hazırlamamışsınız, okurunuz o kodda kullanılan sınıflar, metotlardan ve anahtar kelimelerden henüz habersizdir. Yapılması gereken; kodda kullanılan sınıflar, anahtar kelimeler hakkında önceden okura bilgi verip ondan sonra kod hazırlamaktır. Kod içinde kullanılmasına rağmen daha önce söz edilmeyin veya okurun unutmuş olabilme ihtimali yüksek bir iki metot hakkında en fazla 3-4 kelimelik açıklama metinleri yararlı olabilir.
PageRank Püf Noktaları
1) PageRankı Düşüren Etkinlikler
- Her sitenin Bir Kategorisi Vardır (Forum siteleri hariç). Örneğin Bir Okey sunucu Sitesi Düşünelim. Bu Site Oyun Kategorisinde Yer Aldığından Dolayı, Oyun Üzerine odaklanmamış (oyun ile alakası olmayan ) sitelerde link barındırması çok yanlıştır. Google Her İncelemede Alakasız Link görecek ve Sitenin Pagerank Yüzdesini Düşürecektir. ( pagerank yüzdenizi Google de Yer alan Pagerank Matematiksel hesaplama ile bulabilirsiniz. )
- Siteniz ile Alakası olmayan binbir kelime taşımak sitenize çok hit kazandırır, fakat pagerank'ınızı da olumsuz etkiler. Çok Büyük ziyaretçi sayısına sahip iseniz bu bölümü dikkate almayınız. Ama siteniz yeni ve yolun başında iseniz kesinlikle sitenizde konu dışı kelime hazinesi yapmayınız. (Tabii Pagerank Değerinizi Önemsiyorsanız.)
- Ping Kullanımı: Google Rahatsız edilmeyi sevmez. bu nedenle Ping, Gobot gibi GoogleBot çağırmayın. GoogleBot Gelir ve sadece anasayfayı alıp gider. daha sonra sitenizde diğer linkerin kaybolmasına neden olur! Bir Çok kişi Linklerin neden kaybolduğunu bilemez. Ama GoogleBot'un PageRank üstündeki etkisini de Kavrayamazlar. Lütfen Bu Konuda Çok Titiz Olun. Aksi Takdirde Sitenizin Anasayfası Dışında Hiçbiryer okunmaz !
Yapanlar var ise Tavsiyem: google Webmaster Tools dan SiteMap.xml dosyalarını yollamaları. XML dosyasını Alan Google, Botu en geç 24 saat içinde sitenize AYRINTILI TARAMA ile yollayacaktır. ( Unutmayın Google Rahatsız edilmeyi sevmez. Üst Üste Yollarsanız Bot Sadece Ana sayfayı Alıp Gider.. )
2) PageRank Yükselten Etkinlikler
- Kesinlikle SEO kullanın. Aksi Takdirde GoogleBot Sitenizdeki 2. Sayfaları ( Forumlarda Konular ve cevapları düşünün ) Almaz. Önce Tüm Ana Sayfayı, Ana Sayfa Değişmediği Sürece 2. Sayfaları Alır. Bu da Forumda Konu ve mesaj yazmayı yasaklayıp googlebot taramasını beklemek demektir ki bu sizin zararınızadır.
- Yazılar- konular - kategoriler şeklinde yeni sayfalar hazırlayın. Hazırladığınız bu sayfalarda Yazılarınız alt Alta ve Link Halinde, konularınız Alt Alta ve Link Halinde, Kategorileriniz alt Alta ve Link Halinde Olmak Şartı ile Ayrı Ayrı Bölümlerden Oluşturup, (Forumlarda Bulunan arsiv.php gibi) Sitenize Atın ve ANA SAYFADA KESİNLİKLE LİNK VERİN! Eğer anasayfada link olmazsa googlebot bu bölümü ayrı bir yer gibi görür ve size katkısı olmaz. (Forumlarda Footer Bölümüne Atabilirsiniz.)
- Mümkün Olduğunca CSS ile renklendirin! Sitenizi mümkün Olduğunca CSS ile Renklendirin. böylece GoogleBot Kaynağınızı Aldığı zaman Yük Hafifler ve Daha Hızlı Okuma Gerçekleşir. Bu da Google'da Daha Hızlı ve Kaliteli Tanınmanıza, Hit ve PageRankınızın Yükselmesine Olanak Sağlar.
3) PageRank'ı Etkilemeyen Ve Herkesin Kullandığı Boş Bir Yöntem
Aşağıda Belirtilen Etmenler PageRank'ınızı Etkilemez!
- Toplistler (GoogleBot Toplistlerin Sadece Ana Sayfalarını Okur! Kategorileri almadığı için Sitenize Yararı Yoktur.) Toplistlerden Hit Gelmez Arkadaşlar.. Arama Motorları Varolduğu Sürece Toplistlerden Site Arayan Olmaz Herhalde :)
- Forumlarda İmza Linkleri.. Forumların Çoğu robot.txt yardımı ile GoogleBot un İmzaları Okumasını Engeller. bu Nedenle imza PageRankınızı Etkilemez ama İmzanızın Kalitesine Göre Forumlardan Hit Çekebilirsiniz.. bu Tamamen Yeteneğinize Kalmış bir Etkendir..
Bu Yazdıklarım Tek Tek Test Edilmiş Ve Kesin Sonuçlara Ulaşıldıktan sonra yayınlanmıştır.
Kodların Değerlendirilmesi ve Tekrar Kullanımı
Modüler yapıların oluştrulması sırasında dikkat etmemiz gereken en önemli husus, eskiden yazmış olduğumuz kodu, güvenlik ve kullanılabilirlik açısından geliştirmek olacaktır. 100 satırda yazmış olduğumuz bir kodu 80 satırda daha rahat anlayabiliyor ve işlevini geliştirebiliyorsak başarmış olduğumuz bir gerçektir.
Kodlarımızın her versiyonunda daha güvenli ve kararlı yapıya ulaştığını söylememize gerek yok. Peki biz neden bu yapıyı kullanmıyoruz.
Etkili Bir CV İçin Gerekli Olanlar
Öncelikle kimdir bu Niniane Wang? Kendisi Google Software bölümünde programlama ve geliştirmeci olarak çalışmış birisi. Ve bize verdiği nasihatler ise şu şekilde:
1- Yaptığınız işin teknik olarak detaylarını yazınız. Örnek olarak site yapıyorsanız kullandığınız programlama dilini ve sistemin yapısını teknik olarak açıklayınız.
2- Yaptığınız işin gereksiz kısımlarını anlatmaktan kaçının. Gereksiz ayrıntılara yer vermeyin.
3- İşlerinizi gerçek örneklerle anlatın. Onu yapacağım bunu yapacağım, kâğıt üzerinde ya da sözde konuşmalar üzerinde durmayın.
4- Projede yer alıyorsanız projeyi ve bulunduğunuz statüyü açıklayın. Örnek olarak tasarlanan sistemde kod geliştiriciyseniz bunu belirtin ve yaptınız eklentileri belirtin.
5- Yalan söylemeyin.
Encryption Kriptolama Nedir ?
Programlama dillerinde ve veritabanı yönetiminde kullanılan bazı hazır şifreleme kalıplarına değinmek gerekirse;
md5> Girilen metni 32 karekterleri sayı ve karekteler bazı veri halinde yazdırır.
sha1> Girilen metni 40 karekterleri sayı ve karekteler bazı veri halinde yazdırır.
'; // ee10ce913a468513cb7a75e83980b506
echo sha1($sifre2).'
'; // c47036e36012fc774e4547c35447c209d4ce65bb
echo md5(sha1($sifre3)).'
'; // 733f88e1bba08a467e3f6aa4374c2d9f
echo sha1(md5($sifre3)).'
'; // 330cadd977a04eaef71128f8a88474b4af6404b5
?>
Çıktılarını alırız. En çok kullanılan şifreleme tekniklerinin bunların olmasının yanı sıra, yıllarca daha kararlı bir yapı olarak kullanılması daha cazip bir durum oluşturmuştur.
Ek olarak kendi şifrelemenizi kullanmak istiyorsanız bilmeniz gereken tek şey yazacağınız programlama dilidir. İnternette gezerken karşılaştığım birkaç basit şifreleme teknikleri.
- Sayısal değerler içermiyorsa, alfabedeki tüm harflerin yerlerini değiştirmek.
- Her harfe eş değer olarak bir sayı baremi atamak.
- Terimler için özel anlamlar. (elma = 1234)
- Her seferinde farklı bir sifre döngüsü yapmak istiyorsanız tarih verilerini kullanarak şifreleme tekniğide kullanabilirsiniz.
İyi Çalışmalar.
Detaylı kaynak için,
Md5
Sha1
Toplu e-posta gönderirken SPAM'a düşmemek için ipuçları
Epostanın tamamını imajdan oluşturmayınız.
Tasarımlar
lerin icine | {inline css} şeklinde verilmelidir.
Font olarak standart fontlar kullanılmalıdır 18 Punto'dan büyük ve tam kırmızı #FF0000 yazılar kullanılmamalıdır. Toplam kod 50 KB i geçmemelidir İmaj/metin oranı % 50 ye yakın olacak şekilde ayarlanmalıdırTasarımda dikkat edilmesi gerekenler Tasarım genişliği 700 pikseli geçmemelidir. 400 pikselden geniş imajlar ikiye bölünmeli ve tablolarla birleştirilmeli. "Üyelik bilgilerini güncellemek veya üyelikten çıkmak icin tıklayın" linki mümkün olduğunca tasarımın en üst bölümlerinde kullanılmalı ve bülteni almak istemeyen kullanıcıların "Report Spam" buttonunu kullanmaları önlenmelidir. Tasarımda kullanılan imajlarin toplam büyüklüğü 150KB i geçmemelidir Imajların üzerinde metin bulunması halinde bu metinleri imajlarin alt="" alanlarına yazmanız faydalı olacaktıreuro.message'a teşekkürler. |
Pazartesi
Timeline Efektleri
İlk kez Flash MX 2004 versiyonunda kullanılan bir özelliktir. Burada amaç shape tweening, motion tweening gibi daha önce manuel olarak uygulanan animasyonları ve 3.party yazılımlarda kullanılan metin efektlerine pratik yolla ulaşmaktır. Kişisel görüşüm bu panelin flash programına yakışmayacak kadar ilkel kalmış olmasıdır. Ayrıca işlemin uygulanması veya uygulanan işlemi kaldırma sırasında bilgisayara fazla yüklenme söz konusu oluyor. Yine de bazı efekleri çalışmalarda kullanılabilir.
Klasik shape tween ve motion tween işlemlaeri flash-mx ile aynı. Bu nedenle bu konu ile ilgili detaya girilmeyecektir. Örnek ve açıklamalar için alttaki linke bakabilirsiniz.
flash-mx dersleri


1- Insert-->Timeline Effects2- Sahnedeki obje üzerine sağ klik yaparak.
3 tür efekt grubu vardır,bunları sırasıyla inceleyelim:
Assistants/ Copy to Grid:
Bu efekt seçilen nesneyi ayarlanan sayıda kolon ve sütunlar şeklinde kopyalar:
Cumartesi
donen yazı
Çizgifilm Çizmeyi Öğren!
http://www.karmatoons.com/drawing/drawing.htm
istediğini simge yap
İnnDir
Kullanımı:Kullanımı çok basit el işaretinin üstüne basılı tutup seçmek istediğimiz görüntünün üstüne geliyoruz ve bırakıyoruz.S onrada kaydedin.Simgeyi değiştiriken kaydettiğiniz yerde görebilirsiniz.
fotolarınıza damganızı vurun
Tanıtım:
1 More WaterMarker ile bir imajınızın içerisine yazı, simge, sembol veya amleminizi ekleyebilirsiniz. Resminizin keskinliğini fontunu ve rengini seçerek reme kendi mührünüzü vurabilirsiniz. Ayrıca çoklu resim dönüştürme yapabilir ve yazı ekleyebilirsiniz.
e-mail : editname : Team CRUDEserial : 6666-3907-4790
3DMax 8, Complete DVD Tutorial
Size: 2.15 GB, 10 Chapters, Source Files included | DVDRip
3DMax 8, Complete DVD Tutorial
Size: 2.15 GB, 10 Chapters, Source Files included | DVDRip
Content:
Chapter 01 - Editable Poly Modeling
Chapter 02 - Using the Unwrap UVW Modifier
Chapter 03 - Material Improvements
Chapter 04 - Hair
Chapter 05 - Cloth
Chapter 06 - Biped
Chapter 07 - Character Animation with Bones
Chapter 08 - Animation Controllers
Chapter 09 - Skinning
Chapter 10 - Rendering
Chapter 11 - Project Management
http://rapidshare.com/files/4767690/g-max8l.r11
http://rapidshare.com/files/4767681/g-max8l.r16
http://rapidshare.com/files/4767666/g-max8l.r01
http://rapidshare.com/files/4767662/g-max8l.r31
http://rapidshare.com/files/4767657/g-max8l.r36
http://rapidshare.com/files/4767654/g-max8l.r07
http://rapidshare.com/files/4767652/g-max8l.r08
http://rapidshare.com/files/4767651/g-max8l.r04
http://rapidshare.com/files/4767643/g-max8l.r10
http://rapidshare.com/files/4767639/g-max8l.r12
http://rapidshare.com/files/4767638/g-max8l.r29
http://rapidshare.com/files/4767635/g-max8l.r19
http://rapidshare.com/files/4767610/g-max8l.r32
http://rapidshare.com/files/4767552/g-max8l.r28
http://rapidshare.com/files/4767513/g-max8l.r15
http://rapidshare.com/files/4766847/g-max8l.r39
http://rapidshare.com/files/4766844/g-max8l.r40
http://rapidshare.com/files/4766842/g-max8l.r34
http://rapidshare.com/files/4766841/g-max8l.r41
http://rapidshare.com/files/4766840/g-max8l.r38
http://rapidshare.com/files/4766839/g-max8l.r37
http://rapidshare.com/files/4766838/g-max8l.r35
http://rapidshare.com/files/4766833/g-max8l.r33
http://rapidshare.com/files/4766832/g-max8l.r30
http://rapidshare.com/files/4766828/g-max8l.r26
http://rapidshare.com/files/4766827/g-max8l.r27
http://rapidshare.com/files/4766826/g-max8l.r24
http://rapidshare.com/files/4766822/g-max8l.r25
http://rapidshare.com/files/4766821/g-max8l.r23
http://rapidshare.com/files/4766820/g-max8l.r22
http://rapidshare.com/files/4766819/g-max8l.r05
http://rapidshare.com/files/4766818/g-max8l.r21
http://rapidshare.com/files/4766817/g-max8l.r20
http://rapidshare.com/files/4766815/g-max8l.r18
http://rapidshare.com/files/4766813/g-max8l.r13
http://rapidshare.com/files/4766811/g-max8l.r17
http://rapidshare.com/files/4766809/g-max8l.r09
http://rapidshare.com/files/4766808/g-max8l.r14
http://rapidshare.com/files/4766807/g-max8l.r03
http://rapidshare.com/files/4766804/g-max8l.r00
http://rapidshare.com/files/4766802/g-max8l.r06
http://rapidshare.com/files/4766801/g-max8l.rar
http://rapidshare.com/files/4766796/g-max8l.r02
http://rapidshare.com/files/4766775/g-max8l.sfv
APHaCHi
"APHaCHi ve onun gibi adamlar bizim geleceğimizdir ve daima ihtiyacımız olacaktır..teşekkürler aphachi."
Response ve Requset Nesneleri
Response Nesnesi
Response.write
Response.Redirect
Response.Flush
Response.Clear
Response.End
Request Nesnesi
Request.Querystring
Request.Querystring de form kullanımı
Request.ServerVeriables
Response.write nesnesi
Response komutu sayesinde ASP ziyaretçiye sunucudan yazılar gönderir. Bu nesnenin en çok kullanılan metodu write dir. tagları arasında yazacağımız Response.write ifadesi ile sayfada asp kodları içerisinde istediğimiz bir yazı yada bir değişkeni gönderebiliriz. Hemen bir örnek yapalım :
Dikkat etmemiz gereken eğer bir yazıyı görüntüleyeceksek bu yazıları " örneğin bu " tırnak içinde yazmalıyız eğer yazacağımız bir değişken ise bunları da parantez içinde yazmalıyız Ayrıca Response.write ASP'de en çok kullanılan komutlardan biri olduğu için daha pratik bir yazılış biçimi vardır
Sayfaya girmeyi başardınız
Response.Flush
Sunucu eğer çalışma zamanın da bu deyime rastlarsa o zamana kadar tampon bellekteki sakladığı degerleri browsere gönderir
Bu satır sunucunun hafızasında saklanan ilk satır
bu satır ise flush metodundan sonra gösterilmiştir.
Response ve Requset Nesneleri
Response Nesnesi
Response.write
Response.Redirect
Response.Flush
Response.Clear
Response.End
Request Nesnesi
Request.Querystring
Request.Querystring de form kullanımı
Request.ServerVeriables
Response.write nesnesi
Response komutu sayesinde ASP ziyaretçiye sunucudan yazılar gönderir. Bu nesnenin en çok kullanılan metodu write dir. <% %> tagları arasında yazacağımız Response.write ifadesi ile sayfada asp kodları içerisinde istediğimiz bir yazı yada bir değişkeni gönderebiliriz. Hemen bir örnek yapalım :
<% @ LANGUAGE=VBScript CODEPAGE=1254 %>
<% degisken="Web"
response.write "bu komutu ilk scriptimiz bölümünde de görmüştük hatırladınızmı? "
response.write "WEBdershanesi.NET"
response.write (degisken)
%>
Dikkat etmemiz gereken eğer bir yazıyı görüntüleyeceksek bu yazıları " örneğin bu " tırnak içinde yazmalıyız eğer yazacağımız bir değişken ise bunları da parantez içinde yazmalıyız Ayrıca Response.write ASP'de en çok kullanılan komutlardan biri olduğu için daha pratik bir yazılış biçimi vardır <%="WEBdershanesi.NET " buradaki = response.write anlamına gelmektedir.
Response.Redirect Deyimi
Response.redirect deyimi ASP'de kullanılan (bu da bayağı sık kullanılıyor) ve bir sayfadayken başka bir sayfaya yönlendirme yapmak için kullanılır. Yani sunucunun karşısına böyle bir ifade geldiğinde ne olursa olsun çalışılan sayfayı durdurup Response.redirect içerisindeki sayfaya yönlenir.
Hemen bir örnek yapalım
öncelikle birinci sayfaya aşaıdaki gibi bir textbox ve bir buton koyalım
[_______] - [_____]
buradaki text box'ın namesi (ismi) sifre olsun butonun ise actionuna responseredirect2.asp yazalım bu örneğimizde birinci sayfadaki text box'a bir sifre girmemiz isteniyor ve butona basarak ikinci sayfaya yönlendirme yapıyor ikinsayfamızdada bu text box taki bilgi bir deyim sayesinde sifre isimli bir değişkene aktarılıyor ve bu değişkenin içeriği kontrol edilerek sifrenin dogru olup olmadığı karşılaştırılıyor eğer doğruysa sayfaya girmeyi başarıyoruz eğer yanlış ise response.redirect deyimi sayesinde tekrar birinci sayfaya yönlendirilme yapılıyor gördüğünüz gibi asp'nin çalışma mantığı hakkında biraz daha bilgi sahibi olmuşsunuzdur umarım.
İkinci sayfanın kodlarıda aşağıda yazmakta Ayrıca bu örnekleri buradan bilgisayarınıza indirebilirsiniz
<%
sifre=Request.Form("sifre")
if sifre="neolsun" then
%>
Sayfaya girmeyi başardınız
<% else response.redirect("responseredirect1.asp")
end if
%>
Response.Flush
Sunucu eğer çalışma zamanın da bu deyime rastlarsa o zamana kadar tampon bellekteki sakladığı degerleri browsere gönderir
<% @ LANGUAGE=VBScript CODEPAGE=1254 %>
<%
Response.buffer=true
%>
Bu satır sunucunun hafızasında saklanan ilk satır
<%
response.flush
%>
bu satır ise flush metodundan sonra gösterilmiştir.
ASP nedir?
ASP, Microsoft tarafından web site yapımı için geliştirilmiş bir web yazılım dilidir.
Biraz daha açalım konuyu.
Web sitesi ASP ile yapılmaz. HTML dediğimiz belli kalıpları olan bir kodlama ile yapılır. Bilgisayarınızda Office ile birlikte gelen Microsoft FrontPage varsa açın, bişiler yazın, tablo oluşturun, yazıları kalınlaştırın, daha sonra Microsoft FrontPage in hemen sol alt taraftaki HTML sekmesine tıklayın karşınıza, garip kodlar çıkacaktır. İşte web sitesi böyle yapılıyor. Çok basit oldu ama öyle. Farklı kaydet diyin masa üstüne bi isim vererek kaydedin. Masa üstünde kaydettiğiniz dosyayı çift tıklayın açın. Karşınızda ilk web siteniz. 2. yol bir not defteri açın, bişiler yazın farklı kaydet komutuna tuklayın, mesala index.htm diyerek masaüstüne kaydedin. Masa üstünde index.htm me çift tıklayın. Siteniz karşınızda.
Olayın önemli noktası tasarım. Tabloların yerleşimi resimleri sayfa içinde doğru yerleştirme vs. Bu zaman içinde oluşur.
HTML ile kolayca sayfanızı yaptınız. Ama bu yeterli değil. İçine anket, ziyaretçi defteri, üyelik sistemi, arama, mesajlaşma sistemi, makale servisi vs. vs. vs. eklemek isterseniz, işte o zaman başka bişi gerekli olucak.
HTML de yaptığınız sayfa ziyaretçiye olduğu gibi gösterilir. Ancak ASP de önce dosyanın kayıtlı olduğu bilgisayar dosyayı işler ziyaretçiye yorumlanmış sonuçları gösterir. Mesala ziyaretçi ankete oy kullandı ASP dosyası çalıştı, ekrana yeni sonuç gösterilir.
Kısaca ASP dinamik web sitesi yapmak için kullanılır ve sınır yoktur.
HTML siteleri bilgisayarınızda kolayca çalıştırıp ne yaptığınıza bakabilirsiniz. Ancak ASP dosyalarını çalıştırmak için IIS denen ve ara sistem diyebileceğimiz bir sisteme ihtiyacınız vardır. XP ve Vista için ayrı ayrı kurulum işlemi bulunan ve kurması bazen kafa karaştıran bu işlemi sonraki derslerimizde bulabilirsiniz.
ASP nin ne olduğunu kendime göre anlattım. Dersleri
Bilgisayarımıza IIS Nasıl Kurarız ve Yazma İznini Nasıl Veririz?
ASP dosyalarınızı eger IIS'i kurulumunda başka yere kurmadıysanız "C:\intepub\wwwroot" dizinine atacaksınız ve bakmak içinde Internet Explorer'ınızı çalıştırıp adres çubuğunuza "http://localhost" yazarsanız wwwroot klasöründekileri internet'teki bir server'da görür gibi görürsünüz.
IIS (Internet Information Server)'i bilgisayarınıza kurmak için denetim masasından program ekle-kaldır sekmesine gelerek ordan IIS'i seçmeniz yeterli olcaktır.Sizden XP cd sini isteyecektir.Kurulum'u kolaydır.Windows XP'de klasörlere yazma izni olmadığı için veritabanına ne yazma izni ne de silme iznimiz olcak.Bu yüzden veritabanının olduğu klasöre yazma izni vermemiz gerekiyor.Tavsiyem IIS'inizi default yoluna kurmanız.
Kurulum'u yaptıktan sonra "C:\inetpub\wwwroot" klasörüne veya veritabanınızın olduğu klasöre sağ tıklayın ve özellikler diyip Güvenlik(Security) sekmesine girin.
Eger güvenlik bölümü yoksa bilgisayarıma girin.Yukarıda Araçlar sekmesinde Klasör Seçeneklerini bulun.Ona girdikten sonra gene yukarıdan görünüm bölümünü seçin.Asagidaki Listede en altta "Basit dosya paylaşımını kullan("Use simple file sharing")" seçeneğinin işaretini kaldırın ve uygula diyin ve tamam diyip bitirin.Artık güvenlik(security) bölümünün gelmesi lazim.Yukarıdan güvenlik sekmesine gelin ve orda Hesab(IUSR_BilgisayarinizinAdi) eğer listede varsa onu seçip alt kısımdan Modify'ye izin vermeniz yetecektir.
Modify(Düzenleme, yukaridan 2.cidir)'ye izin verince(işaret koyarak) diger kutularında işaretlenmesi gerekiyor otomatik.
Eğer bu IUSR_PcAdı hesabı yoksa sağ altta gelişmiş komut düğmesine tıklayın açılan pencereden sol tarafdaki Ekle düğmesine tıklayın.
Gelen pencereden gene gelişmiş düğmesine tıklayın.
Sonraki gelen pencerede sağ'daki Hemen Bul(Find Now) düğmesine tıklayın asağıdaki listeden IUSR_PcAdı'ni seçip tamam diyin.
Sonra 2 kere üst üste gelen pencereye tamam diyerek geçin ve en başa dönmüş olcaz ve orda artık listede IUSR_PcAdi olmuş olcak ona basarak ve alttan Modify'ye basarak hepsine izin verin.
Böylece IIS'imiz sorunsuz çalışacaktır.
Dersi Hazırlayan: Serdar Toros
RİSK UYARISI
FOREX TEMEL EĞİTİMİ:
NEDEN PARİTE (FOREX)?
Dünya döviz piyasası ülke merkez bankaların, broker firmaların ve diğer finans kuruluşların oluşturduğu, Günlük 2 Trilyon Dolar İşlem Hacmi ile dünyanın en likit ve en büyük piyasasıdır. Teknoloji ile internetin yaygınlaşmasıyla önceleri sadece bir bankalar arası piyasa konumunda olan Forex piyasası günümüzde her ölçekte yatırımcının, sadece bir internet bağlantısıyla her an ulaşabildiği ve 24 Saat Açık ve Aktif bir piyasadır. Paritelerde hem alış hem de satış yönünde pozisyona girilebilir. Pozisyonun 200'de 1'i kadar nakit'in hesapta tutulması gerekir ve buna marjin(teminat) denir. 1000 Dolarlık Teminatla 200.000 Dolarlık Pozisyon Alabilme İmkanı 'kaldıraç' olarak adlandırılır ve parite piyasasının bu denli ilgi görmesini açıklar.
FOREX'E BAŞLANGIÇ:
ilk önce hangi parite de işlem yapmak istediğinize karar vermeniz gerekir. Örneğin EURO/$ da Euro nun $ karşısında yükseleceğine inanıyorsanız, buradan EU/$ paritesinden alışa geçebilirsiniz. Forex in asıl amacı piyasadaki değişim oranı ve fiyatından bir döviz cinsinden diğerine geçiş yapmaktır. Sizin yukarıda bahsettiğimiz tahmininize göre satın alınan EU/$ istediğin seviyeye yükseldiğine inanıyorsanız bir EU/$ satarak pozisyonunuzu kapatıp kazancınızı elde etmiş olursunuz. Paritelerde Alış veya satış yaparak pozisyon açmış olursunuz bunu ters işlemle yani alış yapmışsanız satış veya satış yapmışsanız alış yapana kadar pozisyonunuz kapanmamış diğer bir ifadeyle kazancınız veya zararınız pozisyon kapanana nakit hale gelmemiş olur.
ABD Doları piyasalarda kabul gören en baskın döviz cinsidir USD/ JPY, USD/CHF, USD/CAD vb gibi oranlarda görülen pay asıl parite olup, $ 1 'ın karşılığında payda da belirtilen diğer döviz cinsinin değişim oranını bize verir. Örneğin USD/ JPY için fiyatı 110,30 ise bunun anlamı $1 ABD doları vererek 110,30 Japon Yeni alabilirsiniz demektir. Piyasalarda kabul görmüş en çok yapılan işlemler içerisinde ayrıca EUR /$ ve GBP/$ da bulunmakta olup, burada pay ve payda değişmekte olup örneğin EUR/$ da fiyat 1,1450 ise 1EUR karşılığında 1,1450 $ alabiliriniz demektir.
Forex fiyatlamasında genelde iki fiyat görürsünüz buna spread denir. Genelde alış ile satış fiyatı arasında 2-3 pip fiyat farkı bulunur."Ask" fiyatı HEDEFONLINE 'in satış fiyatı sizin alış fiyatınız,"bid "fiyatı ise HEDEFONLINE 'ın alış fiyatı sizin satış fiyatınız olacaktır.
HEDEFONLINE online platform teminat kontrol sistemi ile 200:1 kadar kaldıraç sisteminden faydalanmaya imkan vermektedir. Bu platform işlemcinin işlemlerini ve teminatlarını otomatik kontrol ederek hesabında yeterli teminat parası olanların işlemlerine izin vermektedir. Ayrıca sistem hesabınızın eksi bakiyeye düşmesini önlemek için teminatın yetersiz kaldığında otomatik olarak tüm pozisyonlarınızı kapatır.
Cuma
Peki bu para sadece dağıtmaya mı yarar ? (ko)
3. KRAL NERDEN PARA KAZANIR VE KRALIYET BÜTÇESİ
Sizin NPC'lerden aldığınız her pot'tan kraliyet vergi alır. Bu vergiden siz etkilenmezsiniz aslında çok fazla veya fark etmezsiniz değişikliğini. Bu vergi oranını Kral belirler. Bu toplanılan para "NATIONAL TREASURY" yani Ulusal Fon'da birikir. İşte Kralın tepeden dağıttığı para burdan gelir. MYKO'da yaklaşık olarak günde 50 milyon coins toplanır burda. Kral bu parayı kendi bütçesine gizlice aktaramaz. Kendisine para vermesi için bunu yine ödül olarak yapması lazım ve bu da tepede gözükür.
Knight Online Kral Olmak ve Krallık Sistemi Hakkında Bazı Bilgiler
Öncellikle kral olmak için o serverda var olan NP olarak en iyi 20 clanın liderlerinden bir tanesi sizi aday göstermesi gerekiyor. Aday gösterilme süreci 3 gündür. 3 gün sonunda seçimler başlar ve sizi destekleyenler size oy atabilirler. Oy atma işlemi de 3 gün sürmektedir ve gerekli çoğunluğu sağladığınız anda artık beyaz pelerinli bir kralsınızdır.
2. KRALIN YETKİLERİ
Kral oyuna müdahale edebilen GM'lerden sonra tek yetkilidir ve kendisine verilmiş bazı özerklikler vardır. Bunlar:
- Yukardan anons yapabilme- Kraliyet bütçesinin kontrolu ve Vergi Oranlarını Değiştirme- Havayı değiştirebilme- Para ödülü verebilme- Experience Point Event- Drop Rate Event
Bunların dışında Kralın başka yetkisi yoktur!!! (Itemlerinizi +10 yapma gibi)
Perşembe
Arrays by reference
Basically, if you are anything like me you are always passing functions values and then having that function "return" a value. While there is nothing wrong with this approach, there is often an easier way to work with values in functions. Besides making values "global", you can also pass a function a value by reference.
Here is the standard way most people would work with a value in a function and then collect the functions return value.
MD5, hashes, passwords, salts and more
"Assume a user's secret key is stolen and he is known to use one of 200,000 English words as his password. The system uses a 32-bit salt (like md5). Because of this salt, the attacker's pre-calculated hashes are of no value. He/she must calculate the hash of each word with each of 2^32 (4,294,967,296) possible salts appended until a match is found. The total number of possible inputs can be obtained by multiplying the number of words in the dictionary with the number of possible salts:
2^{32} \times 200 000 = 8.58993459 \times 10^{14}
To complete a brute-force attack, the attacker must now compute about 800 trillion hashes, instead of only 200,000. Even though the password itself is known to be simple, the secret salt makes breaking the password radically more difficult." - http://en.wikipedia.org/wiki/Salt_(cryptography)
PHP Video Tutorials
The Two videos I recomend the most are PHP Security and Resizing and Sending Images For Email.
PHP security is probably the most advanced video of it's type in the world. It is about 45min long and covers basic attacks like Globals, Includes, and Super Global arrays like $_SERVER and $_GET. More advanced subjects like SQL injection, CSFR, and XSS are covered later in the video. Each attack is not only discussed - but actually shown in action so you can easily follow along.
Is this where I should start if I have never used the web?
But be cautious - they all have their non-monetary price!
What do I need?
Install and compile the binary distributions for PHP and/or "Apache" web server on your machine. (Advanced) visit php.net for more information.
Install EasyPHP from EasyPHP.org. (Easy, but only features PHP 4 and has some problems with Advanced Programs/scripts.)
Install WAMP (Windows Apache MySQL PHP) or LAMP (Linux Apache MySQL PHP) on your own machine, or better yet, on some OTHER machine on YOUR network. If you are on windows you can visit wampserver.com and download the newest release. (Intermediate)
The way I Recommend: Buy some web space on a server that supports PHP and MySQL. (about $5-10 dollars a month). I highly recommend 1and1.com. They are like the "walmart" of hosting companies. (The largest in the world) they offer hosting for as low as $2.99 a month for 5 Gigabytes of space and 10 MySQL Databases!!! Don't worry they don't skimp on features ether! (Free Domain and ".htaccess" support!)
After all, if you are learning PHP you are going to be using it anyway... so you might as well buy hosting space and a domain now before the name is taken. If you already have a web site your hosting company may already have PHP install on your server. (Call/Email them to be sure.)If you don't want to pay for web space but want to put a site online I recommend that you look into some free hosting options like 100webspace.com or Dot Geek - or just choose the one that fits you from these lists: PHP Free Hosting List and PHP MySQL Free Hosting List.
Anything I should know before I start this course?
Should I learn PHP?
So what is PHP?
PHP LESSON Part 1
4.Domain İpuçları
bu resmi, domain alırken firmanın ana sayfasında mutlaka arayın. Bu resmin olmadığı firmalar genelde sadece satış konusunda size yardımcı olabilir satış sonrası hizmetleri pek sağlıklı değildir ve çok fazla sorunla karşılaşabilirsiniz. Benim de sadece ICANN yazman firmaları buraya koymam bu nedenlidir.
*Alan adı Panel şifrenizi kesinlikle kimseyle paylaşmayın size güven veren bir kişiye size yardımcı olması için bir kere dahi olsa şifresinizi verirseniz tüm domain'lerinizin çalınma riskiyle karşı karşıya kalabilirsiniz.
*özellikle yabancı firmalarda kupon sistemi mevcuttur. Domain alırken forumlarda o firmanın o ayki kuponunu aratarak indirimlerden yararlabilirsiniz.
*Kişisel bilgilerinizi doğru yazın herhangi bir nedenle alan adınıza el konabilir. Eğer whois sorgularında kişisel bilgilerinizin görünmesini istemiyorsanız paralı ya da ücretsiz whois privacy (kişisel bilgilerinizin gizliliği) satın alabilirsiniz.Namecheap de ücretsizdir.
*Alan adlarınızı yenilemeyecekseniz kesinlikle otomatik yenileme (auto renew) yapmayın siz farkında olmadan kredi kartınızdan ya da paypal hesabınızdan para çekilip yenileme yapılır. Eğer askere gideceğim ya da unuturum alan adımı da kaybetmek istemiyorum derseniz auto renew (otomatik yenileme) yapabilirsiniz.
3.Nasıl yönetilir?
ns1.bildirgec.orgns2.bildirgec.org şeklinde olur.
dns ayarlarınızı yaptıktan sonra domain'i kilitleyip (lock) oturumunuzu kapatıyorsunuz. Eğer sitenizi başka bir yere taşırsanız (başka bir host firmasına) onların verdiği dns'lerle eski dns'leri değiştiriyorsunuz. Domain'i başka bir domain'e de yönlendirebilirsiniz. yönlendirme işlemini domain redirect'den (alan adı yönlendirme) istediğiniz adresi yazıp direk yapabiliyorsunuz.
2.Nasıl Domain alacağım ?
bildirgeç.org'u alacağınızı düşünelim. öncelikle şunu belirteyim; alan adlarında türkçe karakter kullanamazsınız. bildirgeç.org'u alırken "ç" yerine "c" yazmak ya da "ı" yerine "i", "ğ" yerine "g" gibi harf değiştirmeleri kullanarak almalısınız. arama kutusuna bildirgec yazıp sonuna .org uzantısını seçip domain'in önceden alınıp alınmadığını kontrol ediyoruz, eğer available yazarsa (uygun) alınmaya uygun demektir ve ödeme işlemlerine başlayabilirsiniz. "peki ödeme şekli nasıl olacak" sorusuna 2 seçenek önerebilirim.
a.kredi kartıb.internet üzerinden sanal bankalar ( paypal, moneybookers vs.)
ödemenizi yaptıktan sonra domain firmasından size mail gelecek. bu mailde onay ve domain panelinize giriş bilgileriniz yer alıcaktır. Bunları kesinlikle kimseyle paylaşmayın.
Alan adı (domain) nasıl alınır, yönetilir ve ipuçları hakkında

İnternet dünyasına başlangıç olarak ilk adımı atmak istiyorsanız en başta yapmanız gereken kendinize ait bir alan adınızın (domain) olması.Bu konuda bir girişimde bulunmak isteyen insanların en fazla merak ettikleri konu alan adını nereden, nasıl, ne şekilde alıcağım ve sağlıklı bir şekilde nasıl alan adını yöneteceğim konusudur.Eğer ben sadece blog yazacağım, websiteme fazla vakit ayırmayacağım diyorsanız ücretsiz blog servislerinin vermiş olduğu alt alan adlarını (subdomain) kullanmanızı tavsiye ederim. Kendinize ait alan adı almak istiyorsanız hadi başlayalım;1.Nereden?Bu konuyu iki sınıfa ayıracağım;A.ingilizce hizmet veren firmalarB.Türk firmalarA. ingilizce bilen kişilerin alternatifleri ve kaliteli hizmet alma şansı daha yüksek. bu sektördeki popüler ve güvenilir firmalara bir bakalım;
Forex Trader Wireless


*Login to your Live or Demo account
*Place Buy and Sell market orders
*Leave Stop, Limit and One Cancels Other (OCO) orders
*Monitor open positions and pending orders
*Scan up to the minute news headlines
*Read streaming FX market commentary from GAIN's senior traders
FOREXTrader.wireless is compatible with over 80 Internet-enabled devices, including mobile phones, PDAs, RIM and other wireless handhelds.There are no extra fees to access the site, and no special sign up. All you need is an Internet-enabled wireless device. It's easy!Clients and registered demo users: Use your existing login and password to access FOREXTrader.wireless.
Forex Trader java
ForexTrader


Designed for active traders looking for an edge, this Windows-based platform offers a rich user interface in a highly customizable trading environment for maximum performance. Enhanced charting functionality and sophisticated order management tools help you to manage your positions quickly and efficiently.
Trading Platforms
View real-time prices in 37 currency pairs
Execute market orders with just one mouse click
Track P&L and open positions in real time
Perform technical analysis with our advanced charting tool
Choose from 8 available order types
Access a full suite of proprietary daily and weekly research reports
View up to the minute news headlines and market commentary
FOREX NEDİR?
Strategies in Forex Trading
Developed for current FOREX.com clients, Strategies in Forex Trading is a complimentary five hour advanced training workshop designed to teach traders how to best use technical analysis to identify trading opportunities.
Learn the same strategies used by professional traders around the world. Reserve your seat today!
Strategies in Forex Trading
Developed for current FOREX.com clients, Strategies in Forex Trading is a complimentary five hour advanced training workshop designed to teach traders how to best use technical analysis to identify trading opportunities.
Taught by our seasoned forex traders, these workshops introduce and expand on the use of charting to help develop sound trading strategies and plans. You'll walk away from these sessions with an understanding of:
1The importance of understanding the major economic reports
2 How to use technical formations to spot market reversals
3 Utilizing advanced charting and technical indicators to identify trading opportunities.
4 Implementing money management techniques
To attend Strategies in Forex Trading free of charge, you must be a FOREX.com client with a minimum balance of $5000.
Learn the same strategies used by professional traders around the world. Reserve your seat today!
Are we not scheduled to be in your area?
Click here if you would like to be notified of a future workshop in your area
.View available training courses designed for all levels of experience.
Upcoming workShop
A primer for getting started in forex trading, a discussion built to introduce the concept of currency trading.
How to use FOREXTrader to test trading strategies through a personalized walkthrough.
Technical tactics to identify trading opportunities using ForexCharts by eSignal, an advanced charting tool.
Reading price charts for key trend formations - and translating them into trading opportunities.
Also, get a preview of Strategies in Forex Trading, FOREX.com's advanced training workshop for current live clients. Drawing on real-world trading experiences, FOREX.com will help you get up to speed quickly and effectively.
Reserve your seat today!
Are we not scheduled to be in your area?
Click here if you would like to be notified of a future seminar in your area.
Learn about our FREE webinar events.
RSS Feed
Our seminar announcements are also available via RSS, and can be subscribed to using one of the following buttons:
Local Workshops
Getting Started in Forex
Fast-track your forex skills - free of charge.
Before diving into the world's most traded market, FOREX.com invites you to attend a free 90 minute informational seminar, Getting Started in Forex.
Calculating Profit and Loss
To illustrate an FX trade, consider the following two examples.
Let's say that the current bid/ask for EUR/USD is 1.46160/190, meaning you can buy 1 euro for 1.46190 or sell 1 euro for 1.46160.
Suppose you decide that the Euro is undervalued against the US dollar. To execute this strategy, you would buy Euros (simultaneously selling dollars), and then wait for the exchange rate to rise.
So you make the trade: to buy 100,000 Euros you pay 146,190 dollars (100,000 x 1.46190). Remember, at 1% margin, your initial margin deposit would be approximately $1,461 for this trade.
As you expected, Euro strengthens to 1.46230/260. Now, to realize your profits, you sell 100,000 Euros at the current rate of 1.46230, and receive $146,230
You bought 100k Euros at 1.46190, paying $146,190. Then you sold 100k Euros at 1.46230, receiving $146,230. That's a difference of 4 pips, or in dollar terms ($146,190 - 146,230 = $40).
Total profit = US $40.
Now in the example, let's say that we once again buy EUR/USD when trading at 1.46160/190. You buy 100,000 Euros you pay 146,190 dollars (100,000 x 1.46190).
However, Euro weakens to 1.46110/140. Now, to minimize your loses to sell 100,000 Euros at 1.46110 and receive $146,110.
You bought 100k Euros at 1.46190, paying $146,190. You sold 100k Euros at 1.46110, receiving $146,110. That's a difference of 8 pips, or in dollar terms ($146,190 - $146,110 = $80).
Total loss = US $80.
Leverage & Margin
Understanding Forex Quotes
1.The first currency listed is the base currency
2.The value of the base currency is always 1.
As the centerpiece of the forex market, the US dollar is usually considered the base currency for quotes. When the base currency is USD, think of the quote as telling you what a US dollar is worth in that other currency. When USD is the base currency and the quote goes up, that means USD has strengthened in value and the other currency has weakened. Rising quotes mean a US dollar can now buy more of the other currency than before.
Majors not based on the US dollar
The three exceptions to this rule are the British pound (GBP), the Australian dollar (AUD) and the Euro (EUR). For these pairs, where USD is not the base currency, a rising quote means the US dollar is weakening and buys less of the other currency than before. In other words, if a currency quote goes higher, the base currency is getting stronger. A lower quote means the base currency is weakening.
Cross currencies
Currency pairs that don't involve USD at all are called cross currencies, but the premise is the same. Bids, asks and the spread Just like other markets, forex quotes consist of two sides, the bid and the ask: The BID is the price at which you can SELL base currency.The ASK is the price at which you can BUY base currency. What's a pip? Forex prices are often so liquid, they're quoted in tiny increments called pips, or "percentage in point". A pip refers to the fourth decimal point out, or 1/100th of 1%. For Japanese yen, pips refer to the second decimal point. This is the only exception among the major currencies.
What's Forex?
Foreign trade (5%). Companies buy and sell products in foreign countries, plus convert profits from foreign sales into domestic currency.
Speculation for profit (95%). Most traders focus on the biggest, most liquid currency pairs. "The Majors" include US Dollar, Japanese Yen, Euro, British Pound, Swiss Franc, Canadian Dollar and Australian Dollar. In fact, more than 85% of daily forex trading happens in the major currency pairs. The world's most traded market, trading 24 hours a day With average daily turnover of US$3.2 trillion, forex is the most traded market in the world. A true 24-hour market from Sunday 5 PM ET to Friday 5 PM ET, forex trading begins in Sydney, and moves around the globe as the business day begins, first to Tokyo, London, and New York. Unlike other financial markets, investors can respond immediately to currency fluctuations, whenever they occur - day or night.
New to the Forex market?
Step 1: Understand the FOREX market. Dive into Forex 101 for a compact overview of the basics or sit back and join us at one of our live interactive webinars.
Step 2: Prepare to trade in a live environment. Register for one of our training courses and study at your own pace or join us at a local workshop, where our experienced instructors can teach you in a dynamic classroom setting.
Step 3: Test your skills risk free. Sharpen your technical analysis techniques with a free 30 day practice account.