2015年12月27日日曜日

Mac OS X(10.10.5)とKarabiner(10.15.0)でCommand-←/→がCommand+Option+←/→になってしまう

Mac OS X(10.10.5)とKarabiner(10.15.0)でCommand-←/→(ブラウザのback/forward)がCommand+Option+←/→になってしまうようになりました。
KarabinerはMacOS Xで動作するキー割り当てのカスタマイズツールです。
Karabiner
高機能で安定性も極めて高いOS X用のキーボードカスタマイズツール。
https://pqrs.org/osx/karabiner/index.html.ja
いろいろと試してみたところ、Karabinerを無効にすると首記の現象は出なくなります。しかし、Karabinerの設定を眺めてみてもこれに関係するものありません。また、もしかしたらと思う設定を変えてみましたが効果はありません。
また持っているMacBook ProでKarabinerをインストールして同じような設定をしていますが、こちらは現象が出ません

ここでふと思いついて、システム設定中のキーボードの修飾キーの設定を見てみました(この思いつきに論理的な考えはなく、ふと思いついてみただけです)。
すると一番上の[キーボードの選択]の中に、使っているBluetoothキーボード(Logitech diNovo Edge)の他に[USBレシーバー]という選択肢があります。これは使っているマウス(Logitech M510)用のUSB受信機のようです。マウスなのにキーボードとしても認識されています。これは、このUSB受信機にLogitechのキーボードを結びつけることができるために、マウスの他にキーボードとしても認識されているようです。

修飾キーのUSB受信機の設定を開いてみると、キーボードは接続してないのですが、OptionキーをComanndキーに、CommandキーをOptionキーに変更するようにしていました。この変更をやめ、OptionはOption、CommandはCommandのままにするようにしてみると、首記の現象は出なくなりました。

なぜこんなことをしていたかというと、Macのキー設定のためでした。Macのキーボードはスペースキーのすぐ外側にCommandキー、さらにその外側にはOptionキーがあります。このMacにWindowsのキーボードを接続すると、AltキーがOptionキーにWindowsキーがCommandキーになり、Macのキーボードと並びが逆になります。私は、ふだんMacBook ProとWindows用の英語キーボードを接続したMac miniを使っています。するとMacBook ProとMac miniで並びが違ってしまいます。そこで、Windows用のキーボードを接続したMacでは、Windowsのキーボードの修飾キーの並びを変更し、同じように使えるようにしていました。

このため、すべてのキーボードの修飾キーについて、ComanndとOptionキーを入れ替えていたのがアダになったようです。


2015年12月21日月曜日

fml 4をperl 5.16で動作させる

FreeBSDでパッケージをアップデートしているときに、ふとperlを5.16にしてしまったところ、メーリングリスト管理ソフトウェアfml 4.0でエラーができるようになりました。

