February 11, 2011

Ben şuan yapamadım. Teoride şunun çalışması gerekmiyor mu?

module library.cookie;

import std.process; //  getenv
import std.string;
import std.uri;
import library.fixedString;
import std.conv;
import std.cstream;

string[string] cookie()
{
   string[string] endCookie;
   string cookie = getenv("HTTP_COOKIE");


   endCookie=fixedString(decode(cookie));



   return endCookie;
}
void setCookie(string name, string data, long expiresIn = 0, string path = null, string domain = null, bool httpOnly = false)
{
   std.stdio.writeln("Set-Cookie: deneme=veriler");
}

void main(){

   dout.writef("Content-type: text/html; charset=utf-8\n\n");

   setCookie("deneme", "veriler" );
   dout.writef("<html>\n  <body>\n");

   dout.writef("\n<hr>\n<b>Ortam değişkenleri:</b><br><br>\n");
    std.stdio.writeln(cookie());

   dout.writef("\n<hr><br>\n<a href=\"http://ddili.org/ornek_kod/deneme.d\">"
               "(Bu çıktıyı oluşturan program)</a><br>\n");

   dout.writef("\n  </body>\n</html>\n");
}

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 11, 2011

Teşekkürler en sonunda oldu.

Alıntı:

>

Boş satırın ("\n" karakterinin) başlık bölümünden sonra gelmesi gerekiyor. Benim ürettiğim başlıktaki gibi:

