2021/05/03(月)munin + nginx で拡大操作画面のグラフが表示されないときのデバッグ技法

大体の設定方法は https://cod-sushi.com/munin-nginx-graph/ に書かれているので、この記事ではデバッグの仕方を中心にメモします。

ちなみに上記URLの spawn-fcgi-munin-graph では以下が省略されているので wget https://files.julienschmidt.com/public/cfg/munin/spawn-fcgi-munin-graph してからNAMEとか www-data を必要に応じて書き換えるのが無難だと思います。

#! /bin/sh

### BEGIN INIT INFO
# Provides:          spawn-fcgi-munin-graph
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Description:       starts FastCGI for Munin-Graph
### END INIT INFO
# --------------------------------------------------------------
# Munin-CGI-Graph Spawn-FCGI Startscript by Julien Schmidt
# eMail: munin-trac at julienschmidt.com
# www:   http://www.julienschmidt.com
# --------------------------------------------------------------
# Install: 
#   1. Copy this file to /etc/init.d
#   2. Edit the variables below
#   3. run "update-rc.d spawn-fcgi-munin-graph defaults"
# --------------------------------------------------------------
# Special thanks for their help to:
#   Frantisek Princ
#   Jérôme Warnier
# --------------------------------------------------------------
# Last Update: 14. February 2013
#
# Please change the following variables:

自分の場合はそれでもなお動かなかったので、何時間もデバッグしてようやく動いたという具合です。

拡大操作画面だけグラフが表示されない場合は

/var/log/munin/munin-cgi-graph.log

(パスはOSによって多少異なると思われる)にログが出ているはずです。

自分の環境のログには

[WARNING] Request for graph without specifying domain. Bailing out.

というのが出ていてこれが犯人でした。(ERRORじゃなくてWARNINGだったのでこれが真犯人だと気づくのにもかなり時間がかかりました)

/usr/lib/munin/cgi/munin-cgi-graph

(パスはOSによって多少異なると思われる)からログが出力されていて、このスクリプトを開くと

logger_debug() if defined($ENV{CGI_DEBUG});

というのがあります。この直下に logger_debug(); を挿入してやると munin-cgi-graph のログにデバッグログが追加されてデバッグが簡単になります。

自分の環境の場合、

Request path is /munin-cgi/munin-cgi-graph

というデバッグログが出ていて、どうやら /munin-cgi/munin-cgi-graphmunin-cgi-graph 以降のパスが切れているのが拡大操作画面のグラフが表示されない原因だと気づきました。

実際の画像のパスは

munin-cgi/munin-cgi-graph/localdomain/localhost.localdomain/xxx=nnn,mmm.png?&lower_limit=&upper_limit=&size_x=800&size_y=400

という感じです。

なぜ切れたかに関しては、 include fastcgi_paramsfastcgi_params の設定ファイルを少々書き換えていて

fastcgi_split_path_info ^(/munin-cgi/munin-cgi-graph)(.*);
fastcgi_param PATH_INFO $fastcgi_path_info;

で指定した PATH_INFOinclude fastcgi_params が上書きしたためでした。 include fastcgi_params の行をこれらの PATH_INFO の前に移動して後から

fastcgi_split_path_info ^(/munin-cgi/munin-cgi-graph)(.*);
fastcgi_param PATH_INFO $fastcgi_path_info;

PATH_INFO を上書きさせることで正常に拡大操作画面のグラフが表示されるようになりました。

2021/04/11(日)高尾山 稲荷山コース 踏破

2021年4月10日、高尾山の稲荷山コースを踏破しました。妻とペットの犬(妻が婚前から飼っていた)とで登山しました。

  1. 始発の次の電車で千駄ヶ谷駅を出発
  2. 新宿駅着
  3. 北野駅着
  4. 高尾山口駅着

で登山開始。

どれだけ混むのかが気がかりでしたが、始発の次で行ったのと稲荷山コースを選択したかいあってか、下山者とのすれ違い、追い越し・追い越されがそこそこありましたが、後ろを振り返ると誰もいないタイミングもありという程度で、許容範囲内の混み合いでした。

天候は快晴で見晴らしも良好でした。

IMG_4895.jpg

山頂で山菜そばを食べました。具はまあまあでしたがスープがやや辛かったです。山頂の気温はじっとしていると冬の格好でもやや寒いくらいでした。

帰りは6号路で少々歩いた後、妻の要望でリフトで下山しました。下っても下っても果てしなく感じられた富士山と比較するとヌルゲーですね。

装備は

  • トレッキングシューズ
  • リュック
  • ウィンドゥブレーカー
  • 水筒
  • タオル
  • 折りたたみ傘
  • 帽子
  • 手袋
  • ゴミ袋
  • トイレットペーパー
  • サングラス
  • ティッシュ

