いうわけかWindows2000に付いてくるピンボールに夢中になってしまい、仕事あまり進まなかった。ピンボールはどうしても少尉以上になれない。[ツッコミを入れる]2005年01月04日(火)プリンタ処分はもうすぐ完了します。Make関連Toolリンク集にあったものをメモ。やることプリンタ処分リンク元のスリム化ナンバーアナウンス解約tDiaryバージョンアップFSWikiバージョンアップ2004年分決算[ツッコミを入れる]2006年01月04日(水)坦々と年が明けた。久しぶりに色々なウェブサイトを見た。(Beta)」http://mobile.google.co.jp/km/index.html試しにメイルを出してみたが返事が来ない。FAQの「検索メールはどの携帯電話会社のものがサポートされていますか」にウィルコムが含まれていないからかな。ステータスが返されました」というエラーになってしまい何もできないでいた。ディレクティブのマニュアル)。次はサイトマップというXMLファイルを用意しなければいけないようだ。これはまた今度やろう。(IBM)http://www-06.ibm.com/jp/manuals/nlsdic/nlsdic.htmlネバーバード日記より。KANZAKI)http://www.kanzaki.com/works/2001/pub/wsd-toc.html是非是非読んでおきたいがまだ読んでいない。Editor"」http://cssed.sourceforge.net/よさそうなCSSエディタなんだけど、別途GTKをインストールする必要があるみたいなのが面倒。MOONGIFTより。(いがぴょんの日記ウェブページv2)http://homepage2.nifty.com/igat/igapyon/diary/2005/ig051228.htmlSWTで色々やる話をメモ。上から利用するためのプラグインです。形式で生成された画像を埋め込むことができます。使いたくなることもあるかも。Organization)http://ultimania.org/trac/All-In-One-Tracのようなもの。Tracより新しいです(2007/01/01現在)。Tracは0.9.x系ですが、TracPackは0.10.x系を採用しています。新しいプロジェクトのためのSVNリポジトリとTracプロジェクトをワンストップで作成することができますSubversionのコミットメッセージをTracのチケットのコメントに追加することができます。SubversionとTracがより蜜に連携させることができます。Webの管理画面から様々な設定を簡単に行うことができます。執筆時時点では、こんなところです。職場へ冬休み中だが仕事を進めようと出掛けたが、入館カードが使えず中へ入れなかった。仕方ないのでヨドバシでプリンタインク/CDROM/液晶拭きだけ買って帰ってきた。カテゴリ関連で二重にHTMLエスケープカテゴリページの期間をずらすためのリンクの表示がおかしい件は、HTMLエスケープが二重に行われているからのようだった。他に、カテゴリ内の文字列も二重にエスケープされている所を見つけたので、合わせてパッチを作って送ったら採用してもらえた。ウェブサイトのデザインを変えた軽い気持ちでデザインの変更に手を付けたら大変な時間を要し、正月が終わってしまった。年明けに伴う微調整も必要だなど。書いてみたらあまりないなあ。FSWikiを3.6.3にバージョンアップ上にも書いたけど、久ーしぶりにFSWikiをバージョンアップした。headers」というありがちなエラーになり動かない。直して試すと別な箇所でエラーに。なっており、これを修正しないと動作しない模様。次のような感じでnkfを使ってチマチマと改行コードを変更していったら動くようになった。-e」を付けないと勝手に文字コードが変更されてしまうので注意。nkfは癖があるなあ。なっていたのは配布ファイル作成のミスだったみたい。修正されたものをダウンロードできる。古いCSSのままFSWikiを入れ替えたらデザインが崩れてしまった。HTMLの構造が少し変わっているようだ。CSSを作り直していた所なので構わないけれど。してもサイドバーをうまくデザインできなかったので、Wikiからはサイドバーを削除した。tDiaryもバージョンアップしたいけどそれはまた今度。(3)サイトのデザインを変更したら以前作ったGreasemonkeyスクリプトtDiaryの各日に編集用リンクを追加が動かなくなってしまった。原因は、body直下にmainというclassのdivが存在する前提のスクリプトになっていたため。今回mainを囲む新しいdivを追加したので動かなくなってしまった。HTMLの構造に前提条件を付けずに動くように修正したつもり。これのためだけにGreasemonkeyをインストールしているが、無駄なのでブックマークレットで作り直したいと思っている。今気づいたけど、mainを更にdivで囲うのは標準的なサイドバーの作り方と違う。(2)というわけで、再度デザイン変更。tDiaryにてmainを囲っていたdivを削除した。これにより、サイドバーの幅を固定にできなくなった。サイドバーの幅がブラウザの幅に比例するのは嫌いだったが、やってみたらそれ程変ではないかも。Wikiのサイドバーを復活させた。ドコモの携帯電話を購入おれはウィルコムユーザなのだけれど、必要があってドコモの携帯を買った。ヨドバシカメラで1円のものを購入。1円にするにはドコモのオプション契約に6つ入る必要がある。オプションに1つ入る毎に500円程度値引きされる仕組みで、オプションに入らなくても3000円ちょっとで買える。オプションは6つとも契約した。購入後に不要なオプションは解約した。解約はiモードやPCからすぐに行えた。携帯本体は1円なんだけど、充電用のACアダプタと卓上ホルダが付属していない機種で、それの購入には代金が必要だった。卓上ホルダは売り切れとのこと。ドコモショップに行っても売り切れで、困ったなあ。帰って色々設定してみたけど、難しい。ドコモなら携帯のメニューは洗練されているかと思っていたけれど、そんなことはなく、何をどこで設定できるのかを覚えるのは大変そう。説明書にもちゃんと書かれていないし。暗証番号が何種類もあるのも面倒だなあ。JavaFXでFXMLを読み込むJavaFXを使ってみる。公式ドキュメントはhttp://docs.oracle.com/javafx/かな。2で始めるGUI開発の連載くらいしか見当たらないのでこれを順番に読んでみる。この連載は目次が見当たらず不便。連載の第1回ではFXMLを読み込む例が説明されているのでそれを試してみる。メインクラスJavaFXにはjavafx.application.Applicationクラスが用意されている。これのサブクラスでmain()を実装すればよさそう。}}main()ではApplication.launch()を呼び出す。するとApplication#start()が呼ばれるようなので、ここでメインウィンドウを作成する。StageがSwingのJFrameみたいなものなのかな。StageにはSceneを設定している。SceneにはParentを設定している。ParentはFXMLLoader.load()を使ってFXMLから作れるみたい。FXMLメインクラスでロードしているFXMLは次のような感じ。</children></AnchorPane>ルート要素をAnchorPaneにしている。このクラスがParentのサブクラスだからFXMLLoader.load()の戻り値をParent型の変数に代入できるみたい。AnchorPaneの大きさを指定していて、それがウィンドウの大きさに影響する。FXMLの要素にはimportしたクラス名を指定できる。実行結果Helloを実行すると次のようなウィンドウが表示された。CMakeを使うCMakeについてメモ。ドキュメントリファレンス。(cmake.org)ガイド的な文書。(gist.github.com/mbinna)基本C++のコードをCMakeでビルドする例を示す。ファイル構成は次の通りとする。test_hello.cpptestのビルドは後回しとして、まずsrc配下のプログラムをビルドできるようにする。CMakeLists.txtとsrc/CMakeLists.txtをそれぞれ次のように書く。hello.cpp)cmake_minimum_requiredは書かないと警告が出るので書く。7のCMakeはこのバージョン。add_subdirectoryでsrc配下のCMakeLists.txtを読み込むことを指示する。add_executableでビルドする実行ファイル名とそれをビルドするためのソースファイル群を指定する。ここにヘッダファイルも記述すべきかはよくわからない。ヘッダファイルを含めないとIDEを使った場合にヘッダファイルが表示されないかもしれないが、ビルドするだけならヘッダファイルを含める必要はない。add_executableにソースファイルを列挙するのはできれば避けたい。fileのGLOB_RECURSEを使うと手動での列挙を避けられるが、これを使うとソースファイルの増減時に手動でのCMakeの再実行が必要になり運用が面倒になる。projects.」とあり使用が推奨されていない模様。file(GLOB)にはCONFIGURE_DEPENDSというオプションがある。3.12で追加されておりfile(GLOB)の問題を一部解決するものみたいなのだけれど、試せていない。CMakeLists.txtとソースコードを用意したら、cmakeコマンドを実行するとビルド環境(LinuxならMakefile)が作られる。..ビルドを行うにはビルド環境にて--buildオプション付きのcmakeコマンドを実行する。環境変数VERBOSEをセットするとビルド時のコマンドが出力されるようになるので指定している。3.14で--verboseオプションが追加されており、これを使うと環境変数は不要なのかもしれないが試せていない。..」相当)もしてくれる。ビルドタイプの切り替えビルド環境構築時にcmakeコマンドにCMAKE_BUILD_TYPEを指定することでコンパイルオプションを切り替えることができる。2.8だとCMAKE_BUILD_TYPEを切り替えることでGCCのコンパイルオプションが次のように変わる。-DNDEBUGコンパイルオプションの明示的な指定コンパイルオプションをカスタマイズしたいときにはtarget_compile_optionsを使う。$<$<AND:$<CXX_COMPILER_ID:GNU>,$<CONFIG:Debug>>:-ggdb3>)条件に応じて異なるオプションを指定するためにgenerator-expressionsを使用している。C++に対しては/source-chasetオプションを使用してソースコードの文字コードがUTF-8であることを通知している。GCCに対しては、CMAKE_BUILD_TYPEがDebugの場合にオプションを追加するようにしている。target_compile_optionsで指定したオプションは、CMAKE_BUILD_TYPEにより付与されるオプションより後ろに指定される。インクルードディレクトリとリンクするライブラリの指定インクルードディレクトリはtarget_include_directories、リンクするライブラリはtarget_link_librariesで指定できる。Boost.Logを使用する例を記す。${CMAKE_THREAD_LIBS_INIT})find_package(Boost)でBoostを見つけさせる。ライブラリとしてlibboost_logとlibboost_threadを使うことを指示している(libboost_threadを指定しているのはlibboost_logが必要としているため。CMakeのバージョンが高い場合はthreadを明記しなくてもこの依存関係は自動的に解決される)。libboost_threadをリンクするにはスレッドライブラリが必要になるため、find_package(Threads)で見つけさせる。これもCMakeのバージョンが高い場合は明記しなくて大丈夫そう。target_include_directoriesでインクルードディレクトリを指定する。find_package(Boost)が変数Boost_INCLUDE_DIRにBoostのインクルードディレクトリを設定するのでそれを使っている。target_link_librariesでリンクするライブラリを指定する。find_packageが変数Boost_LIBRARIESと変数CMAKE_THREAD_LIBS_INITを設定するのでそれを使っている。方には次を追記している。add_subdirectory()より上に書く必要がある。ON)Boost_USE_STATIC_LIBSはBoostのライブラリを静的に(libboost_log.aを)リンクするためのもの。動的リンクする場合は不要。Boost_NO_BOOST_CMAKEはBoostに添付されているCMake設定ファイルを読み込まないようにするもの。手元の環境ではこうしないとfind_package(Boost)が失敗してしまうために指定した。テストのビルド後回しにしていたtestディレクトリ配下のビルドをできるようにする。EXCLUDE_FROM_ALL)enable_testingはビルドするだけなら不要だが、CMakeを通じてテストの実行も行うのなら必要になる。Studioのテスト機能と連携するようになるので便利。add_subdirectoryに指定しているEXCLUDE_FROM_ALLは、デフォルトのビルド時にはテストのビルドを行わないようにするため。これによりtest配下のコードはビルドターゲットを明示的に指定した時だけビルドされるようになる。test/CMakeLists.txtは次のように書く。src/CMakeLists.txtとそれほど変わらない。--report_level=short)テストにBoost.Testを使ったのでfind_packageによりlibboost_unit_test_frameworkを検索している。add_testでテスト名と実行するコマンドを指定する。ここではコマンドとしてadd_executableによりビルドした実行ファイルを指定している。log_levelなどはBoost.Testの方のオプション。上述の通りtestディレクトリにはEXCLUDE_FROM_ALLを指定しているので、テストをビルドするには次のようにターゲットを明示する必要がある。hello-testテストの実行にはctestコマンドが使えるが、特にこのコマンドを使う必要はない気がする。インストールの設定ビルドされた実行ファイルを既定のディレクトリへインストールする設定を追加する。src/CMakeLists.txtに次を追記する。install/local)が追加される。3.15でcmakeコマンドに--installオプションが追加されているので、このバージョン以降ならインストールにもcmakeコマンドが使えるみたい。ビルド用のMakefileを用意するcmakeコマンドの発行は色々面倒なので、Makefileを用意したくなる。最終的なCMakeList.txtは次の通り。次の通り(行の順序は入れ替えた)。bin)test/CMakeList.txtは上述のまま。2.3.8-p459。