2016年4月15日金曜日

第28回春日部大凧マラソン大会書類一式届きました

左足を痛めてもうすぐ1ヶ月。
筋トレと水泳でトレーニングは続けていますが、ランニングは残念ながらまだ出来ず。
大会の日も近くなり不安がよぎっております。

さて、そんな中ついに届きました!


第28回春日部大凧マラソン大会 書類一式

大会当日はこのゼッケンと計測用チップを身につけて会場に行って走るだけ。
とても便利です。

書類にざっと目を通した限り、前回大会から変わった事が2つありました。
まず1つ目。


写真撮影がSTK photo serviceに変わりました。

前回はPhoto Createが運営するALL SPORTS communityでした。
撮影された写真はどういう形(サイズや形状、DLの有無)で販売されるのか。また、おイクラなのかが書かれていないため良いのか悪いのかはわかりません。
気になるところです。

次に2つ目


有料の手荷物預かりサービスがはじまるそうです。
料金は500円。注意事項を読む限り、この500円というのは万が一紛失した場合の保険料かと思われます。
金銭・貴金属等の貴重品は預けられません。万が一預けて紛失しても保険の支払い対象にはなりませんのでご注意を。

ゼッケンが届いたので前回同様にコレ


ゼッケン留め BIBFIX

これ用に穴を広げる作業を後日したいと思います♪


今回が私の人生初となるハーフマラソン大会。
しっかり準備して気持よく走りたいですね。

2016年4月6日水曜日

Raspberry Piで思い出す🤔ネットワークは接続が保障されない技術

Raspberry Pi 2 Model Bが我が家にやってきてから、何かとLinux色が強くなってる今日このごろ。
そんな環境を使っていて忘れていた肝心な事を思い出しました。
今回はそんな話を書きたいと思います。
事の発端はWebDAV
Raspberry Piで使えるOSの1つであるRaspbianは、WebDAVがマウント出来るようになるdavfs2パッケージのインストールが可能です。
私は、これを使ってインターネット上のストレージサービスBOXをマウント。
これによってRaspberry PiをSDカード 64GBBOX 50GBという環境で使っています。
(現在BOXの個人向け無料プランは現在10GBとなっています。)

再起動をかける事がシバシバあるRaspberry Pi。
davfs2でWebDAVを手動マウントするとその度に解除されてしまうため、fstabの設定を使い起動時にマウントするようにしました。

しかし、それが誤ちだった事に気が付きました。
ブレーカーが落ちる事故
我が家のRaspberry Piの置き場所はダイニングキッチン。
生活をしていく上で必要とされる衣食住の食をツカサどる大切な生活空間です。
ここに置かれている理由は、この場所の温度湿度気圧を測定しているのが1つ。
もう1つは、電話回線を引き込むジャックがココにあるためネットワーク主要機器があり、安定した通信が得られる有線でかつ、コレが基本であるRaspberry Pi 2に都合が良かったからです。

現代のキッチン用品はとにかく電化製品が多いです。
  • 冷蔵庫
  • 電子レンジ
  • 食器洗い乾燥機
  • 電気ケトル
  • オーブントースター
  • コーヒーメーカー
  • エスプレッソマシン
これだけのモノが我が家のキッチンにはあります。
さらに、我が家のブレーカー事情は厄介で、脱衣所とキッチンの分岐ブレーカー(大元の主管ブレーカーとは別に付けられた小さいブレーカー)がセットで1つなのです。
この分岐ブレーカー、20Aという容量なため電化製品を幾つか動かすとすぐに落ちてしまいます。
ブレーカーが落ちてRaspberry Piがシャットダウンする事なく電源が切れます。
コレによって何度かOS Raspbianがカーネルパニックが起き、起動不能に陥った事がありました。
幸いな事にこのブログを書くキッカケとなった電源切れの時はカーネルパニックは起きなかったものの、忘れかけていた事を思い出させてくれました。
バックアップ失敗
システムチェックのため定期的に行っているバックアップを臨時で行いました。すると失敗。
原因は起動時にマウントされてるはずのWebDAVでした。
ブレーカーが落ちて停電後、ブレーカーを戻して電気が流れると再起動します。
本来ならfstabの設定でこの時にマウントされるはずなのですが、今回に限ってマウントされていません。