同じようなことで困っている人がいないか探してみると、次のWWWページを見つけました。
fml の makefml がエラー 
http://www.unknown24.net/bbrk/20141229/fml
エラーメッセージは次のような感じです。
$ ./makefml
defined(@array) is deprecated at ./makefml line 4357.
(Maybe you should just omit the defined()?)……
このWWWページにあるようにperlのソースを変更することで、動作するようになりました。以下に、変更を引用します。
  • getoptsのあたり
    require 'getopts.pl';
    getopts('dhf:A:O:p:D:vwV:mi:u:UF');

    use Getopt::Std; Getopts("dhf:A:O:p:D:vwV:mi:u:UF"); 
  • definedのあたり
    if (defined @entry) {

    if (@entry) {
fml4は新しいperl5.22などでは動かないので、そのときには、以下のようにします。
  • システム全体のデフォルトのperlを5.22にアップデートする。
    これは/usr/local/binに入るので、perlを使うアプリケーションは基本的には/usr/local/bin/を参照するようにする。
  • 改めて/usr/port/lang/perl5.16でmake installしてperl 5.16をインストールする
    これは/usr/locak/bin/perl5.16.xなどでインストールされるので、これを参照するようにするか、/usr/bin/perlを/usr/local/bin/perl5.16.xへのシンボリックリンクとして、古いperlアプリケーションは/usr/bin/perlを参照するようにする。
  • fmlも/usr/bin/perlなどを古いperlを参照するように先頭の#!/usr/local/bin/perlを書き換える。

2015年12月17日木曜日

JALの沖縄-シンガポール便を利用したマイレージ修行

JALで効率的にマイルとFOPを貯めるために、沖縄-シンガポールを往復するという方法があります。
4月1日以降のOKA-SINについて考察
http://jgc.blog.jp/archives/okasin-faq14.html
これによれば、HND-OKAをウルトラ先得で飛ぶとして、102,000円で21,240マイル、13,456FOPになり、1FOPを得るのに2.845円だそうです。問題は、旅程としてどうしてもシンガポールに1泊する必要があり(とんぼ返りができない)、ホテル代として1万近くかかってしまうことでした。
OKA-SIN修行のホテルは空港のトランジットホテルか市内か?
http://jalグローバルクラブ.jp/jgc-training%E2%80%90hotel
上記のblogではホテル代を節約するために、チャンギ空港内のトランジットホテルを利用するほうが紹介されています。

トランジットホテルを利用せず、制限区域内の航空会社のラウンジに宿泊すればホテル代が不要になるのですが、ラウンジに入るためには搭乗券が必要です。しかし、出国していないのでJALのチェックインカウンターには行けず、搭乗券を出してもらうことできません。
なにか方法はないかと探してみると、制限区域内のトランジットカウンターで搭乗券を出してもらう事ができるようです。
チャンギ空港のボーディングパス発券時間について
http://ameblo.jp/hana-emi88/entry-11776600690.html
以下に引用します。
チャンギのボーディングパスの発券時間については、チャンギの制限エリアから出ずに空港内で夜明かしする際、ボーディングパスの発券が可能になる時間は、2:00です。
正確には「自分たちが乗ってきた711便が710便として折り返し出発した後」だと思ってください。
断られたこともありましたが、
「あらぁ、前回はできたのに? ちょっとやってみて 待ってるから」
(Ohh・・・ the last time I came here, I could get it. Can you just try?  I can wait. )
と言って発券してもらいました。
どうしてもダメっていう人もいるので、
「日本航空に電話をつないでください」
(Could you make a phone call to the Japan Airline? or Can you put me through to the Japan Airline?)
とお願いしました。
JALの日本人スタッフと話ができさえすれば必ず発券してもらえます。
たしかに、トランジットカウンターではなかなか発券してもらえないようです。
2015年初のシンタッチ
http://ameblo.jp/rx-78golf/entry-12044260697.html

多少迷いEゲートのトランジットカウンターに着き、羽田で印刷してもらった紙のEチケットを見せました。
ところが、9時以降に出直せ

再びトランジットカウンターに突撃
多分係りの人が言ったのは21時のことだとは思っていましたが、違う人だと対応が違うのでは?と思いながら行きました。

さっきの人と同じでした(*_*)
結果、見事に追い返されました
もう少し探してみると次のような記事を見つけました。
SINタッチ修行する時のシンガポール空港内の滞在方法
http://www.mile-tokutoku.com/travelog/travelog_239_2.htm
引用します。
「空港内には、プライオリティパスなどで入れる有料ラウンジがあるけど、出発便の搭乗券がない状態でも入れるのか?」
基本的には、入れることになっているようですが、係員によっては、「出発する人のみ」と言う人もいました。
私の場合、プライオリティパスで複数のラウンジに複数回入ったのですが、到着便の搭乗券の提示で何も言われない時もあれば、出発便の搭乗券を見せるように言われた時もありました。
私はまだ出発便の搭乗券がなかったので、代わりに、出発便のEチケットを見せればOKでした。 
もしかしたら、プライオリティパスとは事情が違うかもしれませんが、JALのチャンギ空港のラウンジ(SATS Premier Club Lounge)で出発便のEチケットを見せれば入れるかもしれません。

2015年12月12日土曜日

ParallelsにインストールしたWindows 7で1年ぶりにWindows Updateを実行したら、まったく進まない

先日、ParallelsにインストールしたWindows 7で1年ぶりにWindows Updateを実行したら、まったく進まずに困りました。
検索エンジンで「Windows Update 進まない」といったキーワードで探してみると、以下のようなWWWページが見つかりました。
1年以上放置してたWindows Updateが全然進まない件→解決
http://decomo.info/wiki/blog/2015/2015-09-23

Windows Updateが遅い、進まない、終わらない、失敗する問題の解決方法
http://freesoft.tvbok.com/tips/windows_update/not_proceed_update.html
さっそく、ここに記述されていたWindows 7 のシステム更新準備ツールを実行し、Windows Updateエージェントを最新版にしたところ、解決できました。
x64 ベース システム用 Windows 7 のシステム更新準備ツール (KB947821) [2014 年 10 月]
https://www.microsoft.com/ja-jp/download/details.aspx?id=20858
Windows 7 用のシステム更新準備ツール (KB947821) [2014 年 10 月]
https://www.microsoft.com/ja-jp/download/details.aspx?id=3132
Windows Update エージェントを最新バージョンに更新する方法
https://support.microsoft.com/ja-jp/kb/949104

2015年12月8日火曜日

企業年金に関する用語

先日、資料に基づき年金に関する判断を求められました。資料を読んで判断しようとしたのですが、資料の用語とその説明がわかりにくく困りました。以下に、私がわかりにくかった用語と調べてわかったことをまとめます。

確定給付年金(第1年金)

以下のWWWページの説明が役に立ちました。
確定給付企業年金(DB)の概要
http://www.rokinren.com/kigyonenkin-support/outline/db.html
確定給付企業年金は、現在日本でもっとも多く利用されている企業年金制度です。2013年3月末の時点で約800万人が加入しています。確定給付企業年金 は、2002年4月に施行された確定給付企業年金法にもとづき設置される企業年金です。その名の通り、会社が拠出・運用・管理・給付までの責任を負う「確 定給付」型の企業年金制度であり、勤労者の老後の年金給付を実現する上でも大きな役割を果たしています。

DB

DBとあると私はData Base(データベース)と思いますが年金では違う意味でした。
確定給付年金
https://ja.wikipedia.org/wiki/%E7%A2%BA%E5%AE%9A%E7%B5%A6%E4%BB%98%E5%B9%B4%E9%87%91
確定給付年金(かくていきゅうふねんきん。DB制度:Defined Benefit Plan)は、給付額が、制度資産の利回りに直接基づかず、加入者の勤務期間や給与などの要素に基づく計算式によって規定される年金制度のことである。 

確定給付企業年金が制定された経緯

経緯は以下のWWWページで解説されていました。
厚生年金基金解散!?加入者440万人の老後生活はどう変わる?
(第3回 厚生年金制度廃止後の代替手段)
http://jpn.nec.com/n-town/column/nenkin/03/
この章では、厚生年金基金制度廃止後の代替手段について比較します。厚生年金基金制度の後継制度として考えられるのは、確定給付企業年金制度、確定拠出年金制度、中小企業退職金共済、特退共、退職金額の増額(=生命保険の活用)などです。

厚生年金基金解散!?加入者440万人の老後生活はどう変わる?
(第2回 厚生年金基金制度廃止の影響)
http://jpn.nec.com/n-town/column/nenkin/02/
結局、AIJ事件を号砲とし、厚生年金基金制度は一気に廃止の方向に舵を切り、平成25年6月に厚生年金基金制度の見直しを柱とした年金制度改正法が成立し、平成26年4月より施行されています。

第1年金

以下のWWWページの解説がわかりやすく感じました。
3つの年金制度への加入
http://www.nippe-shakaihoken.com/06/06_1_2.html
私たちは、「国民年金」「厚生年金」という2つの国の年金と、会社独自の「日本ペイント企業年金基金」という3つの年金制度に加入しています。

年金(第1年金・第2年金)
http://www.nippe-shakaihoken.com/06/06_3_2.html


給付期間 年金額 一時金選択割合
第1年金 15年保証
終身年金
毎年変動 100%
50%
第2年金 5年、10年、15年
確定年金から選択
固定 100%

確定給付年金(第1年金)の運用者

先ほどと同じWWWページ
確定給付企業年金(DB)の概要
http://www.rokinren.com/kigyonenkin-support/outline/db.html
の後の方に解説がありました。
「基金型」の確定給付企業年金は、企業年金基金と呼ばれる特別法人を設立し、法人格をもった基金が、管理・運用・給付を行う企業年金制度です。規約 型DBと異なり、会社とは別個の法人を置くことに特徴がありますが、これにより、会社とも独立した立場から、加入者と受給者の立場に立った制度運営が期待 されます。
基金型DBは、厚生年金基金の代行返上の受け皿として法律上想定されていました。
厚生年金基金については、本来国の厚生年金に相当する部分についても民間サイドで管理・運用・給付を行う仕組みですが、国際会計基準に基づいた退職給付会 計の採用時に積立不足が負債として計上されることが嫌気され、厚生年金基金から確定給付企業年金へ制度変更する「代行返上」が行われることとなりました。
かつては大企業の多くも厚生年金基金を採用してきましたが、大企業が単独で、あるいはグループ企業とともに設立してきた厚生年金基金の多くが基金型DBへ移行しており、新規に基金型DBを設立する例はほとんどみられません。

企業年金連合

企業年金連合に解説のページがありました。
年金給付に関する事業
http://www.pfa.or.jp/activity/nenkinkyufu/index.html
連合会は、企業年金の通算センターとして、企業年金(厚生年金基金または確定給付企業年金)を短期間で退職した者や、解散・制度終了した企業年金に加入していた者から年金原資を引き継ぎ、年金や一時金の給付を行っています。
以下のWWWページに経緯が簡単にまとめられていました。
企業年金連合会も年金支給漏れ(3人に1人)
http://www.office-onoduka.com/nenkinblog/2007/09/31.html
厚生年金基金を10年未満で脱退した人のことを「中途脱退者」。そして基金が解散してしまった場合における加入員のことを「解散基金加入員」を呼びますが、それらの人々の年金の記録については「企業年金連合会」という組織によって管理が移ることになるのです。
企業年金連合会は、2005年9月までは厚生年金基金連合会という名称であったために、その厚生年金基金の中途脱退者等の受け皿としてのイメージもありましたが、名称が変わったことによって、どのような組織なのかがわかりにくくなってしまったという事実もあると思います。

2015年12月7日月曜日

Windowsでレジストリ Scancode Mapを使ってCapsキーをCtrlキーに割り当てる

Windows/MacOSで英語キーボードを使っている場合、私は、CapsキーをCtrlキーに割り当てています。MacOSであればOSの機能、[システム環境設定]-[キーボード]-[キーボード]タブ-[修飾キー]で変更できます。しかしWindowsでは何かのツールか、レジストリでの設定が必要になります。

ツールとしては、以下のものが簡単です。
Ctrl2cap
https://technet.microsoft.com/ja-jp/sysinternals/bb897578.aspx
古いツールですが、Windows7やWindows 10でも動作します。単純にCapsキーをCtrlキーにしたいだけであれば、こちらを使うことをお薦めします。

ツールを使わない方法としてはレジストリでの設定があります。これを使えば、かなり自由にキー割り当てを変更できます。たとえば、左Ctrlを右Ctrlにするなどです。この方法は、以下のサイトで解説されています。
[無変換]キーに[Windows]キーを割り当てる
http://news.mynavi.jp/column/winxp/181/
手順を引用すると以下のようです。
  • レジストリエディタで、HKEY_LOCAL_MACHINE \ SYSTEM\CurrentControlSet \ Control \ Keyboard Layoutを開く
  • <編集>メニュー→<新規>→<バイナリ値>と選択し、「Scancode Map」を作成する
  • ここにキーの変更テーブルを作り、これを有効にするために再起動する
  • 不要になったり間違ったりしたら、Scancode Mapのエントリを削除する
簡潔に解説されていてわかりやすいのですが、レジストリに設定する値についての知識を前提としていて、この解説だけを読むとよくわからないことがある、そして、少しだけ間違いがあることがやや残念です。

まずたぶんまちがいだと思われるのは以下の記述です。
リスト1 ステップ4で入力するバイナリデータ値
00 00 00 00 00 00 00 00
02 00 00 00 5B E0 7B 00
00 00 00 00 00 00 00 00
これで設定完了です。表2の情報はDWORDで管理されており、最初の「0x00000000」「0x00000000」はヘッダ。次の 「0x01000000」は、後に続くDWORDの個数(末尾のターミネータも含む)。そして次の「0x5BE07B00」が肝心の変換コード。 [無変換]キーは0x7B、[Windows]キーは0xE05Bですので、上記のような数値になります。
ここで「0x01000000」は「0x03000000」だと思われます。というのは、レジストリのDWORDは4バイトであること(参照:レジストリの値のデータ型を判別するには?http://www.atmarkit.co.jp/fdotnet/dotnettips/120regtype/regtype.html)、そして、文中の記述「次の 「0x01000000」は、後に続くDWORDの個数(末尾のターミネータも含む)。」が正しいとすれば、DWORDは3つあることから、このように判断しました。
scancode mapの書式を検索してみると以下のWWWページが見つかりました。
Keyboard and mouse class drivers
https://msdn.microsoft.com/en-us/library/windows/hardware/jj128267%28v=vs.85%29.aspx
途中に以下のような記述があり、上記の日本語の解説とも一致します。
The first and second DWORDS store header information and should be set to all zeroes for the current version of the Scan Code Mapper. The third DWORD entry holds a count of the total number of mappings that follow, including the null terminating mapping. The minimum count would therefore be 1 (no mappings specified). The individual mappings follow the header. Each mapping is one DWORD in length and is divided into two WORD length fields. Each WORD field stores the scan code for a key to be mapped.
そして、「リスト1 ステップ4で入力するバイナリデータ値」は
00 00 00 00 00 00 00 00
03 00 00 00 5B E0 7B 00
00 00 00 00 00 00 00 00
だと思われます。
もしくはキー設定の変更が1つ分であれば、「リスト1 ステップ4で入力するバイナリデータ値」は最後の「0x00」が8個ではなく4個、つまり
00 00 00 00 00 00 00 00
02 00 00 00 5B E0 7B 00
00 00 00 00
になると思われます。

次にレジストリに設定する値についての知識を前提としている点です。記事では、[無変換]キーに[Windows]キーを割り当てていて、設定する値は以下のように書かれています。
そして次の「0x5BE07B00」が肝心の変換コード。 [無変換]キーは0x7B、[Windows]キーは0xE05Bですので、上記のような数値になります。 
 0x7B[無変換キー]を0xE05B[Windowsキー]にするわけですから、すなおに表記すれば、
00 7B E0 5B
となりそうなものですが、実際に記述する値は、
5B E0 7B 00
で、先頭を最後尾にした、逆順に並べた表記です。これはこれでわかりやすいのですが、なんだかふしぎです。さきほどのKeyboard and mouse class driversでの記述を見てみると、確かにこのようになっています。
0xE01D0000Remove the right CTRL key (0xE01D --> 0x00).
0xE038E020Right ALT key --> Mute key (0xE038 --> 0xE020).
もう少し説明を読んでみると以下のような記述があります。
In the Keyboard Layout key, the Scancode Map value must be added. This value is of type REG_BINARY (little Endian format) and has the data format specified in the following table.
Littele Endian formatでの記述なのですね。もう少し調べてみると次のような説明を見つけました。
Registry Value Types
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms724884%28v=vs.85%29.aspx

In little-endian format, a multi-byte value is stored in memory from the lowest byte (the "little end") to the highest byte. For example, the value 0x12345678 is stored as (0x78 0x56 0x34 0x12) in little-endian format.
WindowsはLittele Endian formatを使う8086ベースのOSとして発展したので、このような表記になっているだと思われます。

エンディアンについてはWikipediaの説明がわかりやすいでしょう。
エンディアン
https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%B3%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3#.E3.83.AA.E3.83.88.E3.83.AB.E3.82.A8.E3.83.B3.E3.83.87.E3.82.A3.E3.82.A2.E3.83.B3

2015年12月5日土曜日

IX2105でゲストユーザーにL2TP接続を提供する

この設定は以下のような状況で必要になりました。
  1. あるデモンストレーションサイトには登録されたIPアドレス(ホワイトリスト)からしかアクセスできない
  2. 出先でのデモンストレーションのため、デモンストレーションサイトにモバイルルーターからアクセスする必要がある。
  3. モバイルルーターに付与されるIPアドレスは可変のため、アクセスするサイトのホワイトリストには登録できない
  4. ホワイトリストに登録済みのサイトからのsshポートフォーワードやhttpプロキシで回避できる。デモンストレーションは失敗できないため、別の方式による回避方法(L2TP)によるバックアッププランを用意した。
条件を詳しく書きます。
  1. デモンストレーションユーザーはその所属組織からのsshによるサイトへのアクセスはすでに用意済み。
  2. バックアッププランとして、デモンストレーションユーザーが所属していない別機関にL2TPでアクセスし、別機関のIPアドレスでデモンストレーションサイトにアクセスする。この別機関のIPアドレスは、デモンストレーションサイトのホワイトリストに登録されている。
  3. デモンストレーションユーザーは別機関の所属ではないため、L2TPアクセスはできるが、別機関のサイト内にはアクセスできないようにしたい。
  4. 別機関は、IPアドレスが1つしかなく、かつL2TPルーターは、この別機関のインターネットアクセス用NATルーターでもあるため、DMZなどはない。
このため、以下のような設定を行いました。
  1. デモンストレーションユーザー(別機関にとってはゲストユーザー)にL2TPアクセスと、L2TPルーターからのインターネットアクセスは許す
  2. このゲストユーザーは、別機関には所属しないため、L2TPルーター配下のホストにはアクセスさせない
上記の条件を満たす方法を探してみたところ、以下のようにすればできそうでした。
  1. IX2105には特定のL2TPユーザーに特定のIPアドレスを割り振ることができる
  2. このIPアドレスに対して、L2TPルーター配下のホストが属するインターフェイスで、フィルタリングする
  3.  IX2105では、DNSサーバーのIPアドレスはL2TPのユーザー1つしか設定できない。既存のL2TPユーザーにはこの別機関内のDNSサーバーを指定する必要があるため、デモユーザーにも別機関内のDNSサーバーへのアクセスは許さざるをえない。
  4. そこで、DNSの設定(viewの機能を使う)で特定のIPアドレスからのアクセスがあった場合は、L2TPルーター配下のホストに関する名前解決は許さないようにする(この設定はここでは記述しない)。
具体的な設定を以下に書きます。
  • 特定のL2TPユーザーに特定のIPアドレス(172.31.220.0/24)を割り振る
    ipcp provide-static-ip-address demo 172.31.220.0
  • 172.31.220.0/24に対してフィルタを設定する
    ip access-list demo-deny 
       deny ip src 172.31.220.0/24 dest 172.31.0.0/16
    L2TPルーター配下のホストのアドレスは172.31.0.0/16
  • 172.31.220.0/24からDNSサーバー、172.31.20.0へのアクセスは許す
    ip access-list demo-permit 
       permit udp src 172.31.220.0/24 sport any
       dest 172.3120.0/32 dport eq 53 

    ip access-list demo-permit 
       permit tcp src 172.31.220.0/24 sport any
       dest 172.31.20.0/32 dport eq 53 
  •  L2TPルーター配下のホストが属するインターフェイスにフィルタを設定する
    interface GigaEthernet1.0 
      ip address 172. 31.0.1/16 
      ip filter demo-permit 100 out 
      ip filter demo-deny 110 out 
      ip filter all-permit 200 out 
      no shutdown 
    all-permitはすべてを許可するための
    ip access-list all-permit permit ip src any dest any
    というフィルタです。

2015年12月1日火曜日

MacOS 10.10 YosemiteでUSBシリアルアダプタUSB-RSAQ5を利用する

MacOS 10.10 YosemiteでUSBシリアルアダプタUSB-RSAQ5を使おうとすると、
I/Oデータのサイトのドライバは以下のようにずいぶん古くインストールするにはためらわれるものでした。
USB-RSAQ5 MacOS用ソフトウェア
掲載日 2013/05/15
http://www.iodata.jp/lib/product/u/1921_mac.htm
検索エンジンで探してみると、解決策を書かれている方がいらっしゃいました。
[OSX 10.10] YosemiteでUSB-RSAQ5を利用する
http://miura-togoto.blogspot.jp/2014/10/osx-1010-yosemiteusb-rsaq5.html
さっそくこの通りにするとうまく動作しました。ただし、デフォルトでは任意のソフトウェアのインストールができないので設定変更が必要です。
設定のセキュリティとプライバシの中の一般タブで、ダウンロードしたアプリケーションの実行許可を「すべてのアプリケーションを許可」とします。

簡単に手順を引用します。
  1. prolificからPL2303のドライバをダウンロード(アカウントはguest/guest)
  2. zipを解いてpkgファイルをインストール
  3. 以下のように設定を追加(ボールド体部分)して有効化します

    $ sudo vi /System/Library/Extensions/ProlificUsbSerial.kext/Contents/Info.plist

    <key>IOKitPersonalities</key>
    <dict>
    <key>067B_2303</key>
        ・
        ・
    <key>idVendor</key>
    <integer>1659</integer>
    </dict>

    <key>04BB_0A0E</key>
    <dict>
      <key>CFBundleIdentifier</key>
      <string>com.prolific.driver.PL2303</string>
      <key>IOClass</key>
      <string>com_prolific_driver_PL2303</string>
      <key>IOProviderClass</key>
      <string>IOUSBInterface</string>
      <key>bConfigurationValue</key>
      <integer>1</integer>
      <key>bInterfaceNumber</key>
      <integer>0</integer>
      <key>idProduct</key>
      <integer>2574</integer>
      <key>idVendor</key>
      <integer>1211</integer>
    </dict>


    </dict>


    $ sudo touch /System/Library/Extensions
    $ cu -l /dev/cu.usbserial 9600  -s 9600
    ...

2015年11月8日日曜日

arp -sでARPエントリを追加しようとすると「ARP エントリを追加できませんでした: アクセスが拒否されました。」というエラーになる

先日、システム設定のために、Windows 10の管理者権限のコマンドプロンプトから、
arp -s 192.168.11.1 xx-xx-xx-xx-xx-xx
というようにarpテーブルにエントリを追加しようとすると
ARP エントリを追加できませんでした: アクセスが拒否されました。
というエラーになりました。
調べてみると、Windows 7あたりからarp -sコマンドでは設定できなくなったようです。以下のWWWページ:
Windows Server 2008 R2でARPテーブルを静的に設定する
http://blog.levico.info/archives/2012/06/windows-server-2008-r2%E3%81%A7arp%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%82%92%E9%9D%99%E7%9A%84%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B.html
に解決方法が示されていました。

管理者権限のコマンドプロンプトからnetshコマンドで以下のようにします。
netsh interface ipv4 set neighbors "インターフェース名" "IPアドレス" "Macアドレス"
またインターフェイス名は以下のようにして取得します。
netsh interface ipv4 show interface
削除はdeleteコマンドを使います。
netsh interface ipv4 set neighbors "インターフェース名"



2015年11月3日火曜日

Nexus 5でspモードを使う

携帯電話関連のblogを見ていると、以下のような投稿がありました。
ドコモ:spモードを他社端末でも利用可能に – SIMロック解除義務化で
http://shimajiro-mobiler.net/2015/10/26/post35488/
私が使っているNexus 5でもできるのかと思い、試してみるとうまくいきました。APNは、以下のブログを参考に設定しました。
Nexus6でspモードのAPNが利用可能に。テザリングもOK。
http://androidlover.net/nexus6-spmode-apn-available
APNを「spmode.ne.jp」とするだけです。これでNexus 5からspモードメールの利用や、docomoの各種設定情報などを参照することができるようになりました。

spモードメールの読み書きには、Communicaseを使っています。
spモードメール対応CommuniCase
https://play.google.com/store/apps/details?id=com.nttdocomo.communicase.carriermail&hl=ja
残念ながらspモードメールは利用できませんでした。
spモードメール
https://play.google.com/store/apps/details?id=jp.co.nttdocomo.carriermail&hl=ja

2015年10月20日火曜日

minttyでpingを使うと文字が化けてしまう

先日、
minttyでのショートカット
http://www.sakashita-net.jp/2015/10/mintty.html
で書いたように、WindowsでUnixのシェル環境を使うために、以下を参考にGit for Windowsをインストールして使っています。 
msysgit で日本語を使いたい
http://qiita.com/kumazo@github/items/2169e1ee7be278f82b94
今度はpingなどのWindowsのコマンドを実行すると、その出力文字列が化けてしまうことに気が付きました。Windowsのコマンドの文字列はShift JIS、minttyが扱う文字コードはUTF-8であるためです。
設定ではうまくできないようで、pingにaliasを設定する必要があるようです。
以下のページを参考にして設定することで、最低限のことはできるようになりました。
gnupackでCygwin導入した時に最初にすること
http://proger.blog10.fc2.com/blog-entry-119.html
利用したのは以下の設定です。
minttyの設定をUTF-8に変更して困るのは、Windowsコマンド(ipconfig等)の出力の文字化けです。標準Cygwin環境もデフォ ルト文字コードがUTF-8なので同じことになります。対策として標準出力をUTF-8に変換するラッパーを通すようにします。
文字コード変換にはiconvを使えばいいのですが、gnupackのデフォルトでは入っていないので、予めapt-cygでlibiconvをinstallしておきます。その上で、.bashrcに以下のようなaliasを設定すればOKです。
(~/.bashrc)










function wincmd() {
    CMD=$1
    shift
    $CMD $* 2>&1 | iconv -f cp932 -t utf-8
}
alias ipconfig='wincmd ipconfig'
alias netstat='wincmd netstat'
alias netsh='wincmd netsh'
alias cscript='wincmd cscript'
他に、必要な物があれば同じような感じで追加すればOKです。
Git for Windowsではiconvは含まれていたので、追加のインストールは不要でした。

2015年10月19日月曜日

minttyでのショートカット

WindowsでUnixのシェル環境を使うために、以下を参考にGit for Windowsをインストールして使っています。
msysgit で日本語を使いたい
http://qiita.com/kumazo@github/items/2169e1ee7be278f82b94
非常に便利になりましたが、一つ、不満がありました。Git for Windowsの端末エミュレーターminttyでコピー/ペーストのショートカットが、Ctrl-Ins/Ctrl-Insになっていることです。Surface Pro 3のキーボード- Type CoverではInsキーがないので入力できないのです。
困っていると、以下のページを見つけました。
CygwinのMinttyでコピー・ペースト
http://takuya-1st.hatenablog.jp/entry/20121217/1355748608
この記事のように、OptionsのKeyの項目で、Ctrl+Shift+Letter shortcut のチェックを付けると、
Control + Shift + v
などのキーボードショートカットが使えるようになりました。

2015年10月12日月曜日

WindowsでEmacsふうのキー操作にした場合のCtrlキーの割り当て

先日、
Windows 10(64bit)でEmacsふうキーバインドにする
http://www.sakashita-net.jp/2015/10/windows-1064bitemacs.html
で、keyhacというツールを使ったことを書きました。設定は、
Windows の操作を emacs のキーバインドで行うための設定 (keyhac版)
http://www49.atwiki.jp/ntemacs/pages/25.html
を利用しました。
Emacsふうキー操作とWindowsのショートカットの割り当ては、どうしてもぶつかってしまいます。そのため、上記の設定では、以下のように解決しています。
Windows のキーを入力する方法は以下の4通りが可能となっています。
  • 本設定で置き換えしていないキーは、Windows 本来のキーがそのまま入力される。(Ctrl-C など)
  • 右の Ctrlキー(RC-)や右の Altキー(RA-)と組み合せて入力する。
  • LC-q を入力した後にキーを入力する。(この場合、LC-q の後に入力する Ctrlキーや Altキーは、左右どちらのものでも構いません。)
  • Ctrlキー + [A-Z] の入力に限るが、Shiftキー(S-)と併せて入力する。(今回追加した設定。操作性が良いので追加しました。)
 私は、Windowsのショートカットを利用する場合には、右Ctrlキーを使っていたのですが、残念なことに私が使っているSurface Pro 3のキーボード、Surface Type Cover(英語配列)では、右Ctrlキーがありません。そこで、レジストリ設定で、
  • Caps Lockキーを左Ctrlキーに
  • 左Ctrlキーを右Ctrlキー
に割り当てています。
レジストリ設定は以下のようです。
REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,1D,E0,1D,00,1D,00,3A,00,00,00,00,00
この設定については、次の記事を参照してください。
[無変換]キーに[Windows]キーを割り当てる
http://news.mynavi.jp/column/winxp/181/

2015年10月7日水曜日

Surface Pro 4の周辺機器

Surface Pro 4が発表されました。
「Surface Pro 4」発表――Skylake搭載で30%高速化、12.3型で薄型・軽量化、指紋センサーなど【詳報】
http://www.itmedia.co.jp/pcuser/articles/1510/07/news049.html
この中で気になったのは新しく発表された周辺機器がSurface Pro 3でも使えるのかということです。
使えると書かれているのはドッキングステーションです。
コンパクトなドッキングステーション「Surface Dock」
DiplayPort×2、USB 3.0×4、イーサネットポート、オーディオ出力を備える新しいDockも登場。Surface Pro 4およびSurface Pro 3で利用できる。接続は充電用のSurface Connectを利用する。 
マイクロソフトのサイトでも以下のように書かれており、 使える可能性が高いようです。
Tech specs
  • Works with Surface Book, Surface Pro 4, and Surface Pro 3
https://www.microsoft.com/surface/en-us/accessories/surface-dock
キーボードについてはSurface Pro 3で使えるとは書かれていません。
「Surface Pro 4 Type Cover」は指紋センサー搭載モデルも
Surface Pro 4向けにType Coverも「Surface Pro 4 Type Cover」として新しくなった。隣接する各キーに隙間があるアイソレーションキーボードとなり、5点タッチ対応のタッチパッドはSurface Pro 3のType Coverと比べて40%大きくなった。本体サイズは295(幅)×217(奥行き)×4.65(高さ)ミリ、重量は285グラムだ。カラーバリエーショ ンはBright blue、Black、Blue、Red、Tealの計5色。
大きさは、Surface Pro 3と同じようです。
Surface Pro 3 Type Cover
https://www.microsoft.com/surface/ja-jp/accessories/surface-pro-typecover
インターフェイスの互換性があれば使えそうですが、記述はありません。
Tech specs
  • Works with Surface Pro 4
https://www.microsoft.com/surface/en-us/accessories/surface-pro-4-type-cover
以下の記事では互換性があるかのように読めますが、はっきりしません。 
フットプリントそのままに12.3型液晶を採用。さらに薄く軽くなった「Surface Pro 4」
http://pc.watch.impress.co.jp/docs/news/20151007_724453.html
別売のタイプカバーは、Surface Pro 3との互換性を維持しつつ、19mmのキーピッチと1.3mmのストロークを確保。薄型化されているが、パンタグラフ式の機構を採用し、打鍵感も高めた。 バックライトも内蔵。タッチパッドは4割面積を大きくし、5点タッチに対応。また、Windows Helloによる生体認証対応の指紋センサー内蔵モデルも用意する。
生体認証対応の指紋センサー内蔵モデルが使えるとよいなぁと思って、もう少し調べてみたところ、互換性があるという記述を見つけました。
Microsoft Surface Pro 4 Type Cover (Black)
http://www.microsoftstore.com/store/msusa/en_US/pdp/Microsoft-Surface-Pro-4-Type-Cover/productID.325723100
ここでは
Supported platforms
Surface Pro 3
Surface Pro 4
とはっきり書かれています。 指紋センサーのほうはどうかと思ってみてみると、
Available colors
Black
Blue
Bright Blue
Red
Teal
Onyx (Black, with Fingerprint ID)
で単に1つのバリエーションとして扱われています。はっきりとした記述はありませんが、インターフェイスの大きな違いはなく動作するのかもしれません。

続・マイナンバーの取り扱い

先日、マイナンバーについて以下のようなことを書きました。
マイナンバーの取り扱い
Q. 学会などの研究会でお願いしているアルバイトの方々に報酬を支払う場合、マイナンバーの扱いはどのようにすればよいのでしょうか。
A. 日払いのアルバイト(9300円/日未満)は対象外。
http://www.sakashita-net.jp/2015/07/blog-post.html
謝金については以下に解説がありました。
麹町法人会マイナンバーセミナーQ&A
(2016年2月4日時点で参照できなくなっていました)
http://www.koujimachi.or.jp/%E3%83%9E%E3%82%A4%E3%83%8A%E3%83%B3%E3%83%90%E3%83%BC%E3%82%BB%E3%83%9F%E3%83%8A%E3%83%BCQ%26A%28150623%29.pdf
以下に該当部分を引用します。
Q: 公益法人で、開設している口座の講師に謝礼を支払っている。(1)該当講師からマイナンバーを取得すべきは、翌年1月に税務署に法定調書を提出する対象者(所得? 又は税額?で5万以上の講師)のみで良いか。 (2) 28年1月に作成する法定調書にはマイナンバーを記載しなくてもよいか。
A: 個人番号の提供を求めることができるのは法定調書の作成・提出に必要な場合に限ります。そして、税法上、同一人に対するその年中の報酬等の支払金額が五万以下であれば調書を提出しなくてもよいとされているので(所得税法施行規則84条Ⅱ四)、質問者の理解の通りで結構です。なお、「(所得? 又は税額?」ではなくて、「支払金額でみて5万円以上」なのでご留意下さい。
上記のページが参照できないので、以下が参考になると思います。
マイナンバーに関するQ&A_2015年8月19日
http://e606.com/index.php?QBlog-20150819-1
所得税法施行規則については以下で参照できます。
所得税法施行規則
(昭和四十年三月三十一日大蔵省令第十一号)
http://law.e-gov.go.jp/htmldata/S40/S40F03401000011.html
以下に該当部分を引用します。
第八十四条  居住者又は内国法人に対し国内において法第二百四条第一項各号(報酬、料金等に係る源泉徴収義務)に掲げる報酬若しくは料金、契約金又は賞金(法第二百 四条第二項各号に掲げるものを除く。以下この条において「報酬等」という。)の支払をする者は、法第二百二十五条第一項第三号(報酬、料金等の支払調書) の規定により、その報酬等の支払を受ける者の各人別に、次に掲げる事項を記載した調書を、その支払をする者の事務所、事業所その他これらに準ずるものでそ の報酬等の支払事務を取り扱うものの所在地の所轄税務署長に提出しなければならない。
 その支払を受ける者の氏名又は名称及び住所若しくは居所又は本店若しくは主たる事務所の所在地
 その年中に支払の確定した報酬等の金額(広告宣伝のための賞金については、金銭以外のもので支払われる場合には、令第三百二十一条(金銭以外のもので支払われる賞金の価額)の規定により計算した金額)
 前号の報酬等につき源泉徴収をされる所得税の額
 報酬等の法第二百四条第一項各号に規定する区分
 その他参考となるべき事項
 前項の場合において、次の各号に掲げる場合に該当するときは、当該各号の規定に該当する報酬等に係る同項の調書は、提出することを要しない。
 同一人に対するその年中の法第二百四条第一項第三号に掲げる診療報酬、同項第四号に掲げる職業拳闘家、外交員、集金人若しくは電力量計の検針人の業務に関する報酬若しくは料金又は同項第六号に掲げる報酬若しくは料金の支払金額が五十万円以下である場合
 同一人に対するその年中の法第二百四条第一項第八号に掲げる広告宣伝のための賞金の支払金額が五十万円以下である場合
 同一人に対するその年中の法第二百四条第一項第八号に掲げる馬主が受ける競馬の賞金の全部につきそれぞれの一回に支払うべき金額が令第二百九十八条第一項(競馬の賞金に係る控除額)に規定する金額以下である場合
 同一人に対するその年中の前三号に規定する報酬等以外の報酬等の支払金額が五万円以下である場合

keyhacのMac版

先日、
Windows 10(64bit)でEmacsふうキーバインドにする
http://www.sakashita-net.jp/2015/10/windows-1064bitemacs.html
で、keyhacというツールを使ったことを書きました。よく見てみると、Mac版も提供されていました。
Keyhac の Mac OSX 用 Beta 1
Pythonを使ったキーカスタマイズツール、Keyhac のMac版 Beta 1を用意しました。
http://craftwave.blogspot.jp/2014/09/keyhac-mac-osx-beta-1.html

現在は動作するようになった - Microsoft Surface Pro 3に接続したBluetoothキーボードの反応が悪い

先日、以下のようなことを書きました。
Microsoft Surface Pro 3に接続したBluetoothキーボードの反応が悪い
いろいろと設定をしてみたのですが、反応が悪い状態になることがあり、納得できる状態ではありませんでした。

その後、何回かSurface Pro 3のドライバなどのアップデートがあったためか、これを書いている時点(2015年10月7日)では、新たに設定を加えることなく、うまく動作しているようです。設定としては、デバイスマネージャーでMarvell AVASTAR Bluetooth Radio Adapterについてだけ、プロパティから「電源の管理」タブを選び、
「電力の節約のために、このコンピューターでこのデバイスの電源をオフにできるようにする」
のチェックを外しています。

2015年10月6日火曜日

Windows 10(64bit)でEmacsふうキーバインドにする

WindowsでEmacsふうのキーバインドで操作するために長らくxkeymacsというツールを使っていました。しかし、Windows 8/8.1/10あたりから動きが不安定になり、どうしようかと思っていました。

今日になり、ふと思い立って新しいツールがないか探してみたところ、keyhacというツールを見つけました。以下のWWWページの解説に従って設定したところ、それらしく動いているようです。
keyhac
https://sites.google.com/site/craftware/keyhac-ja

Windows の操作を emacs のキーバインドで行うための設定 (keyhac版)
http://www49.atwiki.jp/ntemacs/pages/25.html

2015年10月2日金曜日

FreeBSDでメールやテキストメモをPostScriptプリンタに印刷する

FreeBSDでメールやテキストメモをPostScriptプリンタに印刷するツールとして、古くからの友人である歌代さんのa2ps.plを使っていました。
ftp://ftp.sra.co.jp/pub/lang/perl/scripts/utashiro-scripts/
http://utashiro.hatenablog.com/
ただ、作られたのが古いため、新しいバージョンのperlでは改造なしに動かすことが難しくなってきました。

いろいろと調べてみたところ、e2psが代替になりそうです。
ubuntu u2psの代わりにe2psを使う
http://arakanoj.com/ubuntu-u2ps%E3%81%AE%E4%BB%A3%E3%82%8F%E3%82%8A%E3%81%ABe2ps%E3%82%92%E4%BD%BF%E3%81%86-3169.html
a2psの代わりにe2ps
http://hgw09.exblog.jp/21925627
さっそく、/usr/port/japanese/e2psでmake installとして、使ってみました。
$ pkg info ja-e2ps
ja-e2ps-4.34
Name           : ja-e2ps
Version        : 4.34
Installed on   : Fri Oct  2 07:32:29 JST 2015
Origin         : japanese/e2ps
Architecture   : freebsd:9:x86:64
Prefix         : /usr/local
Categories     : print japanese
Licenses       :
Maintainer     : ports@FreeBSD.org
WWW            : UNKNOWN
Comment        : Text file to postscript converter (with Japanese support)
Options        :
        DOCS           : on
Annotations    :
Flat size      : 77.7KiB
Description    :
E2ps formats each named file for printing in a postscript printer; if
no file is given, e2ps reads from the standard input. The format used
is nice and compact: normally two pages on each physical page, headers
with useful information (page number, printing date, file name or
supplied header), etc.
e2psというぐらいなので、日本語のコードとしてはEUCしか対応してません。そこで、シェルスクリプトを使い、オプションはe2psのままで入力をnkfコマンドで変換するようなコマンドを作りました。
#!/bin/sh
E2PS=/usr/local/bin/e2ps
LPT=${PRINTER-lp}

while [ $# -ge 1 ]
do
    case "$1" in
        '-l'|'-l2'|'-l4'|'-lv4'|'-p'|'-p2'|'-p4'|'-pv4'|'-a7'|'-b4'|\
            '-le'|'-ohp'|'-box'|'-nh'|'-e'|'-j')
            ARGS="$ARGS $1"
            shift
            ;;
        '-af'|'-abf'|'-abi'|'-siz'|'-afw'|'-afh'|'-kfw'|'-kfh'|\
            '-ls'|'-line'|'-tm'|'-bm'|'-lm'|'-rm'|'-date'|'-page' )
            ARGS="$ARGS $1"
            ARGS="$ARGS $2"
            shift 2
            ;;
        '-head' )
            HEADER="$2"
            shift 2
            ;;
        '-P' )
            LPT="$2"
            shift 2
            ;;
        '-h'|'--help'|'-v'|'--version'|'-fl'|'-lib' )
            $E2PS "$1"
            break
            ;;
        -*)
            echo "Unknown option: $1"
            break
            ;;
        *)
            FILES="$FILES $1"
            shift
            ;;
    esac
