J3160-ITX + Arch Linuxで自宅NASサーバを組んだ

ボーナスが出たら買おうと思ってたんです。出てませんが。

NASといえば Synology DiskStation や QNAP が有名っぽいのだけど2ベイで2万円前後(でHDDは別途必要)となかなかのお値段するんですね。
PC自作クソ野郎としてはそれなら組んでしまえと3~4週間ほどパーツの価格調査をしてセール時期にあわせて(安くなってないけど)買いました。以下です。

マザーボード ASRock J3160-ITX ¥8,580 TDP 6W!
ケース Cooler Master Elite 110 Cube ¥5,517 Mini ITX
ATX電源 サイズ 剛短3プラグイン
SPGT3-400P
(400W)
¥4,869
-¥4,869
ポイント利用
メモリ Crucial W3N1600CM-4G
DDR3L-1600 4GB×2枚
¥4,332
SSD PLEXTOR PX-128S1C (128GB) ¥5,480 一番の無駄
HDD Western Digital WD Red (3TB) ¥0 家にあった予備
合計 ¥23,909

ポイント使って2万円以下に抑えるはずが使うの忘れてたり購入する場所を間違って少しオーバーしてしまった。
同価格帯NASキットのスペックみたら妙なところ盛りすぎと言わざるを得ない。

このマザーボードにはSATAポートが4つと、ケースの方も3.5インチベイが4つあるのでまだHDD2台詰める余裕あります。
PCIeスロットや背面・サイドにあるUSBポートがスッカスカだし拡張性も十分。
またそのうち増やしたりすると思いますが必要になったらということで。

そんでOSですがFreeNASやCentOSをインストールするべきところをやっぱり遊びたいのでArch Linux。
X Window Systemもインストールしない、キーボードは最初のsshdインストールまで。あとは全部Windows PCからSSHでの設定。
7mのLANケーブルがあったので邪魔にならず駆動音も聞こえない部屋の隅に置いてます。埃だけが心配。

組んでから1週間ほどで完成度が低いままですがインストールしたものは

  • certbot
  • fcron
  • iptables
  • mariadb
  • nginx
  • openssh
  • owncloud
  • php
  • php-fpm
  • rsync
  • redis
  • samba
  • vim
  • zsh

NASサーバとしてHDDの中身をWindows PCから操作できるようにSamba
オンラインストレージとしてPHP + NGINX + MariaDB + RedisでownCloud
サーバ証明書にLet’s Encrypt使ったのでcertbot
SSDの保存しておきたいファイル同期にrsync
省エネのためサスペンドなんかの自動処理でfcron
あとは、さくらVPSでも使ってるmuninで監視させるかzabbix使うかでまだ悩んでるところです。

pacmanで大体のものは見つかるしAURもあって最新に近いパッケージをすぐ使えて面白いですね。

CrystalDiskMarkでSambaの共有フォルダ計測するとなかなかのスコアでした。
まぁ、どうせアニメを保存するだけなんだろうな……。

@nifty光ライフ with フレッツを1時間で解約した

いいか、@niftyだけはやめとけ!絶対だぞ! 回線速度が120分の1になるぞ!!

@nifty光ライフ with フレッツ
(フレッツ光ネクスト マンション・スーパーハイスピードタイプ 隼・大阪)

------ BNRスピードテスト (ダウンロード速度) ------
測定サイト: http://www.musen-lan.com/speed/ Ver5.6001
測定日時: 2016/11/14 20:55:33
回線/ISP/地域: 
--------------------------------------------------
1.NTTPC(WebARENA)1: 683.7Kbps (85.36KB/sec)
2.NTTPC(WebARENA)2: 1.28Mbps (160.01KB/sec)
推定転送速度: 1.28Mbps (160.01KB/sec)

元のISPに戻すとこう

------ BNRスピードテスト (ダウンロード速度) ------
測定サイト: http://www.musen-lan.com/speed/ Ver5.6001
測定日時: 2016/11/14 21:32:30
回線/ISP/地域: 
--------------------------------------------------
1.NTTPC(WebARENA)1: 145.66Mbps (18.21MB/sec)
2.NTTPC(WebARENA)2: 154.97Mbps (19.37MB/sec)
推定転送速度: 154.97Mbps (19.37MB/sec)

