2019年 04月 01日

ASRock DeskMini A300 買った (Ryzen 5 2400G / 16GB / リテールクーラー)

Windows 機がもう一台ほしいなということで DeskMini A300 で組んでみた。

CPU

AMD CPU Ryzen 5 2400G with Wraith Stealth cooler YD2400C5FBBOX - AMD

AMD

5.0 / 5.0

Ryzen 5 2400G に。2200G でもそんな変わらなそうだけど、微妙にスペックが足りないってのは嫌なのでベストを選ぶ。割とゲーム類も動く内蔵GPUになっており、ちいさいサブPCとしてはかなり良いと思っている。

CPU クーラー

リテールクーラーが直接つかないので、DeskMini A300 の日本版にはクーラーがついてくるのだけれど、これが大変うるさいらしいので最初から使わないことにした。ちなみにこの DeskMini A300 付属クーラーは 70mm のファン。

あまり金をかけたくもないので、Ryzen 5 2400G に付属してくる Wraith Stealth cooler (リテールクーラー) を使った。前述の通りリテールクーラーは高さの問題 (幅などは問題ない) でケースに入らないが、問題はファンの部分だけ。

さらにはファンも無駄についているカバーをはずせばケースに納めることができる。このカバーは一旦ヒートシンクからファンをはずし、裏にあるねじをはずせばとり除くことができる。

カバーを止めていた突起の方向に注意してヒートシンクに取り付けなおす。筐体の入口に出っ張りがあり一見入らないかと思うが、ちょっと変形させてここだけ超えさせれば普通に入る。

リテールクーラーのファンは 95mm (ただしビス穴の間隔は80mmと同じ71.5mm)

基板上にあるクーラー取り付け器具をはずせばあとはそのままネジ止めでとりつけることができる。メモリにも干渉しない。

リテールクーラーのファンがそのまま使えることを知らなかったので別のファンも買ってしまった。上のは 80mm ファンをつけた状態。

どっちも試してみたけどどっちもどっちという感じ。今は口径が大きいリテールクーラーのファンをつけて回転数を少し落としている。

SSD

M.2 NVMe SSD (PCI-Express) 256GB を取り付けた。Intel SSDPEKKW256G8XT

マザーボードをはずして裏につけようと思ったが、裏面はヒートシンクをつける余地がなかったため、普通に表につけなおした。裏面につける場合は筐体に熱を逃がせるようにクールスタッフのようなものをつけるのがよさそう。

そんなにディスクを激しく使う用途ではないのでそれほど熱が問題になることはなさそう。HWiNFO で見ると室温+10℃程度だった。

メモリ

8GB * 2 (Crucial 8GB DDR4-2666 SODIMM CT8G4SFS8266) 特に理由はないけどメモリ速度が早めで商品数が多い 2666 にした。

GPU もメインメモリを共用するので最低でも 16GB は必要だと思う。UEFI で 4GB を GPU に割り当ててる (といっても普通は1GBも使わない) ので 12GB が OS 利用メモリ。

組立

AMD APU がはじめてなのでちょっと緊張した。ソケットが Intel と違ってロックしてもちゃんと抑えている感じが薄いので心配。CPUクーラーはずすときうまくできるかな

温度

室温20℃ぐらい。アイドル状態だと40℃ほど。

全コアに CPU 負荷をかけると即座に70℃ぐらいまで上昇する。ファンが最高速になったあとはじわじわ75℃ぐらいまで上昇していく。

GPU 50%、CPU30% ぐらいの状態だと50〜55℃ぐらいで安定する。

感じ

Core i7 6700 + メモリ 32GB + Geforce GTX970 + SATA SSD がメイン Windows PC なんだけど、それに比べても普通に快適に動く。

ただ筐体が小さくリテールクーラーを使っているせいもあってCPU温度が高めでファン音が本当に若干だけど気になる。別途クーラー買うかもしれない。(メインPCはかなりCPU負荷をかけても40℃もいかない)

