メモメモメモ

ほんとうにめも

【Shell】GithubのPullRequest作成ページを一発で開く関数(ワンライナー)

関数の定義

.zsh_alias.bash_aliasに書いておく。

# カレントブランチから$1ブランチへのPullRequestを開く
function opr() {
  parentBranch=$1
  currentBranch=`git branch | grep "*"`
  repoName=$(git remote show origin -n | ruby -ne 'puts /^\s*Fetch.*:(.*).git/.match($_)[1] rescue nil')

  open -a /Applications/Google\ Chrome.app  https://github.com/${repoName/* /}/compare/${parentBranch/* /}...${currentBranch/* /}
}

使用例

opr dev (currentブランチからdevブランチへ) opr master (currentブランチからmasterブランチへ) など。

簡単に解説

第一引数$1にターゲットブランチを渡す。 git branch | grep "*"で現在のブランチを取得出来るので、そこに対してPullRequestを出している。

補足

ChromeアプリへのPathは自分のPC内のに合わせてください。 もちろん、safarifirefoxでも可。

【Laravel】validationエラーの情報はちゃんとObjectで返ってきてるぞ!

Laravelで用意されている通常のvalidation機能

laravel.com

を使うと、フロントエンドでエラーメッセージ等の詳細情報を取得できないのかと思って焦っていた。 そのとき僕は以下のようにエラーハンドリングしていた(つまりしてないw)

        .then((data) => {
          }).catch(err => {
            console.error(err)
          })

すると、consoleには以下のように表示された f:id:yooska14:20181124154102p:plain ので、文字列が返ってきているものとばかり思っていた。

解決方法

しかし、

        }).catch(err => {
          console.log(err.response)
        })

このようにerr.responseをdumpしてみるとエラー情報の詳細がオブジェクトに格納されていることが確認できた。 f:id:yooska14:20181124154423p:plain LaravelというよりもChrome Consoleの仕様でこのような表記になっていたみたい。よく考えたら通常の文字列表示とは違かったので気づけなかったのが悔しい。

【HTML】required属性を無視する一番楽な方法

とあるプロジェクトでフォームの一時保存機能を実装していたときに見つけた。

submitボタンにformnovalidate属性を付けると、そのボタンを押下して送信された場合はrequiredmaxlengthなどを無視してくれる。

まさに一時保存機能を実装するときの為にあるような機能。

参考

stackoverflow.com

【ReactNaitve】Androidアプリのpackage名を変える

package名を変える理由

kang.hateblo.jp のようにアプリの引き継ぎ作業をしていた。あーだこーだしていざ、APKファイルをアップロード!というところで

APK または Android App Bundle のパッケージ名は「●●●」とする必要があります。 と言われてしまった。 f:id:yooska14:20181105161150p:plain

APKファイルの名前ではなくpackage名を変更しなければならなかったのでメモ。

Androidアプリのpackage名とは

アプリ固有のIDのようなもの。 iOSで言うbundle id Dropboxの場合はcom.dropbox.androidで、リバースドメインドメインを逆にしたやつ)プラス末尾にandroidをつける的な命名が一般的みたい。(これはiOSのbundle idでも同じ。)

手順(変更箇所)

変更ファイルは app/build.gradle app/src/main/AndroidManifest.xml

の2つ。 app/build.gradleは defaultConfigの中にあるapplicationIdを変更する。こんな感じ。

android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion

    defaultConfig {
        applicationId "your_package_name"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
    }

app/src/main/AndroidManifest.xmlは最上部の

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="your_package_name">

この部分を変更する。

以上!

【ReactNative】Androidの証明書(keystore)を引き継ぐ

概要

基本的には通常通りで変わらない。 kang.hateblo.jp ↑の通りでリリースできるはず。 しかし、過去にリリースしたアプリで使っていた証明書を引き継ぎする必要があったのでその手順をメモ。

流れ

  1. keystoreを置き換える
  2. gradle.propertiesを書き換える

1. keystoreを置き換える

過去アプリのkeystoreをもらい、android/app/に置く。

2. gradle.propertiesを書き換える

置いたkeystoreのファイル名をgradle.propertiesMYAPP_RELEASE_STORE_FILEキーに書く。 passwordもMYAPP_RELEASE_STORE_PASSWORD``MYAPP_RELEASE_KEY_PASSWORDに書く。

以上!

誰か助けて

keystoreを無くしちゃった場合とかってアプリの履歴そのままで再発行できたりするのかな。。。

【ReactNative】Androidビルドエラー②

エラー

error: failed linking references.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':react-native-youtube:verifyReleaseResources'.
> com.android.ide.common.process.ProcessException: Failed to execute aapt

解決方法

android/build.gradleに以下を追加

    subprojects {
        afterEvaluate {project ->
            if (project.hasProperty("android")) {
                android {
                    compileSdkVersion rootProject.ext.compileSdkVersion
                    buildToolsVersion rootProject.ext.buildToolsVersion
                }
            }
        }
    }

参考

stackoverflow.com

追記

build.gradleもといgradle自体を全然理解してなかったのですごくつまづいた。 gradleについては以下が参考になった。 qiita.com