Forum: Projeler turna RSS
Ortam Değişkenine Değer Yazdırmak?(çerez methodu için)
Sayfa:  önceki  1  2  3  4 
canalpay (Moderatör) #46
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 3412
Onun başka bir sakıncası da çıktının yarım kalma olasılığı. CGI programı hata kodu döndürünce Apache herhalde çıktıyı kullanmıyordur ama sayfayı oluşturan parçaların bütünlüğünden emin olunmadan çıktının yazılmaya başlaması doğru değil.

Web programlama dünyasına hoşgeldiniz :-p Sanırım siz hiç sayfanın yarısı çalışan yarısındada hatalar veren sitelere denk gelmediniz :-D

Ama dediğinizi baştan sona düşününce ne kadar haklı olduğunuzu anladım. Yapılan bir yanlışa destek çıkmanın ona  diretmenin anlamı yok. Ancak bunu nasıl yapabiliriz onu anlamadım. O da sizden olsun o zaman :-)
acehreli (Moderatör) #47
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4389 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
canalpay:
Ancak bunu nasıl yapabiliriz onu anlamadım. O da sizden olsun o zaman :-)

Elimizde ne olduğuna ve ne oluşturmaya çalıştığımıza bakacağız.

Başlığın düzeni şu:

isim: değişken0=değer0; değişken1=değer1; değersiz-değişken

Ben o satıra bakınca şunları görüyorum: satırın ismi var ve değişkenleri var. D'ye geçirelim:

struct BaşlıkSatırı
{
    string isim;
    BaşlıkDeğişkeni[] değişkenler;
}
 
struct BaşlıkDeğişkeni
{
    string isim;
    string değer;
}

Üye işlevlerini yazmadım ama o yapılar başlık satırını modellemiyor mu? Başlığın ismi ve değişkenleri var; değişkenlerin isimleri ve değerleri var...

Onların üzerine de Sayfa oluşturulabilir. Bir HTML belgesinin yapısı şu değil mi:

class Sayfa
{
    BaşlıkSatırı[] başlıkSatırları;
    XmlElemanı içerik;
}

Evet, ismi "html" olan tek XML elemanından oluşur. (Onun da üye işlevlerini yazmadım.)

HTML sayfa düzenindeki "body", o tek elemanın alt elemanıdır. Yani XML elemanları başka XML elemanları içerebilirler. Demek ki XmlElemanını o şekilde yazmalıyız:

class TekEleman : Eleman
{
    string etiket;
    string değer;
    Nitelik[] nitelikler;
    Eleman[] altElemanlar;
}

Belki bu konularda deneyimli olduğum için bana çok açık geliyor ama HTML belgelerinin düzenini bire bir D olanakları olarak ifade etmekten başka bir şey yapmıyorum. Özellikle en baştaki BaşlıkSatırı'na dikkatinizi çekerim: başlık satırları o kadar basit değil mi?

Sayfayı bu şekilde soyut olarak oluşturduktan sonra yapılması gereken tek şey, sayfa.toString() (veya başka isimli bir üye işlev) çağırmak olacak. En sonunda bütün sayfa oluşmuş olacak. O noktaya gelene kadar bir hata atılmış olsa programda hiçbir yan etkimiz olmadığı için temiz olarak ama hata koduyla sonlanacağız. Apache de kullanıcıya "bir hata oldu" diyecek.

Doğrusu, programcılığın en zevkli yanlarından birisi bu soyutlamaları kurabilmek. Bunları yapı taşları olarak oturtunca programın daha sonradan değiştirilmesi de çok kolay oluyor. O da ayrı bir zevk. :)

Ali
canalpay (Moderatör) #48
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Belki bu konularda deneyimli olduğum için bana çok açık geliyor ama HTML belgelerinin düzenini bire bir D olanakları olarak ifade etmekten başka bir şey yapmıyorum. Özellikle en baştaki BaşlıkSatırı'na dikkatinizi çekerim: başlık satırları o kadar basit değil mi?

Basitmiş.

Ben bir an o sayfa içine daha başka öğeleride katacağımızı düşündüm.

