2013年10月31日木曜日

VirtualBoxでスケールモードを解除する

VirtualBoxで仮想マシンを使っていて、うっかり表示をスケールモードにしてしまうと、Windows版ではプルダウンメニューが表示されなくなるのでメニューから表示モードを戻せなくなる。

で、そんな滅多に使わないホットキーは覚えていないので焦るわけだが、そんなことを繰り返すのも芸がないので、デフォルトのホットキーをここに書いておこう。

「Host+C」だ。

デフォルトのHostキーは右Controlなので、Happy Hacking Keyboardユーザは真っ先に右Altとかに変更しておこう。でないと、フルスクリーンモードを解除できなかったり、ゲストOSインストール中の仮想マシンからマウスとキーボードを取り返せなくなったりするので。

MavericksとC++11

そう言えば、Mountain LionではC++11のコードをコンパイルするのに

% clang++ -std=c++11 -stdlib=libc++
としていたのだけれど、Mavericksではどうなったのか試してみた。

結果としては、Mavericks(と一緒にアップデートしたXcodeのコマンドラインツール)では

% g++ -std=c++11
でC++11のコードをコンパイルできるようになっていた。make時にCXX=clang++とかせずに済むようになったのね。

2013年10月30日水曜日

GOUNN感想

MVが公開されてから延々とリピート再生中のGOUNNの感想。

第1印象でガツンとやられるタイプの曲ではなかったけど、何度も聞いているうちにじわじわ来るタイプかな。音楽の素人が無理矢理キン肉マンに例えると、「本物の奇跡は〜」のパートがスグル版マッスルスパーク、「シャンパラヤ〜」がアタル版マッスルスパークみたいな感じ。

さて、この曲はライブでどうなるのだろうか? 衣装を含めて今後のセットリストに組み込みづらそうな気がするけど、今までになかった新しい色だから、大事に育てて欲しいな。

2013年10月28日月曜日

ガンダーラ改め超人墓場

今週のキン肉マン。

今までずっと神だと思っていたゴールドマンとシルバーマンは、ただの(?)超人だったのね。たまたま当時神だったS武道のお眼鏡にかなっただけで。S武道と悪魔将軍はかつて救った/救われた関係だったと。

ただ、袂を分かった悪魔将軍はともかく、完璧超人であり続けているミラージュマンすらも、S武道のことを「あやつ」呼ばわりしてるんだよな。元は神でも、あくまで今は対等な超人同士ってことなのだろうか?

さて、しばらくは悪魔将軍と六騎士 vs 完璧超人始祖になるのかな。舞台が超人墓場ということで、もしかしたらカメハメ師匠の出番があるかと期待していたけど、この雰囲気だと正義超人の出番はなさそうだなぁ。谷底に消えたまま階段ピラミッドに現れなかったS武道が実はこっちで戦っていた、みたいな可能性はあるかもしれないけど。

2013年10月27日日曜日

MavericksとHomebrew

何気なく

% brew update
% brew upgrade
したらエラー。MavericksでC++の標準ライブラリがlibstdc++からlibc++に変わったからリビルドしろとのこと。

とりあえず

Error: xx dependency XX was built with the following
C++ standard library: libstdc++ (from clang)
のようなエラーが出る度に
% brew reinstall XX
すれば良いのだが…。リビルドが必要な依存するformulaが1つ見つかる度に止まるので、その都度reinstallするのはめんどい。特にGTK+が依存しているライブラリで軒並み引っ掛かる。めんどいと言いながらも結局は手動でやってしまったのだが、今思えば一度全formulaを一度アンインストールしてから、能動的にインストールした覚えのあるformulaを再インストールしてしまった方が楽だったかもしれない。

あと、いつの間にかRubyが2.0系になっていた。Mavericksから?

2013年10月26日土曜日

やっぱり巨人

http://www.nikkansports.com/baseball/news/f-bb-tp0-20131026-1209231.html
http://headlines.yahoo.co.jp/hl?a=20131025-00000043-dal-base

自分を含めて誰もが疑っていた通りだろうけど…。

