ahmet usal wrote:
> An itibariyle Emacs Wiki sayfasına da ekledim.
>
> Aycan Bey ilginiz ve olumlu yorumunuz için  teşekkür ederim. Ben bu
> konuda biraz farklı düşünüyorum.
>
> Topluca Web 2.0 diye adlandırdığımız ; Ajax - Javascript etkileşimiyle
> web uygulamaları oluşturma konsepti bence programcı ile tasarımcı
> arasındaki uçurumu azaltmakta; Şöyleki:
>
> Artık görsel yönden ne kadar güçlü tasarım yaparsanız yapın;
> kullanıcıyla etkileşim halinde olmazsa; webde çığla büyüyen örneklere
> bakan müşteriler ve kullanıcılar; yapılan çalışmayı yetersiz
> bulacaklardır. Kullancıyla etkileşim için de; Temel web kodlama
> altyapınız olmalıdır; içeriği sunumdan ayırmayı; css-html-javascript
> üçlemesini iyi kodlamayı becerebilmeniz gerekir. Bu da tasarımcıyı bu
> işe dahil edecek bir süreçtir.
>
> Adobe firması bile Spry diye lisansı görece serbest teknolojileri web
> geliştiricilerinin kullanımına
> açtı:http://labs.adobe.com/technologies/spry/  adresine bakın. Ortalık
> Framework-Library diye kaynıyor. Programcılara KISS (Keep it Simple
> Stupid) and DRY(Don't Repeat Yourself) prensipleriyle; mevcut
> sunucu-istemci taraflı frameworklerle kolayca çalışabilecekleri empoze
> ediliyor.
>
> Bu yaklaşımlar küçük projelerde tasarımcıların da; frameworklerle
> kendi işlerini görebilecekleri anlamına geliyor. Eski tasarım araçları
> artık yetersiz kalıyor. Dreamveawer en yeni sürümünde bile bir
> "Firebug" eklentisinin yaptıklarını yapamıyor. Ortalık herzamankinden
> güçlü ve işlevsel CMS'lerle dolu. Ben şahsen işlerimi bu şekilde
> halletmeye çalışıyorum. (Bu yüzden ne tasarımcıyım ne de programcı:)
>
> Bu durumda ister istemez tasarımcı bile olsa herkes elini koda atmak
> zorunda. Yapabileceği en iyi şeyde kolay kullanabileceği, işlevsel bir
> metin editörü ile html-css-js kodlayıp, Firefox ile test etmek:)
>
> Mac makinalardaki Textmate bu yüzden patladı; Tüm bilgi veren
> Screencastlerde en çok göreceğiniz kodlama ve tasarım unsurları
> MacOSX-Textmate ve Firebug:)
>
> Ben sadece eski tüfekler metin düzenleyicilerine de emek verildiğinde
> istenilen editör işlevselliğinin her platformda; özellikle web
> kodlamasında fazlasıyla yakalanabileceğine bir örnek vermeye çalıştım;
> kendim zevkle kullanıyorum...Win32 ortamında temiz screencast üretmeyi
> becerdiğimde bu tür örnekleri de ekleyip buradan haber verme
> niyetindeyim...Özellikle merak ettiğiniz modlar varsa onları
> belirtirseniz, tanıtımda öncelik sahibi olurlar.
Beni yanlış anlamanızı istemem. Bahsettiğiniz araçları kullanıyoruz ve
sizin paylaşımlarınız ile bu araçlardan daha iyi faydalanıyoruz. Ancak
ben tasarımla ilgilenen insanlardan yıllardır ufak tefek de olsa kod
yazmalarını beklerken, bu ısrarlarımın yersiz olduğuna tanık oldum.
Tasarımcılar bazen acemilikleri ile, bazen de sanatsal bakış açılarıyla
üretimlerini tamamen görsel kaygılar üzerine yoğunlaştırıyorlar. Böyle
de olması gerektiğini düşünüyorum. Aksi endüstriyel bir tasarım sürecine
ve belki de bir miktar mühendisliğe de giriyor ki böyle bir sonuç
yaptığımız web sitelerinin "ciddi anlamda tasarım çalışmaları var mı?"
sorusuna götürüyor beni.

Bu düşüncemi desteklemek için var olan ürünlerin ve bunların
çıktılarının ne kadar birbirine benzediğini örnek verebilirim. Biz
yıllardır sütunlarla, menülerle desteklenmiş sitelere tanık olduk. Çünkü
kaygılarımız görselden uzaktı. Tasarım deyince bilgisayar ile insan
arasındaki etkileşimi anladık yıllarca. Oysa bunun ötesinde birşeyler
yapmaya çalışanlar vardı. Hoş olanın ötesinde birşeyler var mıdır?

Gerçek tasarımcılarla çalışabilecek yöntemleri bulmamız gerektiğini
söylemeye çalışıyorum aslında. Bunun yönteminin de icra edene teknik
eğitim vermekten geçmediğini düşünüyorum.