2019年 03月 25日

激安パタパタクロックの改造

パタパタ時計 (flip clock)

ebay で 1300円ぐらいで買った。デザイン上不可解な点があるが一応そこそこ動いてくれる。パーツが多い製品になりがちなのでこれ以上安いものはないみたい。

ちなみにパタパタ時計は以下の点で優れている

  • 直読可能 (vs アナログ時計)
    • 12時間アナログ時計のように読みかたのリテラシがいらない
  • 数字の形が自然 (vs 7セグメントデジタル時計)
  • 高コントラスト (vs 液晶)

このような特徴から、子どもでも読みやすい。一方で秒単位の正確な表示はできない。

この製品の場合1時間に1度バネの復元によって「時」を送っているため割と大きな音がする。分送りではあまり音はしない。秒針のカチコチ音はする。

構造

普通のクオーツ時計だが、使っているのは分針の動きだけになっている。時針はムーブメントに存在しておらず、流用と思われるムーブメントも内部のギアが一部省かれていた。秒針は生きてるが使われていない。

ムーブメントから伝わる分針の動きで「分」の文字盤を動かしている。「分」の時刻あわせレバーの爪は独立して文字盤を送る。

「時」の文字盤は「分」の0分と連動するようにカムが仕掛けられており、時刻あわせレバーと共用のラチェット・バネと連動して「時」の文字盤は送られる。

不具合

ちゃんと「時」が送られないことがある。0分の少し前に「時」の文字盤を送る爪が次の歯に落ちなければらないのだが、これがうまくいかないことがあるようだ。(カムによって爪が次の歯に落ちる→カムのリセット時に爪にかかったバネで文字盤が送られる)

中をあけて爪を少しけずって調整したらうまく動くようになった。

筐体の再設計

写真をみたらわかるけど文字盤がなぜか 20mm ぐらい奥にあるため、横からだと時計の数字を読むことができない。この空間、たぶんフリップするとき全面の保護板にぶつからないようにという意図だと思う。

とはいえ気に入らないポイントなので、なんとかすることにした。具体的には 3D プリンタで筐体の一部を作りなおして、表面を化粧板で覆うような形を目論んだ。

時計部分

プリントパーツをあまり大きくしたくないため、前後の固定用パネルだけプリントした。どちらも1回プリントしたパーツを元に修正し、2回目でおおよそいい感じにできた。

電池ケースは別途プリントしてはりつけた。Flexing battery holders with integrated springというもの。

電池2つ使っているけど、並列に繋いであるだけ。元々の時計がそういう設計だったので踏襲してる。

外箱


桐材 (別の用途で買ったが使わなかったもの) を使って外箱をつくった。CNCで切り出し、穴開けをした。実際はノミで穴をあけたバージョンもあったが綺麗にいかなかったためCNCでやりなおした。機械のほうが早いし精度が良いし楽というのを身をもって体感することに。


仕上げは今までやったことないことを、と思いワトコオイル (ダークウォールナット) を使ってみた。しかし扱いにくいですね……

2019年 03月 04日

認定電気工事従事者認定講習をうけてきた


一種は絶対に必要ないが、高圧受電の低圧部は万が一触ることがあるかもしれないので比較的コスパの良い認定電気工事従事者認定講習を受けてきた。(一種は定期講習を受ける義務があるので維持にコストがかかる。二種+認定電気工事従事者なら維持費はかからない)

長いしまぁまぁ退屈 (二種とる上で必要な知識も改めて説明されたりする)。だけど建築との兼ね合いとか実務上はここまでが電気工事士の仕事です、みたいなのは試験には出ない知識なので面白かった (実務やればわかることだが、実務やることはないと思うので、単に興味として)。

