So-net無料ブログ作成

configureとか [SQLite]

先週の最後に落とした「sqlite-src-3071200.zip」の方を解凍してみたところ、ばらのソースが一式入っていました。入っていた「README」を読んだところ、「configure」して、「make」しろとのこと。こちらはこのドキュメントにビルド方法が書かれていますね・・。

*

「configure」スクリプトは、「autoconf 2.61」と「libtool」を使用するとのこと。「autoconf」はずっと以前にちらっと出てきましたね。その記事によると、configureを作るためにautoconfを使ってるとのことですが、今回は逆ですか・・。それはさておき、「configure」がうまく動かない時は「Makefile.linux-gcc」を使えとのこと。

「configure」とか「autotools」とかは以前調べた様な気がするんですが、頭に残って無い上に記事も見つかりませんね・・・。

ちなみに、Linux向けバイナリは makefile で作成されていて、configure は使って無いとか。詳しくは「publish.sh」スクリプトを見ろとか・・。それはそうと、Amalgamationの方法が見つかりませんね・・。非公開なんでしょうか・・。


どうしようかな・・。





SQLiteのアーカイブを開梱してみる [SQLite]

前回から、SQLiteを見て行くことにしましたが、ダウンロードサイトから「sqlite-amalgamation-3071100.zip」を落として解凍したところ・・・、ソースコードのみ。

configureファイルとか、makefileとかをどんな感じにしてるのか見たかったのに、無いの???と思ってよく見たところ、下にある「sqlite-autoconf-3071100.tar.gz」にソースとそのあたりのスクリプトファイルが含まれている様でした。後、Tcl(TEA)のための拡張も入ってるとか。

*

解凍したところ、ソースファイル以外にもたくさんファイルが入ってますね。まず、「README」を読んでみましょう。構成としては、「sqlite3.c」が本体のソースで、一ファイルになっている様です。インストール方法については「INSTALL」を読めとのことです。

ソースについては、扱いはその方が楽でしょうが、保守が大変そうですねぇ・・・。と思っていたところ、こちらのページに実際には96ファイルのCソースで構成されているとの記載がありました。何らかの方法で一つのファイル「sqlite3.c」にまとめている様です。その方法も興味ありますねぇ・・・。よく見たら、このファイルは4.5MBくらいのサイズがあります・・。このファイルはSQLiteのコア部分と、「FT3」「RTREE」と言う拡張を含んでいる様ですね。

で、そのAPIはヘッダファイル「sqlite3.h」に含まれているとのこと。でも、アーカイブに含まれているソース「sqlite3.c」にはそのヘッダファイルの中身も含まれているらしいです。「sqlite3.c」しか手に入らない状況で、「sqlite.h」も欲しいと言う場合には、「sqlite3.c」から該当部分をコピペして「sqlite3.h」を自前で作ることも可能だとか・・。ビルド時はこの「sqlite3.c」を使った方が速いだろうとのことです。

*

ソースツリーが欲しいなと思っていたところ、ダウンロードページの下の方に「Leagcy Source Code Distribution Formats」として、配布されていました。奨励はされていない様ですが・・。結合(amalgamation?)の仕方が知りたいんですが、ここにその情報は入ってますかねぇ・・・。


つづく。





SQLiteを見てみる [SQLite]

延々とiCalendarの仕様を見てきましたが、一応前回で一通りは見れたのかなと思ってます。まだ、見ようと思ってたところがあった様な気もしますが、まあ、必要になった時に見ることにしましょう。

で、なんでiCalendarの仕様を見てたかと言うと、何となくライブラリを作成してみたいなぁと思っていたのでした。が、仕様を見始めたのが、一年以上前。と言うことで、仕事ならいないことにされそうな速度ですね。

まあ、こんなペースなので、まあ完成なんて、夢物語みたいなものですが、そもそも汎用ライブラリ的なものを作ったことが無いため、お手本としてSQLiteがどんな感じでできているのかと言うのを見たいと思います。・・・・これも、一年以上かかったりするかもしれませんが。。 ま、おそらくSQLight関連のサイトはたくさんあると思うので、その辺も参考にしましょう。

とりあえず、公式サイトからダウンロードしときます。ドキュメントも充実している様ですね。


と言うことで、また延々と続けて行きます。(たぶん)



ビックカメラ.com

タイムゾーン識別子の続き [iCalendar]

前回の続きです。

「TZID」プロパティパラメータで、適用する「VTIMEZONE」カレンダーコンポーネントを特定すると言うことでしたが、そのため、個々の「VTIMEZONE」カレンダーコンポーネントはiCalendarオブジェクト内でそれぞれユニークな「TZID」パラメータを設定しなければならないとのこと(MUST)。スコープは「iCalendarオブジェクト内」なんですね。他のパラメータも含めて、スコープは把握する必要がありますねぇ・・。

「VTIMEZONE」がiCalendarオブジェクト内で特定できなかった場合、時間はローカル時刻となり、不定(と言うか、ちゃんと理解できない)な状況になる様です・・・。ローカル時刻として扱うという明確な記載も無いですね・・。と言うことで、ここはりカバー無しの様ですね。

プリフィックスとして「SOLIDUS」キャラクタ(「/」スラッシュのことの様子)がある場合、この「TZID」はタイムゾーンレジストリにグローバルに定義されている固有のIDであることを示す。

また、本仕様では、「TZID」に関する命名規則は定義しないとのこと。実装の際はこちらのパブリックドメインのタイムゾーンデータベースなど、既存の仕様にならうといいかもとか。

使用例を下記に示す。

DTSTART;TZID=America/New_York:19980119T020000
DTEND;TZID=America/New_York:19980119T030000


「TZID」プロパティパラメータはDATEプロパティやUTC表記のDATE-TIME, TIMEプロパティにはは使用しないこと(MUST NOT)。

「VTIMEZONE」カレンダーコンポーネントがiCalendarオブジェクト内に定義されていない場合は、「TZID」プロパティが設定されていないローカルタイムのDATE-TIME、TIME値は「floating time」として解釈される。

詳しくは、「DATE-TIME」「TIME」型の説を参照とのことです。


とりあえず、この節は完了。






タイムゾーン識別子 [iCalendar]

さて、今回はTZIDプロパティパラメータを見てみます。以前も軽く見たことがある様ですね。ちなみに、TZIDについては、こちらでも軽く見たとおり、タイムゾーンコンポーネントのプロパティとしての説明もある様です。合わせて見といたほうがいいかもしれません。

表記は次の通り。

tzidparam = "TZID" "=" [tzidprefix] paramtext
tzidprefix = "/"


・・・例では「TZID=America/New_York」みたいな書き方をされてるんですが、上記の記述と合わない気がしますね・・。Errataにも見当たらないんですが、どうなんでしょう・・・?


このパラメータは下記のプロパティで「DATE-TIME」か「TIME」型のUTCでも「floating time」でも無い値を設定する際は記載しなければならないそうです(MUST)。・・・なんか、当たり前で意味不明な気もしますね??

  • DTSTART
  • DTEND
  • DUE
  • EXDATE
  • RDATE


このプロパティパラメータはプロパティに適用する「VTIMEZONE」カレンダーコンポーネントを指定するテキストを記載するとのこと。「VTIMEZONE」の説明をちらっと見たところ、確かに定義に対するラベルの様なのを書く項目があります。こちらもたどっておく必要がありますね・・。過去に見たかな・・?


・・・と、まだ途中なんですが、ちょっと時間が無くなったので、つづく。





ブログを作る(無料) powered by So-netブログ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。