CakePHP3:マイグレーションファイルの名前を変更する

cake bake migration_diffマイグレーションファイルを作ってから「名前変えたい」ということってありませんか? 僕は次の方法で変えました:

  1. マイグレーションを適用前の状態にする
cake migrations rollback
  1. マイグレーションファイルをリネームする
cd config/Migrations
mv 旧ファイル名 新ファイル名
  1. クラス名を変える
vi 新ファイル名
  1. ステータスを見る
cake migrations status
  1. マイグレーションを実行する
cake migrations migrate

Git:git pull dry run的なことを行いたい

git pullする前に、どのような変更がマージされるか確認したい、ということはありませんか? 僕は以下のようにしてチェックしています:

git fetch origin master
git diff HEAD..origin/master

そして問題がなければ

git merge origin master

としています。

Swift:variables currently must have an initial value when entered at the top level of the REPL

Playgroundにおいて、変数を初期化しない場合にこのエラーがでます。 例えば、こんなコードです:

let myName: String

初期値を与えればよいのですが、与えないケースも試してみたいですよね。 僕は関数に入れて回避しました:

func main() -> Any {
    let myName: String
    myName = "Kankichi"
    return myName
}

print(main())

Swift:配列の宣言、初期化と要素の追加

配列の初期化に苦労といいますが、バリエーションが多くてまいりましたw

宣言のみ

配列の場合、宣言のみはできないっぽい(普通の変数であればできるみたい) 例えば、このようにするとVariable 'myArray' passed by reference before being initializedとエラーになる:

func hoge () {
    var myArray: [String]
    myArray.append("koji")
    print(myArray[0])
}

hoge()

宣言+空の値で初期化

// Swift Tourに出てくる、空の配列を作るためのInitializer Syntax
var countries = [String]()

// こちらのほうがしっくりくる
var prefectures: [String] = []

宣言+空ではない値で初期化

// 型を推測してもらう
var planets = ["earth", "mars", "venus"]

// 型を明示的に指定
var oceans: [String] = ["Pacific", "Atlantic"]

要素の追加

// 1つだけ追加
prefectures.append("Aichi")

// 2つ以上追加
prefectures.append(contentsOf: ["Yamagata","Hokkaido"])

Javascript:Firefox/Safariでbeforeunloadが効かない

FirefoxSafariでは、beforeunloadが呼ばれても何も処理をしてくれないことがありました。 (ポップアップを表示するのはできるんですが…)

<html>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script>
<a href="https://www.google.com">Google</a>
<script>

window.addEventListener("beforeunload",function() {
    axios.get('/test.txt')
    .then(function(response) {
      console.log("OK" + response)
    })
    .catch(function(error) {
      console.log("NG" + error);
    });
});

</script>
</body>
</html>

このファイルを設置して、Chromeで開いて、リンクをクリックするとサーバのアクセスログに/test.txtが記録されます。 FirefoxSafariだと記録されません。

使い方が間違っているのかな?

Git:ワーキングコピーへの変更をすべて戻したい

まず、ドライランを行います:

git clean -nd

すると、何を削除するかの一覧が出力されます:

Would remove src/Controller/ArticlesController.php
Would remove src/Controller/AuthorsController.php
Would remove src/Controller/PostsController.php

問題がなければ、ドライではない本番実行します:

git clean -fd