done

if [ $FILES ]; then
    for FILE in $FILES
    do
        if [ "$HEADER" ]; then
            nkf -e $FILE | $E2PS $ARGS -P $LPT -head "$HEADER" > /dev/null 2>&1
        else
            nkf -e $FILE | $E2PS $ARGS -P $LPT -head "$FILE" > /dev/null 2>&1
        fi
    done
else
        if [ "$HEADER" ]; then
            nkf -e | $E2PS $ARGS -P $LPT -head "$HEADER" > /dev/null 2>&1
        else
            nkf -e | $E2PS $ARGS -P $LPT -head "$FILE" > /dev/null 2>&1
        fi
fi

JAL国内線でエコノミーのみの航空便があった

先日、JAL(日本航空)で羽田-伊丹間の航空便を見ていると、おもしろい便があることに気が付きました。2015年10月3日のJAL124便(伊丹→羽田)です。 機体が767でエコノミー席しかありません。


通常、JALの767の座席はクラスJとエコノミーで、機体によってはこれにファーストクラスが加わります。不思議に思い予約をして座席指定をしてみました。



座席指定画面を見てみると、クラスJの座席はあるのですがエコノミーで予約できるようになっています。同様なことがないかと思って、見てみると、2015年10月2日のJAL125便(羽田→伊丹)はファーストクラスとエコノミーという、こちらも不思議な構成です。


