cherry-pick には tig が便利

意図しないブランチにコミットを積んでしまうことってあると思うんですが、そんな時に便利なのが cherry-pick です。そして、 cherry-pick する際に便利なのが tig です。 tig とは これです。 Introduction · Tig - Text-mode interface for Git tig での cherry-pick branch-a でやりたかった Add "aaa" を間違えて branch-b でやってしまった例。 branch-a を checkout した状態で tig branch-b します。 branch-b の commit history から cherry-pick したいコミットにフォーカスした状態で Shift + C します。 こいつを cherry-pick するんだな? 的なことを聞かれるので y すれば OK です。 Shift + C です。便利です。偶然知ったんですが便利です。

Read More

Rust 入門

少し前にやったことを何やってたか忘れてしまうので記録を。。 Hello, Rust! インストール はじめる を見ながら。 curl https://sh.rustup.rs -sSf | sh : 1) Proceed with installation (default) 2) Customize installation 3) Cancel installation 途中でカスタマイズするか聞かれるけど 1 を選んだ。 Hello, Rust! 適当なファイルを作る。 // main.rs fn main() { println!("Hello, Rust!"); } Rust では 4 スペースでインデントするとのことー。 で、コンパイル。 rustc main.rs すると main というバイナリファイルができて ./main すると ‘Hello, Rust!’ と表示されます。 rustc の挙動 rustc filename.rs した場合は filename というファイルができます。 fn hello() { println!("Hello, Rust!"); } と関数名を hello に変えた場合は error[E0601]: main function not found error: aborting due to previous error とコンパイルできません。

Read More

Cloud Functions for Firebase で Slack の scraping bot を作ってみた話(後編)

Cloud Functions for Firebase で Slack の scraping bot を作ってみた話(前編) の続きです。スクレイピングまわりをやっていきます。 3. Cloud Functions 作成 (つづき) HTML を確認する HTML を log に吐いて、どのようなセレクタで抽出するとよいかを確認します。 // functions/index.js const functions = require('firebase-functions') const rp = require('request-promise') exports.bot = functions.https.onRequest((request, response) => { const text = request.body.text if (text !== 'yahoo') { return response.status(200).send('nothing to do') } const uri = 'https://yahoo.co.jp/' rp.get({ uri }).then(body => { console.log(body) }).then(() => { return response.end() }).catch(err => { console.

Read More

Cloud Functions for Firebase で Slack の scraping bot を作ってみた話(前編)

Firebase には Cloud Functions という便利なものがあります。 Cloud Functions for Firebase これを使って Slack bot を作ってみようと思います。 今回は “yahoo” と #random channel で発言すると、Yahoo! のトップページに掲載されているニュースを返してくれる bot にします。 プロジェクトの作成 Slack 側の設定 Outgoing Webhooks Incoming Webhooks Cloud Functions 作成 という流れ。 1. プロジェクトの作成 Firebase console からプロジェクトを追加し、ターミナルで Cloud Function の雛形をローカルに作ります。 mkdir ScrapingBot && cd $_ firebase login // ブラウザで Google アカウントログイン firebase init // Functions にチェックを入れて Enter // さっき作ったプロジェクトを選択して Enter // "Do you want to install dependencies with npm now?

Read More

Firebase Hosting はじめました

Firebase の Hosting 機能使ってみることにしました。 よい点 カスタムドメインで https が使える Let’s Encrypt CircleCI に deploy おまかせできて便利 GitHub の Web インターフェイスでエントリ投稿ができる 注意点 証明書が有効になるまで少し時間がかかる(10 分程度だったか) DNS の設定をせっかちにやっちゃうと SSL 証明書がないままサイトが公開される 開発中にも遭遇したけど、、、 GitHub が調子悪いとエントリの投稿ができない 参考にしたサイト サイトをデプロイする | Firebase カスタム ドメインを接続する | Firebase Hugoでサイト構築してcircleciでdeploy · 3a-classic/3a-classic.github.io Wiki ちなみに静的サイトジェネレータは Hugo 使ってみてます。なんとなく Hugo で作ったサイトを CircleCI で GitHub Pages に自動デプロイ | Born Too Late HugoとCircleCIでGitHub PagesにBlogを公開してみた · Hori Blog とりあえず書く場所の整備はできたので、ぼちぼちやっていきます。 いつか管理めんどくさくなって Medium とかに移しそうな気もする。。

Read More