自宅サーバの新調

10年以上前に組んだマシンがいい加減死にそうになっていたので(画面出力は完全に死んでいるとか、電源投入してもたまに起きてこないとか)、新調した。

構成は以下のような感じ。

 

CPU:Core i3 7100
M/B:ASRock H110M-ITX
RAM:W4U2400BMS-4G
CAS:RAIJINTEK METIS
SSD:Intel SSDSC2KW240H6
PSU:CORSAIR CX450M

 

ちなみにSSDは流用品。メインマシンにSamsung 960 PROとかいうM.2なSSDを入れた時に外したものをそのままつかった(一応SecureEraseはしといた)

最初AMDを使おうと思っていたんだけど、なんかパッとしない感じだし(グラフィックは最小限あれば十分だけど、最近のラインナップはAPUばっかりに見えてしまい…)、前提としてRAIJINTEK METISを使うってのがあったのでmini-ITXマザーである必要がある、AMDでかつmini-ITXだと選択肢が欠片もない…3000円くらい追加すればIntelにできるかな、という事で、IntelのCoreシリーズ最下層という感じで。

M/BはIntelのネットワークチップが載ってるらしいという事で(Intel I219V)ほぼ即決。旧メインマシンではオンボードも追加したものも蟹さんで、どっちもご臨終だったのを思い出しながら。

 

OSには挑戦として(?)ArchLinux

安定して動かせるかどうかドキドキだけど、まぁ趣味の自宅鯖だしいいかなという逃げ口上とともに、それなりにがんばります。

 

 

PSUがCorsairだし、スリーブケーブルでも入れてみるか〜?とも思ったけど、ケーブルを全然使わない構成なので意味がない事に気づいたのであった。メインマシンの電源が流用品なので、ここでまた考えようかなって感じだね

Windows10でアプリケーションが管理者権限で動いてるかチェック

メイプルなんちゃらとかいうゲームでSteam Controllerを使うためには、管理者権限で起動したSteamからクライアントを呼び出さないといけないらしい。

PC起動しっぱなしで、管理者権限だったかどうか思い出せない時、まぁ再起動すればいいんだけど、チェックできればいいよね、という話。

 

タスクマネージャの詳細タブで、「管理者特権」つー列を追加すればおしまい。

しょーもな。

 

こないだのSteamサマーセールで安くなってたから思わずSteam Controller買っちゃったけど、L2, R2が半押しと全押しとか、各ボタンの二回押しとか長押しとかで違うキーがマップできるとか、モードシフトの設定をすれば1つのボタンに複数キーマップできるとか、これが凄い良い

2次職3次職4次職とかまで進めばスキル数がガンガン増えていくので、通常のジョイパッドでのプレイはかなり厳しい、それ用にボタンが多いものを用意しないといかんなと思っていたけど、大凡普通のボタン数+ちょっとしかない状況でも全く問題ない。どのスキルをどこにあてるかはかなり考えないといけないし、慣れるまで難しいけど、まぁオンラインゲームってそういうものだよね。

ちなみに、見た目から一番わかりやすい、マウスを操作できるってのもなんだかんだ便利、狩りしながらインベントリの中確認とか余裕

 

ゆかり鯖でまったりやってるので暇だったら声かけてくれると喜びます

ノートPCを新調した

前使ってたのはVPCS14AFJで、購入は6年前。

購入当初はWindowsで使ってたけど、ある時からUbuntuへ移行、その後色々あってArchLinuxにうつって、今に至る。

 

で、もう7年目というわけで、普通に寿命が来てた。ソフトウェアに関しては、 初期化してしまえばなんとかなるけど、ハードウェアに関してはどうしようもない。

普通にガワにはヒビが入ってるし、角は割れてたりもする

無線通信もヤバそうで、ちょいちょい落ちてしまう

 

という訳で新調しました

購入したのはDellのXPS13 9360のCore i5 7200U/RAM 8GB/ NVMe SSD 256GBモデル。

選び方は単純で、

・日本メーカーは一部の例外を除いてJISキーボードしかない(論外)

・その一部の例外は予算オーバーしまくり

海外メーカーでは、

・ASUS→ダサい

・HP→ダサい

・LG→Gram悪くないけど中身が詰まってる感じしなくてテンション上がらない、スッカスカ安っぽい

