PC新調(すこし)した

構成はCore i7 6700K + Z170を基本にしててきとうにした。

新調に「すこし」とつけているのには理由があって、要はお金が無いから本当に必要な部分だけを先に揃えて、ひとまず動く状態にしたってだけ。本当に一式揃った時点で改めてまとめる予定(そのときに最終的な構成も書く)。

という訳で、これは思いついた事をつらつら列挙するまとまりのない記事にします。

 

6700Kにはリテールクーラーが付属してこないので、Thermaltakeの安いクーラーを取り敢えずで。

ケースにはCorsairのCarbide Air 540を選んだので、普通にATXマザーに普通サイズのクーラーという状態なら、中身は相当スッカスカ。異常に広いところに普通のパーツという訳で。一応理由はあって、将来的には水冷を考えているので、それ用のスペースを先に確保しておいた感じ。

ラジエータはケース上面に「ラジエータとか設置しろよな」ってスペースがあるので良いとして、リザーバとかポンプの置き場は用意されてはいないので、それを見据えたのだ。暫くお金ないしいつ実現するかわからんけど。

ケースのデカさはこれを見るとわかる。女性が抱えているからか、異常に大きく見える。しかし、実際にはそこまでのサイズ感ではなく、従来メインマシンで使っていたCoolerMaster CM690 II Plusと背の高さは似たようなもので、幅が2倍弱あるくらい。

 

一番取り敢えず感漂うのはPSUで、GAWのBlack Widow用に購入しておいたFSPの650W品を流用。80PLUSのどこまで認証通ってるのかも把握してないくらい取り敢えず。Haswell対応かどうかも把握してないけど、自分の使い方では、省電力というよりパフォーマンス寄越せよ(強い拘りでもないけど)、くらいの状況なので、最小電流は気にしなくてもいいよな…みたいな感じ。

 

GPUは今回は用意せず(当初の予定ではGTX960を安くっていうの考えてたけど、予算の都合で後回し)、RadeonのRX480のベンチとか出回る頃にまた考えようかな、くらいの認識。

Lyra2rev2の採掘でパフォーマンス出るようなコアを選ぶつもり。

どうせ高すぎて手が出ないから関係ないんだけど、GTX1080で50MH/s前後出るってマジ?diff600として50MH/sで1日回せば80MONAくらい、という訳で板を10万円くらいで入手したとすると、(電気代を考慮しなければ)200日くらいで元が取れる訳だ。高すぎて手が出ないんだけど(欲しい)。

 

あと、今回の組み立てでめっちゃ思ったんだけど、CPUの取り付けとかマザーの取り付けとか諸々のデバイス取り付けとか全然迷わないし、取り敢えずそこにあるケーブルを刺さりそうなところにバシバシ刺してけば解決するから、本当にPC組み立てって簡単になったなって思うんだけど、CPUクーラーの構造が複雑過ぎてつらい。

プッシュピンタイプで大きいの取り付けるのは抜けるの怖いから考えてないんだけど、バックプレートタイプだと構造が複雑すぎる。似たようなパーツとかちらちらあったり、固定の仕組みが全然違ったり。

CPUクーラーの構造を共通化しろなんて言わないけど、取り付けマニュアルのわかりやすさが向上するといいんだけどなぁ。

 

忘れてたけど、OSにはWindows10入れておきました。従来環境からのデータ諸々の移行が完了し次第ライセンス認証通して、従来のメインマシンはSSDをSecure Eraseした後Linux入れて、お家でコード書く用の環境にしようかと。パワーもあるのでビルド等々に不便はなさそうだし。

今回組んだマシンはやっぱWindowsで運用します。仮想マシンでの動作を禁止するゲームも多いみたいだし(特にオンラインゲーム)、メインのOSをどうたら〜とかいう発想ではなく、この用途ではこれ、あの用途ではそれ、という発想の方がいいかなと。

従来マシンだってCore i7 870と型落ち世代落ちではあるけど、まだまだ頑張れるはずだし。

 

おしまい。

 

指紋認証を使う

使っているノートPCであるVPCS14AFJ、ふとlsusbの結果を眺めていると、

Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 007: ID 0489:e00f Foxconn / Hon Hai Foxconn T77H114 BCM2070 [Single-Chip Bluetooth 2.1 + EDR Adapter]
Bus 001 Device 006: ID 8086:0186 Intel Corp. WiMAX Connection 2400m
Bus 001 Device 005: ID 054c:02e1 Sony Corp. FeliCa S330 [PaSoRi]
Bus 001 Device 004: ID 04f2:b1dc Chicony Electronics Co., Ltd
Bus 001 Device 003: ID 147e:1001 Upek TCS5B Fingerprint sensor
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bluetoothはちらちら使うし、FeliCa S330もなんとなく使える。WiMAXは回線契約が無いので試しようもない。あと用途がさっとわかるもので使っていないのは、指紋認証のセンサーだ。

取り敢えず「Linux 147e:1001 Upek TCS5B Fingerprint」とかでぐぐると使用事例と共にarchwikiがヒット。

https://wiki.archlinuxjp.org/index.php/Fingerprint-gui

結局archwikiの内容をそのまま操作しただけで使えるようになった。取り敢えずsudoとlightdmで有効にしておけばかなり利便性は確保できるでしょう。

パスワードの入力と指紋の読み取りと、併用して使えるのが良い。手袋をしている、指が油まみれ(そもそもパソコン触るなよ)等の事情で指紋の読み取りが出来ないときに従来通りパスワードでも認証出来る。