で行きました。道幅が狭いし片手が塞がるしで傘は雨が降っても使えなかっただろうという具合。絆創膏とレインウェアは持っていったほうが良かった。手袋は寒くて持っていって正解でしたが、意外と汚れるので軍手のほうが良かった。手をつきたいケースがまれにあったので、寒くなくても軍手があると良さげでした。靴下はテニス用の分厚いくるぶし丈のを履いていきました。分厚さは良かったのですが、 丈が短くて足首上部が靴擦れして一番後悔した 結果となりました。(次回は丈が長い靴下を履くように強調表示)

靴擦れは痛かったですが、空気はおいしいし良い気分転換になりました。

2021/02/22(月)【アフィリエイト】会場での確定申告を効率化させる私的メモ【副業】【雑所得】【ふるさと納税】【株式譲渡損失の繰越控除】【NOT青色】

必要なもの

マストアイテム

  • 去年分の源泉徴収票
  • 去年分の確定申告書類(必須とはいえないがあるとスタッフが助かるようだ,利用者識別番号が書いている重要書類は必須)
  • 利用者識別番号と対になる暗証番号
  • マイナンバーカード(その場で提示するならコピーは不要)
  • 収入と経費が分かるもの(領収書ほどカッチリしていなくても支払い完了メールをコピーしたものでも問題なし)
  • ふるさと納税の通知書的なやつ
  • 株式の年間取引報告書(複数の証券口座を持っているのですが損失が出ている口座の分だけでOKでした)

あればベター

  • 十分な現金(確定申告書類提出後に税金を払いに行く場合)
  • 飲み物
  • 暇つぶしグッズ
  • クリアファイル(収入が分かる書類と経費が分かる書類で分離していたほうが楽)
  • 収入の合計と経費の合計のメモ(←を入力する所があって、これを簡単に示すために収入と経費が分かるものが必要という具合。会場にある電卓を使って現地で計算もできるが自宅で計算していったほうが時短。自宅だと集中できないとかだと現地で計算してもいいかもしれない)

いらなかったもの

  • はんこ(国税庁のHPでは必要と書かれているが…)

経費にしたもの

  • サーバ代
  • ドメイン代
  • 書籍代(収入を得るための役に立ったもの)

税金の納付方法

コンビニ決済が手数料がかからないので良いかな。納税額が高い場合はコンビニ決済が使えない(?)

所要時間

行列を待ったり質問攻めしたりして2,3時間くらい

2019/06/05(水)【雨量観測】XRAINのスクリーンショットを会社Slackに投稿するPerlスクリプト

天気情報が流れるチャンネルが会社のSlackにあるのですが、XRAINのスクリーンショットも流れてきてほしくなったので作りました。

ちなみに大学生の頃は大学院の研究室訪問や大学院試験の費用を稼ぐために気象会社でアルバイトしていました。

SlackのtokenとチャンネルIDの取得情報はググってください。

$logo は会社のロゴと矢印が描かれた画像で、矢印の先にオフィスがあるという具合になっています。適当な画像を用意して置き換えてください。

CPANモジュール以外は何か特別にインストール必要なものはありませんでした。

#!/usr/bin/evn perl

use strict;
use warnings;
use utf8;
use Log::Log4perl qw(:easy);
use WWW::Mechanize::Chrome;
use File::Spec;
use File::Basename 'dirname';
use HTTP::Request::Common qw//;
use Encode;
use Furl qw//;
use JSON;
use Imager;
use DDP;

# TODO:
#  * 会社付近の色を取得して雨が降っているか判定

my $dirname = File::Spec->rel2abs(dirname($0));
my $rain_url = 'http://www.river.go.jp/x/krd0207010.php?lon=139.50406730175018&lat=35.674031853779084&opa=0.4&zoom=8&leg=0&intvl=5&ext=0';
my $fn= $dirname . "/xrain.png";
my $logo = $dirname . '/logo_and_arrow.png';

Log::Log4perl->easy_init($ERROR);
my $mech = WWW::Mechanize::Chrome->new(headless => 1);
$mech->viewport_size({ width => 760, height => 780 });
$mech->get($rain_url);
my $png = $mech->content_as_png;

open(my $fh, '>', $fn) or die $!;
binmode($fh);
print {$fh} $png;
close $fh;

my $img = Imager->new;
$img->read(file => $fn) or die $img->errstr;

$img->rubthrough(
  src  => do {
    my $tmp = Imager->new;
    $tmp->read(file => $logo) or die $tmp->errstr;
    $tmp;
  },
  tx => 460,
  ty => 527,
);

$img->rubthrough(
  src  => do {
    my $tmp = Imager->new;
    $tmp->read(file => $logo) or die $tmp->errstr;
    $tmp;
  },
  tx => 1203,
  ty => 527,
);

