2013/04/16

CX-5

2012 年 8 月に納車されてからの足跡。
殆ど自己満足ではあるが自分としては厳選した部品で満足しているので お勧めできる用品を晒してみる。

純正オプション

ディーラにて購入した純正オプションで納車時に装着したもの達。
フロントのランプ類はフェンダーの奧に 手を入れる必要があるとの事だったのでディーラに作業をお願いした。

LED ポジションランプ フロントポジションランプを LED 化
LED アクセサリーランプ フロントアクセサリーランプを LED 化
フロント シルバーウィンカーランプ フロントウィンカーランプをステルス化
ノーマルだと中がうっすらオレンジ色になるのが嫌だった
リヤ シルバーウィンカーランプ リヤウィンカーランプをステルス化
フロアマット 純正品は割高なのだが折角の新車だし CX-5 のロゴも良いので敢えての純正品
アルパインナビ C9A4 V6 650 カーナビは BOSE オーディオとの相性を考えて ALPINE
デンソー スマートイン ETC システム ETC は必須
ETC 接続ケーブル カーナビとの連携のためのケーブル
バーグラーアラーム 一応新車なので盗難アラームも装備
アルパイン VICS ビーコンシステム リアルタイムで渋滞情報がわかるので VICS ビーコンは非常に便利
アルパイン iPod/USB アダプタ これで iPod Classic を接続して愛用中
DAMD シフトゲートパネル 安っぽいシフトゲートパネルをピアノブラック化
DAMD フロントドアスイッチパネル 安っぽいフロンドドアスイッチパネルをピアノブラック化

Image: IMG_0190.jpg

シフトゲートパネル

内装

主に内装に関係するもの

クレトム エクセレントシェード L SA-89 使わない時はコンパクトに収納でき便利
サイズも CX-5 のフロントウィンドウにぴったりで まるで専用設計の様な仕上がり
GM ライフハンマー LHJA002 万が一のためのシートベルトカッター & ハンマー
エマーソン 自動車用保安セット EM-300 純正の保安セットと同等品を OEM 供給元から
LIBERAL 本革製アームレストカバー
純正の内装とほぼ同じ色のステッチで純正品並の仕上がり
Pivot スロットルコントローラ 3-drive X ODBC2 モニタ一体のスロットルコントローラ
発進時のトルクを底上げ

Image: IMG_0015.jpg

ライフハンマー
Image: IMG_0014.JPG

アームレストカバー
Image: RIMG0740.JPG

スロットルコントローラ

外装

主に外装に関係するもの

クリエイト 給油間違い防止リング XG13 初めてのディーゼルなので給油間違い防止のため
軽油ステッカーは自作品
カーメイト フロントナンバーベース R2000 LS366 CX-5 では定番のフロントナンバーベース
ステンレス 超極低頭 トルクスボルト M6x40 フロントナンバーベースを装着するためのボルト
ステンレス製の TORX ボルト
MIRAREED アルミ エアーバルブキャッ SA-136 純正のエアバルブキャップはゴム製でなので変更
BOSCH Windtone BH-WT 純正のホーンがシングルホーンで悲しい音なので変更

Image: RIMG0684.JPG

誤給油防止リング
Image: RIMG0691.JPG

フロントナンバーベース

照明

主に照明に関係するもの

CREE SMD LED バックライト 3W T16 バックライトを LED 化
VALENTI LED ブレーキ/ストップランプ T20W T20W-R1854-1 ブレーキ/テールランプを LED 化
VALENTI LED ブレーキ/ストップランプ T10 T10S-R1315-1 テールランプを LED 化
SHARExSTYLE LEDセット
室内灯を LED 化するセット

個人輸入

個人輸入した海外製品(純正パーツ含む)

USマツダ純正 リアバンパーガード リアバンパーガード(ロゴ無し)
オーストラリア製スカッフプレート 前後 ドアスカッフプレート(ロゴ有り)
オーストラリアマツダ純正 リヤサンシェード マグネットでドア枠に装着できる優れもの

Image: RIMG0690.JPG

リアバンパーガード
Image: RIMG0681.JPG

ドアスカッフプレート
Image: RIMG0678.JPG

リアサンシェード

書籍

書籍類

CX-5のすべて モーターファン別冊
構造調査シリーズ CX-5 自研センター

2013/03/20

Fドリーム平塚

Fドリーム平塚でカート体験をしてきた。
以前カーレルのレーシングカートを共同で所有していたのだが、 カートに乗るのは 10 年以上振りなので、 まずはスピードがあまり出ない二人乗りカートに娘と一緒に乗る事に。

Image: IMG_2271.JPG

