メモメモメモ

ほんとうにめも

【AWS RDS】本番環境でやらかしたのでRDSを復元してデータを戻した

何が起きたか?

3日前くらいに実行したmigrationをrollbackしてしまいました。 追加されたいくつかのカラムが消えたので、そこに入ってたレコードも全部消えました。ぴえん😂

復元したときの自分の行動をざっくり

  1. 死ぬほど焦る
  2. 影響範囲の確認(どんなデータが消えてたかチェック)
  3. AWS Consoleに入る
  4. RDS > データベース > 該当DBクラスタ > 「メンテナンスとバックアップ」 > (下部)スナップショット > 一番新しいスナップショットを選択
  5. とりあえず「スナップショットを復元」を押す
  6. ・・・スナップショット復元が遅すぎる!!※1
  7. (復元完了した)DBにsshアクセスできない!!※2
  8. sshアクセスできた。中身見れた。ふむふむこれが消えてたのかー。
  9. 消えてたデータを復元(テーブル構造とレコードどっちも)
  10. 終わったハッピー

6. スナップショット復元が遅すぎる!!※1

なんとなくサクッと復元できるイメージを持ってたけど、RDSが速いのは「スナップショットの取得」までで、データを復元するにはデータ量に応じて相応の時間がかかるっぽい。(そりゃそうだ。)

この事実に気付いてからスナップショットをS3にエキスポートしてから必要なデータだけローカルで復元しようとしたが、それより先に復元が完了したのでやらずに済んだ。

7. DBにsshアクセスできない!!※2

  • パブリックアクセスの設定か? => 違かった
  • セキュリティグループのインバウンド 設定か? => 違かった

結論: 元のDBとVPCが同じになってなくてアクセスできなかった。(ここもデフォルトでコピーしてくれよ!😭)

まとめ

本番環境に眠い状態でアクセスするのはやめようね!

【MySQL】テーブル名とテーブルに関するコメントを一緒に見たい

結論

SELECT table_name, table_comment FROM information_schema.tables WHERE table_schema = "schema名";

※schema名は何も考えてなかったら大体DB名

TablePlusなら

上記を調べてから気づいた。 元々TablePlusでさっと見れれば調べる必要もなかったのに。新しい発見はいつも不要なときにやってくる。

f:id:yooska14:20201022055059p:plain
TablePlus左上のここ(「Tables」)

ここを押すのじゃ。すると一番左にテーブル名・一番右にコメントが表示される。

感想

TablePlusのsnippetもう少し使いやすくならんかな。

【Laravel】mail driverをsesからsendgridに変えたのに本番環境で変更が反映されなかった

解決方法

queueをリスタートした。

なんとなくリスタートしてみたけど、queueってリスタートしないと環境変数反映しないんだっけ?

セルフホスティングしたRedashにアクセスするとInternalServerErrorが出てた

Why

ディスク容量がいっぱいだったらしい。

思い出

EC2インスタンスを起動すると良いと聞いて、再起動してみた。 すると、Dockerが起動できてなくてHTTPアクセスできなかった。 SSHアクセスはできたので手動でDockerを起動してみたが、ディスク容量の問題で起動できなかった(ここで原因に気づいた)。

