howdylikes

Google Developersってわかりづらいよね

VSCodeでGoの環境を構築

Goの勉強するためにVSCodeを選択したのだが手順が?だったのでメモ ※根本的に間違えている可能性あり。

Go Extension

ファイル保存時にで自動でgo fmtがかかったりする模様 あとコード補完とか

GoのExtensionをVSCodeからインストール

settings.jsonにgopathを設定

"go.gopath": "/Users/howdy/VscodeProjects/studygo"

エラーが出まくるのでインストール

go get -u github.com/golang/lint/golint
go get -u github.com/nsf/gocode
go get -u github.com/rogpeppe/godef
go get -u sourcegraph.com/sqs/goreturns
go get -u github.com/newhook/go-symbols

Shellのインストール

コンソールからcodeで起動できるようになる

ShellのExtensionをVSCodeからインストール

AngularJS Uncaught TypeError: module is not a function

karmaでpreprocessorsにwebpackを指定してテストやっている時にでたエラー

beforeEach(module('myApp')); // エラー
beforeEach(angular.mock.module('myApp'));

参考サイト

stackoverflow.com

AngularJS angular-mocks

karmaでangularが動かねぇなぁとおもってたらangular-mocksじゃなくてangular-mockになってた・・・

https://www.npmjs.com/package/angular-mock

11 downloads in the last day
142 downloads in the last week
365 downloads in the last month

なおnpmのダウンロードがそれなりにあるのでそれなりに同じ事象に陥った人はいるだろうな・・・
これ消してくれないのかなぁ

JavaScriptでArrayオブジェクトの文字列結合の速度検証

よく見るコードだとjoin使っているのが多いですがパフォーマンス的にはどうなんだ?というのを試してみる。
ggっても出てくると思うけど勉強がてらということで。

前提条件

検証パターンは以下の5つでそれぞれ100万回

  • for文使って+演算子
  • Array.forEachで+演算子
  • Array.reduceで+演算子
  • String.concat
  • Array.join

順番は実装が嫌?な順

サンプルコード

結果

type 速度
for 157.259ms
Array.forEach 215.781ms
Array.reduce 163.422ms
String.concat 265.373ms
Array.join 713.505ms

やっぱりforが速いですね、ただこんな実装絶対したくない。
このレベルでfunctionとか作りたくないですしね。
ワンライナーで書きたいので、基本はArray.joinでちょっと処理が重なるときはString.concatぐらいがいいのかなぁ。

余談

jsfiddleと比べてChromeのデベロッパーコンソール上で実行すると異様にconcatが遅くなるのはなんででしょうかね。

Tslint classのメンバ変数はpublicを先にかく

tslintでこんなエラーが Declaration of public static member variable not allowed to appear after declaration of private instance member variable

これはダメで

class AppCtrl {
    private users;
    public static $inject = ["$q"];
    constructor(private $q) {
        console.log("AppCtrl");
    }
}

こうしろってことですな。

class AppCtrl {
    public static $inject = ["$q"];
    private users;
   constructor(private $q) {
        console.log("AppCtrl");
    }
}