Streamlitのキャッシュ動作検証

試作したアプリ

Streamlitを初めて使ってみました。簡単にUIを記述できて面白いですね。
ドキュメントを呼んで色々試していたのですが、一際気になったのがキャッシュでした。

cache_datacache_resourceデコレータを使うことで、対象のメソッドの出力(st.write等も含む)が、引数ごとにキャッシュされるのです。
ここでふと疑問に思ったのが「これって本当にサーバサイドのキャッシュなの?」という点でした。

続きを読む

scpコマンドでパス末尾にドット(.)を指定するとエラーが出る

scpコマンドで特定のディレクトリ配下の全ファイルをコピーするために、ローカルのGit Bashでは下記コマンドを使っていた。

scp -r ./path/. user@host:/path

パスの末尾にドット(.)を指定することで、隠しファイル(ドット始まりのファイル)を含めた全ファイルをコピーしてくれる。 (./path/*では隠しファイルは転送対象としてくれない。)

このコマンドをGitHub Acionsで実行しようとしていたのだが、下記エラーが発生した。

scp: error: unexpected filename: .

どうやらドット指定の方式には脆弱性があるようで、バージョンによってはエラーとして返されるようだ。詳細は下記を参考に。

代替策

こちらの方が提案しているような正規表現を試す(未検証)か、rsyncコマンドに切り替えるのが無難だと思われる。 rsyncだと隠しファイル周りの煩わしさはなく、./path/と指定すれば対応できる。

というわけで、rsyncコマンドへ移行することにした。

rsyncで同様の処理

scpを使っていたので、当たり前だがssh接続。私がGitHub Actionsのワークフローで使ったコマンドは下記の形式。

rsync -avz -e "ssh -o StrictHostKeyChecking=no -i private_key" ./path/ $USER@$HOST:/path

色んな言語を使って遊んだ備忘録

システム構成

元々さくらレンタルサーバVPSではない)を契約していたが、特段重い処理を走らせているわけでもなく、かつデータベースにも余裕があり有効活用の道を模索していた。 そんな折、とある外部APIから定期的にデータを取得してビジュアライズしたい欲求に駆られた。

であるならば、せっかくだし使ったことの無いフレームワークやライブラリも触っておきたい。ということで、フロントエンドにはNext.js+Reactを採用。 どちらも初めてで公式ドキュメントとにらめっこ状態だったが、ある程度の理解まで到達でき今非常に気分がいい!

今回構成を考える上で検討した他のライブラリ等も含め、いろいろとメモしておこう。

続きを読む

rc-sliderで範囲指定できるスライダーを使う

昔bootstrapに触れた経験のよしみでreact-bootstrapをNext.jsのプロジェクトで使っています。 ところが範囲指定可能なスライダーはbootstrapには存在せず、もちろんreact-bootstrapにも存在しません。

そこで、このコンポーネントについては、 react-componentグループ配下にあるrc-sliderを使って対応することにしました。

続きを読む

StreamElementsのチャットオーバレイに、7tvやBTTVの追加エモートが表示されない話

公式Tiwtchのチャット欄等では表示できているし、7tvやBTTVのグローバルエモートはオーバレイでも表示されている。\ しかし、自分が追加したエモートはただの文字としてオーバレイに表示されてしまう。

そんな場合、下記コマンドをチャット欄で打つことで更新できた。
おそらくブラウザソースのリロードも必要。

!emotes update

さくらレンタルサーバにGitリモートリポジトリを作って自動デプロイ

忘れそうなので備忘録として。 なお、SSHの接続は秘密鍵を使って行う。

  • リモートリポジトリへのPush&Pull設定
  • Pushされたときのアクションを設定
続きを読む