メモの日々


2001年09月04日(火) スリーピー

会社など

  • 11:35 MS Project2000をインストールした。これでテストのスケジュールを作ってみよう。
  • 16:45 わあもう夕方だ。なぜだ。高本さんにGIGAの説明をしたり、TOPさんにメイル書いたり、オンライン判定のカスタムタグを見ていたり、設計書の書き方を考えてたりしてたのだ。受注金額の修正もしたな。とにかくテストのスケジュールは何も進んでない。
  • 22:00 夜。やっぱりテストのスケジュールは完成しなかった。明日続きをやります。明日にはでき上げます。

2003年09月04日(木)

[退職] 退職所得受給申請書?

@ITの第2回 意外と知らない「退職」という儀式という記事を読んでいてドキッ。

退職所得受給申請書とは、退職金という所得に対しての特別控除を得るための申請書のことをいいます。退職時に絶対必要なものではないのですが、会社に提出しない場合、退職金に一律20%の所得税がかけられてしまうのです。逆にいえばこの申請をするだけで、余分な所得税を払わなくてもよくなるわけです。

とのことだが「退職所得受給申請書」なんて提出した記憶がない。気になって色々調べ、結果「退職所得の源泉徴収票・特別徴収票」にある源泉徴収額が0円になっているから提出しているんだと結論付けた。退職の説明を受けたときに書いたのかなあ。これから退職する人、あの場でどんな書類に印を押すのかメモってきておれに教えてください。

関連する情報。

書類の名前は「退職所得の受給に関する申告書(退職所得申告書)」のようだ。提出すると退職金のうち「40万円 × 勤続年数」が控除されるみたい。ふーん。

やること

  • 電気カミソリを買う
  • 腕時計の電池交換

2004年09月04日(土)

  • カーネル初ビルド。ブート時、NICの認識処理あたりで落ちた。
  • 蛍光灯を操作する紐が根元から切れてしまった。これ直せるのか?2本の蛍光灯が消えたままになっており暗い。目が悪くなる。

[life][service] ネットニュース

半月ぶりくらいでfj読もうとしてasahiネットのサーバ(news2.asahi-net.or.jp)に繋いだら、昨日より古い記事が一切無かった。なんでや。もー。

ASAHIネット障害・工事情報に、

【障害情報】
お客様にご迷惑をおかけしたことをお詫び申し上げます。
8/27 1:20〜 9/3 17:30 news2.asahi-net.or.jpのネットニュースサービスがご利用できませんでした

とあった。このせいかな。もー。

[java][windows] 「開発者です。MSJVM を引き続き再頒布することはできますか?」 (マイクロソフト)

マイクロソフトのJavaVMはmsjavx86.exeを入手すればインストールできるのか。これは再頒布が認められているので、検索するとたくさん見つかる。

やること

  • プリンタ処分
  • リンク元のスリム化
  • 蛍光灯の紐
本日のツッコミ(全2件) [ツッコミを入れる]

55 [プリンタの処分やりましょうか。 [やること]から一向に消える気配がない。 \100でやります。]

小川 [非常にゆっくりですが、処分は確実に進行しているので大丈夫です。あとちょっとです。]


2009年09月04日(金)

  • 夏休みはもうとった。
  • 少し前に衆議院議員選挙があり、民主党が圧勝した。今の総理大臣はまだ麻生さん。

[c++][dev] C++の例外発生時のバックトレースを得る

にgdbを使ってC++の例外発生時にバックとレースを得る例が書かれていて、わりとお手軽で便利だったので自分でもメモ。内容は上のものと同じです。

サンプルプロラム

#include <iostream>
#include <stdexcept>

void throw_e() {
    throw std::runtime_error("oreore");
}

int main() {
    try {
        throw_e();
    } catch (std::runtime_error& e) {
        std::cout << "exception: " << e.what() << std::endl;
    }
}

これを次のようにデバッグ情報付きでコンパイルする。

$ g++ -g -Wall exception.cpp

実行すると次のようになる。

$ ./a.out
exception: oreore

gdbを使ってバックトレースを得る

$ gdb a.out
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...

(gdb) break main
Breakpoint 1 at 0x8048c1c: file exception.cpp, line 10.

(gdb) run
Starting program: /home/kenichi/work/cxx/a.out

Breakpoint 1, main () at exception.cpp:10
10              throw_e();

(gdb) catch throw
Catchpoint 2 (throw)

(gdb) c
Continuing.

Catchpoint 2 (exception thrown)
0xb7f888e5 in __cxa_throw () from /usr/lib/libstdc++.so.6

(gdb) bt
#0  0xb7f888e5 in __cxa_throw () from /usr/lib/libstdc++.so.6
#1  0x08048bd0 in throw_e () at exception.cpp:5
#2  0x08048c21 in main () at exception.cpp:10

おお、得られた。

  • catch throw」で例外のthrowに対しブレイクポイントを設定できる。
  • ただし、catch throwはプログラム開始後でないとエラーになってしまうようなので、先にmainにブレイクポイントを設定してプログラムを開始し、止まった後でcatch throwを実行している。

2014年09月04日(木)

[python] Pythonで部分適用した関数をクラスのメソッドとして動的に追加する

未だにPython 2.7を使っている。

Pythonでは、setattr()を使えばクラスに動的にメソッドを追加できる。

class A(object): pass
def f(self, message): print message
setattr(A, "g", f)
a = A()
a.g("g") #=> g

で、f()の引数messageに特定の値を適用した関数をAのメソッドとして追加したかった。Pythonではfunctools.partial()を使うと部分適用した関数を作れるので、

import functools
f_with_hello = functools.partial(f, message="hello")
setattr(A, "g_with_hello", f_with_hello)
a.g_with_hello() #=> TypeError

とすればいいのかなと思ったが、g_with_hello()を呼びだした所で

TypeError: f() takes exactly 2 arguments (1 given)

というエラーになってしまった。ちなみにf_with_hello()は意図通りに動作する。

f_with_hello("self") #=> hello

困ったんだけど、functools.partial()など使わずともf()をlambdaでラップしたらうまくいったのでメモ。

setattr(A, "g_with_world", lambda self: f(self, "world"))
a.g_with_world() #=> world