FreeBSD 11.1-RELEASE のスケジュールが出ている2017年04月27日 18時09分04秒

FreeBSD 11.1-RELASE のスケジュールが更新されている。一週間以上前にアナウンスは既にあったようだ。二、三日前に FreeBSD のサイトを見たときはなかったような記憶だが。

三ヵ月程でリリースされる予定だ。ndis の件は見ておいた方が良さそうだ。

Action Expected Actual Description
Initial release schedule announcement - 14 March 2017 Release Engineers send announcement email to developers with a rough schedule.
Release schedule reminder 21 April 2017 - Release Engineers send reminder announcement e-mail to developers with updated schedule.
Code slush begins 12 May 2017 - Release Engineers announce that all further commits to the stable/11 branch will not require explicit approval, however new features should be avoided.
Code freeze begins 26 May 2017 - Release Engineers announce that all further commits to the stable/11 branch will require explicit approval. Certain blanket approvals will be granted for narrow areas of development, documentation improvements, etc.
BETA1 builds begin 2 June 2017 - First beta test snapshot.
BETA2 builds begin 16 June 2017 - Second beta test snapshot.
BETA3 builds begin * 23 June 2017 - Third beta test snapshot.
releng/11.1 branch 30 June 2017 - Subversion branch created; future release engineering proceeds on this branch.
RC1 builds begin 30 June 2017 - First release candidate.
stable/11 thaw 2 July 2017 - The code freeze on the stable/11 branch is lifted.
RC2 builds begin 7 July 2017 - Second release candidate.
RC3 builds begin * 14 July 2017 - Third release candidate.
RELEASE builds begin 21 July 2017 - 11.1-RELEASE builds begin.
RELEASE announcement 26 July 2017 - 11.1-RELEASE press release.
Turn over to the secteam - - releng/11.1 branch is handed over to the FreeBSD Security Officer Team in one or two weeks after the announcement.

キックスクーターで自転車を追いかけて腰痛2017年04月18日 13時10分43秒

天気が良かったので、公園に遊びに行った。娘もだいぶ上手に自転車に乗れるようになってきたのだが、恐がりなので必ずそばに付いていなければならない。ゆっくりと自転車をこいでくれるが、流石に走っては追い付けない。早さも付いていけないし、体力も続かない。

そこで、子供達も遊びで使うキックスクーターで追いかけている。これだとある程度の速度が出るし、疲れるが走る程ではない。

今回は随分と楽しかったようで、だいぶ走って回った。スピードも出て来るようになったので、こちらも一生懸命に地面を蹴って、進まなければいけない。時々、力強く蹴って、バランスを崩したりする程のスピードを出すようになってきた。

翌日から、腰が若干痛む。キックスクーターで頑張りすぎたようだ。動けない程ではない。しかし、今度からは程々にしなければ。

FreeBSD に xen の EN2017年04月16日 11時19分34秒

xen にも修正が入っていた。三つ程修正が入っている。

対象は全てで、11.0-RELEASE と 10.3-RELEASE が現在サポートされているリリース。

FreeBSD の ntp Security Advisory2017年04月15日 12時05分39秒

FreeBSD に入っている ntp の複数の脆弱性がFreeBSD-SA-17:03.ntpにて修正されている。

現在サポートされている全てのリリースが対象で、11.0-RELEASE と 10.3-RELEASE がそれに値する。ntpd を落すことが出来る。ntpd を使っているのであれば更新に値する。

フレームワークとしての make の二重コロン2017年04月12日 12時27分55秒

二重コロンは clean ターゲットのように、一つの動作を分けて書くこと以外にも、フレームワークとして使うことも出来る。make では include を使うことにより、他の make ファイルを読むことが出来る。

例えば、make check や make install といった、各々のターゲットを準備しておくと、make のデフォルトの動作として使うことが出来て、それぞれに敵した動作は後で追加出来る。

% cat uyota-framework.mk 
check ::
        true
install ::
        true
% cat Makefile 
target :
        @echo Hello
include uyota-framework.mk
% make install
true
% gmake install
true