こちらも、同じようにエコノミーでクラスJの座席に座れるのでしょう。
国際線で、プレミアエコノミーの設定がない路線に、プレミアムエコノミーの座席がある機体が割り当てられた場合、上級会員は、エコノミーでもプレミアムエコノミーの座席に座れるということは聞いたがことがありますが、JALの国内線では初めて気が付きました。

その後、たまたま大阪で用事があり、この便に、実際に搭乗しました。すると、修学旅行の団体客がおられました。推測ですが、修学旅行の方でエコノミーの席が利用されてしまうため、一般客向けのエコノミーの座席数が不足するため、Class Jの座席を開放したと思われます。

2015年9月29日火曜日

portupgradeすると「pkg-static: perl5-5.18.4_17 conflicts with perl5.18-5.18.4_17」となってしまう

FreeBSD 9.1/9.2/10.1でportupgradeすると「pkg-static: perl5-5.18.4_17 conflicts with perl5.18-5.18.4_17」となってしまいました。/etc/ports/UPDATINGにある設定はしているのですが、うまくいきません。

このエラーメッセージで検索すると以下のページが見つかります。
perl5-5.18.4_17 conflicts with perl5.18-5.18.4_17
https://forums.freebsd.org/threads/perl5-5-18-4_17-conflicts-with-perl5-18-5-18-4_17.53293/
はっきりした解決策は提示されていないのですが、なにかをすれば解消できそうな印象です。そこでもういちど
/usr/ports/UPDATING
に書かれている設定を確認します。
# cat /etc/make.conf
DEFAULT_VERSIONS+=perl5=5.18