Sayfayı bu şekilde soyut olarak oluşturduktan sonra yapılması gereken tek şey, sayfa.toString() (veya başka isimli bir üye işlev) çağırmak olacak. En sonunda bütün sayfa oluşmuş olacak. O noktaya gelene kadar bir hata atılmış olsa programda hiçbir yan etkimiz olmadığı için temiz olarak ama hata koduyla sonlanacağız. Apache de kullanıcıya "bir hata oldu" diyecek.

Çok güzel. Güzel güzel hata yakalama kodları ve mesajlarıda ekledik mi tadından yenmez :-)

Ancak bu örneğe göre helpers'daki html kodlarıda library'ye mi eklenmeli? Helpers belki javascript gibi css gibi şeyler için olabilir.
acehreli (Moderatör) #49
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4389 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
canalpay:
Ancak bu örneğe göre helpers'daki html kodlarıda library'ye mi eklenmeli? Helpers belki javascript gibi css gibi şeyler için olabilir.

Evet, sayfayı oluştururken XML düzeninde elemanlar oluşturmak gerekecek. Kütüphanenin buna ihtiyacı var. Kadir Can bunu halletmeye çalışıyor.

Ali
Kadir Can #50
Üye Haz 2010 tarihinden beri · 413 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Ali bey;
Beni biraz korkuttunuz.Açıkçası şu anda daha başlamadım ama helperarı araştırıyorum.Eğer yapamazsam yardım edersiniz,değil mi?
acehreli (Moderatör) #51
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4389 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Ha ha. :D Yok canım! Hiçbir şeyin acelesi yok. Ayrıca burada birlikte D öğreniyoruz. Herkes yardımcı olmak istiyor zaten. :)

Ayrıca araştıracak bir şey olduğunu düşünüyorsan olayı büyütmüş olmayasın? Öncelikle helper diye bir teknoloji araştırıyorsan, bırak. Ben bu kadar senedir çalışıyorum, hayatımda hiç helper görmedim. :)

Senin yapman gereken çok basit: isim ve değerden oluşan XML elemanlarını doğru olarak oluşturmak:

<isim>değer</isim>

Temelde o kadar basit. Ama, değer yerine başka XML elemanları da gelebilir:

<isim><iç-eleman>içtekinin değeri</iç-eleman></isim>

Yani bazı XML elemanlarının değerleri başka XML elemanlarının çıktısından oluşur. İçeride birden fazla eleman da bulunabilir ve düzenli görünsün diye boşluklu da olabilir:

<isim>
  <iç-eleman>içtekinin değeri</iç-eleman>
  <iç-eleman>içteki ötekinin değeri</iç-eleman>
  <p>
      Bu paragraf <b>kalın metin</b> içeriyor.
  </p>
  ...
</isim>


Gibi... Yani amaç, bu çıktıyı oluşturmada yardımı olacak sınıflar veya yapılar oluşturmak. Örneğin şöyle diyebiliriz :

    auto paragraf = XmlElemanı("p", "Bu bir paragraftır.");

Sonra onu çıkışa yazdırınca şunu oluşturur:

<p>Bu bir paragraftır.</p>

Şimdilik bu kadar.

Ali
canalpay (Moderatör) #52
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
acehreli:
Evet, sayfayı oluştururken XML düzeninde elemanlar oluşturmak gerekecek. Kütüphanenin buna ihtiyacı var. Kadir Can bunu halletmeye çalışıyor.

Tamam. Ancak ben library'yi diğer her şeyden bağımsız düşünmüştüm. library'nin amacı D ile cgi programlamayı kolay hale getiren bir kütüphane olmak.

Diğer kalan her şey, her dizin, her kod parçacığı ise MVC tasarımına sahip olmak amaçlı. Aralarında pek ilişki bulunmamalı sanki? Tek başına library cgi programlama yapmak için rahatlıkla kullanılmalı sanki?

Kadir Can:
Beni biraz korkuttunuz.Açıkçası şu anda daha başlamadım ama helperarı araştırıyorum.Eğer yapamazsam yardım edersiniz,değil mi?