・Lenovo→悪くないけど昔のキーボードを復活させてくれないなら価値はあまり…

・acer→印象に残らない

・msi→ゲーミングのデカいものしか陳列されてなくてつらい

という訳でDellしか 残っていない

 

消去法で決めたと言われれば確かにそうなんだけど、それとは別に、XPS13は米国市場ではDevelopers Editionと称して、WindowsでなくUbuntuがプリインストールされているモデルがある。

どこぞのYogaなんたらとか、マッなんたらと違って、Linuxを素直にインストールできる可能性が非常に高い。

という訳で決定しました。

 

Dellは注文後生産で在庫を持たないし、最近はヒアリ騒動もあるし、随分遅れそうだなぁとは思ったけど、Dellが注文を受け付けてから17日(17営業日でない)で届いたので、まぁまぁの感じだった。事前情報通りオーダーステータス確認画面はゴミだったけど。

 

モノについては大したレビューもできないので、他のサイトを見てもらうとして。届いた初日にWindowsに別れを告げて(一応リカバリメディアは作成した)、InstallBattle逃げのantergosをインストール。

大雑把に旧PCから環境やデータを引っ越してきて、一区切りついた。

 

解像度が1366×768からFullHDに変わったおかげですごく目に優しい環境になったと思う。よかったよかった。

$(window).load(function() {});の形が廃止された

今更なはなし。

要素のロードが完了したら実行してくれるのを考えて、Webページのロードが完了したらJS関数を実行して欲しいというのを書いたけど、$(window).loadの形が、廃止されたらしい。

今の形はまた違うようだ。

 

以下が廃止された形

$(window).load(function() {
ほにゃらら
});

以下が今使える形

$(window).on('load', function() {
ほにゃらら
});

 

そもそもdeprecatedだったらしいので、まぁいつかはこうなる運命だったんだな

特定文字列を含むファイルを検索する

NOMP(node-open-mining-portal)を使ってオレオレプールをつくってひっそりとソロマイニングしていたけど、恐らくsegwitが有効化されてから、getblocktemplateがエラーでこけるようになってしまった(全然気づかなかった)

ぐぐってみると、bitcointalkにドンピシャの話が。getblocktemplateの引数に”rules”:[“segwit”]を追加しなさい、と。

なるほど~と思ってgit pullとかnpm updateとかしてみたけど、なんだかうまく取り込まれなかった気がした…ので、自分でなんとかしてみることにした。

 

というわけで、getblocktemplateという文字列を含むファイルを検索する。

grep一発でおk

$ grep -rnw hoge -e "PATTERN"

今回は「カレントディレクトリ内にgetblocktemplateという文字列があるファイルを検索する」のが目的なので、

$ grep -rnw . -e "getblocktemplate"

あとは適当に修正していけばなんとかなった。よかったよかった。

動かせないデータを隣のストレージに動かしてなんとかする

Windowsの話。

C:\Windows\Installerが死ぬほど肥大化して死んで欲しい場合とか、あと今回はMinerGateでETH掘ってるときのDAGデータが大きいとか

要は、その大きすぎるデータを隣のストレージに移動させたいが、そこに移動させたという設定をアプリケーション側で行うのが面倒、というパターン。

 

JunctionというのがMSから提供されているので、これを使う。

 

今回はDAGデータを移動させる。DAGデータ本体はC:\Users\user\AppData\Local\minergate\.ethash-minergate以下にあるので、これを事前に他のストレージに(今回はE:\.ethash-minergateとして)移動させておいてから、以下のような感じで

E:\>junction.exe C:\Users\user\AppData\Local\minergate\.ethash-minergate E:\.ethash-minergate

Junction v1.07 - Creates and lists directory links
Copyright (C) 2005-2016 Mark Russinovich
Sysinternals - www.sysinternals.com

Created: C:\Users\user\AppData\Local\minergate\.ethash-minergate
Targetted at: E:\.ethash-minergate

 

要はシンボリックリンクみたいなものを張っているだけ。これでいくらでも移動させられるぜ

ちなみにC:\Windows\Installerが60GBくらいになってるマシンもあったんだけど、普通に使っているだけでここまでOSを肥大化させられちゃうOSってのも、なんだかなぁという感じだよね

multerを使ってアップロードしたときのファイル名

Node.js + Expressでなんか作ってるとき、multerを使ってファイルをアップロードしたときのファイル名の操作

