トップ 最新 追記

ヨタの日々

2001|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|

2014-06-01 :-)

_ 読書メーター

2014年5月の読書メーター 読んだ本の数:5冊 読んだページ数:1361ページ ナイス数:19ナイス 冴えない彼女の育てかた 6 (富士見ファンタジア文庫)冴えない彼女の育てかた 6 (富士見ファンタジア文庫)感想 英梨々巻。メインヒロイン以外は倫也にデレデレなんだが相変わらず肝心の倫也の本命が見えないというかメンバー全員に対して誠実なのでなおさら本命が分からない。英梨々に対しては能動的に見えるんだけど幼馴染だからというだけだろうか 読了日:5月28日 著者:丸戸史明
学戦都市アスタリスク 05. 覇凰決戦 (MF文庫J)学戦都市アスタリスク 05. 覇凰決戦 (MF文庫J)感想 ロボが自我を持ち、学習により成長し、主人公たちを追い詰める。いい。ロボがいい。 読了日:5月28日 著者:三屋咲ゆう
ザ・トヨタウェイ(下)ザ・トヨタウェイ(下) 読了日:5月24日 著者:ジェフリー・K・ライカー
ザ・トヨタウェイ(上)ザ・トヨタウェイ(上)感想 「トヨタウェイは、長期的な生産性を上げる狙いで、品質のつくり込みのために立ち止まったり、ゆっくり進んだりする哲学を会社のカルチャーに組み込むことである」(p.262) ところでトヨタ工場勤務していた知人が居るんだがry 読了日:5月17日 著者:ジェフリー・K・ライカー
クロス×レガリア女王の領域 (角川スニーカー文庫)クロス×レガリア女王の領域 (角川スニーカー文庫)感想 ナタも蓮花も「愛する」ということを自覚したのに、物語は残酷だ / おにと鬼仙の戦争が決定したが、馳郎なら両方ひっくるめて丸く収めてくれるに違いない。 読了日:5月11日 著者:三田誠
読書メーター

_ 午前

0930 起床

1020 おひる。スパゲティ

1040 ご注文はコーヒーですか?

1100 アニメ消化

IMG_5052

IMG_5053

_ 午後

1400 買い物

1500 散歩

紫陽花が咲いている。んだが梅雨はどこに

IMG_5055

IMG_5059

_

1700 アニメ消化

2100 飯。鮭のムニエル

_ 扇風機を起動させた

おい暑いぞ

IMG_5054

_ NetBSD /bin/mkdir を読む

ソース src/bin/mkdir/mkdir.c

マニュアル mkdir - NetBSD Manual Pages

流れ

main
mkpath または mkdir

main() を読む。

最初に作成するディレクトリのモードについて。~umask(0) して全部ビット立てる。umask(0) で 許可しない ビットを取得し、それを ~ で反転。mode で | で繋げるために ~ している。

  /*
   * The default file mode is a=rwx (0777) with selected permissions
   * removed in accordance with the file mode creation mask.  For
   * intermediate path name components, the mode is the default modified
   * by u+wx so that the subdirectories can always be created.
   */
  mode = (S_IRWXU | S_IRWXG | S_IRWXO) & ~umask(0);
  dir_mode = mode | S_IWUSR | S_IXUSR;

S_IRWXU などは sys/stat.h に定義されている。

src/sys/sys/stat.h

#define  S_IRWXU  0000700      /* RWX mask for owner */
#define  S_IRUSR  0000400      /* R for owner */
#define  S_IWUSR  0000200      /* W for owner */
#define  S_IXUSR  0000100      /* X for owner */

#if defined(_NETBSD_SOURCE)
#define  S_IREAD    S_IRUSR
#define  S_IWRITE  S_IWUSR
#define  S_IEXEC    S_IXUSR
#endif

#define  S_IRWXG  0000070      /* RWX mask for group */
#define  S_IRGRP  0000040      /* R for group */
#define  S_IWGRP  0000020      /* W for group */
#define  S_IXGRP  0000010      /* X for group */

#define  S_IRWXO  0000007      /* RWX mask for other */
#define  S_IROTH  0000004      /* R for other */
#define  S_IWOTH  0000002      /* W for other */
#define  S_IXOTH  0000001      /* X for other */

肝心のディレクトリ作成の処理はここ。引数に指定されたディレクトリをすべて処理する。

for の引数をどう使おうが勝手だけどループに影響しない変数を初期化するのやめようよ。まあ好みの問題ですが。

  for (exitval = EXIT_SUCCESS; *argv != NULL; ++argv) {
#ifdef notdef
    char *slash;

    /* Kernel takes care of this */
    /* Remove trailing slashes, per POSIX. */
    slash = strrchr(*argv, '\0');
    while (--slash > *argv && *slash == '/')
      *slash = '\0';
#endif

    if (pflag) {

      // mkdir -p foo/bar/baz などと呼ばれたとき
      // ディレクトリを潜って作成する。
      if (mkpath(*argv, mode, dir_mode) < 0)
        exitval = EXIT_FAILURE;
    } else {

      // mkdir foo などと呼ばれたとき
      // mkdir(2) を呼ぶだけ
      if (mkdir(*argv, mode) < 0) {
        warn("%s", *argv);
        exitval = EXIT_FAILURE;
      } else {

        // 自分がオーナーではないディレクトリを作成しようとしたんだろうから
        // ちょっと chmod しておくは
        /*
         * The mkdir() and umask() calls both honor
         * only the file permission bits, so if you try
         * to set a mode including the sticky, setuid,
         * setgid bits you lose them. So chmod().
         */
        if ((mode & ~(S_IRWXU|S_IRWXG|S_IRWXO)) != 0 &&
            chmod(*argv, mode) == -1) {
          warn("%s", *argv);
          exitval = EXIT_FAILURE;
        }
      }
    }
  }
  exit(exitval);
  /* NOTREACHED */
}

パスを辿ってディレクトリを作成する関数がこちら。やってることはパス区切りを辿りひたすら mkdir を繰り返す。のはずなんだが

