タグ

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

  • 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
  • プログラミングはそれ自体が目的であっていい - mizchi log

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

    プログラミングはそれ自体が目的であっていい - mizchi log
  • JavaScriptでDIできる Injector.js つくった - mizchi log

    仕事でRobotlegsというAS3のフレームワークを使っているのだけど、DI機構がかっこよかったので、Injectorだけ真似て作ってみた。 mizchi/injector.js · GitHub https://github.com/mizchi/injector.js Robotlegs AS3 Micro-Architecture - Home http://www.robotlegs.org/ 使い方 ConstructorClass.inject に {key:InjectedClass} で実体化するインスタンス名と実体化するクラスを登録する。 CoffeeScriptで違和感無いような記法でチューニングしてある。 class UserModel class X_View Injector.register(@) @inject: model: UserModel Injec

    JavaScriptでDIできる Injector.js つくった - mizchi log
    yogasa
    yogasa 2013/04/21
  • 動的型とか静的型の話の前に「作者の気持ち」を考えろ - 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
  • 最近の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
  • 地方都市という地獄 あるいは関東圏の「私が住んでるところは田舎だよ(笑」が如何に残酷かについて - mizchi log

    都会に住む人間は、その価値を過小評価している。というのが僕の持論だ。そしてそれは東京に6年住んでより強固になった。 都心住まいの価値とは何か - よそ行きの妄想 http://d.hatena.ne.jp/chnpk/20130115/1358204323 この記事の感想としては、およそ渋谷に特徴的な衛生問題が多いという事実には同情するとしても、常になにかしらの機会が与えられていることを無自覚だ、という点が地方の人間を刺激するだろう。 子供用の自転車が買えなかったとしても、買える距離に生きているのだ。さすがに子供用の自転車ぐらいは田舎でもみつかるが、嗜好品の類はそもそも手に入るかが怪しい。 今ではインターネットで緩和されたとはいえ、それを実際に目にする機会があるかという点において、それを好きになる機会すら与えられないかもしれない。 表題は、地方出身者を最も怒らせる一言である。 僕は、18歳

    地方都市という地獄 あるいは関東圏の「私が住んでるところは田舎だよ(笑」が如何に残酷かについて - mizchi log
  • 大規模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
    yogasa
    yogasa 2012/10/14
  • HTML5でロードオブナイツとかいうゲームを作った - mizchi log

    陣取り戦争ゲーで、iPhoneUnity版からの移植です。 ロードオブナイツ - Yahoo!モバゲー http://yahoo-mbga.jp/game/12011436/detail PC(Chrome/Firefox/IE9以上)とスマホ(Webkit)で同じ物が動きます。ヤバゲーとモバゲーでアカウントは共有してるので、どっちからでも入れます。 HTML版としては既存コードとか一切なかったんで、JSに関してはフルスクラッチです。というか全部CoffeeScriptです。 ある日会社で楽しくHaskellでKPI計算モジュール書いてたら、 「UnityのネイティブのゲームHTML5に移植したい」 みたいな話が降ってきたので、移植しました。3ヶ月ぐらいで。 プラットフォームはモバゲー(スマホ) + ヤバゲーです。HTML5なのは、スマホとブラウザゲーで開発リソースを共通化したかったか

    HTML5でロードオブナイツとかいうゲームを作った - mizchi log
  • CoffeeScriptのあまり知られていない文法 - mizchi log

    知られてない機能ってのは大抵公式リファレンスにのってない奴なんですが、結構便利なのがあるので紹介しておこうと思います。 ハッシュ値を取り出す方法 {abs, sin, cos} = Math引数値でもパターンマッチ的に使うことができる。 次のコードが $.get "/json", {}, (data) -> console.log data.a, data.b, data.cこのように書き換えられる。 $.get "/json", {}, ({a, b, c}) -> console.log a, b, cすべてのオブジェクトがハッシュで表現されるJS、その拡張ならではの略記ですね なお、展開後の変数にデフォルト引数は付けられなかったです。残念。 引数オブジェクト展開 arguments... で引数オブジェクトを展開することができます。 f = -> console.log argume

    CoffeeScriptのあまり知られていない文法 - mizchi log
  • 死んで覚える本当のGitの使い方 - mizchi log

    注意: バズってますが、これははてなダイアリーからはてなブログの自動マイグレーションに失敗してたものを復旧させたもので、書かれたのは2012年です。 - 最近流行っているGit初心者向け記事は、「僕らが当に知りたかったこと」が欠けているようにしか思えません。 そこで、当のGitの使い方を僕が皆さんに伝授しようと思いました。 なにはともかく使ってみよう 前提として、皆様のお手元にはすでにGitがインストールされているものとします。 今回はエディタとしてDungeonCrawl StoneSoupを使います。 Downloads « Dungeon Crawl Stone Soup http://crawl.develz.org/wordpress/downloads Dungeon Crwal Stone Soup は今一番ホットなオープンソースのローグライクです。風来のシレンやトルネコ

    死んで覚える本当のGitの使い方 - mizchi log
  • クライアントサイドMVCについて喋った - mizchi log

    月曜日のclient-side templating 勉強会 http://atnd.org/events/28189 で喋った内容をうろ覚えに書き出す。 クライアントMVCが求められるようになった背景 AJAXの流行 PushStateの流行の兆し メディア系のゲームで使えるAPIの充実 今まではページ遷移の度にJSのオブジェクトを破棄していた。 => シングルページでリッチなコンテンツが作れるようになり、JSのやることが増えた PushStateとは 遷移なしにURLを書き換える技術HTML5 History APITwitter, Github, Facebook URLを書き換えるだけなのでコンテンツ(DOM)の操作はアプリ製作者に一任されている。 大規模なHTML書き換えに、クライアントサイドテンプレーティングが重要になってきた。 PushStateのライブラリ defun

    クライアントサイドMVCについて喋った - mizchi log
  • CoffeeScriptがさらに拡張されたLiveScriptの紹介 - mizchi log

    2ヶ月ぐらい前にHackersNewsで見かけて、触ってみたらやたらかっこよかったので紹介。 LiveScript http://gkz.github.com/LiveScript/ LiveScriptはCoffeeScriptがさらに拡張された、JavaScriptにコンパイルされる系言語。 JavaScriptが最初に名付けられた名前「livescript」に立ち返って、関数型の特色が色濃い言語のようです。 OOPと関数型のマルチパラダイムという点でScalaなどに近いのかもしれません。型が弱いScalaで、見た目はHaskell。 インストール npm install -g livescriptより関数型っぽくしたい人のための prelude-lsと一緒に使うのが推奨されているそうです npm install prelude-ls追加されるメソッドについては以下を参照 prelud

    CoffeeScriptがさらに拡張されたLiveScriptの紹介 - mizchi log
  • 大規模JSプロジェクトのための、モダンなjavascript/coffee-script の学習用資料まとめ - mizchi log

    A社coffee-scriptエヴァンジェリストのmizchiです。今日は昨今の大規模JSの需要の高まりに応えるべく、お前が知ってる資料をまとめろとのお達しが下ったので、社内wiki面倒だしここに載せてますん。 前提 大規模JSをモジュール化する為にcoffee-scriptのシンタックスシュガーでOOPのパラダイムを持ち込む coffee-scriptの煩雑なコンパイル作業を避けるために、Rails/Nodeではアセットパイプラインを使って動的にコンパイルと圧縮を行う JSプロジェクトを部分的にnode化してTDDでサイクルを回す coffee-scriptに関しては、基的には家チュートリアルと The Little Book on CoffeeScript を読めばいい coffee-script チュートリアル 家チュートリアル CoffeeScript little book

    大規模JSプロジェクトのための、モダンなjavascript/coffee-script の学習用資料まとめ - mizchi log
  • 株式会社Aimingにいきます +ソーシャル就活について思ったこと - mizchi log

    node/webosocketによるオンラインゲームの実装を考える / オンメモリ、KVS、RDBMS、圧縮プロトコル、そのゲームデザイン + 就活の話 - mizchi log という記事を書きまして、一応ソーシャル就活っぽいことをしたからには報告する義務があると思いまして、ここで報告させて頂きます。 株式会社Aimingにいきます。 株式会社 Aiming(エイミング) Aimingはオンラインゲームの会社です。ゲーム系ながらWeb系と親和性が高く、それなりに大きなデータを持ち、自分のスキルセットとゲーム的な志向に適合し、そして字面だけではない実践的なアジャイルな開発環境にシビれた、というのが選んだ理由です。なにより社員の人達が最新技術に貪欲で、どんどん新しいことにチャレンジさせてもらえそうだ、という点も大きいです。 ついでにいえば、僕自身コアゲーマーなので、ガラケーの5をぽちぽちする

    株式会社Aimingにいきます +ソーシャル就活について思ったこと - mizchi log
    yogasa
    yogasa 2012/02/25
    "こいつは本物だ!と思った本当に面白い人間が、就職した途端つまらなくなってしまう事例が本当に多く、もったいなく感じています"
  • node/webosocketによるオンラインゲームの実装を考える / オンメモリ、KVS、RDBMS、圧縮プロトコル、そのゲームデザイン + 就活の話 - mizchi log

    派手で見栄えがする大規模なプロダクトを作ろう!っていうことで、一人でフルスタックなネトゲを作っている。大きなプログラムを書いても破綻しないようにテスト書きまくってテストファーストを心がけたり、Travis-CIによる継続的インテグレーションで頑張ったり。 というわけで作っているのはMMORPGなんだけど、ここで実装するのはまあ平均的なMMORPGを想像してもらいたい。自分がやろうとしているのは、モダンなOSSとさくらの安いVPSで、独学の学生一人でもフルスタックなネトゲみたいなのが組める、ということの実証。 なんでそんなことをしているかって言うと、一応就活中で、見栄えがするアプリ提出できるとおいしいなーっていう下心。 *追記* ここでは https://github.com/mizchi/wanderer のことを言ってるんだけど大規模リファクタリング中なのでここで言ってることは半分ぐらい

    node/webosocketによるオンラインゲームの実装を考える / オンメモリ、KVS、RDBMS、圧縮プロトコル、そのゲームデザイン + 就活の話 - mizchi log
  • CoffeeScriptを知らない友人にCoffeeScriptを紹介する10のワンライナーテクニック - mizchi log

    って、日のギークならそういうんだろうなー みなさんCoffeeScript使ってますか?ちょっとjsわかる人ならすぐ覚えられて、文法が平易で、かつRubyPythonぽく拡張されてるので非常にストレスが少ないです しかも、元のJSの特性をほとんど妨げないようになってるので、jsでできてcoffeeでできないことはほとんどない。(まったくない、かはちゃんと確かめてませんが… ないと思います) 雰囲気、インデントブロックのRuby記法のような印象。 というわけで元ネタは 10 CoffeeScript One Liners to Impress Your Friends | ricardo.cc です CoffeeScriptインストール済なら、$ coffee -i、もしくは $ coffee で対話インタプリタ起動します 1. リストに含まれるアイテムを2倍に coffeescript

    CoffeeScriptを知らない友人にCoffeeScriptを紹介する10のワンライナーテクニック - mizchi log
  • ネットジャンキーから見たTwitter/Facebook - mizchi log

    気になったエントリが、二件ほどあったので。 F's Garage:身も蓋もなくなるインターネット フェイスブックが実名性を取った事が成功要因なのではない。そのソーシャルグラフを友達関係に絞っているのが凄い。リアルな友達関係から、さらにリアルな友達関係の接続の輪を繋ぐために実名が必要だった、それだけだ。 僕ぐらいのネットジャンキーになると、インターネット経由の知人のほうが多いのだが、友達友達はたぶん友達だろう、という感じで誰かわからないままFacebook申請しまくって、相手も多分そんな雰囲気で承認してもらえて、逆に知り合いだとまったくわからなくてもTwitterの「友達が多いやつは面白いんじゃね?」ということで許可しあって、結果としてまったく新しい人間関係が構築されている。 これはたぶん、「富めるものは富む」っていう傾向なんだろうけど、アーリーアダプター同士が新サービスを楽しむエコシステ

    ネットジャンキーから見たTwitter/Facebook - mizchi log
  • 僕は、「意識が高い学生」にNOと言う。或いは「若者」の時代の閉塞感について #maspla - mizchi log

    先週末、ロフトプラスワンで行われた「マスタープラン」という、平均から充分はみ出す程度に「意識が高い」学生達が、自分たちの世代についてディスカッションするイベントを、こたつに潜ってUstreamで文句をつけながらみていた。彼らは「意識が高い学生」を自認し、また事態をどうにかしようという行動力も十分あるように見える人間達だった。比較的情強でもある点が、多くの他の学生イベントと異なっていたぐらいか。 詳しくはTwitter #maspla を見てもらえれば、なんとなくわかると思う。彼らの意識の高まりと、一般的に言えば上滑り気味のそれが。 僕はそのイベントに、どうしようもない断絶と絶望を感じた。振り返って、僕には、彼らのような起業マインドも自己啓発力もない。ただ少しばかりアーリーアダプターであり、未熟なスクリプトキディであり、彼らが成したいと思っている技術について少し通じているかもしれないが、その

    僕は、「意識が高い学生」にNOと言う。或いは「若者」の時代の閉塞感について #maspla - mizchi log
  • PythonでWebアプリ開発入門のススメ Flask/MongoDB - mizchi log

    TwitBlogin! http://twitblogin.com/ とか作ったことだし、そこそこ開発環境整って、今なら思いつく限りのサービスはさっくり実装できそうだったのでPython初心者向けに書いておく。 少しでもPythonユーザが増えれば幸い。 対象は Python の基的な構文程度はわかるけど、具体的に何から手をつけていいかわからない人 目次 Apache/WSGI/MongoDBの環境構築 flask [ Sinatra風ウェブアプリケーションフレームワーク] pymongo [ MongoDBラッパー ] werkzeug [Web Application デバッガ] jinja2 [ HTMLテンプレートビルダー ] pyquery [ jQuery風HTMLパーサ ] nose [ TDD ] 細かいライブラリの使い方とかPython体の言語仕様とかは適当にぐぐって

    PythonでWebアプリ開発入門のススメ Flask/MongoDB - mizchi log