自作PCを組み立てた

はじめに

一部で話題になっている5万円台PCや7万円台PCを参考にしつつPCを組んでみました。そもそも以下の記事が発端なんですが、その時期にあわせてメインマシンの買い換え時期がそろそろなことと、在宅勤務の時間が長くなったのに自宅でノート機を使っているのはなぁ、数年前のハイエンド・ノートPCよりも最近のエントリー・デスクトップのほうが性能は高いだろう、などの考えが交錯して「自作作業用に安価なデスクトップを作れば良い」という考えになりました。ここ20年くらいはデスクトップ機を持っていなかったので*1、最近はどんなかんじになっているのかという好奇心もありました。デスクトップ機でもノート機でも部品の追加や交換は平気でやっていたんですが、自作は初めてです*2

www.itmedia.co.jp

この記事を参考にして、Micro ATX規格のマザーボードRyzen 5 1600AFを中心にしてAMDのCPUとGPUで組んでいく予定だったんですが、1600AFが入手困難な状況が続いていたことと、Intel Core i5 10400も頑張っているよという意見も聞いたので、まずはGPU内蔵の10400にすることにしました。第10世代からはi5でもスレッド数はコア数の2倍になってますし、GPUが足りなくなったら追加すればいいですし。

部品構成

Windows 10 Homeのライセンスも新規購入しないといけないので、目標としては本体のみで5万円台に抑えたい(ディスプレイ、キーボード、マウスなどの周辺機器は探せば出てくるはず)。GPU内蔵とはいえCPUが高く付いたので、他はケチケチと。メインマシンにするMacを購入するときは「一番いいのを頼む」精神で、とにかくCTOリストから最上位のものを選んでいくことが多いのですが*3、予算制約の中で部品を選ぶのも楽しいですね。部品選びにはこのサイトが便利でした。

niku.webcrow.jp

*1:最後に使っていたデスクトップ機は1999年頃のPentium III (600MHz)で、ゲーム用(MS Flight Simしかやってなかった)のサブマシンにしていました。当時のメインマシンはPowerBook 5300cs/100を使っていたんだったかな。

*2:大学のときに(回路シミュレータ上ではありますが)AND/ORゲートを作ってそれを組み合わせてCPUを作っていくという演習授業も受けましたし、OSや言語処理系を作る授業もたいそう楽しく受講したので、そういう意味での自作は初めてではないです。Epson PC-386Mのクロック水晶の交換とかもやってますしね。でも、プラ板だけからとか、丸太一本削り出しでとか、あるいは鋳造では作ったことはあるけど、キットのプラモデルでガンダムを作るのは初めて、という感じでしょうか?

*3:数年前まではそれでも40万円くらいだったんですが、今のMacBook Pro 16 inchはSSDの値段がゴツいこともあって最上位構成は70万円と手が届かない値段になりますね-白目

続きを読む

本日の給油(スーパーカブ110プロ/JA07) & 千葉県一周の旅

給油日 オドメーター (km) 給油量 (L) 単価 (円/L) 燃費 (km/L) 距離単価 (円/km)
2020-02-22 10890.0 2.67 141.95 51.20 2.77
2020-03-16 11037.1 3.46 138.73 42.51 3.26
2020-03-20 11217.6 2.83 133.92 63.78 2.10
2020-03-21 11407.0 3.11 142.12 60.90 2.33
2020-03-22 11612.2 3.50 138.57 58.63 2.36

3月の三連休に、千葉県一周ツーリングに行ってきました。松戸あたりから出発し、できるだけ海沿いを走って岬や灯台を巡る旅です。富津岬(A)〜館山城〜洲崎灯台(B)〜野島埼灯台(C)〜太東灯台(D)〜犬吠埼灯台(E)〜香取神宮(G)〜東峰神社(H)〜関宿城(I)。千葉県の最北端(富津岬)・最南端(野島埼灯台)・最東端(犬吠埼灯台)・最北端(関宿城)を制覇しました。(厳密には少しずれたところが端になっているそうです)

1日200 kmくらいで3日間で600 km。燃費が良いので交通費は1300円のみ。オドメーターのゾロ目には蘇我駅あたりで遭遇。

本日の給油

給油日 オドメーター (km) 給油量 (L) 単価 (円/L) 燃費 (km/L) 距離単価 (円/km)
2017-09-15 10004.7 3.09 123.96 53.03 2.34
2017-10-04 10152.2 2.08 125.96 70.91 1.78
2017-10-18 10314.9 3.42 125.73 47.57 2.64
2018-05-05 10499.5 3.18 137.74 58.05 2.37
2019-06-08 10607.9 2.40 148.75 45.17 3.29
2019-07-13 10753.3 3.20 137.81 45.44 3.03
2020-02-22 10890.0 2.67 141.95 51.20 2.77
2020-03-16 11037.1 3.46 138.73 42.51 3.26

