UJP - ハウツーカテゴリのエントリ

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

  • カテゴリ ハウツー の最新配信
  • RSS
  • RDF
  • ATOM

ブログ - ハウツーカテゴリのエントリ

vimが自動でインデントして困るのでOffにする

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/11/24 23:41
 よそ様のサーバだから詳しいことはわからないけれど,最近のRed Hatに付属しているvim(vi)は,Microsoft Wordのようにインデントしてくれる.とても煩わしい.
 これをオフにするには,.vimrcに次のように設定しておく.
autocmd FileType * setlocal formatoptions-=ro
 でもまぁこういう設定のニーズがあるということなのか.

SSL証明書の有効期限をコマンドで調べる

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/11/24 23:37
 SSL証明書の有効期限を調べるために,1つや2つならブラウザの鍵マークを参照すれば良いけれど,大量となると面倒なのでコマンドで取得してみる.

 まずは,URLは長いので環境変数に入れてみた.
MBA13:ujpadmin$ FQDN=www.google.co.jp
MBA13:ujpadmin$ echo $FQDN
www.google.co.jp
MBA13:ujpadmin$
 次のようにopensslコマンドを実行.
[/code]MBA13:ujpadmin$ openssl s_client -connect $FQDN:443 < /dev/null 2> /dev/null | openssl x509 -text|head -n 10
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
2a:31:85:78:f8:ec:3f:8a
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, O=Google Inc, CN=Google Internet Authority G2
Validity
Not Before: Nov 10 15:47:36 2016 GMT
Not After : Feb 2 15:31:00 2017 GMT
MBA13:ujpadmin$
[/code] Validity=妥当性を保証する期間ということか.
 
 バッチファイルで,ファイルの有無を確認するのは簡単だけれど,ディレクトリを検査する仕組みはない.でもチェック用のファイルを作ることで,ディレクトリの有無を調べられる.

SET TARGET_DIR=D:\TEST

@echo > %TARGET_DIR%\chk.txt
@if not exist %TARGET_DIR%\chk.txt goto TARGET_NOT_FOUND
@del /F/Q %TARGET_DIR%\chk.txt
@echo ディレクトリがありました.
@goto :EOF

:TARGET_NOT_FOUND
@echo ディレクトリはありませんでした.

:EOF
 むかし,仕事で頻繁に電話でアメリカ人と英語で話をしていたおじさんが居て「流暢な英語ですね」と褒めたら「単語を知らないから言葉数が多くなるから喋れているように見えるだけだ」と言っていた.
 手数が多いこの方法も,それと似ているかなぁなんて思ったりした.ただそれだけ.

macOSでネットワークドライブをマウントする

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/11/14 23:53
 Windowsサーバのファイル共有をMacで使う時は,mountコマンドを使う.
 SolarisとかLinuxだとドライブのマウントは/mntを使うような暗黙のルールになっているけれど,それと似たような感じでMacの場合は/Volumesを使う.
 ここにマウントポイントを作って,マウントする.

mkdir /Volumes/fileserver
mount_smbfs //192.168.100.20/data/ /Volumes/fileserver

 mountコマンドにユーザパスワードをつける時は,こんな感じ.

mount_smbfs //ujpuser:password@192.168.100.20/data/ /Volumes/fileserver
 そして運悪く?!パスワードにドルマークが入っていたりすると,マウントコマンド認証エラーになる.
$ mount_smbfs //ujpuser:4L3$gear@192.168.100.20/data/ /Volumes/fileserver
mount_smbfs: server rejected the connection: Authentication error
$
 パスワードにドルマークが入っている場合は,こんな感じでエスケープする.
mount -t smbfs //ujpuser:4L3\$gear@192.168.100.20/data/ /Volumes/fileserver
 これ,わかるのに2時間かかった...

~と〜

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/9/2 1:19
 ~と〜の違い.

~と〜
ですよ.

~〜です.
わかりやすい様に,ファイルに保存して中身を確認.
MBA13:~ $ cat wave.txt
~〜
MBA13:~ $
答えは,これ.
MBA13:~ $ hexdump wave.txt
0000000 ef bd 9e e3 80 9c 0a
0000007
MBA13:~ $
 つまり,1文字目の「~」は0xEFBD9Eで,2文字目の「〜」は0xE3809Cなのである.〜が~に変換される問題だと誤解していたけれど,この問題は,一言で言うと

 SJISにある「〜」をUTF-8に変換する際に「~」にするか「〜」にするかは実装次第

 普通の人には関係ない.でもこれ,大問題.


あま~いアイス
おいし〜いアイス

 表示上,人間の目だとどっちでも良いけれど,あいまい検索で「〜いアイス」としたら「おいし〜いアイス」しか引っかからないよね.

 他にも,ー—―とか,-‐‑–−ーとかがあって.これは,仕様策定時のミスらしいけれど,将来的にエンジニアの「専門家」としての地位確保のための布石なんだとおもうね.2000年問題よりも巧妙だな.まぁ,SJISが撲滅すれば良いのだろうけれど,だいぶなくなったけれど.
 まずは,Xcodeのバージョンを調べる.
$ xcodebuild -version
Xcode 7.2.1
Build version 7C1002

$
 svnのパスは次の通り.
$ /Applications/Xcode.app/Contents/Developer/usr/bin/svn --version
svn, version 1.7.20 (r1667490)
   compiled Jan 14 2016, 18:19:52

Copyright (C) 2014 The Apache Software Foundation.
This software consists of contributions made by many people; see the NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/

The following repository access (RA) modules are available:

* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
  - handles 'http' scheme
  - handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
  - handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
  - handles 'file' scheme
