Logic-less Template elestirisi

Yazı harika, hatta sunu diyebilirim son zamanlarda okudugum en guzel yazilardan bir tanesi.

Özellikle boyle masa basinda oturup da gotunden uydurduklariyla gumus kursun icat etmeye calisan bilgisayar muhendisleri dusunuldugunde cok salgam laf sokmalar var :D…

Yazının tumunu paylasiyorum…

Cult of Logic-Less Templates

Logic-less templates like Mustache, Handlebars, Hogan etc. have taken the JavaScript community by storm. I believe they promote bad practices and are perpetuated by dogmatic claims that don’t correspond to reality.

Separation of Concerns My Ass

Undoubtedly, business and presentational logic should be kept separate. The claim that logic-less templates keep business logic out of templates is true, but why does no one consider the other side of the story: keeping presentational logic out of business code? With lobotomized template systems like Mustache, you are forced to perform a bunch of “data-massaging” in your code before running it through the template system. Not only does it feel like stepping back into the iron age, this actually violates SoC!

The reality is: dividing business and presentational logic is a design problem that requires you to use your brain. Yes, you! You can’t make the problem go away by redefining presentational logic as a simple JSON-to-string transformation. In fact, presentational logic doesn’t give a damn about your lazy opinions, it just is. Your job is to find it and consolidate it.

Less is More

The less features you are given, the more code you will have to write on your own. Micro- this and minimalist that come at a price: you will inevitably find yourself reinventing the wheel. If your templating system doesn’t support conditionals, or sorting or date formatting, you will have to implement it all yourself, in the god-awful data-massaging portion of your code. Data-massaging makes me want to pour salt on snails.

So, what’s the solution?

I think Django has a very good approach:

  1. Your Controllers (or Views, whatever) pass the relevant Models into the template system
  2. The template system handles all presentational logic, traversing model relationships by calling on the model system when necessary. This can be and often is part of presentational logic (e.g. showing the latest activity on a user’s profile page). Of course, all operations should be read-only.
  3. When multiple templates need the same data processing for a particular model, factor that processing into the model, and call this method from the template system (e.g. full name = first name + last name).
  4. When multiple templates need the same data processing for different models, extend the template system.

This calls for a real templating system, not a gimmick. It should:

  1. Handle all kinds of presentational logic (even if statements gasp)
  2. Encourage Separation of Concerns
  3. Be extensible, have a rich library of generic, useful functions such as date formatting, truncation, pluralization etc.
  4. Support template inheritance (if used for website layouts).

Designing such a template system is a real challenge, but it really pays off. I have a good deal of experience with the Django template system, I think it really rocks. For JavaScript, Jade looks very good, it also seems to be the only JavaScript templating language to support template inheritance.

Be wary of technological solutions to design problems, more often than not they are a scam!

link: http://www.boronine.com/2012/09/07/Cult-Of-Logic-less-Templates/

Eleman resmen efsane ve dediklerinin tumune katiliyorum!! Hele hele highlite ettigim kisimlarin sonuna kadar katiliyorum :D…

Reklamlar

Template Engine vs. JSP

Kurumsal yazilimlarda en sıkıntılı gordugum nokta jsp kodları icerisine logic implement edilmesi. Yazılımcıların model alanlarını ve durum degiskenlerini kullanarak hizlica cozum uretmeye calismalari bir yerden sonra kontrol altına alinamayan jsp sayfalari ile karsilamayi doguruyor! Jsp kodunun daha clean hale getirilebilmesi icin bu mantıgın bir sekilde delege edilerek jsp sayfalarinin olabildigince logicless hale getirilmesi gerekiyor.

template engineler tam da bu noktada devreye giriyorlar!

Template engine kullanimin getirdigi faydalari su sekilde ozetlemis eleman:

In other words, it prevents you from shooting yourself in the foot. In the old JSP days, it was very common to have JSP files sprinkled with Java code, which made refactoring much harder, since you had your code scattered.

If you prevent logic in templates by design (like mustache does), you will be obliged to put the logic elsewhere, so your templates will end up uncluttered.

Another advantage is that you are forced to think in terms of separation of concerns: your controller or logic code will have to do the data massaging before sending data to the UI. If you later switch your template for another (let’s say you start using a different templating engine), the transition would be easy because you only had to implement UI details (since there’s no logic on the template, remember).