二種は学生も多かったのと、この講習は特に実務経験もいらないので (実務経験が3年あればそもそも申請するだけで認定される)、若い人が受けるものだと予想してたが、どうもそうではないようで、受講者の年齢層が高く感じた。40〜50代ぐらいに見える人が多かった。どういう経緯なのだろう……

後ろの席の人がイビキかいて寝ててめちゃくちゃうるさくてさすがに勘弁してほしかった。

法律解釈みたいなのはややこしいので、とにかく内線規定を読みましょうっていう温度感みたい。

内線規程 (東京電力) 第13版: JEAC 8001-2016 - 一般社団法人 日本電気協会需要設備専門部会

一般社団法人 日本電気協会需要設備専門部会

5.0 / 5.0

高圧受電のマンションで個別住居の電気工事をする場合の資格

大規模なマンション (具体的には1敷地で 50kW 以上消費する) の場合高圧受電 (6600Vなど) することがある。この場合はマンション敷地内に変電設備が置いてある。

借室電気室

高圧受電ということは自家用電気工作物になるのでその建物は第二種電気工事士では工事できないことになる。が、借室電気室で変電されて個別住居に配電される場合は、個別住居は低圧で受電する一般用電気工作物扱いになり、第二種電気工事士でも工事可能になる。(共有部は自家用なのでダメ)。個別住居は電力会社と直接に低圧の契約をする (管理組合を通さない) ので電気料金は電力会社へ払う。

マンション一括受電

一方 マンション一括受電の場合はマンション全体が個別住居も含めて自家用電気工作物になるので、第二種電気工事士では工事できない (第一種電気工事士または認定電気工事従事者が必要)。電気料金は管理組合へ払い、管理組合が電力会社へ払う。

備考

500kW 以上になると電気工事士法の範囲ではなくなるので資格不要になる。奇妙に思えるが、要は選任の電気主任技術者が監督し工事の全責任を負うことになるので個別資格はもはや問わないということ (現実的には選任の電気主任技術者が有資格者を作業者とするので、無資格者が作業することはまずないらしい)

2019年 02月 14日

パスワード保存のベストプラクティスと bcrypt のメモ書き

考えてみるとほとんどパスワードを保存するコードを書いたことがない。現状のベストプラクティスを知らなかったのでメモ書き。

現状では bcrypt 使うのがいいみたい。b は Blowfish の b。

Modular Crypt Format というフォーマットとコンパチの出力をする。crypt (3) はもともと DES の短いフォーマットだが、弱すぎたため md5 拡張なりSHA512 拡張などが存在している。(htpasswd でも使われているので見たことある人は多いだろう)

これの Blowflish を使ったものが bcrypt で、prefix に $2$, $2a$, $2x$, $2y$ $2b$ がついている。prefix の違いはバージョンの違いであり、現在は 2b を使うのが良い。ストレッチング回数も出力に含まれるので、あるとき急にストレッチング回数を増やしても特に問題はない。

このフォーマットは出力に salt も含むので、生成された MCF はそのまま保存すれば良い。

Blowfish ってなんだ

Blowfish 自体は一方向ハッシュ化アルゴリズムではなく共通鍵暗号化アルゴリズム。処理速度が早く鍵長がある程度可変でライセンスフリーというのが特徴。

共通鍵暗号なのになんでハッシュとして使えるの?

bcrypt は "OrpheanBeholderScryDoubt" という決まった文字列を 64回 Blowfish で暗号化する。 このとき暗号に使う状態 (暗号化の鍵) を password や salt から初期化する。この初期化にも Blowfish の暗号化が使われる。

暗号化済みテキストに鍵の情報が入ることはない (もしあったとしたら暗号化アルゴリズムではない) ので一方向になる。

また "OrpheanBeholderScryDoubt" に復号化できるキーを探す (クリブ / plain text attack) も Blowfish では難しいため、実質的にブルートフォースアタックしかできない。

備考: salt を別途保存する必要がないのは bcrypt に限らない