* ra_serf : Module for accessing a repository via WebDAV protocol using serf.
  - handles 'http' scheme
  - handles 'https' scheme

$
 1.7.20なので日本語対応の1.7.14より新しいバージョンだけれど,日本語ファイルに対応しているかどうかはわからないな.

Eclipse 4.5のSVNのバージョンを下げるには

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/8/20 18:54
 Eclipse 4.5(mars)は,SVN 1.8なので互換性がないので,以下のサイトからSVNKit 1.7.12を入手する.

 ヘルプから新規ソフトウェアのインストールをクリックします。
 作業対象に以下のURLを入れる.

http://community.polarion.com/projects/subversive/download/eclipse/3.0/update-site
 Home Brewで最新版のSubversionをインストールしても,日本語ファイルに対応してない.例の半濁点問題だね.半濁点が入ってないとcommitできる事も多い.
 それで,Subversion 1.7にする事で,日本語ファイルに対応できたという話.事前に気をつけなければいけないのは,1.9を使っているとバージョンダウンするので,リポジトリの管理バージョン(データベースあたり?)が異なるので1.7でアクセスできないから,再ダウンロードが必要になるという事.
 まずは,インストールされているSubversionのバージョンを確認.
$ 🆑brew info svn
subversion: stable 1.9.4 (bottled)🈁
Version control system designed to be a better CVS
https://subversion.apache.org/
/usr/local/Cellar/subversion/1.9.4... (148 files, 11.1M)
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/subversion.rb
==> Dependencies
Build: pkg-config ✔, scons ✔
Required: sqlite ✔, openssl ✔
Optional: gpg-agent ✘
==> Options
--universal
        Build a universal binary
--with-gpg-agent
        Build with support for GPG Agent
--with-java
        Build Java bindings
--with-perl
        Build Perl bindings
--with-python
        Build with python support
--with-ruby
        Build Ruby bindings
==> Caveats
svntools have been installed to:
  /usr/local/opt/subversion/libexec

$
 日本語に対応してないので,Subversion 1.9.4をアンインストール.

...続きを読む

 大量のファイルをupdateしようとするとこんな感じでエラーがでる.
$ svn update
svn: E155004: Run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
svn: E155004: Working copy '/Users/ujpadmin/svn/doc' locked.
svn: E155004: '/Users/ujpadmin/svn/doc' is already locked.

$
 表示されている通りsvn cleanup後に,再度svn updateすると続いて続いてダウンロードされるが,またしばらくするとエラーになる.何度もなんどもsvn cleanup;svn updateを繰り返しやればよのだけれど,とても面倒.いつ終わるか不明だし.
 これは,svnのバージョン1.8以降,デフォルトの転送モードがBulkからSkeltaに変更されたことによる影響なのだそうです.
 バージョンを確認してみる.

...続きを読む

Intel Power Gadget

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/8/16 22:42
 Intelが無料で提供しているPower Gadget.

Intel® Power Gadget
https://software.intel.com/en-us/articles/intel-power-gadget

 CPUが使っている電力量とか現在動作している周波数,そして温度のデータが取れるGUIツール.Mac版もあるけれどWindows,Linuxもある.
 今回はそこじゃなくて,これ.

Using the Intel Power Gadget API on Mac OS X
https://software.intel.com/en-us/blogs/2012/12/13/using-the-intel-power-gadget-api-on-mac-os-x
 
 Intel Power GadgetをインストールするとGUIツールだけれども,MRTGでグラフ化しようと思ってどうにかデータが取れないか?と思っていたら,APIが提供されていました.

 そしてサンプルプログラム.

Intel Power Gadget API on Mac OS X Xcode project example download
https://software.intel.com/en-us/articles/intel-power-gadget-api-on-mac-os-x-xcode-project-example-download

 これをちょっと修正すれば,リストが取れるようになります.
 ダウンロードしたプロジェクトを,XCode 7.3を使ってビルドしたらいい感じでした.サンプルの改造で十分!

