タグ

ブックマーク / mizchi.hatenadiary.org (26)

  • クライアントのテストはzombie.jsでいいんじゃないか - mizchi log

    zombie.jsとは jsdomというnode製のDOMシミュレータがあります。これを使えば、ブラウザを使わずにDOMイベントを発行することができます。 zombie.jsはセッション管理とブラウザのアクションを管理するjsdomのラッパーです。 個人的には、Ajaxのテストは無理せずJavaScriptでやれとおもってるので、その点zombieは素直に動いてくれます。 利点 AjaxでDOMを書き換えたりするイベントもテストできる (qt-webkitと比較して) 無茶苦茶早い コンパイルが楽(というかQTは定期的に互換崩れてバイナリ壊れてる… 論よりコード サンプルをアップロードしてあります mizchi/zombie-tester-example https://github.com/mizchi/zombie-tester-example インストール等はReadme見てもらうと

    クライアントのテストはzombie.jsでいいんじゃないか - mizchi log
    you21979
    you21979 2015/07/20
  • 小物エンジニアの会でオブザーバーパターンのアンチパターンについて発表してきた - mizchi log

    小物エンジニア年収780万円以下だそうです 小物エンジニアの会 : ATND http://atnd.org/events/41091 発表資料は面倒くさかったのでGistです hanabi.md https://gist.github.com/mizchi/6081622 西新宿のありふれた公園で酒飲みながら屋外発表会、破滅的でした

    小物エンジニアの会でオブザーバーパターンのアンチパターンについて発表してきた - mizchi log
  • JavaScriptで型が書けるDSLを提供するdeftypes.js作った - mizchi log

    こじらせJavaScriptシリーズです。 mizchi/deftypes.js https://github.com/mizchi/deftypes.js 主にcoffee-script用のDSLです。以下すべてcoffee。 ブラウザ <script src="https://raw.github.com/mizchi/deftypes.js/master/deftypes.js"></script> Deftypes(); //provide DSLNode npm install deftypes 概要 型が書けます。残念ながら動的チェックです。 Point = {x: Number, y: Number} p1 = def Point, {x:1, y:2} #=> {x: 1, y:2} p2 = def Point, {x:1, z:2} #=> type error def

    JavaScriptで型が書けるDSLを提供するdeftypes.js作った - mizchi log
  • 1つの流儀を持つこと - mizchi log

    流儀を知らないということは、何者にも縛られていない、ということではない。自分の癖に振り回されていることに、無自覚なだけだ。 ってのは、中学時代の部活の恩師の受け売りなんだけど、大人になるにつれ、特にインターネットを眺めるにつれ、無自覚に自分の癖に振り回されている人を見る機会が増えている気がする。 インターネットには反知性主義・反権威主義の皮を被った「怠惰の言い訳」があまりにも多い。 わかり易い例として、2chの哲学系のまとめを見るといいと思う。必ず導入かオチにキャッチーでわかりやすい反知性主義の言い訳があるはずだ。 それはまとめ人の程度を示しているだけとも言えるが、傾向として2chは反知性主義が支配している場であると思う。2chは嫌いではないけど相手の弁をそれによって封殺している流れをみると、僕はイライラする。で、はてブにもそういうのが増えてきた。 何かの視点を獲得することは、自分自身を捉

    1つの流儀を持つこと - mizchi log
    you21979
    you21979 2013/05/25
    自分の流儀は適所適材。
  • プログラミングはそれ自体が目的であっていい - mizchi log

    これ読んで思ったこと。 プログラミングを勉強したい人が勉強する前にすべきこと - もとまか日記 http://d.hatena.ne.jp/moto_maka/20130512/1368308092 僕がプログラミングをはじめたとき、何を思ってプログラミングをはじめたか思い出してみようとしたけど、よく思い出せなかった。 ただ漠然と感じていたのは、プログラミングは個人が現実的にこの世界に直接手を加えることができる手段の1つであり、それをやらないのは勿体無い、といったことだったと思う。たぶん。 というわけで、最初にやったのはFirefoxのユーザースクリプトを書くことだったし、それはそれでよい経験だった。なんとなくゲームとかウェブアプリとか作りてーなー、と思って色んなライブラリを動かすだけ動かして満足した。プログラミング覚えて初めて最初の一年で10以上の言語のHelloWorldだけやったと思

    プログラミングはそれ自体が目的であっていい - mizchi log
    you21979
    you21979 2013/05/12
  • Web系新卒っていうかゲーム開発者一年目が去年読んだ技術書 & ライブラリ - mizchi log

    カタ氏(@hotchemi)が意識高い記事書いてたので、自分もまとめてみる。 文系学部生がSIerに入社してから読んだメモ - ギークに憧れて http://hotchemi.hateblo.jp/entry/2013/04/01/000844 自分Web系っていうかHTML5+Unity+AS3 のゲームガッツリ系+Webもやるって感じなので、最近の自己認識としてWebっていうよりはゲームプログラマな気がしている。 JSが多いのはHTML5ゲーム技術調査とかしてたからです。 書籍 7つの言語 7つの世界 作者: Bruce A. Tate,まつもとゆきひろ,田和勝出版社/メーカー: オーム社発売日: 2011/07/23メディア: 単行(ソフトカバー)購入: 9人 クリック: 230回この商品を含むブログ (65件) を見る一部情報が古いが、ClojureやIoについて書かれた貴重

    Web系新卒っていうかゲーム開発者一年目が去年読んだ技術書 & ライブラリ - mizchi log
    you21979
    you21979 2013/04/03
  • javascriptのprototype拡張はどこまで許されるか - mizchi log

    孫引きなんだけどちょっと気になった点 404 Blog Not Found:javascript - es2pi はじめました http://blog.livedoor.jp/dankogai/archives/51859796.html 来の JavaScript の利用方法(Prototype 拡張)に立ち返り、Array.prototype, String.prototype, Number.prototype 等を拡張しています 最近のJSは基的に肥大化するし、DOMはグローバルな状態であり、またprototypeもどこからでもアクセスできるという点ではグローバルである。 手癖が悪い人はprototype経由で値の受け渡ししはじめる。JSではスコープチェーンなりで値の受け渡しをするように気をつけたい。 経験上、方針を決めずにprototypeを触りまくると遅かれ早かれ破綻する。

    javascriptのprototype拡張はどこまで許されるか - mizchi log
    you21979
    you21979 2013/03/20
    特定の問題を解決するフレームワークだけがやっても良いと思う。ライブラリでやるべきではないかと
  • DOMを高速に操作するための skin.js というライブラリを作った - mizchi log

    (タイトル修正 DOMを高速に操作 => DOMの値を高速に更新 at Sat Mar 09 2013 15:30:09 GMT+0900 (JST)) (Skin#inject実装したのでタイトル元に戻した at Mar 09 2013 18:10:04 GMT+0900 (JST)) 若手の会で、JavaScript Hell on Earth というテーマで話してきました。 js_hell_on_earth http://www.rvl.io/mizchi/js_hell_on_earth というわけでDOM抽象ラッパーつくりました。 mizchi/skin.js · GitHub https://github.com/mizchi/skin.js 目的 クライアントサイドJSでは一回書いたら終わり、ではありません。ゲームなどのリッチなユーザー体験を提供する際、高頻度でDOMを書き換

    DOMを高速に操作するための skin.js というライブラリを作った - mizchi log
  • 動的型とか静的型の話の前に「作者の気持ち」を考えろ - mizchi log

    自分の思考を整理する意味でも、件のアレについて考えたことを書いてみる。 変数に型がないということの利点について考える - サンプルコードによるPerl入門 http://d.hatena.ne.jp/perlcodesample/20130227/1361928810 この件に触れることはプログラマとしての中二病である。恥ずかしい。マジレス乙だ。 でも気づいたら5000文字も書いてしまったし、公開して酒のんで寝る。 型のフローは機械のためだけでなく、人間に対するものでもある 最近TypeScriptを書いている。こいつを使って、二次元座標上で二点間を求める関数、getDistanceを定義してみよう。 interface IPoint { x: Number; y: Number; } var getDistance = (a:IPoint, b:IPoint): Number => Ma

    動的型とか静的型の話の前に「作者の気持ち」を考えろ - mizchi log
    you21979
    you21979 2013/03/03
  • 最近のJSの開発環境について知っておくべきライブラリ10個 - mizchi log

    ほんとに10個だと思った?(無意味に煽っていくスタイル) 最近JSだけのリポジトリで無益なゲームを大量に作っては破棄しているのだけど、割とストレスなく出来上がってきたので書く。 長々と書くが、要は次のリポジトリに概要が詰まってる。 mizchi/mizchi_client_boilerplate · GitHub https://github.com/mizchi/mizchi_client_boilerplate 前提として、最近はCSJSでもnodeのインストールを前提とする環境が多い。必須といってもいい。 grunt gruntjs/grunt · GitHub https://github.com/gruntjs/grunt ビルドタスクを簡単に作れる。make、rake、などに相当するが、node製らしくファイルシステムの監視でアクションを作れるのが特長。$ grunt serv

    最近のJSの開発環境について知っておくべきライブラリ10個 - mizchi log
    you21979
    you21979 2013/02/16
  • アジャイルの「顧客に価値を届ける」の嘘と本当 - mizchi log

    酔った勢いでアジャイルについて思うところを書く。 顧客に価値を届けるのは誰か 顧客に届く価値 = 目に見える成果物、という評価は、フロントに近い人間しか評価されなくなる傾向を抱え込む。顧客に価値が届くまでには段階がある。複雑なものほどワークフローが長大になる。お互いの価値を見積もれるのは、小さいチームでお互いの職種について理解がある場合の理想であり、多くの場合理想は理想である。大きなチームほど、フロントに遠い人間は自分の価値を伝えるのが難しい。 難しいことを難しいということ エンジニアが自分の仕事について、エンジニア以外への責任説明を果たそうとすると努力は必要だが、必ずしもそれが伝わるとは限らない。 難しいことを難しいと言えないと、「それってすぐできるんでしょ?」という展開になりがちで、「任せてくれ!」と言えるのはかっこいいが、誰しもがスーパーエンジニアではない。そして見積もりに失敗する。

    アジャイルの「顧客に価値を届ける」の嘘と本当 - mizchi log
    you21979
    you21979 2013/02/10
    ようはアジャイルをやるならチームビルドによるメンバー構成が大事ということだな。サッカーで言うMFとかそういうの。
  • Object.observeに未来を感じたので、es5でもちょっとだけ動くようにしてみた - mizchi log

    互換っぽいのを作った話。 今日なんとなくAngular.jsを触ってて、「いや、俺が欲しかったのはこれじゃないんだ!」という感がムンムンだったので、前々から気になっていたObject.Observeを試してみた。 詳細は次のエントリが詳しい。 次世代JavaScriptでデータバインディング: Object.observe() を試す - ぼちぼち日記 | Postolog http://postolog.com/bbbkL2 哲学の話 Object.observeのやってることはBackbone.Modelと変わらないんだが、Backbone.ModelはBackboneのデータ構造であることをユーザーに強いてくる。どのモデルか意識せずに、オブジェクトの変化をViewから監視したい。 MVCのMの部分、JSのやるべき仕事はデータモデリングがメインになると思っていて、とくに明記せずともデー

    Object.observeに未来を感じたので、es5でもちょっとだけ動くようにしてみた - mizchi log
    you21979
    you21979 2013/01/29
  • mizchi log

    小物エンジニア年収780万円以下だそうです 小物エンジニアの会 : ATND http://atnd.org/events/41091 発表資料は面倒くさかったのでGistです hanabi.md https://gist.github.com/mizchi/6081622 西新宿のありふれた公園で酒飲みながら屋外発表会、破滅的でした こじらせJavaScriptシリーズです。 mizchi/deftypes.js https://github.com/mizchi/deftypes.js 主にcoffee-script用のDSLです。以下すべてcoffee。 ブラウザ <script src="https://raw.github.com/mizchi/deftypes.js/master/deftypes.js"></script> Deftypes(); //provide DSLN

    mizchi log
    you21979
    you21979 2013/01/17
    マトリックスで目覚めたようなもんだ。
  • ST2の中でGitDiffを視覚化するGitGutterが死ぬほど便利だった - mizchi log

    jisaacks/GitGutter · GitHub https://github.com/jisaacks/GitGutter 一見に如かず。 Install Package Control: Install Package > GitGutter ちなみに自分のST2のgit周り git, gist, githubinator, sidebargitが入ってます

    ST2の中でGitDiffを視覚化するGitGutterが死ぬほど便利だった - mizchi log
    you21979
    you21979 2012/12/19
    st2はsublime text2なのだと知った
  • 非同期呼び出しの見た目上の同期を実現するためにnode-fibers 使ってみた - mizchi log

    laverdet/node-fibers · GitHub https://github.com/laverdet/node-fibers ネタ元としてはRubyのFiber。 他のcontrol flow系とは経路が違って、V8を直接叩いて実装されている。よって普通のJSの直感から反した挙動を取ることが可能となっているし、nodeでしか動かない。 インストール いつもの npm install fibers 使い方 sleepの公式サンプル var Fiber = require('fibers'); function sleep(ms) { var fiber = Fiber.current; setTimeout(function() { fiber.run(); }, ms); Fiber.yield(); } Fiber(function() { console.log('wai

    非同期呼び出しの見た目上の同期を実現するためにnode-fibers 使ってみた - mizchi log
    you21979
    you21979 2012/12/10
    fiberは他のコントロールフローに比べて処理のオーバーヘッドがあるから使い所は考えたほうがいいと思う。気をつけないとメモリリークするし。
  • 大学で時間かけてゆっくりプログラミングを独学してみた経験から汚いコードについて考えてみようとした - mizchi log

    思いつきで色々書く回ですよっと。 を、読んで自分の経験からどう捉えるべきか色々考えてみた。 まず、自分は、無駄が多い勉強をしてきたのだけど、何をどうやって覚えたか、その話からしようとおもったけど、殆どの人はあんまり興味ない気がしたので「思ったこと」以降だけ読めばいいです。 前提 小2(1996)の頃からインターネットしていた 中学生の時にはネットで見つけた記事みて親父のPCのAdmin権限を書き換えたりしてた プログラミングはできない。あくまでツール拾ってきて使えるだけ ~ 1年目 ~ Twitterをはじめた エンジニアの知り合いが増えた。エンジニアって楽しそうだなと思った。 大学でJavaならった そんで家でウェブサイト作ろうとしてTomcatで挫折 Ruby on Rails 1.2から2.0の移行期に巻き込まれ挫折した 集合知プログラミング 集合知アルゴリズムは忘れたけどPytho

    大学で時間かけてゆっくりプログラミングを独学してみた経験から汚いコードについて考えてみようとした - mizchi log
    you21979
    you21979 2012/12/03
    とりあえず、データフローとインターフェイスだけ破綻しないように作ればリファクタリングでなんとかなる。リファクタリングで手がつけられないのは完全に破綻してる。
  • JSのMVCについて考えてみた ~ その2 テンプレートエンジンの分業とパフォーマンス - mizchi log

    この前の続き。相変わらず思いつきでつらつら書いてて図とかまともなサンプルとかない。 JSのモデルには二種類ある フロントエンドである以上質的にすべてビューだとも言える。 であるがゆえにあやふやにしないほうがいい。 ビューモデル UIの状態を示す属性。選択しているタブとか、開いているダイアログとか、そういうものの状態をDOMから読むのではなく、JSとして一度確定し、その結果をビューに反映すべきだ。激しく画面を組み替える場合はビューというグローバル変数はどこからも汚染される可能性がある。 データベースのローカルキャッシュ たとえば、a地点からb地点の距離をユークリッド距離を求めるのに、わざわざサーバーに問い合わせるのは無駄。普通に三平方の定理で計算すればいい。アクション性が高いものほど、ここの振る舞いは分厚くなる。いわゆるHTML5アプリはここを重点的にやるほどサーバーの負担が減り、サーバー

    JSのMVCについて考えてみた ~ その2 テンプレートエンジンの分業とパフォーマンス - mizchi log
    you21979
    you21979 2012/12/01
    クライアントサイドにおけるテンプレートエンジン
  • 大規模JSでのBackbone.js/CoffeeScript について考えてみた - mizchi log

    これ読んでたらr7kamura君にJSのMVCどうするの的な話きかれてたのを思い出したので、自分がBackboneを使う時のパターンをr7kamura君の記事をベースに書きなおしてみた。 > サバクラ両方で動く JavaScript の大規模開発を行うために ― Gist https://gist.github.com/1362110 > client-side javascript - ✘╹◡╹✘ http://r7kamura.hatenablog.com/entry/2012/10/18/023629 以下の様なコードを書いた。かなり冗長だが、複雑なアプリだとこれぐらいの冗長性は必要になる。 (なお概念を伝えるための解説用コードなのでそのままじゃ動かない) Backbone.Model # 名前空間の初期化 App = {} App.View = {} App.Model = {}

    大規模JSでのBackbone.js/CoffeeScript について考えてみた - mizchi log
  • ウェブ業界の新卒が集まる勉強会行ってきた #oblove - mizchi log

    ちょっと酔ったまま書いてるので色々アレですが何も書かないよりマシだと思ったので書きます。 オブラブ 収穫祭 〜若手エンジニア、実りの秋 http://esminc.doorkeeper.jp/events/1746 ウェブ業界の新卒(そんなものが存在するのか)が集まって、どんな業態で新卒がどんなふうに働いてるか発表する勉強会があると聞いて、一応ウェブ業界の新人枠で働いてる自分としては、冷やかしのつもりで行ってみた。そしたら適度に砕けてて適度に意識高かったのでよかった。 勉強会とその後の飲み会ではえらく意識高まったのだけど、個別の発表について感想書こうと思ったけどお酒入ってしまったせいで全然覚えてないし、お疲れ様回の後に飲み会の後 @ainame と @r7kamura (いずれも某社と某社の新卒) とまどまぎ後編見て感動したので、細かいことが吹き飛んでしまい覚えてない。 登壇していた企業は

    ウェブ業界の新卒が集まる勉強会行ってきた #oblove - mizchi log
    you21979
    you21979 2012/10/24
  • クライアントJSをパッケージ管理できるjamjsが便利 - mizchi log

    nodeのnpmみたいなインターフェースで、クライアントjsの依存管理をする。 インストール $ npm install -g jamjspackage.jsonのjamプロパティ以下に依存モジュール書く { "name": "hogefuga", "version": "0.0.0", "jam": { "baseUrl": ".", "packageDir": "vendor", "dependencies": { "jquery": "1.7.x", "backbone": null, "underscore": null } } }package.jsonの定義に従ってダウンロード $ jam install自分はcompileまでする。 $ jam compile vendor/all.jsあとはみたいに読みこめば、jquery,backbone, underscoreが読み込み

    クライアントJSをパッケージ管理できるjamjsが便利 - mizchi log