なぜ?
早すぎたRaspberry Pi
ダイニングキッチンのブレーカーが落ちるとRaspberry Piだけでなくネットワーク主要機器も落ちます。
ブレーカーを復帰させる事でこれらすべてが再起動するのですが、この時に真っ先に起動したのがRaspberry Pi。
その後にネットワーク主要機器が再起動しました。

インターネットに接続できない状態でRaspberry Piが起動してしまうと、マウントされるはずのBOXがマウント出来ません。
その結果、バックアップに失敗しました。
接続保障ないモノは起動時自動マウントしてはいけない
Linuxには様々なモノをストレージ化してマウントする事が出来ます。
今回紹介したWebDAV以外にも、WindowsでおなじみのSMBやFTPなども可能です。
ただ、今回のように起動時にネットワークが必ず接続出来るとは限りません。
インターネットと接続する機器の問題だけではなく、そこから先の経路で障害が起きていたり、大元のサーバーで障害が起きていたり。
そういう事態を考えると、起動時に自動マウントする設定は行わないほうが良いでしょう。
理想のマウント方法と使い方
3つの手順が必ず必要です。
  1. 使用したいストレージが既にマウントされていないか確認
  2. マウントされていない場合はマウントする
  3. マウント出来なかった場合を想定する
今回はネットワークを経由したストレージを題材に書きましたが、場合によってはUSBのようなホットプラグ対応デバイスも対象となります。
Raspberry Piの特殊事情
Raspberry Piは、ストレージが接続出来るI/Fが標準でSDカードスロットとUSBのみ。どちらもホットプラグ対応デバイスです。
SDカードスロットは、SoCの作りの関係で起動ドライブとして決め打ちされているためどうしようもありません。
また、USBも手軽に増設可能なI/Fがコレしかないため、ストレージメーカーもこれを前提としたRaspberry Pi向け製品をリリースしています。
Linuxは、これらストレージにUUIDを割り当てて機器を特定し、マウント時に固定化できる仕組みがあります。
これを使い今回のWebDAVのように起動時に自動マウントして固定ストレージとして使う事があります。
しかし、起動時にUSB接続機器のUUIDの認識が遅れてマウント出来ない不具合が出るケースがあり、やはりそういう使用を想定していないようです。
ネットワークは接続保障されない技術
ネットワークは接続保障がありません。
マウントしてOS標準実装された操作で使う事は、汎用性・利便性の面でとても有利です。
しかし、経路障害やサーバー故障、システムのアップデートや定期メンテ等、様々な事情で止まります。
接続性の高い機器同様に解説される事が多いですが、接続保障のないネットワークだという事を念頭にシステム開発したいものです。

2016年4月5日火曜日

平成28年度 #春日部 ゴミカレンダー Googleカレンダー版の作り方

前回の記事で公開させて頂きました

平成28年度 春日部ゴミカレンダー Googleカレンダー版
※公開したカレンダーはコチラの記事をお読みください。

これをどうやって作ったか?って話を書きたいと思います。

時間と労力さえかければ誰でも作れると思います。
どうするかと言えば、Googleカレンダーを開きただひたすら作成すれば良いだけです。
ちなみに、どれだけ作れば良いかというと

可燃ごみ1812件
不燃ごみ288件
びん・かん等288件
紙・布288件
合計2676件

さすがにコレだけ作成しようとすると心が折れますよね?
そこで、私はこんな方法でCSVファイルを作ってGoogleカレンダーに取り込みました。

法則を導く
春日部市の収集日程には収集区域によって一定の法則があります。
ごみ・資源物の収集日程一覧(平成28年度ゴミカレンダー)の各収集区の収集日程を見ると大きくわけて2つあります。

基本法則
  • 可燃ごみは毎週指定曜日の3回
  • 不燃ごみ・びんかん等・紙布は週番曜日ごとに決め打ちされてる
ただ、何事にも例外はつきものでして

例外法則
  • 祝日の可燃ごみが一部休みになる
  • 1月の正月三が日が不燃ごみ・びんかん等・紙布に当たる収集区は1週ズレる