最近は、Jenkins やその他の解析ツールなどで、特定のシェルスクリプトや make のターゲットを順次実行するようなフレームワークなどがあちこちで見られる。新規のものだったら、一つずつ追加なので良いが、既にあるものを大量に対応するのには手間と時間が掛かる。そんなときに、共通 make ファイルに追加することで、利用可能なターゲットから順次対応していく時などに、この方法が役に立つ。

make で一重コロンを用いて複数回動作を記述するのは間違っている2017年04月11日 12時01分47秒

make の二重コロンは動作を複数に分けて記述する事が出来る。同じことを一重コロンで行うと、make によって動作が変わるようだ。
% cat Makefile 
target :
    @echo Hello
target :
    @echo Goodbye
% make
make: "Makefile" line 4: warning: duplicate script for target "target" ignored
make: "Makefile" line 2: warning: using previous script for "target" defined here
Hello
% gmake
Makefile:4: warning: overriding recipe for target 'target'
Makefile:2: warning: ignoring old recipe for target 'target'
Goodbye
まあ、元々間違った記述なわけで、どちらの実装が正しいとかはないだろう。BSD make は最初のターゲットを、GNU make は最後のターゲットを実行している。

ただし、どちらともエラーとして動作を中断していない。つまり、この間違った記述をしてしまうと、特定の環境では意図した動作をするのに、移植しようとしたら突如変な動作をするようになる典型である。

make で二重コロンと一重コロンは共存できない2017年04月09日 14時09分06秒

二重コロンを用いて複数回動作を記述できるので便利なようだが、「二重コロンと一重コロンは共存できない」という制約がある。
% cat Makefile 
target :
    @echo Hello
target ::
    @echo Goodbye
% make
make: "Makefile" line 3: Inconsistent operator for target
make: "Makefile" line 4: warning: duplicate script for target "target" ignored
make: "Makefile" line 2: warning: using previous script for "target" defined here
make: Fatal errors encountered -- cannot continue
% gmake
Makefile:3: *** target file 'target' has both : and :: entries.  Stop

全ての make ファイルが自分の支配下にあれば、全て二重コロンにしてしまえば問題はないのだが、他人の make ファイルを基にしたルールを記述していると、この問題は簡単には回避できない。このターゲットを二重コロンにしてくれと頼んで変えてもらえたら何とかなるが、拒否されたら他の名前のターゲットを使うくらいしか回避策はない。

make で二重コロンを用いて複数回動作を記述する2017年04月07日 11時05分31秒

make ファイルに依存関係を記し、その条件を満たすときの動作を記述するにはコロンを用いる。なお、以下の実行環境は FreeBSD 11.0-RELEASE だが、SunOS 等に入っている古い make から GNU make まで、共通の動作だ。
% cat Makefile 
target :
    @echo Hello
% make
Hello
% gmake
Hello
なお、echo の前の「@」は実行時のコマンドの出力を抑制する。まあ、echo を二回しても無駄だと言うわけだ。

実は、コロンを二回使って、ダブルコロンでも動作する。

% cat Makefile 
target ::
    @echo Hello
% make
Hello
% gmake
Hello

さて何が違うかと言うと、一重コロンでは、依存関係と実行動作を一度のみ記述する規則になっている。つまり、同じターゲットを二回書いたら間違えた書式と言うことになる。例えば、.cpp ファイルから .o ファイルを生成するのに、一つは g++ を使うように書かれていて、もう一つ同じルールで llvm を使うように書かれていた場合だ。make 側はどちらのコンパイラを使って欲しいのか、記述者の意図は全く分からない。コンパイラだけでなく、コンパイラオプションなどにも同様の事が言える。

それに引き換え、二重コロンは同じターゲットを複数回に分けて記述する規則になっている。一つのターゲットを意図的に、複数回に分けて記述するのだ。良くある例としては、clean ターゲット等があげられる。コンパイル時の生成物の .o を消すコマンド、特定のライブラリや実行ファイルを各々消すコマンドなどは分けて記述すると可読性も増す。

なお、複数の二重コロンは記述された順番に実行される。

% cat Makefile 
target ::
    @echo Hello
target ::
    @echo Goodbye