そもそも Modular Crypt Format のものは des crypt ですら salt も出力に含んでいる。ググると「bcrypt なら salt は別に保存する必要がない」と書いてる人がいたりする。間違いではないが正しくはない。

Modular Crypt Format のいくつかのパターンを引用する

des_crypt    : {salt}{checksum}
md5_crypt    : $1${salt}${checksum}
bcrypt       : $2a${rounds}${salt}{checksum}
sha256_crypt : $5$rounds={rounds}${salt}${checksum}

( https://passlib.readthedocs.io/en/stable/modular_crypt_format.html から一部をコピペ)

備考: パスワード保存は必要か?

そもそも現代ではプラットフォーマーでなければパスワードを保存しなければならないケースがかなり少ない。OAuth などで外部サービスに認証を委託したほうがはるかに楽だからだ。パスワードを保存するということはそれ自体が難しいうえに、パスワードリセットや2段階認証なども含めてトータルで抜け道がないか考える必要がある。

ref.

2019年 02月 05日

ダイソー300円スピーカーのちょい改造

なかなか見た目も可愛いのでエンクロージャーから作りなおすというほどでもない。吸音材(ホワイトキューオン)をいれるのと、回路定数だけ見なおすことにした。

アンプICは 8002A CK2T24 1N と刻印されている。http://www.shenzhensum.com/products/datasheet/8002%282.0W%29.pdf これとかかな

基板上の入力カップリングコンデンサは LCR メータで測ると 0.1μF。入力抵抗は 682 =6.8kΩ。 fc = 1/(2πRi*Ci) で、そんなわけで、入力は234Hzのハイパスフィルタを構成してしまっている。

フィードバック抵抗は 223 = 22kΩ。Av =2*(Rf/Ri) で、約6.5倍の電圧ゲイン。

入力定数のおかげで低音がかなりカットされている。これはこれで別に悪くはないけど、試しにもうちょっと低音まで出せるようにしてみた。やったことは 4.7μF を並列に繋げるだけ。チップコンなら単に積層してあげるだけなので難しくはない。そもそもこういうカップリングにセラミックコンデンサを使うのはよくない (DCバイアスでかなり容量が変化する) みたいだけど、あんまこだわらない。

2019年 01月 25日

Android SDK の各プラットフォームのビルドツールの一部を使いたいとき

sdkmanager をダウンロードする

Android Studio のダウンロードページから「コマンドラインツールのみ」を選んでダウンロードしてくる。Android Studio が必要なら別に全部入りでもいい。

このコマンドラインツールには共通で使う最低限のものしか入ってない。

プラットフォームごとにツールをダウンロードする

REPO_OS_OVERRIDE を指定しつつダウンロードすると、動かしているプラットフォーム以外のバイナリも取得することができる。例えば Mac OS で Linux のバイナリが欲しいときなどに使える。

REPO_OS_OVERRIDE=linux ./sdkmanager --sdk_root=/tmp/linux --verbose  "build-tools;28.0.3"

こうすると /tmp/linux/build-tools/28.0.3 とかにツールがダウンロードされる。/tmp/linux/build-tools/28.0.3/lib64 以下の共有ライブラリも実行に必要なので注意

2019年 01月 07日

はてブ用ブックマークレット

現在の非表示ユーザの総数:

javascript:(async()=>{alert((await(await fetch("http://b.hatena.ne.jp/my/ignore.json")).json()).ignore_users.length) })()

http://b.hatena.ne.jp/api/my/ignore_users のほうが簡単(あたらしい)っぽい。上のAPIと数が違う。プライベートユーザを含まないとか?

↑ は405 で動かなくなっていたよくわからない。下のは動く

javascript:(async()=>{alert((await(await fetch("https://b.hatena.ne.jp/api/my/ignore_users?limit=10000")).json()).users.length)})()

選択範囲に含まれるブクマユーザを一括ブロック

(スターなどを選択する。いっぱいついてる短縮されたスターは手動で展開してから選択する)

javascript:(async(t,u,f,i)=>{if(!confirm("sure?\n"+t.join(", ")))return;u=await(await fetch("https://b.hatena.ne.jp/api/my/profile",{credentials:"same-origin"})).json();for(i of t){f=new FormData();f.append("username",i);f.append("rks",u.rks);await fetch(`https://b.hatena.ne.jp/${u.name}/api.ignore.json`,{method:"POST",body:f,credentials:"same-origin"})}})(Array.from(window.getSelection().getRangeAt(0).cloneContents().querySelectorAll("a")).map(i=>(i.href.match('^https?://b.hatena.ne.jp/([^/]+)/$'),RegExp.$1)).filter(x=>x).filter((v,i,s)=>s.indexOf(v)===i));

スニペット

選択範囲内のブクマユーザー名取得

Array.from(window.getSelection().getRangeAt(0).cloneContents().querySelectorAll("a")).map(i=>(i.href.match('^https?://b.hatena.ne.jp/([^/]+)/$'), RegExp.$1)).filter(x=>x).filter((v,i,s)=>s.indexOf(v)===i)

ユーザー情報

const profile = await (await fetch("http://b.hatena.ne.jp/api/my/profile")).json();
2018年 12月 10日

3Dプリンタで任意長ハタガネの自作

ハタガネは300mmで1本あたり700円程度する。多数必要なのでなかなか単価が高いのが効いてくる。

それほど使用頻度が高くないため、もうすこしいい方法はないか?と考えて 3D プリンタで作ってみることにした。

できたもの



軸自体は市販のアルミ角材10x10mmを使っている。1000mm で400円ぐらいのを3分割して300mmぐらいにしてある。軸は角材のままで、追加の加工は不要。

残りのパーツを3Dプリントして、M5 のボルトで締めつけて固定している。

ウィングボルトが割と高い (60円〜150円)。300mm だと一本400円〜500円ぐらいか。300mm では手間の割にはあんまりコストメリットはないかも。500mm以上だとコスパが改善する。

ウィングボルトは六角ボルト+3Dプリントのボルトノブでも置き換えられるので、そうしたほうが安くはなる。

使用感

木工用途では目的を果たせそうだということがわかった。

この方法の最大のメリットは表題の通り長さがかなり自由ということで、パーツを外して組替えれば500mmや1000mmにもできる。また、角材自体には手を加えず、構造も単純なあので必要なくなったらバラして再利用できる。

なんならパーツは 3D プリントではなく削り出せばもっと堅牢なものがつくれそうだ。けど、それなら市販のハタガネ買ったほうが安いと思う。

SUN UP 真鍮ハタ金 2本組 300mm - 近与(KONYO)

近与(KONYO)

3.0 / 5.0

2018年 12月 04日

1x4 材向けのアジャスタ

4つ脚の棚なんかを作ろうと思うとどうしても4つの脚を同一平面に配置するのは難しいので、アジャスタが欲しくなる。

しかし 1x4 の厚さ 19mm におさまるようなアジャスタはあまり売ってない。そこで、溶接ナットをアジャスタベースに使うことを検討してみた。

アジャスタベース

「TRUSCO TBW06-0008 T型溶接ナット 1A M8 P付ダボ付 スチール」というのを買ってみた。

ただこれは溶接用なので固定用の穴はあいていない。その変わり位置決め用の凹みがついている。この凹み部分にそのままドリルをあてて穴をあけ、木ねじで固定するという試み。


アジャスタはスガツネ工業 LAMP TG-20 [薄型アジャスター TG型 M8×20mm ダークグレー] というもの。20mm なのでちょっとはみ出るが許容範囲だろう。


溶接用ナットはかなり安価なので、非常に安くアジャスタを構成できる。素材がみるからに錆びやすそうなのが不安要素か。クリアラッカー吹くか塗装するかしたほうが良さそう。