basyura's blog

あしたになったらほんきだす。

改訂2版 みんなのGo言語

改訂2版 みんなのGo言語

改訂2版 みんなのGo言語

  • 作者: 松木雅幸,mattn,藤原俊一郎,中島大一,上田拓也,牧大輔,鈴木健太
  • 出版社/メーカー: 技術評論社
  • 発売日: 2019/08/01
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

表紙のガマガエルに乗ってるのとか火を吹いてるのとか、めちゃくちゃいい (欲しい)。

テキスト処理がほとんどだけどようやくザクザク書けるようになってきた。今までは時間が惜しい場合は Ruby で書いていたのだけど、それもだいたい Go を使うようになってきた。ほんとにサクッと試したい場合に Ruby を使うことはままある。

GOPATH の中で作業するのが最初は苦痛だったけど、ディレクトリをきちんと切って書いてると整理されていく感じが気持ちよくなってきた。ディレクトリ(パッケージ) が増えていくと使い回しが効くようになるので自分の武器が増えていくようでよい。ここは Ruby だろうがなんだろうが変わらない気がするけど。エディタ (Vim) があれば補完ができて宣言に楽に飛ぶこともできて、だいたいのことはコンパイルしたら間違いが分かる手軽さが相乗効果で良く感じるのかなと思う。

「こういう書き方してちゃんと動くのだろうか?」と確認しながらがまだまだ多いのだけどなんとかなってる。

先駆者が「これはいいぞ」って言ってるのをキャッチしてから数年後にその後を辿ることがほとんどなので書籍が出たりブログエントリがあったりすると非常にありがたい。

Karabiner-Elements : Vivaldi のアドレスバーにいるときに Ctrl+P or Ctrl+N で上下移動したい

windows は仕方ないとしても、mac ならできていいと思うんだけどなぁ。
アドレスバーにいるかどうかの判断はできないから vivaldi にいるとき常にの設定になっちゃうけど。

{
  "title": "Vivaldi.app",
  "rules": [
    {
      "description": "Vivaldi misc",
      "manipulators": [
        {
          "type": "basic",
          "from": { "key_code": "n", "modifiers": { "mandatory": [ "control" ]} },
          "to": [ { "key_code": "down_arrow"} ],
          "conditions": [ { "type": "frontmost_application_if", "bundle_identifiers": [ "^com\\.vivaldi\\.Vivaldi$" ] } ]
        },
        {
          "type": "basic",
          "from": { "key_code": "p", "modifiers": { "mandatory": [ "control" ]} },
          "to": [ { "key_code": "up_arrow"} ],
          "conditions": [ { "type": "frontmost_application_if", "bundle_identifiers": [ "^com\\.vivaldi\\.Vivaldi$" ] } ]
        }
      ]
    }
  ]
}

El Capitan → Mojave

Apple MacBook Pro (13インチ, 2.3GHzデュアルコアi5プロセッサ, 256GB) - スペースグレイ

Apple MacBook Pro (13インチ, 2.3GHzデュアルコアi5プロセッサ, 256GB) - スペースグレイ

OS アップデートで環境が壊れるとか何かしらの対応をするのがだるいのと、アップデートしなくても困ってないのとがあいまってずっと El Capitan だったのだけど夏休みで時間あるしで重い腰を上げた。

  • karabiner が死んだ

    • karabiner-elements を入れ直した
    • macvim (not kaoriya) を使い始めたので escape 時に ime も off にする設定を参考にさせてもらった
    • 設定方法がだいぶ変わっているのであとで調べる
  • キーリピートが激しく遅くなっていたので変更した

  • ディスプレイの明るさ自動調節やキーボードの明るさがオンになっていたのでオフった
  • グーグルIMEのリアルタイム変換の挙動が変わった。windows 端末だけかと思ってたのだけど os アップデートのタイミングで変わった。具体的には設定のサジェストタブにある「入力履歴からのサジェスト自動表示を有効にする」と「システム辞書からのサジェスト自動表示を有効にする」のどちらかにチェックを入れないといけなくなった。これまでは両方のチェックを外してても入力した文字列を変換しててくれていたのだけど、どちらかにチェックすると予測変換された内容が混ざってしまって余計な入力結果になってしまう。入力した結果をそのまま変換してほしいので前の挙動のほうがうれしいんだけどな・・・長らくそうだったし。特に短い単語を入れた場合に長い正式名称だったりがでてきてそこまではいらないんだけどなとなってしまう。基本的に出てきた変換候補をそのまま Ctrl+Enter で確定してしまいたいのでちょっとつらい。とりあえず「システム辞書からのサジェスト自動表示を有効にする」のみにチェックを入れて使ってる。
  • フルスクリーンモード時のウインドウ切り替えが、視覚効果を減らすことによってスムーズになった。けどまだ引っかかりを感じる。ワンテンポ遅い。ワンテンポの遅さによって考えてたことを忘れそう。もうちょっと速くならないかなぁ。とか触ってたらフルスクリーンだと dock が出てこないことに今更ながら気がついたので今まで通り使わない気がする。
  • Night Shift モードありがたい。一番うれしい。iPhone で1日中 ON にしてるし Mac も ON にする。今までは Shades を使っていたけど動かなくなってた。デフォルトで組み込まれてるほうが嬉しいのは確か。elcapitan までは地味に cpu を食ってることがあったのが気になってた。けど、これがなくては眩しくて Mac への乗り換えできなかった可能性もあるので感謝。
  • ダークモード良さそうかと一瞬思ったけど、見にくくてすぐ戻した。明るさに弱いので基本的にディスプレイをかなり暗くしているのもあってライトモードの方が見やすい。ダークモードだとターミナルのタブの切れ目が分かりづらいし、各アプリの背景色が合わせて黒くなってたりして逆に見づらかった。
  • メニューバーと Dock は黒くしておきたい。↓でできた。
  • brew update したらなんかエラーでたけど今は困ってないので放置
  • vmware fusion に入れてる windows10 はとりあえず動いた。Mojave でパフォーマンスが悪化するのを修正した最新版が出たらしいけど今はいいや。