/*
 * mkpath -- create directories.
 *  path     - path
 *  mode     - file mode of terminal directory
 *  dir_mode - file mode of intermediate directories
 */
static int
mkpath(char *path, mode_t mode, mode_t dir_mode)
{
  struct stat sb;
  char *slash;
  int done, rv;

  done = 0;
  slash = path;

  for (;;) {
    // ここの処理でパスをたどるはず
    slash += strspn(slash, "/");
    slash += strcspn(slash, "/");

    done = (*slash == '\0');
    *slash = '\0';

    rv = mkdir(path, done ? mode : dir_mode);
    if (rv < 0) {
      /*
       * Can't create; path exists or no perms.
       * stat() path to determine what's there now.
       */
      int  sverrno;

      sverrno = errno;
      if (stat(path, &sb) < 0) {
          /* Not there; use mkdir()s error */
        errno = sverrno;
        warn("%s", path);
        return -1;
      }
      if (!S_ISDIR(sb.st_mode)) {
          /* Is there, but isn't a directory */
        errno = ENOTDIR;
        warn("%s", path);
        return -1;
      }
    } else if (done) {
      /*
       * Created ok, and this is the last element
       */
      /*
       * The mkdir() and umask() calls both honor only the
       * file permission bits, so if you try to set a mode
       * including the sticky, setuid, setgid bits you lose
       * them. So chmod().
       */
      if ((mode & ~(S_IRWXU|S_IRWXG|S_IRWXO)) != 0 &&
          chmod(path, mode) == -1) {
        warn("%s", path);
        return -1;
      }
    }

    if (done) {
      break;
    }

    // でもここで slash に '/' を入れると
    // 次のループのとき '/' から "/" を探す↑ という処理になるので
    // パスを辿れないんではないのかしら
    *slash = '/';
  }

  return 0;
}