Macでハイバネーションの時間を設定する

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/8/10 1:12
Yosemiteで/var/log/system.logを参照すると,次のような状態が.
Aug  8 19:15:09 MBA2014 kernel[0]: [0x851943000, 0x19000000]
Aug  8 19:15:09 MBA2014 kernel[0]: [0x88500a000, 0x19000000]
Aug  8 19:15:09 MBA2014 kernel[0]: [0x8a5542000, 0xe000000]
Aug  8 19:15:09 MBA2014 kernel[0]: [0x0, 0x0]
Aug  8 19:15:09 MBA2014 kernel[0]: AppleCamIn::systemWakeCall - messageType = 0xE0000280
Aug  8 19:15:09 MBA2014 kernel[0]: ARPT: 30064.571369: AirPort_Brcm43xx::powerChange: System Sleep🈁
Aug  8 19:15:09 MBA2014 kernel[0]: AppleCamIn::systemWakeCall - messageType = 0xE0000340
Aug  8 19:15:10 MBA2014 kernel[0]: IO80211AWDLPeerManager::doDisable   source [handleSIOCSIFFLAGS]
Aug  8 19:15:10 MBA2014 kernel[0]: en0: BSSID changed to 00:00:de:0c:0c:0c
Aug  8 19:15:10 MBA2014 kernel[0]: en0: channel changed to 48
Aug  8 19:15:10 MBA2014 kernel[0]: AirPort: Link Down on awdl0. Reason 1 (Unspecified).🈁
Aug  8 19:15:10 MBA2014 kernel[0]: IO80211AWDLPeerManager::doDisable   source [setLinkState]
Aug  8 19:15:10 MBA2014 kernel[0]: ARPT: 30065.337295: wl0: leaveModulePoweredForOffloads: Wi-Fi will turn off.
Aug  8 19:15:10 MBA2014 kernel[0]: AppleThunderboltNHIType2::prePCIWake - power up complete - took 1703 us
Aug  8 19:15:10 MBA2014 kernel[0]: AppleThunderboltGenericHAL::earlyWake - complete - took 0 milliseconds
Aug  8 19:15:10 MBA2014 kernel[0]: AirPort: Link Down on en0. Reason 8 (Disassociated because station leaving).
Aug  8 19:15:10 MBA2014 kernel[0]: en0::IO80211Interface::postMessage bssid changed
Aug  8 19:15:10 MBA2014 kernel[0]: en0: 802.11d country code set to 'X3'.
Aug  8 19:15:10 MBA2014 kernel[0]: en0: Supported channels 1 2 3 4 5 6 7 8 9 10 11 12 13 36 40 44 48 52 56 60 
Aug  8 19:15:11 MBA2014 kernel[0]: AppleCamIn::systemWakeCall - messageType = 0xE0000340
Aug  8 19:15:11 MBA2014 kernel[0]: AppleThunderboltNHIType2::waitForOk2Go2Sx - retries = 3
Aug  8 22:15:11🈁 MBA2014 kernel[0]: Wake reason: EC.SleepTimer (SleepTimer)🈁
Aug  8 22:15:11 MBA2014 kernel[0]: AppleCamIn::systemWakeCall - messageType = 0xE0000340
Aug  8 22:15:11 MBA2014 kernel[0]: AppleCamIn::wakeEventHandlerThread
Aug  8 22:15:11 MBA2014 kernel[0]: Previous sleep cause: 5
Aug  8 22:15:11 MBA2014 kernel[0]: AppleHSSPIController::HandleMessage Device Wake by Host
Aug  8 22:15:11 MBA2014 kernel[0]: AppleThunderboltNHIType2::prePCIWake - power up complete - took 179148 us
Aug  8 22:15:11 MBA2014 kernel[0]: AppleThunderboltGenericHAL::earlyWake - complete - took 1 milliseconds
 これは19時15分09病からスリープを開始し19時15分11秒にスリープが終了したことを示しているのだけれど,その後,電源アダプタを外して机の中にしまっておいたのだが,22時15分11秒,つまりスリープしてから3直後に起き出している.Wake reason: EC.SleepTimerとあるのがそれ.
 この3時間というのは,電源管理のpmset(manipulate power management setting)コマンドで確認できる.

...続きを読む

濁点とMacのファイル名

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/8/9 23:46
 ガラケー使いのオカンから「ありか゛とう゜」といようなメールが来ることがある.逆にどうやって入力したんだろうか.゜は句点(。)の代わりっぽいけれど.

 逆に,Macな人と添付ファイルをやりとりすると,次の様なファイルを受け取ることがある.
ハ゜ラメーターシート.xls
 これは何かのバグなのだろうと長年思っていたのだけれど,これはUnicode的にNormalization Form Canonical Decompressionという規格なのだそうだ.
 濁点・半濁点だけでなく,ウムラウトも含んだこういうものを,「ダイアクリティカルマーク」というそうなのだけれど,MacのHFS+というファイルシステムではこれを採用している.
 平たく言うと「パ」を「ハ」と「゜」に分離して管理するのだそうだ.なぜそれを採用したのかはわからないけれどな.
  
 文字化けしない様に変換するには,nkfにこういうオプションをつければ良いです.
nkf --ic=UTF8-MAC
 でも,Yosemiteだと「ハ゜ラメーターシート」になるけれどEl Capitanだと,へんな変換にならないね.OSが対応したのかnkfが対応したのかわからない...
 OS X 10.10.5のYosemiteにて,/var/log/system.logをウォッチしていたら,大量にログがでていた.大量というのは,頻繁に出ているのもあるけれど,1つのエラーに対するエラー表示行数が多い.

Aug  8 10:59:53 MBA2014.local apsd[77]: Illegal subject name missing 'courier.push.apple.com' (2.5.4.3): ({
            label = "2.5.4.6";
            "localized label" = "2.5.4.6";
            type = string;
            value = US;
        }, {
            label = "2.5.4.8";
            "localized label" = "2.5.4.8";
            type = string;
            value = California;
        }, {
            label = "2.5.4.7";
            "localized label" = "2.5.4.7";
            type = string;
            value = Cupertino;
        }, {
            label = "2.5.4.10";
            "localized label" = "2.5.4.10";
            type = string;
            value = "Apple Inc.";
        }, {
            label = "2.5.4.3";
            "localized label" = "2.5.4.3";
            type = string;
            value = "courier.sandbox.push.apple.com";
        })
 このapsdというのは,Apple Push Notification service daemonの事で「通知センター」.多分,次のようにFirewallで通信が許可されて無いからエラーが出ている模様.

Apple のプッシュ通知が届かない場合
https://support.apple.com/ja-jp/HT203609

 システム環境設定で「通知センター」の中にある不要な通知をオフにしてみた.
これで出無いはずなのだけれど.
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.apsd.plist
 再開させるにはコレ.
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.apsd.plist
 そして止めてみる.まずはプロセス確認.
$ 🆑ps -ef|grep apsd
    0    77     1   0 10:08AM ??         0:01.55 /System/Library/PrivateFrameworks/ApplePushService.framework/apsd🈁
240633758 18110 14561   0 11:13AM ttys004    0:00.00 grep apsd
$
 停止コマンド実行.
$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.apsd.plist🆑
Password:

$
 確認.
$ 🆑ps -ef|grep apsd
240633758 18198 14561   0 11:13AM ttys004    0:00.00 grep apsd

$
 停止した.これで,ログは出なくなるはず.