二人乗りカートでノンビリ走行中

1 セッション 3 周なので娘の反応を見ながら 47 秒程度のゆっくりしたペースで 3 周走った所、 「全然怖く無かったよ」「もっとスピード出して」とリクエストされたので、 次のセッションではちょっと(大幅に)ペースをアップして 結局 40 秒程度のペースで周回してみた。

Image: IMG_2270.JPG

二人でコーナ出口をしっかり見ています

二人乗りにもかかわらず一人乗りのカートを 2 台抜いてしまいました(笑。
横 G で結構頭が振られているのに怖がらずに「もっともっと早く走ろう♪」という 娘は父親よりも Speed Junkie かも?(やはり血なのだろうか)。

Image: IMG_2299.JPG

二人乗りのベストタイムは 40秒587

ちなみにこのコースのドライでのコースレコードは 29秒804 (何てタイムだ。
二人乗りカートでの今シーズンのベストラップは 35秒440 らしいです。

2013/01/29

丸美屋の麻婆豆腐

普通に作っても十分に美味しい『丸美屋の麻婆豆腐』を 一手間かけることで更に美味しく作るレシピ。

材料 (3人分)

丸美屋の麻婆豆腐 1 箱の半分
豆腐(個人的には木綿豆腐の方が好ましい) 1 丁
挽肉 100 g
長ネギ 1/2 本
ニンニク 1 かけ
生姜 1 かけ
鷹の爪 1 ~ 2 本
粉山椒(あれば) 適量
ごま油 適量

作り方

  1. 丸美屋の麻婆豆腐の素に添付されているとろみ粉を 予め水に溶いておきます。
  2. 豆腐は少し水切りをしておくと できあがった時の食感が良くなります。
  3. ニンニクと生姜はみじん切りにします。
    ニンニク絞りがあれば便利です。
  4. フライパンにごま油を熱し鷹の爪を入れて香りを出します。
    火が強すぎると鷹の爪が焦げてしまうので中火程度で。
  5. みじん切りにしたニンニクと生姜を入れて 焦げない様に気をつけながら炒めます。
    特にニンニクは焦げやすいので要注意です。
  6. 挽肉を加えて粉山椒を振りかけて炒めながら 出てきた脂を吸い取るなりして始末します。
    山椒は多少大目に振りかけて良く過熱すると 香りがでて良いでしょう。
    挽肉の脂は臭みが強いので個人的には捨てる方が好みですが、 気にならない方はそのままでもかまいません。
  7. ここまで出来たら通常の手順通りに作ります。

ほんの簡単な一手間で随分味が変わります。
是非お試し下さい。

2013/01/23

i-DM

CX-5 に限らず最近の MAZDA の一部車種には i-DM という 運転評価システムが備わっている。
アクセルやブレーキ、ステアリング操作の加速 G を検出して ドライビングを評価していると思うのだが、 その評価があまりにもお粗末で正直全く使い物にならない。

このシステムは基本的にアクセルを開けるか、ブレーキをかければ評価が高い (しかも若干急発進、急ブレーキ気味だと加点される)という、 全く実情には見合ってない的外れな評価をしてくる。
例えば正面の信号が赤信号の場合で前後に他車がいない場合などでは、 アクセルを緩めて惰性走行する事で環境にも優しく燃費も良い運転となるが、 そういう運転をするとこの評価システムはどんどん減点していく。 また、片側 1 車線で歩道がある道でも歩道に小さな子供がいる場合は 突然の飛び出しに備えて徐行するか、ゆっくり走るのが当然だと思うのだが、 そういう場合でもこのシステムは容赦なく減点してしまう。

そして最後には「メリハリのある加速や減速をしましょう」とか表示する始末。 いやはやあきれ果ててモノも言えないとはこのことだ。
このシステムの開発者は果たして運転免許を持っているのだろうか?
運転という行為を理解しているのだろうか?

そもそも車の運転はドライバーが五感を駆使して収集した周囲の状況を 総合的に判断しながら様々な操作を行う必要があると思うのだが、 このシステムでは単に加速や減速、ステアリング操作による G の変化だけで評価している時点で全く使い物にならない。
よくもまぁ、こんなガラクタを標準で搭載したものだと呆れてしまう。 実際に欧米への輸出仕様にはこの様なゴミは当然搭載されていないらしい。
確かに他がどんなに素晴らしい自動車だったとしても、 こんなガラクタが搭載されている時点で評価はがた落ちだろうし、 まともな自動車メーカだとは思って貰えなくなるだろう。
こんなゴミ・ガラクタを標準で搭載する位なら 水温や電圧などを表示する方がよっぽどマシだという事に なぜ MAZDA は思い至らないのだろうか?

CX-5 は非常に気に入った車なのでそこだけが残念である。
i-DM のディスプレイ部分に ODBC 情報を表示する様な 製品を是非とも開発して頂きたい。

2013/01/01

A Happy New Year

新年
  明けまして
    おめでとう
      ございます

今年もよろしくお願いします。

2012/12/27

指定された日の曜日を取得する

先日開催された 第2回チキチキ!シェル芸人養成勉強会 の課題の中で自分の中で話題になった事。

指定された日の曜日を取得したい場合、 gnu 版の date (1) がインストールされている場合は 以下のコマンドで取得可能(0 が日曜日を示す)。

$ date -d YYYYMMDD '+%w'
0
    
gnu 版の date (1) がインストールされていない場合でも、 FreeBSD 版の date (1) は独自拡張されているので 以下のコマンドで取得可能だと言う事を教わった(0 が日曜日を示す)。
$ date -j YYYYMMDDHHMM '+%w'
0
    

但しどちらも posix に準拠していない独自拡張な機能を利用しているため 環境依存となってしまうので、 環境に依存しない方法での解決方法を考えてみた。
日付から曜日を取得するためには ツェラーの公式 という計算式があるので、 posix に準拠したシェルの機能だけでその計算式を実装してみる。

$ y=YYYY; m=MM; d=DD
$ test $m -lt 3 && y=$(($y - 1)) && m=$(($m + 12))
$ echo $(($(($y + $y/4 - $y/100 + $y/400 + $(($((13 * $m + 8))/5)) + $d)) % 7))
    
年と月の値によって調整が必要なのでワンライナーにはならないのが残念だけど、 基本的には単純な四則演算なのでシェルの機能のみで実装が可能だ。
これで gnu 版の date (1) がインストールされていない環境でも 任意の日付の曜日が簡単に取得できる!。

2012/12/26

dog (1)

以前、某雑誌のシェルスクリプト大喜利に投稿したネタ。
こんな感じのお題に対する回答。

cat コマンドの作者が遺言を遺しました。
「私の人生における最大の公開は、 dog コマンドを作り忘れてしまったことだ。 あぁ誰か作ってくれぇー。ガクッ」
さぁ、一体どんなコマンド?

お題がネタっぽいので回答もネタっぽくしてみた。
more (1) を拡張して less (1) が、 yacc (1) を拡張して bison (1) が作られた様に、 dog (1) は cat (1) が拡張されたものという発想で httphttps そして ftp といった schema に対応した cat (1) というスクリプトにしてみた。
内容はとても単純なので cat → dog という発想だけが勝負のスクリプトである。

雑誌では割愛されてしまったネタとしてのマニュアルも掲載してみる。
というか、実はマニュアルの方が書きたかったという…(笑

  1#!/bin/sh
  2#
  3# NAME
  4#   dog -- concatenate and print files
  5#
  6# SYNOPSIS
  7#   dog [cat options] [file ...]
  8#
  9# DESCRIPTION
 10#   Dog is a file concatenate and print command in the style of cat(1).
 11#   It should be upwardly compatible with original cat.
 12#
 13#   The dog utility reads files sequentially, writing them to the standard
 14#   output.  The file operands are processed in command-line order.  If file
 15#   has protocol schema such as 'http://', 'https://' or 'ftp://', dog utility
 16#   gets the file from remote system and display it, otherwise dog assumes
 17#   local file. The dog utility uses wget(1), curl(1), or lynx(1) to retrieve
 18#   the file from remote system. If dog utility could not find these commands
 19#   from standard command path, disable remote file display.
 20#   All option of dog is same as cat(1) except '-h'.
 21#
 22# EXIT STATUS
 23#   The dog utility exits 0 on success, and >0 if an error occurs.
 24#
 25# SEE ALSO
 26#   Rob Pike, "UNIX Style, or cat -v Considered Harmful", USENIX Summer
 27#   Conference Proceedings, 1983.
 28#
 29# STANDARDS
 30#   The dog utility is *NOT* complient with the IEEE Std 
 31#   1003.2-1992 (``POSIX.2'') specification, even now and forever.
 32#   
 33
 34curl="-s -o -"
 35wget="-q -O -"
 36lynx="-source"
 37
 38# get command name and path
 39for i in wget curl lynx
 40do
 41    for j in /bin /usr/bin /usr/local/bin /opt/bin /opt/local/bin
 42    do
 43        if [ -x ${j}/${i} ]
 44        then
 45            command="${j}/${i} `eval echo '$'${i}`"
 46            break 2
 47        fi
 48    done
 49done
 50
 51# args
 52while [ ${1} != "" ]
 53do
 54    case ${1} in
 55        -h )
 56            sed -n '2,/^$/s/^#//p' ${0}
 57            exit 1
 58            ;;
 59        -- )
 60            shift
 61            break
 62            ;;
 63        -* )
 64            opt="${opt} $1"
 65            ;;
 66        *  )
 67            break
 68            ;;
 69    esac
 70    shift
 71done
 72
 73for i in $*
 74do
 75    if expr ${i} : "https*://" > /dev/null
 76    then
 77        if [ -n "${command}" ]
 78        then
 79            ${command} ${i} | cat ${opt}
 80        else
 81            echo "${0##*/}: cannot get remote file: ${i}" 1>&2
 82        fi
 83    elif expr ${i} : "ftp*://" > /dev/null
 84    then
 85        case ${command} in
 86            *wget*|*curl* )
 87                ${command} ${i} | cat ${opt}
 88                ;;
 89            * )
 90                echo "${0##*/}: cannot get remote file: ${i}" 1>&2
 91                ;;
 92        esac
 93    else
 94        cat ${opt} ${i}
 95    fi
 96done
    