きちんと情報公開する(PDF)こと自体を否定する気は全くないが、よりによって日本野球機構が、日本シリーズに水を差すようなタイミングでやることか? 事の起こりから今に至るまで、ことごとくガッカリさせられるなぁ。

2013年10月25日金曜日

Kindle連載

http://pc.nikkeibp.co.jp/article/news/20131025/1109924/

Kindle連載という名前から、小額な定期課金を自動化してゴルゴみたいにいつ終わるか分からない連載を読み続けるサービスを想像したのだけれど、ちょっと違った。書き終えなくても見切り発車で売り始められる、作家向けのサービスなのね。試みは面白いけど、最初に全話分の料金を払う読者のメリットは、Amazonが言うところの「本の成長過程」を楽しめることだけ?

やっぱり1話ずつ分割払いにして、つまらなかったら購読を辞められるようにして欲しいなぁ。

2013年10月24日木曜日

きみしね

GOUNNのオフボーカルバージョンをリピート再生していて、どこか聞いたことがある感じを覚えながらも思い出せずにモヤモヤしていたのだが、ようやく脳内データベースの照会が完了した。DS立ち上げ時の迷作(?)、きみのためなら死ねるだ。

ラヴィ!!

2013年10月23日水曜日

OS X Mavericks

朝起きてMacを起こしてみたら、アップデート通知が来ていた。何かと思ってみてみると…、Mavericksへの無料アップグレードがキター! 昨晩のサプライズはこれだったのか。$20~30の出費は覚悟していたので、嬉しい誤算。何かあってもTimemachineで戻ればいいので、深く考えずにアップグレードしてみた。

結果としては、途中ヒヤリとしたけどアップグレード完了。再起動後にBluetoothキーボードが繋がらなかったときは焦ったけど、トラックパッドだけでゲストでログインして、電池を替えて再ペアリングしたら解決。しかし、念のためにUSBの接続キーボードを備えておいた方がいいな。今回は助かったけど、キーボードが使えないと詰みかねない。

iPadは9.7インチモデルをAirと改名。…と言うより、9.7インチが本流でminiはあくまで傍流というスタンスを改めて、Airとminiを対等にした感じなのかな。新しいminiのスペックは、サイズ以外Airと同等のようだし。iPad2はしぶとく生き残るなぁ。

2013年10月22日火曜日

もう一つ寝るとiPad?

明日の朝目覚めたころにはAppleの新製品の記事が概ね出揃っているだろうから、予想なり願望なりを今のうちに書いておこう。

まずiPad。まあリーク通りに、薄くなったiPad5とRetina化されたmini2が出るのだろう。もうサプライズはなさそうだけど、あれば普通に便利だろう。ただ、miniですら持ち歩くには大きそうなので、ほとんど家の中でしか使わないであろうことを思うと、3~6万は贅沢品だよなぁ。

そんな高嶺のiPadより、$20~30程度で買えるであろうMavericks。何よりも、NautilusにあってFinderになかったタブ機能が追加されるのが嬉しい。Finderの窓でデスクトップがとっ散らからなくなる。

あと、iPod touchの新型は発表されないだろうか。まずないだろうと思いながらも、万一を考えて第5世代に手を出せないでいたので。このタイミングでA6を積んだ第6世代を出してくれたら、間違いなく飛びつくんだけどなぁ。

2013年10月21日月曜日

GOUNNインスト公開

24時間限定でダウンロードできるoff vocal versionを、早速落としてループ再生中。

歌声が乗らないと何とも言えないけど、シューティングゲームのBGMにしたら良さそうな感じ。最初はコナミの横シューな気がしたけど、段々ハドソンの縦シューに合いそうな気がして来た。どちらももう戻って来ないけど…。

2013年10月20日日曜日

基本情報技術者試験

今更も今更なんだが、基本情報技術者試験を受けて来た。別に免許制じゃないんだから資格なんて要らないだろうと思っていたのだけれど、新しい会社が割と資格の取得を推奨しているようなのと、ハードからソフトにジョブチェンジするはずだったので、夏頃に申し込んでおいたのだ。そう、夏頃はソフト屋になる気満々だったのに、結局またRTL書いてるんだよなぁ。