githubに書いてある通りなのだけど、メモ

 

「filenameを指定しないと拡張子を一切含まないランダムな名前が付加されるぜ!」

 

つーわけで以下のような感じでfilenameを指定する

const multer = require('multer');

const multerStorage = multer.diskStorage({
destination (req, file, cb) {
cb(null, './public/uploads/');
},
filename (req, file, cb) {
cb(null, Date.now() + file.originalname);
}
});
const upload = multer({ storage: multerStorage });

 

cbの第二引数(ここではDate.now() + file.originalname)でファイル名を指定する。file.originalnameを付けているので拡張子も保持されるはず

そういえばメインマシンの構成

PC新調(すこし)したで書いたけど、ちゃんと構成まとめてなかった気がするので、まとめ。

ちなみにPSUは未だちゃんと買ってないです

 

CPU : Intel Core i7 6700K
CPU Cooler : Thermaltake CL-P022-AL12BU-A
M/B : ASRock Z170 Gaming K4
RAM : Crucial CT2K8G4DFS8213 (DDR4-17000 8GB x2)
SSD : Intel SSDSC2KW240H6X1
CAS : Corsair Carbide Air 540

 

グラボは当初載せてなかったけど、ゲームやりたくなってそのへんに転がってたZOTACのGTX750Tiなやつを1枚だけ放り込んだ

 

今後やりたいこと

・電源を取り敢えずのものじゃなくする

・ストレージをM.2に変える

・お強いグラボ載せる

・水冷化

 

熱によるパフォーマンス低下も含めて、諸々落ち着いて触りやすそうになるまで、M.2は放置しておく心積もりなので、とにかくそれを待つ。

グラボは、GTX1060くらいがコスト的にちょうど良いのかなという気持ち。最上位を狙っても世代差にやられて終わりそうだし

水冷は、パーツなんとなく眺めたけど、正直あと一台マシンを組む、くらいのコストが必要になりそうだったので、これはもう暫くあとだな〜という気持ちになっている。

 

 

さっさと鯖新調したいぜ

Webページのロードが完了したらJS関数を実行して欲しい

Masonryを使ってレイアウトさせてたりとかしたんだけど、画像読込のタイミング、ないしはWebフォント読み込み完了のタイミングでもう一度位置計算して欲しいというお話。

HTMLデータ読込→Masonryによる位置計算、配置→画像が読込完了(Webフォント読み込み完了)になると、Masonryの枠が重なっちゃうんですよね。なので、それぞれ読込が完了したときに位置計算して欲しい。

前者、画像とかについては、$(window).load()みたいなノリでやればおk

後者、Webフォントについては、FontLoaderを使う事にした

 

ひとまずは以下のような感じで、Masonryの位置計算部分を関数の形で記述しておく。(再計算用のメソッドとかありそうだけどし〜らない)

function mason(){
$('article').masonry(){
〜Masonryのオプション〜
});
}

 

・画像とか

よく見るサンプルコードは(上記のように関数の形で用意しておいたなら)

$(function(){
mason();
〜その他やりたいこと〜
});

という感じだけど、$(function(){ほにゃらら})の形は、HTMLを読み込み終えたら実行されてしまうらしい。

やることは簡単。$(window).load()をに差し替えればおk

$(window).load(function(){
mason();
〜その他やりたいこと〜
});

 

・Webフォント

WebFontLoaderを使えば良いらしい。文字幅の変化を検知してWebフォント読み込み完了をキャッチするとかいう手法も見かけたけど、面倒そうなのでやめとく()

WebFontLoaderはGoogle Fonts, Typekit, Fonts.com, Fontdeckを読み込める…らしいが、他のものも使えるようで、今回はそっちの記述で。

<script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js" type="text/javascript"></script>
var fontconfig = {
custom:{
families:['フォント名'],
urls:['WebフォントCSSのURL']
},
active: function(){mason();},
inactive: function(){mason();}
};
WebFont.load(fontconfig);

active:Webフォントの読み込みが完了(レンダリングが完了)したら実行したい内容

inactive:ブラウザでWebフォントが有効でない場合もしくはフォントが読み込めなかった時に実行したい内容

 

そもそもJavascriptとか全く勉強しないで触ってるんだけどすげえつらい(基礎くらい勉強しような)

