読者です 読者をやめる 読者になる 読者になる

gitでまとめてrevert

git push -f ではなくまとめてrevertする方法メモ(いつも忘れるし、push -f とか一人のときはやっちゃう)

流れ

  • revertをする(--no-edit つけてeditorを起動しない)
    • ここでresetのように過去のcommit指定する方法はないのか?
    • HEAD~5 みたいにかけるのか
  • rebase で squashする(=押しつぶす/統合する)
  • squashしたコメントをeditorで編集
  • push

参考にさせて頂きました

$ git log --oneline
2f05e27 aaa
d56fd0f bbb
8c1c711 ccc
f7d9739 ddd
00fdd3d eee

$ git revert --no-edit 2f05e27
$ git revert --no-edit d56fd0f
$ git revert --no-edit 8c1c711
$ git revert --no-edit f7d9739
$ git revert --no-edit 00fdd3d

$ git rebase -i HEAD~5

editor起動
pick => squash に書き換える

英語圏だと-(ハイフン)ではなくダッシュというようだ。--はダッシュダッシュとでも言うのか。(不明) squash a cockroach(ゴキブリを押し潰す)でsquashは完全に覚えた

PHPプロジェクト(Laravel)をHerokuへpush時にFailed to detect set buildpack

$ git push heroku master
Counting objects: 255, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (226/226), done.
Writing objects: 100% (255/255), 46.83 KiB | 0 bytes/s, done.
Total 255 (delta 110), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Failed to detect set buildpack https://github.com/heroku/heroku-buildpack-php
remote: More info: https://devcenter.heroku.com/articles/buildpacks#detection-failure
remote:
remote:  !     Push failed
remote: Verifying deploy...
remote:
remote: !   Push rejected to xxxxxxxxxxxxxxxxx.
remote:
To https://git.heroku.com/xxxxxxxxxxxxxx.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/xxxxxxxxxxxxx.git'

確認する事

  • composer.lock がpush 対象になっているか
    • なぜかignore global でcomposer.lockを含めていた(過去追加したので経緯は覚えてない)
    • ignore 対象のファイルの場合は git add -f xxx
  • composer.json が存在するか
  • buildpack がheroku/php と指定されているか
    • Laravel のroot にはpackage.json が存在しNodeと勘違いが発生するらしい(明示的にPHPとする必要あり)
  • heroku laravel のドキュメントを読む

試した事

  • 上記を試したが改善せず
  • 結局は、git init -> heroku create -> git push heroku master を行い、git remote add でGithubを追加し、Githubリポジトリをmergeして回避
    • remote が複数ある事が原因ではない事は確認済だが、git init -> heroku create の順に実行する必要があるのか原因は不明

利用したコマンド

  • heroku config -- 設定状況を確認
  • heroku buildpacks -- buildpackが何か確認

Laravelからのメール送信時にgmailを利用する(local dev env)

Swift_TransportException in AbstractSmtpTransport.php line 383:
Expected response code 250 but got code "535", with message "535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8 https://support.google.com/mail/?p=BadCredentials v65sm18105484pfi.42 - gsmtp
"

メール送信時に上記エラーが発生した場合は、 Gmailの2段階認証:オン にして、アプリパスワード再発行

Gmailはログイン時のパスワードと外部でSMTPとして利用する際のパスワードが違う。 ログイン時のパスワードをLaravelのenvファイルに書いた場合に上記エラーが発生する。 (何年か前も書いた気がするが、忘れてたので再度書く)

参考にさせて頂きました

気がつくと、6月の投稿を最後に何も書いてなかった。 その間にRubyKaigi行ったり、AppleWatchS2使い始めたりとネタはあったはずだが。。。。。

最近は家でスタンディングデスク環境も作ったので、その辺も近々。 明後日から沖縄に行くので、帰ってからまとめる。

最近はTHE WALKING DEAD ばかり見てて、Season4に入ったところ。さすがに飽きて来てる。

Backlogから通知されたissueをmenubarに表示

BitBarを使ってBacklogの通知を表示again

  • 前回はshellでAPIを叩いたが、rubyで書いてみたかっただけの記事
  • and 通知から通知元ページに遷移したかった

f:id:tbrhdys:20160622200210p:plain

f:id:tbrhdys:20160622200213p:plain

必要なpackage

書いてみたソース

bitbar-backlog-notify

ちょい気になった所

  • submenuを選択した後に、選択した前のissueがmenubarに表示される謎の動き
  • 結果として、puts "---" のハイフン3つが必要 (documentに記載あり)

BitBarを使ってBacklogの通知数をメニューバーに表示

ただscript書いてbitbarを試したかっただけの投稿

f:id:tbrhdys:20160610173520p:plain
* 通知が来たらBacklogの文字列が赤くなり、サイドメニューで件数表示

必要なpackage

  • bitbar
    • brew install bitbar
  • curlAPIを叩いて、戻り値のjsonをパースする便利なjq
    • jq
    • brww install jq

BaclogAPIでの通知数 ( response json )

{"count": 0}

BacklogAPIの通知数を取得してmenubarに表示する

  • KEYはBacklog上から取得
  • curl で取得して "| jq .count" でcountを取得
/plugins/backlog.10m.sh

#!/bin/bash
BKEY='your backlog api key'
TITLE='Backlog'
NOTIFY=`curl -sS https://yourspace.backlog.jp/api/v2/notifications/count\?alreadyRead\=false\&apiKey\=$BKEY | /usr/local/bin/jq .count`
[ $NOTIFY -gt 0 ] && echo "$TITLE | color=red" || echo "$TITLE | color=green"
echo "---"
[ $NOTIFY -gt 0 ] && echo $NOTIFY" | color=red" || echo $NOTIFY" | color=green"

今後試したい事

参考にしたい

ORA-01476出たのでNVL/NULLIFの確認

Oracle ORA-01476 について

  • 0除算なんだけど、NULLIF/NVLの違いが詳しく理解出来てなかったのでメモ
SQL> SELECT 2 / 0 FROM dual;
SELECT 2 / 0 FROM dual
         *
行1でエラーが発生しました。:
ORA-01476: 除数がゼロです。
  • 分母の除数が0の場合はnullを渡す
SQL> SELECT 2 / NULLIF(0, 0) FROM dual;

2/NULLIF(0,0)
-------------

NULLIF

  • 第一引数と第二引数が一致した場合にnullを返す
  • NVLと同様にnullの場合に0を返すイメージだったが、nullを返すという事で納得

参考

PHPのinteractive shell psyshを利用する

brew update で Permission denied

/usr/local/bin/brew: line 28: /usr/local/Library/brew.rb: Permission denied
/usr/local/bin/brew: line 28: exec: /usr/local/Library/brew.rb: cannot execute: Undefined error: 0

brewがいる /usr/localに権限がないとか

この記事を参考にさせて頂きました

$ sudo chown -R `whoami` /usr/local
$ cd /usr/local
$ git reset --hard origin/master

あとは、psyshのgithub READMEを参照

  • composerのpathを通してREADMEの通りに対応
export PATH=~/.composer/vendor/bin:$PATH
$ brew update && brew install composer
$ composer global require psy/psysh
# If asked what version constraint to use just type `*`
  • pshsyを叩く
➜  /tmp psysh
Psy Shell v0.7.2 (PHP 5.5.31 — cli) by Justin Hileman
>>> echo "interactive mode にするためにpsyshって打つのを思い出すのが一番つらい";
interactive mode にするためにpsyshって打つのを思い出すのが一番つらい⏎
=> null
>>>