Zimbraを利用していると定期的にCPUが利用されるという問題。
とりあえず今watch中。
結局のところzmmtaconfigが定期的にjavaをフックしてconfigを取得するというのが胆。こいつがCPUを食っているように見させる、と。
定期的にフックする時間を決めているのがzmmttaconfig_interval。
何も設定していない場合にはデフォルトで60秒。(この辺は利用しているバージョンによっていろいろ異なる。現在確かめてみているのは5.0.10)
今日あたりRC1がでてくる予定だったはずだけどまだでてないですねぇ。まぁ大抵遅れるわけですが。
家族を大事にする一年にしようと思った。とかいいながら明日は会社にいかねばならない。自分のこのだめさ加減がうらめしい。
会社は自分が思っているより相当社員のことなど考えていないという事をしっかり認識しないと。
会社の人からの頼みごとに対していや~な感じで受け答えしてしまう。よくないよくない。
しかしなんでこんなに調子悪くなったんだろう。明日はまじめに医者にいく事にしよう。
調子悪すぎてさっぱり仕事がすすまな~いですよ。
偉くなってやると思う今日この頃
阿鼻叫喚な声が聞こえてくる今日この頃、皆様いかがお過ごしでしょうか?
今年からがっくり減った某補助金をこの時期に活用してしまったせいで緻密に計算していたはずが微妙に峠超えして年金保険料等々の保険料全般のランクがあがるはめに。
すでに上昇した住民税とともにがっつりきいてきて働けど働けど的な話になるのがせつないよね。
半ば覚悟を決めていただけに心にぽっかり穴があいた感じではある。一方でこのままいくと自分に対する負荷が多くなるのは目に見えていたわけなので気持ち的に楽になったという分もある。結局よくわからないもやもや感だけが残っている。
ただ、今後仕事をとってこいオーラが強まることは確かなのでそれを見据えた動きをしないとね。とりあえず自分の撤退作戦を練って首尾よく遂行しつつ未来に向けてがんばらねば。
今後はこういうプロセスが現場には伝わらず上のレイヤでだけもやもや動くというような仕事にはあまりかかわらないようにしたいものです。
人生前向きに生きないとね。
あやしい雰囲気が漂い始める。とりあえず戦う準備だけはしておこう。
転職するんだったら異業種の方が楽しそうだなぁ。学ぶことがたくさんある方が楽しいだろうし。
Zimbraでアドレス帳からフルネームを取り出す際に利用されるメソッドですが、こいつがfirst,middle,lastの順番で連結する仕様となっているため、欧米文化と違う我々としては違和感のある文字が返される。
という事でBugzillaに投稿したいわけですがなんかBugの検索がうまく動いていないのでバグ報告できないわけです。
evloop = rb_thread_create(watchdog_evloop_launcher, (void*)&check_rootwidget);ここで呼ばれるwatchdog_evloop_launcher(1837行目)は以下の通り
return lib_eventloop_launcher(RTEST(check_rootwidget, 0, (int*)NULL, (Tcl_Interp*)NULL);2018行目
th = rb_thread_create(_thread_call_proc, (void*)q);そして_thread_call_proc関数(1982行目)は以下のようになる
return rb_ensure(_thread_call_proc_core, (VALUE)q,
_thread_call_proc_ensure, (VALUE)q);
この中で、_thread_call_proc_core関数ないでrb_funcallを呼び出している
return rb_funcall(q->proc, ID_call, 0);
うむ。途中でなんとなく気がついていたけど、本当につまらない映画だった。純粋に馬鹿ラクロス映画にしてくれればよかったのに。
Thunderbird経由でやってくるRFC2231形式の添付ファイルの処理がおかしい。
外部IMAPフォルダの作成時の挙動は正しくなった。
一長一短な感じですなぁ。MIMEまわりの挙動は期待していたわけですが(実際にしばらく前までは直っていたのに)なんでこんなことになっているのだろう。
新規採用抑制だとかそういうのは話が違うと思うんだけどなぁ。逆にいえばチャンスだと思うんだけどねぇ。
なっている模様。これで今までみたいにがりがり余計なコードを書かなくてすむことを期待。
とはいえ、今まで書いてきたこういう機能を無理やり実装したコードは無駄になるんだろうなぁ。まぁでもこの機能が利用できるのは当分先の話であるに違いない。
#include <fcntl.h>
#include <sys/stat.h>
#include <mqueue.h>
#include <errno.h>
#include <pthread.h>
#include <stdio.h>
#include <getopt.h>
#define MES "hogehoge"
static int _write_thread_flag = 0;
static void *
_write_thread(void *arg)
{
mqd_t r;
mqd_t t = *((mqd_t *)arg);
int write_count = 0, err_count = 0;
while(1) {
r = mq_send(t, MES , sizeof(MES) , 0);
if (r == (mqd_t)-1) {
++err_count;
}
if (_write_thread_flag) break;
++write_count;
}
printf("%d %d %lu\n", write_count, err_count, pthread_self());
return NULL;
}
static int
_calc_value(const char *num, int default_val)
{
char *endptr = 0;
long val = strtol(num, &endptr, 10);
if (*endptr != 0) {
return default_val;
}
return val;
}
static void
_parse_option(int argc, char **argv, int *thread, int *time)
{
int c;
int index;
struct option opt[] = {
{"thread", 1, 0, 0},
{"time", 1, 0, 1},
{0,0,0,0}
};
while(1) {
c = getopt_long(argc, argv, "", opt, &index);
if (c == -1) break;
switch(c) {
case 0:
if (thread) *thread = _calc_value(optarg,1);
break;
case 1:
if (time) *time = _calc_value(optarg, 60);
break;
default:
break;
}
}
}
int
main(int argc, char **argv)
{
mqd_t q;
int i;
pthread_t thread;
int time = 60, num_thread = 1;
_parse_option(argc, argv, &num_thread, &time);
q = mq_open("/hoge", O_WRONLY | O_CREAT , 0600, 0);
if (q == (mqd_t)-1) {
printf("hoge %s\n", strerror(errno));
return -1;
}
printf("%d %d\n", num_thread, time);
for (i = 0; i < num_thread; ++i) {
pthread_create(&thread, NULL, &_write_thread, &q);
}
sleep(time);
_write_thread_flag = 1;
sleep(5);
return 0;
}
そうなのかぁ。
その言葉さえいっておけば達成されるのであればずーっといってるだけでいいから楽だよねぇ。具体的な施策はなくてもよさそうな感じだし。
でてますね。5.0.13はマイナーなバグフィックスだったため、変更点はあまりありませんでしたが、今回はどうでしょう?
というか3月11日リリースだってばよ、おそー。
なぜか無駄紙を必死に印刷しなければならない事態に陥る。むぅ。電子申請可能にしてくれればいいのに。
(oo)/ chiyotsu [濃厚接触者とスプレッドされるに違いない]
(oo)/ famao [まじやばいす!]