UCS-2とUTF-8

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/8/2 22:39
 MacのExcel 2011で文字列カウントしていて気付いたのだけれど.VBAやワークシート関数で文字列長を調べるLenとLenBがある.LenBはByte単位.2バイト文字を1文字入れるとLenだと1だがLenBだと2となる.
 半角1文字を設定しても,戻り値が2になるので調べてみたら,WindowsNT/2000/XP、Office2000以降は,UNICODEでもUCS-2エンコードを採用しているとの事.
 このUCS-2だと,半角英数字1文字でも2バイト.なんだかむかし,JIS,EUC,SJISと混沌としていた時代,Unicodeになると文字コード問題を解決するための夢の規格がユニコードで,全ての文字が2バイトで表現される...と大雑把に教えてもらった事がある.それがUCS-2だったのか.

 ちなみに,今一般的になっているUTF-8だと思うけれど,それだと全角文字は3バイトで,半角英数は1文字.
 検証してみる.まずはLANG設定を確認.
MBA13:~ ujpadmin $ env|grep LANG
NLS_LANG=Japanese_Japan.AL32UTF8
LANG=ja_JP.UTF-8
MBA13:~ ujpadmin $
 バイト数をカウント.
MBA13:~ ujpadmin$ echo a > a.txt
MBA13:~ ujpadmin$ wc -c a.txt
2 a.txt
MBA13:~ ujpadmin$
 2バイト.これは改行コードが最後に入っているから.16進数でダンプしてみれば確認出来る.
MBA13:~ ujpadmin$ hexdump a.txt
0000000 61 0a
0000002
MBA13:~ ujpadmin$
 LF(LineFeed)の0aが入っている.次に日本語.
MBA13:~ ujpadmin$ echo あ > あ.txt
MBA13:~ ujpadmin$ wc -c あ.txt
4 あ.txt
MBA13:~ ujpadmin$
 4バイトなので改行コードの1文字を引いて3byteとわかる.

SJISの独自拡張のCP932とか,いろいろな事があったけれど,統一規格としてのユニコード.いまはメーカプラットホーム毎に絵文字を拡張しているから,結局整理すると個性を発揮できないというデメリットを解消するため?差別化するために独自に進むしか無いという所もあるなぁ.

vmstatで日時を表示

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/7/28 23:58
 vmstatコマンドを実行してサーバの負荷状況を見る事ができるけれど,何時何分かわからない.そんな時には,このように.
vmstat 1 | awk '{print strftime("%/%m%d %H:%M:%S"), $0}'
 vmstatの標準出力の前に,日時を表示する.とても便利.
bashを使っていて,思ったようにコマンド履歴が保存されてないなと思う事があるんだけど,ちゃんと調べたらコマンドヒストリは,バッファに入っていて,bashを終了させる時に.bash_historyに書き出されるのだそうです.
 長時間ターミナルを開いていてタイムアウトで切断したような時は,終了処理されてないので消えちゃうんでしょう.

 それで,以下のようなおまじないをしておくと,ほぼリアルタイムに.bash_historyに書き出されます.
export PROMPT_COMMAND='history -a; history -r'
 複数ターミナルを開いていると体系だった参照ができないけれど,そんな事よりはコマンド履歴を他のターミナルでも共有できるメリットがあるね.あと,
 意図せず失わないという事もね.

Pasteコマンドで行を連結する

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/7/28 1:11
 このようなファイルがある.
$ cat list.txt
1
山田
太郎
2
鈴木
二郎
3
真田
秀吉
$
 3行を1行に連結させたい.そんな時に使うのはpasteコマンド.
$ cat list.txt|paste -d, - - -
1,山田,太郎
2,鈴木,二郎
3,真田,秀吉
$
 ハイフンの数だけ連結する.
 この結果をカンマ区切りにしたい派愛は,-dオプションで指定する.
$ cat list.txt|/usr/bin/paste -d, - - -
1,山田,太郎
2,鈴木,二郎
3,真田,秀吉
$
 一応,コマンドパスを確認.
$ which paste
/usr/local/opt/coreutils/libexec/gnubin/paste
$
 Macに最初からインストールされているpasteコマンドを実行.
$ cat list.txt|/usr/bin/paste -d, - - -
1,山田,太郎
2,鈴木,二郎
3,真田,秀吉
$

数字をgrep

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/7/20 21:17
 こんなリストがある.
$ cat list1.txt
1 inu
2 neko
3 nako
4 nuko
5 beko
33 geko
38 tako
6 kako4
7 mako
$
 リストの中から,3を検索.
$ grep 3 list1.txt
3 nako
33 geko
38 tako
$
 すると,3が含まれている全てがリストされる.
 指定した数字文字に限定したい場合,文字列の行頭・行末に着目してみる.後ろにスペースが入っている条件になるので,次のようにgrepすると,ほしい結果になる.
$ grep "^"3" " list1.txt
3 nako
$

改行コードを変数に含める

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/7/12 22:51
 未だに知らないこともたくさんある.いや,世の中知らないことばかりだ.

 こういった,数行の結果を標準出力するコマンドがある.
