ことさら−古都プログラマーの更級日記

京都でお寺を回りながら御朱印集めをしていたエンジニアのブログ。おもに技術的なはなしとか日常的なはなし

GitHubのgistに軽度のバグを見つけてバグ報告を出した話

がいよう

先日、GitHubのgistを使っていてバグを見つけました。ググってみたら同じバグを踏んでいる人はいなかったみたいなので *1 、バグ報告してみました。その結果、ちゃんとGitHubから返信がきたため、ここでは、どうやってバグ報告したかと、ほかの人が同じような報告をしないように *2 バグについてまとめておきます。

バグの内容

スクリーンショットと詳細な説明(下手な英語)は以下のリポジトリにアップロードしてあります。

github.com

  1. gistを新規作成します。Add fileをクリックしてファイルを2つにします。仮にファイル名を01.md, 02.mdとします。01.mdと02.mdの中身を同じにして保存します。
  2. 保存したgistのeditボタンを押します。
  3. 02.mdを03.mdにリネームして保存します。
  4. リネームしたかったのですが、02.mdも03.mdも両方残った状態になります。

01.mdと02.mdの中身が同じでないと発生しないようです。明らかにバグっぽい挙動をしています。

報告方法

セキュリティ的なバグの場合

GitHub バグ 報告 とかでググると、以下の記事がまず見つかると思います。

GitHubにバグ報告して賞金$500を頂いた話

ただし、これはセキュリティ的なバグを見つけたときのやつっぽいですね。もしかしたら僕の発見したバグからセキュリティ的なやつにつなげられるのかもしれませんが、ぱっと僕は思いつきませんでした。

軽度のバグの場合

Contact GitHubを使ってコンタクトをとってみて報告しました。参考にしたのは以下のブログです。

giginet.hateblo.jp

内容としては、「バグの内容」に書いたようなことをそのまま英語で書いたうえで *3 、「スクリーンショットを以下のところにアップロードしておきました」として、 https://github.com/yoshikyoto/github-gist-bug のURLを添えておきました。

そしたら1日くらいで以下のような返信が帰ってきました。  

Thanks for the detailed report! That's really interesting behavior and seems like a bug to me - we can't promise an ETA but we'll ask our engineers to take a look.

簡単に訳すと「詳細な報告ありがとう!面白いバグですね。修正をお約束することはできませんがエンジニアには伝えておきます」という感じですかね。返信が返ってきたってことは、セキュリティに関係ない軽度なバグだったらこのフォームで伝えたら問題ないということですかね。

おわりに

という感じで、これで一旦決着はついたのでここまでの流れを書きました。 暇があったらこのバグについてもっと詳しく見ていきたいですね。 修正にも期待しましょう。

*1:限定的な状況でしか起こらないバグだからだと思います

*2:今回の件については、以下に書くようにすでに返信も頂いており、向こうにはすでにバグとして伝わったと思います

*3:下手な英語でも向こうは読み取ってくれるので、伝える気持ちが大事。

自宅に開発環境を組み立てたい - 開発環境を整える連載 Part1

自宅でWebアプリ開発をしたくて、開発環境が欲しくなったので、組み立てていく連載です。今回の連載で作りたい開発環境は以下の通りです

  • Jenkins
  • GitBucketやBitBucket、GitLab的なソースコード管理システム
  • アプリケーション開発環境用サーバー

そのために、サーバーに仮想環境をいくつか載せて、その上でJenkinsやアプリケーション開発用サーバーを載せていきます。

仮想環境としては、基本的にはDockerを使っていきたいですが、世の中全てかDockerなわけではありません。Ansibleなんかで構成管理したい場合もあるでしょう。そこで、Vagrant&Ansibleな環境も欲しいです。ちょうど手元に物理サーバーが2台あるため、片方にDockerを、片方にVagrantを載せたいと思います。

まずはDocker環境を作って、その上にGitBucketを乗せるところから始めようかなと思うのですが、その前に、サーバーを2台用意するために、Mac mini Late2012モデルのメモリを増設したので、次回はその話を書こうかと思います。

Qiitaアドベントカレンダーの募集がはじまりましたね

Qiitaのアドベントカレンダーの募集がはじまりました。

僕も某カレンダーに名前を書いたのですが、今のところぱっといい感じのネタが思いつきません。面白いネタをやりたいのですが、何も思いつかなかったらEmacsでなにか遊んで記事にしようかなーと思います。.emacsアドベントカレンダーもあったので、余裕があったらそちらにも参加しようかと思います。

さて、僕も働き始めて、現場に入ってから一年が経ちました。いろいろと知見がたまったので、自宅で開発環境を整えながら、その知見をまとめたいなーと思い始めました。また、今の仕事では使っていないが、重要な技術あたりも使いたいので、そのあたりのことをいい感じにブログに連載してお茶を濁して行きたいです。乞うご期待?

EmacsからSlack分報に投稿するやつについてメモ

元記事

これを読んで試しに導入してみようかと思いました

niku.name

元のコード

元コードはこんな感じなのですが、json.elが必要だったり、アイコンがデフォルトだったりしたのでちょっと変更します。 incoming webhookのURLについてはここでは説明しません。ぐぐって :bow:

(defun times-niku (s)
  "Post to #times-niku channel on the slack"
  (interactive "sText:")
  (with-temp-buffer
    (let ((url                       "https://hooks.slack.com/services/path/to/your/incoming/webhook")
          (url-request-method        "POST")
          (url-request-extra-headers `(("Content-Type" . "application/x-www-form-urlencoded")))
          (url-request-data          (format "payload={\"text\": %s}" (json-encode-string s)))
          (mycallback                (lambda (x) (message (format "%s" x)))))
      (url-retrieve url mycallback))))

(define-key global-map (kbd "C-c C-M-p") 'times-niku)

el-getを使ってjson.elを導入

先程も言ったように、このコードで使われている json-encode-stringjson.elのコードだと思われるため、これを導入します。 el-getの使い方もここでは説明しません。各々自分の使っているパッケージ管理プラグイン等で入れて下さい。

(el-get-bundle thorstadt/json.el)
(require 'json)

(defun times-niku (s)
  "Post to #times-niku channel on the slack"
  (interactive "sText:")
  (with-temp-buffer
    (let ((url                       "https://hooks.slack.com/services/path/to/your/incoming/webhook")
      (url-request-method        "POST")
      (url-request-extra-headers `(("Content-Type" . "application/x-www-form-urlencoded")))
          (url-request-data          (format "payload={\"text\": %s}" (json-encode-string s)))
      (mycallback                (lambda (x) (message (format "%s" x)))))
      (url-retrieve url mycallback))))

(define-key global-map (kbd "C-c C-M-p") 'times-niku)

アイコンとユーザー名を指定

アイコンとユーザー名を指定します

(el-get-bundle thorstadt/json.el)
(require 'json)

(defun times-niku (s)
  "Post to #times-niku channel on the slack"
  (interactive "sText:")
  (with-temp-buffer
    (let ((url                       "https://hooks.slack.com/services/path/to/your/incoming/webhook")
      (url-request-method        "POST")
      (url-request-extra-headers `(("Content-Type" . "application/x-www-form-urlencoded")))
      (url-request-data          (format "payload={\"text\": %s, \"username\": \"utakata_emacs\", \"icon_emoji\": \":y_oshiki_utakata:\"}" (json-encode-string s)))
      (mycallback                (lambda (x) (message (format "%s" x)))))
      (url-retrieve url mycallback))))

(define-key global-map (kbd "C-c C-M-p") 'times-niku)

関数名とか整理

最後に関数名とかを整理して終わり

(el-get-bundle thorstadt/json.el)
(require 'json)
(defun slack-times (s)
  "Post to times channel on the slack."
  (interactive "sText:")
  (with-temp-buffer
    (let ((url                       "https://hooks.slack.com/services/path/to/your/incoming/webhook")
      (url-request-method        "POST")
      (url-request-extra-headers `(("Content-Type" . "application/x-www-form-urlencoded")))
      (url-request-data          (format "payload={\"text\": %s, \"username\": \"utakata_emacs\", \"icon_emoji\": \":y_oshiki_utakata:\"}" (json-encode-string s)))
      (mycallback                (lambda (x) (message (format "%s" x)))))
      (url-retrieve url mycallback))))

(define-key global-map (kbd "C-c C-M-p") 'slack-times)

おわり

ただの日記

最近休日は外に遊びに行くことが多かった。さらにこの3連休は雨が降るらしいので、久々にネトゲなどをして引きこもることにした。

9/17(土)

  • 3日分の食材を買った
  • ToS(Tree of Savior、ネトゲ)してると何故かRealtekのオーディオソフトが死ぬ。とりあえずソフトウェアのバージョン上げたら落ちなくなった...気がする。
  • ヒトカラ専門店のワンカラに行こうと思ったが、ヘッドフォンを会社に置きっぱなしだったので断念
  • 結局ずっとネトゲしてた

9/18(日)

  • 実はちょっと外に出たが特に何もせず帰った
  • 上野マルイを見て回った
  • アメ横らへんにあるいつもよく行く店に行った。相変わらず面白いものがいっぱい売ってたけど特になにも買わなかった
    • ここで買ったナス型のまな板でナスを切ったのは今日が初めてだった

9/19(月)

  • いろはす瀬戸内れもんはおいしい。しかし、「瀬戸内産れもんエキス入り 無果汁」とはどういうことだろう。果汁の定義とは。
  • 休みが多いが特に予定がないので、Netflixを見始めた。
    • とりあえず言の葉の庭を見た。流石にヒロイン年上すぎやろ。
    • 秒速も見たい
    • さかさまのパテマもあったので見たい
    • しかしイヴの時間がないのはなぜなんだ。もっと吉浦康裕作品プリーズ
  • 久々に手元映しながらToS生放送したが、カメラのバッテリーは3時間くらいが限界

Tips

  • 一人暮らしで食材の買い出しにいくといつも、『花のズボラ飯』を思い出すが、花のズボラ飯はズボラ飯といいつつ意外とズボラでない
  • 五郎丸選手がCMしているニチレイの焼きおにぎりが食べたい