> Sizin verdiğiniz UCW platformuna dayalı örneği inceledim. Mesela 
> http://mootools.net - Mootools diye bir javascript kütüphanesi; aynı
> sizin yolunuzla javascript içinden Dom ve Css üretimi ve etkileşimine
> imkan veriyor. Bu anlamda uygulamanız güçlü. Ama frameworkler de en
> çok tercih edilen özellik; uygulama mantığının, veritabanın ve sunumun
> ayrı katmanlarda çalıştırılması.(Sizin de bildiğiniz
> Model-View-Controller Patterni) Bu programcı-tasarımcı ayrımını ve
> işbirliğini kolaylaştırıyor.
>
> Sizin uygulamanız bileşen tabanlı ve tüm bu uygulama üretim mantığı
> içiçe anladığım kadarıyla(yanlış anlıyorsam lütfen beni düzeltin.)
> Bu anlamda programcı-tasarımcı ayrımını tamamen ortadan kaldırıyor
> gibi göründü bana...Yani genel yaklaşımdan farklı bir yol.
>
MVC'yi ben tasarımcı ve programcının ayrılması olarak görmüyorum, bunlar
zaten ayrık olgular bence. Uygulamanın görsel çıktısı, modeli ve
bunların etkileşimlerinin birbirini etkilemeyecek şekilde kodlanabilmesi
olarak algılıyorum. Bu şekilde düşünülürse geliştirmekte olduğumuz
uygulama sunucusu ve bunun kullandığı kütüphaneler işlerini görüyorlar.
Bir senaryoyla örnek verebilirim.

Bir ana sayfa tasarlarken, öncelikle tasarımcının her türlü aracı
kullanarak (kağıt kalemden, bilgisayar destekli çizim programlarına) bir
konsept ortaya koymasıyla başlıyoruz. Daha sonra konsept tasarımın
uygulanabilirliği üzerine düşünüyor ve gerekli durumlarda tasarımcıdan
güncellemeler talep ediyoruz. Bu tasarımı bir makina sunacağı için
sayısallaştırmak, işleri kolaylaştırmak için uygulamayı soyutlayarak
modellemek ve bir akış mantığı kurmak gerekiyor. Bunu da lisp
programcıları sürdürmeler ve nesnel programlama ile yapabiliyorlar.

Bir giriş kutucuğu (login box) düşünecek olursak. Bu sayfanın soyut
modelini nesnel olarak bileşenlerle aşağıdaki gibi kurulabiliyor.

(defcomponent login-box (ajax-widget)
  ((username ...)
   (password ...))
  (:default-initargs :dom-id "login-box"))

(defmethod render (lb login-box)
  (<:form :id "login-form" :method "post" :action "#"
     (<:input :type "text" :name "username" :id "uname")
     (<:input :type "password" :name "password" :id "pass")
     (<:input :type "submit" :value "giriş" :action (if (authenticated?
login-box)
                                                                                
   
(call 'secure-main))))

Buraya kadar bileşeni ve bileşenin nasıl görüntüleneceğini yazdım. HTML
çıktıyla birlikte giriş tuşunun ne işlevi olduğunu da ekledim. Ancak
dileyen programcı bu işlevi aşağıdaki gibi de verebiliyor (belirteyim,
benim tanıdığım programcılar bu ayrımı kullanmayı tercih etmiyorlar).

(defmethod render-javascript (lb login-box)
  (ec :element "login-form" :event "onsubmit" :action ....))

(defserver-action submit-login (lb login-box)
  (server side code...))

(defclient-action submit-login (lb login-box)
  (client js code...))

Burada tanımlı javascript çıktısı elbette sayfanın içerisinde HTML ile
birlikte girişimli olarak üretilmiyor. Tanımladığımız her javascript
controller.js adlı kontrol dosyası olarak üretilerek HTML sayfamıza
bağlanıyor.

HTML çıktının nasıl bir görsel ile destekleneceğini ise aşağıdaki gibi
programlayabiliyoruz. Burada programlayabilmekten kastım, oluşturulacak
CSS çıktısının dinamik olarak (sunucu tarafındaki modele de bağlı
olabilerek) oluşturulabilmesi.

(defmethod render-css (lb login-box)
  (<:css "#login-box"
    :background-color (get-user-color (current-user))
    :color "black"))

Gene buradaki CSS çıktısı da sayfamıza style.css adıyla bağlanıyor. HTML
içerisine girişmiyor.

Ayrıca bütün kodlamayı dikey olarak lisp ile yapabilmemiz, gelişmiş
özellikleri de kullanabilmemize olanak veriyor. Burada her problemi
çözen bir şeyden bahsetmiyorum. Sadece geliştiricilerin daha hızlı
uygulama geliştirmesine olanak sağlamaktan bahsediyorum.

Bu örneklerle siz nasıl bir şeyler beklerdiniz? Sizin karşılaştığınız
problemler neler ve nasıl çözümler önerebilirsiniz? Yorumlarınızı
bekliyorum.

Sevgiler...

-- 
Aycan iRiCAN
C0R3 Computer Security Group
http://people.core.gen.tr/~aycan.irican/


_______________________________________________
cs-lisp mailing list
cs-lisp@cs.bilgi.edu.tr
http://church.cs.bilgi.edu.tr/lcg
http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp

Cevap