厄介な例外法則

祝日の可燃ごみが一部休みになる
この例外規定に当てはまる日は12日あります。
  • 4/29 昭和の日
  • 5/4 みどりの日
  • 5/5 こどもの日
  • 8/11 山の日
  • 9/22 秋分の日
  • 11/3 文化の日
  • 11/23 勤労感謝の日
  • 12/23 天皇誕生日
  • 1/1 元旦
  • 1/2 
  • 1/3 
  • 2/11 建国記念の日
この祝日が毎年度休みになるのかはわかりませんが、平成28年度のカレンダーを見た限りではこの祝日のみ。
ただし、すべての祝日が休みになるわけではなく、上記に上げた日のみで可燃ごみに限定されます。
また、この祝日の中にはハッピーマンデーの日は含まれていなかったため考慮は比較的楽かと思います。

正月三が日が不燃ごみ・びんかん等・紙布に当たる収集区は1週ズレる
第5週は原則可燃ごみの収集のみとなります。
しかし、唯一例外となるのがコレ。正月三が日に可燃ごみ以外の収集日が該当した場合、その曜日に限り1週ずつズレるのです。

例えば、第3収集区の場合


12月6日・20日がびん・かん等、13日27日が紙・布です。
これが1月になるとこうなります。


通常なら1月3日がびん・かん等になるのですが、正月三が日に当たるため全て休み。
代わりに10日24日がびん・かん等、17日31日が紙・布となり、第5週が例外的に収集日になります。

なお、正月三が日に当たらない収集区はズレず通常通り。
1月カレンダー右下に書かれた変則になってる場合があるというのはこの法則のためです。

平成28年度にこのルールに該当する収集区はこちら

  • 第2収集区
  • 第3収集区
  • 第4収集区
  • 第9収集区
余談ですが、第1週に可燃ごみ以外の収集が常に無い第12収集区のみこの法則は適用されないと思われます。


法則がわかれば後はツールで
法則さえわかれば、あとはそれに従ってプログラムを書くだけです。
ポイントは2つ。

  • 調べたい日の曜日
  • 調べたい日の月曜日週番号(第何曜日の何にあたる部分)

曜日の調べ方
まず、調べたい日の曜日ですが、西暦1年1月1日は日曜日なのでそこからの総日数を7で割った余りによって調べる事が出来ます。
ただし、総日数を調べるために1年の日数が重要なのですが、うるう年のルールがくせ者で

  • 4年に1度1日を加える
  • ただし100年毎の年はうるう年としない
  • さらに400年毎の年はうるう年とする
この3つの条件で1年が365日になったり366日になったりします。

長々と書きましたが、大抵はツールに曜日を調べる機能があるためそれを使うのが一般的。
表計算なら曜日を調べる関数(例えばWEEKDAY関数)を使えば簡単に調べられますし、プログラム言語なら提供されるライブラリにその機能があります。

そういう機能がなかった場合の予備知識程度に片隅にトドメておくと良いでしょう。

月週番号の調べ方
月週番号は大抵のツールにはありません。単純な計算式で求めます。

(日付÷7)+1=月の週番号(小数点以下切り捨て)

これで導き出せます。

よく勘違いされるのが1年を通してカウントする週番号との混同。
表計算ならWEEKNUM関数があり、さらにそのオプションとしてISO方式とUSA方式の2種類があります。
誤ってこれを使った場合、例えば先に例を上げた2016年12月。


12月1日は第1週、12月7日は第2週になってしまいます。
今回使いたいのは曜日の出現回数。12月1日は第1木曜日、12月8日は第2木曜日となりますし、
12月6日は第1火曜日、12月13日は第2火曜日です。
ですから、難しく考えず7で割った数字を使ってください
なお、1を足しているのは第1週が0となり、第2週が1となり、、、という数学の計算ルールの結果そうなるので1を加えて下駄を履かせてます。

私が使ったツール環境
  • ハードウェアはRaspberry Pi 2 Model B
  • OSはRaspbian
  • プログラム言語はPHP
  • カレンダーはGoogleカレンダー