解決手順

  1. 容量の大きいlogファイルを洗い出した(sudo du -x -h / | sort -r -h | head -40 | grep log
  2. 不要で容量の大きいlogファイルを全て消した。
  3. EC2インスタンスを再起動した。

非営利組織の経営 by ドラッカー第3章を読んだ@プライベート輪読会第1回

なぜ読んだか?

コロナの影響でリモートチームが増え、可処分時間が増えた影響か、周りのビジネスマンが「利益に直結しないけどなんか色々得られそう」なコミュニティに出入りしてるのを多く観測するようになった。 オンラインサロン・ギルド組織や、その先駆けとなるFREEex(オンラインサロンが流行る10年くらい前から岡田斗司夫さんが提唱してた組織形態だと認識している)が流行ってるのは知ってるが、

  • なぜ、こんなにもワークするのか?
  • うまく行ってるチームはどうやってメンバーをマネジメント・モチベートしてるのか?
  • どうやったら再現性を持って非営利組織をワークし続けられるか? を言語化できない自分を認識したので、先輩経営者からおすすめされて買った。

「読んだ系」の記事をどううまく書けば良いか見えないので、いつも通り雑多に「とりあえず書く」。

読んだ箇所

第3章(いきなりだけど)。目次見て気になった箇所から読むスタイル。 非営利組織についての本で、マーケティング戦略って全然想像つかなくない?

線引いた行(意訳あり)とその感想・まとめ

  • 前提として、マーティンぐと販売は違う
  • マーケティングとは、「価値を加えて」「ニーズを満足させること」
  • 顧客・消費者からスタートすればマーケティング。製品やサービスからスタートするとそれは販売
  • マーケティングで重要なことは、働きかけた相手(ターゲット)からフィードバック(反応)を得ること。こちらから働きかけをしてこそ反応を得られる。
  • STP: Segmentation, Targeting, Positioning
  • Positioning: 差別化
  • セグメンテーション(個別最適化・ニッチ化・絞り込み)がロイヤリティを高めるカギ。
  • ニッチ化するとターゲットが狭くなるよね?: オーケストラ化(by コトラー)が大事。
  • オーケストラ化: 色々なグループに分類した上で、組織の一体化を図る
  • 当然、グループごとに活動内容は変える
  • ただし、全体のミッションは共有しておく(意訳: 逆説的に言うと、共通のミッションこそがチームをチームたらしめるということだと思う)
  • 非営利組織でもマーケティングが必要になったのは、(非営利組織同士の)競争が激しくなったから。
  • マーケティング成果の測定方法の原則は、知らない => 知っている => 好きのいかに右側にターゲットを持ってこれるか。
  • マーケティングとはある特定の職能ではなく1つの基本的な姿勢である。

【オーケストラ化: 色々なグループに分類した上で、組織の一体化を図る】について

納得感ある。チームが大きくなってくると働きアリの法則的な作用もあり、全員のモチベーションを高く維持するのが困難になる。 小さなチームの集合体として大きなチームを作るのは鉄板な気がする。

【非営利組織でもマーケティングが必要になったのは、(非営利組織同士の)競争が激しくなったから】について

ベンチャー業界でも「新しいことやってる感・イケてる感」があれば採用できる時代はとっくに終わってて、 だからこそ「vision, mission」を使ってある種のマーケティングを行って人を集めるように変化してきてるんだと思う。

【ReactNative】ReactNavigationでディープリンクの罠にハマった

前提

使ってるreact-navigationのバージョンはこんな感じ。

    "@react-navigation/bottom-tabs": "^5.1.1",
    "@react-navigation/material-top-tabs": "^5.1.1",
    "@react-navigation/native": "^5.0.9",
    "@react-navigation/stack": "^5.1.1",

DeepLink実装の際に参考にしたのは↓。

reactnavigation.org

何が起きたか?

新しいDeepLinkパス(config)を追加したら従来のリンクが機能しなくなった。

関連ソース周りコピペ

  const { getInitialState } = useLinking(navigationRef, {
    prefixes,
    config: {
      NewsIndex: 'news',
      NewsDetail: 'news/:hash',
      .....
    },

具体的に何をしたか?

元来

    config: {
      NewsDetail: 'news/:hash',
      .....
    },

これだけだったのを、

    config: {
      NewsIndex: 'news',
      NewsDetail: 'news/:hash',
    },

こうした。 すると、NewsDetailの方が機能しなくなった。

解決方法

    config: {
      NewsDetail: 'news/:hash',
      NewsIndex: 'news',
    },

というふうに、pathの順番を逆にしたら直った。

考えられる原因は?

react-navigationの仕様として、configを上から順番にチェックしていってマッチしたら終わりにしてるんだと思う。 で、今回は 'news/:hash'にヒットさせたいのに先に'news'がヒットしてしまったことが原因だと思う。 プログラミング長くやってたらライブラリのこういう不具合はあるある。気づけなかった自分が悪い。

PHPでのファイルアップロード時に `The "" file does not exist or is not readable` エラーに悩まされた

どんなときに起こったか?

Laravelで動画(重いファイル)をアップロードしようとしていた。

原因

ファイルが重くてリクエストデータを扱えなかった(handleできなかった)。

対応

2つの対応が必要。 php.inipost_max_sizeを上げる。 php.iniupload_max_filesizeを上げる。

今回はどちらも 200M にした。

※変更すべきphp.iniを探す方法 qiita.com

自分で過去に書いてた(忘れてた)

雑すぎる。。(直すとは言ってない) qiita.com