今回のシェルスクリプト大喜利にも投稿したので、 某雑誌が発売されたら紹介する予定。

2012/12/14

Mountain Lion

iPhone を導入した事を切っ掛けに Mountain Lion 化してみた。
見た目や使い勝手は使い慣れた Snow Leopard の方が好きなのだが、 iPhone との iCloud による完全連携の魅力には逆らえない。
世間では既に言い尽くされている事なのだろうが、 「確かに非常に便利で素晴らしい」、というのが第一印象。
例えば iPhone で撮影した画像は自動的に iPhoto に取りこまれていたり、 Mac で編集した連絡先がいつのまにか iPhone でも変更されていたり、 更には複数台の Mac 間で Mail.app のフィルタ設定まで同期されている。
今まで Dropbox や WebDAV とアイデアを駆使して何とか実現してきた事が、 ID を登録するだけでいとも簡単に実現できてしまうのは凄い事だ。

2012/11/30

IPv4 アドレスがネットワークに属しているか調べる

ネットマスクとはその名の通り IPv4 アドレスのうち、 どこまでのビットがネットワークアドレスなのかを示しているので、 IPv4 アドレスとネットマスクの論理和はネットワークアドレスとなる。
そのため、取得した論理和とネットワークアドレスが等しい場合は IPv4 アドレスはネットワークに属す事になる。

