Node.jsの管理をhomebrewからnodebrewに変更
npmでglobalにインストールしたtypescriptとbowerを削除。
% npm uninstall -g bower % npm uninstall -g typescript
npmを削除
% npm uninstall -g npm
Node.jsを削除
brew uninstall node
nodebrewをインストール
% curl -L git.io/nodebrew | perl - setup
.zshrcにPATHを追加
export PATH=$HOME/.nodebrew/current/bin:$PATH
読み込み直し
% source ~/.zshrc
Node.jsをインストール
% nodebrew install stable
標準で使用するNode.jsのバージョン指定
% nodebrew use stable
bowerとtypescriptをグローバルにインストール
% npm install -g bower % npm install -g typescript
参考
TypeScriptリファレンス Ver.1.0対応のサンプルコードで--noImplicitAnyをつけて(略
備忘。TypeScriptリファレンス Ver.1.0対応のコールシグネチャのリスト6.56で--noImplicitAnyをつけてる場合。
function db(operation: string, key: string, value?: any): any { if (!db.data) { db.data = {}; } var data = db.data; var oldValue: any; //追加 if (operation === "update") { oldValue = data[key]; data[key] = value; return oldValue; } else if (operation === "read") { return data[key]; } } module db { export var data: any; export function update(key: string, value: any) { //追加 return db("update", key, value); } export function read(key: string) { //追加 return db("read",key); } } db.update("str", "string"); console.log(db.read("str")); db("update", "str", "文字列"); console.log(db("read", "str"));
TypeScriptリファレンス Ver1.0対応 4-4 Enumのサンプルコードで--noiImplicitAnyをつけてるとコンパイルエラー
TypeScriptリファレンス Ver.1.0対応の4-4 Enumのサンプルコードでtscに--noImplicitAnyをつけてるとコンパイルエラー。
enum Suit { Spade, Heart, Club, Diamond } var s1: Suit = Suit.Spade; var s2: number = s1; var s3: string = Suit[s2]; var s4: number = Suit[s3]; //↑ error TS7017: Index signature of object type implicitly has an 'any' type. console.log(s1, s2, s3, s4);
通るように。
var s4: number = Suit.Spade; //又は var s4: number = Suit["Spade"];
備忘録。enumが吐き出すjsのメモ
var Suit; (function (Suit) { Suit[Suit["Spade"] = 0] = "Spade"; Suit[Suit["Heart"] = 1] = "Heart"; Suit[Suit["Club"] = 2] = "Club"; Suit[Suit["Diamond"] = 3] = "Diamond"; })(Suit || (Suit = {})); //なのでSuitはこうなる。 {0: "Spade", 1: "Heart", 2: "Club", 3: "Diamond", Spade: 0, Heart: 1, Club: 2, Diamond: 3}
WebStormでTypeScript開発時に"Accessors are only when targeting EcmaScript5 and higher."とコンパイルエラー
アクセサ書いたらコンパイルエラーに。
error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
アクセサはECMAScript 5のObject.definePropertyを使ってるからと。
Preferences -> Project Settings -> File Watchersでtypescriptを選んで編集。
--target ES5をArgumentsに追加でOK。
これだと、新しいプロジェクトごとにFile Watcherに設定しないといけないからグローバルな設定が欲しいなあ。
Template Project SettingsにはFile Watcherの項目存在しないから、多分グローバルな設定出来ないと思うんだけど。
WebStormでTypeScript開発時にtscに--noImplicitAnyオプションを付ける
Preferences -> Project Settings -> File Watchers
TypeScriptを選んで編集
Argumentsに
--noImplicitAnyを追加
暗黙的なanyをコンパイルエラーにしてくれるようになったか確認。
function hello(word) { return"Hello, " + word; }
OK.
werckerでS3に自動でデプロイしていた静的サイトをjekyllからmiddlemanに変更した
先日書いたこれですが、jekyllからmiddlemanに変更しました。
一緒に作業する非プログラマな方にSlimを見せてみたところ、慣れれば大丈夫そうとの返事をいただいたので 、テンプレートエンジンもLiquidからSlimに変更。
Liquidといっても部分テンプレートの読み込みぐらいしか使っておらず、実質素のHTMLみたいなもので、ページも5ページ程度だったので、Slimへの変更はHTML2slimを使わせてもらって、うまく変換出来なかったところだけ手直しですみました。
werckerは、Deploy targetは同じなので、wercker.ymlをmiddlemanに合わせて修正しただけで終了。
box: wercker/ruby build: steps: - bundle-install - script: name: generate site code: bundle exec middleman build --verbose deploy: steps: - s3sync: key_id: $KEY key_secret: $SECRET bucket_url: $URL source_dir: build/
code部をbundlen exec jekyll...からbundle exec middleman...に変更と、deployのsource_dirを_site/からbuild/に変更。
これで問題なくdeploy出来ました。
Amazon Route 53でのCNAMEの設定をミスっていてスマートフォンからウェブサイトにアクセスできなくなっていた
備忘録として恥を晒しておきます。
自サイトにBootstrap 3を入れてスマートフォン対応しました。
で、おもむろにAndroidで確認しようとしたらWeb Page Not Availableとでて、あれ?スマートフォンから名前を引けてない?
katahirado.jpでアクセスすると、リダイレクトまでは機能していてどうもwww.katahirado.jpが引けていないっぽい。
Amazon Route 53の管理コンソールを確認してみると・・・
おっと・・・。CNAMEレコードに、http://プロトコルがついてしまっていました。
登録時にChromeのアドレスバーからコピーしてやってもうたしてしまったようです。
というわけで、http://を削って登録しなおして無事アクセス出来るようになりました。
手元のmacでは問題なく見ることができていたので気づいてなかったです。
ちゃんと検証しないとダメですね。