javascriptcoffeescriptNode.jsでSQLiteを使ってみるNode.jsのときはMongoばかりなので実は使ってないことに気づいた。javascriptBackbone.jsChaplin.jsを試しているBrunchで生成されるスキャフォールドよくわからんわーっていうのはChaplin.jsがわからんわーっていうことと同義だった。Worldのサンプルとostioのコードを読んでみたんだけど、いまいちわかってないところがある(HandlebarとかStylusをどこで組み込んでいるのかとか)ので、自分で一つ書いてみないとダメだなぁ。Chaplin.jsとはいまのとこの理解だと、Chaplin.jsというのはBackbone.jsを土台にしたフレームワーク。backbone.layoutmanagerはBackbone.jsの拡張っぽいなぁと思ったがこっちはフレームワークな感じなので規約とかお作法っぽいものが多い。View,Mode,Utilsのディレクトリ構造は大体決まっている。View,Modelにはbaseっていうディレクトリが掘ってあって、共通の処理を書く。ほんでもって継承する。Layoutはbackbone.layoutmanagerとは異なり、Viewを継承していない。他にドキュメントからだと、Applicationクラスは単なるブートストラップmediatorがpub/subを司るControllerがModelと対応するViewをインスタンス化するという感じで役者が増えている。javascriptBackbone.jsgrunt-bbbでtodoリストをつくってみたYeomanはちょっとデカすぎるなぁってことで、Yeomanよりは小さめな感じのgrunt-bbbをいじってみた。init:todomvcというコマンドが使えるんだけど、これは動かない。いうわけでbbbのお作法の勉強も兼ねて自分で最初から書いてみた。todoとかこんな感じで書いていけばいい。backbone-localstorages.jsをvendor/jam以下に置いてしまったがまぁいいかな。実際のコードはapp/modulesに置くのがお作法らしい。init:moduleもあるしな。serverで127.0.0.1:8000でサーバーが立ち上がるので便利main.jsではrouterの設定をしているapp.jsではLayoutの設定とか、useLayoutといった便利関数を追加しているだけ。router.jsが頑張っているgrunt-bbbとは何か?backbone.layoutmanagerを含んだbackbone.jsのボイラープレートのフレームワーク。backbone.layoutmanagerはPhilosophyを読めば分かるようにBackbone.Viewを拡張したものでキャッシュ機構を入れたりテンプレートをよろしく管理してくれたりとかそんな感じ。Backbone.jsで開発している感をだしつつ、弱いところを補ってくれる感じのBackbone.js++って感じのツールかな。workflowなので、使われているパッケージを調べることでjavascript界で今イケてるツールの情報をゲットできるわけだ。いうか、ざっと見たところgrunt.jsしかわからん。grunt.jsmakeのjavascript版みたいな位置付け。ほとんど使ったことがない。BOWERブラウザサイドのパッケージマネージャ。プロキシ通らないなぁと思ったら、fixされていた。AMD関連underscore.jsがAMD対応されていないので対応版としてlodashってのがあるらしい。他にrequire.jsの軽い版でalmond.jsがある。Webkitというわけで、テストしたりスクレイピングできたりする。ブラウザを使ったスクレイピングをやりたい時にはWWW::Mechanize::Firefoxを使っていたが、PhantomJSベースのCasperJSに乗り換えるかもしれない(WWW::Mechanize::FirefoxはFirefoxをインストールしないといけないのでちょっと面倒臭いので)。Yeoman使うのか?養鰻だけにShizuoka.jserは使うよね的なtweetしたけど、僕は使わないと思う。ツールの寄せ集めだと追随していくの大変だしねー。自分の用途だとボイラープレートで十分なんじゃないかと思う。Definition今年はBackbone.jsとかCSS(Stylus)なんかを頑張ろうかなぁと思っている。Definition)について調べてみた。AMD?underscore.jsではAMDのサポートが外されている。javascriptNodeクックブックを予約したLoLも気になっているが、Nodeクックブックを先に読むべきだなという結論になった(LoLは電子版が出たら買う)。Nodeクックブックというタイトルだったので、Nodeの本はもういいやと思っていたが、目次を見たら実用Expressのほうがふさわしいんじゃないかと。本番環境に展開するためにというわけで買いですな。javascriptStylusCSSStylusのフレームワークStylusのフレームワークといえばnibだろうが、他にもいくつかあったので調べてみた。プラグインっぽい拡張とかもあったんだけど、Stylusの公式からリンクも張ってないしnpmも探しにくいしどうしたらいいのかなぁと。Frameworknibお約束。text-shadowがないのはちょっと困るかな。nibblenibの上にのっかる感じのフレームワークらしい。ドキュメントが殆ど無いけど、foundationに強く影響を受けているらしいので、グリッドシステムとかレスポンシブ・ウェブデザインが充実しているのかな。僕の場合はGridのためにtwitter-bootstrapを使っているようなもんだから、こっちでいけるようだったら乗り換えてもいいかなと思うので、あとできちんと読んでみる。fluidityこちらもグリッドシステム。understand.klipspringerこれもドキュメントがない。ソース見た感じではグリッドシステムとレスポンシブ・ウェブデザインは備えているっぽいがどこを目指しているのかちょっとわからない。プラグインっぽいやつフレームワークほど大きくないモジュールstylus-lemonadeCompass/SASSでいうところのSpritingにあたる機能を提供する。stylus-images@2xとかをよろしくやってくれるようだ。directoryエディタとか更新時コンパイルするものstylusにはwオプションがあって、これを使えば更新時にコンパイルしてくれる。lyvusこれはstylusのwオプションに加え、ブラウザもリロードしてくれる。利用するためには10行くらいのjsコードを埋め込む、lyvusコマンドで表示されるのでそれをコピペすればいい。SimpleHTTPServerのalias)だとsocket.ioに対応してないからreloadしなくて残念。思ったが、これのせいではない気もしているので後でちょっと調べる。stylerこちらはオンラインエディタ。触ってみたところ良い感じなんだけどEmacs使いたいからなぁ。BackboneBackbone.jsでクライアントサイド、Express+mongoose(MongoDB)+socket.ioでサーバーサイドで、チャットアプリをつくるという内容。コードはGithubにあるのでIssueみるとどこが修正されたか分かるので、確かめながら本を読んだほうがイイ。あと、実際書いてみるとBackbone.jsのモデルとmongoのモデルの名前付けが紛らわしい。実際、本書のタイポはここらの名前付けルール(小文字かキャメルケースか)だったりするので、サーバーとクライアントの言語は変えたほうがいいのかなぁと思った。あとmongooseみたいにスキーマ定義するのはどうなんだろう。それだったらSQLでいいんじゃないかなと思ったりするが。こっちの本を参照しながらひと通り読んだのだけど、全文公開されているのでありがたい。)Kindleに入れて気になった時に見れるようにしておきたいかも。server.jsリンク切れてるっていう連絡をもらったので更新しておきました(2018/01/30)。tasksのapiを使ってbackbone.jsでアプリをつくるチュートリアルを読んだ。startでサーバーが立ち上がるのはなんでじゃろかー?って不思議だったので、ぐぐってみた。server.jsらしい。Backbone.syncRESTfulなAPIじゃない場合とか他のライブラリを使いまわす場合どうするのかなと思って調べてみたらBackbone.syncを上書きすればいいらしい。modelのほうはいじらないでsyncでよろしくやればいいみたい。javascriptBackbone.jsBackbone.jsのソースコードを読んだ日本語のアノテーションがついているソースコードを読んだので、ちょっとわかりにくかったあたりをメモっておく。コールバックリスト(107行目)リスト構造にしてあんのかなと思ったがtailってなんだろうと思ったら最後尾を常に指すようにしているらしい。node};}これは最後尾のobjectのnextとtailが同じ物を指すようにしているのでさくっと最後に空のオブジェクトの参照を保持している。全てのコールバックを実行するのはnextでたどればいいようになっている。Spine.jsは普通に配列使っていたけどリストにするメリットはなんかあるのかなぁ。実際の動きはこんな感じ。}tailとnextは同じ空のオブジェクトを指しているので、常に次の参照を保持したまま大きくなっていく。0はundefinedになる。resp);って何やっているのかなぁと思ったのだが、opttion.successを上書きしてしまうので、元々のoption.successを残しておいてコールバックで呼び出しているだけだった。(1190行目)$elとelが存在する。