Surface Goが届いた
おはようございます。8月も残りわずかですが、長男が朝起きるのがすっかり遅くなり、新学期からの生活が不安な@kjunichiです。
本体もキーボードも発売日に無事届いた
Sモードの解除に苦戦
ストアアプリでのMSのヘルプページのキーワードだとダメで、「Windows 10」で検索して、Proにアップグレードするやつを選ぶこと、 Sモードの解除のボタンが出てきた。ただこの辺り、本体の更新やらインストールが裏で動きまっくていたので、 それらが落ち着いてからなら、公式のキーワードの「Sモードをオフ」で出てきたのかも。 しかも自分のところだとSモードをオフにできたのかも、完了画面てきなダイアログが出るはずのところが エラー画面だったw。
まぁ、ほんとにSモード解除の完了画面がエラー表示だったのかもよく分からないが、その後、Chocolateyのインストールもできたので、多分大丈夫と判断した。
開発機としてセットアップ
chocolateyは公式のガイドですんなり入れることでできた。 npmでのVC++が、管理者権限のPowerShellで行う必要があった。 あとは、
の記事が自分でも役に立ちw、サクサク必要なものを入れた。
RustでVC++が認識されない
Rustの公式からインストーラをDLして起動すると、以下のようにC++の処理系が認識してもらえなかった。
認識されなかったので、npm経由でインストーラーが入ったので、そこから、コミュニティ版のVSを 入れたが、(2)の表記が末尾についてインストーラーに表示されたので嫌な予感がして、 スタートメニューを見に行くと、VSが2重にインストールされていた。 途中でキャンセル(一時停止を押したら、しばらく、インストーラーを閉じられなかったが、しばらくしたら、無効化されていたボタンが復活)して、アンインストールのメニューを選択するところまでたどり着き、無事2つ目のVSをアンインストールできた、そして、多分C++のATLを入れたらのが良かったのか、 rustのインストーラーにVC++を認識してもらえ、rustも入った。
以下のような構成でrustのインストーラーにVC++が認識された
顔認証(Windows Hello)
コンタクトで登録したから眼鏡かけてるとダメだった。
キーボードは光るけど、消灯した寝室では認識されないっぽいw
EdgeでWebRTCもちゃんと動いた
以下の記事の自作のWebカメラのテスト目的のGithubページでちゃんと前後のカメラの 映像が表示できた。
npmでネイティブモジュールのビルドにPython2が必要だった
のREADMEのざっと読み直してもPythonも入れてくれるように書いてある気がするが、
npm node-ffi/node-ffi
でいつもの確認をしたら、pythonが見つからないと怒られてた。
公式から2.7系をインストールして、無事
と正常にnode-ffiが動かせた!
インプレッション
タブレットとして使ってみた感想
タブレットとして画面触ってスクロールした場合の挙動の話
— kjunichi (@kjunichi) 2018年8月28日
Surface Goの為に購入した機器たち
参考資料
記事を書いてからの追加だけど、開発者視点でSurface Goの事が書かれている。
関連記事
- Surface Goが来たら開発機として使えるようにする作業手順
- Surface モバイル マウスを買ってしまった
- Fire7(第7世代)が届いた
- Surface Goのカメラ映像をRustでコマンドプロンプトに表示した
- Surface goをusbから充電できるアイテムをゲットして試した
- 2019年版8コア版のMacBook Proが届いた
- 金欠で自作PC組めずに在宅勤務をSurface Goでやり過ごそうとしている話
14年前の記事
13年前の記事
5年前の記事
4年前の記事
Surface Goが来たら開発機として使えるようにする作業手順
キーボード含めると10万オーバーなので冷静にサブ開発機を考えると
15インチとかでもう少しお金だせば GPU付のPCも射程距離に
でもね、タブレットとしてサクサク使えるPCがほしかったんだ。
単なるタブレットなら、iPadやKindle fireでもいいんだけど、 手軽に手元のCPUを使ってコードをコンパイルして動かせる端末が 俺は欲しかった。
激安2-wayタブレットノートではサクサク感が皆無だが、 Windows 10のタブレットモードは結構好き。
Surface Goはこの辺りの不満点を価格以外はすべて解消しているので、 購入に至ったw。
What is 開発機
個人の趣味の延長での開発作業を主に意味してます。 また、当たり前ですが、個人の趣味とはいえ、メインマシンとしては考えてません。
Surface Goで開発?
激安2-wayタブレットで64G程度ストレージがあれば、cygwinでHTTP2に対応したサーバーのh2oをビルドしたり、 mrubyビルドしたりいろいろやれる実績をもっている。
メモリ8GBでストレージがSSDの128Gなら、そもそもおれの日中の職場のPCよりスペック高い(やんわり転職先を探しているという意訳可)
Windowsを普通のWindowsにする
まず、WindowsのSモードを解除する。
chocolateyを入れる
macOSならHomebrewがあるが、同様のモノとして、Windowsでは自分はChocolateyを愛用している。 開発機ならvcpkgという選択もありだが、ちょっと使ってみたらSSDの容量をバカ食いするので、 ひとまずはパス。
cmder
MSX-DOSの経験はあるが、MS-DOSにステップアップできなかった経験からMS-DOSには 妙なコンプレックスがあり、UNIX系のlsコマンドが つかえないと死んでしまうので、cmderはそんな俺の魂を救ってくれる。
choco install cmdermini
nvs
nodeのバージョン管理。Windows以外ではバイナリでインストール出来たり、マイグレーション機能のあるnodebrewを 愛用しているが、windowdではV8エンジンンのほかにMS製のJSエンジンのChacraにも対応したNode.jsを扱えるnvsを 利用している。
choco install nvs
node.jsを入れる
nvsでまずは安定板のNode.jsを入れる。
nvs add lts
vsコードをnpmで入れる
C/C++の処理系として無難なVisual Studio 2017をnpm経由でいれる予定。
npm install --global --production windows-build-tools --vs2017
mrubyの開発環境
mrubyのmrbgemをビルドできる環境を整える。
choco install winflexbison choco install ruby
Go
Surface Goで開発するなら外せない言語のGoを入れる。
公式から
cgoを使えるように
msys2をchocolateyで入れ、cgoも利用できるようにしておく
Chrome
リモートデスクトップを使いたいという理由が一番で、 SSDの容量考慮するとFirefoxは余裕なし。。
canary版を入れる予定。
WSL
VirtualBox+Dockerも入れたいが、SSDの容量が気になるのと、 WSLを触りたいというのがあるので、試しに入れてみる。
参考資料
関連記事
- #新しいiPad 買った!
- Surface Goが届いた
- Surface モバイル マウスを買ってしまった
- Surface Goのカメラ映像をRustでコマンドプロンプトに表示した
- surface goをusbから充電できるアイテムをゲットして試した
- 金欠で自作PC組めずに在宅勤務をSurface Goでやり過ごそうとしている話
Windowsつながり
- Windows 10でMSVCでnghttp2のサンプルを動かす
- Windows 10でFirefoxをソースからビルドして動かしてみた
- Windowsで64ビットなPythonでPython-Fuが動くgimpをビルドした
- WindowsでPostgreSQLをソースからビルドした
- Windows(MSVC)でplv8をビルドするまで
1年前の記事
1年後の記事
ElectronでmacOSのDockやWindowsのタスクバーに独自のアイコンを表示するには
こんばんは。お盆の休みは奥さんが仕事だったので、近場の高尾山に子供たちと一緒に行ってきた@kjunichiです。
背景
Electronベースの3Dデスクトップマスコットアプリのgopheronを細々と開発している
このアプリにRaspberry PiのCPU温度を表示させる機能を追加したことなどを インスタで投稿したら、結構海外で良い反応を貰うことがある。
そんなアプリのアイコンがElectronのデフォルトなのはそろそろ問題じゃないかと 重い腰を上げて取り組んだ
なにはなくともアイコン画像の用意と読み込み
macOS、Windows共にNativeImage型の画像データを用意する。
その為には、nativeImage#createFromPathメソッドを利用することで、画像ファイルからNativeImage型を取得できる。
const { app, BrowserWindow, ipcMain, nativeImage, shell, Menu } = require('electron') const iconimage = nativeImage.createFromPath(`${__dirname}/gopheron_icon.png`)
macOS編
macOSではDock関連のAPIがapp.dockに用意されており、その中のapp.dock#setIconメソッドを利用することで、Dockのアイコンを指定することができた。
const { app, nativeImage } = require('electron') app.dock.setIcon(iconimage)
Windows編
WindowsとLinuxではBrowserWindow#setIconでできた。
mainWindow = new BrowserWindow({/*...*/}) mainWindow.setIcon(iconimage)
学べたこと
Windows、macOSそれぞれ、今回使ったプラットフォームに依存するElectronのAPIは macOSだとWindows向けのAPIは呼び出すこと
Uncaught Exception: TypeError: mainWindow.setIcon is not a function
Uncaught Exception: TypeError: Cannot read property 'setIcon' of undefined
と怒られるので、プラットフォーム毎の条件分岐が必要なことが分かった。
また、パッケージツールで自前のアイコンを作成して.exeや.appを作成しなくても 今回の方法である程度は独自のアプリ風のテイストを出せることが分かった。
関連記事
- ElectronでWebGL(three.js)使ってデスクトップマスコット作った際に分かったこと
- Goオールスターズ2に行くので、gopheronをGo言語で動かせるようにした #websocket
- Raspberry Piの温度をgRPCを使ってElectronで作ったデスクトップマスコットに表示させた
- macOSのCPU温度をgRPCを使ってElectronで作ったデスクトップマスコットに表示させた