$img->rubthrough(
  src  => do {
  my $tmp = Imager->new;
    $tmp->read(file => $logo) or die $tmp->errstr;
    $tmp;
  },
  tx => 460,
  ty => 1170,
);
$img->rubthrough(
  src  => do {
    my $tmp = Imager->new;
    $tmp->read(file => $logo) or die $tmp->errstr;
    $tmp;
  },
  tx => 1203,
  ty => 1170,
);

$img->write(file => $fn) or die $img->errstr;

my $req = HTTP::Request::Common::POST('https://slack.com/api/files.upload',
  Content_Type => 'multipart/form-data',
  Content => [
    token    => 'xxxx',
    channels => 'xxxx',
    file     => [$fn],
    title    => Encode::encode_utf8('XRAIN自動投稿'),
    initial_comment => $rain_url,
  ]
);

my $res = Furl->new->request($req);
my $json = Encode::decode_json($res->content);

#p $json;

うまくいけば↓のように投稿されます。cronで定期実行させています。

スクリーンショット_2019-06-05_21_19_07.png

2019/04/29(月)人生2回目の硬式テニスのシングルス区民大会出場!

2017年9月11日にテニスを始めて1年7ヶ月と少しになりました。

テニススクールでテニスを始めて半年ほど通った後は、会社でテニスサークルを立ち上げ、テニススクールと会社テニスの週2の練習(たまに社外のテニスサークルにも参加しつつ)を確保し続けてきました。会社のテニスサークルは、主要メンバーは会社サークルで始めたメンバーで、まだまだ経験不足の私が適宜アドバイスしつつやっています。(たまにアドバイスをもらうこともありますが。)

テニス技術の向上だけを考えるのであれば、自分より強いメンバーしかいない社外のテニスサークルをメインにしてやるべきであることは分かっています。本心でも実はそうしたいと思っています。しかし、社員をテニスにハマらせた自分が今から抜けるのはさすがに無責任であろうし、会社の唯一の運動部として私の役割は小さくないと思っています。また、毎週テニスコートを確保して、社員に運動の機会・スポーツを通じて部署を越えた交流の機会を提供することも私が会社に対して発揮できる価値の一つなんだろうとも思えてきています。そのため、テニスの技術向上を最優先させずに会社のメンバーとテニスするのはトータルでみると悪くはない選択であると考えています。 (少なくとも現状においては。)

さて、本日は人生2回目の区民大会シングルス出場でした。初めての出場の記録は https://pawafuru.com/0410 をご覧ください。

午前9時10分集合で、午前8時53分に到着。会場は午前8時55分が開館時刻だったので、良いタイミングでの到着でした。集合時刻の午前9時10分までは適当にコートでアップさせてもらえました。練習相手はどうすればいいんだろうかと困惑しましたが、自分より年上の方に誘われて良い具合にアップできました。

前回は試合までの待ち時間が長かったのですが今回は第1試合なのですぐ試合でした。対戦相手は自分と同世代くらいの方でした。フィッチでは、なぜかパニクって「回答は何ていうんだっけ」という状態になりました。どうにか「アップ・ダウン」が頭に出てきたので、アップで通じました。(ラフ or スムースのほうが通じやすいかな。)相手がレシーブを選んだので自分からサーブになりました。(練習時間が短くて体が温まっていないとの判断でレシーブを選んだのだろうか。)

1ゲーム目は、序盤の緊張で一度難しくない球を空振ったりしつつ 40-40まで行って、「ゲーム取れるかな」という具合だったのですが、たしかダブルフォルトでブレイクされました。

あとは、ラブゲームはなかったはずですが、サーブと前に出て攻める力の差が大きくてゲームカウント 0-6 で負けました。

スマートウォッチでスコア計測していましたが、ポイント数では 9-24 でした。(スマートウォッチの詳細:https://inside.pixiv.blog/pawa/5744)

写真 2019-04-29 9 50 21.jpg

試合内容は以下のようなところ:

  • レシーブミス多め(が、文句なしなレシーブもあり)
  • ダブルフォルト4回以上した
  • 深めストロークでシコリ勝った
  • フォアハンドストロークがオーバーさせる恐怖で2球連続で浅くなって打ち込まれる場面があった
  • 前回の練習でバックハンドストロークが後ろから前の野球打ちに戻ってるのに気づいて下から上のトップスピン用スイングに修正できた

練習メニューももっと実戦を意識したものにしていきたいですね。(今、ロングラリーするとき相手がいるところに打っているのをオープンコートを狙うようにするとか)

課題は以下です:

  • 確実に入るセカンドサーブを身につける
  • 前後左右に多少振られても自分のスイングで打ち込めるようにする
  • 攻めの姿勢(こういう戦力差がある試合でもむしろ興奮しちゃう程度にマゾヒズム傾向にあるので攻めるのは得意ではないのですが)

初出場の去年に比べると試合内容は格段に良くなりました。ちゃんと成長しているのを感じたので「立ち止まりさえしなければいずれは勝てる」でしょう。

Baby Steps To Giant Strides.

OK キャンセル 確認 その他