一見すると難しそうに感じますが、コレはたまたま私の手元にあって作りやすかったから使っただけです。
もっと一般的なもの、例えば表計算ソフトを使っても作ることは可能です。
勉強にもなりますので、課題としてチャレンジしてみても良いかもしれませんね。

最後にお約束の注意事項を

今回調べた法則は独自のモノです。
春日部市が公開しているモノではなく、また平成28年度のカレンダーのみを元としているため、これが平成29年度以降も使えるかどうかはわかりません。
裏取りまでしてシッカリやって作りこみたいという熱心な方は、是非市役所の担当課に問い合わせてみてください。

2016年4月3日日曜日

平成28年度 #春日部 ゴミカレンダー Googleカレンダー版作りました

平成28年度がスタートしました。
私が住む埼玉県春日部市では、毎年この時期になるとゴミの収集日がひと目でわかるゴミカレンダーというのが配布されます。

ごみ・資源物の収集日程一覧(平成28年度ゴミカレンダー)

印刷物の他に上記サイトでPDFも配布されています。
ただ、残念な事にiCalendar形式(ICS形式)やCSV形式での配布はされていません。
そこで、今回はあったら便利だなと以前から思っていた

春日部ゴミカレンダー Googleカレンダー版

作ってみました。
制作過程の話は後ほど書くとして、今回はその成果物であるカレンダーを公開します。
Googleカレンダーをご利用の方、また、Googleアカウントをお持ちでこれを機に使ってみようと思われる方は取り込んで活用されてみてはいかがでしょうか?
PC/Macは元より、スマートホン・タブレットのカレンダーアプリからでもGoogleカレンダーは利用が出来ます。

是非ご活用ください。

第1収集区
内牧,梅田,梅田本町,粕壁,栄町,中央1丁目19番(1号・6号除く)・20番,中央2丁目25番(8号~24号除く)・26番・27番,新方袋,浜川戸,南中曽根,南栄町,八木崎町,西八木崎1丁目~3丁目

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布



第2収集区
大沼3丁目~6丁目,中央1丁目1番~18番・19番(1号・6号)・21番~59番,中央2丁目1番~24番・25番(8号~24号),中央3丁目~8丁目,南1丁目~3丁目,谷原1丁目~3丁目,豊町1丁目・2丁目・5丁目

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布



第3収集区
大沼1丁目・2丁目・7丁目,下大増新田,下蛭田,上大増新田,上蛭田,道順川戸,道口蛭田,武里中野(みどり住宅),新方袋(飛地),花積,増田新田,増戸,増富,谷原新田,豊町3丁目・4丁目・6丁目,南中曽根(飛地)

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布



第4収集区
一ノ割,一ノ割1丁目8番~32番・2丁目~4丁目,南4丁目・5丁目,大枝(東武線西側),大畑(東武線西側),大場(東武線西側),薄谷,千間1丁目,武里中野(みどり住宅を除く),備後西1丁目~5丁目

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布



第5収集区
粕壁1丁目~4丁目,粕壁東1丁目~6丁目,小渕,八丁目,不動院野

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布



第6収集区
一ノ割1丁目1番~7番,大畑(東武線東側),大場(東武線東側),備後東1丁目~8丁目,緑町1丁目~6丁目

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布



第7収集区
赤沼,牛島,新川,銚子口,豊野町1丁目~3丁目,樋堀,樋籠,藤塚,本田町1丁目・2丁目,六軒町

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布



第8収集区
大枝(東武線東側),武里団地1街区~9街区

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布



第9収集区
榎,大衾(線路北側),神間,上吉妻,上柳,上金,金崎,木崎,倉常,椚,米島(線路北側),小平,下吉妻,新宿新田(線路北側),立野,塚崎,西親野井,西宝珠花,芦橋

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布



第10収集区
西金野井(線路北側)

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布



第11収集区
米崎,米島(線路南側),大衾(線路南側)

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布



第12収集区
赤崎,飯沼,下柳,新宿新田(線路南側),水角,永沼,西金野井(線路南側),東中野

[ICAL] 可燃ごみ 不燃ごみ かん・びん 紙・布