オドメーターの次のゾロ目タイミングが近づいてきた。11111、12345のあとはとうぶん無いかなー。

JuliaからRCallを使ってANOVA君を呼び出す

ANOVA君は、井関龍太氏が開発している、Rで動作する分散分析プログラムです。様々な実験計画に対応できるようになっており、分散分析に加えて多重比較や単純主効果の検定もやってくれます。自分ではlm()とかaov()なども使ってはいますが、ANOVA君は一回の関数呼び出しですべてを面倒見てくれるのでとても重宝します。

riseki.php.xdomain.jp

数年前に僕がPythonに移行できなかった理由の一つに「まともな分散分析ツールがない」ということがありました。1要因や簡単な2要因のものくらいなら見つかるのですが、3要因以上だったり2要因でも混合計画のものは見つからず、かといって自分で作るのも車輪の再発明をしているかんじでイヤだったのです。Juliaに移行するにあたっても同じ理由でRを捨てられずにいます。

しかし、JuliaはPythonともRとも親和性が高く、それらで書かれたプログラムも簡単に呼び出すことができます。今日は、JuliaでRを呼び出してANOVA君を使う例を紹介します。

続きを読む

本日の給油

給油日 オドメーター (km) 給油量 (L) 単価 (円/L) 燃費 (km/L) 距離単価 (円/km)
2017-09-15 10004.7 3.09 123.96 53.03 2.34
2017-10-04 10152.2 2.08 125.96 70.91 1.78
2017-10-18 10314.9 3.42 125.73 47.57 2.64
2018-05-05 10499.5 3.18 137.74 58.05 2.37
2019-06-08 10607.9 2.40 148.75 45.17 3.29
2019-07-13 10753.3 3.20 137.81 45.44 3.03
2020-02-22 10890.0 2.67 141.95 51.20 2.77

本当に久しぶりに給油。2018年は185 km、2019年は250 kmていどしか走っていない……。

Land of Lisp第7章

Land of Lispを読んでいます。日本語版も英語版も英語電子版も持っているのに、読み終わる前に投げ出して、また最初から読み始めるということを何度も繰り返しています。以下、日本語版と英語Kindle版へのアフィリンクです。

本書で使用しているCommon Lisp処理系はCLISPなのですが、ネットで見かけるLisperたちは「開発段階ではコンパイルの速いClozure Lisp、デプロイはSBCL」と言っていることが多いので、僕もSBCLを使って読み進めています。

第7章でdot->pngという関数が登場するのですが、その中(p.115の7行目)に

(ext:shell (concatenate 'string "dot -Tpng -O " fname))

という部分があります。ここで使われているext:shellCLISP独自の命令なので、SBCLで動かすには書き換えないといけません。

さいわい少し調べただけで、SBCLでシェルからプログラムを実行するにはsb-ext:run-programを使えばよいと分かりました(SBCLマニュアルより7.7.3 Running external programs)。sb-ext:run-programは実行するプログラム名とそのプログラムへの引数リストの2つを指定して呼び出します。プログラム名はフルパスで書く必要があるようです(シェルからサーチパスを取ってくるなどすればよいのかもしれませんが……)。

最初は

(sb-ext:run-program "/usr/local/bin/dot" '("-Tpng" "-O" fname))

でいけると勘違いしていたのですが、これだとfnameに入っているファイル名が展開されないので、

(sb-ext:run-program "/usr/local/bin/dot" `("-Tpng" "-O" ,fname)))

とquasi-quoting(準クォート)してやることで解決しました。

結果として、SBCLで動くdot->pngは以下のようになりました。

(defun dot->png (fname thunk)
  (with-open-file (*standard-output*
                   fname
                   :direction :output
                   :if-exists :supersede)
    (funcall thunk))
  (sb-ext:run-program "/usr/local/bin/dot" `("-Tpng" "-O" ,fname)))

-Tpng-Tpdfとかにすると、さらにきれいなグラフが得られます。


……と、作業し終えたところで下のようなページを見つけました。同じくsb-ext:run-programを使っていますがdotを直接起動するのではなくshを通して起動するようになっていて、僕のコードよりも環境非依存に近いかと思います。

lambdacadabra.blogspot.com

続 Wikipediaのフォントを変えてみた

数年前に、Wikipediaを読みやすくするためにCSSをいじって調整しました。

marui.hatenablog.com

今日は、英語版と日本語版とでハイフネーションの挙動を変えてみました。具体的には以下のようになっています。:lang(en)を使って英語版では両端揃えでハイフネーション有り、日本語版(というより英語以外)ではデフォルトのまま左揃えでハイフネーション無しになるようにしています。

p:lang(en), dd:lang(en), li:lang(en){
    -webkit-hyphens: auto; -ms-hyphens: auto; hyphens: auto;
    text-align: justify;
}