Discussion:
A Lisp in Wonderland!
Volkan YAZICI
2007-06-23 14:56:42 UTC
Permalink
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"
/accounts/VolkanYAZICI
Bir çırpıda, bahsetmek istediğim önemli noktalar bunlar. Gruptan asıl
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.
Aycan iRiCAN
2007-06-23 19:13:32 UTC
Permalink
Post by Volkan YAZICI
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
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.
(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ı
shell$ echo '(:PASSWORD "48F93C6A0ED7177E316BFB493AC6198A"
/accounts/VolkanYAZICI
Bir çırpıda, bahsetmek istediğim önemli noktalar bunlar. Gruptan asıl
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.
Size her türlü konuda yardımcı olmaktan keyif duyarız. İstanbul'daki
sunucumuzda size hesap açalım. Orada darcs, git gibi araçlar var, lisp
makinası, screen ve emacs var. Uzaktan terminal bağlantısı ile
bağlanabilirsiniz. Yardım edebileceğimiz diğer konuları da bildirirseniz
elimizden geleni yaparız.

Sevgiler...
--
Aycan iRiCAN
Kor Bilişim Ltd. Şti.
http://www.core.gen.tr/
Volkan YAZICI
2007-06-23 20:12:17 UTC
Permalink
Post by Aycan iRiCAN
Size her türlü konuda yardımcı olmaktan keyif duyarız. İstanbul'daki
sunucumuzda size hesap açalım. Orada darcs, git gibi araçlar var, lisp
makinası, screen ve emacs var. Uzaktan terminal bağlantısı ile
bağlanabilirsiniz.
Bunlar bana fazlasıyla yeter de artar. Gerçekten çok teşekkür
ederim. Bu hafta biraz dişimi sıkıp :file ve :image wiki-path
desteklerini de ekledikten sonra versiyon kontrol sistemine ilk sürümü
yerleştirebiliriz. (Yani en kısa zamanda size tekrar geri döneceğim.)


İyi çalışmalar.
Aycan iRiCAN
2007-06-23 20:14:46 UTC
Permalink
Post by Volkan YAZICI
Post by Aycan iRiCAN
Size her türlü konuda yardımcı olmaktan keyif duyarız. İstanbul'daki
sunucumuzda size hesap açalım. Orada darcs, git gibi araçlar var, lisp
makinası, screen ve emacs var. Uzaktan terminal bağlantısı ile
bağlanabilirsiniz.
Bunlar bana fazlasıyla yeter de artar. Gerçekten çok teşekkür
ederim. Bu hafta biraz dişimi sıkıp :file ve :image wiki-path
desteklerini de ekledikten sonra versiyon kontrol sistemine ilk sürümü
yerleştirebiliriz. (Yani en kısa zamanda size tekrar geri döneceğim.)
Gelişmeleri heyecanla bekliyoruz :)

Sevgiler...
--
Aycan iRiCAN
Kor Bilişim Ltd. Şti.
http://www.core.gen.tr/
Zekeriya KOC
2007-06-29 17:11:30 UTC
Permalink
Merhaba,
http://people.core.gen.tr/~aycan.irican/web/publish/WebGelistirme.html
adresindeki belgeyi kullanarak UCW+ kütüphanesini kullanmaya çalışıyorum.
Şöyle bir sorunum var. Apache konfigurasyonunda sonu ucw ile biten istekleri
3001 portunda dinlemede olan lisp serverına yönlendirdim belgedeki gibi. Peki
benim lisp serverımı bu porttan çalıştırmam için ne yapmam gerekir? Yani
normalde boxseti yüklediğimde 4005 portta bir swank sunucu çalıştırıyor, bu
3001 nolu port da aynı şekilde mi kullanılacak demek? Yani 3001 portundan
dinleyen bir swank sunucuya mı ihtiyacım olacak?

Teşekkürler, iyi çalışmalar.

---
zekUs
Aycan iRiCAN
2007-06-29 18:29:55 UTC
Permalink
Post by Volkan YAZICI
Merhaba,
http://people.core.gen.tr/~aycan.irican/web/publish/WebGelistirme.html
adresindeki belgeyi kullanarak UCW+ kütüphanesini kullanmaya çalışıyorum.
Şöyle bir sorunum var. Apache konfigurasyonunda sonu ucw ile biten istekleri
3001 portunda dinlemede olan lisp serverına yönlendirdim belgedeki gibi. Peki
benim lisp serverımı bu porttan çalıştırmam için ne yapmam gerekir? Yani
normalde boxseti yüklediğimde 4005 portta bir swank sunucu çalıştırıyor, bu
3001 nolu port da aynı şekilde mi kullanılacak demek? Yani 3001 portundan
dinleyen bir swank sunucuya mı ihtiyacım olacak?
Selam,