% make
Hello
Goodbye
% gmake
Hello
Goodbye

若干注意点があるので、何回かに分けて書く。

Specialized Sirrus Sport を購入2017年04月05日 15時49分13秒

Specialized の Sirrus Sportを購入する事に決めた。定価は $750。これが二割引になるので、$600。引き換えなので、他のブランドは選べない。しかし、最初に乗っていた GIANT などと比べても全体的に出来が良くて、Specialized が気に入っている。店長の話だと、Specialized が値段帯が低くて、出来が良いのでニューヨークやここら辺で一番売れ行きが良いそうだ。

色は SPRUCE/SLATE/VALENCIA ORANGE を選択。黒い自転車は自転車置場で見付けづらいため、色が付いていれば何色でもこだわりはない。

他にも少し安めで、良さそうな Specialized の自転車もあったが、カーボンフォークが丈夫で良いのと、寿命が長く、しかも雨天でも効きのいいディスクブレーキがあるので、店長にも勧められてそちらを選んだ。基本的に、雷雨、暴風雨、大雪以外は乗っているので、しっかりとしたブレーキが必要だとのこと。実はディスクブレーキはここ四年、二台の自転車を購入したときから気になっていたが、$1000 を越えないと装備されていなかったので、盗難などの問題もあり、諦めていた。

FRAME
Specialized A1 Premium Aluminum, Fitness Geometry, fully-manipulated butted tubing, integrated lower bearing, fender/rack mounts
FORK
FACT carbon fiber, alloy steerer/crown, post mount disc, Plug + Play fender mount REAR HUB
Shimano Center Lock, disc, 10x135mm QR, 32h
SPOKES
Stainless, 14g w/self-locking threads
RIMS
Disc, 6061 aluminum double-wall
INNER TUBES
OE PV standard Bulk Road 700, 28-38x622, Presta, 48mm valve
FRONT TIRE
Nimbus Reflect, 700x32mm, 26TPI, Flak Jacket protection
REAR TIRE
Nimbus Reflect, 700x32mm, 26TPI, Flak Jacket protection
CRANKSET
FSA Vero, forged alloy, sub compact, 110mm BCD spider
CHAINRINGS
48/32T w/chainguard
BOTTOM BRACKET
BB-7420STw/Bolts w/RPM logo
SHIFT LEVERS
microSHIFT flatbar road, 9-speed
FRONT DERAILLEUR
microSHIFT R9, 31.8mm clamp, 9-speed, road double
REAR DERAILLEUR
Shimano Alivio, 9-speed
CASSETTE
Shimano, 9-speed, 11-34t
CHAIN
KMC X9, 9-speed w/reusable MissingLink
FRONT BRAKE
Shimano M315 hydraulic disc, resin pads, 160mm rotor
REAR BRAKE
Shimano M315 hydraulic disc, resin pads, 160mm rotor
HANDLEBARS
Specialized, double-butted alloy, 9-degree backsweep, 31.8mm
TAPE
Specialized Body Geometry Targa, lock-on
STEM
Alloy, 4-bolt, 7-degree rise, 31.8mm clamp
SADDLE
Canopy Sport, steel rails
SEATPOST
Alloy, 12mm offset, 2-bolt clamp, 27.2mm
SEAT BINDER
Alloy
PEDALS
Specialized Fitness platform

古い自転車は引き取ってもらって、新しい自転車を購入2017年04月04日 11時39分03秒

週末前に修理に出した自転車だが、部品が届いていないので、作業は始まってはいないと言われたが、どうせ木曜日まで届かないのなら、また次の週末に持って来直そうと自転車屋に赴いた。

自転車が作業場に置いてある間に他の何人かの人も、様子を見ていたようだ。こちらの部品も交換しないといけない、あちらの部品も交換しないといけないと言われた。

結局、それぞれの部品を交換すると四百ドルは下らなくなる。古い自転車を持ち込めば、二割りの割引を貰えるそうだ。あれこれ部品を変えてもまだ古くて痛んでいる自転車よりも、$500 ドル前後で、同等の新しい自転車が変えてしまう。

そんなわけで、他の新しい自転車を見ることになった。