# pkg set -n perl5.18:perl5
Change name from perl5.16 to perl5 for perl5.18-5.18.x_yy? [y/N]: y

#
次にパッケージデータベースをチェックします
# pkg check -Bdsr -a
...
#
そしてportupgrade -a --batchを実行すると今度はうまくいくようになりました。
パッケージの依存関係が壊れていたのかもしれませんが、はっきりしません。

これでもうまくいかない場合、「pkg set -n perl5.18:perl5」をもう一度実行するとよいかもしれません。これにより、perl5.18に依存しているパッケージについても、perl5パッケージの名前変更が適用されるようです。

もしかすると、/usr/ports/UPDATINGにある記述
DEFAULT_VERSIONS+=    perl5=5.xx
にあわせて、
DEFAULT_VERSIONS+=    perl5=5.18
としてしまっていたのがいけなかったかもしれません。設定を見なおした後は、
DEFAULT_VERSIONS+=perl5=5.18
としています。ただ、対象のFreeBSDは実運用中なので、「試してみる」ことが難しいので、これくらいでお許しください。

2015年9月17日木曜日

Surface Pro3でWindowsボタンを無効にする

Surface Pro3 でWindowsボタンを押すと震えたり、メニューが出たり、スリープから回復してしまったりして不便でした。調べてみると、以下で説明されているsurfaceアプリで無効にできました。
Surface アプリのインストールと使用
Surface Pro 3 または Surface 3 で無料の Surface アプリを使用して、Surface ペンの筆圧感度を調整し、ペンのトップ ボタンを押したときに開く OneNote のバージョンを選択できます。また、Windows ボタンを無効にすることができます。http://www.microsoft.com/surface/ja-jp/support/apps-and-windows-store/surface-app?os=windows-10

2015年8月31日月曜日

IX2105を用いたL2TP接続で、L2TPクライアントに対して接続先のDNSサーバーのIPアドレスを割り当てる

IX2105を用いたL2TP接続で、L2TPクライアントに対して接続先のDNSサーバーのIPアドレスを割り当てるには以下のようにします。

ppp profile l2tp-0

  ipcp provide-remote-dns 172.27.20.0
IX2105でのL2TP接続の設定方法は以下に解説があります。
設定事例集33.L2TP/IPsec設定 33.1 L2TP/IPsecを用いたリモート接続 ·················· 33-2
http://jpn.nec.com/univerge/ix/Manual/index.htmlhttp://jpn.nec.com/univerge/ix/Manual/EX/IX1-3K-EX-9.0.pdf

2015年8月29日土曜日

Google Chromeで検索結果を常に新しいタブで開く

最近になり、デフォルトのWWWブラウザをFirefoxからChromeに変更しました。
自分で使っているMac mini(OS X Mavericks)×2で、Firefoxが正常に終了できなくなったためです。メニューから終了させても終了せず、強制終了させなくてはならなくなりました。
Firefoxのリフレッシュや再インストールをしたのですが改善しません。拡張機能の取り外してのチェックはしていません(時間が取れないのです)。

そこでChromeを使うことにしました。カスタマイズはうまくできたのですが、
「アドレスバーから検索したときに検索結果を新しいタブで開く」ことがうまくできませんでした。いろいろと検索エンジンで調べたところ、以下の記事の内容でうまく設定出来ました。
Google Chromeで検索結果を常に新しいタブで開く方法
http://www.lifehacker.jp/2011/05/110507_chromesearchnewtab.html
掲載されている手順は以下のとおりです。
検索エンジン編集に以下のコードを貼り付けると良いかもしれません。
Chromeの検索バーを右クリックして「検索エンジンの編集」から設定できます。
javascript:window.open('http://www.google.co.jp/search?q='+encodeURI('%s'));

2015年8月21日金曜日

FreeBSDでunixtimeと日付表示を相互に変換する

必要があってFreeBSDでunixtimeと日付表示を相互に変換する必要があったので、調べた結果を以下にメモします。

以下のWebサイトが正解でした。
2011年 03月 30日
[Mac OS X][bash]unixtime と日付の相互変換表示
http://xiaoxia.exblog.jp/12344121/
以下は抜粋
以下のように .bashrc あたりに書いておくと幸せ。
function ut2date {
 /bin/date -u -r $1 +"%Y/%m/%d %H:%M:%S UTC"
 /bin/date -r $1 +"%Y/%m/%d %H:%M:%S"
}
function date2ut {
 /bin/date -j -f "%Y/%m/%d %H:%M:%S" "$1" +%s
}

ロケールは現在の設定を使用。
date2ut のフォーマットは限定で。

実行結果
> ut2date 1234567890
2009/02/13 23:31:30 UTC
2009/02/14 08:31:30
> date2ut "2009/02/14 08:31:30"
1234567890
上記はMacOS Xが対象ですが、FreeBSD 9.1で試したところ、動作しました。
dateコマンドに与えているオプションは次のような意味です。

-r seconds
         Print the date and time represented by seconds
         seconds(秒 - Unix Time)を日時で表示する

-u     Display or set the date in UTC (Coordinated Universal) time.
         UTCで表示する

-f      Use input_fmt as the format string to parse the new_date provided
         rather than using the default [[[[[cc]yy]mm]dd]HH]MM[.ss] format.
         Parsing is done using strptime(3).
         入力となる日時の形式を指定する

 -j      Do not try to set the date.  This allows you to use the -f flag
          in addition to the + option to convert one date format to
          another.
          与えた引数の時刻に設定せず、-fオプションで指定した日時形式を
          +オプションで指定した形式に変換して表示する。

2015年8月12日水曜日

電源の詳細設定でUSBセレクティブサスペンドの有効と無効を切り替える。

Surface Pro 3では電源の詳細設定でUSBセレクティブサスペンドの有効と無効を切り替えることができません。そこで、以下の記事を参考にできるようにしてみました。
Win 8/8.1編: USB 3.0ハブの電源管理を有効にする
http://news.mynavi.jp/column/windows/299/
これによれば、レジストリ
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\2a737441-1930-4402-8d77-b2bebba308a3
の下に、USBとその電源関連の設定が並んでいます。
レジストリエディタを開いてみていくと、上記の記事にあるUSB 3 Link Power Managementの近くに、
48e6b7a6-50f5-4782-a5d4-53bb8f07e226
というキーがあり、descriptionをみると、
UsbPowerSelSupDescription
とあります。ここにAttributes(RED_DWORD)というエントリを作り、
その値を2とすれば、電源の詳細設定でUSBセレクティブサスペンドの有効と無効を切り替えることができます。