C で実装する場合はこんな感じかな。

  1int     checkAddr(const char *network, const char *netmask, const char *ipaddr)
  2{
  3
  4    struct  in_addr net,
  5                    mask,
  6                    addr;
  7
  8    if(inet_aton(network, &net) &&
  9            inet_aton(netmask, &mask) &&
 10            inet_aton(ipaddr", &addr))
 11        return((addr.s_addr & mask.s_addr) == (net.s_addr & mask.s_addr));
 12    else
 13        return(0);
 14
 15}
    

ちなみに仕事で実装した java のコード。
  1boolean checkAddr(String network, String netmask, String ipaddr)
  2{
  3
  4    try {
  5        int     n = 0,
  6                m = 0,
  7                a = 0;
  8        byte[]  net = InetAddress.getByName(network).getAddress(),
  9                mask = InetAddress.getByName(netmask).getAddress(),
 10                addr = InetAddress.getByName(ipaddr).getAddress();
 11
 12        for(int i=0; i<4; i++)
 13            n |= ((int)net[i] & 0xff) << (8 * (3 - i));
 14        for(int i=0; i<4; i++)
 15            m |= ((int)mask[i] & 0xff) << (8 * (3 - i));
 16        for(int i=0; i<4; i++)
 17            a |= ((int)addr[i] & 0xff) << (8 * (3 - i));
 18
 19        return((a & m) == (n & m));
 20
 21    } catch (Throwable e){
 22        return false;
 23    }
 24
 25}
    
java はそれほど詳しくないのでコーディングが冗長だけど、 取りあえず動作している(気がする)。

2012/11/02

CentOS 6.3 インストール直後にする作業

仕事では Linux サーバ、特に CentOS の導入~初期設定の機会が多いので、 全ての CentOS 6.3 サーバの導入時に必ず行っている作業をメモする。

インストール作業は CentOS 6.3 の DVD から起動して行う。
CentOS 6 からはテキストベースのインストーラの場合、 パーティションの設定やファイルシステムの指定、 初期インストールされるパッケージの追加・削除など指定できないので、 GUI を利用した通常のインストールを実行する。

インストールが終了したら初期環境設定を行う。
以下の作業は CentOS 6.3 を導入したマシンでほぼ必ず実施する作業。

自分のユーザを作製する
# adduser アカウント
# password アカウント
            
自分のアカウントを wheel グループに追加する
sudo (1) 可能な様に自分のアカウントを wheel グループに追加する。
# (rm /etc/group; sed 's/^wheel.*/&,アカウント/g' > /etc/group) < /etc/group
            
sudo(1) の設定を変更する
sudo(1) しても元の環境変数を保持する様設定
Defaults env_reset を Defaults !env_reset に変更
# Defaults env_keep += "HOME" のコメント記号 `#' を削除
            
wheel グループのアカウントのみ sudo (1) 可能にする
# %wheel  ALL=(ALL)   ALL のコメント記号 `#' を削除
            
# visudo
            
termcap を使用するアプリケーション対応
# ln -s /usr/lib/libtinfo.so /usr/lib/libtermcap.so.2
            
selinux を無効にする
# (rm /etc/sysconfig/selinux; sed 's/^SELINUX=.*/SELINUX=disabled/' > /etc/sysconfig/selinux) < /etc/sysconfig/selinux
# ex -s /etc/syconfig/selinux << EOF
> /^SELINUX=/s/.*/SELINUX=disabled
> wq
> EOF
            

2012/11/09 追記

CentOS の /etc/sysconfig/selinux/etc/selinux/config へのシンボリックリンクで 実際は /etc/selinux/config を参照しているのだが、 rm (1) と sed (1) を使った方法だと /etc/sysconfig/selinux が通常ファイルになって 書き換わってしまい、元の /etc/selinux/config が 変更されていないために selinux が無効にならない という問題を指摘して頂いたので編集方法を修正しました。

システム更新
# yum update
            
最低限必要なソフトウェアのインストール
システムを運用する上でこれだけは必要だとうソフトウェアを導入する。
# yum install openssh-clients libtermcap-devel tcpdump
# yum install ntpdate telnet wget tcpdump unzip mlocate rsync bind-utils
            
開発環境のインストール
ソフトウェアを開発する場合は導入する。
通常はサーバでは開発しないので導入は不要な筈…
# yum install make gcc bison flex
            
ファイアウォールの設定
グローバル環境に晒されるサーバであれば 最低限のファイアウォールは設定する必要がある。
基本的には以下のポリシーで必要に応じて追加・削除する。
#!/bin/sh
iptables=/sbin/iptables

# 全て初期化
${iptables} -F

# デフォルトルール
${iptables} -P INPUT DROP
${iptables} -P OUTPUT ACCEPT
${iptables} -P FORWARD DROP

# ループバックを有効にする 
${iptables} -A INPUT -i lo -p all -j ACCEPT

# 接続済みのパケットを受け付ける
${iptables} -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

# http, httpsはどこからでもアクセス可
${iptables} -A INPUT -p tcp --dport 80 -j ACCEPT
${iptables} -A INPUT -p tcp --dport 443 -j ACCEPT
${iptables} -A INPUT -p tcp --dport 8080 -j ACCEPT
${iptables} -A INPUT -p tcp --dport 9080 -j ACCEPT

# dns パケットを許可
${iptables} -A INPUT -p tcp --sport 53 -j ACCEPT
${iptables} -A INPUT -p udp --sport 53 -j ACCEPT
${iptables} -A INPUT -p tcp --dport 53 -j ACCEPT
${iptables} -A INPUT -p udp --dport 53 -j ACCEPT

# ntp パケットを許可
${iptables} -A INPUT -p tcp --dport 123 -j ACCEPT
${iptables} -A INPUT -p udp --dport 123 -j ACCEPT

# そのほか必要なルールを記載
    :
    :
            
上記設定を /tmp/firewall.sh に格納した場合、 ファイアウォールを有効にして設定をセーブする。
# sh /tmp/firewall.sh
# /etc/init.d/iptables save
iptables: ファイアウォールのルールを /etc/sysconfig/iptableに保存中: [  OK  ]
            
起動サービスの設定
起動サービスを設定する。
基本的には atd crond iptables network ntpd rsyslog sshd のみを有効にする
# for i in `chkconfig --list | awk '/:on/{ print $1 }'`
> do
>  case $i in
>      atd|crond|iptables|network|ntpd|rsyslog|sshd )
>          ;;
>      * )
>          chkconfig $i off
>          chkconfig --del $i
>          ;;
>  esac
> done
                

ここまで設定して再起動する。
MTA や httpd など固有のサービスは個々に設定する。


Copyright © 2008-2020 Mitzyuki IMAIZUMI. All rights reserved.