Karabiner で設定してた各アプリのキー設定を Karabiner-Elements に移植するのをさっさとやっちゃいたいところ。

で、こんなことをしてたら vimconf 2019 の Early Bird チケット買いそびれた。

golang : redmine のチケットをゲットする

最近は調整とエクセルのメンテばかりでやさぐれているので隙を見ては go の勉強がてらエクセルを生成してみたりチケットの内容をエクセルに反映してみたりしてる。 redmine のチケットのステータスを取りたくてググってみたのだけどサクッと引っかからなかったので書いてみたら案外いけた。未だに作法がよく分かってない。

package main

import (
    "encoding/json"
    "errors"
    "fmt"
    "io/ioutil"
    "net/http"
    "strconv"
)

type Issue struct {
    Id      int    `json:"id"`
    Subject string `json:"subject"`
    Status  Status `json:"status"`
}

type Status struct {
    Id   int    `json:"id"`
    Name string `json:"name"`
}

func main() {

    issue, err := fetch(1)
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Printf("#%d %s\n",issue.Id, issue.Subject)
    fmt.Printf("%s (%d)\n", issue.Status.Name, issue.Status.Id)
}

func fetch(id int) (*Issue, error) {
    url := "https://www.redmine.org/issues/" + strconv.Itoa(id) + ".json"
    res, err := http.Get(url)

    if err != nil {
        return nil, err
    }

    bytes, err := ioutil.ReadAll(res.Body)
    if err != nil {
        return nil, err
    }

    dict := map[string]*Issue{}
    if err := json.Unmarshal(bytes, &dict); err != nil {
        return nil, err
    }

    issue, ok := dict["issue"]
    if !ok {
        return nil, errors.New("no ticket")
    }

    return issue, nil
}

Dropbox Plus

12,960/年 → 14,400 (税込 15,552) /年

2TB とスマートシンクは魅力的ではあるけど、100G ぐらいしか使ってないので割高感がすごい。前に web から買うと安いとかで 10000円切ってた気がしたんだが。

ほとんどが画像で、購入した音楽データ (m4a) を念のためにバックアップしてるのが次に多い。

  • 画像 → iColud 200GB 400円/月
  • 音楽ファイル → Youtube Premium に入ってるし諦めるでもいい。ここ数年購入してる音楽ファイルは iTunes 経由で買ってるからバックアップあるようなもんだし。TSUTAYA に最後に行ったのがいつなのか思い出せないレベルだし。
  • Dropbox は basic にして突っ込めるファイルだけ管理。

よく見ると、追加で 9.85 GB を獲得済みだったので 12G もあればメモや何かしらのファイルであれば困らなさそう。

契約が年末までなので忘れずに考えたい。

vivaldi - アドレスバーのドメイン展開を無効にする設定が実装された

個人的に全く必要ないアドレスバーでのドメイン展開機能。 Ctrl + Enter.com など (設定で可能だけど固定) が補完されて開く機能。

僕は Google IME を使っていて、かつ Ctrl + Enter で推測変換を確定するようにキーを割り当てているので相性が悪かった。 これを無効にするリクエストを 2 年前に出していた。

提案してみます、の回答がもらえたのもあって自分で気をつければいいやと思って放置してたら 2 年経ってた。 やっぱり一日に何回か誤爆するので再度プッシュしてみたところめでたく v2.5 で実装された。ありがたい。

f:id:basyura:20190511233305p:plain:w400

アドレスバーの設定にある接尾字を空にしておくと Ctrl+Enter をしてもドメイン展開が発動しなくなる。

めでたい。

Firefox から移ってどうなることかと思ったけど、vivaldi + cVim で快適にすごしている (けどやっぱり Firefox + keysnail の方が良かったなぁ)。

curel

キュレル 頭皮保湿ローション 120ml

キュレル 頭皮保湿ローション 120ml

頭皮がかゆいことが多くなったなと試しに使ってみたら翌日から気にならなくなった。

キュレル シャンプー ポンプ 420ml(赤ちゃんにも使えます)

キュレル シャンプー ポンプ 420ml(赤ちゃんにも使えます)

キュレル コンディショナー ポンプ 420ml

キュレル コンディショナー ポンプ 420ml

だったらとシャンプーとコンディショナーをそろえてみた。 頭皮保湿ローション使わなくてよくなった。

キュレル ボディウォッシュ ポンプ 420ml(赤ちゃんにも使えます)

キュレル ボディウォッシュ ポンプ 420ml(赤ちゃんにも使えます)

キュレル 泡洗顔料 150ml

キュレル 泡洗顔料 150ml

だったらと一式揃えて数ヶ月。もっと早く使っとけばよかった。