まあ、昔で言う2種なら学生が取るような資格だろうし、全く問題ないだろうと思っていたら、敵は自分のなかにあった。午後の試験の最中にびゅんびゅん尿意MAX。モジモジしながら何とか進めるも、最後まで答案を埋める前に膀胱が限界。さすがに試験会場で漏らすのはキツいので、やむなく安くない受験料を諦めて退出しようと手を挙げたところ…、試験官同伴でトイレに行かせてもらえたとさ。

と言うわけで、これから試験を受ける人は無理せずトイレに行かせてもらおう。スッキリ落ち着いてから解答を見直してみたら、慌てて答えていたところはかなり間違えていたので、変に我慢していると受かるものも受からなくなる。

書き始めた頃の趣旨からかなり脱線しているこのブログだけど、今までで最も有用な情報を書いた気がする。

2013年10月19日土曜日

オレハニクマンジャナイ

http://nlab.itmedia.co.jp/nl/articles/1310/18/news152.html

何だよ、ウォーズまんってw

しかもこれ、第3弾まであるのか。スライム肉まんくらいの造形は可能なのだから、最後はスグルで締めくくるとして、問題は第2弾だな。〇〇マンは大勢いるけど、意外と肉まん向きな超人が思い付かない。ペンタゴンにマンが付いていればなぁ。

さすがにベンキマンはないよな?

2013年10月18日金曜日

UbuntuでデスクトップをDesktopにする

Ubuntu 13.10がリリースされたので、とりあえず仮想マシンにでも入れてみようか。

ここで、インストール後に手癖でlsして、日本語ディレクトリ名が気持ち悪くて変更方法をググるという、いつもの黄金パターン発動。いい加減に覚えるため、自分の手を動かして変更方法をまとめよう。

…と言うわけで、変更するには環境変数LANG=Cでxdg-user-dirs-gtk-updateを起動。Bシェル系なら

% LANG=C xdg-user-dirs-gtk-update
と起動してUpdate Namesボタンを押す。デフォルトでログイン時にxdg-user-dirs-gtk-updateが自動起動されなくなったようで、Don't ask me this againをチェックし忘れても再度「デスクトップ」にリネームされなくなった。

それにしてもUnityは重い。

2013年10月17日木曜日

C++11のauto

今更ながら、どうやらautoの意味が全く変わっていたようだ。従来は記憶クラスの指定でだったが、C++11では初期化しながら変数宣言する際、型推論して良きに計らってくれる。既存の予約語を使いまわすのは微妙な気がするけど、まあ、従来のautoを明示的に指定しているコードなんて見たことも書いたこともないから、まず誰も困らないか。

で、その新しいautoを使うと、

std::vector vec(100);
for (std::vector::iterator it = vec.begin(); it != vec.end(); ++it) { … }
これを
std::vector vec(100);
for (auto it = vec.begin(); it != vec.end(); ++it) { … }
こう書ける。要するに、右辺を見れば分かるだろ、ってこと。あくまでコンパイル時に自動的に型を決定してくれるというだけで、決して型付けが動的になったわけではないので、性能が落ちることもない。

これは便利な機能だと思う反面、型も調べずとりあえずautoで受けてしまうようなコードを書きたくなりそう。書く気になれば書けるけど面倒なときにのみ使うようにしよう。

2013年10月16日水曜日

SystemCはじめました、その6

VerilatorとGoogle Testを組み合わせる話の続き。

いつのまにやら、UbuntuのレポジトリからGoogle Testのバイナリパッケージがなくなっていた。適当にググってみると、Google Testはいつからか、プロジェクト毎にビルドすることを推奨しているらしい。

ならば、Verilatorが吐き出すMakefileにGoogle Testをビルドしてもらおう。Verilatorを実行するディレクトリにGoogleが配布しているgtest-1.7.0.zipを展開する場合、以下のようにすればGoogle Testも含めて、test_xx.cppでxx.vをテストするバイナリをビルドしてくれる。

% unzip gtest-1.7.0.zip
% export SYSTEMC_CXX_FLAGS=-pthread
% verilator --sc xx.v --exe test_xx.cpp gtest-1.7.0/src/gtest-all.cc -CFLAGS '-isystem ../gtest-1.7.0/include -I ../gtest-1.7.0'
% cd obj_dir
% make -f Vxx.mk

