<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Jaros&#322;aw Zabie&#322;&#322;o - BLOG: Haml - nast&#281;pna generacja szablon&#243;w</title>
    <link>http://blog.zabiello.com/articles/2007/01/27/haml-nast%C4%99pna-generacja-szablon%C3%B3w</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>moje notatki, linki, komentarze</description>
    <item>
      <title>Haml - nast&#281;pna generacja szablon&#243;w</title>
      <description>&lt;p&gt;&lt;a href="http://haml.hamptoncatlin.com/"&gt;&lt;img src="/images/articles/haml.png" align="left" hspace="4px" /&gt;&lt;/a&gt; W zwi&#261;zku z przestawieniem si&#281; ca&#322;kowicie na najnowsz&#261; wersj&#281; &lt;a href="http://rubyonrails.org"&gt;Rails&#243;w&lt;/a&gt; (1.2.1), postanowi&#322;em przy zrobi&#263; tak&#380;e upgrade oprogramowania do mego bloga (kt&#243;ry w wersji jak&#261; mia&#322;em nie wsp&#243;&#322;pracowa&#322; z RoR 1.2.1).  Na szcz&#281;&#347;cie, dzi&#281;ki railsowym migracjom proces aktualizacji skrypt&#243;w &lt;em&gt;jak i struktury baz&lt;/em&gt;  przebieg&#322; bez problem&#243;w i niedestrukcyjnie dla danych w bazie. Typo&amp;#8221;:http://trac.typosphere.org/ zawsze by&#322; kodem troch&#281; awangardowym, wprowadzaj&#261;cym zaawansowane mechanizmy Rubiego i najnowsze pomys&#322;y Rails&#243;w. Przekona&#322;em si&#281; o tym podczas pr&#243;by modyfikacji paru szablon&#243;w. Typo zamiast dotychczasowego formatu &lt;a href="http://www.ruby-doc.org/stdlib/libdoc/erb/rdoc/"&gt;ERb&lt;/a&gt; (*.rhtml) Typo u&#380;ywa ju&#380; szablony nowej generacji &amp;#8211; &lt;a href="http://haml.hamptoncatlin.com/"&gt;Haml&lt;/a&gt;. Chc&#261;c niechc&#261;c, musia&#322;em przej&#347;&#263; szybki kurs pos&#322;ugiwania si&#281; nimi aby zmodyfikowa&#263; szablony w swoim blogu.&lt;/p&gt;


	&lt;p&gt;Moje pierwsze wra&#380;enia s&#261; bardzo pozytywne. Wystarczy&#322;o mi par&#281; minut aby ogarn&#261;&#263; sk&#322;adni&#281;. Szablon bazowy (layout) mojego bloga wygl&#261;da teraz tak (zrzut ekranu z RadRails/Eclipse, kt&#243;ry doczeka&#322; si&#281; ju&#380;  &lt;a href="http://haml.lucky-dip.net/"&gt;pluginu&lt;/a&gt;):&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://blog.zabiello.com/images/articles/haml_example.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;Mo&#380;e na pocz&#261;tku to nie wydaje si&#281; czytelne, ale po paru minutach pracy z Haml wida&#263;, &#380;e kod jest znacznie bardziej przejrzysty i kr&#243;tszy. Nie trzeba tak&#380;e zamyka&#263; tag&#243;w. Wida&#263; tu inspiracj&#281; Pythonem, gdy&#380; Haml u&#380;ywa dw&#243;ch spacji jako wyznacznika bloku. Ci, co patrzyli z niech&#281;ci&#261; na pythonowe u&#380;ywanie wci&#281;&#263; do oznaczania blok&#243;w,  b&#281;d&#261; musieli przejrze&#263; na oczy. :)&lt;/p&gt;


	&lt;p&gt;Hamlto skr&#243;t od &amp;#8220;XHTML Abstraction Markup Language&amp;#8221;. Zosta&#322; stworzony aby u&#322;atwi&#263; tworzenie czystego, dobrze zagnie&#380;d&#380;onego kodu &lt;span class="caps"&gt;HTML&lt;/span&gt;. 
 Haml umo&#380;liwia pe&#322;ny dost&#281;p do Rubiego i helper&#243;w Rails. Ale mo&#380;e by&#263; teoretycznie zastosowany jako wymiennik sk&#322;adni dla &lt;span class="caps"&gt;PHP&lt;/span&gt; czy &lt;span class="caps"&gt;JSP&lt;/span&gt;. Aktualnie  Haml to m&#322;ody projekt (powsta&#322; w maju 2006). Jest aktualnie u&#380;ywany tylko we frameworku  &lt;a href="http://rubyonrails.org"&gt;Ruby on Rails&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Haml generuje kod &lt;span class="caps"&gt;XHTML&lt;/span&gt; (czyli zgodny z &lt;span class="caps"&gt;XML&lt;/span&gt;).  Dba o odpowiednie wci&#281;cia i zagnie&#380;d&#380;enia tag&#243;w.  Zwyk&#322;e, r&#281;czne tworzenie kodu &lt;span class="caps"&gt;HTML&lt;/span&gt; jest nie tylko podatne na b&#322;&#281;dy. Jest tak&#380;e ma&#322;o czytelne. Jak do tego dodamy sk&#322;adni&#281; ERb, to si&#281; robi jeszcze mniej czytelniej. Haml jest recept&#261; zapewniaj&#261;c&#261; pe&#322;ny dost&#281;p do wszystkich mechanizm&#243;w Rubiego i Rails&#243;w ale&amp;#8230; bez zagnie&#380;d&#380;ania kodu Rubiego w kodzie &lt;span class="caps"&gt;HTML&lt;/span&gt;. Zamiast mozolnie wklepywa&#263; tagi, Haml proponuje budowanie ich w znacznie przejrzysty spos&#243;b.&lt;/p&gt;


	&lt;h2&gt;Instalacja&lt;/h2&gt;


	&lt;p&gt;Haml jest dost&#281;pny w formie pluginu do Rails&#243;w.&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="punct"&gt;./&lt;/span&gt;&lt;span class="regex"&gt;script&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;plugin&lt;/span&gt; &lt;span class="ident"&gt;install&lt;/span&gt; &lt;span class="ident"&gt;svn&lt;/span&gt;&lt;span class="punct"&gt;:/&lt;/span&gt;&lt;span class="regex"&gt;&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;hamptoncatlin&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;com&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;haml&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;tags&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;stable&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Mo&#380;na te&#380; zainstalowa&#263; Haml za pomoc&#261; gems&#243;w:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;gem&lt;/span&gt; &lt;span class="ident"&gt;install&lt;/span&gt; &lt;span class="ident"&gt;haml&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Moim zdaniem &lt;a href="http://haml.hamptoncatlin.com/"&gt;Haml&lt;/a&gt; jest pierwszorz&#281;dnym kandydatem na zast&#261;pienie g&#322;&#243;wnych szablon&#243;w Rails&#243;w &amp;#8211; &lt;span class="caps"&gt;RHTML&lt;/span&gt;. Chyba zaczn&#281; ju&#380; przebudowywa&#263; wszystkie swoje szablony. :)&lt;/p&gt;


	&lt;p&gt;Appendix:&lt;/p&gt;


	&lt;p&gt;Haml s&#261; ju&#380; przygotowane dla &lt;a href="http://groups.google.com/group/haml/web/syntax-highlighting"&gt;Jedita, Eclipse/RadRails, Textmate i (G)vim&lt;/a&gt;. Wys&#322;a&#322;em informacj&#281; na list&#281; Komodo aby to te&#380; dodali.&lt;/p&gt;


	&lt;p&gt;Update 2007-01-29:&lt;/p&gt;


	&lt;p&gt;Przepisa&#322;em wszystkie szablony na &lt;a href="http://zabiello.com"&gt;mojej stronie&lt;/a&gt;  do Haml.  S&#261; po prostu &#347;wietne.&lt;/p&gt;</description>
      <pubDate>Sat, 27 Jan 2007 04:33:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:2e98e271-affc-4966-aa86-f1fe4a47ec85</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2007/01/27/haml-nast%C4%99pna-generacja-szablon%C3%B3w</link>
      <category>Ruby on Rails</category>
      <category>haml</category>
      <category>rails</category>
      <category>erb</category>
      <category>templates</category>
    </item>
    <item>
      <title>"Haml - nast&#281;pna generacja szablon&#243;w" by Uzytkownik</title>
      <description>&lt;p&gt;@Jima: Wizualny design ma jedn&#261; podstawow&#261; wad&#281; &amp;#8211; jest oparty na wygl&#261;dzie a nie na znaczeniu. A tendencja jest teraz taka (co wida&#263; w rozwoju XHTML), &#380;e to maj&#261; by&#263; dane a CSS to opis wygl&#261;du tych danych. Przez co mo&#380;na wstawi&#263; przyk&#322;adowe dane, napisa&#263; pliki CSS i mie&#263; gotow&#261; stron&#281;(tzn. w teori si&#281; do tego d&#261;&#380;y, ale nie zawsze jest tak r&#243;&#380;owo). Zmiana wygl&#261;du strony (nie chodzi o wy&#347;wietlane informacje) to tylko podmiana plik&#243;w CSS.&lt;/p&gt;</description>
      <pubDate>Sat, 05 Jan 2008 20:23:30 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:9fca3b93-51dd-4fae-9cab-00a0b758c13d</guid>
      <link>http://blog.zabiello.com/articles/2007/01/27/haml-nast%C4%99pna-generacja-szablon%C3%B3w#comment-1334</link>
    </item>
    <item>
      <title>"Haml - nast&#281;pna generacja szablon&#243;w" by Janusz 'Kali' Kaliszczak</title>
      <description>&lt;p&gt;Czytelne, ale ka&#380;dorazowa przer&#243;bka statycznych template&amp;#8217;&#243;w w HTML-u do HAML-a jest k&#322;opotliwa. Konserwacja i przer&#243;bki takiego kodu r&#243;wnie&#380;.&lt;/p&gt;


	&lt;p&gt;RHTML jako mieszanina HTML-a z Ruby&amp;#8217;m jest strawniejsza a i da si&#281; w miar&#281; rozs&#261;dnie podejrze&#263; w przegl&#261;darce.&lt;/p&gt;</description>
      <pubDate>Tue, 14 Aug 2007 13:15:04 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:46367ee3-287c-405d-8ae6-d554fc85a104</guid>
      <link>http://blog.zabiello.com/articles/2007/01/27/haml-nast%C4%99pna-generacja-szablon%C3%B3w#comment-881</link>
    </item>
    <item>
      <title>"Haml - nast&#281;pna generacja szablon&#243;w" by Jarek</title>
      <description>&lt;p&gt;Te&#380; uwa&#380;am Haml za czytelne i proste w implementacji. Trzeba sie poprostu do nich przyzwyczaji&#263; ale mysl&#281; ,&#380;e warto.W&#322;a&#347;nie mysl&#281; nad implementacj&#261; ich na mojej stronie &lt;a href="http://www.wyliczanka.pl" rel="nofollow"&gt;Wyliczanka.pl&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 29 Jul 2007 10:52:25 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:77d2c95f-c2d3-4a5c-a8fa-53b0ac54f567</guid>
      <link>http://blog.zabiello.com/articles/2007/01/27/haml-nast%C4%99pna-generacja-szablon%C3%B3w#comment-867</link>
    </item>
    <item>
      <title>"Haml - nast&#281;pna generacja szablon&#243;w" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;Nie zgadzam si&#281;. Haml s&#261; bardzo czytelne. Czytelniejsze od ERb i kr&#243;tsze. Oczywi&#347;cie, &#380;e s&#322;u&#380;&#261; do kodowania r&#281;czniego. Rails &lt;a href="http://blog.zabiello.com/articles/2007/03/22/rails-templates" rel="nofollow"&gt;potrafi wsp&#243;&#322;pracowa&#263; z wieloma systemami szablon&#243;w&lt;/a&gt; je&#347;li kto&#347; ma inne upodobania.&lt;/p&gt;


	&lt;p&gt;W wypadku korzystania z wizualnych wpomagaczy takich jak Dreamweaver, lepiej u&#380;y&#263; szablon&#243;w &lt;a href="http://masterview.org/" rel="nofollow"&gt;MasterView&lt;/a&gt;, kt&#243;re logik&#281; trzymaj&#261; w atrybutach HTML. S&#261; w ten spos&#243;b 100% przezroczyste dla designera operuj&#261;cego Dreamweaverem.&lt;/p&gt;</description>
      <pubDate>Sun, 15 Jul 2007 23:50:14 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:13765d9c-2659-41c6-a54c-be6d3a230886</guid>
      <link>http://blog.zabiello.com/articles/2007/01/27/haml-nast%C4%99pna-generacja-szablon%C3%B3w#comment-861</link>
    </item>
    <item>
      <title>"Haml - nast&#281;pna generacja szablon&#243;w" by Jima</title>
      <description>&lt;p&gt;Szczerze mowi&#261;c, pomys&#322; &#347;rednio trafiony. Czytelno&#347;&#263; formularza zerowa, chyba &#380;e kto&#347; popracuje nad dodatkowymi wci&#281;ciami. Po wszystkich latach pracy z r&#243;&#380;nymi engine szablon&#243;w, jak na razie najbardziej spodoba&#322; mi si&#281; freemarker (dla Javy) i jego sk&#322;adnia. Ten ca&#322;y Haml wydaje si&#281; by&#263; na dok&#322;adnie przeciwleg&#322;ym biegunie&amp;#8230;
