このページについて
その日の日記,備忘録,URLメモといった類の(おそらく内容が無い)文章を書いています.
2005.09.01(Thu)
_ 三項演算子
PHPの三項演算子って左結合なのね…….
$ php -r 'print true ? 1 : false ? 2 : 3;' 2
すなわち print ( true ? 1 : false ) ? 2 : 3;で,括弧内は当然1に評価されるからtrue,と…….うーむ.
知らずに使ったらハマるところだったよ.
2005.09.05(Mon)
_ 今日の購入物
よつばと!(4)/あずまきよひこ
アニメがお仕事!(3)/石田敦子
よみきりもの(9)/竹本泉
かわいいや/竹本泉
エマ(6)/森薫
黄色いバカンス/桃月学園1年C組
恋する奇跡(ミラクル)/極上生徒会遊撃部+車両部
よつばと! はいつもどおり最高に笑える.
アニメがお仕事! は読む人を選ぶが,今一番モチベーションを上げてくれる作品はこれだったりする.この痛々しさが今の自分にちょうどいい.
よみきりもの/かわいいや はいつもの竹本泉(笑).んで,かわいいやって終わったの?
エマ.5巻と比べて話の重い事.毎回次が楽しみすぎるというか……(本誌は読んでません).
黄色いバカンス.玲バージョンよりは姫子バージョンの方が突き抜けていてよい.今期のアニメでは随一の洗脳ソング.
恋する奇跡.極上生徒会2期ED.この人の曲はなんか知らんが落ち着くんだよなぁ.1期OPほどの破壊力はないけれど.
2005.09.06(Tue)
_ 火曜
某案件会議.
エスプガルーダをちょっとやって帰宅.2面で死ぬのを避けたいという今日この頃(ょゎ).
みんなアイドルマスターとかできる環境でいいなぁ俺も律子をプロデュースしたいなぁくそううらやましくなんかないぞっ! とか思ったり思わなかったり.(意味不明)
2005.09.09(Fri)
_ 金曜日
うまい棒でがんばってる人の日記を読んで感激したり(大嘘)とか. まぁ個人的にはかなり応援している人なのでちゃんと食えるようになるといいなぁ>誰.
_ トンデモ仕様!?
[PHP-users 26782] 以下のスレッドで話題の仕様もたいがいだと思うんだが,これってなんでこういう仕様になったんだろう…….まぁ,cgiバージョンのPHPは動かす機会があまりなさそうだしおそらくレアケースなんだが…….
2005.09.12(Mon)
_ あやかはツンデレであると判断できるか
たまきの保険入門の 総合賠償責任保険の回の おまけの4コマ, これを見て某氏がツンデレは萌えると発言.
まぁ確かにこのマンガのあやかはツンデレ的発言をするし風貌もそうだし(偏見), 実際作者の脳内ではそうかもしれないんだけど(笑),しかしここの時点では ツンデレと断定してはならないよな,とか思ったり. ずーっとデレデレしっぱなしかもしれないじゃないか!
ごめんなさい頭冷やしてきます.
_ SHUFFLE! #8 まで見た
ツンデレっていうより素直じゃない系は萌えますよね! (ぉぃ
というわけでキャラ的には亜沙先輩がいい感じで萌えますよ? まぁあとは中の人的にはカレハ先輩がやはり良いのでなんというか#7は神の回でした.
PS版はカレハ先輩も攻略対象なのかー(すなわちPC版では対象じゃないのか). うーむ,原作の方もやっとこうかなー.
その前に積みゲー崩さないとなー(汗).とりあえず「フラワーズ」かな…….
2005.09.14(Wed)
_ 日記補完中
例によって一週間分の日記を補完中(笑).
_ データファイルからデータを構築する汎用クラス
例えばdata.txtが次のようなファイルだったときに:
data1 1 2 3 data2 8 10 24
string, int, int, int からなるデータのvectorを取得したい. 他にも string, string, int, int, int なファイルから別のデータも作りたいし,その辺を汎用的に作りたい.
てな場合が実際に今あったりしたので, boostをがしがし使いつつ普通に書いてみたところ.実装も定義もまとめて書いてますが:
#include <vector>
#include <string>
#include <iostream>
#include <fstream>
#include <boost/lexical_cast.hpp>
#include <boost/tokenizer.hpp>
struct AnyVector
{
typedef std::vector<std::string> type;
AnyVector(type orig) : data_(orig) {}
/// i番目の要素を(T型にキャストして)得る
template <typename T>
T At(int i, T default_value = T()) // throw(std::bad_cast)
{
if (0 <= i && i < data_.size()) {
return boost::lexical_cast<T>(data_[i]);
} else {
return default_value;
}
}
private:
type data_;
};
class FileReader
{
public:
typedef AnyVector ResultType;
FileReader(std::string filename, std::string separator = " \t") ;
: ifs_(filename.c_str())
, filename_(filename)
, sep_(separator.c_str())
{
// if (ifs_.fail()) throw "throw some exceptions ...";
}
std::vector<ResultType> Read()
{
std::string buf;
std::vector<ResultType> v;
while (getline(ifs_, buf)) {
if (buf[0] == '#' || buf[0] == '\0') {
continue;
}
boost::tokenizer< boost::char_separator<char> > t(buf, sep_);
std::vector<std::string> s(t.begin(), t.end());
AnyVector ss(s);
v.push_back(ss);
}
return v;
}
private:
std::string filename_;
std::ifstream ifs_;
boost::char_separator<char> sep_;
};
int main()
{
typedef std::vector<FileReader::ResultType> Vec;
FileReader f("data.txt");
Vec data = f.Read();
for (Vec::iterator it = data.begin(); it != data.end(); ++it) {
std::cout << (*it).At<std::tring>(0) << ',';
std::cout << (*it).At<int>(1) << ',';
std::cout << (*it).At<int>(2) << ',';
std::cout << (*it).At<int>(3) << std::endl;
}
}
こんな感じで取得時にデータを(内部的には全部stringなので適当にlexical_castして)持ってくる.お手軽.
まぁここまではともかくとして,似たようなことをする別アプローチ.
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <boost/lexical_cast.hpp>
#include <boost/tokenizer.hpp>
#include <boost/mpl/list.hpp>
#include <boost/mpl/at.hpp>
#include <boost/mpl/int.hpp>
#include <boost/mpl/size.hpp>
template <typename List, int N>
struct AnyStructHelper : public AnyStructHelper<List, N-1>
{
typedef typename boost::mpl::at_c<List, N>::type type;
typedef List list_type;
enum {
Number = N
};
type value;
};
template <typename List>
struct AnyStructHelper<List, 0>
{
typedef typename boost::mpl::at_c<List, 0>::type type;
typedef List list_type;
enum {
Number = 0
};
type value;
};
template <int N, class H>
AnyStructHelper<typename H::list_type, N>&
Field(H& obj)
{
return (static_cast< AnyStructHelper<typename H::list_type, N>& >(obj));
}
// テンプレート引数
template <class MplList>
struct AnyStruct
{
typedef AnyStructHelper<MplList, boost::mpl::size<MplList>::value-1> datatype;
template <int N>
AnyStructHelper<MplList, N>& At()
{
return Field<N>(data_);
}
template <int N>
AnyStructHelper<MplList, N>& Number()
{
return Field<N>(data_);
}
template <int N>
static AnyStructHelper<MplList, N>&
Member(AnyStruct<MplList>& a)
{
return Field<N>(a);
}
private:
datatype data_;
};
struct TokenizerWrapper
{
typedef boost::tokenizer< boost::char_separator<char> >::iterator Iter;
TokenizerWrapper( boost::tokenizer< boost::char_separator<char> > tokens )
: tokens_(tokens), it_(tokens_.begin()) { }
template <typename T>
T Get()
{
if (it_ == tokens_.end()) {
return T();
}
try {
return boost::lexical_cast<T>(*it_++);
} catch (std::bad_cast& e) {
throw e;
}
}
template <typename T>
T operator()()
{
return Get<T>();
}
template <typename MplList>
inline void Set(AnyStruct<MplList>& a)
{
SetS<boost::mpl::size<MplList>::value-1,MplList>()(a, *this);
}
private:
template <int N, typename MplList>
struct SetS
{
void operator()(AnyStruct<MplList>& a, TokenizerWrapper& tokens)
{
SetS<N-1,MplList>()(a, tokens);
a.template At<N>().value = tokens.Get< typename boost::mpl::at<MplList, boost::mpl::int_<N> >::type >();
}
};
template <typename MplList>
struct SetS<0,MplList>
{
void operator()(AnyStruct<MplList>& a, TokenizerWrapper& tokens)
{
a.template At<0>().value = tokens.Get< typename boost::mpl::at<MplList, boost::mpl::int_<0> >::type >();
}
};
boost::tokenizer< boost::char_separator<char> > tokens_;
Iter it_;
};
template < typename MplList >
class StrictFileReader
{
public:
typedef AnyStruct<MplList> ResultType;
StrictFileReader(std::string filename, std::string separator = " \t")
: ifs_(filename.c_str())
, filename_(filename)
, sep_(separator.c_str())
{
if (ifs_.fail()) throw "cannnot open file";
}
std::vector<ResultType> Read()
{
std::string buf;
std::vector<ResultType> v;
while (getline(ifs_, buf)) {
if (buf[0] == '#' || buf[0] == '\0') {
continue;
}
ResultType s;
TokenizerWrapper t( boost::tokenizer< boost::char_separator<char> >(buf, sep_) );
t.template Set<MplList>(s);
v.push_back(s);
}
return v;
}
private:
std::string filename_;
std::ifstream ifs_;
boost::char_separator<char> sep_;
};
int main()
{
typedef StrictFileReader<boost::mpl::list<std::string,int,int,int> > FR;
typedef FR::ResultType Data;
typedef std::vector<Data> DataVector;
typedef DataVector::iterator It;
FR f("test.txt");
std::vector<Data> alldata = f.Read();
for (It it = alldata.begin(); it != alldata.end(); ++it) {
std::cout << (*it).At<0>().value << ',';
std::cout << (*it).At<1>().value << ',';
std::cout << (*it).At<2>().value << ',';
std::cout << (*it).At<3>().value << std::endl;
}
}
うーむ,意味あるのか俺(笑). 結果的にライブラリ使用側が書くコード(main()の中だな)は大差ないので前者で十分なんだけど. 後者でmpl::listという名前を書きたくない場合は,引数の数ごとにラッパを書けば十分(えー……).
まぁ,
Modern C++ Designでやってることをboost::mplで書いただけな感じもしますが,
メタプログラミングは面白いですよね,と強引なまとめ(笑).
2005.09.15(Thu)
_ 木曜
大岡山付近に用事があったので,大岡山へ.
hyouたんと綿菓子氏と四川で遭遇.レコ姫(家庭用)を押し付けられたり.本来の目的であるところの頼み物をげっと.あとラー油.
その後昨年末以来のよかばに行って飲んでから帰宅.
大岡山の蔦谷でアワーズ別冊を査収.平野耕太祭り. あとさりげなく石田敦子24ページ.
2005.09.16(Fri)
_ SHUFFLE! #9
魔王神王の動きが良すぎ(笑).
カレハ先輩がいつのまにかレギュラー化していてすばらしい.
今回からR15っぽいけど,前からえろかったし(笑)ぶっちゃけあんまり変わってない気が(ぉ. OPがちょっとだけ変わったみたいですが,うーん.
まぁ結論としては亜沙先輩はすばらしい(?).
_ FreeBSD-6.0 BETA4
FreeBSDなメインマシンを RELENG_6 で make buildworld - make buildkernel - make install kernel - make installworld .
んーむ,mount_smbfs と skim (というか scim)がRELENG_5の時より調子が悪いな…….
2005.09.17(Sat)
_ 土曜
いおすと会合で松戸.
市川駅まで歩いてそこからバス.乗ってしばらくして熟睡して起きたら松戸駅でした(ぉ. ちなみに料金は350円也. 松戸駅に行って済む用ならバスを使う方が楽だな.
ロイホでどりんくばって粘る. izさんそっくりな人がいてびっくりしたり.
終わったあとはなぜか麻雀したり.不調というか,どうにも勝てない感じでなんというか無理でした.
帰りはラーメン食べて送ってもらい帰宅.いつもながらさんくすなのです.>みさきち
2005.09.18(Sun)
_ Alfred Reed博士,逝去
Dr. Alfred Reed が亡くなったそうだ.
私がやったこと(さらったこと?)がある曲だけでも,「アルメニアンダンス・パートI」,「音楽祭のプレリュード」,「エル・カミーノ・レアル」,「春の猟犬」,「オセロ」など,たくさんの名曲を残した吹奏楽界を本当に代表する作曲家でした.
「エルサレム賛美」現在ぜひやりたい曲の一つ.
合掌.
_ 日曜
Skype東風やろうとしたけど,Skype(というかマイク)の調子が悪くて,音ナシで.
調子は悪くなかったけど,それよりNackyの人の引きが強くてねじ伏せられた感じ.くそう.
まぁ世間ではサンクリだったらしいですけど, そーいうところに行ってる金銭的余裕なぞ全くないわけで.orz
2005.09.20(Tue)
_ 河出智希
河出智希氏って,BOUNCEBACKってユニットやったり,dreamとかに楽曲提供してたのね…….知らなかった.
まぁ,そっちの方で知ってる人は,「斜影の遺跡」とか聴いたらびっくりするんだろうなぁ(笑).
2005.09.21(Wed)
_ 今日の購入物 - Perfume
Perfumeは良すぎる.
まぁ,とっかかりとしては最初のがよさげな気もしないでもない(Amazonだと過去マキシ3枚が在庫切れになってるけど普通にTSUTAYAとかで売ってると思う).
しかしなんというか,ついにコンピュータードライビングがCDで聴けてそれだけでも満足できるぜという感じ.ライブに行ったことあると違うよな,やっぱり.
確かに(?)EQいじり系のエフェクトは若干蛇足かなぁという気もせんでもないなぁ,とか.
2005.09.22(Thu)
_ 最近の検索キーワード
- 女の子のはずがない ありません.
- php 三項演算子 マニュアルで
Cまたは他の多く言語と同じ
などとのたまうのは正直勘弁して欲しい.(原文にはそんな記述は見当たらんなぁ…….) - mixi sieve そういやmixiにsieveコミュとかないよね.(cyrus imapdすらメンバー少ないくらいだけど)
- ビタミンドロップ 購入 TUTAYAかPerfume出演のライブ/イベントで購入できる気がする.
_ 声優番組
なんか4chで深夜に声優番組やってた.
こおろぎさとみ、南見ちはる、中村千絵という面子だったようです.
とりあえず番組自体はこおろぎさとみの椅子と机の会話を聴けたので満足. 南見ちはるはプリンの声しか知らない上に地声はそれとは違うのですぐには分かりませんでした.中村千絵という人はピンポイントで見てない作品/映画にしか出てませんでした.
まだまだ修行が足りません.(ぉ
2005.09.23(Fri)
_ operator <?
gccにおけるC++は <? や >?(と <?=, >?=) なる演算子があるようだ.
http://www.chemie.fu-berlin.de/chemnet/use/info/gcc/gcc_9.html#SEC99 によると,gca <? b は min(a,b), a ?> b は max(a,b) らしい.
a = f() <? g(); とか,orig <?= next; とかくらいしか使い道はなさそう?前者は
template <typename T>
inline T max(T& orig, T& next) {
return orig > next ?
orig :
next ;
}
でいいような気もするし.
2005.09.25(Sun)
_ 某団練習
某団練習@茗荷谷.
飲み屋はチェーン系は嫌いだと言いつつも それなりにどこにでも行く私ですが.
あそこの日本海庄屋にはもう行かない予定. 良いことが全くない.安いことは最優先される事項ではない(ぉ.
2005.09.26(Mon)
_ portsのアップデート祭
RELENG_6に上げたらlocaleが使えなくなったので, 使ってるportをがりがり上げまくり.
あと,scim関連が(Xごと)死ぬのは(Cレベルの)インタフェースで秘孔を突いたようなので,そのあたりも一緒に再ビルド.
scim-1.4.0のコンパイルが通らないので,portdowngradeを入れて, 1.2.2にダウングレード.
cvs -d ':pserver:anoncvs@anoncvs.jp.freebsd.org:2401/home/ncvs' login sudo portdowngrade -s :pserver:anoncvs@anoncvs.jp.freebsd.org:2401/home/ncvs textproc/scim
それにしても,scimが死んでる生活は結構厳しいですな…….主にemacs頼りになってしまうあたりが(ぉ.
入力される側の,主に vim とか sylpheed とか firefox とかも真っ先にアップデート.
他もぼちぼち上げて行こう…….
2005.09.27(Tue)
_ 日記
話を聞くたび上板フェスタに行っておけばよかったなぁと思うも後の祭.
ローカルにcvsupdを立てているのにcvsup?.jp.freebsd.orgを見に行ってたホストがあったので修正したりとか.
_ 本棚
IRCで本棚欲しいぜ祭.
Bookmanのとかは買えないので(笑),手ごろなのはないかと検索.この辺がちょうどよさそうとかいう話とか. hyouたんはこのへんのオープンラックが欲しいらしいが,うち向けじゃないなー,とか.
2005.09.29(Thu)
_ 最近の購入物
そういえばAmazon先生の買い物かごとウィッシュリストが50件を超えたらしい(ぉ.
極上生徒会(1)/まったくモー助
スティール・ボール・ラン(5)/荒木飛呂彦
マリアナ伝説(3)/ゆうきまさみ×田丸浩史
TAKE MOON/武梨えり
ハチミツとクローバー(8)/羽海野チカ
フルーツバスケット(17)/高屋奈月
フルーツバスケット(18)/高屋奈月
L.D.K Lounge Designers Killer/capsule
SHUFFLE! OPテーマ「YOU」/YURIA
極上生徒会のコミックス版はれーちゃん先輩がやけに萌えるというか素直にかわいいというか.あと会計のみゆきちまゆらさんとか.
ハチミツとクローバーは7巻を買い逃しているのが判明したので早く買ってこないと読めない.(ぉ
2005.09.30(Fri)
_ 麻雀バトン
mixi で Nackyせんせにもらったバトン.というか100質くずれ.
1.あなたの麻雀歴と麻雀との出会いを教えてください。
小学校のときにデパートのファミコン試遊機で.そのときはルール知らず.
中学になってルールを覚え始める.やはりファミコン.あとカードの携帯用麻雀で仲間内で遊び始める.さらにデパートのゲーセンの脱衣麻雀をやってみる.
高校になってからは高校の近くの友人宅で手積みで. 行きつけのゲーセンのスーパーリアル麻雀PVにハマる. 数ある脱衣麻雀の中でも最後まで脱がせきったのはP5だけな気がする.
大学になってからは主に大学近くの雀荘で.部室で打てないサークルだったし.
最近は某邸宅とかSkype東風荘とかで。あとお金があればMFC.
2.あなたはデジタル派ですか? オカルト派ですか?
基本的にはデジタル
3.好きな役はなんですか?
平和
あ,オープンリーチが嫌いです.
4.好きな牌はなんですか?
嫌いな牌なら0.2秒で西と答えられる.
5.あなたの絶頂体験を教えてください。
32000ですって言って倒すのはやはり楽しいね.
6.あなたのどん底体験を教えてください。
3回連続ラスを引いたりとかするとか? そんなにひどいのは無い(もしくは忘れた). 最近だと配牌でドラ3枚抱えて1順目で少牌したりとか.
7.イカサマをした事/された事はありますか?
したこともされたこともあるけどささいな遊び程度. やってもいろいろと面白くないのでやっていない.
8.トータルの成績はどのくらいだと思いますか?
まぁギリギリ浮いてるくらい
9.麻雀は好きですか?
かなり
10.どんなときに麻雀はおもしろいと感じますか?
リーチがかかってるのを避けてツモ上がりしたとき. あと各人の役割がはっきりしてきたときの手の推理.
11.あがったことのある役満はありますか?
- 四暗刻
- 大三元
- 国士無双
結構少ない.
12.振り込んだことのある役満はありますか?
ないと思う.少なくとも覚えていない.
13.普段のレートはいくら?過去最高のレートはいくら?
のーれーと,てんご.
14.あなたは勝ち組?負け組?接待組?
さあ?
15.どのくらいの頻度で打ちますか?
打つときは週2〜3,打たないときは半年打たなかったり.
16.あなたはフリー派?セット派?
せっと
17.あがれる1000点とあがれない役満どっちが好きですか?
基本的にはあがれる1000点,でもトップがとれない状態ならあがれない役満の方がまし.
18.周りで流行ってる変則ルールがあれば教えてください。
割れ目で久々にこないだ打ったなぁ(はやってない).
19.おもしろいと思う麻雀漫画があれば教えてください。
むこうぶち.王道.
20.過去最大の愕然感は?
桜井章一のニュースステーション出演を見たとき.
21.目撃した中で最大のドラマ
こないだhyouって人がオーラスの親1000点未満から50000点ひっくりかえした.
22.麻雀を通して憎んだ人、好きになった人
ぼくしの人(誰)はいつまでもネタにされるんだろうなぁ.
くろいわくんはえろいなぁ.
23.次にバトンを回す人
にゃおりん,hyouたんくらいかな.欲しい人はもらったことにしとけ.