環境変数SYSTEMC_CXX_FLAGSの設定は、使っているシェルに合わせて適宜読み替えること。.profileとか.cshrcとか.zshenvとかに書いてしまってもいい。

注意点として、libgtest-devのようなソースパッケージを入れている状態でオプションを間違えると、 libgtest-devのヘッダをインクルードしながらgtest-1.7.0.zipの.ccファイルをコンパイルしてしまったりする。このポストの時点でUbuntuのlibgtest-devは1.6.0なので、gtest-1.7.0.zipと混ぜるのはよろしくない。libgtest-devは切ってしまおう。

2013年10月15日火曜日

失われたインカの記憶

今週のキン肉マン。

よりによってベンキマンかよ、何て思っていたけど、ゆでキレキレじゃないか。アンパンマンも脱帽ものの自己犠牲、過去を知る爺さんの最期、シャイダーもビックリなナスカの地上絵の新解釈。いずれも凄いギャグなのに、劇中では誰も突っ込まずに淡々と話が進められるから、余計におかしい。

本編の方はシリアスな展開になって久しいけど、どっこいギャグもいけるじゃない。

2013年10月14日月曜日

2013年パリーグ順位予想の答え合わせ

今シーズンが終わってしまったところで、開幕前の順位予想の答え合わせをしよう。まず、予想は以下の通り。

  1. 埼玉西武ライオンズ
  2. 北海道日本ハムファイターズ
  3. 福岡ソフトバンクホークス
  4. 千葉ロッテマリーンズ
  5. オリックス・バファローズ
  6. 東北楽天ゴールデンイーグルス

そして実際の結果は

  1. 東北楽天ゴールデンイーグルス
  2. 埼玉西武ライオンズ
  3. 千葉ロッテマリーンズ
  4. 福岡ソフトバンクホークス
  5. オリックス・バファローズ
  6. 北海道日本ハムファイターズ

ライオンズの優勝は予想ではなく願望なので置いておくとして、何と言っても予想と真逆だったのは田中将大の快進撃。WBCの影響で途中で失速すると予想したら、まさか最後まで負けずに1人で貯金24を稼ぐとは。普通(?)に7〜8敗してくれたら、優勝争いが相当もつれただろうに。敵ながら天晴としか言いようがないわ。

マリーンズは予想以上の健闘。巨大戦力を誇ったホークスはまさかのBクラス。そして予想を遥かに下回ってグダグダだったファイターズ。今年の予想は本当に当たらなかった。

2013年10月13日日曜日

ビックリ変態マン

今日の分のビックリマンチョコ。

まさに開けてビックリ。一昨日出た魔かいだん

に対応するお守りシールで、階段で滑らないようにということなのだろうが…。スリップを着たおっさんは100%アウトだろw

子供の頃にこのスリップ防止を持っていたかどうかは覚えていないけど、もし引き当てていたとしても、四半世紀前はそんな細かい(?)ことは気にせず、お守りだから悪魔よりまし、くらいに思っていたんだろうなぁ。80年代の子供向けデザイン、なかなか侮れん。

あと、そこそこ年を取った今見てみると、昔は当たりだと思っていた天使シールより、外れだと思っていた悪魔シールの方が、デザイン的に何でもありで面白い。キン肉マンの超人募集に近いものを感じる。

2013年10月12日土曜日

SystemCはじめました、その5

SystemCとVerilatorGoogle Testを組み合わせて使う話。

ググったらテスト毎にforkして別プロセスでシミュレーションする話も見つかったけれど、もう少し穏便(?)に行く。具体的には、シミュレーションとしては途中で止めることなく、途中途中でリセットをかけながら全テストを一気に流す。

まず、DUTとそのテストベンチと実行バッチをまとめたファイルはこちら。SystemCとVerilatorとGoogle Testがインストール済みの環境なら、解凍して出来たディレクトリの下で

% ./run
すれば動くはず。以下、SystemCで書いたテストベンチをコピペ。DUTはここには貼らないけど、「レイテンシ1クロックの符号無し8ビットのクリップ付き加減算機」とだけ書いておく。上のリンク先のtar ballの中に含まれているけど、以下のテストをパスするものを書いてみるのもありかも。

