読者です 読者をやめる 読者になる 読者になる

$shibayu36->blog;

プログラミングの話や自分の考えを色々と書いています。特にperl、emacsや読んだ本の話が多いです。

ある文字列は含まれているけど、ある文字列は含まれていないファイルを探すワンライナー

tech

ちょっと便利だったので自分用にメモ。

  • git grepにはgrepに引っかかったファイル名を出す --name-onlyオプションがある
  • またgit grepでは逆にgrepに引っかからなかったファイル名を出す --files-without-matchオプションがある

これを利用すると以下のコマンドで、ある文字は含まれているけど、ある文字は含まれていないファイルをワンライナーで探せる。

例えば「ほげほげ」は含まれているファイル中で、「ふがふが」が含まれていないものを探すには以下のようにする。

$ git grep --name-only -e 'ほげほげ' | xargs git grep --files-without-match -e 'ふがふが'


適当にやっただけなので、他にいい方法がありそうではある。

npmモジュールをTypeScriptで利用する(tsdによる型ファイル管理)

tech

前の記事で、TypeScriptでフロントエンドの実装をし、ブラウザ用にコンパイルする事ができるようになった。

blog.shibayu36.org

今のままではnpmで入れたjQueryやlodashなどをTypeScriptから利用することができない。TypeScriptでJSのモジュールを利用するにはTypeScriptの型定義ファイルを使う必要があるためである。

現在npmのモジュールの型定義ファイルはDefinitelyTyped というgithubのrepositoryにまとまっている。必要な物はそこから取ってくればよい。


今回はこのrepositoryからの型定義ファイルの取得や管理の機能を備えているtsd を利用してみたので、やってみたことをメモ。

やりたいこと

TypeScriptで以下のようにjqueryとlodashを利用したい。

"use strict";

import * as $ from "jquery";
import * as _ from "lodash";

$().ready(() => {
    alert(_.camelCase('Foo Bar'));
});

実現のためにやること

  • tsdの設定をする
  • tsdでjqueryとlodashの型定義ファイルを取得する
  • TypeScriptからjqueryとlodashを利用する

tsdの設定をする

まずはtsdのインストール。

$ npm install tsd --save-dev


続いてセットアップを行う。

$ node_modules/.bin/tsd init
-> written tsd.json
-> written typings/tsd.d.ts


ここでtsd.jsonとtypings/tsd.d.tsというファイルが出来た。tsd.jsonが設定ファイルとなっているので、これを編集すれば設定を変更できる。

tsd.json

{
  "version": "v4",
  "repo": "borisyankov/DefinitelyTyped",
  "ref": "master",
  "path": "src/ts/typings/vendor",
  "bundle": "src/ts/typings/tsd.d.ts"
}

型定義ファイルを入れておくディレクトリ(path)とインストールした型定義ファイルへのreferenceがまとまっているファイル名(bundle)は好みに合わせて変えると良さそう。上の設定は自分の好みに変更している。

tsdでjqueryとlodashの型定義ファイルを取得する

以下のコマンドを実行する。

node_modules/.bin/tsd install jquery --save
node_modules/.bin/tsd install lodash --save

これで設定ファイルで指定したpath以下に型定義ファイルがダウンロードされる。

$ tree src/ts/typings/vendor
src/ts/typings/vendor
├── jquery
│   └── jquery.d.ts
└── lodash
    └── lodash.d.ts

また、設定ファイルのbundleで指定されたファイルに、ダウンロードした型定義ファイルへのreferenceがまとまっている。

$ cat src/ts/typings/tsd.d.ts
/// <reference path="vendor/jquery/jquery.d.ts" />
/// <reference path="vendor/lodash/lodash.d.ts" />

src/ts/typings/tsd.d.ts(bundleの設定で指定したファイル)にreferenceがまとまっているので、自分でTypeScriptを書くときはこのファイルへreferenceするだけで良い。

TypeScriptからjqueryとlodashを利用する

ここまでで型定義ファイルの準備は出来たので、jqueryとlodashの利用はできるようになっている。

まずはnpmでインストールする。

npm install jquery --save-dev
npm install lodash --save-dev


続いてsrc/ts/app.ts辺りにコードを書く。このファイルからtsd.d.tsに対してreferenceをしておくのがポイント。

/// <reference path="./typings/tsd.d.ts" />

"use strict";

import * as $ from "jquery";
import * as _ from "lodash";

$().ready(() => {
    alert(_.camelCase('Foo Bar'));
});


あとは以前書いた http://blog.shibayu36.org/entry/2016/01/07/120000 のbuild-tsのようなタスクを用意して、実行すれば正しくコンパイルできる。

$ ./node_modules/.bin/gulp build-ts

このタスクではstatic/js/app.jsに出力するようになっていたので正しく出力出来た。行数が多いのはjqueryやlodashのコードが全て入っているためである。

$ wc -l static/js/app.js
   21577 static/js/app.js

「がん保険を疑え!」を読んだ

「生命保険のウラ側」を読んだ - $shibayu36->blog; に引き続き、がん保険についても知りたいので読んだ。前回の本が分かりやすかったので引き続き同じ著者の本を読んだ。

がん保険を疑え!

がん保険を疑え!

この本はがん保険について、保険会社が公開している情報に基づいて著者がある程度の推測を交えて実態を教えてくれる。「推測」となっているのは、現時点では保険会社が保険に関して詳細の情報をあまり公開していないため、推測にならざるをえないという事情がある。他にもがん保険に入る時の選定方法について解説し、またその方法で選んだ現時点でのおすすめがん保険も教えてくれる。

前の本も分かりやすかったけど今回の本も分かりやすかった。また分からない部分は分からないとはっきり書かれているのも印象が良かった。


この本の中で一番良かったのはがん治療費に対してどのくらいの目安を持てばいいかというのを教えてくれる所。実際に今後のことを考えるなら、まずがんが起こった時に支払う金額の目安を決めておくのが前提となる。癌になった時にこのくらいの金額がかかるというめどが立っていれば、その金額が自分の家計にダメージを与えないなら保険に入らないし、ダメージを与えるなら保険やその他の策を検討するみたいになる。金額にめどがつかないとそれすらも出来ないので、この章に書かれていることは非常に参考になった。


保険について3冊くらい本を読んで前提知識をためることが出来たので、ネット上の記事でもだいぶ自分で妥当性の基準を持って読むことができるようになった。後田亨さんの本は非常に分かりやすいので保険を考えたいときはまず読んでみると良さそう。


これまでの記事