<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Журнал системного программиста &#187; firebird</title>
	<atom:link href="http://sadko.xskernel.org/archives/tag/firebird/feed" rel="self" type="application/rss+xml" />
	<link>http://sadko.xskernel.org</link>
	<description>блог обо всём и ни о чём</description>
	<lastBuildDate>Wed, 14 Dec 2011 20:21:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Продолжаю развивать проектик.</title>
		<link>http://sadko.xskernel.org/archives/1774</link>
		<comments>http://sadko.xskernel.org/archives/1774#comments</comments>
		<pubDate>Fri, 21 May 2010 20:05:00 +0000</pubDate>
		<dc:creator>SadKo</dc:creator>
				<category><![CDATA[Интернеты]]></category>
		<category><![CDATA[Кодинг]]></category>
		<category><![CDATA[日本語]]></category>
		<category><![CDATA[firebird]]></category>
		<category><![CDATA[kanji]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://sadko.xskernel.org/?p=1774</guid>
		<description><![CDATA[Tweet Собственно, как и было сказано ранее, я для упрощения изучения японского языка сделал такой вот сайтец &#8212; http://kanji.xskernel.org/. И обещал обновить его структуру. Сегодня залил свежий движок на пропатченную базу. Теперь осталось выпилить из базы лишние таблицы, которые уже не играют никакой роли. Наконец-то заработал словарь, который по мере изучения мною языка потихоньку пополняется [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin: 0 0 5px 10px; " class="vk-button">
<!-- vkontakte share button -->
<script type="text/javascript">
<!--
document.write(VK.Share.button(
{
  url: 'http://sadko.xskernel.org/archives/1774',
  title: 'Продолжаю развивать проектик.',
  description: 'Собственно, как и было сказано ранее, я для упрощения изучения японского языка сделал такой вот сайтец - http://kanji.xskernel.org/. И обещал обновить его структуру. Сегодня залил свежий движок на пропатч...',
  noparse: true 
}, 
{
  type: 'button',
  text: 'Скопировать'
}));
-->
</script>
<!-- / vkontakte share button -->
</div><div style="height:21px; padding-top:2px;" class="really_simple_share"><div style="float:left; " class="really_simple_share_linkedin"> 
				<script type="text/javascript" src="http://platform.linkedin.com/in.js"></script>
				<script type="in/share" data-counter="right" data-url="http://sadko.xskernel.org/archives/1774"></script>
			</div><div style="float:left; padding-left:10px;" class="really_simple_share_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="&ETH;&Ntilde;&ETH;&frac34;&ETH;&acute;&ETH;&frac34;&ETH;&raquo;&ETH;&para;&ETH;&deg;&Ntilde; &Ntilde;&ETH;&deg;&ETH;&middot;&ETH;&sup2;&ETH;&cedil;&ETH;&sup2;&ETH;&deg;&Ntilde;&Ntilde; &ETH;&iquest;&Ntilde;&ETH;&frac34;&ETH;&micro;&ETH;&ordm;&Ntilde;&ETH;&cedil;&ETH;&ordm;." data-url="http://sadko.xskernel.org/archives/1774">Tweet</a> 
				<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> 
			</div></div>
	<br style="clear:both;" /><p>Собственно, как и было сказано ранее, я для упрощения изучения японского языка сделал такой вот сайтец &#8212; <a href="http://kanji.xskernel.org/">http://kanji.xskernel.org/</a>. И обещал обновить его структуру. Сегодня залил свежий движок на пропатченную базу. Теперь осталось выпилить из базы лишние таблицы, которые уже не играют никакой роли. Наконец-то заработал словарь, который по мере изучения мною языка потихоньку пополняется новыми словами. Идею, предложенную товарищем <a href="http://users.livejournal.com/stalkerg/profile/"><img src="http://stat.livejournal.com/img/userinfo.gif" style="border: 0pt none ; vertical-align: bottom;" height="17" width="17"></a><a href="http://users.livejournal.com/stalkerg/"><b>stalkerg</b></a> я постарался воплотить по-максимуму. А именно: сделал возможным поиск слова не только по кандзи, но и по фонетической составляющей (то есть, можно вписать слово каной либо ромадзи, при этом добавлена ещё одна фича: если вы не знаете, является гласный звук долгим или коротким, то словарь выдаст вам оба результата, если все гласные звуки будут введены как короткие).<br />
Соответственно, раньше движок задумывался как запоминалка канзди, теперь же он всё больше и больше становится полноценным словарём, поэтому возможна трансляция как из японского в русский, так и из русского в японский. Единственное, что меня пока смущает, &#8212; это дополнения к слову. Их, скорее, следует переделать (вернее группировать), и я уже примерно представляю как. Но это позже. Сейчас меня больше беспокоит отсутствие админки, ввиду чего данные мне приходится пока по-прежнему вбивать специально написанными консольными скриптами.<br />
Также в самом движке добавил задел на поддержку не только СУБД <a href="http://dev.mysql.com/">MySQL</a>, но и СУБД <a href="http://firebirdsql.org/">Firebird</a>. Если будет время &#8212; обязательно продолжу развитие движка в этом направлении. В общем, планов море, а времени и сил &#8212; чуть.<br />
Опять же, если есть какие замечания/пожелания по поводу сайта, прошу писать отзывы.<br />
И, напоследок. В процессе написания движка сайта (а пишется он на <a href="http://perl.org/">PERL</a>), мне пришлось решить ряд задач, о которых могут выйти вполне интересные статьи. Если аудитории интересно &#8212; то я могу потихоньку выкладывать тут упрощённые кусочки движка с объяснением, как это работает. Заодно и блог оживёт, пожалуй.</p>
]]></content:encoded>
			<wfw:commentRss>http://sadko.xskernel.org/archives/1774/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Вопрос знатокам СУБД Firebird.</title>
		<link>http://sadko.xskernel.org/archives/1561</link>
		<comments>http://sadko.xskernel.org/archives/1561#comments</comments>
		<pubDate>Thu, 29 Oct 2009 16:31:50 +0000</pubDate>
		<dc:creator>SadKo</dc:creator>
				<category><![CDATA[Кодинг]]></category>
		<category><![CDATA[Свободное ПО]]></category>
		<category><![CDATA[cубд]]></category>
		<category><![CDATA[databases]]></category>
		<category><![CDATA[firebird]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://sadko.xskernel.org/?p=1561</guid>
		<description><![CDATA[Tweet Есть СУБД FireBird версии 2.0.x. Есть таблица, в которой одним из полей хранится битовая карта дней недели. Задача: проверить, входит ли день недели (номер 1-7) в битовую карту. Я понимаю, что в СУБД FireBird 2.1.x были введены операции BIT_xx, но использовать пока приходится только FireBird 2.0.x. Вот моё решение (отмечу, что MATCH=NULL тождественно всем [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin: 0 0 5px 10px; " class="vk-button">
<!-- vkontakte share button -->
<script type="text/javascript">
<!--
document.write(VK.Share.button(
{
  url: 'http://sadko.xskernel.org/archives/1561',
  title: 'Вопрос знатокам СУБД Firebird.',
  description: 'Есть СУБД FireBird версии 2.0.x.\nЕсть таблица, в которой одним из полей хранится битовая карта дней недели.\nЗадача: проверить, входит ли день недели (номер 1-7) в битовую карту.\nЯ понимаю, что в СУБД FireB...',
  noparse: true 
}, 
{
  type: 'button',
  text: 'Скопировать'
}));
-->
</script>
<!-- / vkontakte share button -->
</div><div style="height:21px; padding-top:2px;" class="really_simple_share"><div style="float:left; " class="really_simple_share_linkedin"> 
				<script type="text/javascript" src="http://platform.linkedin.com/in.js"></script>
				<script type="in/share" data-counter="right" data-url="http://sadko.xskernel.org/archives/1561"></script>
			</div><div style="float:left; padding-left:10px;" class="really_simple_share_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="&ETH;&ETH;&frac34;&ETH;&iquest;&Ntilde;&ETH;&frac34;&Ntilde; &ETH;&middot;&ETH;&frac12;&ETH;&deg;&Ntilde;&ETH;&frac34;&ETH;&ordm;&ETH;&deg;&ETH;&frac14; &ETH;&iexcl;&ETH;&pound;&ETH;&ETH; Firebird." data-url="http://sadko.xskernel.org/archives/1561">Tweet</a> 
				<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> 
			</div></div>
	<br style="clear:both;" /><p>Есть СУБД FireBird версии 2.0.x.<br />
Есть таблица, в которой одним из полей хранится битовая карта дней недели.<br />
Задача: проверить, входит ли день недели (номер 1-7) в битовую карту.<br />
Я понимаю, что в СУБД FireBird 2.1.x были введены операции BIT_xx, но использовать пока приходится только FireBird 2.0.x.<br />
Вот моё решение (отмечу, что MATCH=NULL тождественно всем дням недели, установленным в 1):</p>

<div class="wp_codebox"><table><tr id="p15612"><td class="code" id="p1561code2"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SET</span> TERM ^ ;
&nbsp;
<span style="color: #808080; font-style: italic;">-- Validate week day match</span>
<span style="color: #808080; font-style: italic;">--   param:   _MASK - week day mask</span>
<span style="color: #808080; font-style: italic;">--   param:   _VALUE - day of month (1-7)</span>
<span style="color: #808080; font-style: italic;">--   return:  _RESULT - match result: match type or NULL if no match</span>
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">OR</span> <span style="color: #993333; font-weight: bold;">ALTER</span> PROCEDURE FN_SCHEDULED_WEEKDAY_MATCH <span style="color: #66cc66;">&#40;</span>
    <span style="color: #ff0000;">&quot;_MASK&quot;</span> INTEGER<span style="color: #66cc66;">,</span>
    <span style="color: #ff0000;">&quot;_VALUE&quot;</span> INTEGER
<span style="color: #66cc66;">&#41;</span>
RETURNS <span style="color: #66cc66;">&#40;</span>
    <span style="color: #ff0000;">&quot;_RESULT&quot;</span> INTEGER <span style="color: #66cc66;">&#41;</span>
<span style="color: #993333; font-weight: bold;">AS</span>
    DECLARE VARIABLE <span style="color: #ff0000;">&quot;_TEST&quot;</span> INTEGER;
BEGIN
    <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_MASK&quot;</span> <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">&#41;</span> THEN
        BEGIN
            <span style="color: #808080; font-style: italic;">-- Binary functions are available only in FB 2.1, need to make workaround</span>
            <span style="color: #ff0000;">&quot;_MASK&quot;</span> <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;_MASK&quot;</span> <span style="color: #66cc66;">+</span> <span style="color: #cc66cc;">128</span>; <span style="color: #808080; font-style: italic;">-- For comparisons</span>
&nbsp;
            <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_VALUE&quot;</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AND</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_MASK&quot;</span><span style="color: #66cc66;">-</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_MASK&quot;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> THEN <span style="color: #808080; font-style: italic;">-- Monday</span>
                <span style="color: #ff0000;">&quot;_RESULT&quot;</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span>;
            ELSE <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_VALUE&quot;</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AND</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_MASK&quot;</span><span style="color: #66cc66;">-</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_MASK&quot;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> THEN <span style="color: #808080; font-style: italic;">-- Tuesday</span>
                <span style="color: #ff0000;">&quot;_RESULT&quot;</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span>;
            ELSE <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_VALUE&quot;</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AND</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_MASK&quot;</span><span style="color: #66cc66;">-</span><span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">8</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_MASK&quot;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">8</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> THEN <span style="color: #808080; font-style: italic;">-- Wednesday</span>
                <span style="color: #ff0000;">&quot;_RESULT&quot;</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span>;
            ELSE <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_VALUE&quot;</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AND</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_MASK&quot;</span><span style="color: #66cc66;">-</span><span style="color: #cc66cc;">8</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">16</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_MASK&quot;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">16</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> THEN <span style="color: #808080; font-style: italic;">-- Thursday</span>
                <span style="color: #ff0000;">&quot;_RESULT&quot;</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span>;
            ELSE <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_VALUE&quot;</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AND</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_MASK&quot;</span><span style="color: #66cc66;">-</span><span style="color: #cc66cc;">16</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">32</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_MASK&quot;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">32</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> THEN <span style="color: #808080; font-style: italic;">-- Friday</span>
                <span style="color: #ff0000;">&quot;_RESULT&quot;</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span>;
            ELSE <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_VALUE&quot;</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">6</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AND</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_MASK&quot;</span><span style="color: #66cc66;">-</span><span style="color: #cc66cc;">32</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">64</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_MASK&quot;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">64</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> THEN <span style="color: #808080; font-style: italic;">-- Saturday</span>
                <span style="color: #ff0000;">&quot;_RESULT&quot;</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span>;
            ELSE <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_VALUE&quot;</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">7</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AND</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_MASK&quot;</span><span style="color: #66cc66;">-</span><span style="color: #cc66cc;">64</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">128</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;_MASK&quot;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">128</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> THEN <span style="color: #808080; font-style: italic;">-- Sunday</span>
                <span style="color: #ff0000;">&quot;_RESULT&quot;</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">1</span>;
        END
    ELSE
        <span style="color: #ff0000;">&quot;_RESULT&quot;</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span>;
&nbsp;
    <span style="color: #808080; font-style: italic;">-- Suspend for select</span>
    SUSPEND;
END^
&nbsp;
<span style="color: #993333; font-weight: bold;">SET</span> TERM ; ^</pre></td></tr></table></div>

<p>Есть предложения лучше?</p>
]]></content:encoded>
			<wfw:commentRss>http://sadko.xskernel.org/archives/1561/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