#include "Vdut.h"
#include "verilated_vcd_sc.h"
#include <gtest/gtest.h>
#define CLK_PERIOD 10
#define VCD_FILENAME "test_sc.vcd"
// test bench
SC_MODULE(TestBench) {
    sc_in<bool> clk;
    sc_signal<bool> xrst;
    sc_signal<bool> addsub;
    sc_signal<uint32_t> a, b, c;
    Vdut dut;
    SC_CTOR(TestBench) : dut("dut") {
        xrst = 0;
        dut.clk(clk);
        dut.xrst(xrst);
        dut.i_addsub(addsub);
        dut.i_a(a);
        dut.i_b(b);
        dut.o_c(c);
    }
    void cy(unsigned int n = 1) {
        for (int i = 0; i < n; i++) {
            wait(clk.posedge_event());
        }
        wait(1, SC_NS); // #1ns
    }
    void reset() {
        xrst = 0;
        wait(CLK_PERIOD * 5.5, SC_NS);
        xrst = 1;
        cy();
    }
};
// test thread
SC_MODULE(TestThread) {
    void (*body)();
    sc_event e_run;
    bool done;
    SC_CTOR(TestThread) : body(0), e_run(), done(false) {
        SC_THREAD(test);
        sensitive << e_run;
    }
    void test() {
        while (true) {
            wait();
            if (body) body();
            done = true;
        }
    }
    bool run(void (*func)(), uint32_t timeout = 0) {
        body = func;
        done = false;
        e_run.notify(CLK_PERIOD, SC_NS);
        if (timeout) {
            while (!done) {
                sc_start(CLK_PERIOD, SC_NS);
                if (--timeout == 0) return false;
            }
        } else {
            while (!done)
                sc_start(CLK_PERIOD, SC_NS);
        }
        return true;
    }
};
// instance
TestBench tb("tb");
TestThread th("th");
// tests
TEST(AddTest, Under255) {
    struct dummy {
        static void test() {
            tb.reset();
            tb.cy(10);
            tb.addsub = 0;
            tb.a = 0;
            tb.b = 0;
            tb.cy();
            EXPECT_EQ(0, tb.c);
            tb.a = 1;
            tb.b = 2;
            tb.cy();
            EXPECT_EQ(3, tb.c);
            tb.a = 3;
            tb.b = 4;
            tb.cy();
            EXPECT_EQ(7, tb.c);
            tb.a = 100;
            tb.b = 100;
            tb.cy();
            EXPECT_EQ(200, tb.c);
        }
    };
    ASSERT_TRUE(th.run(dummy::test));
}
TEST(AddTest, Clip) {
    struct dummy {
        static void test() {
            tb.reset();
            tb.cy(10);
            tb.addsub = 0;
            tb.a = 127;
            tb.b = 127;
            tb.cy();
            EXPECT_EQ(254, tb.c);
            tb.a = 128;
            tb.b = 127;
            tb.cy();
            EXPECT_EQ(255, tb.c);
            tb.a = 127;
            tb.b = 128;
            tb.cy();
            EXPECT_EQ(255, tb.c);
            tb.a = 128;
            tb.b = 128;
            tb.cy();
            EXPECT_EQ(255, tb.c);
            tb.a = 255;
            tb.b = 255;
            tb.cy();
            EXPECT_EQ(255, tb.c);
        }
    };
    ASSERT_TRUE(th.run(dummy::test));
}
TEST(SubTest, AgeB) {
    struct dummy {
        static void test() {
            tb.reset();
            tb.cy(10);
            tb.addsub = 1;
            tb.a = 0;
            tb.b = 0;
            tb.cy();
            EXPECT_EQ(0, tb.c);
            tb.a = 2;
            tb.b = 1;
            tb.cy();
            EXPECT_EQ(1, tb.c);
            tb.a = 7;
            tb.b = 4;
            tb.cy();
            EXPECT_EQ(3, tb.c);
            tb.a = 100;
            tb.b = 30;
            tb.cy();
            EXPECT_EQ(70, tb.c);
            tb.a = 255;
            tb.b = 254;
            tb.cy();
            EXPECT_EQ(1, tb.c);
            tb.a = 255;
            tb.b = 255;
            tb.cy();
            EXPECT_EQ(0, tb.c);
        }
    };
    ASSERT_TRUE(th.run(dummy::test));
}
TEST(SubTest, AltB) {
    struct dummy {
        static void test() {
            tb.reset();
            tb.cy(10);
            tb.addsub = 1;
            tb.a = 0;
            tb.b = 1;
            tb.cy();
            EXPECT_EQ(0, tb.c);
            tb.a = 2;
            tb.b = 3;
            tb.cy();
            EXPECT_EQ(0, tb.c);
            tb.a = 100;
            tb.b = 200;
            tb.cy();
            EXPECT_EQ(0, tb.c);
            tb.a = 254;
            tb.b = 255;
            tb.cy();
            EXPECT_EQ(0, tb.c);
            tb.a = 0;
            tb.b = 255;
            tb.cy();
            EXPECT_EQ(0, tb.c);
        }
    };
    ASSERT_TRUE(th.run(dummy::test));
}
// main
int sc_main(int argc, char *argv[]) {
    Verilated::commandArgs(argc, argv);
    testing::InitGoogleTest(&argc, argv);
    sc_clock clk("clk", CLK_PERIOD, SC_NS);
    tb.clk(clk);
#ifdef VCD_FILENAME
    Verilated::traceEverOn(true);
    VerilatedVcdSc *vcd = new VerilatedVcdSc();
    tb.dut.trace(vcd, 99);
    vcd->open(VCD_FILENAME);
    int r = RUN_ALL_TESTS();
    vcd->close();
    delete vcd;
    return r;
#else
    return RUN_ALL_TESTS();
#endif // #ifdef VCD_FILENAME
}

