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 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");
    }
}

VSCodeでtslint

VSCode

tslintの拡張機能をインストール

tslint | Visual Studio Marketplace

設定ファイルはDefault Settingsに作られている。
f:id:howdy39:20160314215849p:plain

ファイルが空文字になっているけどデフォルトはtslint.json使う模様。

tslint.json

プロジェクト直下にtslint.jsonを作る
内容は以下のページ参照

https://github.com/palantir/tslint/blob/master/tslint.json

結果

f:id:howdy39:20160314220052p:plain いろいろ怒られるようになりました。。 文字列ダブルクォートが標準なんですね。。知らんかった。

Webpack + TypeScriptのTS2304: Cannot find name 'require'エラーの解決法

Webpackでモジュール読み込むときにrequire使いますがjsからなら問題はないですがTypeScriptからだとコンパイルエラーになります。
指定方法がTypeScript上おかしいのでimport文でもだめだと思われます。

require('jade!./app.jade')();
// ERROR in ./src/ts/components/app/app.ts
// (14,25): error TS2304: Cannot find name 'require'.

その場合、declare文を記載してrequireという関数があると認識させればOKです。 requireのあるファイル全てに書くのはあれなので共通のd.ts作ってそこをreference pathで指定です。

declare function require(string): any;

参考サイト

github.com