Category Archives: 未分類

gin test

package app

import (
    "html/template"
    "log"
    "net/http"

    "github.com/gin-gonic/gin"
)

func init() {
    r := gin.Default()
    r.GET("/", newHandler)
    r.POST("/create", createHandler)
    http.Handle("/", r)
}

func newHandler(c *gin.Context) {
    t, err := template.ParseFiles("form.tmpl")
    if err != nil {
        log.Print("error", err)
    }
    t.ExecuteTemplate(c.Writer, "form", nil)
}

func createHandler(c *gin.Context) {
    key := "name"
    if str, ok := c.GetPostForm(key); ok { // GetPostFormがあれば存在しないKeyの場合はエラーハンドリングできる
        c.String(200, "%s created!", str)
    } else {
        c.String(200, "%sフィールドがありません", key)
    }
}

func testHandler(str string) func(*gin.Context) {
    return func(c *gin.Context) {
        c.String(200, str)
    }
}

Github

https://github.com/YoheiMiyamoto/gin-test

interface cast nilのケース

nilでない場合

func main() {
    var i myIf
    u := User{Name: "hello"}
    i = u
    if v, ok := i.(User); ok {
        log.Print(v.Name) // helloと出力される
    } else {
        log.Print(nil)
    }
}

nilの場合

func main() {
    var i myIf // i == nil の状態
    if v, ok := i.(User); ok {
        log.Print(v.Name)
    } else {
        log.Print("nil!") // nil! と出力される
    }
}

select2 ajax カスタマイズ(kintone js api使用)

古い書き方
select boxを正しく選択できない不具合あり

function appendSelectContent(event){
  var $select = newSelectContent();
  var $div = $('<div>');
  $div.append($select);
  kintone.app.record.getSpaceElement('selectField').append($div[0])
  $select.select2({
    placeholder: '選択してください',
    width: '200px',
    minimumInputLength: 1,
    query: function (query) {
      var queryStr = "name like \"" + query.term + "\""
      getRecords(99, queryStr, function(resp){
        var data = {results: []};
        $.each(resp.records, function(i,v){
          data.results.push({id: i+1, text: v.name.value})
        });
        query.callback(data);
      })
    }
  });
  return event
}

新しい書き方

function appendSelectContent(event){
  var $select = newSelectContent();
  var $div = $('<div>');
  $div.append($select);
  kintone.app.record.getSpaceElement('selectField').append($div[0])

  $.fn.select2.amd.define('select2/data/customAdapter',[
          'select2/data/array',
          'select2/utils'
      ],
      function (ArrayAdapter, Utils) {
          function CustomDataAdapter ($element, options) {
              CustomDataAdapter.__super__.constructor.call(this, $element, options);
          }
          Utils.Extend(CustomDataAdapter, ArrayAdapter);
          CustomDataAdapter.prototype.query = function (params, callback) {
            var data = {results: []};
            var query = "name like \"" + params.term + "\""
            getRecords(99, query, function(resp){
              $.each(resp.records, function(i,v){
                data.results.push({id: i+1, text: v.name.value})
              });
              callback(data);
            })
          };
          return CustomDataAdapter;
      }
  );
  var customAdapter=$.fn.select2.amd.require('select2/data/customAdapter');
  $select.select2({
    placeholder: '選択してください',
    width: '200px',
    minimumInputLength: 1,
    dataAdapter: customAdapter
  });
  return event
}

参考

http://select2.github.io/select2/

正規表現 or条件

// どちらのstrにも合致する
str := "111,111,111,111"
// str := "a1234567891,111,111,111"

if ok, _ := regexp.MatchString("(a\\d{10}|\\d+),\\d+,\\d+,\\d+", str); ok {
    log.Print("ok")
}

phantomjs ダウンロード linux

旧バージョンの退避

mv /usr/local/bin/phantomjs /usr/local/bin/phantomjs-1.9.7
ln -s /usr/local/bin/phantomjs-1.9.7 /usr/local/bin/phantomjs
phantomjs -v # 1.9.7と表示される

新バージョンインストール

cd /tmp
wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
bzip2 -dc phantomjs-2.1.1-linux-x86_64.tar.bz2 | tar xvf -
cp -a phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs-2.1.1
ln -sf /usr/local/bin/phantomjs-2.1.1 /usr/local/bin/phantomjs
phantomjs -v # 2.1.1と表示される

参考

http://qiita.com/takuji1129/items/e22ee97c7d7e77d39a96

jira-slack連携

rails

root設定

post '/callback' => 'webhook#callback'

callbackコントローラー

Heroku

commitしてからfixie設定? 必要ないかも

heroku addons:create fixie:tricycle

jira

webhook作成

  • トリガー
    コメント作成時にチェック

  • webhookURL
    herokuのURLを記入