Bende öne gelecek sanıyordum. Olmadı sonrada boşlukla ne ilgisi var dedim safça :-(

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 11, 2011

Ben hiçbir şey anlamadım. :(

foreach'in eşleme tablolarındaki indeks ve değer için şu kullanımını mı hatırlamıyorsun?

   foreach(indek, değer; tablo) {

İlgisiz olarak, yukarıdaki kodlarda bir şey farkettim: Şu koddaki 'responseCookies.length > 0' denetimine gerek yok:

   if(responseCookies !is null && responseCookies.length > 0) {
       foreach(c; responseCookies)

Çünkü 0 olduğunda foreach döngüsüne hiç girilmez zaten.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 11, 2011

HTML belgesinin başlık bölümünde Set-Cookie bulunması yetmeli. Benim oluşturduğum çıktının başında şu var:

'Content-type: text/html; charset=utf-8
Set-Cookie: falan=filan

Sayfayı localhost'taki Apache'ye gönderdiğimde ortam değişkenleri arasında da şunu görüyorum:

' HTTP_COOKIE
falan=filan
'

Bunun için daha önceden gösterdiğim xml_nesnesi.d dosyasındaki HtmlBelgesi sınıfını şu şekilde değiştirdim:

class HtmlBelgesi
{
   TekEleman belge;
   string[string] başlık;

   this(XmlElemanı içerik)
   {
       belge = (new TekEleman("html")).ekle(içerik);
   }

   void başlıkDeğişkeniEkle(const(char)[] isim, const(char)[] değer)
   {
       başlık[isim] = değer.idup;
   }

   override string toString() const
   {
       string sonuç = "Content-type: text/html; charset=utf-8\n";

       foreach (isim, değer; başlık) {
           sonuç ~= isim ~ ": " ~ değer ~ '\n';
       }

       sonuç ~= '\n' ~ to!string(belge);

       return sonuç;
   }
}

Yani artık başlıkDeğişkeniEkle() işlevi ile istediğim başlığı ekleyebiliyorum. Sonra cgi_deneme.d dosyasındaki ortam değişkenlerine HTTP_COOKIE'yi de ekledim:

string[] ortamDeğişkenleri =
   [
/* ... */
       "HTTP_USER_AGENT",
       "HTTP_COOKIE",
    ];

cgi_deneme.d'deki main'in en sonunu da şöyle değiştirdim:

   auto belge = new HtmlBelgesi(içerik);
   belge.başlıkDeğişkeniEkle("Set-Cookie", "falan=filan");
   writeln(belge);

Benim anladığım bu. Yapılması gereken basit:

  • Belgenin başlık bölümüne Set-Cookie satırını ekliyoruz

  • Tarayıcı, onunla olan iletişimimiz sırasında Apache'ye o değişkeni veriyor

  • Apache de onu HTTP_COOKIE ortam değişkeni olarak bizim kodumuza sunuyor

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 11, 2011

Hatan çok ilgisiz bir yerde. (Bu da örneklerin tam olması gerektiğinin güzel bir kanıtı.)

Alıntı (canalpay):

>
dout.writef("Content-type: text/html; charset=utf-8\n\n");

setCookie("deneme", "veriler" );
dout.writef("<html>\n  <body>\n");

Boş satırın ("\n" karakterinin) başlık bölümünden sonra gelmesi gerekiyor. Benim ürettiğim başlıktaki gibi:

'Content-type: text/html; charset=utf-8
Set-Cookie: falan=filan
<--- Boş satır

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 12, 2011

Helper'ın türkçe anlamı yardımcı.

Bize kod yazarken yardımcı olacak, daha az daha nitelikli her türlü şey helper kapsamının içine girer. Javascript, html yada sadece D'ye özel olması bir şey değiştirmiyor.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 11, 2011

Alıntı (Kadir Can):

>

Tamam helper'a bakarım.

Bunu söylemeye gerek olmayabilir ama kendi anladığımı özetleyeyim: şu düzende XML elemanları oluşturmak gerekiyor:

'<eleman-ismi bir_nitelik="bir değer" başka_nitelik="başka değer" değersiz_nitelik>Elemanın değeri buraya geliyor'

Her yerde karşımıza çıkan HTML bağlantıları bu tür oluyor. Örnek:

'Derleyici'

O elemanın ismi "a"; tek niteliğinin ismi href ve değeri işte o bağlantı; ve elemanın değeri "Derleyici".

Bazı elemanların kendi değerleri olmuyor. O zaman kapama bölümüne gerek olmuyor; onun yerine açma bölümünün sonu /> ile bitiyor:

'<eleman-ismi bir_nitelik="bir değer" başka_nitelik="başka değer" değersiz_nitelik/>'

Bazı elemanların nitelikleri olmuyor:

'Elemanın değeri buraya geliyor'

Bazı elemanların ne değeri ne de niteliği oluyor:

''

Çoğu elemanın değeri başka elemanlar oluyor. Örneğin şuradaki "li" elemanının değeri tek "a" elemanı:

'Derleyici'

Sanırım amacımız bu çıktıları oluşturmada yardımı olacak sınıflar yazmak. O yapıyı oluşturmayı başardıktan sonra her tür XML elemanı oluşturulabilir. HTML elemanları da XML düzeninde olduğu için web sayfaları oluştururken de çok işe yarayacak.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 12, 2011

Başkaları ben mi oluyorum ? :D

Şu git olayını halledemedim.

git push git@github.com:KadirCan/d-okul.git

dediğim zaman

Permission denied(public key)
fatal:the remote end hung up unexpectedly

Hatası veriyor.Ne yapmalıyım?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 12, 2011

Geçtik şimdi Linux'a bir kere,seviyeyi yükseltip Git'e geçmek gerekiyor :D

Yapamıyorum.
Daha başka ne yapabilirim?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 12, 2011

Alıntı:

>

Anlamı o kadar geniş olduğu için de kullanışsız bir isim oluyor. Her sınıf isminin sonuna "yardımcı" ekleyebiliriz yani. :)

Bende yazarken aynı şeyi düşündüm. Daha sonra benim tanımlamamın yanlış olduğunu anladım.

mvc tasarımlı web frameworkta uygulamalarda controllers ve views yazarken bize kod angaryasından kurtaracak modüllerdir.

Yine tanımlamam yanlış ise bu sefer mengü uyaracak ve doğrusunu yazacaktır.
Anahtar sözcükler uygulamarda views ve controllers için demem.
Alıntı:

>

İsimler önemli. Bu kadar söze rağmen, eğer "helper" ismi yayılmışsa kullanmaya o kadar da karşı olmam.

Helper sözcüğü şimdiye kadar gördüğüm her yerde aynı anlamda kullanıldı. Sanırım ad çok yyılmış olmalı :-)

Bu arada başkalarıda ufak ufak şu projeye başlasa fena olmaz hani :-P

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]