2014-06-02 :-(

_ 午前

0530 起床

0700 食堂

0830 出勤 && 検討

_ 午後

1300 検討

_

1700 残業アワー

2100 退勤

2200 飯。親子丼

_ NetBSD /bin/pwd を読む

ソース bin/pwd/pwd.c

マニュアル pwd - NetBSD Manual Pages

使用例

% pwd -L
/home/rin/public_html/diary

シンボリックリンクを解決する

% pwd -P
/home/rin/public_html/tdiary-core

処理の流れ

main
getcwd または getcwd_logical

読む。

冒頭に嘆きの声

/*
 * Note that EEE Std 1003.1, 2003 requires that the default be -L.
 * This is inconsistent with the historic behaviour of everything
 * except the ksh builtin.
 * To avoid breaking scripts the default has been kept as -P.
 * (Some scripts run /bin/pwd in order to get 'pwd -P'.)
 */

「仕様では -L がデフォルトなんだけど、互換性のために -P 残しとくわ」

main() を読む

  // pwd -L された場合
  if (lFlag)
    p = getcwd_logical();
  // それ以外では NULL にしておく
  else
    p = NULL;

  // -L ではない場合はこっち。つまりデフォルト
  if (p == NULL)
    p = getcwd(NULL, 0);

-P またはオプションなしの場合は getcwd を呼ぶ getcwd(3) - NetBSD Manual Pages

getcwd_logical を読む。-L された場合にこっちにくる。論理 PATH というらしんだが相対 PATH のことでいいんだろか。

static char *
getcwd_logical(void)
{
  char *pwd;
  struct stat s_pwd, s_dot;

  // 環境変数 $PWD を使う
  // 正確だし高速だし

  /* Check $PWD -- if it's right, it's fast. */
  pwd = getenv("PWD");
  if (pwd == NULL)
    return NULL;

  // root からの PATH だった場合は返る
  if (pwd[0] != '/')
    return NULL;

  // こういう PATH も返る
  if (strstr(pwd, "/./") != NULL)
    return NULL;
  if (strstr(pwd, "/../") != NULL)
    return NULL;

  // stat を取得できない場合も返る
  if (stat(pwd, &s_pwd) == -1 || stat(".", &s_dot) == -1)
    return NULL;

  // 現在地と . が一致しなければ返る
  if (s_pwd.st_dev != s_dot.st_dev || s_pwd.st_ino != s_dot.st_ino)
    return NULL;

  // 相対 PATH が返る? ./ みたいな?
  return pwd;
}

2014-06-03 :-(

_ 午前

0530 起床

0700 食堂

0830 出勤 && 検討

_ 午後

1300 検討

_

1700 退勤

1800 帰宅即艦これ

2100 飯

_ ,

コード読んだり書いたりするつもりだったんだがどうも仕事のことで納得出来ないことがあり気になってウニョウニョしてしまいまったくいろいろなことが手がつかない。

_ 艦これ 2-5 沖ノ島沖戦闘哨戒

6 月になったので 6 月ぶんを攻略。

今回は面倒なのでキラ付けしなかったんだがどうも被害が多いような。大破撤退したり南に逸れたりして 12 回くらい出撃した。試行回数も多かった。やはりキラ付け要るか。

瑞鳳( N 人目 )とか

58( N 人目 )とか

卯月を改造したりとか。

Tags: 艦これ

2014-06-04 :-(

_ 午前

0530 起床

0700 食堂

0830 出勤 && lint祭り

_ 午後

1300 lint祭り

_

1700 退勤

1800 ぐったり

1900 読書

2230 飯

_ NetBSD /bin/rm を読む

ソース src/bin/rm/rm.c

マニュアル rm - NetBSD Manual Pages

使用例

rm ファイル
rm -r ディレクトリ

流れはこうなる。-r があると rm_tree にいく。

main
rm_file または rm_tree

面白いのは -P されたとき。

rm -P ファイル

マニュアルより

     -P    Overwrite regular files before deleting them.  Files are overwrit-
           ten three times, first with the byte pattern 0xff, then 0x00, and
           then with random data, before they are deleted.  Some care is taken
           to ensure that the data are actually written to disk, but this can-
           not be guaranteed, even on traditional filesystems; on log-struc-
           tured filesystems or if any block-journaling scheme is in use, this
           option is completely useless.  If the file cannot be overwritten,
           it will not be removed.
  1. ファイルに 0xff を書く
  2. ファイルに 0x00 を書く
  3. ファイルにランダム値を書く

ファイルを削除する前にデタラメな値を書き込んで、それから削除する。

これを rm_overwrite() で処理している。

コメントがあるので読むとよい。

/*
 * rm_overwrite --
 *	Overwrite the file 3 times with varying bit patterns.
 *
 * This is an expensive way to keep people from recovering files from your
 * non-snapshotted FFS filesystems using fsdb(8).  Really.  No more.  Only
 * regular files are deleted, directories (and therefore names) will remain.
 * Also, this assumes a fixed-block file system (like FFS, or a V7 or a
 * System V file system).  In a logging file system, you'll have to have
 * kernel support.
 *
 * A note on standards:  U.S. DoD 5220.22-M "National Industrial Security
 * Program Operating Manual" ("NISPOM") is often cited as a reference
 * for clearing and sanitizing magnetic media.  In fact, a matrix of
 * "clearing" and "sanitization" methods for various media was given in
 * Chapter 8 of the original 1995 version of NISPOM.  However, that
 * matrix was *removed from the document* when Chapter 8 was rewritten
 * in Change 2 to the document in 2001.  Recently, the Defense Security
 * Service has made a revised clearing and sanitization matrix available
 * in Microsoft Word format on the DSS web site.  The standardization
 * status of this matrix is unclear.  Furthermore, one must be very
 * careful when referring to this matrix: it is intended for the "clearing"
 * prior to reuse or "sanitization" prior to disposal of *entire media*,
 * not individual files and the only non-physically-destructive method of
 * "sanitization" that is permitted for magnetic disks of any kind is
 * specifically noted to be prohibited for media that have contained
 * Top Secret data.
 *
 * It is impossible to actually conform to the exact procedure given in
 * the matrix if one is overwriting a file, not an entire disk, because
 * the procedure requires examination and comparison of the disk's defect
 * lists.  Any program that claims to securely erase *files* while 
 * conforming to the standard, then, is not correct.  We do as much of
 * what the standard requires as can actually be done when erasing a
 * file, rather than an entire disk; but that does not make us conformant.
 *
 * Furthermore, the presence of track caches, disk and controller write
 * caches, and so forth make it extremely difficult to ensure that data
 * have actually been written to the disk, particularly when one tries
 * to repeatedly overwrite the same sectors in quick succession.  We call
 * fsync(), but controllers with nonvolatile cache, as well as IDE disks
 * that just plain lie about the stable storage of data, will defeat this.
 *
 * Finally, widely respected research suggests that the given procedure
 * is nowhere near sufficient to prevent the recovery of data using special
 * forensic equipment and techniques that are well-known.  This is 
 * presumably one reason that the matrix requires physical media destruction,
 * rather than any technique of the sort attempted here, for secret data.
 *
 * Caveat Emptor.
 *
 * rm_overwrite will return 0 on success.
 */

ここで言ってる「U.S. DoD 5220.22-M "National Industrial Security Program Operating Manual"」とやらはこれらしい。

DoD 5220.22-M(PDF)

「8-301. Clearing and Sanitization.」に項目があるけど、具体的な手法については書いてない。

rm_overwrite() を読む。

書き込み処理は define されている。なぜマクロ....

do{}while で囲むのは定石。カッコ付きで呼び出されたりしたときなどの対策。

#define RAND_BYTES  1
#define THIS_BYTE  0

#define  WRITE_PASS(mode, byte) do {          \
  off_t len;              \
  size_t wlen, i;              \
  char buf[8 * 1024];            \
                  \
  // ファイル先頭へ移動。fd は rm_overwrite() 冒頭で open() されたファイルディスクリプタ
  if (fsync(fd) || lseek(fd, (off_t)0, SEEK_SET))      \
    goto err;            \
                  \
  // 0x00 を書くときは buf (1024*8バイト) を 0x00 で埋める。
  // ランダム値を設定するときは↓で設定するので、ここではようするにデフォルト値を設定してる
  if (mode == THIS_BYTE)            \
    memset(buf, byte, sizeof(buf));        \

  // ファイルサイズぶんを 8 * 1024 ずつ処理していく
  // ファイル末尾のほうで 8 * 1024 から余ったら余ったぶんだけ書く
  for (len = sbp->st_size; len > 0; len -= wlen) {    \
    // ランダム値を書く場合は
    // 8 * 1024 バイトの buf をランダム値で埋める
    if (mode == RAND_BYTES) {        \
      for (i = 0; i < sizeof(buf);       \
          i+= sizeof(u_int32_t))      \
        *(int *)(buf + i) = arc4random();  \
    }              \
    wlen = len < (off_t)sizeof(buf) ? (size_t)len : sizeof(buf); \
    // write します
    if ((size_t)write(fd, buf, wlen) != wlen)    \
      goto err;          \
  }                \
  sync();    /* another poke at hidden caches */    \
} while (/* CONSTCOND */ 0)

読み込む処理もマクロ。

#define READ_PASS(byte) do {            \
  off_t len;              \
  size_t rlen;              \
  char pattern[8 * 1024];            \
  char buf[8 * 1024];            \
                  \
  if (fsync(fd) || lseek(fd, (off_t)0, SEEK_SET))      \
    goto err;            \
                  \
  // pattern が比較元。埋める
  memset(pattern, byte, sizeof(pattern));        \
  
  // ファイルをすべて読み込む。WRITE_PASS と同じ
  for(len = sbp->st_size; len > 0; len -= rlen) {      \
    rlen = len < (off_t)sizeof(buf) ? (size_t)len : sizeof(buf); \
    if((size_t)read(fd, buf, rlen) != rlen)      \
      goto err;          \

    // 読んだ値 buf と pattern を比較
    if(memcmp(buf, pattern, rlen))        \
      goto err;          \
  }                \
  sync();    /* another poke at hidden caches */    \
} while (/* CONSTCOND */ 0)

つまり WRITE_PASS でファイルにちゃんと書かれているかを確認している。

これらを呼び出す処理。

  /*
   * DSS sanitization matrix "clear" for magnetic disks: 
   * option 'c' "Overwrite all addressable locations with a single 
   * character."
   */
  randint = arc4random();
  randchar = *(char *)&randint;
  WRITE_PASS(THIS_BYTE, randchar);

  /*
   * DSS sanitization matrix "sanitize" for magnetic disks: 
   * option 'd', sub 2 "Overwrite all addressable locations with a
   * character, then its complement.  Verify "complement" character
   * was written successfully to all addressable locations, then
   * overwrite all addressable locations with random characters; or
   * verify third overwrite of random characters."  The rest of the
   * text in d-sub-2 specifies requirements for overwriting spared
   * sectors; we cannot conform to it when erasing only a file, thus
   * we do not conform to the standard.
   */

  /* 1. "a character" */
  WRITE_PASS(THIS_BYTE, 0xff);

  /* 2. "its complement" */
  WRITE_PASS(THIS_BYTE, 0x00);

  /* 3. "Verify 'complement' character" */
  READ_PASS(0x00);

  /* 4. "overwrite all addressable locations with random characters" */

  WRITE_PASS(RAND_BYTES, 0x00);

arc4random() はランダム生成器 arc4random - NetBSD Manual Pages

RC4 でランダム値を生成するよ。

でもちょっとヤバいかもしれず という噂 RC4の脆弱性とSSL/TLSへの攻撃


2014-06-05 :-(

_ 午前

0530 起床

0700 食堂

0830 出勤 && 色空間

_ 午後

1300 色空間

_

1700 残業アワー

2130 退勤

2230 飯


2014-06-06 :-(

_ 午前

0530 起床

0700 食堂

0830 出勤 && デバッグしTARI

_ 午後

1300 デバッグしTARI

_

1700 退勤

1900 読書

2100 飯。金曜日のカレー

横須賀基地 (海上自衛隊) - Wikipedia に入っている あすなろファームのカレーだそうな。

IMG_5069

IMG_5070

IMG_5071

_ NetBSD /bin/sync を読む

ソース src/bin/sync/sync.c

マニュアル sync - NetBSD Manual Pages

shutdown する前に呼び出すようなオマジナイのあれ。

int
main(int argc, char *argv[])
{
  setprogname(argv[0]);
  sync();
  exit(0);
  /* NOTREACHED */
}

sync(2) - NetBSD Manual Pages を呼んで終わり。

_ 艦これ

メンテナンス終了。

「全装備解除」が実装された。これこれ!こういうの欲しかったんだよな!

デイリー開発

Tags: 艦これ

2014-06-07 :-)

_ 午前

0930 起床 && 部屋掃除

1020 おひる。そば

1040 コーヒー

1100 アニメ消化

_ 午後

1300 アニメ消化

_

1700 ちょっと川の様子を見てくる

IMG_5084

2100 飯。炊き込みご飯とメカジキ煮付け

_ 艦これ 5-1 南方海域前面

南方海域進出作戦「練度の高い水上打撃部隊を編成し、南方海域への進出を図れ!」

こんな編成。

愛宕がトドメさして順調に終わりました。

夜戦で潜水艦カットイン食らったときはどうなることかと思ったけど

カスダメだった。

ボス A 勝利 比叡。

Tags: 艦これ

2014-06-08 :-)

_ 午前

0930 起床

1020 おひる。スパゲティ

1100 アニメ消化

IMG_5086

IMG_5087

庭のトマトが成っていた

IMG_5096

_ 午後

1300 アニメ消化

1400 買い物

1500 読書

IMG_5088

_

1700 ぐったり

2130 飯。しょうゆ味で青椒牛肉絲

_ 艦これ 5-2 珊瑚諸島沖

珊瑚諸島沖海戦「MO作戦を実施する。空母機動部隊を展開し、南方海域に出没する敵機動部隊を叩け!」

ボス 4 回撃破でクリアという海域。

史実の戦闘はこれか。珊瑚海海戦 - Wikipedia

珊瑚海海戦(さんごかいかいせん, Battle of the Coral Sea)は、太平洋戦争(大東亜戦争)で大日本帝国海軍(以下日本海軍)と連合国(アメリカ合衆国・オーストラリア)軍のあいだで戦われた主な海戦のひとつ。

1942年5月8日、珊瑚海で日本海軍の空母機動部隊とアメリカ海軍を主力とする連合国軍の空母部隊が激突し、歴史上初めて航空母艦同士が主力として戦った海戦である。また、この海戦は対抗する両艦隊が互いに相手の艦を視界内に入れないで行われた、歴史上最初の海戦である

編成はこんな。正規空母x2 と軽空母。戦艦をテキトーに、先制雷撃のためにハイパーズ。レベル上げたり周回するときは戦艦を重巡にしたりなどもっと低燃費にしないとツラいだろう。春イベント以来 制空権確保が重要になったので烈風をどれだけ積めるかを考えると加賀さんが必須になってしまった。

ルートはこっちだったり

こっちだったり

昼戦で終わることもあれば夜戦にもつれ込むこともしばしば。

先日のメンテナンスで飛龍改二が実装されたけど手元には居なくて、facebook の「FB鎮守府」で飛龍祭りになっており非常に羨ましい思いをしていたんだが、ついに我が鎮守府にも飛龍が来た。

三隈も来た。

霧島 N 人目。

クリア

いままで無課金( 母港 100 人 )だったんだがけど飛龍、三隈を迎えて母港が限界になったのでついに課金してしまった。母港20拡張。

Tags: 艦これ

_ 買い物

amazon

想像してたよりも厚かった。AKIRA 5 巻くらいの厚さ。6 巻ほどではない。

艦隊これくしょん ‐艦これ‐ 艦娘型録
コンプティーク編集部
KADOKAWA/角川書店
¥ 2,916

_ 買い物

iTunes Store

Petit Rabbit's「Daydream café - EP」 ご注文はうさぎですか? OP


2014-06-09 :-(

_ 午前

0530 起床

0700 食堂

0830 出勤 && デバッグしTARI

_ 午後

1300 デバッグしTARI

_

1700 残業アワー

2130 退勤 || 東京アメッシュを見たら東京都がすげえことになってたんだけど外に出てみたら小降りだった

2230 飯。鮭の味噌焼き? 味噌漬けてフライパンでごーんとしただけ

_ ,

汝、いま何時?

_ ,

life is game.


2014-06-10 :-(

_ 午前

0530 起床

0700 食堂

0830 出勤 && 色空間プロ野球

_ 午後

1300 デバッグしTARI

_

1700 残業アワー

2100 退勤

2200 飯


2014-06-11 :-(

_ 午前

0530 起床

0700 食堂

0830 出勤 && デバッグしTARI

_ 午後

1300 デバッグしTARI

_

1700 退勤 && 自社へ異動

1800 打ち合わせ || 2014年度こうしましょう

1930 飯


2014-06-12 :-(

_ 午前

0530 起床

0700 食堂

0830 出勤 && デバッグしTARI

_ 午後

1300 デバッグしTARI

_

1700 残業アワー

2115 退勤

2230 飯。鶏丼


2014-06-13 :-(

_ 午前

0530 起床

0700 食堂

0830 出勤 && デバッグしTARI

_ 午後

1300 デバッグしTARI

1600 移動

_

1800 自社式典

_ 自社式典

ホテルニューオータニ

去年[ 20130607#p05 ]はまったく食料不足だったんだが今年はほどよく有りつけた。

IMG_5101

IMG_5102

IMG_5104

IMG_5105

IMG_5111

_ 月が綺麗ですね

IMG_5118


2014-06-14 :-)

_ 午前

1030 起床 && 部屋掃除

_ 午後

1200 おひる。そば

1300 買い物

1500 ガンダムUC 7巻を見る

_

1800 アニメ消化

2130 飯


2014-06-15 :-)

_ 午前

0930 起床

1020 おひる。スパゲティ

1040 コーヒー

1100 アニメ消化

_ 午後

1200 アニメ消化

1600 渋谷 || 撤退

_

1700 散歩

IMG_5119

1900 scrumがどうのこうの

2200 飯。鮭のムニエル

2240 おやつ。ルタオのジュエリーメロン

IMG_5122

IMG_5123

_ SweepRecord Presents RIDGE RACER NIGHT 2

未遂

会場まで行ったんだが入場規制されていたのでサクっと引き返した。

優先入場整理券の CD 帯は持っていたんだけど最初から行くと疲労がハンパないし翌日に響くので大久保博さんの出番から行くかーと思いゆっくりしていたら Yahoo リアルタイム検索で RRN2 タグを検索したら入場規制されているという post を見かけたんだがひとまず行ってみたところまあたしかに入場規制されていた。

記念撮影だけ

携帯百景(ケイタイヒャッケイ)

細江慎治さんからの reply きた。検討してくれるってよ(ぇ

_ 艦これ

利根を改二にした。

改二実装されたときにすでにレベル70には成っていたんだけど勲章を出し惜しみしていた。ついカッとなって改二にした。

ひたすら近代化改修

Tags: 艦これ

_ 読書するから設けるんじゃなくて設けるスキルがあるひとが読んだだけ

必読!年収1000万円超えのビジネスパーソンが選んだ20冊 - CNET Japan

おおむね読んだけど年収1000万円もありません。

  • 【読】 7つの習慣―成功には原則があった! スティーブン・R.コヴィー
  • マネジメント ピーター・F.ドラッカー
  • 【読】人を動かす デール・カーネギー
  • 【読】ビジョナリー・カンパニー― 時代を超える生存の原則 ジェームズ・C・コリンズ、ジェリー・I.・ポラス
  • 【読】孫子(孫子の兵法) 孫武(『孫子の兵法』著者は守屋洋)
  • 【読】論語 孔子
  • 【読】坂の上の雲 司馬遼太郎
  • コトラー&ケラーのマーケティング・マネジメント フィリップ・コトラー、ケビン・レーン ケラー
  • 【読】ザ・ゴール ― 企業の究極の目的とは何か エリヤフ・ゴールドラット
  • 竜馬がゆく 司馬遼太郎
  • 競争の戦略 マイケル・E・ポーター
  • 【読】プロフェッショナルの条件―いかに成果をあげ、成長するか ピーター・F. ドラッカー
  • 三国志 陳寿
  • 【読】金持ち父さん貧乏父さん ロバート・キヨサキ
  • 考える技術・書く技術―問題解決力を伸ばすピラミッド原則 バーバラ・ミント
  • 聖書
  • 【読】道は開ける デール・カーネギー
  • 【読】もし高校野球の女子マネージャーがドラッカーの『マネジメント』を読んだら 岩崎夏海
  • 企業参謀 大前研一
  • 生き方―人間として一番大切なこと 稲盛和夫
本日のツッコミ(全4件) [ツッコミを入れる]

_ エモエモ [CDポチったけど行きそびれたンゴ|д゚)]

_ みわ [最後のほうは物凄い密集度だったらしい。むしろエモエモどこにおるの]

_ エモエモ [盛岡なんだよなぁ(無理ゲー)]

_ みわ [無理すぎる。。]


2014-06-16 :-(

_ 午前

0530 起床

0700 食堂

0830 出勤 && デバッグしTARI

_ 午後

1300 デバッグしTARI

_

1700 残業アワー

1900 退勤

2130 飯。牛肉の生姜焼き。生姜あうのか


2014-06-17 :-(

_ 午前

0530 起床

0700 食堂

0830 出勤 && デバッグしTARI

_ 午後

1300 デバッグしTARI

_

1700 残業アワー

1800 退勤

1900 scrumがどうのこうの

2100 飯

2200 おやつ。ルタオのドゥーブルフロマージュ

IMG_5124

IMG_5127

_ すくすくスク水

スクラム の原典があるというのでたどり着いたが会員登録しないと全文読めないので会員登録した。

The New New Product Development Game - Harvard Business Review


2014-06-18 :-)

_ 午前

0700 起床 || 今日は休み

0930 外出

1120 北鎌倉

_ 午後

1400 おひる

1500 撤退

_

1700 買い物

1800 読書

2200 飯

_ 鎌倉紀行

アジサイの時期なのでアジサイを見てきた。

一昨年は開成まで行った[ 20120616#p04 ]んだがあそこは周囲が田んぼでありアジサイだけを見るのでいまいち他の楽しみがない。アジサイ寺が存在するくらいなので鎌倉へ行ってきた。

明月院が有名らしい。平日だから人は少ないだろうと思っていたが甘かった。多い。土日だったらどうなっていたことか。

IMG_5129

IMG_5132

IMG_5151

IMG_5159

IMG_5161

ハートっぽい?

IMG_5174

IMG_5173

途中に ラビットハウス うさぎ小屋があった。

IMG_5141

鎌倉駅方面へ移動しておひる @鎌倉峰本

IMG_5184

天丼おいしい

IMG_5185

その後 鶴岡八幡宮へお参り。

IMG_5194

これが倒れてしまった大銀杏( 鶴岡八幡宮 - 大銀杏 )

IMG_5197

お土産を買って帰路についた。


2014-06-19 :-(

_ 午前

0530 起床

0700 食堂

0830 出勤 && デバッグしTARI

_

1700 退勤

1900 マーケティングがどうのこうの

2200 飯。鮭のちゃんちゃん焼き。

_ 艦これ 5-3 サブ島沖海域

第一次サーモン沖海戦「敵泊地に対して水上打撃部隊による夜戦突撃を敢行し、艦隊後方の敵輸送艦を叩け!」

補給路を断つ。

旗艦を 4 回撃破するとクリア。

先日やったけど 2 戦目大破撤退したのでリベンジ。こんな編成で全員に三重キラ付け

到達した。

決戦支援艦隊を出しておいた。

戦艦タ級を大破。沈められないか

昼戦の雷撃戦でトドメ。

旗艦を沈めればいいので夜戦せず。

Tags: 艦これ

2014-06-20 :-(

_ 午前

0530 起床

0700 食堂

0830 出勤 && デバッグしTARI

_ 午後

1300 エラーを考えTARI

_

1700 退勤

1900 マーケティングがどうのこうの

2130 飯。カレーの金曜日

3 パック入っている。

IMG_5199

IMG_5204

_ 情報処理技術者試験 平成26年度 春期 プロジェクトマネージャ試験 成績発表

午前で終了してた。午前 I は免除。( 情報処理技術者試験は 午前 I や II で合格ラインにいってないとそれ以降を受験してもそもそも採点すらされないというシステム )

午前Ⅰ得点***.**点
午前Ⅱ得点56.00点
午後Ⅰ得点---点
午後Ⅱ評価ランク-
本日のツッコミ(全2件) [ツッコミを入れる]

_ エモエモ [厳しいんですね...]

_ みわ [せめて採点してほしいけど手間がハンパないんだろうなあと。プロマネ試験は午後 II は論文を書くので、それを採点する採..]


2014-06-21 :-)

_ 午前

0930 起床 && 部屋掃除

1020 おひる。そば

1040 コーヒー

1100 アニメ消化

_ 午後

1200 アニメ

1400 買い物

1500 読書

_

1700 アニメ消化

1900 リーンスタートアップがどうのこうの

2130 飯。ぶりの塩焼き

_ 艦これ

5-3撃破 2 回目。ダメコン積んでいるとはいえ一度撃沈されるのはいまだに慣れない。

北上さんがレベル 99 になった。

Tags: 艦これ

2014-06-22 :-)

_ 午前

0930 起床

1010 おひる。スパゲティ

1020 コーヒー

1100 アニメ消化

_ 午後

1200 読書

1300 リーンスタートアップがどうのこうの

1500 散歩

桜の木のもとにアジサイが咲いていた。

IMG_5213

_

1700 読書

2130 飯。鶏の唐揚げ

本日のツッコミ(全2件) [ツッコミを入れる]

_ よしみつ [鳥の唐揚げ!←カラアゲニスト]

_ みわ [見た目はいまいちだけど、昔 母親が作ってくれた唐揚げのような味だった。]


2014-06-23 :-(

_ 午前

0530 起床

0700 食堂

0830 出勤 && デバッグしTARI

_ 午後

1300 エラーを考えTARI

_

1700 退勤 && 移動

1800 自社業務@大田区民プラザ || スクラムがどうのこうのとか Running Lean がどうのこうのとかといったことを後輩たちへ教えるなど || 薄っぺらい知識でスマぬ || いやどうなん Running Lean というかリーンスタートアップって話題に見なくなったけど、話題にならないくらい当たり前のものとして浸透しているから今更話題にならないのか、リーンスタートアップはオワコンだからすでに話題になっていないのか

2130 飯。鮭のムニエル

_ 富野由悠季が監督やるガンダムの主人公は若手声優が演じる

という仮説を昔から考えてるんだけど今更調べてみた。

ただしソースは wikipedia

作品テレビ放映(年)主人公声優活動開始(年)
機動戦士ガンダム1979アムロ・レイ古谷徹1966
機動戦士Ζガンダム1985カミーユ・ビダン飛田展男1982年
機動戦士ガンダムΖΖ1986ジュドー・アーシタ矢尾一樹1985
機動戦士ガンダムF911991シーブック・アノー辻谷耕史1985
機動戦士Vガンダム1993ウッソ・エヴィン阪口大助1992
∀ガンダム1999ロラン・セアック朴璐美1998
ガンダム Gのレコンギスタ2014ベルリ・ゼナム石井マーク????

「活動開始」はその声優が声優としての活動を始めた時期らしい。

古谷徹は 10 年目のときにアムロ・レイやったけど、それ以外の方々は若手といっていい。かなあどうかなあ。

辻谷耕史は 1989年「0080ポケットの中の戦争」が初レギュラーだそうな。石井マークは wikipedia に載ってない。事務所のページを見たけど詳細が分からん。


2014-06-24 :-(

_ 午前

0530 起床

0700 食堂

0830 出勤 && 調査したような

_ 午後

1300 調査したような

_

1700 退勤 && 移動

1800 打ち合わせ@自社 && 「許可を求めるな謝罪せよ」というような方向性を確認した次第 (ref. 許可を求めるな謝罪せよ。(Don't ask for permission, beg for forgiveness ) - 未来のいつか/hyoshiokの日記 )

1920 退勤

2130 飯

本日のツッコミ(全2件) [ツッコミを入れる]

_ かっちゃん [賛成です。やりたいことに対して上にひとりでも保身的な上司がいると何も進まない!勝手にやって謝るパターンが正解だと私も..]

_ みわ [失敗したところで死ぬわけでもありませんゆえ。いや世間には失敗 即 死 という仕事はたくさんありますがー]


2014-06-25 :-(

_ 午前

0530 起床

0700 食堂

0830 出勤 && 射撃しつつ前転

_ 午後

1300 射撃しつつ前転

_

1700 退勤

1800 ぐったり

1900 コード読んだり

2130 飯。ブリの照り焼き

_ NetBSD /bin/sleep を読む

ソース src\bin\sleep

マニュアル sleep - NetBSD Manual Pages

     Note: The NetBSD sleep command will accept and honor a non-integer number
     of specified seconds.  This is a non-portable extension, and its use will
     nearly guarantee that a shell script will not execute properly on another
     system.

NetBSD では小数点にも対応してるけど互換性が無いので非推奨。

コード読む

処理は main() のみ。

冒頭のコメントも含めて

  昔の sleep との互換性のために小数点をチェックしてる。
  最近はでかい数値であっても問題ないはずだけどねー
  1000000000.9 とかいう数値を渡してきても知らんよ :-)
  atof は locale の影響を受けるので isdigit してます。

  /*
   * Okay, why not just use atof for everything? Why bother
   * checking if there is a fraction in use? Because the old
   * sleep handled the full range of integers, that's why, and a
   * double can't handle a large long. This is fairly useless
   * given how large a number a double can hold on most
   * machines, but now we won't ever have trouble. If you want
   * 1000000000.9 seconds of sleep, well, that's your
   * problem. Why use an isdigit() check instead of checking for
   * a period? Because doing it this way means locales will be
   * handled transparently by the atof code.
   */

  fracflag = 0;
  arg = *argv;
  for (temp = arg; *temp != '\0'; temp++)
    if (!isdigit((unsigned char)*temp))
      fracflag++;

  if (fracflag) {
    val = atof(arg);
    if (val <= 0)
      usage();
    ival = floor(val);
    fval = (1000000000 * (val-ival));
    ntime.tv_sec = ival;
    ntime.tv_nsec = fval;
  }
  else {
    ntime.tv_sec = atol(arg);
    if (ntime.tv_sec <= 0)
      return EXIT_SUCCESS;
    ntime.tv_nsec = 0;
  }

国ごとに小数点が異なるので( 小数点 - Wikipedia ) atof は locale に影響されるという。

あとは nanosleep で寝るだけ nanosleep(2) - NetBSD Manual Pages

  original = ntime.tv_sec;
  signal(SIGINFO, report_request);
  while ((rv = nanosleep(&ntime, &ntime)) != 0) {

tv_nsec について

timespec 構造体の tv_nsec はナノ秒である timespec(3) - NetBSD Manual Pages

ナノ秒は 1/100万秒( 0.000000001秒 )である。

コメントに書かれている 1000000000.9 を指定するとようするに tv_nsec はオーバーフローする。

おためしコード。

  char *arg = "1000000000.9";
  val = atof(arg);
  ival = floor(val);
  fval = (1000000000 * (val-ival));

値は以下のとおり

val=1000000000.900000
ival=1000000000.000000
fval=899999976.158142

10.9 を指定すると

 char *arg = "10.9";

こうなる

val=10.900000
ival=10.000000
fval=900000000.000000

とはいえ tv_nsec (ナノ秒) がオーバーフローしたところで、ナノ秒のスケールでの誤差が果てして問題になるのか、OS の tick がナノ秒に対応しているのか( 対応してないだろ )、そもそもナノ秒の sleep が NetBSD だけの実装なのでそれが問題になるのか。などなど

_ 艦これ

今日の 5-3

出撃したが 2 戦目で大破撤退。

3-2-1 でひたすらレベル上げして明石さんを改造した。

Tags: 艦これ

2014-06-26 :-(

_ 午前

0530 起床

0700 食堂

0830 出勤 && 射撃しつつ前転

_ 午後

1300 射撃しつつ前転

_

1700 退勤

1705 自社業務

1730 退勤

1900 pgm がどうのこうの

2130 飯。牛丼

_ 歩き回らない経営らしきもの

Management by wandering around - Wikipedia, the free encyclopedia

Yahoo の「爆速経営」を読んでそのなかの経営陣のうちの誰だったか配下のメンバーの様子を把握するために強制的に(システムとして)毎週メンバーと会話する席を作り自分の意識とメンバーの意識を合わせていった雑談でもなんでもいいからやった等と書いてあったので私も真似て始めてみた。

「歩き回る経営」というのがある。プロジェクトリーダーがプロジェクトメンバーのもとへ行き「どうよ」等と話しかけメンバーに変わったところがないかなどを洞察し状況を把握するための手法である。最初に目にしたのはたしか「アート・オブ・プロジェクトマネジメント」だったと思うんだが、もとを辿ると hp のヒューレットだったかパッカードだったかどちらかがやっていたことらしい。

去年 10 月からいまの仕事場へ勤務しはじめてメンバーの様子を把握するために「歩き回る経営」をやってみようと考えていたんだがどうにもちょいとメンバーとの場所が離れているしそもそも業務で関わりがあるわけではないし若干訪問しづらくて要するに億劫になっていてあまり「歩き回る経営」が出来なかった。根性でやろうと思っていたが根性では出来ないのでメンバーと強制的に会話する仕組みを作ることにした。作った。といってもだいたい毎週 15 分くらい駄弁るだけではある。ひとまず 2, 3 ヶ月やってみる。

以前の派遣先では昼休みに上司とひたすら駄弁っていた。どうやってカネを儲けるか、派遣に来ている我々の役割りはなにか、何が出来るのか、といったことを議論したりしていた。とはいえ会話のほとんどは通勤時間の南武線は JK も見かけず目がツラいとか、横浜にある県庁のレストランが安いとか、リッジレーサーがどうのこうのとか、8 割くらいはそういうどうでもいい会話だった。それでもその時間を過ごしたことにより仕事について上司と方向性を確認したり、私自身仕事のやり方がまったくダメだったことを教え込まれたし、有意義ではあった。

その経験をいまのメンバーたちにも実践してやりたいんである。なにも「亀の甲より年の功」と云うつもりはなくて、お互いに刺激しあえればよいと思っている。私かて立派な人間だとは思っておらんゆえ。

爆速経営 新生ヤフーの500日
蛯谷 敏
日経BP社
¥ 1,620

アート・オブ・プロジェクトマネジメント ―マイクロソフトで培われた実践手法 (THEORY/IN/PRACTICE)
Scott Berkun/村上 雅章
オライリー・ジャパン
¥ 3,360


2014-06-27 :-(

_ 午前

0530 起床

0700 食堂

0830 出勤 && 射撃しつつ前転

_ 午後

1300 射撃しつつ前転

_

1700 退勤

1800 渋谷

_

前の会社のひとたちと

4 人集まってそのうち 2 人は前の会社を辞めた人間である(オレ含む)

店の名前は確認しなかったんだが悪くない。若干しょっぱいけど

001.JPG

002.JPG

003.JPG

004.JPG

005.JPG

006.JPG

007.JPG

008.JPG

009.JPG

010.JPG

本日のツッコミ(全4件) [ツッコミを入れる]

_ エモエモ [痛風かな?]

_ みわ [痛風とは]

_ エモエモ [塩分取りすぎると...(´・ω・`)]

_ みわ [あかんね]


2014-06-28 :-)

_ 午前

1030 起床 && 部屋掃除

1130 おひる。そうめん

_ 午後

1200 アニメ消化

1300 宿手配

1330 散髪など

1500 アニメ消化

_

1700 買い物

1800 コーヒーを飲むなど

1900 pgmがどうのこうの

2130 飯

_ 艦これ

5-3 撃破 3 回目

筑摩には負けん砲 が炸裂

Tags: 艦これ

_ サンスポ特別版「ガールズ&パンツァー新聞」

サンスポ特別版「ガールズ&パンツァー新聞」明日発売!ねんどろ沙織予約受付開始! ガールズ&パンツァー公式ブログ/ウェブリブログ

コンビニで買えるらしいので手当たり次第に寄ったところサークルKサンクスにあったので買った。

IMG_5220

IMG_5221

_ PGM を読む

ファイルの中身はこんな。世界一有名な女性なのではないかと レナ (画像データ) - Wikipedia

p00.PNG

とりあえず読むだけ

ruby

# conding: utf-8

class PGM
  :ST_MAGICK
  :ST_SIZE
  :ST_GRAY
  :ST_DATA

  def initialize()
    @stat = :ST_MAGICK
  end
  
  def read( filepath )
    magick = ""
    width = 0
    length = 0
    gray = 0
    data = nil
    
    filesize = File::stat( filepath ).size
    pgm = File.open( filepath ).read( filesize )
    pgm.each_line {|line|
      case @stat
      when :ST_MAGICK
        next if line =~ /^#/
        magick = line
        @stat = :ST_SIZE
      when :ST_SIZE
        next if line =~ /^#/
        sp = line.split()
        width = sp[ 0 ].to_i
        length = sp[ 1 ].to_i
        @stat = :ST_GRAY
      when :ST_GRAY
        next if line =~ /^#/
        gray = line.to_i
        @stat = :ST_DATA
      when :ST_DATA
        data = line.unpack("C*")
      end
    }
    
    puts "magick: #{magick}"
    puts "width: #{width}"
    puts "length: #{length}"
    puts "gray: #{gray}"
#    puts "data: #{data}"
  end
end

def main(argv)
  pgm = PGM.new()
  pgm.read(argv[0])
end

main(ARGV)

参考: PGM ‐ 通信用語の基礎知識

Tags: PGM

2014-06-29 :-)

_ 午前

0930 起床

1020 おひる。焼きそば

1040 コーヒー

1100 知的財産がどうのこうの 知的財産 - FreeStyleWiki

IMG_5223

IMG_5226

_ 午後

1300 アニメ消化

1400 散歩

1600 アニメ消化

すっかり夏だのう

IMG_5229

_

1700 ぐったり

2130 飯。チンジャオロース

_ NetBSD /bin/sync を読む

ソース src/bin/sync/sync.c

マニュアル sync - NetBSD Manual Pages

sync(2) - NetBSD Manual Pages を呼ぶだけ

int
main(int argc, char *argv[])
{
  setprogname(argv[0]);
  sync();
  exit(0);
  /* NOTREACHED */
}

_

どこぞ

宇宙遊泳は描くのに何時間かかりました?

結構放置したものをちまちま書いていたような気がするので2,3日以上はかかってるんじゃないですかね
最近頭痛がひどくて作業できていないことも多いのですが、1日10時間以上は書いてるんじゃないですかね

ざっくりと

時給 1500 円として、法定内勤務 8 時間 + 法定外勤務(残業) 2 時間で、これを 3 日間おこなった場合

> ((1500 * 8) + ((1500 * 1.5) * 2)) * 3
=> 49500.0

ふむ

「宇宙遊泳」はこれ

宇宙遊泳 by しらび on pixiv

_ 艦これ

今日の 5-3

1 戦目 大破撤退。重巡 2 隻からのカットインを食らった。

Tags: 艦これ

_ ドコモ データ通信使用制限に達しそう

tumblr か


2014-06-30 :-(

_ 午前

0530 起床

0710 食堂

0830 出勤 && デバッグしTARI

_ 午後

1300 デバッグしTARI

_

1700 残業アワー

2145 退勤

2230 飯