タグ

ブックマーク / m-hiyama.hatenablog.com (19)

  • gulp問題ひきずり:ウォッチがまたおバカ過ぎる - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「最近のビルドツールって何なの?」において、gulpは「腕力はあるが知性を持たない」、ゴレライ的というかゴライアス的というか…、そんなツールだと述べました。二、三、後から思ったことがあるので追加します。 内容: プロジェクトは肥大しちゃうことがある ウォッチをいちいち手で書くのかよー OMakeと比較してみる ウォッチはこうでなきゃ じゃ、OMakeがいいのか? プロジェクトは肥大しちゃうことがある 「そもそも大した事はしないのでシンプルなツールgulpでも十分」ということなら、「そうですよね」と同意して話はオシマイです。でもね、gulpを使うプロジェクトが、ほんとに小さくて簡単なものなんでしょうか。 目の前に、10種のプログラミング言語が混じった2000ファイルのソースコード群がいきなり与えられたとき、「よしっ、gulpを使おう」とはならないと思うのですが、小さなプロジェクトが(良くも悪

    gulp問題ひきずり:ウォッチがまたおバカ過ぎる - 檜山正幸のキマイラ飼育記 (はてなBlog)
    teppeis
    teppeis 2015/05/15
    gulpfileだるいのは同意だけど、そこでTypeScriptを出すとgulpもmakeも微妙でtsc -wが正解みたいになっちゃうから話がややこしい
  • 最近のビルドツールって何なの? - 檜山正幸のキマイラ飼育記 (はてなBlog)

    TypeScriptでは、コンパイルが必要です。プログラムをブラウザーとNode.jsの両方で使おうとすると、さらに加工が必要です。ミニファイだの文書も作るだのすると、ちょっとしたビルドプロセスとなるので手作業では辛くなります。 今更Makeでもないよなー、と思い、最近のビルドツールを試してみました。 内容: 流行りすたりが激しすぎる gulpを使ってみる:こんなサンプル gulpのビルドスクリプト タスクランナーってのはビルドツールとは違うのか? ビルドツールは進化したのか 参考資料: 例題のファイルとコマンドの一覧 ソースファイル 追加の話: gulp問題ひきずり:ウォッチがまたおバカ過ぎる 流行りすたりが激しすぎる 「確かGruntってツールがあったよな」と、インストールと使い方を調べていると、やたらにgulpって単語が目立つんですよね。Gruntのライバルの新興勢力らしいです。 「

    最近のビルドツールって何なの? - 檜山正幸のキマイラ飼育記 (はてなBlog)
    teppeis
    teppeis 2015/05/12
    適材適所としか
  • TypeScriptと関手やモナドなど - 檜山正幸のキマイラ飼育記 (はてなBlog)

    2008年に書いた記事「CPS(継続渡し方式)変換をJavaScriptで説明してみるべ、ナーニ、たいしたことねーべよ」はCPSの説明にJavaScriptを使っています。しかし、JavaScriptでは型宣言や型総称(ジェネリックス)が使えないので、「未来のJavaScript」という最初の節で架空のJavaScript方言を定義しました。最近のAltJSのなかには、当時の「架空のJavaScript方言」の機能を実現したものがあります。そのなかでも、TypeScritは強力な型システムを持っています。2015年に現存するJavaScript風言語であるTypeScriptで、関手やモナドがうまく書けるかどうか探ってみます。 内容: 圏論とプログラミング言語 TypeScriptの型の書き方 お題はリストモナド モナドの乗法と単位、全体のまとまり 追記: TypeScriptに関する補足

    TypeScriptと関手やモナドなど - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • MongoDBの日時 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    MongoDBの日時(date型)は、UNIXエポックからのミリ秒だそうです。 http://docs.mongodb.org/manual/reference/bson-types/#date より: the number of milliseconds since the Unix epoch (Jan 1, 1970). ミリ秒はちょっと珍しいかな。UNIXエポックからの秒ならよく使われていて、たとえばこのはてなダイアリーのエントリーIDがそうです。この値は、コマンドラインから次のようにして確認することもできます。 $ date +%s 1381302493 表示された値(秒単位)に000を付ければMongoDBのdate型になります。mongoimportやmongoexportで使う特殊なJSON形式なら、次のように予約フィールド名$dataを使って日時を表すことができます。 {

    MongoDBの日時 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    teppeis
    teppeis 2013/10/09
    「ミリ秒はちょっと珍しいかな」JavaScript Date由来ですよ。
  • bitbucketはもう信用する気になれない - 檜山正幸のキマイラ飼育記 (はてなBlog)

    bitbucketは、分散バージョン管理システムのリポジトリと関連機能をホスティングしているサービス。Catyの開発にはずっとbitbucketを使ってきた。細かい不満はあるものの、「これはダメだ」というほどの問題点は感じていなかった。だが、最近の変更は酷い。それについては、既にKuwataさんが書いている。 http://return0.info/note/2012-10.html#id2012-10-10 http://return0.info/note/2012-10.html#id2012-10-19 Wikiの記法が、WikiCreoleからMarkdownに変わったのだが、互換性への配慮が一切されてない。ユーザーが今まで貯めこんできたデータが壊れる事態もヤムナシという判断らしいが、ヒド過ぎる。具体的に言うと、過去にWikiCreole記法で書いた(イシュートラッカーの)イシュー

    bitbucketはもう信用する気になれない - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • リビジョン(バージョン)管理システムに関して近ごろ思うこと - 檜山正幸のキマイラ飼育記 (はてなBlog)

    僕は、twitterできわめて少数の人しかフォローしてません。そんな僕のtwitterタイムラインでも、何度も言及されていたのが次のブログエントリー: いっしょに仕事をしたいプログラマ 5つの特徴 - たごもりすメモ 文は「なるほどね」という感想なんですが、コメント欄に驚くべき発言があります。 まずは文から紹介すると、「いっしょに仕事をしたいプログラマ 5つの特徴」が挙げられていて、それらの特徴で「欠けているところがあれば、少なくとも自分はその人といっしょに仕事をしたいとは思わないだろう」と。 5つの特徴のひとつに「人のコードにパッチを送る」(適切なパッチを書ける能力)があるのですが、それに対するコメントが: ミッションクリティカルなシステムでは自分が再利用しようとする既存コードにバグがあった場合は、まるっとコピーしたうえで修正したものを使うことが多いです。 「まるっとコピー」って、い

    リビジョン(バージョン)管理システムに関して近ごろ思うこと - 檜山正幸のキマイラ飼育記 (はてなBlog)
    teppeis
    teppeis 2011/06/11
    “ちゃんと教育しないでリビジョン管理システムを押し付けると変なことになっちゃうよ”
  • 3分間・URIテンプレート - 檜山正幸のキマイラ飼育記 (はてなBlog)

    最近、「URIテンプレート(URI Template)」という言葉を聞くことがあるので、次の仕様を読んでみました。 http://bitworking.org/projects/URI-Templates/spec/draft-gregorio-uritemplate-03.html 要するに次のようなもんです。 一種のテンプレート言語なので、テンプレートプロセッサにより展開される部分があります。その構文は次のとおり。 展開部分 ::= '{' 式 '}' 式が、変数束縛の環境のもとで評価されて文字列になります。テンプレートプロセッサは、展開部分内の式言語(expression languate)のインタプリタにもなっています。 その式言語の特徴は: データは、UNICODE文字列、またはUNICODE文字列のリスト。 変数にデータが束縛された環境を持つ。 変数に何も束縛されてないことを表

    3分間・URIテンプレート - 檜山正幸のキマイラ飼育記 (はてなBlog)
    teppeis
    teppeis 2011/05/26
    URI Template
  • Linux/Unixコマンドラインでちょっとした事をするには - 檜山正幸のキマイラ飼育記 (はてなBlog)

    まずは事の発端を説明します。 /etc/passwdファイルは、ユーザー情報が1行に1ユーザー分ずつ書かれたテキストファイルです。1行はコロンで区切られた7つのフィールドからなります。僕は、最初のフィールドであるユーザー名と、最後(7番目)のフィールドであるログインシェルだけを確認したかったのです。cat /etc/passwd として、直接目で見るだけ*1でもユーザー名とログインシェルを読み取れるのですが、ちょっと辛い。なるべく見やすく表示したいのです。 この課題を狂言回しにして、Linux/Unixコマンドラインでちょっとした事をやるための地味なコマンド達とシェル構文を紹介します。「スクリプト言語(例えばperl)を使えばいいじゃねえか」というご意見・ご指摘はゴモットモだと思いますが、今回は聞く耳持ちません。(スクリプト言語処理系ではない)コマンドとシェルの範囲内でのもっと良い方法は是

    Linux/Unixコマンドラインでちょっとした事をするには - 檜山正幸のキマイラ飼育記 (はてなBlog)
    teppeis
    teppeis 2010/12/26
    cut, tr
  • 檜山正幸のキマイラ飼育記 - プログラマのためのJavaScript (0)

    ジジイの手習いで、JavaScriptを勉強中でございます。その動機は「結局、ブラウザベースRIAかよ」のようなこと。非ブラウザベースのリッチクライアントへの期待を失ってしまったんですね。短期的・現実的な策としては、Ajax的な手法によるRIAなのかなぁ、という気分。ただし、「短期的」が“1年”と“5年”ではえらい違いです。今のところ僕には、「短期的」の実際の期間はわかりません。 僕のJavaScript調査の結果は、「初心者でも使えてプログラマでも困惑するJavaScript 」などに書きました。これらの続きとして、「プログラマのためのJavaScript (*)」というタイトルで書こうかと予定してます。あくまで予定、気まぐれでモノグサな僕のことだから、…… “プログラマのための”というのは、C, C++, Java, C#など“普通の”プログラミング言語にある程度慣れていることを前提に

    檜山正幸のキマイラ飼育記 - プログラマのためのJavaScript (0)
  • Webサービスを設計するための単純明快な方法 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「Webサイト」、「Webアプリケーション」、「Webサービス」、「Web API」などの用語の区別はそれほど明確でもないし、きっちり区別して使うのもめんどくさいので、ここでは、これらを総称してWebサービスと呼んでしまうことにします。 山陽平さんは、その著書『Webを支える技術』のなかで、人間がブラウザを使って利用するWebサイトとプログラム向けのWeb APIを区別すべきではないと述べています。この点は僕もまったく同感・同意です。 人間が相手となると、視覚的な効果や装飾、JavaScriptを使った操作性などにフォーカスが向けられ、Web APIとはまったく別物のような印象を与えます。しかし、各ページが持つべき情報やページ遷移の有向グラフ構造などは、相手が人間でもプログラムでも同じだと思うのです。そんな事情で、Webページの機能的/情報的なエッセンスを表現したHTML文書をクリーンH

    Webサービスを設計するための単純明快な方法 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • Webアプリケーションの入出力と状態遷移 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    入力値の集合がA、出力値の集合がBである関数fを、f:A→B と書きます。fは純関数です。関数が状態に影響を受けるときは、f:S×A→B となります。Sは状態空間です。単に直積の記号「×」では、状態と入力の区別が付かないので、セミコロンで区切ることにします。f:S;A→B 。セミコロンの左が状態ね。fが副作用を持つとき、つまり状態空間Sに作用するときは、f:S;A→S;B と書きます。S→S は状態遷移を表すことになります。 副作用があるかもしれない関数を、次のように分類すると便利です。1は単元集合(シングルトンセット、ユニットセット)です。 f:A→B 純関数 f:S;A→B バートランド・メイヤーの言葉で「問い合わせ」 f:S;A→S;1 バートランド・メイヤーの言葉で「コマンド」 f:S;A→S;B 一度にいろいろするメソッド 以下では、単元集合1は省略します。 メイヤーは、最後の「

    Webアプリケーションの入出力と状態遷移 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • マイクロフォーマット(microformats) vs. マイクロデータ(microdata) - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「マイクロフォーマット(microformats)の蹉跌と希望」において、マイクロフォーマット(microformats)のデータモデルもマークアップも曖昧すぎて、どうもダメな感じだと指摘しました。しかしそれでも、次の点はマイクロフォーマットの優位点だと僕は思います: 今ある技術だけですぐさま出来る、新しいナニカを必要としない。 CSSデザインとの相性がよい。 hCard、hCalendarなどのスキーマが既に存在する。 特に最後の「スキーマのレパートリーがある」という点はとても大きな魅力です。もっとも、スキーマ記述言語がない(しいて言えば自然言語)ので、スキーマって概念も曖昧な状態ではありますが。 「マイクロフォーマット(microformats)の蹉跌と希望」のコメント欄にて、神崎正英さんより「microdataはどうか」というヒントをいただきました。Kuwataさんも「microda

    マイクロフォーマット(microformats) vs. マイクロデータ(microdata) - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • EmacsでJavaScriptソースを快適に読むために:js2-modeとエグズーベラントCtags - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「横道にそれすぎ」に書いた事情で、EmacsでJavaScriptソースコードを読む環境を少し整えようかと。 次の2つのツールを導入してみよう、っと。 js2-mode: http://code.google.com/p/js2-mode/ エグズーベラント(EXUBERANT)Ctags: http://ctags.sourceforge.net/ 内容: より良いEmacs JavaScriptモード -- js2-mode 強烈なタグファイル作成ツール -- エグズーベラントCtags エグズーベラントCtagsを調べてみる EmacsでJavaScriptソースを読む ●より良いEmacs JavaScriptモード -- js2-mode 以前(2006年7月)、ひげぽんさんの記事で、「ecmascript-mode.el < javascript.el みたいだ」と書いてあった

    EmacsでJavaScriptソースを快適に読むために:js2-modeとエグズーベラントCtags - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • そろそろ決着、HTTPメソッド、URL、そして標準化された動詞 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    ([追記 date="翌日"]文言を少し改善し、注意を付け足したりしました。[/追記]) HTTPメソッド、URL、動詞(verb)に関して次の記事を書きました。 HTTPメソッドの正統的使い方と現実的対処法 HTTPメソッド、URL、そして標準化された動詞 訂正補足:HTTPメソッド、URL、そして標準化された動詞 問題点がほぼ明らかになり、全体の状況も見えてきたので、総括したいと思います。これで決定版にしたいのですが、実のところ、まだ考えが変わる可能性は否定できません。現時点では、以下に記述する案が最善だと思っていますがね。 内容: 用語の注意 事の発端,事の成り行き URLの意味と用途を分類する リソース種別ごとに動詞を考える さらにリソース種別ごとに動詞を考える GETに乗せるか、POSTに乗せるか インターフェースとしてのリソース種別と動詞 リソースとクラス 用語の注意 HTTP

    そろそろ決着、HTTPメソッド、URL、そして標準化された動詞 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    teppeis
    teppeis 2010/01/17
  • JSONの可能性がグンと拡がるぞ! JSONスキーマ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    JSON(http://www.json.org/)データはけっこうよく使うので、何度か話題にしたことがあります(例えば「もう一度、ちゃんとJSON入門」)。でも、JSONには型情報/メタ情報が付けられないのがとても不満で、JSON改なんてもんを考えたこともありました。(後でXIONに改名) JSONデータに対するスキーマ定義の仕様がかたまりつつあることを、ごく最近になって知りました。 http://json-schema.org/ JSON体はRFC 4627になっていますが、JSONスキーマの標準化のステータスは、あまりハッキリとは分かりません(僕には)。http://groups.google.com/group/json-schema?pli=1 を覗き見した感じでは、現状ワーキングドラフトという位置付けらしいです。 なかなか面白いし役に立ちそうなので紹介します。ただし、僕にとっ

    JSONの可能性がグンと拡がるぞ! JSONスキーマ - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • もう一度、ちゃんとJSON入門 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    僕自身も僕の周辺もJSONをよく使います。でも、細かい点でけっこうミスをやらかしています(苦笑)。このエントリーで、JSONを使う上で注意すべきこと/間違いやすい点をすべて列挙します。 内容 兼チェックリスト: 仕様原典さえ読めば完璧(のはずだが) 数値の前にゼロを付けてはいけない 16進数表記も禁止だよ 数値の前にプラスを付けてはいけない 小数点からはじまる数値はダメ 用語法が違うよ:プロパティとメンバー メンバー名には常に文字列を使う 空文字列""もメンバー名に使える 配列要素はキッチリと並べよう 文字列を囲むには二重引用符だけ 文字列内のエスケープが微妙に違う 仕様にないエスケープは構文エラー undefinedもNaNもありません ラッパーオブジェクトは使わないのが吉 型システムとtypeofに関する注意 最後に 仕様原典さえ読めば完璧(のはずだが) JSONは、小さくて簡単な仕様

    もう一度、ちゃんとJSON入門 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    teppeis
    teppeis 2008/07/29
  • Makefileの書き方、その勘どころ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「ほとんど忘れた、Makefile」 にて: Makefileなんてもう何年も書いたことがないぞ。ウーン、だめだ、忘れている。 「忘れている」ってよりは、僕の知識じゃ古すぎて、改めて勉強しないとダメでした*1。 なにしろ、makeだけじゃ機能が貧弱なんで、cpp(Cプリプロセッサ)やm4(マクロプロセッサ)と組み合わせて使っていた頃しか知らんからね(古すぎ!)。今じゃGNU Makeを(使おうと思えば)どこでも使えるから、GNU Makeを習えばそれでいいじゃないかな。僕は、Windows上のMSYS(MinGW - Minimal SYStem)でGNU Makeを動かしました。 というわけで、GNU Makeの手習いをしたからメモしておきます。以下、名前がMakefileじゃなくても、GNU Makeへの指示を書いたファイルは何でもMakefileと呼びます。 [追記]id:paell

    Makefileの書き方、その勘どころ - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • JavaScriptの構文チェッカーJSLintをEmacsから使う - 檜山正幸のキマイラ飼育記 (はてなBlog)

    先日、Emacsのgrepモードの説明をしました。これの応用として、JavaScriptの構文チェッカーであるJSLintEmacsから使ってみます。 Windows上のMeadow3での話ですが、Windows特有の部分は、他のOSでは問題にならないゴタゴタのところ(例:危険な^Z)だけです。 内容: Emacsのjavascriptモード JSLint Rhino とりあえず動かしてみる JSLintソースの修正 EmacsからJSLintを使う MakefileからJSLintを使う ●Emacsのjavascriptモード [追記] javascriptモードは推奨できません。「EmacsでJavaScriptソースを快適に読むために:js2-modeとエグズーベラントCtags」 をご覧ください。 [/追記] http://www.brgeight.se/ (2008-04時点

    JavaScriptの構文チェッカーJSLintをEmacsから使う - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • パッチの作り方と当て方はこうするもんね - 檜山正幸のキマイラ飼育記 (はてなBlog)

    パッチの作り方/当て方を毎回忘れる。だからメモしておこう、っと。単にコマンドのオプションだけでなくて、ファイル/ディレクトリ名とかカレントディレクトリをどこにするかとかで悩むから、これも約束事として決めてしまえ! 例 foo.txt 変更前: first line second linefoo.txt 変更後: first line 2nd line third line hoge/ 変更前: hoge/ +--- foo.txt hoge/ 変更後: hoge/ +--- foo.txt (変更) +--- bar.txt (新規) 単一ファイルのパッチ オリジナルファイルには接尾辞".orig"を付けておく。 パッチを作るときも当てるときも、そのファイルがあるディレクトリで作業。 パッチファイル名は、当該ファイル名.日付.diff。 パッチ作成: > diff -u foo.txt.o

    パッチの作り方と当て方はこうするもんね - 檜山正幸のキマイラ飼育記 (はてなBlog)
    teppeis
    teppeis 2008/02/02
    diff/patchの使い方とお約束
  • 1