SpotifyAPI実装記

2/11(火)

自宅にこもってSpotifyNowPlayingをホームページに表示する機能を作っていた。

Spotifyのaccess_tokenをredisで保持することにしたのだが、そうすると本番環境にもredisを用意せねばならない。docker-composeで連携させることになるだろうが、デプロイフローをまるごと変えなければならないので大変だ。

クライアントとサーバーのアプリケーションをどういうリポジトリ構成で管理するかも難しい問題だ。クライアントはReact、サーバーはexpressなので両方ともTypeScriptであり、型の共有などのメリットは活用したいが、両者を近づけていくとビルド周りの設定が煩雑になりそうだ。

既にサーバー側のビルドがなぜかクライアント側の型エラーで落ちる現象が起きている。おそらくtsconfigを共有しているせいでクライアント側のコードまでincludeしてしまっているからだろう。

OAuth認証も難しい。僕のSpotifyアカウントでリソースへのアクセスを許可する必要があり、これはブラウザからしかできない。よってその工程までは手作業で行ってからaccess_codeをconfに記入し、アプリケーションを起動することになる。

適当にパソコンをポチポチしていた

2/1(土)

していたら土曜日が終わった。

OpenToonzの1.4.0が出たのでLinuxでビルドしてみた。ドキュメント通りで特に問題なし。

動画サイトの再生エリアのスクショをワンクリックで撮れるようにしたくて調べていたんだけど、ざっくりMDNを読んだ感じセキュリティ上の理由でクライアント側だけではどうにもならないっぽい。

その他、寝たり起きたり鍋作ったりDota2したりしてたら1日が終わってた。僕は休日は無計画に浪費する方が好きだ。あまり褒められたことではないが…。

A/2=

1/28(火)

仕事が全然進まずつらい。帰りに同僚とラーメン。銀座のラーメンはお上品でどうも物足りない。ラーメンは野蛮なほうが好きだ。

とても寒い。自宅から出なくていいなら天気はハチャメチャになってくれたほうが楽しいのだが、会社員の身ではそうも言っていられない。寒いのも靴が濡れるのも嫌だ。

30日OS本はのんびり5日目の文字の描画をやっている。ピクセルデータをVRAMに投入していくだけなので簡単と思いきや、妙に小さく潰れた「A」が表示された。QEMUに解像度の設定などを渡す必要があるのかと思って精査してみると、単に上半分しか描画できてないだけだった。


Aが表示されるはずと思いこんで見るとAじゃないですかこれ?


これが本物のA

Aの上半分もAに見えるの、フラクタルだ。

カレーうどん界の動向

1/25(土)

同僚と外出。昼に千吉のカレーうどんを食べた。カレーうどんの専門店が存在するとは思っていなかった。

Dota2のプレイ履歴が見られるOpenDotaというサービスにちょっとしたバグがあり、OSSだったのでPRを出しマージされた。intの0が入りうる箇所で !hoge という書き方でvalidationをしているので0がinvalid扱いされていた。生のJSは辛い。

Dota2は調子がいい。7.23の環境にようやく体が慣れてきた。8連勝中。今は大規模な大会も行われていてアツい。

お得な情報を2つ

1/21(火)

スマホFTJ161BはBluetoothを有効にしているとwifiが断続的にしか通信できなくなる。

Ubuntu18.04+GTX1060でKrita4.2.8を動かすとき、ドライバのバージョンは440だとキャンバスのグラフィックアクセラレーションが効かず、ズームや回転がカクカクになる。435に戻すと直った。

定番外し/F4C3

1/14(火)

今日は昼食を食べに外に出て、いつもの店のいつもは頼まないメニューを頼んでみたのだがやはりいつものメニューのほうが良かった。冒険はリスクを伴う。

今日もぼちぼちOS30日本を進めた。3日目が終了。HLTRETをループするだけの関数をアセンブリで書き、それをCで読み込んで実行するプログラムを書いてコンパイルする。そうしてできたファイルをバイナリエディタで読んでみると、ちゃんと末尾がF4, C3になっていて感動。

もう2時か。さすがに遅い。

『第19回 自作OSもくもく会』に参加した

1/12(日)

https://atnd.org/events/110955

界隈の方に誘われ、同僚とともに参加した。フロントエンドエンジニアの自分が自作OSをやってどうなるのか。まだ初めたばかりなのであまり大きなことは言えないが、低レイヤーでも高レイヤー(?)でも共通する考え方のようなものがあって、低レイヤーの知識を得ることによって物事をより抽象的に捉えられるようになるかもしれないな、という感触がある。

TypeScript Interfaces メモ

1/9(木)

http://www.typescriptlang.org/docs/handbook/interfaces.html

Introduction

  • TSはduck typingでありstructural subtypingである

Our First Interface

  • TSは要求されているプロパティがあるかだけをチェックする

Optional Properties

  • プロパティ名の後ろに?をつけるとoptionalになる

Readonly properties

  • プロパティ名の前にreadonlyをつけると書き換え不可になる
  • ReadonlyArray<T> というやつもあるぞ

Excess Property Checks

  • 要求されているプロパティがあるかだけをチェックする とoptionalを組み合わせると、optional propertyのプロパティ名のtypoが型エラーにならなくなる
  • でもtypoはバグとして検出したい…検出したくない?
  • なのでTSはプロパティ名を手書きする(リテラル)ときは特別に excess property checking をする
    • Object literal may only specify known properties, but 'hoge' does not exist in type 'Fuga'.
  • excess property checking を回避する方法
    • as
    • interfaceの方に [propName: string]: any; を足しておく
    • 一度変数に入れる

生姜湯と化したちゃお/LinuxでDetroit: Become Humanできそう

1/5(日)

ランチに少し歩いたところの家系ラーメンに。味が濃く、魚介の風味もあった。ライスはおかわりはできないので最初に大森で頼むべきだった。銭湯はしょうが湯。早い時間に行ったので混んでいてあまりゆっくりできなかった。

今日が正月休暇の最終日だ。今年は帰省もせず、のんびりとしていた。悪くはなかったが退屈でもあったので、同じ退屈なら帰省してもよかったかもしれない。

法律上今年度中にあと2日休暇を取らねばならない。それとは別に繰り越せない休暇も2日ある。適当な祝日に合わせてどこかでまた9連休を生成することになりそうだ。

LinuxでWindows向けのゲームをやりたいときはLutrisというソフトを使う。Lutrisがなんであるかというのを説明するのは難しいのだが(公式にはgaming platformを名乗っている)、ゲームごとにどのバージョンのwineをどんな設定で使うかというのを管理できるソフトだ。

Detroit: Become HumanのPC版が12月に出ていたらしい。ぜひプレイすべきと勧められていたのと、新年で安くなっていたので購入し、Lutrisでのプレイを試みた。ダイアログに求められるまま依存パッケージをインストールし、d9vkをセットアップした。その結果起動には成功した。FPSも良好だ。しかしWASD移動ができない。キー入力が死んでいるわけではないのだが、ゲーム中に移動だけができない。不思議だ。しかしもう一歩だ。