ざっくり解説。

TestBenchモジュールは、その名の通りテストベンチのモジュール。ここでDUTをインスタンスしている。複雑なDUTなら、ここで入出力モデルもインスタンスしてDUTに接続するところだろうけど、今回のDUTは単純なので入出力の信号を生やしただけ。cy()で1nsディレイさせているのはレーシング対策。このTestBenchを1つだけ静的にインスタンスして、各テストから突っついている。

TestThreadモジュールは、任意の関数をSystemCのスレッドで実行するためのモジュール。どうしてこんな面倒なことをするかというと、SystemCのモジュールはシミュレーション開始前に初期化しなければならないから。各テストの実行時に、そのテスト用のスレッドを含むモジュールをインスタンスしようとすると、1つ目のテストは動くのだが2つ目のテストが走らない(結構ハマった)。そこでテスト実行用のモジュールを静的にインスタンスして、各テストで使い回す形にした。

各テストTEST(...)の書き方はGoogle Testのドキュメントを見てもらうとして、テスト本体はdummyクラスのtest()の中に記述している。本当はここに直接test()の定義を書きたいのだけれど、C++の仕様上できないのでdummyクラスで包んでいる。C++11のlambdaを使えば、もうちょっと幸せになる?

sc_main()は概ねテンプレート通りだが、sc_start()を呼ぶ代わりにGoogle TestのRUN_ALL_TESTS()マクロを実行している。

本当にテストされているのか不安だったら、適当にテストの期待値を変更してこけさせてみればいい。また、とりあえず波形も取っているので見てみればいい。最後に実行バッチの中身を書いておこう。

% verilator --sc dut.v -LDFLAGS -lgtest --trace --exe sc_gtest.cpp
% cd obj_dir
% make -f Vdut.mk % ./Vdut
ポイントはVerilatorの-LDFLAGSオプションでGoogle Testのライブラリをリンクさせているくらいかな。昨日書いた通り、現状では-LDLIBSオプションは使えないので、-LDFLAGSで代用している。

2013年10月11日金曜日

SystemCはじめました、その4

VerilatorとSystemCでRTLをテストしていて、ふと思った。結局C++のソフトを書いているのだから、既存のC++テストフレームワークを使えないだろうか。

