メモの日々


2001年02月16日(金) PalmSource Forum Tokyo2001

少し病気。

[mobile] PalmSource Forum Tokyo

昨日一/昨日とPalmSource Forum Tokyo2001に行ってきた。でかいリュックを貰った。

PalmOS4.0とWebClippingの話がメインでしょうか。DP内蔵端末の話はなかった。外人はプレゼン慣れしている。

[soft] MHonArc

An Email-to-HTML converterはこちら。


2003年02月16日(日) ジュビロ、城南一和に負けちゃった

生活

  • 部屋のレイアウトをいじる。本棚をちょっとだけ移動。その際部屋が散らかりこれをどう収めるべきか悩み中。
  • 部屋はちゃめちゃなまま寝る。うえーん。

[book] 新・ゴーマニズム宣言7(小林よしのり)

新・ゴーマニズム宣言7読了。描き下ろしで、新読者のために、と銘打ちゴーマニズム宣言の始まりから当時までの歩みを振り返っている作品が載っているのが特徴。すごい歴史ですな。地下鉄サリン事件は1995年の3月だったかー。宮崎哲弥がよく登場する。


2004年02月16日(月)

  • パンターニが死んじゃった。吃驚。34歳。
  • やっと仕事の報酬振り込まれた。10月に失業保険の最後の給付を受けてから収入なかったので、4ヶ月ぶりの収入。
  • 今日の行数:6864
  • また/tdiary/update.cgiへの大量のアクセス失敗ログが残っていた。どうも犯人は「NaverBot-1.0 (NHN Corp.」である感じ(確証はなし)。

[life] オセロ

昨日はなぜかオセロにはまってしまい、WindowsXPに付属のインターネットリバーシやYahooのオセロで対戦ばかりしていた。インターネットリバーシだと勝てるのだけど、Yahooだと勝てない。

でもオセロって実は全然面白くない。ホントは将棋をしたいんだけど、もうずーーーっとやってないので怖くて対戦などできない。無料のコンピュータ将棋があるといいのだけれど。勝負に時間がかかるのも困りもの。

[xrea] ディスク容量変更申請 (XREA SUPPORT BOARD)

XREAのディスク容量を増やしてもらいたいときの申請方法をメモ。Linuxビボ〜ろくから辿った。現在のこのサイトのディスク容量は40MB超えたとこくらい。

やること

  • 決算
  • 納品
  • 請求
  • 契約

2005年02月16日(水)

  • 今日はスーツ。早朝に地震がありその影響で田園都市線が遅れているから渋谷へ早く行きたい人は東横線で行けと車内アナウンスがあったからその通りにしたら自由が丘で結構待たされ時間に遅れた。
  • 先週の問題は既存のコードorハードウェアが原因。そんなのばかり。今は別の問題をデバッグ中。なかなか終わらない。

[unix] 「ASCIIコード表」 (今日の一行)

man ascii

でいいのか。

man operator

というのもあると。

なんか /usr/share/misc に色々ありそうなので見てみたけど、ascii と operator 以外は使えそうなのなかった(FreeBSD 4.9にて)。強いて言えば man.template かな。でもmanなんか書かないよ。

[c] 「エラー出力用マクロで可変長引数を使わずに__FILE__や__LINE__を埋め込む」 (Journal InTime)

なんとなくメモ。

Subversionのコードを読んでいて、GCC拡張やC99の可変長引数マクロを使わずに、エラー出力用マクロで__FILE__や__LINE__を埋め込む方法を発見。

やること

  • リンク元のスリム化
  • tDiaryバージョンアップ
  • FSWikiバージョンアップ
  • オーブンレンジ用べんり棚
  • 確定申告書作成
  • ブラウンの安い電動歯ブラシ買う
  • Windows Update

2006年02月16日(木)

[unix][shell] エラーになったらシェルスクリプトを終了させる

以前

今日はシェルスクリプトにちまちまとエラー処理を追加したりとかしてた。

と書いたが、これはスクリプト内の各実行コマンドに対して

if ! コマンド; then
    exit 1
fi

のように、処理が失敗したらexitする、という処理をいちいち追加していたのだ。こうしないと、コマンドがエラーになってもスクリプトの処理が先へ進んでしまうから。

コマンドがエラーになったらスクリプトも止まるようにする設定があるはずだとは思っていたが、このときは設定方法が分からなかった。で、今日

set -e

とすればいいみたい、ということを知ったのでメモ。

bashのmanのsetの項より引用:

-e

単純なコマンド (前述の シェルの文法 セクションを参照) が 0 でないステータスで終了した場合、即座に終了します。ただし失敗したコマンドが until または while ループの一部である、 if 文の一部である、 && または || リストの一部である、コマンドの返り値が ! で反転されている、のいずれかの場合にはシェルは終了しません。

(追記)

うーん、set -e と書いたスクリプト内に多値を返すコマンドがあるとうまく動かないなあ。エラーではなくても0以外の戻り値を返すことがあるので、そのときスクリプトが止まってしまう。

うまく書けないので、多値を返すコマンドの前後では「set +e」「set -e」とすることで凌ぐ。

やること

  • 決算
  • カレンダーを買う

2014年02月16日(日)

  • 二回続けて週末に大雪。今回の方が積もった。雪かきをして腰を痛めた。
  • ソチオリンピック開催中。これまで角野、上村、フィギュアスケート団体、葛西、加藤、長島、小平、平野、平岡、高梨、伊藤、渡部、岡田、羽生、町田、高橋といった方々が入賞した。

[java] 「JavaFX 2ではじめる、GUI開発」の目次

連載記事のJavaFX 2で始めるGUI開発を全部読んだ。どんどん斜め読みになったけれど。どういうわけか個々の記事への目次がなくて不便なので、現時点での記事一覧をここにメモ。


2018年02月16日(金)

[c++] C++の可変引数テンプレートを使いこなせない

C++の可変引数テンプレートの使い方を覚えられないのでメモ。

昨日のコードでは可変長の引数を受け取るのに initializer_list を使ったが、可変引数テンプレートを使えば呼び出し側の

select(L"パタトクカシーー", {1, 3, 5, 7})

にある中括弧を無くせる。一応次のように書けるのだけれど、少し問題がある。

#include <iostream>
#include <numeric>
#include <string>

// sからindexesで指定された位置の文字を繋いだ文字列を返す。
template<typename... Args>
auto select(const std::wstring& s, Args... indexes)
-> decltype(std::initializer_list<int>({indexes...}), std::wstring{})
{
  std::initializer_list<int> is{indexes...};
  return std::accumulate(
      is.begin(),
      is.end(),
      std::wstring{},
      [&s](auto& result, auto i) { return result + s.at(i); });
}

int main()
{
  std::ios_base::sync_with_stdio(false);
  std::wcout.imbue(std::locale(""));
  std::wcout << select(L"パタトクカシーー", 1, 3, 5, 7) << std::endl;
}
  • C++ で特定の型での可変長引数を受け取るの真似をして、decltypeを使ってindexesをint列に変換できることをチェックしている。このチェックがなくても動くが、indexesに誤った型の値が設定されたときのエラーメッセージが分かりやすくなる(気がする)。

問題点は、昨日のコードはselect()の引数に負の数を指定したときにコンパイルエラーになったのに、上のコードはならないこと。initializer_list<> に与える型を int ではなく size_t にすれば解決するかと思ったが、それだと呼び出し側を

select(L"パタトクカシーー", 1u, 3u, 5u, 7u)

のように書かないとコンパイルエラーになるようになってしまう。

可変引数テンプレートはなかなか使いこなせるようにならない。