<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description></description><title>Making world happy…</title><generator>Tumblr (3.0; @monsterzz)</generator><link>http://monsterzz.info/</link><item><title>xul-common. Urllib</title><description>&lt;p&gt;Продолжая тему &lt;a href="http://github.com/monsterzz/xul-common/" target="_blank"&gt;xul-common (проект на github.com)&lt;/a&gt;. Сегодня будет Urllib. Пока что в нем всего один метод &lt;code&gt;fetch&lt;/code&gt;, который позволяет загрузить содержимое урла через &lt;code&gt;nsIIOService&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Пример использования:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Logger.log(Urllib.fetch("http://monsterzz.info/"), "Urllib.fetch");&lt;/code&gt;&lt;/pre&gt;</description><link>http://monsterzz.info/post/437634636</link><guid>http://monsterzz.info/post/437634636</guid><pubDate>Wed, 10 Mar 2010 02:01:00 +0300</pubDate><category>xul</category><category>development</category></item><item><title>Используем NSArray как NSTableDataSource</title><description>&lt;p&gt;&lt;pre&gt;&lt;code&gt;@implementation NSArray (NSTableDataSource)

- (id) tableView: (NSTableView *) aTableView&lt;br/&gt;       objectValueForTableColumn: (NSTableColumn *) aTableColumn&lt;br/&gt;       row: (int) rowIndex; {&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;    id object = [self objectAtIndex:rowIndex];
    SEL colSelector = NSSelectorFromString([aTableColumn identifier]);
    if ([object respondsToSelector: colSelector])
        return [object performSelector: colSelector];
    else
        return NULL;
}

- (int) numberOfRowsInTableView: (NSTableView *) aTableView; {
    return [self count];
}
@end&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;</description><link>http://monsterzz.info/post/437630013</link><guid>http://monsterzz.info/post/437630013</guid><pubDate>Wed, 10 Mar 2010 01:58:00 +0300</pubDate><category>cocoa</category><category>development</category></item><item><title>Что нового в XSLT2</title><description>&lt;p&gt;Что нового в &lt;b&gt;XSLT&lt;/b&gt;/XPath 2.0? Почему я выбираю его для повседневной работы?&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Группировка&lt;/b&gt;. Сколько вам потребовалось времени, чтобы запомнить синтаксис группировки Мюнха? Сколько раз вы ошибались при ее написании? Теперь все это в прошлом.&lt;/p&gt;
&lt;pre&gt;&lt;xsl:for-each-group select="/page/statistics/event" group-by="@user"&gt;
    &lt;h1&gt;&lt;xsl:value-of select="current-grouping-key()"/&gt;&lt;/h1&gt;
    &lt;xsl:for-each select="current-group()"&gt;
        &lt;!-- а здесь работаем с текущей группой --&gt;
    &lt;/xsl:for-each&gt;
&lt;/xsl:for-each-group&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;Работа со строками&lt;/b&gt;. Надоело использовать рекурсивный вызов именованных шаблонов? &lt;b&gt;XSLT&lt;/b&gt; 2.0 приходит на помощь. Функции &lt;code&gt;replace&lt;/code&gt; и &lt;code&gt;match&lt;/code&gt;, работающие с регулярными выражениями, возможность объявлять свои функции и множество нововведений в области работы со строками.&lt;/p&gt;
&lt;pre&gt;&lt;xsl:value-of select="replace(text(), '\s+[-–—]\s+’, ‘ — ‘)”/&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;Вывод в несколько файлов&lt;/b&gt; (xsl:result-document).&lt;/p&gt;
&lt;pre&gt;&lt;xsl:template match="node"&gt;
    &lt;!-- вывод в основной поток --&gt;
    &lt;a href="{position()}.html"&gt;&lt;xsl:value-of select="@attr"/&gt;&lt;/a&gt;
&lt;span&gt;    &lt;/span&gt;&lt;!-- вывод в другой поток --&gt;
&lt;span&gt;    &lt;/span&gt;&lt;xsl:result-document href="{position()}.html"&gt;
&lt;span&gt;    &lt;span&gt;    &lt;xsl:apply-templates/&gt;&lt;br/&gt;&lt;span&gt;    &lt;/span&gt;&lt;/xsl:result-document&gt;&lt;br/&gt;&lt;/xsl:template&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;XPath 2.0&lt;/b&gt;. XPath стал полноценным языком программирования.&lt;/p&gt;
&lt;pre&gt;for $row in //tr
&lt;span&gt;    &lt;/span&gt;return&lt;br/&gt;&lt;span&gt;    &lt;span&gt;    if (count( $row/td ) &gt; 3)&lt;br/&gt;            then "many"&lt;br/&gt;            else "few"&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;Новые функции и операторы&lt;/b&gt;. &lt;code&gt;every&lt;/code&gt;, &lt;code&gt;intersect&lt;/code&gt;, &lt;code&gt;except&lt;/code&gt;, итд.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Вывод XHTML&lt;/b&gt;. Наконец-то можно полноценно выводить XHTML без «грязных хаков».&lt;/p&gt;
&lt;pre&gt;&lt;xsl:output method="xhtml"
    media-type="application/xhtml+xml"
    doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
    doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" /&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;Последовательности&lt;/b&gt; (Sequences). В XPath 2.0 каждый оператор возвращает последовательность. Последовательность может содержать как набор узлов, так и атомарные значения.&lt;/p&gt;
&lt;pre&gt;&lt;xsl:variable name="nodesetvar"&gt;&lt;br/&gt;&lt;span&gt;    &lt;/span&gt;&lt;mynode&gt;&lt;br/&gt;&lt;span&gt;    &lt;span&gt;    &lt;child&gt;wow&lt;/child&gt;&lt;br/&gt;    &lt;/mynode&gt;&lt;br/&gt;&lt;/xsl:variable&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;xsl:apply-templates select="$nodesetvar"/&gt;&lt;/pre&gt;</description><link>http://monsterzz.info/post/437641577</link><guid>http://monsterzz.info/post/437641577</guid><pubDate>Fri, 13 Nov 2009 00:00:00 +0300</pubDate><category>xslt</category><category>development</category></item></channel></rss>