ルーターがIPv6 IPoE使えないのでIPv4 PPPoEでの速度でこれ。
20時台は@niftyでも200Mbpsぐらいだったけど21時に近づくと急激に遅くなって良くて1Mbps、酷いと3G回線かよって速度になったので解約となった。

右クリック禁止(oncontextmenu)や貼り付け無効(onpaste)を無効にする

油断してるとたまに出てくる「右クリック禁止です」みたいな頭の悪いサイトで禁止された動作を使えるようにします。
oncontextmenu=”return false;” や onpaste=”return false;” のアレです。

以下、貼り付け禁止を無効にするやつです。

なんかいろいろ禁止されてるクソサイトの場合は paste, contextmenu, drop あたり書いとけばいいと思います。

document.addEventListener('paste', event => event.stopImmediatePropagation(), true);
document.addEventListener('contextmenu', event => event.stopImmediatePropagation(), true);
document.addEventListener('drop', event => event.stopImmediatePropagation(), true);

指定したサイトでだけこのスクリプトを有効にしないと右クリックで独自のメニューを出すサイトでは、その右クリックが出なくなるので注意が必要です。

タブの一覧表示メニュー(#alltabs-popup)のミドルクリックでタブを閉じる.uc.js

動作確認

たまにタブを開きすぎてどうにもならないことがあるので一覧表示メニューから閉じられたら便利そうだと思いまして。
#alltabs-popup > menuitem には menuitem.tab というのがあってそれでタブ操作がしやすくなってます。

ダウンロード: middle-click-close-tab-in-alltabs-popup.uc.js

セキュアなサイトでURLバーの背景色を変えるやつ.uc.js

動作確認

緑色の鍵マーク表示するだけじゃ分かりづらい!
と感じてuserChrome.cssである程度指定できていたのがFirefox 38あたりから使えなくなったので、鍵アイコン(identity-box)と同じような属性持ってきてCSSで背景色を変更してます。
XPCOMなのでそのうち使えなくなります。

HTTPS: 青っぽくする
url_ssl

HTTPS (EV SSL): 緑っぽくする
url_evssl

混在コンテンツ: 黄色っぽくする
url_mixed

ダウンロード: secure-site-urlbar-color.uc.js

// テーマによっては変になるかもしれないのでこの部分の色を変更するといいかもしれない
var colors = {'insecure': '#fff', 'secure': '#def0f7', 'ev': '#def2d7', 'broken': '#ffffdd'},

ELECOMのBluetoothレシーバー LBT-PAR500AVを買ったのだが

スペック的なアレ
Bluetooth 4.0、aptX/AAC対応、デュアルアンプ(よく分からん)、NFC(要らん)、連続待受350時間(すごい)、連続再生18時間(すごい)、それで比較的安い(4000円以下)。
イヤフォンはZERO AUDIOのTENOREを短く切ったやつ。

これ、Xperia Z3 Compactとペアリングしてると「再生/停止ボタン長押し」でリダイヤルするみたい。ググってもあまり出てこないから不良品かと思うだろ。

もちろんELECOMはクオリティ高いから説明書にそんなことは書いてない。察しろ。

で、横をつまむと自然と押してしまう再生ボタンの位置がもうダメすぎな上に撫でる程度で反応するので構造的にかなりクソだ。

なんだけどバッテリー長持ちするので渋々使ってる。

誰だよi-parcelも多少マシになったとかいうやつは!? 1ヶ月以上かかったぞ!という話。

こんな思いをするくらいなら花や草に生まれたかった。

2015年12月6日

今使ってるグラボ(GTX660)だとCoD:BO3できなくもないけど、若干厳しいので新しいのを買おうと各サイトをチェックしてたところ11月ごろに発売されたSapphire NITRO R9 380XがAmazon.comで$229.99という送料なんかを考慮してもかなりお手頃価格になってたのでポチった。
Shipping + Import Fees Deposit あわせて$260 (あとでクレジットカードの明細みると約32600円)

この時点では国内価格39000~43000円。

2015年12月9日

Amazon.comから出荷したとメール。i-parcelの追跡番号が書かれていた。

2015年12月??日(出荷から数日)

そろそろ追跡番号も反映されてるかなと思ってi-parcelのサイトで追跡すると

i-parcel

年末だし2週間ぐらい待てばたぶん届いてるはず… (まだ余裕)

2015年12月20日

i-parcelの追跡が全く更新されないし心配になってきてAmazon.comのカスタマーサービスに
「i-parcelのサイトで追跡すると “invalid tracking number or this tracking number is not using a trackable service” と表示されるのだけど、荷物はどこにあるの?」
というようなメールを送る。

Amazon.comから早速返信がきて
「いろいろ申し訳ない!遅くとも12月28日には届けますから!i-parcelにも早くするよう伝えます!あと送料は返金しときます!」

どうなってるか問い合わせただけなのに遅いと送料返金されることもあるらしい。

2015年12月21日

refund

返金されてた。

2015年12月28日

やっぱり届かない。(年末だから…!と必死で平常心を装う)

2016年1月4日

再度Amazon.comに「まだ届いてないけど今荷物はどこにあるの?」的なメールを送る。

小一時間でAmazon.comから返信きて「申し訳ない。商品はまだ(Amazon.comに)戻ってきてません。住所はあってますか?」というメール。住所あってます。

2016年1月6日

Amazon.comのオーダーステータス見たら「Return received」「2~3日で返金」となっていたので、よく分からないしもう一度カスタマーサービスにどうなってるか問い合わせ。

2時間後、Amazon.comから
「本当に申し訳ない。パッケージが破損していたので戻ってきました。交換するか返金するか連絡ください。」
(!!!!!?????)

破損してた!

別のを買うにしても面倒なので「同じやつ再送で頼む」と返信。

Amazon.com
「再送の手配しました。配送は一番早いAmazon Global Priority Shippingです。追加料金とかは必要ありません。」

amazonglobal

再送用のオーダーID作られてて0円。

2016年1月8日

Amazon.comから出荷。今度はUPSで到着予定は14日らしい。

2016年1月12日

不在でした。

ups

2016年1月13日

到着。長かった…。

r9_380x

最終的にAmazon.comの履歴はこうなってます。カード明細更新されてて送料の返金額は1326円だった。

amazon_r9

海外での買い物でトラブルがあると英語でのやりとりが最高に面倒臭いし、この間に国内でも値下がりしてたしでなかなかに酷い年末年始だった。

検索バーのマウスホイールスクロールで検索エンジンを切り替えるやつ.uc.js

wheel_search

動作確認

検索バー上のホイールスクロールで検索エンジン切り替えるだけです。
Firefox 43以降では検索エンジンのアイコンも変えるようにしてます。

ダウンロード: wheelscroll-to-change-search-engine.uc.js
GitHub: wheelscroll-to-change-search-engine.uc.js

中止ボタンがXboxのアレに見えて困る

xbox_no_are

何を馬鹿な、きっと疲れてるんですよ。
あ、すいません…… しいたけのぱくりですwww

というノリで作ったやつを4年ぶりに更新してFirefox 43以降でも使えるよう署名付けました。

Firefox 43で確認。
インストール: xbox_no_are-1.1.1-fx.xpi

※アドオン形式にしましたがStylishやuserChrome.cssだけでいけます。

JavaScriptのtypeofって大雑把すぎんじゃね?というやつ

JavaScriptでオブジェクトの型を判別するのにtypeof演算子使うとツラいよね – Qiita
で is(‘型’, 値) という関数が便利なのだけど typeof と比較して10倍ぐらい遅い。
なので、それなりに速度を上げてarrayやnull(とついでにNaN)も判定する関数を考えた。

typeofでなくてtypeOf()です。

ES6が使えない場合は Number.isNaN がダメなので typeof val === ‘number’ && isNaN(val) とする必要があります。

へっぽこスクリプト・スタイルシート