早速Google Testを使ってみようとしてみたところ、Verilatorが吐き出すMakefileにlibgtestをリンクするよう指定させるところで、Verilatorの-LDLIBSオプションを使おうとしてプチ引っかかった。

結論から言うと、-LDLIBSオプションはマニュアルにはあるけど、ざっとソースを見た限り実装されてない模様(v3.853)。ちょっと気持ち悪いけど-LDFLAGSオプションで代用するか、環境変数でLDLIBSを指定するか、だな。

SystemCとGoogle Testの組み合わせの話は後日。

2013年10月10日木曜日

マスコミvs小売り

http://jp.wsj.com/article/JJ12339254245020764360320058651270437926823.html

米の産地偽装自体は問題として掘り下げて欲しいけど、素直に文春を応援する気にはならないなぁ。

他のニュースから察するに、イオンが国産のつもりで買っていた米に中国産やアメリカ産の米が混ざっていたこと自体は本当なのだろう。訳もなく安いはずがないから、国産≒福島産のつもりで買っていたのかもしれないが、とりあえずイオンは騙された側なのか?

で、結局のところ、一消費者として知りたいのは、スーパーで普通に売っている米の産地表記がどの程度信頼できるのかどうかなんだよ。安直に中国をディスって人目を引こうとしているメディアに、国民の知る権利云々なんて言って欲しくないのが正直なところ。

2013年10月9日水曜日

落合GM、谷繁PM

http://www.chunichi.co.jp/s/article/2013100990031011.html
http://www.nikkansports.com/baseball/news/p-bb-tp0-20131009-1201652.html

うはっ、ドラゴンズのサプライズ人事キター!

若返りが急務であるチームだけど、まずは監督を若返らせてきたか。なかなか面白いとは思うけど、一番難しい捕手の世代交代が滞りそうでもある。兼任するとしても監督ではなくバッテリーコーチにして、明確に後進の捕手を育てる立場にした方が良かった気もする。

もっと言うと、勝ちながら若手を育てるのが難しいのは分かっているのだから、来シーズンは誰が監督をやっても結果を出すのは難しい。種だけ蒔いて結果責任を取る損な役回りは、未来のある若い谷繁より、もう1シーズンだけ続投させて高木監督にやらせた方が良かったと思う。落合GMの下で指揮するのは嫌がりそうだけど。

2013年10月8日火曜日

パリーグ頂上(の1つ下)最終決戦

まさかのゲーム差なしで両チーム最終戦までもつれ込んだ2位争い。熱いシチュエーションを望んではいたけれど、こんな絵に描いたような展開になろうとは。球団的にはともかく、一ファンとしては、ダメダメだった状態からここまで盛り返しただけでも胸いっぱいだったのだけれど…。

やっぱり勝つと気持ちいいわ! 田中将大と言えども、短期決戦なら2試合しか先発できない。このまま突っ走って、今年こそミラクル元年だ!

石井一久は割を食ったな。

2013年10月7日月曜日

Wii U 4.0.0J

ファームウェアアップデートが来たのでとりあえず入れておいたものの、何が変わったか分からないまま使っていたのだが、公式サイトを見たらWiiソフトのGamepad出力対応だと!? 10か月遅れで、ようやくGamepadで古いソフトを遊べるようになったのか。

で、いざ試してみると、コレジャナイ感が…。画面だけGamepadに飛ばせてもGamepadのボタンを使えないのでは、ほとんどありがたみがない。そこまで対応してしまうと、Gamepad単体で遊べることで追加料金を取っているVirtualConsoleが困るのかもしれないけど。モーションセンサーまで対応しろなんて言わないから、Gamepadのボタンを1Pのリモコンにつないだクラシックコントローラ扱いにするモードを追加してほしい。追加料金が必要でもいいから。

2013年10月6日日曜日

チョコのある生活

箱買いして1日1個ずつ食べてきたももクロマンチョコを、ついに食べ終えた。

メンバーを期待しているのに早々にアキラが揃って、先行き不安だった序盤。順調に種類が増えるのが楽しかった中盤。さすがにダブりが増えてきた中、ピンポイントで穴が埋まるのが嬉しかった終盤。楽しい1か月だったなぁ。ちなみにシールは29個目で無事コンプリート。

