Volkan YAZICI
2007-06-23 14:56:42 UTC
Herkese Merhaba,
Yaklaşık 1, 1.5 aydır bir wiki yapma gayreti içindeydim ve bugün ASDF
ile yüklenebilir bir prototip oluşturmayı başardım. Adını "A Lisp in
Wonderland" koyduğum wiki'nin özellikleri şu şekilde:
1. DTD dosyası ile belirlenmiş, kendine ait bir sözdizimine
sahip. Sayfadaki başlıklar (H1, H2, H3) için içerik (TOC) menüsü
oluşturmaktan, sayfadaki dış bağlantıları (<link type="external"
...) listelemeye kadar (EXTERNAL-LINKS), markup ile sunduğumuz
makrolar da oldukça leziz.
2. Ulaşılacak olan path'ler, ayrı bir mekanizma ile saklanıyor. Şöyle
ki, istemci tarafından girilen her bir URI, WIKI-PATH sınıflarına
çözümleniyor, bu WIKI-PATH sınıfları da birden fazla biçimde
saklanabilip, bu biçimler arası dönüşüm yapılabiliyor.
Örneğin:
(wiki-path-from :uri "/page/Documents/Installation")
(wiki-path-from :label "page:Documents/Installation")
(wiki-path-from-to :label "page:Foo/Bar/Baz" :uri)
Ve daha 3-5 biçim daha var. Bu WIKI-PATH olgusu wiki'yi kullanacak
kişi açısından bir anlam ifade etmese de, wiki'yi geliştirmek için
programcıya oldukça kullanışlı bir API sunuyor. (Aslında bir çok
işlem (her şey?) API aracılığı ile yapılıyor. Programcı, sayfanın
içeriği hangi klasörde, ne biçimde saklanıyor, vs... ve daha bir
çok şeyi bilmek zorunda değil.)
3. Her bir URI'in kendine ait bir wiki-path değeri var. Şu an sadece
:account ve :page path'leri desteklenmesine rağmen, 1-2 hafta
içinde :file ve :image path tiplerini de ekleyeceğim. (Epey bir
XmlHttpRequest çalışması gerekecek.)
4. Gelişmiş history, raw source, editing, previewing, diffing
arayüzleri. (Bakın _gelişmiş_ diyorum!)
5. Şu an için account:Create sayfasını oluşturmadım. (Çünkü bunu nasıl
yapacağıma tam karar veremediğim gibi, burada zaman kaybetmek de
istemedim. Kullanıcıdan e-posta yoluyla onaylama mı bekleyelim,
yoksa direk sorgusuz sualsiz kayıt mı edelim?) Ama tüm veri düz
metin/lisp dosyaları halinde tutulduğundan, şimdilik kullanıcı
hesaplarını elle oluşturmak çok kolay:
shell$ echo '(:PASSWORD "48F93C6A0ED7177E316BFB493AC6198A"
ricam, bana SVN/CVS/Darcs ve lisp sunucusu için yardımcı olabilecek
birilerinin olup olmadığı.
Unutmadan, deneme sürüşü için
http://www.students.itu.edu.tr/~yazicivo/aliw.tar.gz adresinden paketi
çekip ASDF ile kurduktan sonra
(in-package :aliw)
(defparameter *site* (start-server :port 8080 :address "127.0.0.1"))
komutu ile sunucuyu çalıştırıp, internet tarayıcınız ile deneme
sürüşüne çıkabilirsiniz. (`test' kullanıcısı ile SignIn
olabilirsiniz. Şifre `test'.)
İyi çalışmalar.
Yaklaşık 1, 1.5 aydır bir wiki yapma gayreti içindeydim ve bugün ASDF
ile yüklenebilir bir prototip oluşturmayı başardım. Adını "A Lisp in
Wonderland" koyduğum wiki'nin özellikleri şu şekilde:
1. DTD dosyası ile belirlenmiş, kendine ait bir sözdizimine
sahip. Sayfadaki başlıklar (H1, H2, H3) için içerik (TOC) menüsü
oluşturmaktan, sayfadaki dış bağlantıları (<link type="external"
...) listelemeye kadar (EXTERNAL-LINKS), markup ile sunduğumuz
makrolar da oldukça leziz.
2. Ulaşılacak olan path'ler, ayrı bir mekanizma ile saklanıyor. Şöyle
ki, istemci tarafından girilen her bir URI, WIKI-PATH sınıflarına
çözümleniyor, bu WIKI-PATH sınıfları da birden fazla biçimde
saklanabilip, bu biçimler arası dönüşüm yapılabiliyor.
Örneğin:
(wiki-path-from :uri "/page/Documents/Installation")
(wiki-path-from :label "page:Documents/Installation")
(wiki-path-from-to :label "page:Foo/Bar/Baz" :uri)
Ve daha 3-5 biçim daha var. Bu WIKI-PATH olgusu wiki'yi kullanacak
kişi açısından bir anlam ifade etmese de, wiki'yi geliştirmek için
programcıya oldukça kullanışlı bir API sunuyor. (Aslında bir çok
işlem (her şey?) API aracılığı ile yapılıyor. Programcı, sayfanın
içeriği hangi klasörde, ne biçimde saklanıyor, vs... ve daha bir
çok şeyi bilmek zorunda değil.)
3. Her bir URI'in kendine ait bir wiki-path değeri var. Şu an sadece
:account ve :page path'leri desteklenmesine rağmen, 1-2 hafta
içinde :file ve :image path tiplerini de ekleyeceğim. (Epey bir
XmlHttpRequest çalışması gerekecek.)
4. Gelişmiş history, raw source, editing, previewing, diffing
arayüzleri. (Bakın _gelişmiş_ diyorum!)
5. Şu an için account:Create sayfasını oluşturmadım. (Çünkü bunu nasıl
yapacağıma tam karar veremediğim gibi, burada zaman kaybetmek de
istemedim. Kullanıcıdan e-posta yoluyla onaylama mı bekleyelim,
yoksa direk sorgusuz sualsiz kayıt mı edelim?) Ama tüm veri düz
metin/lisp dosyaları halinde tutulduğundan, şimdilik kullanıcı
hesaplarını elle oluşturmak çok kolay:
shell$ echo '(:PASSWORD "48F93C6A0ED7177E316BFB493AC6198A"
/accounts/VolkanYAZICI
Bir çırpıda, bahsetmek istediğim önemli noktalar bunlar. Gruptan asılricam, bana SVN/CVS/Darcs ve lisp sunucusu için yardımcı olabilecek
birilerinin olup olmadığı.
Unutmadan, deneme sürüşü için
http://www.students.itu.edu.tr/~yazicivo/aliw.tar.gz adresinden paketi
çekip ASDF ile kurduktan sonra
(in-package :aliw)
(defparameter *site* (start-server :port 8080 :address "127.0.0.1"))
komutu ile sunucuyu çalıştırıp, internet tarayıcınız ile deneme
sürüşüne çıkabilirsiniz. (`test' kullanıcısı ile SignIn
olabilirsiniz. Şifre `test'.)
İyi çalışmalar.