2015年8月9日日曜日

続・Microsoft Surface Pro 3に接続したBluetoothキーボードの反応が悪い

先日、以下のようなことを書きました。
Microsoft Surface Pro 3に接続したBluetoothキーボードの反応が悪い
その後、Surface Pro 3をWindows 10にアップデートしたところ、似た症状が再発しました。前回よりは少しましですが、やはりキーボード入力には気になる感じです。

もう一度、検索エンジンで調べてみると次のような投稿を見つけました。
無線マウスはUSBセレクティブサスペンドを無効じゃ
https://woresite.jp/2013/02/01/062423.html
この記事に従って必要なデバイスについてUSBセレクティブサスペンドを無効にしてみます。

USBセレクティブサスペンドの動作については、
USB のセレクティブ サスペンドについて
で以下のように解説されています。
親デバイスを管理しているデバイス スタックは、そのすべての子が低電力状態になるまで、低電力状態に移行できません。子デバイスが稼働状態である場合、通常、その親デバイスも稼働状態であ る必要があるためです。たとえば、USB デバイスがハブ経由で接続されている場合、転送が正常に完了するには、ハブが稼働状態である必要があります。
子デバイス スタックがすべて低電力状態になれば、親デバイス スタックも低電力状態に移行できます。このように、デバイスのツリーでは、最初にリーフ ノードが低電力状態になり、次にその親ノードが低電力状態になります (ノードがアイドル状態であると仮定した場合)。それ以降も、ツリーのルートが低電力状態になるまで同様に処理されます。前に説明したスリープ解除メカニ ズムも、このノードの各レベルで繰り返されます。あるデバイスが稼働状態になるには、そのデバイスとルートとの間にあるすべてのノードが稼働状態になる必要があります。
本来であれば、bluetoothキーボード、もしくはこれに直近のデバイスでUSBセレクティブサスペンドを無効にすればよいはずなのですが、うまく動いていないように思えます。
そこで、デバイスマネージャーで表示から「デバイス(接続別)」を選び、接続されているbluetoothキーボードを探します。
私の構成では以下のようになっていました。
surface pro 3 → ACPI x64-based PC → Microsoft ACPI-Compliant System → PCI Express ルート コンプレックス → Intel USB 3.0 eXtensible Host ControllerUSBルートハブ(xHCI)Marvell AVASTAR Bluetooth Radio Adapter → Microsoft Bluetooth Enumerator → Lenovo BT Interface Device(HID)/ThinkPad Compact Bluetooth Keyboard with TrackPoint
上記のデバイスのうち、太字にしたものについて、そのプロパティから「電源の管理」タブを選び、
「電力の節約のために、このコンピューターでこのデバイスの電源をオフにできるようにする」
のチェックを外しました。
この記事を書く範囲では、気にならない程度になった気がします。 

2015年8月3日月曜日

速達専用 青い郵便ポスト、なぜ大阪に集中 (日経新聞より)

「速達専用 青い郵便ポスト、なぜ大阪に集中 」という記事が日経新聞にありました。twitterなどだとなくしてしまいそうなので、blogで記録します。
速達専用 青い郵便ポスト、なぜ大阪に集中 (日経新聞より)
http://www.nikkei.com/article/DGXNASIH2200I_T21C13A0AA1P00/
場所を記事から引用します。
  • 北区堂島2-1-37
  • 北区東天満2-1-28
  • 北区中崎西1-1-1
  • 北区天神橋3-11-1
  • 福島区海老江1-1-8
  • 中央区本町3-5-7
  • 中央区内平野町2-3-13
  • 中央区天満橋京町1
  • 中央区備後町2-2-15
  • 中央区南久宝寺町2-1-2
  • 中央区南久宝寺町3-6
  • 中央区南新町2-4-14
  • 中央区南船場2-2-15
  • 中央区難波5-1-60
  • 中央区心斎橋筋1-1-10
  • 中央区宗右衛門町1-1-60
  • 中央区松屋町7-22
  • 中央区谷町8-1-52
  • 西区靭本町1-11-6
  • 西区京町堀1-7-6
  • 西区江戸堀2-8-4
  • 西区立売堀3-8-11
  • 西区新町1-7-4
  • 西区川口1-3-24
  • 西区南堀江1-10-3
  • 西区本田2-1-11
  • 浪速区難波中3-15-4

2015年7月30日木曜日

LaTeX Error: File `jarticle.cls' not found

FreeBSDでtexlive-2014から2015へアップデートすると、既存のLaTeXファイルの処理時に次のようなエラーが出るようになりました。
LaTeX Error: File `jarticle.cls' not found
jarticle.clsは/usr/local/share/texmf-dist/tex/platex/base/jarticle.clsにあるので、TeXの処理系がうまくこのファイルを見つけることができないようです。

別のFreeBSDサーバーの/usr/local/share/texmf-distディレクトリと比べてみると、これらのクラスファイルなどの一覧が収められたls-Rファイルがありません。

そこでmktexlsrコマンドで再生成してみました。
$ pwd
/usr/local/share/texmf-dist
$ sudo mktexlsr
パスワード:
mktexlsr: Updating /usr/local/share/texmf-config/ls-R...
mktexlsr: Updating /usr/local/share/texmf-dist/ls-R...
mktexlsr: Updating /usr/local/share/texmf-local/ls-R...
mktexlsr: Updating /usr/local/share/texmf-var/ls-R...
mktexlsr: Done.
$ ls ls-R
ls-R
$ head ls-R
% ls-R -- filename database for kpathsea; do not change this line.
./:
.keep_me
.texlive-tlmgr
README

$
こんどはうまく処理できるようになりました。

puttyでopensshサーバーにログインできない

勤務先のsshサーバーについて、以下のような報告がありました。
数日前から PuTTY で会社にログインできなかったのですが、
PuTTY 側の設定変更でログインできるようになったので報告します。
症状は、以下のとおりです。
・接続しようとするが、ユーザ名を聞いてこない
・接続が勝手に切れるわけではない
・ログを見ると Event Log: Doing Diffie-Hellman group exchange で
  データを送信した状態で止まっている
PuTTY 側の Connection - SSH - Kex - Algorithm selection policy で、
先頭になっている Diffie-Hellman group exchange の順位を Down すると
接続できるようになった
もう少し調べると次のような情報が見つかりました。
PuTTY Kex Error, or: "Hm, kex protocol error: type 30 seq 1 [preauth]"
https://blog.nytsoi.net/2015/07/13/putty-kex-error
このなかで、2015年6月30日にでたOpenSSH 6.9では以下の変更があったと記述されています。
From the OpenSSH changelog
http://www.openssh.com/txt/release-6.9
* ssh(1), sshd(8): deprecate legacy SSH2_MSG_KEX_DH_GEX_REQUEST_OLD
message and do not try to use it against some 3rd-party SSH
implementations that use it (older PuTTY, WinSCP).
なのでOpenSSH 6.9に接続するのにputtyを使っている場合には、 「Diffie-Hellman group exchange」の順位を下げる必要があります。

2015年7月29日水曜日

Surface Pro 3をUSB回復ドライブで初期化する場合は、BitLockerの回復キーが必要

Surface Pro 3をSurface Pro 3をUSB回復ドライブで初期化する場合は、BitLockerの回復キーが必要でした。
回復ドライブ作成と回復ドライブからの起動については以下のblogで詳しく説明されています。
Surface Pro 3 の「回復ドライブ」作成には 8GB 以上のデータを格納できる USBメモリーが必要?http://www.nanigoto.com/%E5%9B%9E%E5%BE%A9%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96/Surface Pro 3 で電源を入れるときに「USB 回復ドライブ」で起動させる手順http://www.nanigoto.com/volume-down/
2つの目のblogでは回復ドライブまで起動したところで終わっていますが、その先がありました。以下のblog
USB 回復ドライブでリセットする(工場出荷状態に戻す)http://blogs.msdn.com/b/microsoft_surface_blogs/archive/2014/01/23/10492070.aspx
にある
もし BitLocker を設定されている場合、画面に指示に従って回復キーを取得し、入力します。
です。回復キーはの取得は、具体的には、Surface Pro 3にログインで使っていたMicrosoftアカウントで、MicrosoftのWWWページにログインした後、
BitLocker recovery keys: Frequently asked questionshttp://windows.microsoft.com/recoverykeyfaq 
にアクセスし、この中の
BitLocker Recovery Keys.http://go.microsoft.com/fwlink/?LinkId=237614
にアクセスすると表示されます。
初期化時に回復キーの入力を求められるので、そのときに上記のページに表示されている回復キー(かなり長い数字列)を入れます。

FreeBSDでtexlive-full-20140525からtexlive-full-20150521へのアップグレードしようとすると失敗する

FreeBSDでtexlive-full-20140525からtexlive-full-20150521へのアップグレードしようとすると、以下のように失敗します。
# portupgrade --batch -a -n

+ print/texlive-base (texlive-base-20140525_7 -> texlive-base-20150521_2)
+ print/texlive-texmf (texlive-texmf-20140525_4 -> texlive-texmf-20150523_2)
+ print/tex-luatex (tex-luatex-0.79.1_5 -> tex-luatex-0.80.0_1)
+ print/tex-dvipdfmx (tex-dvipdfmx-20140317_2 -> tex-dvipdfmx-20150315_1)
+ print/texlive-full (texlive-full-20140525_1 -> texlive-full-20150521)
---> Packages processed: 5 done, 2 ignored, 0 skipped and 0 failed
---> Session ended at: Wed, 29 Jul 2015 11:28:55 +0900 (consumed 00:01:28)
# portupgrade --batch print/texlive-full

checking for TeX specific libraries to build...
checking for pkg-config... pkgconf
configure: error: did not find kpathsea
===> Script "configure" failed unexpectedly.

** Fix the problem and try again.
** Listing the failed packages (-:ignored / *:skipped / !:failed)
! print/texlive-full (texlive-full-20140525_1) (configure error)
#
エラーメッセージをよく読むと「kpathsea」というものがないようです。portsにあるかどうか 確認してみます。
# cd /usr/ports
# ls -ld */*kpathsea*
drwxr-xr-x 3 root wheel 7 7月 28 17:56 devel/tex-kpathsea
#
確かにportsにはパッケージがあるようです。次にインストールされているかどうか調べます。
# pkg info -x texlive
texlive-base-20140525_7texlive-full-20140525_1texlive-texmf-20140525_4texlive-tlmgr-20150523_1
#
「pkg info -x パッケージ名」とすると「パッケージ名」に部分一致する、インストールされているパッケージが表示されます。上記の例では、texliveに部分一致するパッケージが表示されています。
# pkg info -x kpath
pkg: No package(s) matching kpath
#
tex-kpathseaはインストールされていないことがわかります。そこでportsからインストールします。
# cd /usr/ports/devel/tex-kpathsea/
# make