そんなチョコのある生活を終わらせるのが惜しくて、ついビックリマンの復刻版に手を出してしまった。

さすがに今回はバラで購入。

1日1個ルールは継続しながら、早速今日の分を食べてみると…、チョコが違う! ももクロマンチョコはナッツが入っていたけど、復刻版ビックリマンはウェハースとチョコだけ。ももクロマンチョコが20円高いのは、過去のデザインを流用できない上にキャラクターものなので、単純にシールにコストがかかったからだと思っていたのだけれど、景品表示法でおまけのコストは値段の2%以内に縛られているから、シールそのものによるコストアップは1個あたりせいぜい0.4円程度。0.4円のためだけに20円値上げするのもあんまりなので、ついでにチョコにも金をかけたのかな?

2013年10月5日土曜日

滑り込みCS進出

ライオンズCS進出決定! 正直言って今年はもう駄目だと思っていたよ。

2位まで手が届くかは微妙なところだけれど、奇しくも今シーズン最終戦がマリーンズとのファーストステージ前哨戦。そこで勢いを付けて、空気なんて読まずに一気に下克上だ。…なんて夢をまだ見られるんだから、批判もあるけどやっぱりCSって面白いな。

ああそうだ。CSの前に、レギュラーシーズンが終わったら開幕前順位予想の答え合わせをしなくては。見直してみたら酷い外しっぷりだわ。

2013年10月4日金曜日

GOUCHINN

ぐはぁっ、ペプシ落選。散々飲んだペプシがすべてゲップ水泡に帰した。冷蔵庫のペプシを丁度飲み干したところで、夏と秋と冬がまとめて終わってしまったような感覚。いや、まだまだ春は来ないんだけど。

…って、いかんいかん。抽選する前から年末の西武ドームに外れることが前提になっていた。ビンタものだわ。

2013年10月3日木曜日

小久保監督

http://www.jiji.com/jc/c?g=spo_30&k=2013100300850

ほ〜。人選もタイミングも意外だったけど、これは良い決断だと思う。

まず現役監督でない。そして、本番はまだまだ先の話だから、早急に結果を求められない環境で勉強してもらえる。そんなこんなで、各球団はほとんどリスクを負わずに、球界としては監督の出来る若い人財を得ることが出来る…、可能性がある。

コミッショナーの不可解な辞任(?)の何とも嫌な後味が残っていたけれど、久々に良い話だ。

2013年10月2日水曜日

辻内引退

http://hochi.yomiuri.co.jp/giants/news/20131001-OHT1T00200.htm

う~ん、切ないね。

とは言え、活躍できる選手なんてほんの一握りなんだよな。プロ野球選手の総人数が急に増えることは無いだろうから、毎年ドラフトで取った人数分くらいはユニフォームを脱いでいるわけだ。人知れず夢破れて去っていく選手が大勢いる中、引退にニュースバリューがあっただけでも、恵まれていたのかもしれない。

あの王子も、かなり危なそうだなぁ。

2013年10月1日火曜日

消費税8%

http://www.jiji.com/jc/c?g=eco_30&k=2013100100819
http://www.bloomberg.co.jp/bb/newsarchive/MTY6G96JTSFY01.html

税率アップ自体はまあ既定路線だとして、問題は景気の防寒策だな。

法人税を下げるのは正解だろう。下手なバラマキで競争力のない企業を延命させてしまうより、きちんと法人税を納めている財務的に健全な企業を優遇して、成長してもらった方がいい。

一方、低所得者にただ金を渡すというのはセンスがない。前にも書いたが、直接税を下げつつ間接税を上げて、トータルで税収が増えるように調整すべきだ。1万円の施しを受けるのと1万円の手取りが増えるのとでは、稼いだ実感がまるで違うだろう。言葉は悪いけど、1万円多く稼げるようになったと錯覚してもらって、気持ちよく金を回してもらうべきだ。

いつ切られるか分からない貧乏手当を給付したって、一般人のキャッシュフローは大して増えないだろうよ。それより所得税を下げて「給料」として振り込まれる金額を増やし、使ってもまた稼げると思える環境を作らないと。