Amazonのランキングで1位のPCスピーカーロジクール(logicool)Z120BWを買った
これ
外箱
開封
スピーカー表
価格が1200円ちょっとと考えると結構しっかりしたつくりになっている。 ボリュームレバーを反時計回りにするとボリューム下げる、端までいくと電源OFF、時計回りに回すと電源ON(LEDランプが点灯する)ボリューム上げる。
スピーカー裏
裏側にはあまったコードを収納するパーツが備え付けられている。
感想
- 高音、中音域はよく聞こえる、低音はあまり出ている感じがしない
- 1290円のスピーカーとして考えるとかなり良いと思う
Windows10でHaskell開発環境を構築する(Stack, HIE, VsCode)
概要
Windows10でHaskell開発環境を構築する手順を示す。
環境
以下手順を実施した際の環境
- Windows 10 Pro (バージョン 2004)
- Stack
- Version 2.3.1, Git revision de2a7b694f07de7e6cf17f8c92338c16286b2878 (8103 commits) x86_64 hpack-0.33.0
stack --version
- GHC
- 8.6.5
- HIE
- commit hash : a9005b2ba2050bdfdd4438f1d471a3f7985492cd
注意点
- 以下の手順はとくに問題が発生しなくても1~2時間程度かかる
- 夜間などのネットワークが混み合う時間帯だとGHCのダウンロードにとても時間がかかる(2~3時間)なので朝方のネットワークが比較的空いている時間帯、もしくは
http_proxy
経由を推奨
手順
Stackのインストール
stack-2.3.1-windows-x86_64-installer.exe
をダウンロードして実行する。
Stack Setup
とくに何も付けず stack setup
するとGHC latest の 8.8.3
をダウンロードしようとするが 8.8.3
は以下のビルドエラーが発生するので他バージョンを選択する。
ここでは後手順のHIEビルドに対応している 8.6.5
を指定してsetupする。
管理者権限でコマンドプロンプトを開いて以下を実行する。(ネットワークが空いている時間帯推奨)
stack --resolver ghc-8.6.5 setup
※ ウイルス対策ソフトによって Permission Denied
エラーになる場合があるらしいが自環境では特に何も無かった。
※GHCのダウンロードは空いている時間帯だと30分程度、混んでいる時間帯だと2~3時間程度かかる。
インストールされた Stackのversionを確認
stack --version
GHCのversionを指定
stack config set resolver ghc-8.6.5
インストールしたGHCのversionを確認
stack ghc -- --version
HIEのビルド
前準備
以下を確認する。地味にPATHが通ってないことがあるので注意
stack
にPATHが通っていることgit
にPATHが通っていること- stackのlocal binにPATHが通っていること
stack path --local-bin
で local binのディレクトリが分かる。
clone
HIEのリポジトリをクローンする。
ビルド時の生成ディレクトリが長くなりWindowsのパス最大長を超える場合があるのでCドライブ直下にcloneするのが無難
C:\> git clone https://github.com/haskell/haskell-ide-engine --recursive hie
hieディレクトリでコマンドプロンプトを開いて以下を実行する
chcp 65001 stack ./install.hs hie-8.6.5 stack ./install.hs data
注意:chcpしてcmdの文字コードを変更しないとビルドエラーになる
ビルドは20~30分程度かかります。
ビルドが完了すると stack path --local-bin
ディレクトリ配下に hie.exe
等が生成される。
Haskell Language Server (VSCodeの拡張)をインストール
VSCodeを開いて拡張機能から Haskell Language Server
を検索してインストールする。
設定から Hie Executable Path
に先程の hie.exe
へのパスを記入する。
試す
エディタの補完やGotoDef等が動くか試してみる
プロジェクトを作成する
任意のディレクトリにプロジェクトを作成する。
今回は hello-world
プロジェクトとした。
stack new hello-world
GHCのversionを 8.6.5
に変更しておく。
cd hello-world stack config set resolver ghc-8.6.5
hello-world
ディレクトリでVSCodeを開き、型ヒントや定義元ジャンプ、補完機能が利用できるか確認する。
ビルド
stack build
実行
stack run
参考
F#でT4の実行時テキスト生成を使用する
概要
T4 (Text Template Transfomration Toolkit) を利用して実行時テキスト生成をF#にて行う。 T4がサポートする言語はC#, VisualBasicのみだが、C#プロジェクトでテンプレートを作成し、別のF#プロジェクトからそれを参照するという形でF#でもT4を利用することが可能である。 以下にその手順を示す。
環境
- Windows 10 Pro バージョン 1909
- Visual Studio 2019 Community 16.5.4
- .Net Core 3.1.201
目次
手順
前準備
- F# .Net Core コンソールアプリのプロジェクトを作成しておく
- Visual StudioのT4拡張をインストールしておく
- 標準だとVisual Studioでttファイルを開いたときにコードハイライトが効かなくて見づらい
Visual Studioをダークテーマにしている場合、標準のバックグラウンドカラーではとても見づらくなるので変更する。
- メニューからツール→オプション
- tangible T4 Editor → Editor
- T4 Background Colorを選択し、カラーピッカーからお好みの色を選択する
テンプレート用C#プロジェクトを追加
- クラスライブラリ (.Net Core) (C#)で同じソリューション内にプロジェクトを追加する。
- F#のプロジェクトから上記のプロジェクトへの参照を追加しておく
テンプレートを追加
ランタイムテキストテンプレート
を選択して新規追加する。
テンプレートプロジェクトの .csproj
を直接開いて先程追加した .ttファイルの Generator
の項目を TextTemplatingFileGenerator
から TextTemplatingFilePreprocessor
に変更する。
<ItemGroup> <None Update="TestTemplate.tt"> <Generator>TextTemplatingFileGenerator</Generator> <LastGenOutput>TestTemplate.cs</LastGenOutput> </None> </ItemGroup> ↓↓↓ 変更後 ↓↓↓ <ItemGroup> <None Update="TestTemplate.tt"> <Generator>TextTemplatingFilePreprocessor</Generator> <LastGenOutput>TestTemplate.cs</LastGenOutput> </None> </ItemGroup>
テンプレートに渡すモデルを定義
public class TemplateModel { public string Name { get; } public int Age { get; } public TemplateModel(string name, int age) { Name = name; Age = age; } }
モデルを渡せるようにpartial classを定義
追加したテンプレートファイルと同名のクラスをpartial classとして定義し、先程追加したモデルをコンストラクタから受け取れるようにする。
public partial class TestTemplate { public TemplateModel Model { get; } public TestTemplate(TemplateModel model) { Model = model; } }
テンプレートファイルを修正
ジェネレータ部分のコードにフルパスでライン表示が出てしまうので linePragmas="false"
を指定する。
<#@ template language="C#" linePragmas="false" #>
上で定義したモデルを利用したテンプレートを記述する。
<#@ template language="C#" linePragmas="false" #> <#= Model.Name #> のねんれいは <#= Model.Age #> 歳です。
テンプレートプロジェクトに System.CodeDomを追加
このままテンプレートプロジェクトをビルドするとコンパイルエラーが発生するため System.CodeDom
を参照に追加する。
F#側で利用するコードを書く
- モデルに値を設定する
- templateクラスのコンストラクタにモデルを渡す
.TransformText()
メソッドで適用後のテンプレート文字列を取得
open System open Templates [<EntryPoint>] let main argv = let model = TemplateModel("シャミ子", 16) let template = TestTemplate(model) printfn "%s" <| template.TransformText() 0
実行結果
参考
自作キーボード Mint60を組み立てた
自作キーボードのMint60を組み立てた。キースイッチとかキーキャップとか個別に揃えるのが面倒だったのでBoothでスターターキットを購入した。
組み立て直後は何故か片側のキーボードが動かなかったりしたが今の所安定して稼働している。ちなみにこの記事はMint60で入力している。
組み立て準備
電子工作を一切やったことがなく、当然道具も何も持っていなかったので必要と思われるものを揃えた。
- 温度調整機能付きはんだこて
- はんだこて台
- はんだ
- ハンダ吸い取り線
- 先曲がりピンセット
- マイクロニッパー
- コネクタ補強用の接着剤
この中でたぶん使わないだろうなと思ってたけど意外と役に立ったのがピンセットだった。
また、マスキングテープは買わなかったのを後悔した。組立時にかなり必要になる。今回は一緒に組み立てをした人がマスキングテープを持っていたので借りることで事なきを得た。
組み立て
組み立ては一人では心もとなかったので同じく自作キーボードを組み立てようとしている人を誘って共同で組み立てをした。
iPadで組み立て解説ページを開いておいて横に配置して逐次見ながら組み立てた。
ダイオードの取り付け。まっすぐなダイオードを手で一つ一つ折り曲げてボードに刺していく。他の記事を見たら専用の折り曲げ機を利用したりアクリル板を重ねたところに置いて一気に折り曲げたりしていたのでこういうのを真似ればもっと作業スピードが早くなった可能性はある。
刺し終えたら裏側からはんだ付けをするので落ちないようにマスキングテープで固定する。
はんだ付けをする。一列ずつはんだ付けしていって付け終えたらニッパーで余った線をカットして次の列にはんだ付けみたいな流れでやるとやりやすいことがわかった。
はんだの煙が顔にモロに来てつらかったので横に扇風機を配置して煙を飛ばすように工夫した。
スタビライザの組み立て。最初それぞれの部品の向きがわからず組み立てに地味に時間がかかってしまった。
組み立てたスタビライザをボードに固定する。
アクリル板にキースイッチを固定していく。Mint60は自作キーボードの中ではキーの数が多いので地味に大変だった。
MCUのUSBコネクタ補強用の接着剤を用意する。2種類の溶剤を混ぜて接着剤として使用するらしい。
コネクタ内部の接点に入り込まないように丁寧にコネクタ周りに盛っていく。
MCUのはんだ付け、キースイッチのはんだ付け、LEDのはんだ付けをした。
MCUのはんだ付けは接点と接点の距離がめちゃくちゃ近いので隣通しがくっつかないようにはんだ付けにかなり神経を使った。
LEDは裏面が接着面になっていたが接着面がはんだづけした突起が並んでいてでこぼこしていてとても貼れないので雑だがテープでなんとか接着した…
だいぶ見た目がキーボードっぽくなってきた。
2つとも組み上がって後はキーキャップをはめるだけという段階でPCに接続して動作確認をしてみた。あとあと他の組み立て記事を見てみるともっと早い段階で動作確認をしていたので、もう少し早めにやればよかったと思っている。
また最初に動作確認したときは何故か片側のキーボードしかLEDが光らない&キーボードが反応しない現象が発生し、いろいろコネクタを抜き差ししていたら唐突に両方使えるようになった。未だになぜ使えるようになったのかよく分からない。
キーキャップを取り付けた。このとき何故か左シフトキーが押したら戻らなくなってしまい何度か分解しても原因は不明だった(スタビライザーはちゃんと動作している)0Insのキーではなくテンキーの+を代わりに刺したらうまく動くようになった。
ApplePay->GooglePayへ移行している
iPhone8 PlusからPixel3に乗り換えたので、決済もApplePay→GooglePayへ乗り換えた(途中)
iPhone8 Plusについては以下 hkou.hatenablog.com
Google Payに移行して変わったことなど
対応する電子マネーが増えた
個人的にはnanacoが利用できるようになった点が大きい。自宅と職場の近くにセブンイレブンがありよく利用するため。
iPhoneでもSuicaで利用できていたが, nanacoだとPointが貯められるのが良い。
エクスプレスカードが不要になった
ApplePayでは電子マネーを利用するときにWallet起動・認証不要するためには、その電子マネーを「エクスプレスカード」に指定する必要があった。
GooglePayでは不要である。というよりも、すべての電子マネーがエクスプレスカードになった感じ。
GooglePayではスリープ状態ですべての電子マネーが利用できる。
その他
Suicaが未だに移行できていない。
iPhone -> iPhoneへの機種変更は簡単にできるみたいなのだが、iPhone -> Androidへの機種変更はSuica自体、アカウントを削除して作成しなおす必要がある。
また、Suicaを削除するときに残金が残っている場合は払い戻し処理をする必要があるがその際に手数料220円がかかる。
手順が面倒だし、無駄にお金もかかるので、このあたりはもう少し改善してほしい。
3Dプリンタ FlashForge Adventure3を購入した
6月頃に予約注文したAdventurer3 が届いた。
初回予約組は7月中頃発送とのことなので、運良く初回予約組に入っていたらしい。
開封してみた。PLAのフィラメントと電源ケーブルが入っている。
本体を箱から取り出した。流石に最新モデルだけあってデザインがかっこいい
蓋を開けたところ。奥の方に見える緑色の留め具を外さなければいけないことが説明書には書いておらず、知らずに動作させてガタガタ言わせてしまった。
フィラメントをセットして、本体メモリに入っていたテスト用のボックスを印刷してみた。
中身がある領域はハニカム構造で印刷することで、フィラメントの節約をしているらしい。
動作音については、他の機種は知らないので比較はできないけどとても静かで、隣の部屋で稼働させてても睡眠できそうなぐらい静か。
出来上がったブツ
箱だけだとつまらないのでThingiverseで公開されているモデルを印刷してみた。
箱みたいな小さいものなら問題ないが、大きいブツを作る時は途中で剥がれてきて失敗してしまうということが分かったので台座に糊を付けた。
完成した。側面のつるつるしたところもちゃんとできていてすごい
ApplePencilを装着してみた。
次は他の素材で試してみたり、自分で作ったモデルを印刷したりしてみたい。
バイク試乗してきた(VERSYS-X 250, VStorm250)
VERSYS-X 250
- 足つきはCRF250Lよりは良い
- スリッパークラッチ搭載なのでクラッチレバーがすごく軽い
- 試乗したバイクはクラッチミートがだいぶ遠くてなれるまでちょっと手こずった
- 高回転型っぽいエンジン特性でツアラーとしてそれはどうなのとか思った(普段CRF250Lに乗っているせいか全然合わなかった)
- シートが硬すぎる。10分ぐらい走っただけで尻が痛くなった
VStorm250
- 足つき最高。両足ベタつきだった。
- かなり粘るエンジンで下道でも5速~6速で普通に走れてかなり運転しやすい
- シートがふかふかで長時間乗ってても疲れなさそう
- VERSYS-X 250とVStorm250のどちらか片方買うとしたら間違いなくVStorm250にすると思う