# make install

===> Installing for tex-kpathsea-6.2.1
===> tex-kpathsea-6.2.1 depends on executable: indexinfo - found
===> Checking if tex-kpathsea already installed
===> Registering installation for tex-kpathsea-6.2.1
Installing tex-kpathsea-6.2.1...
#
これでtex-kpathseaパッケージがインストールできました。
再び、texlive-fullのアップグレードをしてみます。
# portupgrade --batch print/texlive-full

checking for pkg-config... pkgconf
configure: error: did not find ptexenc
===> Script "configure" failed unexpectedly.
Please report the problem to hrs@FreeBSD.org [maintainer] and attach the
"/usr/ports/print/texlive-base/work/texlive-20150521-source/config.log"
including the output of the failure of your make command. Also, it might be
a good idea to provide an overview of all packages installed on your system
(e.g. a /usr/local/sbin/pkg-static info -g -Ea).
*** [do-configure] Error code 1
#
こんどはptexencがないようです。同様に確認してみます。
# pkg info -x ptexenc
pkg: No package(s) matching ptexenc
# ls -ld /usr/ports/*/*ptexenc*
drwxr-xr-x 3 root wheel 7 7月 28 17:56 /usr/ports/print/tex-ptexenc
#
tex-ptexencをportsからインストールします。
# cd /usr/ports/print/tex-ptexenc/
# make
# make install

===> Installing for tex-ptexenc-1.3.3_2
===> tex-ptexenc-1.3.3_2 depends on shared library: libkpathsea.so - found (/usr/local/lib/libkpathsea.so)
===> tex-ptexenc-1.3.3_2 depends on shared library: libiconv.so - found (/usr/local/lib/libiconv.so)
===> Checking if tex-ptexenc already installed
===> Registering installation for tex-ptexenc-1.3.3_2
Installing tex-ptexenc-1.3.3_2...
#
tex-ptextencがインストールできたので、試してみましょう。
# portupgrade --batch print/texlive-full

====> Compressing man pages (compress-man)
===> Installing for texlive-base-20150521_2
===> Checking if texlive-base already installed
===> An older version of texlive-base is already installed (texlive-base-20140525_7)
You may wish to ``make deinstall'' and install this port again
by ``make reinstall'' to upgrade it properly.

If you really wish to overwrite the old port of texlive-base
without deleting it first, set the variable "FORCE_PKG_REGISTER"
in your environment or the "make install" command line.
*** [check-already-installed] Error code 1

** Listing the failed packages (-:ignored / *:skipped / !:failed)
! print/texlive-full (texlive-full-20140525_1) (unknown build error)
#
古いtexlive-baseを削除してからインストールしなければいけないようです。
# cd /usr/ports/print/texlive-base/
# pkg info -x texlive-base
texlive-base-20140525_7
# make deinstall
===> Deinstalling for texlive-base
===> Deinstalling texlive-base-20140525_7
Updating database digests format: 100%
Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 1 packages (of 0 packages in the universe):
Installed packages to be REMOVED:
texlive-base-20140525_7
The operation will free 12 MiB.
[1/1] Deinstalling texlive-base-20140525_7...
[1/1] Deleting files for texlive-base-20140525_7: 100%
# make reinstall
===> Installing for texlive-base-20150521_2
===> texlive-base-20150521_2 depends on executable: psbook - found
===> texlive-base-20150521_2 depends on file: /usr/local/share/texmf-dist/.texlive-tlmgr - found

mktexlsr: Updating /usr/local/share/texmf-var/ls-R...
mktexlsr: Done.
# pkg info -x texlive-base
texlive-base-20150521_2
#
確かにtexlive-baseは新しいバージョンになりました。
ふたたびtexlive-fullのアップグレードを試してみましょう。
# portupgrade --batch print/texlive-full
[Reading data from pkg(8) ... - 429 packages found - done]

===> Checking if texlive-texmf already installed
===> An older version of texlive-texmf is already installed (texlive-texmf-20140525_4)
You may wish to ``make deinstall'' and install this port again
by ``make reinstall'' to upgrade it properly.

If you really wish to overwrite the old port of texlive-texmf
without deleting it first, set the variable "FORCE_PKG_REGISTER"
in your environment or the "make install" command line.
こんどは古いtexlive-texmfを削除して再インストールする必要があるようです。
# cd /usr/ports/print/texlive-texmf
# make deinstall
===>  Deinstalling for texlive-texmf
===>   Deinstalling texlive-texmf-20140525_4
Updating database digests format: 100%
Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 1 packages (of 0 packages in the unive
rse):

Installed packages to be REMOVED:
        texlive-texmf-20140525_4

The operation will free 1 GiB.
[1/1] Deinstalling texlive-texmf-20140525_4...
mktexlsr: Updating /usr/local/share/texmf/ls-R... 
mktexlsr: Done.
mktexlsr: Updating /usr/local/share/texmf-dist/ls-R... 
mktexlsr: Done.
[1/1] Deleting files for texlive-texmf-20140525_4: 100%
#
# make reinstall===>  Installing for texlive-texmf-20150523_2
===>   texlive-texmf-20150523_2 depends on file: /usr/local/share/texmf-dist/.texlive-tlmgr - found
===>   texlive-texmf-20150523_2 depends on package: texlive-base>=20150521 - found
===>   Registering installation for texlive-texmf-20150523_2
Installing texlive-texmf-20150523_2...
mktexlsr: Updating /usr/local/share/texmf/ls-R...
mktexlsr: Done.

削除と再インストールがでできたので、ふたたびtexlive-fullのアップグレードです。
# portupgrade --batch print/texlive-full
[Reading data from pkg(8) ... - 429 packages found - done]
--->  Upgrading 'texlive-full-20140525_1' to 'texlive-full-201

===>   Registering installation for texlive-full-20150521
Installing texlive-full-20150521...
===>  Cleaning for texlive-full-20150521
--->  Cleaning out obsolete shared libraries
やっとアップグレードができました。

念のためにアップグレードされていないパッケージがないか、確認します。
# portupgrade --batch -n -a

        + print/tex-luatex (tex-luatex-0.79.1_5 -> tex-luatex-0.80.0_1)
        + print/tex-dvipdfmx (tex-dvipdfmx-20140317_2 -> tex-dvipdfmx-20150315_1)

#
print/tex-luatex、print/tex-dvipdfmxも新しいバージョンは2015となっているので、こちらもアップグレードします。
# portupgrade --batch print/tex-luatex print/tex-dvipdfmx

===>   Registering installation for tex-dvipdfmx-20150315_1
Installing tex-dvipdfmx-20150315_1...
mktexlsr: Updating /usr/local/share/texmf/ls-R...
mktexlsr: Done.
===>  Cleaning for tex-dvipdfmx-20150315_1
--->  Cleaning out obsolete shared libraries
ふたたびアップグレードされていないパッケージがないか確認します。
# portupgrade --batch -n -a

#
こんどはだいじょうぶでした。

2015年7月24日金曜日

Lenovo ThinkCentre M73にWindows 8.1をリカバリメディアから再インストールするときの注意

Lenovo ThinkCentre M73にWindows 8.1をリカバリメディアから再インストールするときには、BIOS設定でCSM(Compatibiliy support Module)を有効にする必要がありました。
以下のような手順です。
  1. 電源を入れ、F1キー、もしくはEnterキーを押して、BIOSセットアップ画面に入る。
  2. Startupタブに移る
  3. CSMをEnabledに変更する(デフォルトはDisabled)
  4. Boot ModeがAuto、Boot PriorityがLegacy Firstになっていることを確認する。必要に応じて、Boot ModeをLegacy Onlyにする。
  5. Startupタブ内のPrimary Boot Sequenceを開いて、USB CDROMなど、起動のためのデバイスがSATA 1などより前にあることを確認する。

2015年7月20日月曜日

FreeBSD 10.1にscponlyをインストールする

他の組織からファイルを転送してもらう必要がでてきました。そのために、DMZにFreeBSD 10.1のサーバーを設置し、このサーバーにscponlyをインストールしました。scponlyを使えば、sshでのシェル操作は許さず、scpでのファイル転送だけを有効にすることができます。さらに、sshdでパスワードでのログインを無効・公開鍵でのログインを有効にすることで、安全性を高めることできます。

scponlyは以下のようにインストール、設定しました。
# sudo -s
Password: ******
# cd /usr/ports/shells/scponly
# make config
....
[x] CHROOT chroot(8) functionality
[ ] DEFAULT_CHDIR Chdir(2) by default
[x] DOCS Build and/or install documentation
[ ] GFTP gftp support
[ ] RSYNC rsync support
[x] SCP vanilla scp support
[ ] SVN Subversion support
[ ] SVNSERVE Suversion support for svn+ssh://
[ ] UNISON Unisson support
[x] WILDCARDS Wildcards processing
[x] WINSCP WinSCP support
# make install
...
To setup chroot cage, run the following commands:
1) cd /usr/local/share/examples/scponly/ && /bin/sh setup_chroot.sh
2) Set scponlyc_enable="YES" in /etc/rc.conf
3) Run /usr/local/etc/rc.d/scponly start
#
scponlyはCHROOT、SCP、WILDCARDS、WINSCPを有効にしました。WILDCARDSは微妙ですが、CHROOTオプションを有効にすることで、scponlyのホームディレクトリ以下にしかアクセスできないようにできるので、利便性と安全性が両立できると判断しました。

このあと、インストール時に表示された支持に従い、chroot.shを実行し、rc.confに記述を追加、scponlyスクリプトを実行しました。chroot.shで表示された選択肢にはすべてデフォルトを選びました(ただ、私の場合、scponly用のホームディレクトリ以下にうまくdevディレクトリが作成できなかったので、~scpoly/devを一度削除してから、chroot.shを再実行する必要がありました)。

そして、以下のようにscponlyを試してみます(公開鍵でのログインのみを有効にしています)。
$ scp ./FILE scponly@IPアドレス:incoming/
Enter passphrase for key '/home/ss/.ssh/id_rsa':
lost connection
$
lost connectionとなり、うまくファイルを転送することができません(scponlyではscponlyのホームディレクトリにあるincomingディレクトリにのみファイルを転送することができます)。

