memo.log

技術情報の雑なメモ

【Flutter/RevenueCat】ERROR: 🍎‼️ Error fetching offerings - Error Domain=RCPurchasesErrorDomain Code=23

以下エラー。 AppStoreConnect で有料プランを登録したら動いた。。。

[Purchases] - ERROR: 🍎‼️ Error fetching offerings - Error Domain=RCPurchasesErrorDomain Code=23 "None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect (or the StoreKit Configuration file if one is being used).
This could be due to a timeout, or a problem in your configuration.
More information: https://rev.cat/why-are-offerings-empty" UserInfo={NSLocalizedDescription=None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect (or the StoreKit Configuration file if one is being used).
This could be due to a timeout, or a problem in your configuration.
More information: https://rev.cat/why-are-offerings-empty, readable_error_code=CONFIGURATION_ERROR}

映画ログの自分の棚の中身をスクレイピングしておく

映画ログがサービス終了するとのこと。データのエクスポートには対応しないとのことなので、自力でラックの映画タイトル一覧を取得するスクリプトを準備した。

www.eiga-log.com

まず、自分のラックページで、Chromeデベロッパーツールを開き、以下を実行。

var arr = [];
elements = document.querySelectorAll(".bookreviewList_title");
elements.forEach(function(element){
  arr.push(element.children[0].href);
});
console.log(arr);

各映画の詳細URLのリストを取得できるので、以下Rubyスクリプトでタイトルを抽出。

require "open-uri"
require "nokogiri"

urls = %w(
...
)

urls.each do |url|
  html = URI.open(url).read
  doc = Nokogiri::HTML.parse(html)
  pp doc.css("h1").children[0].children.to_s
end

【Terraform】手で環境を変えた後にTerraformコードを後追いする手順

基本的には以下の流れ

①「 terraform state rmterraform import のコンボ」か、 terraform apply --refresh-only して tfstate を環境側に合わせる

② .tfコードを編集して plan して変更が無いことを確認する(= 「tfstate と 実環境」にコードが追随する)

refresh 等しても実コードの方は変更されない。したがって②が抜けて、再度 apply すると tfstate ごと環境が戻ってしまう。

【Flutter】実機iPhoneにデプロイするメモ

公式ドキュメントが最も信頼かつ正確なので、ここを見ること。

docs.flutter.dev

簡単な手順メモ

# ケーブルで実機を接続
flutter create my_app
cd my_app
open ios/Runner.xcworkspace
# このときにメインのパネルに何も表示されなかった場合は、AppFrameWorkInfo とかに合わせてまた戻すと表示されたりする
# Signing & Capabilities > Team. で自分のアカウントを選択。
flutter devices # 自分の実機情報が表示されることを確認
flutter run

以下、ハマリポイントをメモ。

【Terraform】count のあるリソースを import する時にハマったこと

例えば以下のような定義があったとして、

provider "aws" {
  region = "ap-northeast-1"
}

resource "aws_s3_bucket" "kuredev" {
  count = 1
  bucket = "test-terraform-test-kuredev.info"
}

resource "aws_s3_bucket" "kuredev2" {
  count = 1
  bucket = "test-terraform-test-kuredev.info2"
}

output "s3_bucket" {
  value = aws_s3_bucket.kuredev[0].bucket
}

aws_s3_bucket.kuredev を import する。

% terraform import aws_s3_bucket.kuredev test-terraform-test-kuredev.info

次に kuredev2 を import しようとすると、

% terraform import aws_s3_bucket.kuredev2 test-terraform-test-kuredev.info2

以下のようにエラーになる。

│ Error: Invalid index │ │ on main.tf line 24, in output "s3_bucket": │ 24: value = aws_s3_bucket.kuredev[0].bucket │ ├──────────────── │ │ aws_s3_bucket.kuredev is empty tuple │ │ The given key does not identify an element in this collection value: the collection has │ no elements.

これは import したリソースが count のあるリソースにもかかわらず index が無いためにエラーとなるようだ。

% terraform state list
aws_s3_bucket.kuredev

解消のためには import した後に terraform refresh するとなぜか index が付く。

% terraform refresh   
aws_s3_bucket.kuredev[0]: Refreshing state... [id=test-terraform-test-kuredev.info]

Outputs:

s3_bucket = "test-terraform-test-kuredev.info"

 % terraform state list
aws_s3_bucket.kuredev[0]

import する時に index をつければ良さそうなものだが、なぜか import 時にエラーがでる。

% terraform import aws_s3_bucket.kuredev[0] test-terraform-test-kuredev.info
zsh: no matches found: aws_s3_bucket.kuredev[0]