Linuxのシェル(/bin/sh)の短期集中シリーズ
bashだともっと多機能だけど、どこでも動くようになるべくshを使う。
第一回目は引数の数チェック。
利用用途としては引数がなかったら説明を出すなど。
if [ $# -eq 0 ]; then echo "$0 利用方法:引数1" exit 1 fi
$#が引数の数を表しており、0だったら、メッセージを表示している。
$0はこのシェルスクリプト自体の名称である。
Linuxのシェル(/bin/sh)の短期集中シリーズ
bashだともっと多機能だけど、どこでも動くようになるべくshを使う。
第一回目は引数の数チェック。
利用用途としては引数がなかったら説明を出すなど。
if [ $# -eq 0 ]; then echo "$0 利用方法:引数1" exit 1 fi
$#が引数の数を表しており、0だったら、メッセージを表示している。
$0はこのシェルスクリプト自体の名称である。
以前priori2の現在位置がなかなか取得できない問題について記載した。
ほかの機種だとそんな問題はでてないので、本腰を入れて調査。
設定で現在地の測位制度に関するヒントを変更してところ、WIFIを使った現在位置特定サービスが有効になったようで、一瞬で現在地を測位できるようになった。
CF-SX1を利用していて不満だったのはカーソルキーの位置が、ミスタイプを誘発しやすい位置に移動されており、CF-S10と比べると_のつもりで矢印の上を押してしまうことが多かった。
このクレームが多かったのか開発者もここの配置はカーソルキーをキーボード位置を下げてきてる。
見た目ほぼCF-SXシリーズと同様リーフ型キーボード(キーの端っこが丸まっており、ミスタイプが少ないとのうわさ)のようなので、それ以外の変更はおそらくない。
CF-SZ5以外のCF-RZ5とCF-MX5はいわゆるアイソレーションキーボードで、キーストロークが浅くてミスタイプが多い。
CF-LX5はCF-SZ5と同じリーフ型キーボードである。
今回新製品を見比べてみたが、
Let’s noteの代名詞であった円形型ホイールパッドは今やCF-SZ5のみになっていたという事実に驚いた。
昔からThinkpadのトラックポイントのほうが好きだが、なれるとホイールパッドでもマウスいらずである。
CF-S10に続きCF-SX1をWindows10にアップグレードインストールしてみよう。
自然に任せていたらアップデートの準備が完了するまで2か月以上かかってしまったという。
さらに準備完了してからWindows10のダウンロードが始まったり、なんどか通常のWindowsUpdateを挟んだりして数回再起動。
そしてLet’s noteの古い機種(CF-S9系,CF-S10系)でおなじみの
intel dynamic power performance managementをアンインストールして下さいとでるが、
アンインストールしてもなんどもアンインストールしてくださいと出てしまうバグ。
あきらめてその日は寝て翌日頭がすっきりしてから情報収集。
どうやらintel dynamic power performance managementのWindows8.1ドライバーを入れればよいらしい。
ページがすさまじく不親切なのでCF-SX1用には以下のページから取得。CF-S10とかはまた違うので注意めされい!
http://faq.askpc.panasonic.co.jp/faq/docs/003104?no=5&q=cf-sx1&score=0.358561098575592&sri=3288979&trn_org=2
Windows10のインストール作業は30分ぐらいで終了。起動後もドライバーのダウンロードが裏で動いており起動中に勝手に解像度が上がった。
ホイールパッドは昔のドライバ(C:\util\wheelpad\setup.exe)をアンインストール、インストールでOK
初回起動中は解像度がおかしいが、裏でVGAドライバーを落としてきており、勝手に適用されてCF-SX1の高解像度モードになった。
diffを実行すると改行コードだけの違いなのに全部違う行として丁寧に出してくれる。
改行コードのみの違いを無視したい場合は以下のオプションを付けてdiffを実行する。
diff --strip-trailing-cr fileA fileB
そもそも改行コードが不ぞろいなのが問題なので、まずは改行コードを確認するためにはcat -Aオプションをつける
cat -A ファイル名 </match>^M$ // CRLF </match>$ // LF
改行コードを変換するにはdos2unix,unix2dosがあればそれを使うが、vimでできる
//CRLF :set fileformat=dos //LF :set fileformat=unix
td-agentの設定ファイルはXML形式ではなく、rubyのDSL形式で記述することもできる。
(共存はできない)
似たような個所を置きかえるのであればDSLにしたほうが良いと思ってトライ。
sysloghash = { "syslog" => "td.syslog.messages"}
#{ "syslog" => "td.syslog.messages"}.each do |key,value|
sysloghash.each do |key,value|
source {
type :tail
path "/var/log/messages"
format "#{key}"
tag "#{value}"
pos_file "/tmp/td-agent/syslog_messages.pos"
}
end
# apche setting
apache_hash = { "access" => "apache", "error" => "apache_error"}
apache_hash.each do |key,value|
source {
type :tail
path "/var/log/httpd/*_#{key}_log"
format "#{value}"
tag "apache_#{key}"
pos_file "/tmp/td-agent/apache_#{key}.pos"
}
end
match ('td.syslog.messages') {
type :copy
store {
type "mongo"
database "syslog"
collection "syslog"
host "localhost"
port "27017"
}
}
可読性が悪くなるような気もするが、ループ処理ができるのが楽。
最終的にこれらはパースされてXML形式の設定ファイルが出力される。
(なので既存との比較も/var/log/td-agent/td-agent.logを起動時に見ていれば比較できる)
<ROOT>
<source>
type tail
path /var/log/messages
format syslog
tag td.syslog.messages
pos_file /tmp/td-agent/syslog_messages.pos
</source>
<source>
type tail
path /var/log/httpd/*_access_log
format apache
tag apache_access
pos_file /tmp/td-agent/apache_access.pos
</source>
<source>
type tail
path /var/log/httpd/*_error_log
format apache_error
tag apache_error
pos_file /tmp/td-agent/apache_error.pos
</source>
<match td.syslog.messages>
type copy
<store>
type mongo
database syslog
collection syslog
host localhost
port 27017
</store>
</match>
</ROOT>
昔はemacsなんかを結構使っていたのだが、初期状態で入っていないことが多いので最近はvimオンリー。
とはいえあまり詳しいわけではないので、必要とされて覚えたコマンド&操作を列挙していこう。
範囲選択はShift+Vでカーソルを動かせばOK。
その範囲をコピーしたければyで、消したければdを押せばよい。
この状態で:を押すとすでに範囲選択された状態になっている。
:’<,'>の後に置換コマンドを入れればよい。
下記は選択範囲のhogeをfugaに置き換えつつ、置き換え時に確認するというcオプションを付けたもの。
:'<,'>s/hoge/fuga/gc
ほかのPCよりも小型とはいえMacのノートのアダプターは結構でかい。
しかし最近の機種であれば違いはワット数のみである。
Appleの公式サイトの情報で以下の情報を見つけた。
「Apple 製ノートブックコンピュータ用の電源アダプタには、29W、45W、60W、85W のものがあります。お使いの Apple 製ノートブック製品に適合したワット数のアダプタをお使いください。適合ワット数よりもワット数が大きいアダプタも問題なく使えますが、コンピュータの充電時間が短くなったり、動作に違いが出たりすることはありません。ワット数が適合数より小さいアダプタでは、十分な電力が供給されません。」
というわけでMacBookPro 15インチ用のMega Safe2アダプタ85Wをもっておけばほかのアダプターを兼ねることができるということだ。
今年の一月からLet’s noteのCF-S10を使い始めてから12.1型のLet’s noteの動きに注目している。
CF-S10の後継機種がCF-SXシリーズでSX1からSX4まで基本設計は一緒でバッテリーなども共有であった。
今度の新機種はCF-SX5が出るかと思ったら、CF-SZ5になりこちらはSXシリーズとは筐体が一新された新設計のモデルである。
軽量バッテリー装着で1キロを切る重量である!
真中に光学ドライブのスペースがあり、メモリも増設できなくなっているとのことで(分解すれば可能かも)、おそらくSSDの換装もやりづらくなっていると思われる。
安くベースを手に入れてドライブ類は自分で交換できる人にとってはCF-SXシリーズのほうがよいかもしれない。
久々にEclipse以外でビルドしたので上記「この文字は、エンコーディングUTF8にマップできません」に遭遇。
システムのデフォルトエンコーディングでソースをコンパイルしようとするのであるが、WindowsだとWindows-31Jになり、LinuxだとUTF-8になる。
該当ソースコードはWindowsなのでpom.xmlにエンコーディングを指定。
<properties> <project.build.sourceEncoding>Windows-31J</project.build.sourceEncoding> </properties>
初歩的なことだが、どこの環境でも動くようにエンコーディングは常に指定するのを心がけておくとよいだろう。