いっぽんの猟銃のむこうに (DAIZOじいさんとGun)

ヌルめの技術メモとか。フリーランスやってます (http://acez.jp/)

Mac OS Lionでのsshdの設定(ポート番号)

ちょっと昔の話なんですが、知り合いのMBAが画面だけおなくなりになりかけました。

そういえばうちのMBAはsshd立ててません。どうせ死ぬときは死ぬし、シンクライアントみたいにしか使ってないからいいやーとか思ってたんですか、やっぱり突然ディスプレイのヒンジのとこがバキって折れちゃったりしたら困りますよね。超やりそう。

で、やっぱsshdくらいは立てとくか、と思ってやってみたらなんか変な挙動。

/etc/sshd_configが綺麗に書いてあるのでコメント外したりよしなにやってるのに変更後のsshのポートで接続できない。というかポート変更だけ反映されてない。22番ポートで繋がる。

調べてみたらMac OS Xの場合ポート番号は/etc/sshd_config ではなく
/System/Library/LaunchDaemons/ssh.plistで設定するらしい。

例:

         <key>Listeners</key>
         <dict>
             <key>SockServiceName</key>
             <string>ssh</string>
             <key>Bonjour</key>

 ↓ ポート番号を65522にするばあい

         <key>Listeners</key>
         <dict>
             <key>SockServiceName</key>
             <string>65522</string>
             <key>Bonjour</key>

あとはMac OSのシステム環境設定→リモートコントロール→リモートログインをポチポチとやって再起動すればOK。

他の項目(PermitRootLoginなど所謂セキュリテイ設定etc)は普通にsshd_config見に行くみたいなので、ここだけ外に出す意味がわからん。あと設定ファイルにも残すなって気分。プロセス名もlaunchdでpsでひっかかんないので最初あれ?ってなったし。

あとは

# ssh -i ~/.ssh/id_rsa terukizm@192.168.1.1 -p 65522

とかで事前に作っておいた秘密鍵でログインできることを確認すればOK。

これでMBAが背中ブリッジしても大丈夫ですね(本当にそうなっても動くのかは知らない)

Philips Hf3470/60 Wake-up Light を買ってみた

【06/23追記】
目覚ましライトなのにつけっぱなし3時間くらいしてたらスイッチが反応しなくなりました。タイマーで自動的に光る機能は生きてるので、電球が切れたわけではなくなんとなく基盤関係が熱でやられたっぽいです。発熱が結構凄いのでつけっぱなしにするのはやめた方がいいです。

    • -

最近早起きが辛いので目覚ましライトを買おうとしたら、なんか異常に高い。2〜3万とかする。で、米Amazonで売ってる奴が安いらしいので買ってみた。

米Amazonのレビュー読んだ限り一番評判が良くて、日本への発送も特に転送サービスとか使わなくてもやってくれるのがPhilips Hf3470/60 Wake-up Lightだったので、これを買ってみた。


以下レポート。

[値段]
日本円で発送料込み¥7500くらい。発送は早い奴指定(AmazonGlobal Priority Shipping)で、送料込み。

[発送]
早い奴(AmazonGlobal Priority Shipping)ならだいたい5日くらいで届く。前日に配達業者から電話がかかってくるので確実に受け取れる時間を指定。

[機能]
・ライトの光はいわゆる電球色。明るさは20段階設定。MAXにするとかなり明るい。これ単体で普通に本が読めるレベル。
・電源はAC110Vだけど、国内でも変換アダプタ等かまさなくても普通にコンセントに刺すだけで使える。
・以外とデカい。高さ20cm、直径10cmくらいの円柱。
・目覚まし音はFM、鳥の声、アラームから選べる。スヌーズ機能あり。
・FMは日本の周波数じゃない85-100MHz。東京の場合はいまいち入る放送局がないので実質使えない。

[感想]
・アラームの鳥の声は普通に鳥の鳴き声っぽくて非常に起きづらい。最初鳥うるせーなと思いながら気がつかず30分くらい放置してた。
・光の力ですっきり起きられるかというと、正直微妙。なんとなく目が覚めるんだけど、二度寝の誘惑を完全に防げるほどではない感じ。起きれたときは多少寝起きはいいような気はする。
・ベッドライトとして使う分には光量は十分。光の届く範囲も広いので、ちょっと寝る前に本を読むのには便利。
・マニュアルは英語だけど、わざわざ読まなくても十分使える。簡単。
・結構熱が出る。火傷するくらいじゃないけど、夏場は結構ヤバそうな感じ(暑そう)

[結論]
・7500円くらいでベッドライト兼目覚ましライトが欲しいなら選択肢としてはアリ。
・かなり明るめに光る。でもそれで起きられるかは正直人による



個人的には日本で売っても充分売れるような気がします。少なくともAmazonとかに並んでる類似の怪しげな奴よりは全然よさそう。

タイマーとかで自作するよりは断然楽だし、もしかすると安上がりなので、どうしても目覚ましライトが欲しい人にはお薦めです。

特定桁数での丸め込み(切り上げ、切り捨て)する

切り上げとか切り捨てってJavaならMath.floor()とかMath.ceil()だよね?と思ってたんだけど、該当メソッドは小数点以下の切り捨てしかしてくれないことを今更。そういやそうでした。

たとえば時間計算とかでありがちな、出勤は15分単位で切り上げ、退勤は15分単位切り下げとか(9:02〜18:08なら09:15〜18:00)したい場合、どうするんだっけ? って一瞬悩んでひたすらdatetime型のAPI探したりしてしまったのでメモ。

特定桁数で丸め込みしたい場合、割ったものに掛ければいい。

Pythonで書くと下のような感じ。

marume.py

# 切り捨て
def floor(src, range):
    return (int)(src / range) * range

# 切り上げ
def ceil(src, range):
    return ((int)(src / range) + 1 ) * range

実行するとこんな感じ。

>>> import marume
>>> marume.floor(19, 10)
10
>>> marume.floor(21, 10)
20
>>> marume.ceil(19, 10)
20
>>> marume.ceil(21, 10)
30

時間計算で使う場合は分とか秒とかで単位をあわせる。

>>> marume.ceil((9*60 + 2), 15)
555 
(-> 9:15)
>>> marume.floor((18*60 + 8), 15)
1080
(-> 18:00)

ロジック的には基本中の基本……ですよね……
これくらいパッと出てこないのは最近あんまコード書いてないからかなー。いかんなあー

投げやりにSIer特有の画面ポップアップ&ファイルダウンロードコンボを実装する

「クリックしたらポップアップウィンドウが出て、自動的にファイルのダウンロードが始まり、終わったらファイルの保存ダイアログを出して、ダウンロードが終了したらポップアップのウィンドウ自体は自動的に閉じる(ただし途中でエラーが発生した場合は表示)」などという、非常にSIerらしい、とても斜め上のご用件がありまして、XHRを使ったりlocation.hrefでごにょごにょしたりという、素晴らしく非生産的な行為に半日くらい費やしてしまったので、メモ。

ちなみにIE6です。

ポイントは以下。

  • XHR(XmlHttpRequest)で、ダイアログを表示させるようなファイルダウンロード(所謂application/octet-stream)はできない(responseText、responseXMLのどちらでもないため) 叩くとreadyState = 4 & 200番とか帰ってくるが騙されるな
  • location.hrefだと画面遷移(この場合はファイルダウンロード)を終えきってからウィンドウを閉じる、などができない(もしかしたら色々頑張ればできるのかもしれない)
  • しかも、IE6でlocation.hrefでファイルダウンロードAPIを叩くとまったくステータスバーが動かないので、画面的に何が起きてるのかわからなくてユーザ様がお怒り

というわけで、結論的にはiframeに落ち着きました(死にたい)

こんな感じのHTMLをwindow.open()等で開いてさしあげます。(僕はもちろんモーダルウインドウを強いられ白目)


<...>




これだけでiframeのsrc指定したものが自動的に叩かれ、終わったらiframeのonload -> body onload の順番で指定した関数が呼ばれます。iframeのonloadは500とか食らうと発生しない(#1, #2)ので、適当にフラグとか持たせれば簡単にエラーハンドリングができました。iframeが見えるの嫌ならdisplay:noneとかしてやればよろしいです。

しかし、さすがに今時、IE6のXHR(MSXML2.XMLHTTP)を生で書くはめになるとは思いませんでした。SIerは広大ですね……。あとJavascriptは一回マジに勉強せんといかんとおもいました。はーつら


#1 これはもしかするとIE6特有の挙動かもしれません。インターネットに繋がらずFirefoxすら入れることを許されないというアウシュビッツみたいな職場でテーブルタグにこらしめられたのでもはや手元の環境で試す気にもなれず

#2 システムテストでIPがインターネット上になったとたん、この方法では動かなくなりました。IE6 sp2の場合iframeでダウンロードさせるにはセキュリティゾーンで認可されたサイトになるように設定してあげるか、セキュリティの権限をいじってあげる必要があるようです。僕の場合はなんだかようわからないですけどお客さんがブラウザ側で設定してくれることになりました。なので正直、ここに書いてある実装はあんまりよろしくないです。

緯度・経度をメートル法に換算して距離を求める場合の定数

なんか本当はすっごい複雑な計算が必要らしくて、本来は場所によって違ったりもするらしくて正直よくわからなかった(なんかもういろんな意味であきらめた)のですが、ざっくりとした値で良い場合は、

・緯度 × 111319.491
・経度 × 91187.208

で求めるらしいです。(単位・メートル)

http://keisan.casio.jp/has10/SpecExec.cgi

もっとアバウトでよければ、それぞれ111000と91000でもいいみたいですね。
google map上で二点間の距離とか算出する機会があればどうぞ。

あ、こういうのは頼むから定数にしておいてくださいね。マジックナンバーにするのはマジでNG

/etc/mongodb.conf が凄い適当

Debianではapt-getでinstallできてあら簡単ですね、素晴らしいですね。
……とおもいきや設定ファイルが凄い適当で笑った。

# Disable the HTTP interface (Defaults to localhost:27018).
#nohttpinterface = true

nohttpinterface が true でデフォルト設定扱いでコメントアウト……?
「isNotEqual() == false」くらいめんどくせえなーとか思ったら

  1. デフォルト(コメントアウト状態)で「HTTPインタフェースが有効」
  2. ただしポートは書いてある「27018」ではなく、「28017」

という適当さ加減。

brew で Macに入れてみたらそっちは/etc/mongod.confって名前だったりしたので、Debianのはまだ古めなんですかね。

まあでもちょっと触ってみる範囲ではたのしげなかんじ。

でも実運用とかはちょっと嫌だな……