$ ls -1 /bin|head -n 5
[
bash
cat
chmod
cp
$
 この結果を.意味はないけれど環境変数LSSに入れる.
$ LS5=`ls -1 /bin|head -n 5`
$
 その結果を表示する.
$ echo $LS5
[ bash cat chmod cp
$
 結果が,横一列になっている.これを改行コードを生かした状態にする方法がある.

...続きを読む

ffmpegの対応コーデック一覧の取得

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/7/9 23:36
 フォーマットとコーデックの一覧.
 対応フォーマット.
ffmpeg -formats
File formats:
 D. = Demuxing supported
 .E = Muxing supported
 --
 D  3dostr          3DO STR
  E 3g2             3GP2 (3GPP2 file format)
  E 3gp             3GP (3GPP file format)
 D  4xm             4X Technologies
  E a64             a64 - video for Commodore 64
 〜以下略〜
 コーデック.
ffmpeg -codecs
Codecs:
 D..... = Decoding supported
 .E.... = Encoding supported
 ..V... = Video codec
 ..A... = Audio codec
 ..S... = Subtitle codec
 ...I.. = Intra frame-only codec
 ....L. = Lossy compression
 .....S = Lossless compression
 -------
 D.VI.. 012v                 Uncompressed 4:2:2 10-bit
 D.V.L. 4xm                  4X Movie
 D.VI.S 8bps                 QuickTime 8BPS video
 .EVIL. a64_multi            Multicolor charset for Commodore 64 (encoders: a64multi )
 .EVIL. a64_multi5           Multicolor charset for Commodore 64, extended with 5th color (colram) (encoders: a64multi5 )
 D.V..S aasc                 Autodesk RLE
 D.VIL. aic                  Apple Intermediate Codec
 〜以下略〜
 たくさんありすぎ.何が一般なんだろうね.
 Imagemagickをインストールしてあれば,mogrifyコマンドも入っている.次の様に変換.
MBA13:$ mogrify -quality 100 -geometry 1024x577 *.jpg
MBA13:$
 画像サイズを変換なのだけれど,最高品質にするためにqualityを100にしている.
 動画を作成.
MBA13:$ convert -quality 100 -delay 300  *.jpg test.mpg
MBA13:$
 ここでは1枚を300ms,つまり3秒表示するMPEGファイルを作成.元画像をリサイズしていないとすぐエラーが出る.メモリ不足とかの影響かなぁ.
 作成された動画を確認してみる.
MBA13:$ ffmpeg -i test.mpg
ffmpeg version 3.0.2 Copyright (c) 2000-2016 the FFmpeg developers
  built with Apple LLVM version 7.3.0 (clang-703.0.29)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/3.0.2 --enable-shared
 --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables
 --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-opencl
 --enable-libx264 --enable-libmp3lame --enable-libxvid --enable-vda
  libavutil      55. 17.103 / 55. 17.103
  libavcodec     57. 24.102 / 57. 24.102
  libavformat    57. 25.100 / 57. 25.100
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 31.100 /  6. 31.100
  libavresample   3.  0.  0 /  3.  0.  0
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100
Input #0, mpeg, from 'test.mpg':
  Duration: 00:01:59.92, start: 0.540000, bitrate: 368 kb/s
    Stream #0:0[0x1e0]: Video: mpeg1video, yuv420p(tv), 1024x577 
[SAR 1:1 DAR 1024:577], 104857 kb/s, 25 fps, 25 tbr, 90k tbn, 25 tbc
At least one output file must be specified
MBA13:$
 情報にノイズがおおいけれど,最後の5行が動画ファイルの情報.MPEG1ビデオが作成されている事がわかります.音声なし.

NTP

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/7/9 2:12
 Macはずいぶん前から独自のNTPサーバを立ち上げてOSはそこに接続する様にできている.なので普段時間合わせなんて考えた事なんて無いのだけれど,Firewallで接続許可されてない何て事もある.
 気がついたら,時間がかなりずれているかもしれないのだけれど,たまに以下のURLにアクセスすれば時間があっているかどうか簡単に確認できます.

情報通信研究機構
https://www.nict.go.jp/JST/JST5.html

 これ,なかなか興味深いね.

公開NTPサービスについてご説明します
http://www2.nict.go.jp/aeri/sts/tsp/PubNtp/

午前12時,12:00PM

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/7/7 1:24
 受け取った文字列に"PM"が入っていたら,12時間加算するというロジックがあって,エラーになっていたので直すというミッション.
 元のデータは12時間表記で,変換後は24時間表記.Excelとかあれば簡単なのだけれど,bashなので文字列を取り出して再構成する感じ.
 それでロジック的には12:00 PMと文字列変数に代入されるけれど,PMと入っているので単純に12時間足すと24:00となる.24時00分は便宜的には存在するけれど実際にはないのでエラー.
 そもそも,お昼の12時は日本だと「午前12時」なのだけれど,英米だと12:00 PMなのだと初めてちゃんと把握した.

お昼の12時のことを「正午」というけれど,それは午前12時で,12時1分は午後0時1分.夜中の12時は,あまり使わないけれど「正子」といい,午後12時で12:0AM.同じく真夜中の12時1分は午前0時1分が正解.
 普段生活していて「昼の12時」「午前12時」とはいうけれど,「午後12時」とは言わないね.なんとなく「午後一番(ごごいち)」というと,13時あたりを示す言葉だからそっちは合っているのか.

 つまりロジック的には文字列を取り出して"PM"だったら12を加算すればよいけれど,合計値が24だったら12にすれば良い.

$ date -d '2016/7/6 12:00:00' "+%Y/%m/%d %H:%M:%S %p" 
2016/07/06 12:00:00 PM
$

増えだしたら一気に

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2015/5/28 1:12
 ディスク使用量のアラートは,しきい値をどこに設定するか,またその頻度をどうするかというのがある.特にあまり監視コストをかけられないような用途の場合.


 早期発見のためには高頻度監視なんだけれど,そうなると通知が頻発すぎて難しい.余裕あるよう70%を閾値とした場合に,一旦71%になるとそれを解消するまではずっとアラームが上がり続ける.そしてオオカミ少年のようになり,アラーム無視され,重大事故の時に発見できなくなる.



 このサーバの場合,目算で95GB程度で安定していたにもかかわらず,とある障害でエラーログを大量に吐き出し始めたら,50GBほどの大きなログファイルが生成され,最大容量の150GBとなってディスクフルになってしまった例.
 わかってしまえば「ログファイルだった」のだけれど,昔のUNIXのようにファイルシステムのパーティションを複数分割しないから,どのディレクトリ,ファイルが増えたのかは手探りで探す必要がある.LinuxやMacOS Xだとfindコマンドだし,WindowsだとExplorerの検索オプションにファイルサイズを指定するところがある.

急にディスクの空きが無くなる

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2015/5/8 18:32
 MacBook Airのディスク空き容量が急激に減る現象が発生.調べると以下のログ領域にファイルがたくさんできている.
/private/var/log/DiagnosticMessages
/private/var/log/asl
 みていると,mds,mdworkerが暴走状態.実際には何かしらのきっかけでaslやDiagnosticMessages以下のログファイルが肥大化してそれをきっかけにmdworkerがCPUリソースを食い処理遅延が発生しエラーを吐き,syslogdにログを転送してそのログをmdworkerが読み込んで処理遅延・・・というような状態.

 中身を見てもバイナリファイルだったので,サクッとファイルを消して再起動したら復旧.
 タイトルのままです.Windowsのバッチプログラム.

@echo off
set YYYYMMDD=%date:~-10,4%%date:~-5,2%%date:~-2,2%
set time2=%time: =0%
set HHMMSS=%time2:~0,2%%time2:~3,2%%time2:~6,2%

echo %YYYYMMDD%
echo %HHMMSS%

 30年くらい前に,YYYYMMDDを返すだけのCプログラムをmakeした事があるんだがな.~を使って文字列を抽出できるようになっていたとは・・・

MacOS Xでコマンドで日時を合わせる その2

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2011/9/4 23:07
 MacOS Xで,NTPDが動いているのに,正しく時間があわない場合.以下の様にntp.confを編集して,サービスを再起動してみる.
ivory:root# cat /etc/ntp.conf
#server ntp.nict.jp
server time.apple.com iburst
ivory:root#
 iburstを付けるのがミソ.
ivory:root# ntpd -f /var/run/ntp.drift -p /var/run/ntpd.pid -c /etc/ntp.conf
ivory:root#
 サービスを再起動してみる.
ivory:root# sudo SystemStarter -d restart "Network Time"
SystemStarter[13235]: Found item: Apache

〜略〜

SystemStarter[13235]: Found item: NetworkTime

〜略〜

SystemStarter[13235]: Running command (13236): /System/Library/Sta
rtupItems/NetworkTime/NetworkTime restart
Stopping network time synchronization
Starting network time synchronization
Looking for host time.apple.com and service ntp
host found : time.apple.com
SystemStarter[13235]: Finished network time synchronization (13236)
SystemStarter[13235]: none left
ivory:root#
 これで暫く様子見で. これはPowerBook G4 667MHzにインストールしたMacOS X 10.4 Tigerでの事.そろそろCMOSの電池が無いので狂いまくってるのかな.
 先週
Socket is not connected: core_output_filter: writing data to the network
 というエラーがでたので
EnableMMAP off
EnableSendfile off
 を入れてみたら,なんと!
 (32)Broken pipe: core_output_filter: writing data to the network
 というエラーが出る様に変更されてました.これもまた情報があまり無い.別このエラーがでていても不具合は無いので放置プレイみたいだ.
 Apacheのエラーログを見ていたら,こんなログが書かれていた.
Socket is not connected: core_output_filter: writing data to the network
 ファイルシステムをNFS等でマウントしている時にでるエラーらしいけれど,使ってないので関係ないとおもうのだが...

 ネットで調べたらhttpd.confに記載してあるEnableMMAPとEnableSendfileが関係するようなので,まずは確認してみる.
#
# EnableMMAP and EnableSendfile: On systems that support it,
# memory-mapping or the sendfile syscall is used to deliver
# files.  This usually improves server performance, but must
# be turned off when serving from networked-mounted
# filesystems or if support for these functions is otherwise
# broken on your system.
#
#EnableMMAP off
#EnableSendfile off
 コメントアウトされているので,offが明示されてないのでどっちなのか解らんな. まずは,コメントを外してoffを有効化してApacheを再起動してみる.

 まぁ,またしばらくしてから,ログにかき出されてないか効果を確認してみよう.

lsコマンドで表示される日付形式を変更する

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2011/8/24 18:08
 普通に,ls -laと入力すると,MM DD YYYYとMM DD hh:mmの形式になる.昨年以前ならYYYYで,今年なら時分が表示されるという事.

 MacOS Xで,これを常にYYYYで表示したいときは,
ls -alT
 と入力すれば良いです.

ltrace/strace

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2011/4/19 23:00
ltrace プロセスが使っているライブラリを出すツール。実行中のプロセスも可能。 
strace プロセスが呼びだしたシステムコールを表示する。

MacOS Xでコマンドで日時を合わせる

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2011/4/1 1:13
 訳あってNTPが使えないサーバで,日時が狂ってしまった時に合わせる方法.
 Linuxだとdate -s 201104010000で合わせるけれど,MacOS Xだとdate -uを使います.

 このような感じ.
ivory:/Users/tiger root# date -u 033116082011
Thu Mar 31 16:08:00 GMT 2011
ivory:/Users/tiger root# date
Fri Apr  1 01:08:02 JST 2011
ivory:/Users/tiger root#
フォーマットは,
date -u 月日時分年 です.
つまり,
date -u 033116082011
は,3月31日16時8分 2011年という意味なのですが,設定するとGMTなので,JSTは-9時間なのでこの様になります.
Fri Apr  1 01:08:02 JST 2011

sedで連続する先頭文字の置き換え

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2011/2/22 21:07
sed 's/^\.*//g'

......AAA
....BBB
.......CCC
を,

[/code].AAA
.BBB
.CCC
[/code]にする.

curlコマンドでレジュームする

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2010/11/16 21:47
 curlコマンドでダウンロード行っていてタイムアウト( curl: (28) FTP response timeout )などで中断する事があります.
 ダウンロードした部分の続きから再ダウンロード(レジューム,リジューム)したい場合がありますが,次のサンプルの様に実行します.

●通常のダウンロード

curl -O ftp://xxxx/archive.gz

●レジュームする場合

curl -C - -o archive.gz http://xxxx/archive.gz

 ダウンロードが再開すると,"** Resuming transfer from byte position XXXX"というような感じで残りのデータ量が表示されます.
 小さいテキストファイルだったらテキストエディタのmiを使って変換できますが,1MBを超えると動作が遅くなって使い物にならなくなります. かといってiconvを使うと微妙にエラーがでて困るので,そんな時に見つけたのが,このCharcoというツール.


 返還元のファイルを指定し入力文字コード,出力文字コードを指定,出力先のファイルを指定すると変換が始まり保存されます.
 今回4MBのテキストファイルの変換が問題なく実行できました.

 変換形式にUTF-8やEUCはありますが,SJISやShift-JISの表記はありません.ですが,DOSJapaneseで対応できました.

ダウンロードはこちら.
http://www.marblesoftware.com/Marble_Software/Charco.html

SNMPでネットワークトラフィックを取得する

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2010/3/25 23:54
 ネットワークトラフィックを取得するには,つぎのOIDを使います.

IF-MIB::ifInOctets .1.3.6.1.2.1.2.2.1.10.x
IF-MIB::ifOutOctets .1.3.6.1.2.1.2.2.1.16.x

 最後のxはインタフェイス番号を入れます.

snmpwalkコマンドで実行するとこんな感じ.
ivory:/Users/ujpadmin root#  snmpwalk -v 2c -c public localhost "IF-MIB::ifInOctets.4"
IF-MIB::ifInOctets.4 = Counter32: 571539656
ivory:/Users/ujpadmin
 コミュニティ名はpublicにしていますが,各自で変更してください.

Canonicalizable

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2010/2/3 20:34
Webサイトの規定のドキュメントファイル名(index.htmlとか)がついたURLがあるかチェックできます.

Canonicalizable
http://www.nickgerner.com/canonicalizable/

問題無いか何かしらのレスポンスがあれば,次の様に表示されます.

Everything looks good so far!

うちのサイトは,ちょっと問題ありですな.

Red Hat ES 3でaudit.dのログを消す

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2010/1/21 16:52
 Red Hat ES3で運営しているサーバで,messagesファイルにauditdのエラーが書き出されました.
auditd[xxxx]: output error

 auditdはシステム監査機能のデーモンですが,ディスクの空き容量が20%を切るまでログファイルを作成し続けます.
 dfコマンドで空き容量を確認したら空き容量が85%だったので,これが原因でしょう.
/var/log/audit.dを確認すると,大量のデータが保存されていました.

...続きを読む

 メールサーバがハングアップして,メールが届かなくなった. メーラからメールの接続は問題無いので気づかないが,しばらくメールが届かないので不審に思う.

 メールサーバはpostfixで動いているので,mail.logをみると,次の様なエラーが.
deferred (delivery temporarily suspended: connect to 127.0.0.1[127.0.0.1]:10024 Connection refused
 コネクションが拒否されているのはわかるのですが,このエラーで探しても情報が無いので苦労しました.
 10024というのはamavisdへの接続ポート.TELNETしても繋がらない. amavisdは,amavisd-newの事で,ウイルススキャナへのパイプを行うデーモンなのですが,そこに接続できてなかった.
 amavisdが起動してなかったので,手動で起動させてみたら,こんなエラー.
sh-3.2# /usr/bin/amavisd
  The value of variable $myhostname is "juno", but should have been
  a fully qualified domain name; perhaps uname(3) did not provide such.
  You must explicitly assign a FQDN of this host to variable $myhostname
  in amavisd.conf, or fix what uname(3) provides as a host's network name!
sh-3.2#
 ホスト名がjunoってなってるけどFQDNで解決できないから起動できないという話.

 以前のMacOS X Serverではホスト名が安定しないという不具合?があって,固定にしていました.システム環境設定から設定できるホスト名じゃなくて,/etc/hostconfigを編集します.
 デフォルトではこの様になっています.
sh-3.2# cat /etc/hostconfig|grep HOSTNAME
HOSTNAME=juno
sh-3.2
 これを次の様にデフォルトに戻しました.
sh-3.2# cat /etc/hostconfig|grep HOSTNAME
HOSTNAME=-AUTOMATIC-
sh-3.2
 変更後,OSを再起動して問題が解消しました. しかし,今更なぜこの現象が露呈したのかが不明です.

RTX1100でのDHCPの手動リリース

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2009/12/22 12:30
 RTX1100/RTX1200等でDHCP運用している時に,リース(貸し出し)されているIPアドレスをリリース(解放)するには,次の様に実行.

 以下のコマンドでリース情報を確認.

show status dhcp

 リリースする場合は,次のコマンドで.

dhcp manual release IPアドレス

 リリースされたかどうかは,再度ステータスを確認.

show status dhcp

以上.

WindowsでMD5やSHA1を検証する

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2009/12/10 12:41
 ダウンロードファイルの誤り検出の為に用いられるMD5やSHA1ですが,Windowsで検証するツールがマイクロソフトから提供されていました.

Availability and description of the File Checksum Integrity Verifier utility
http://support.microsoft.com/default.aspx?scid=kb;en-us;841290

 ダウンロードしたファイルは自己展開のアーカイブなので,実行するとfciv.exeファイルが展開されます.
 fciv.exeファイルにオプションを付けて実行すると,md5値等が取り出せます.

fciv.exe -md5 ファイル
fciv.exe -sha1 ファイル

リンクカウント

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2009/10/28 12:46
 UNIX系でlsコマンドをリストオプション(-l)を付けて実行すると,次の様に表示されます.
leopard:usr ujpadmin$ ls -la
total 8
drwxr-xr-x@ 12 root wheel 408 Jun 1 2008 .
drwxrwxr-t 38 root admin 1360 Oct 20 18:28 ..
drwxr-xr-x 9 root wheel 306 Feb 22 2008 X11
lrwxr-xr-x 1 root wheel 3 Feb 22 2008 X11R6 -> X11
drwxr-xr-x 914 root wheel 31076 Sep 12 00:18 bin
drwxr-xr-x 268 root wheel 9112 Mar 25 2009 include
drwxr-xr-x 397 root wheel 13498 Sep 12 00:18 lib
drwxr-xr-x 94 root wheel 3196 Sep 10 00:10 libexec
drwxr-xr-x 11 root wheel 374 Oct 20 20:55 local
drwxr-xr-x@ 243 root wheel 8262 Sep 12 00:18 sbin
drwxr-xr-x 71 root wheel 2414 Sep 10 00:10 share
drwxr-xr-x 5 root wheel 170 Feb 22 2008 standalone
leopard:usr ujpadmin$
 リストの意味は左から順番に,次の通り.

パーミッション
リンクカウント
ユーザ
グループ
ファイルサイズ
タイムスタンプ
ファイル名

 この"リンクカウント"というのは見慣れませんが,内包しているファイル&ディレクトリ数のようなものです.
 たとえば,binディレクトリは914と記載されていますが,リストを出してwc -lで行数をカウントしてみます.
leopard:usr ujpadmin $ ls -la bin|wc -l
915
leopard:usr ujpadmin $
 915となっていますが,これは自分自身が含まれているので1つ多いです.

...続きを読む

MacOS Xで大量のテキストファイルを置換する

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2009/10/20 20:25
 約1000ファイルのテキストファイルの中にある一部の文字列を大量に変換する必要が出てきました.
 Macのテキストエディタを探したのですが,次の2つがありました.

Mac版 iSED 1.5
http://homepage.mac.com/lightway/download/

・日本製
・大量ファイルの読み込みが速い
・文字コードがUTF-8だと文字化けする.
・変換が速い.
・保存する際に毎回ダイアログがでるので保存に時間がかかる.


Komodo Edit
http://www.activestate.com/komodo_edit/

・英語
・大量ファイルの読み込みが遅い
・変換が遅い
・上書き保存するモードを選択できるので保存が楽

 今回は100ファイル程をKomodo Editを使いましたが遅いので残りをiSEDを使って変換しました.

 変換したいテキストファイルが1つのフォルダに保存されていたりすれば自分でsedを書いたが速いのですが,複数フォルダ&階層なのでSpotlightで検索した結果を変換するには,ツールが必要でした.

ARP: Illegal packet at LAN2

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2009/8/6 23:28
 RTX1200を設置している最中,ログに次の様なメッセージが残っているのを発見しました..
2009/08/06 15:30:34: ARP: Illegal packet at LAN2, IP=192.168.1.2, MAC=00:17:42:f2:38:54
 これは,RTX1200ではLAN1,LAN2,LAN3と3つのLANを定義できますが,LAN2のネットワークに,他のネットワーク(この場合LAN1かLAN3)で使っているセグメントのIPアドレスのマシンが紛れ込んでいるという事でした...

TeraTermのマクロ

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2009/7/30 0:39
基本的には、次の2つでどうにかなる.

wait 'login:"
sendln 'userid'
wait 'Password:'
sendln 'nagaipassword12345&'
waitで、標準出力を待ち、sendlnで、入力をする.

sendlnはラインフィード(LineFeed),つまり改行付きです.
sendは改行が付きません.これの例は次の通り.
send "a"
send "b"
send #10
send "c"
send #10
send "d"

 これを実行すると次の様になる.

ab
c
d
ここで#10は、改行&H0Aと同じ.

どういう時に使うかというと,ダブルクォートやシングルクォートがたくさんあるときは,1行で記述するのではなくて,複数行に分けると使いやすいです.

ヤマハルータの動的フィルタ

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2008/11/19 23:40
 RTX1100とRT58iをセットアップしているのですが,動的フィルタの導入を行うと便利だというので,調べてみました.

 参考になったのは,これ.

ファイアウォール機能
http://www.rtpro.yamaha.co.jp/RT/docs/firewall/index.html

 悩んだのはプロトコル名の所で,通常のフィルタと同じで定義名(ftp,www,domain等)かポート番号を入力すれば良いと思ってたのですが,定義名じゃないとダメなのですね.
 別にフィルターを定義して,その定義番号を入力すれば良いという事が判りました.

 たとえば,FTPだと定義名があるのでこのように動的フィルタを設定します.

ip filter dynamic 1 * * ftp

 SSHの22番ポートを動的フィルタにしたいという場合,このように定義したいのですが.

ip filter dynamic 1 * * 22

 これを入れるとError: Illegal keywordとなってしまいます. そんな時には,次の様に設定します.

ip filter 444 pass * * 22
ip filter dynamic 101 * * filter 444

いったんfilter 2番で22番ポートの接続を許可(pass)する設定を定義して,動的フィルタではそのフィルタ番号を指定してあげます.

広告スペース
Google