Swank sadece emacs ile lisp makinanıza bağlanmak için. Apache'deki lisp
modülünün gelen istekleri lisp makinanıza gönderebilmesi için
yarattığınız sunucunun mod-lisp-backend ile çalışması yeterli.
Sunucunuzu aşağıdaki gibi tanımlayabilirsiniz.

(defclass example-server (apache-server ucw-server)
()
(:default-initargs :name "example"))

Öntanımlı olarak bu sunucu mod-lisp ile çalışır ve 127.0.0.1:3001
yuvasından istekleri bekler. Farklı ayarlar verebilmek için aşağıdaki
gibi de tanımlayabilirsiniz.

(defclass example-server (apache-server ucw-server)
()
(:default-initargs :name "example"
:backend (ucw::make-backend :mod-lisp :host "0.0.0.0" :port 4242)))

Son olarak sunucuyu çalıştırmak için:

(defvar *server* (make-instance 'example-server))
(start *server*)

Önemli not: Apache sunucunuzdaki "/dojo/" dizinine dojo kütüphanesini
koymayı unutmayın. http://localhost/dojo/dojo.js dosyasına erişebiliyor
olmanız lazım. ucw+-boxset içinde dojo kütüphanesini
"ucw_dev/wwwroot/dojo" dizininde bulabilirsiniz.

Sevgiler...
--
aycan
Zekeriya KOC
2007-06-29 18:06:05 UTC
Permalink
Post by Aycan iRiCAN
Selam,
Selam,
Post by Aycan iRiCAN
Swank sadece emacs ile lisp makinanıza bağlanmak için. Apache'deki lisp
modülünün gelen istekleri lisp makinanıza gönderebilmesi için
yarattığınız sunucunun mod-lisp-backend ile çalışması yeterli.
Sunucunuzu aşağıdaki gibi tanımlayabilirsiniz.
(defclass example-server (apache-server ucw-server)
()
(:default-initargs :name "example"))
Öntanımlı olarak bu sunucu mod-lisp ile çalışır ve 127.0.0.1:3001
yuvasından istekleri bekler. Farklı ayarlar verebilmek için aşağıdaki
gibi de tanımlayabilirsiniz.
(defclass example-server (apache-server ucw-server)
()
(:default-initargs :name "example"
:backend (ucw::make-backend :mod-lisp :host "0.0.0.0" :port 4242)))
(defvar *server* (make-instance 'example-server))
(start *server*)
Önemli not: Apache sunucunuzdaki "/dojo/" dizinine dojo kütüphanesini
koym,
ayı unutmayın. http://localhost/dojo/dojo.js dosyasına erişebiliyor
olmanız lazım. ucw+-boxset içinde dojo kütüphanesini
"ucw_dev/wwwroot/dojo" dizininde bulabilirsiniz.
buradakileri aynen uyguladım ve ek olarak yazdığınız belgedeki şu işlemleri
yaptım;
CL-USER> (in-package :core-server)
SERVER> (defparameter *p1* (make-darcs-application "www.deneme.com"
"deneme"
"***@core.gen.tr"

#P"/tmp/ucw+-boxset/projects/deneme/"))
*P1*
SERVER> (serialize *p1*)
T
SERVER> (evaluate *p1*)
T
SERVER> (deneme::register-me *server*)
#<EXAMPLE-SERVER "example" is running. {B4C5DD9}>
SERVER>

tam olarak aynı çıktıları almadım gerçi ama server example is running mesajını
aldım. bunların sonucunda tarayıcımdan
http://localhost/www.deneme.com/index.core adresine gitmek istediğimde
internal server error hatası alıyorum. apache konfigurasyonumu da belgedeki
gibi yaptım. Ama şimdilik olmadı.
Post by Aycan iRiCAN
Sevgiler...
Teşekkürler.
Post by Aycan iRiCAN
--
aycan
_______________________________________________
cs-lisp mailing list
http://church.cs.bilgi.edu.tr/lcg
http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp
Loading...