CarrierWave を Google Cloud Storage で使おうとしたときに嵌まる罠
困難
CarrierWave で GCS を使おうとすると
モデル保存時に wrong number of arguments (given 6, expected 4..5)
という度し難いエラーが出る
まとめ
- fog-google のGCPアクセスでJSON API を使った場合、copy_object メソッドで引数エラーが出る
- GemがメンテナンスされるまではレガシーなXML APIを使う
- 問題が発生している組み合わせは
carrierwave (2.2.1)
,fog-google (1.12.1)
,google-api-client (0.50.0)
Google認証システムから任意のツールにワンタイムパスワードを引っ越す
はじめに
スマホの機種変更のたびにワンタイムパスワードの管理が面倒ですね。
賢明な方は既に1Passwordなどにワンタイムパスワードを登録済みかもしれませんが、
最初にGoogle認証システムなどに登録してしまったら、引っ越すのも作り直すのも面倒になってしまうかもしれないです。
昨年、Google認証システムがエクスポートに対応しました。
これで機種変更が捗るのですが、公式サイトの説明では、
Google認証システム同士でQRコードを読ませるように書いてあります。
しかし自分は KeepassXC*1 や 1Password*2 で使いたいんだ!
自由になりたいので!
というわけでGoogleのロックインから脱出してみましょう。
然らばLet's Hacking!
続きを読むおことわり:本記事の内容を参考に起こした結果の情報漏洩、操作ミスによるシークレットの削除などの不利益について、筆者は一切の責任を負えませんので悪しからずご了承ください。
Ruby on Rails 6.x + Omniauth でRedisのSessionを使う
Ruby on Rails5.2以降、 Redisのキャッシュ機能を標準サポートされました。
Rails の OAuth2 クライアントとして Omniauthを使った場合、 無策で実装するとCSRFエラーが出ます。
OmniAuth::Strategies::OAuth2::CallbackError (csrf_detected | CSRF detected):
これはOmniauthが Railsとは別の Rackアプリケーションとして立ち上がっていて、Railsの設定を読まないためです。 公式サイトにはCookieセッションでの対応方法が書いてありますが、Redisで設定する場合の記述がなされていません。
続きを読むRails6のcredentialをファイルから生成する方法
梅雨時になってすっかりRails触っている昨今ですが、いかがお過ごしでしょうか。
Rails6から導入された credentials 、使ってますか?便利ですね。大事な情報はどんどん隠蔽しましょう。
credentialsが何かの説明は、ここ とか ここ を読むと良いでしょう。
要はサービストークンやパスワードなどの秘密の情報をRailsフレームワーク内で暗号化する仕組みです。
最初に rails credentials:edit
とかで秘密鍵を作りながら暗号化する情報を書くのですが、
EDITOR
環境変数にエディタを設定して書き込みます。
秘密にする項目が多いと、面倒ですよね。自動で生成したい!!!
そこで、 credentials:edit
をファイルから生成してみましょう。
手順
1. ひな形ファイルを用意する
設定ファイルのひな形になるファイルをどこかに置きましょう。
あるいはこれをsedなんかでカスタマイズしてもいいかもしれません。
.credentials_template.yml
secret_key_base: '0123456789' mysql: host: 'localhost' database: 'default' user: 'user' password: 'secret' redis: url: 'redis://localhost:6379/1' mail: server: 'smtp.example.com' domain: 'example.com' port: 587 user: 'mailuser' password: 'secret' authentication: 'cram_md5'
2. ひな形ファイルからcredentialsを生成する
おもむろに以下のコマンドを実行しましょう。 Linux系のシェル用です。Windows民はWSL使いましょう。
EDITOR="cat ./.credentials_template.yml > " bundle exec rails credentials:edit -e development
staging, produntion 用の鍵も同様に作ります。 -e
の引数変えればできますね。
解説
EDITOR
の中の >
がミソです。
credentials:edit
の中では ${EDITOR} #{tmp_path}
みたいなコマンドを発行しているので、
リダイレクトで流し込めばいいのですね。
3. 秘密鍵を持ち帰ろう
環境の新規作成はできました。
任意の環境でデプロイするには秘密鍵を持ち帰らなければなりません。
./config/credentials/*.key
にあるので、
プライベートクラウドに上げるなり、アーカイブして持ち帰るなりしましょう。
できあがり
簡単ですね!ではよい自動化ライフを!
アバターセットアップ用のUnityプロジェクトテンプレートを作る
VKet4の最終日にこんな記事を書いています。 アバターのセットアップ、してますか?
たくさんセットアップしていると、
繰り返し同じアセットをインポートしなければいけないのが最初の苦行ですね。
人類はコピペ前提のダミープロジェクトを作って凌いでいたようです。*1
しかし、プロジェクトのテンプレートを作ってしまえば、もっとスマートに始められるのではないでしょうか。
プロジェクトのコピー&リネームと比べた利点として以下の3点が個人的には好きです。
- 通常のプロジェクト開始と同じフローで作ることが出来る
- テンプレートで開始すると Unityのバージョンが固定される 安心感がある
- プロジェクト作成後にそのまま Unity Hubのプロジェクト一覧に登録される (再開しやすい)
プロジェクトのテンプレート作成自体は既知のものですが、それをアバターのセットアップに使っている人を見なかったので、
今回はその方法について説明します。
Model Finalizer 070 blender 2.8 用パッチ
今回はblender使いの人向けの記事です。
ModelFinalizer を知っていますでしょうか。
記者だったりモデラーだったりする佐藤カフジさんの作ったblenderアドオンです。
ボーンポーズコレクションをシェイプキーに一括変換したり、ウェイトを移植したり掃除することが出来るものです。 出力クオリティを調整しながら破綻しないキャラクターモデルをつくるのに欠かせません。
しかしながら2020年4月現在更新が止まっており、blenderは2.8が主流になり、アドオンを使うことが難しくなっていました。
そこで現状のModelFinalizerの機能をそのまま blender2.8で動かすための自家修正を加えました。
Model Finalizer 作者のかふじさんが活動再開するまでのとりあえず版です。
起きてー!
2020/07/29追記
カフジさんが活動再開したので本家から入手しましょう
続きを読む