Nagiosでサーバ監視〜導入編〜

運用しているサーバや常時稼働しているマシンを監視したいという願望はあったのだが、偶然Nagiosというものを知ったので、取り敢えず使ってみることにした。

 

長くなってしまった気がするので、導入編と利用編で分けようと思う。こちらは導入編。

 

環境はArch Linux(ただしsystemd-nspawnでコンテナ立ててその上に設置する。ホイホイ実験できて便利だね)

基本的にはいつもの通りNagios – ArchWikiで。

 

Nagiosは本来はWebサーバは必要としないのだが、Webフロントエンドがあるので、Webサーバを用意しておいた方が便利に使えるだろう…ということで、ArchWikiではnginx, php, php-fpm, fcgiwrapが良いと思うよって書いてある

ただ、nginx全然使い慣れてないし、nginxで四苦八苦することは今回の趣旨から外れるので、ApacheでPHP使えるようにして…みたいな感じで。省略。ちなみにNagios入れたあとPHP動かなくて苦しんだけど、どうやって解決したのか全く覚えてないので、自宅サーバ新調してから手順をまたまとめ直します()

 

公式リポジトリにnagiosはいらっしゃらないので、nagios – aurのお世話になる。また、monitoring-pluginsが必要になるやろって書いてあるので、それもインストールしておく。

$ yaourt -S nagios
$ sudo pacman -S monitoring-plugins

monitoring-pluginsをnagiosから使えるように設定する。具体的には、/etc/nagios/resource.cfgの$USER1$が向いている先をmonitoring-pluginsに変更する

#$USER1$=/usr/share/nagios/libexec
$USER1$=/usr/lib/monitoring-plugins

コンフィグファイルをsampleをもとに作成する(つってもコピーするだけ)

$ sudo cp /etc/nagios/cgi.cfg.sample /etc/nagios/cgi.cfg
$ sudo cp /etc/nagios/resource.cfg.sample /etc/nagios/resource.cfg
$ sudo cp /etc/nagios/nagios.cfg.sample /etc/nagios/nagios.cfg
$ sudo cp /etc/nagios/objects/commands.cfg.sample /etc/nagios/objects/commands.cfg
$ sudo cp /etc/nagios/objects/contacts.cfg.sample /etc/nagios/objects/contacts.cfg
$ sudo cp /etc/nagios/objects/localhost.cfg.sample /etc/nagios/objects/localhost.cfg
$ sudo cp /etc/nagios/objects/templates.cfg.sample /etc/nagios/objects/templates.cfg
$ sudo cp /etc/nagios/objects/timeperiods.cfg.sample /etc/nagios/objects/timeperiods.cfg

ファイル群のオーナー変更

$ sudo chown -R nagios:nagios /etc/nagios

認証情報作成(ArchWiki通りにユーザ名はnagiosadminにしてみた)

$ sudo htpasswd -c /etc/nagios/htpasswd.users nagiosadmin

/usr/share/nagiosがroot:rootだとまずいようなのでこれも変更しておく

$ sudo chown -R nagios:nagios /usr/share/nagios

Apacheにnagiosを設定する。ArchWikiではPHP5使っているようだけどPHP7でもおkっぽい

$ sudo vim /etc/httpd/conf/httpd.conf
〜略〜
LoadModule php7_module modules/libphp7.so
〜略〜
Include &amp;quot;conf/extra/nagios.conf&amp;quot;
〜略〜
Include &amp;quot;conf/extra/php7_module.conf

nagios.confを読み込ませるようにしているので、無いと死ぬ。作成する(サンプルからコピーする)

$ sudo cp /etc/webapps/nagios/apache.example.conf /etc/httpd/conf/extra/nagios.conf

Apacheの実行ユーザ(http)がnagiosグループに入っていないとこれも死ぬので追加

$ sudo usermod -G nagios -a http

PHPがnagiosのWebフロントエンドを実行できるようにopen_basedirを編集する

$ sudo vim /etc/php/php.ini
open_basedir = /usr/share/nagios/share/

以上でセットアップ終了。起動してブラウザからhttp://localhost/nagiosにアクセスしよう。設定しておいた認証情報(nagiosadminとか)を使ってログインできる。

$ sudo systemctl restart nagios
$ sudo systemctl restart httpd

 

最近はあまり見なくなったフレームレイアウト

 

以上。