http://stackoverflow.com/questions/3896730/whats-the-advantage-of-logic-less-template-such-as-mustache

İlgili yazida verilen diger yorumlari da dikkatli okudugumuzda esasinda logicless olarak gorulen template engine lerin de aslinda icerilerinde logic barindirdigini da gorebiliriz! Bunu da gozden kacirmamak gerekiyor!

Bilmiyorum bana kalirsa duzgun jsp yazmak daha onemli!! en azindan oncelikli geliyor… cunku template engine isin icine girdiginde

  1. performans turunde sorunların gundeme gelmesi soz konusu olacaktir.
  2. Yazılım uzerinde yeni bagimliliklar da yaratilacaktir.
  3. ve ayrıca bir de template engine dilini de ogrenmek gerekecektir!

Bunlardan ote bir de sunu belirtmekte yarar goruyorum. JSP yi sorunlu gibi gosteren temel arguman jsp icerisinde java kodunun gomulmesi durumu! ki gunumuzde bu tur yaklasimlarin cok oldugunu dusunmuyorum!! bunun disinda mantigin tamamen jsp disina alindigi durumlarda kurumsal yazilim gelistirme isinde gercekten de guclu bir arac oldugunun altini cizmek gerekiyor!

Not: Template engine arastirmalarimi ayrı bir yazida sunacagim…

netbeans hibernate configurasyonu hk.

Database isleri icin hibernate kullanıyorum projelerde. Ancak kimi zaman hibernate mappingleri dogrudan spring icerisinde olabiliyor!! Bunun yerine hibernate mappinglerini kendi konfigurasyon dosyasi icerisinde tutmak daha dogru diye dusunuyorum!!  (hibernate.cfg.xml)

Hibernate mappinglerini bu sekilde ayirdigimizda, farkli build yaklasimlarinda bu dosyanin proje icerisinde farkli yerlerde olmasi gerekiyormus.

Msl maven kullanan bir projede dosyanin src/ altinda olmasi gerekliymis. Ama normal bir web projesinde WEB-INf/classses altinda olmasi yeterli oluyormus!

aslinda burdaki mantik bir dosyayi classpath uzerinde gorunur kilmayla aynı sey! bunu yapabilmek icin de dosyanın WEB-INF/classes altında olmasi gerekiyor!

It is the same for any other time you need a file visible on the classpath. The config file hibernate.cfg.xml needs to be on the classpath. Exactly that and nothing else is key.

http://stackoverflow.com/questions/12677783/where-to-place-hibernate-cfg-xml

Dizel mi? Benzinli mi?

Bu aralar ben de araba değiştirmeyi düşünüyordum inceleme yazısı tam da üzerine geldi. Kapsamlı güzel bir araştırma olmuş, tabi bi yandan da benzinli araçları övmüşler…

Aralık ayında baya dizel sattılardı :D… Millete yazık ettiler :D…

http://www.hurriyet.com.tr/dizel-mi-benzinli-mi-40398590

Bi de bu tur inceleme araştırma haberleri haber sitelerinde gerilerde kalıyor!!(Anasayfada olmuyorlar…) Bu nedenle alt sayfalara bakmayı unutmamak lazım internette haber okurken… Yoksa bu tür güzel araştırmaları kaçırmak işten bile değil!

Yağmacılar – Marauders

Öncelikle Bruce Wills’i kadroda gördüğümde biraz korktum :D. Adam son dönemde yaptığı filmlerde resmen batırıyordu!! Gerçi bu filmde de pek bi ortada görünmüyor, genelde diğer oyuncular işi götürüyorlar.

Filme gelecek olursak! Çok kısa konuşacağım pek bişi anlamadım :D… Daha doğrusu çekimlerden ya da sahnelerin ve olay örgüsünün yeterince birbirine bağlanmamasından mıdır bilemem ama bittikten sonra bile çözemiyorsunuz!!

Tamam yönetmen bir şekilde oyun içinde oyun işlemeye çalışmış ama bunu anlatamamış!! İp uçları vermesi gerekirdi! Ha ben de filmi çok dikkatli izlemedim ancak dikkatli izlemesem bile bu kadar fransız kalmamam lazımdı! Sonuçta olimpiyat sorusu çözmüyoruz ya!

Aksiyon çok yok ama sıkıcı değil, izlenir mi? Bence izlenir.

http://www.fullhdfilmizlesene.org/aksiyon-filmleri/marauders/