Poza tym nie ma nic chwalebnego w kodowaniu stron &amp;#8220;z palca&amp;#8221;, co wydaje ci si&#281; najwyra&#378;niej czynnikiem wyznaczaj&#261;cym prawdziwego designera (w odr&#243;&#380;nieniu od tego co u&#380;ywa Dreamweavera). Szczerze m&#243;wi&#261;c, ja te&#380; cz&#281;sto najpierw tworz&#281; szablon strony w czym wysiwygowym (ostatnio jest to Microsoft Expression, dosta&#322;em licencj&#281; za darmo wi&#281;c nie marudz&#281;, zw&#322;aszcza &#380;e kod jest o niebo lepszy ni&#380; w u&#380;ywanym powszechnie w firmie FrontPage), po czym 
&amp;#8220;o&#380;ywiam&amp;#8221; stron&#281; ju&#380; &amp;#8220;z palca&amp;#8221; bo edycja wizualna mieszanych szablon&#243;w ju&#380; kilka razy mi si&#281; &#378;le sko&#324;czy&#322;a, nawet gdy korzysta&#322;em z Dreamweavera. Tego typu potworki uniemo&#380;liwiaj&#261; takie tworzenie, chyba &#380;e po napisaniu ca&#322;ej masy karko&#322;omnych regexp&#243;w.&lt;/p&gt;</description>
      <pubDate>Mon, 09 Jul 2007 16:09:33 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:b18dee04-50d9-44db-bb36-1ceefccc5297</guid>
      <link>http://blog.zabiello.com/articles/2007/01/27/haml-nast%C4%99pna-generacja-szablon%C3%B3w#comment-858</link>
    </item>
    <item>
      <title>"Haml - nast&#281;pna generacja szablon&#243;w" by alfanick</title>
      <description>&lt;p&gt;A propos &amp;#8211; napisa&#322;em interpreter Hamla dla PHP 5 &amp;#8211; &lt;a href="http://phphaml.sourceforge.net" rel="nofollow"&gt;http://phphaml.sourceforge.net&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 18 Jun 2007 13:39:21 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:d3ced44f-da9a-4d6f-b7c8-432fd90c6c9e</guid>
      <link>http://blog.zabiello.com/articles/2007/01/27/haml-nast%C4%99pna-generacja-szablon%C3%B3w#comment-830</link>
    </item>
    <item>
      <title>"Haml - nast&#281;pna generacja szablon&#243;w" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;Problem mo&#380;e by&#263; tylko dla designer&#243;w uzale&#380;nionych od Dreamweavera. Je&#347;li jednak s&#261; to osoby koduj&#261;ce r&#281;cznie w HTML i CSS to z pewno&#347;ci&#261; doceni&#261; pi&#281;kno i prostot&#281; sk&#322;adni Hamla.&lt;/p&gt;</description>
      <pubDate>Sun, 28 Jan 2007 15:06:01 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:39a842cf-3866-4a96-8c3b-5f917d16fc6a</guid>
      <link>http://blog.zabiello.com/articles/2007/01/27/haml-nast%C4%99pna-generacja-szablon%C3%B3w#comment-455</link>
    </item>
    <item>
      <title>"Haml - nast&#281;pna generacja szablon&#243;w" by Pawe&#322; Rutkowski</title>
      <description>&lt;p&gt;obcy: zalezy jaki designer. Jak jest &amp;#8220;css-enabled&amp;#8221; to za&#322;apie szybko. Jak ja to pokaza&#322;em naszym &amp;#8220;&#322;ebowcom&amp;#8221;, to odrazu zauwa&#380;yli selektory css i szybko to ogarneli. Nie zmienia to faktu ze jeszcze nie u&#380;yli&#347;my tego w &#380;adnym komercyjnym projekcie :)&lt;/p&gt;</description>
      <pubDate>Sun, 28 Jan 2007 13:48:58 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:1e5234ae-9581-4e43-8431-86d07d423a43</guid>
      <link>http://blog.zabiello.com/articles/2007/01/27/haml-nast%C4%99pna-generacja-szablon%C3%B3w#comment-454</link>
    </item>
    <item>
      <title>"Haml - nast&#281;pna generacja szablon&#243;w" by obcy</title>
      <description>&lt;p&gt;jako&#347; trudno mi uwierzy&#263;, &#380;eby tylko 5%, ale sprawdz&#281; to kiedy&#347;.&lt;/p&gt;


	&lt;p&gt;Inn&#261; spraw&#261; jest, &#380;e &#380;aden designer nie skuma Haml&amp;#8217;a. A je&#347;li nawet to nie b&#281;dzie chcia&#322; z tym pracowa&#263;.&lt;/p&gt;


	&lt;p&gt;Moim zdaniem jedynym zastosowaniem Haml&amp;#8217;a mog&#261; by&#263; ma&#322;e projekty w kt&#243;rych designer i programista to ta sama osoba.&lt;/p&gt;</description>
      <pubDate>Sun, 28 Jan 2007 10:25:39 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:ec4a6f35-cb80-472f-a97e-35e5bdbf69f2</guid>
      <link>http://blog.zabiello.com/articles/2007/01/27/haml-nast%C4%99pna-generacja-szablon%C3%B3w#comment-453</link>
    </item>
    <item>
      <title>"Haml - nast&#281;pna generacja szablon&#243;w" by Jaros&#322;aw Zabie&#322;&#322;o</title>
      <description>&lt;p&gt;obcy: Nie sprawdza&#322;em, ale z tego &lt;a href="http://weblog.rubyonrails.org/2007/1/19/haml-1-0#comment-13300" rel="nofollow"&gt;co pisz&#261;&lt;/a&gt; wynika &#380;e narzut wydajno&#347;ci jest ma&#322;y, rz&#281;du 5%. Haml s&#261; kompilowane raz (podobnie jak pehapowe Smarty) i potem ju&#380; jest przetwarzany Ruby.&lt;/p&gt;


	&lt;p&gt;Piotr: Tak, wiem, ale tak jest w oryginale kodu Typo i nie chcia&#322;em go zmienia&#263;.&lt;/p&gt;</description>
      <pubDate>Sat, 27 Jan 2007 17:48:46 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:792b5f54-0317-4769-b460-8125f199d0b5</guid>
      <link>http://blog.zabiello.com/articles/2007/01/27/haml-nast%C4%99pna-generacja-szablon%C3%B3w#comment-452</link>
    </item>
    <item>
      <title>"Haml - nast&#281;pna generacja szablon&#243;w" by Piotr Usewicz</title>
      <description>&lt;p&gt;Nie uzywamy juz @content_for_layout, tylko yield :layout :)&lt;/p&gt;</description>
      <pubDate>Sat, 27 Jan 2007 12:52:20 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:8e63551f-3dc3-4867-abb5-ec5bb6fd6496</guid>
      <link>http://blog.zabiello.com/articles/2007/01/27/haml-nast%C4%99pna-generacja-szablon%C3%B3w#comment-451</link>
    </item>
    <item>
      <title>"Haml - nast&#281;pna generacja szablon&#243;w" by obcy</title>
      <description>&lt;p&gt;sprawdza&#322;e&#347; mo&#380;e wydajno&#347;&#263; z i bez Haml&amp;#8217;a?&lt;/p&gt;</description>
      <pubDate>Sat, 27 Jan 2007 08:44:17 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:9fda1694-fb0c-4bd9-b3e0-8a99d9f99f25</guid>
      <link>http://blog.zabiello.com/articles/2007/01/27/haml-nast%C4%99pna-generacja-szablon%C3%B3w#comment-450</link>
    </item>
  </channel>
</rss>