そこで、 /usr/local/etc/scponly/debeglevel の内容を「3」にしてデバッグ出力を有効にしてみます。
$ cat /usr/local/etc/scponly/debuglevel
3
$
ふたたびファイル転送を試みます。
$ scp ./FILE scponly@IPアドレス:incoming/
Enter passphrase for key '/home/ユーザー/.ssh/id_rsa':
scponly[6354]: chrooted binary in place, will chroot()
scponly[6354]: 3 arguments in total.
scponly[6354]: arg 0 is scponlyc
scponly[6354]: arg 1 is -c
scponly[6354]: arg 2 is scp -t incoming/
scponly[6354]: opened log at LOG_AUTHPRIV, opts 0x00000029
scponly[6354]: determined USER is "scponly" from environment
scponly[6354]: retrieved home directory of "/home/scponly" for user "scponly"
scponly[6354]: chrooting to dir: "/home/scponly"
scponly[6354]: chdiring to dir: "/"
scponly[6354]: setting uid to 2003
scponly[6354]: processing request: "scp -t incoming/"
scponly[6354]: Using getopt processing for cmd /usr/bin/scp
(username: scponly(2003), IP/port: IPアドレス 64023 22)
scponly[6354]: getopt processing returned 't' (username: scponly(2003), IP/port: IPアドレス 64023 22)
scponly[6354]: running: /usr/bin/scp -t incoming/ (username: scponly(2003), IP/port: IPアドレス 64023 22)
scponly[6354]: about to exec "/usr/bin/scp" (username: scponly(2003), IP/port: IPアドレス 64023 22)
scponly[6354]: failed: /usr/bin/scp -t incoming/ with error Too many levels of symbolic links(62) (username: scponly(2003), IP/port: IPアドレス 64023 22)
lost connection
$
転送先のホストで/usr/bin/scpコマンドを実行しようとしていますが、scpのあるディレクトリがシンボリックリンクの先にあるためにscpコマンドが実行できないようです。

実は、この前にscponlyコマンドがないというエラーが出ていたので、
# cd ~scponly
# cd usr
# mv bin bin.ORG
# ln -s /usr/bin .
#
のようにして~scponly/usr/binから/usr/binへのシンボリックリンクを設定したのですが、これではうまくいかないようです。

そこでこのシンボリックリンクは削除し、scpコマンドをコピーしてみることにしました。
# cd ~scpoly/usr
# rm bin
# mkdir ~scponly/usr/bin
# cp /usr/bin/scp .
#
ファイル転送を試してみます。
$ scp ./FILE scponly@IPアドレス:incoming/
Enter passphrase for key '/home/ユーザー/.ssh/id_rsa':
scponly[6368]: chrooted binary in place, will chroot()
scponly[6368]: 3 arguments in total.
scponly[6368]: arg 0 is scponlyc
scponly[6368]: arg 1 is -c
scponly[6368]: arg 2 is scp -t incoming/
scponly[6368]: opened log at LOG_AUTHPRIV, opts 0x00000029
scponly[6368]: determined USER is "scponly" from environment
scponly[6368]: retrieved home directory of "/home/scponly" for user "scponly"
scponly[6368]: chrooting to dir: "/home/scponly"
scponly[6368]: chdiring to dir: "/"
scponly[6368]: setting uid to 2003
scponly[6368]: processing request: "scp -t incoming/"
scponly[6368]: Using getopt processing for cmd /usr/bin/scp
(username: scponly(2003), IP/port: IPアドレス 24123 22)
scponly[6368]: getopt processing returned 't' (username: scponly(2003), IP/port: IPアドレス 24123 22)
scponly[6368]: running: /usr/bin/scp -t incoming/ (username: scponly(2003), IP/port: IPアドレス 24123 22)
scponly[6368]: about to exec "/usr/bin/scp" (username: scponly(2003), IP/port: IPアドレス 24123 22)
FILE 100% 260KB 260.2KB/s 00:00
$
こんどはうまくファイルを転送することができました。

2015年7月15日水曜日

マイナンバーの取り扱い

Q. 学会などの研究会でお願いしているアルバイトの方々に報酬を支払う場合、マイナンバーの扱いはどのようにすればよいのでしょうか。

A. 日払いのアルバイト(9300円/日未満)は対象外。
   根拠は以下のとおり。

   1. 源泉徴収税額は「給与所得の源泉徴収税額表」を使って求める。

   2. この税額表には、「月額表」と「日額表」と「賞与に対する源泉徴収税額の算出率の表」の3種類がある。

   3. 日払いバイトの場合、日額表が適用される。

   4. さらに、パートやアルバイトに対して日給や時間給で支払う給与は、あらかじめ雇用契約の期間が2か月以内と決められていれば、「日額表」の「丙欄」を使う。

   5. 「丙欄」を参照すると、9300円/日未満については源泉徴収税額は0円。

   具体的な通達については以下のWWWページを参照

   税額表の種類と使い方

   パートやアルバイトの源泉徴収

   平成27年分 源泉徴収税額表
    https://www.nta.go.jp/shiraberu/ippanjoho/pamph/gensen/zeigakuhyo2014/01.htm

   給与所得の源泉徴収税額表(日額表)
   https://www.nta.go.jp/shiraberu/ippanjoho/pamph/gensen/zeigakuhyo2014/data/02_1.pdf

   ただし、講演者謝金などについては2016年1月以降マイナンバーの取り扱いが必要となる。

2015年7月14日火曜日

FreeBSD 10.1でのsendmailの設定(すべてのメールを特定のホストに転送する)

FreeBSD 10.1でのsendmailを使い、すべてのメールを特定のホストに転送するには次のように設定します。
以下の記述は
送信メールをリレーさせる(SMART_HOST設定)
http://linuxexpert.ne.jp/modules/pukiwiki/163.html
を参考にしました。
# cd /var/mail
# hostname
valkyrie
# cp freebsd.mc `hostname`.mc
# cp freebsd.submit.mc `hostname`.submit.mc
# vi valkyrie.mc
...
dnl Dialup users should uncomment and define this appropriately
dnl define(`SMART_HOST', `your.isp.mail.server')

dnl Dialup users should uncomment and define this appropriately
define(`SMART_HOST', `[転送先ホストのIPアドレス]')dnl
 
もしくは 
dnl Dialup users should uncomment and define this appropriately
define(`SMART_HOST', `転送先ホストのホスト名')dnl
 
に変更
# make all
....
# make install
....
# vi /etc/rc.conf
...
# 以下の行を追加
sendmail_enable="YES"
...
# /etc/rc.d/sendmail start
...
# make restart
#
転送されるホスト側では、FreeBSD 10.1からのメールを受け取りを許可するように設定する必要があります。たとえば、postfixであればmain.cfのmynetworksにアドレス範囲を追加します。
mynetworks = 192.168.100.0/24, 172.25.0.0/16, … 

2015年7月13日月曜日

FreeBSDでログイン直後に表示されるメッセージを抑制する

FreeBSD 10.1などでではログイン時に、以下のように/etc/motdなどのメッセージが表示されるようになっています。
Last login: Mon Jul 13 06:30:31 2015 from firerock.acutus.co.jp
FreeBSD 10.1-RELEASE (GENERIC) #0 r274401: Tue Nov 11 21:02:49 UTC 2014

Welcome to FreeBSD!

Release Notes, Errata: https://www.FreeBSD.org/releases/
Security Advisories: https://www.FreeBSD.org/security/
FreeBSD Handbook: https://www.FreeBSD.org/handbook/
FreeBSD FAQ: https://www.FreeBSD.org/faq/
Questions List: https://lists.FreeBSD.org/mailman/listinfo/freebsd-questions/
FreeBSD Forums: https://forums.FreeBSD.org/

Documents installed with the system are in the /usr/local/share/doc/freebsd/
directory, or can be installed later with: pkg install en-freebsd-doc
For other languages, replace "en" with a language code like de or fr.

Show the version of FreeBSD installed: freebsd-version ; uname -a
Please include that output and any error messages when posting questions.
Introduction to manual pages: man man
FreeBSD directory layout: man hier

Edit /etc/motd to change this login announcement.
Having trouble using fetch through a firewall? Try setting the environment
variable FTP_PASSIVE_MODE to yes, and see fetch(3) for more details.
$
これを消したいときには、.hushloginというファイルをホームディレクトリに作ります。
$ touch ~/.hushlogin
$
hush upで黙らせるという意味です。

FreeBSD 10.1をHP DL120G5にインストールした時の操作記録

先日、HP DL120G5(PDF)にFreeBSD 10.1をインストールした時の記録を掲載します。
まずDL120G5のBIOS設定でCD/DVDからの起動を優先にしておきます。そしてDVDにFreeBSD 10.1のISOイメージファイル(FreeBSD-10.1-RELEASE-amd64-dvd1.iso)を書き込み、これから起動します。うまくCD/DVDからFreeBSDのインストーラーが起動すると、しばらくして以下の画面が表示されます。
キーボードの種別は必要に応じて設定します。私の場合は、英語キーボードを接続していたので、デフォルトのままにしました。
次はホスト名の設定です。これもそのサイトに応じた適切なもの指定します(同じネットワークに接続されているホストの名前と違うものにしなければなりません)。
インストールするソフトウェアパッケージを指定します。最低限、llib32とportsがあれば十分ですが、HDDの容量に比べてそれほど大きいものではないので、私はいつもすべて選んでいます。
ファイルシステムの構成を選びます。このマシンでは、500GBのHDDを2台接続しているので、ZFSでミラー構成ににするつもりです。
Auto(ZFS)を選ぶとオプションの画面になります。ディスク構成を設定するため、T(Pool Type/Disks:)を選びます。
開いた画面で、mirrorとします。
どのディスクを使うかの選択画面になります。
接続されている2台のディスクを選びます。
オプションの画面に戻り、Swap Sizeを選びこの値を変更します。
ここでは2GBから64GBに変更しました。
swap領域をmirrorするかどうかを選びます。
安全を考えて有効にしました。
その他、Force 4K Sectorsは、2TB以上のディスクではセクターサイズが512バイトではなくて4Kバイトになっていることが多いので、これを有効にします。今回は4Kセクターのディスクではありませんが、どのような構成になるのかを見たかったので、有効にしました。また、パーティションテーブルも大きなディスクが扱えるGPTにしました(これもどのような構成になるのかを確認したかったためです)。これらを確認したら、Installを選び、Selectを押します。
パーティション構成を書き込んでよいか確認を求められます。
YESを選びます。
インストールが始まります。
rootのパスワードを設定します。
複数のネットワークインターフェースがある場合、どれを使うかを選びます。
私の場合は、オンボードのbge0を使うことにしました。
選んだネットワークインターフェイスに対してIPv4アドレスを割り当てるかを訊かれます。
DHCPにするか固定IPアドレスにするかを選びます。私はとりあえずアドレスがほしいので、DHCPにしました。
DHCPでIPv4アドレスを割り当てます。
次はIPv6です。
IPv6でStateless Address autoconfiguration(SLAAC)を利用するかを選びます。
DHCPで得られたIPv4のなどのDNS情報です。
クロックの設定です。BIOSの時計は多くの場合、各地域での時刻になっていると思われます。なので、「No」にしました。
次はタイムゾーンです。
Asia/Japanとしました。
JSTという略称でよいかの確認です。

起動するデーモンを選びます。sshとntpd、powerdにしました。unboudは今までのresolv.confとは違う仕組みでアドレスを解決を図るものですが、この設定は別途学ぶことにして、これを無効としました。
root以外のユーザーを追加するかです。
必要に応じて追加していきます。
追加が終われば、Exitを選びます。
シェルでの独自の設定が必要ならYes、そうでないならNoです。
そして再起動。
このあと、CD/DVDを取り出して待っているとFreeBSD 10.1が起動します。