トップ 追記

ヨタの日々


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|

2015-08-30 :-)

_ やったこと

1000 起床 && 部屋掃除

1200 おひる。そうめん

1215 NHK のど自慢を眺めるなど

1300 読書などしていた

2100 飯

_ libevent で cdbiff (動作未確認)

手元の VMWare には /var/mail/$HOME もないし CD-ROM ドライブもないので。

The libevent API provides a mechanism to execute a callback function when a specific event occurs on a file descriptor or after a timeout has been reached. Furthermore, libevent also support callbacks due to signals or regular timeouts.
Currently, libevent supports /dev/poll, kqueue(2), event ports, POSIX select(2), Windows select(), poll(2), and epoll(4). The internal event mechanism is completely independent of the exposed event API, and a simple update of libevent can provide new functionality without having to redesign the applications.

非同期 API を提供するよ、システムの /dev/poll とか kqueue とか隠蔽するのでユーザーは実装を気にしなくていいよ、移植性が高くなるよ、とのこと。

環境

% uname -rsm
NetBSD 7.99.21 i386

コードだけ

man 3 event_init より

The additional flag EV_PERSIST makes an
    event_add() persistent until event_del() has been called.

EV_PERSIST を指定するといちいち event_add しなおさなくていいそうだ。

#include <sys/time.h>
#include <event.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <string.h>

void handler( int fd, short event, void* arg )
{
  puts( __FUNCTION__ );
  system( "eject cd" );
}

int main( int ac, char** av )
{
  int fd;
  struct event ev;
  char* user = getenv( "USER" );
  char filename[ FILENAME_MAX ];

  snprintf( filename, strlen( filename ), "%s/%s", "/var/mail/", user );
  
  fd = open( filename, O_RDONLY );
  if( fd < 0 )
  {
    err( EXIT_FAILURE, "open fail: %s", filename );
    exit( EXIT_FAILURE );
  }
  
  event_init();
  event_set( &ev, fd, EV_READ | EV_PERSIST, handler, NULL );
  event_add( &ev, NULL );
  event_dispatch();
  return 0;
}

参考


2015-08-29 :-)

_ やったこと

0900 起床

0930 寝る

1200 おひる。カップラーメン

1300 ルーターセットアップ

1330 寝る

1700 筋トレ

2100 飯

_ ルーターを買い替えた

結局買ってきたルーターに交換した。

これまで使っていた RT56v は月曜日に死んだ。月曜日以来電源を引っこ抜いていて今日久しぶりに電源を入れてみたら起動した。おい。もしかして熱でやられたのか。とはいえ RT56v はとっくの昔にYAMAHAのサポートが終了しているし、近年は電源が入らなくなるなど挙動が怪しくなっていたのでルーターを交換することにした。

ヨドバシカメラへ行ってテキトーに 5000, 6000 円のやつを買えばよかろうと買ってきたのが月曜日。それ以来セットアップする気力もなくだらだら過ごしようやく今日セットアップした。といっても電源入れて http://192.168.0.1/ にアクセスして ISP へ接続するだけだ。以前とは異なり外から内への設定なんぞもう必要ないので楽なものだ。

こうして自宅内のリソースはジョジョに外部へ出されていく。

I-O DATA 100BASE-TX/10BASE-T対応 有線ルーター 省電力モデル ETX2-RA

アイ・オー・データ
¥ 3,608


2015-08-28 :-(

_ やったこと

0530 起床

0710 食堂

0800 労働

1615 退勤

1700 寝る

2100 飯