Benim ünlü sözüm: Yapmadan yapamazsın. O zamanda yapabildiğini bilemezsin. (Yok öyle ünlü bir söz. Felsefe dersinin etkisidir :-p )

Helper'ı araştırmana gerek yok. Helper ile ilgili hiç bir şey yok. Amaç kolay biçimde xml kodları yazmak. Yani kolay biçimde HTML kodları yazmak.

Örn : HTML için bir post sayfasını D ile şöyle yazmak istiyor Ali Bey:
HTML:
dout.writef(
       `<b>Seçiminiz?</b><br>
        <form method="GET" action="http://ddili.org/cgi-bin/deneme">
        <input type="RADIO" name="hayvan" value="kedi"> Kedi<br>
        <input type="RADIO" name="hayvan" value="köpek"> Köpek<br>
        <input type="RADIO" checked name="hayvan" value="at"> At<br>
        <br><b>Ne derece seviyorsunuz?</b><br><br>
        <select name="derece" derece=1>
        <option>Az
        <option selected>Orta
        <option>Çok
        </select>
        <br>
        <input type="HIDDEN" name="sevilen hayvan" size="32">
        <input type="Submit" value="Bir Düğme" name="birinci düğme">
        <input type="Submit" value="Başka Düğme" name="ikinci düğme">
        <input type="Submit" value="İptal" name="iptal">
        </form>`);
D ile:

içerik.ekle(
        postFormu("http://localhost/cgi-bin/cgi_deneme",
 
                  bold("Seçiminiz?"), br(),
 
                  radyoDüğmeleri("hayvan",
                                 [ Düğme("Kedi", "kedi"),
                                   Düğme("Köpek", "köpek"),
                                   Düğme("At", "at", SeçimDurumu.seçili) ],
                                 br()),
 
                  br(), br(), bold("Ne derece seviyorsunuz?"), br(),
 
                  seçimListesi("derece",
                               [ Seçenek("Az"),
                                 Seçenek("Orta", SeçimDurumu.seçili),
                                 Seçenek("Çok") ]),
 
                  br(),
 
                  basılanDüğmeGrubu([ Düğme("Bir Düğme", "bir_düğme"),
                                      Düğme("Başka Düğme", "başka_düğme"),
                                      Düğme("İptal", "iptal") ])
                  ));

Sen forumda yeni bir konu aç orada yazdığın çalışan ya da çalışmayan basit ya da çok basit örneğini göster. Orada devam edelim. Önemli olan bu işlev ile html kodcukları yazmadan kolayca htmlin yapabildiklerini yapabilmesi.
acehreli (Moderatör) #53
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4389 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
canalpay:
acehreli:
Evet, sayfayı oluştururken XML düzeninde elemanlar oluşturmak gerekecek. Kütüphanenin buna ihtiyacı var. Kadir Can bunu halletmeye çalışıyor.

Tamam. Ancak ben library'yi diğer her şeyden bağımsız düşünmüştüm. library'nin amacı D ile cgi programlamayı kolay hale getiren bir kütüphane olmak.

Eğer cgi programı http çıktısı oluşturmaksa, http çıktısı üreten sınıflar o konuda yardımcıdır. Eğer yalnızca sayfa şablonları ile çalışacaksak haklısın. Bütün bunları çoktan oturup konuşmuş olmamız gerekirdi tabii. :)

Diğer kalan her şey, her dizin, her kod parçacığı ise MVC tasarımına sahip olmak amaçlı. Aralarında pek ilişki bulunmamalı sanki? Tek başına library cgi programlama yapmak için rahatlıkla kullanılmalı sanki?

En azından oturum yöneticisi (session manager) de gerekiyor. Tıklamaları arasında kullanıcıyı tanımak ve onun sunucu tarafındaki durumunu korumak işini halledecek.

Ali
Kadir Can #54
Üye Haz 2010 tarihinden beri · 413 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
O kadar da zor değilmiş.Ben başlayayım o zaman çalışmaya.Boşuna evham yapmışım. :D
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Sayfa:  önceki  1  2  3  4 
Forum: Projeler turna RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-03-23, 11:27:53 (UTC -07:00)