また、CPU負荷はfingerprint-helperというプロセスが1%か2%程度食べるだけなので、非常に軽い。

ちなみに、読み取りに失敗するとか、登録されてない指を読み取らせるとかしても、通常のパスワード入力ミスの時とは違い、失敗したよタイムアウトはない。すぐさま読み取りにリベンジ出来る。

特に難しい事なく出来た。よかったよかった。

 

指紋認証リーダーって高いんだな。ノートPCにビルトインだったから気にしてなかったけど。

最近更新されたファイルを検索する

なにかチャレンジしようとしてパッケージをモリモリインストールしたりゴリゴリビルドしたりしたはいいけど、諦めたか成功したかともかく、元の状態に戻したいと思った時、システムに対してどんな変更を加えたのかはっきり覚えてある事もあれば、曖昧になってしまっている事もある。

パッケージマネージャで管理されていれば、記憶の片隅にあるパッケージ名からなんとなく削除をすればいいけれど、そうでない時、ないしパッケージ名が記憶の片隅にすらなかった時、困る。

という訳で、最近更新されたファイルを検索すれば良い。

find /path/to/find -type f -mmin -10

これで10分以内に更新されたファイルが検索される。ちなみに-10でなく+10にすると、10分以内に更新されていないものを検索する。便利に活用できそう。

この検索結果からうまく導き出せれば、曖昧になっていた変更点も探し出せるでしょう。

QtでSQLを触った時の後片付け

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setDatabaseName("hoge");
〜略〜
db.open();
〜処理〜
QString connName;
connName = db.connectionName();
db.close();
db.removeDatabase(connName);

みたいな感じで接続しててきとうに処理してcloseとremoveDatabaseすると、

connection ‘qt_sql_default_connection’ is still in use, all queries will cease to work

とか言われて死ぬ。(別に死なない)

 

どうやら、db.close()してもdbはデータベースへの参照情報を保持したままでいるらしい。dbをリセットしてやるとエラーも出ずにうまくいく。

結局、こんな感じにするといいみたい。(お片付け部分だけ)

QString connName;
connName = db.connectionName();
db.close();
db = QSqlDatabase();
db.removeDatabase(connName);

db = QSqlDatabaseがミソ。リセットだー。

参考はこちら→warning remove database – Stack Overflow

 

おしまい。

Qtで定期的にスロットを呼び出す

要は定期的にシグナルをemitするみたいな感じ?

QTimerを使えばいいよとかいう記述How to emit signals with an interval in Qt? – Stack Overflowを見つけたので、これをてきとうにパクった

auto timer = new QTimer(this);
timer->setInterval(500);
timer->setSingleShot(false);
connect(timer,SIGNAL(timeout()),SLOT(hogehoge()));
timer->start();

みたいな感じ。

setInterval()で間隔を指定(ミリ秒単位)(精度は知らない)

setSingleShot()で1発だけか何発でもやるかを指定(trueなら1発、今回は定期的に動いて欲しいのでfalse)

あとはconnect()で好きなスロットと接続して、start()で動かしちゃいましょって感じ

 

かんたんべんり、Qtちゃん

SQLでデータベースとそれへのユーザを追加する

データベースの追加と、そのデータベースにアクセスさせるためのユーザを追加する。

table見たり、情報拾ってきたり、更新したり削除したりは、割と頻繁に使うからなんとなく覚えてるんだけど、データベースの作成等は頻度が低くて絶対に忘れるので、メモ。

 

$ mysql -u root -p
create database DB_NAME;
grant all privileges DB_NAME.* to USER_NAME@'HOSTNAME' identified by 'USER_PW';
flush privileges;
quit;

これで一連の流れはお終い。rootでログインすんのかよとかそういう話は置いといて。大文字小文字もやりやすいようにやるってスタンスなんでそれも置いといて。

createで作成、grantで新しいユーザに権限を与えて、flushで情報をリロードさせると。

例えばnew_dbっていう名前のデータベースを作って、ローカルにいるユーザ名tea・パスワードtea_pwを使うとすると、

$ mysql -u root -p
create database new_db;
grant all privileges new_db.* to tea@'localhost' identified by 'tea_pw';
flush privileges;
quit;

みたいな感じですかね。例示する必要あったか?

fcitxを使う(Qt5製アプリケーションでだけ使えない話)

Qt4製アプリケーションとかその他アプリケーションでは正常に動作していて、問題なく入力出来ているんだけど、Qt5製アプリケーション(例えば、Qt Creatorとか)で日本語に入力切り替えできない(というかfcitxが動いてないっぽい?)という状態。

まぁ結局ArchWikiのFcitxのとこに載ってたしそれ見ればいいんだけど、これ

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx

多くの情報源はこれを.bashrcに書けとか書いてあって、でも

.bashrcはインタラクティブなbashセッションを初期化するときに使われます。インタラクティブでないセッションやXセッションの初期化では用いられません。

だそうなので、.bashrcに書いた場合は、bashからQt Creatorを起動した場合にのみこれが有効となって、fcitxが正常に呼び出せる。

というわけで、今回は~/.xprofileに三行を書いて一件落着。

Qt4製アプリケーションとか、その他のアプリケーションでは普通に使えていたのは何故なんでしょうとは思うけど、まぁ使えるようになったしいっかな〜