タグ

ブックマーク / anatoo.hatenablog.com (8)

  • JavaScript(ES2015)でvarやletを使う必要はほぼ無い - id:anatooのブログ

    ES2015でvarやletを使う場面はほとんど無いので、まずconstを使う。constだとダメな場合にはletを使う。 背景 ES2015では、変数を宣言するための文法としてconstとletが導入された。 const foo = 'foo'; let bar = 'bar'; constは再代入できない変数を宣言できる。letは再代入できる変数を宣言できる。 const foo = 'foo'; foo = 'hoge'; // ERROR let bar = 'bar'; bar = 'hoge'; // OK あれ、じゃあvarとletは同じなの?っていうとそうではなく、letやconstはvarとは違って、関数スコープよりも細かなブロック単位のスコープを提供する。例えばconstやletを使うと、if文やfor文などのブロック中でのみ有効な変数を宣言できる。 で、プロジェクト

    JavaScript(ES2015)でvarやletを使う必要はほぼ無い - id:anatooのブログ
  • SMTPサーバを入れたくないけどメールは送りたい時に重宝するMSMTP - id:anatooのブログ

    postfixやqmailなどは入れたくないけど、sendmail相当のものを使ってメールを送りたい時に便利なMSMTPを試してみた。 この記事では、実際の導入からgmailのアカウントを利用してMSMTPでメールを送る方法を書く。 インストール MacOSXだとhomebrewからインストールできる。debianやubuntuだとaptitudeからインストールできる。 $ brew install msmtp$ aptitude install msmtp次に以下のような設定ファイルを~/.msmtprcに置く。 account default host smtp.gmail.com port 587 user hoge@gmail.com password hogehoge from hoge@gmail.com tls on tls_starttls on tls_certchec

    SMTPサーバを入れたくないけどメールは送りたい時に重宝するMSMTP - id:anatooのブログ
    tarchan
    tarchan 2014/01/07
  • github社製ボットフレームワーク、hubotをIRCボットとして導入した話

    修正: 2/10 node-cronを使ったコードの例が間違っていたので修正。 github社製のボットフレームワーク、hubotをIRCボットとして導入する話。 インストール hubotはnode.jsとcoffescriptで書かれたgithub社製のボットフレームワーク。IRCに限らず、campfireやtwitterなどいくつかのアダプタに対応しているが、ここではIRCで利用するための導入手順を記す。 あらかじめnode.jsとnpmをインストールしておいて、hubotをインストールする。 $ git clone git://github.com/github/hubot.git $ cd hubot $ npm installhubotは、ボットが扱うデータを永続化するためにredisというKVSを利用する。redisが入っていない時はエラーになるので動かす前にインストールする。

    github社製ボットフレームワーク、hubotをIRCボットとして導入した話
  • 自分が職を失った経緯 - id:anatooのブログ

    この記事は、How I Fired Myself.という記事の試訳です。 2010年の7月、私は22歳で、カリフォルニアのあるソーシャルゲームのスタートアップで働いていた。卒業したてで、私にとって初めての物の職だった。給料をもらってアパートに住んだ。そのころ私は初めて大人になったような気分でいた。 その会社の主力製品であるRPGのコードを書く二人のエンジニアのうちの一人が私だった。大学では哲学を専攻していた。これはどういうことかと言えば、問題に対してどうやって考えればいいかを知っていた一方で、ベストプラクティスや実用的なデザインパターンに関する知識は最低限しか持っていなかった。私は信じられないほどの熱意でもって自分が持っているごく普通のLAMPの知識を駆使した。 私の悩みの種であるゲームデザイナーはしばしばWorld of Warcraftからインスピレーションを得ていた。WoWは、Bl

    自分が職を失った経緯 - id:anatooのブログ
    tarchan
    tarchan 2013/03/07
    本番機での作業ミスはいつも冷や汗が流れる
  • Node.jsがどうして注目されているのか、もしくはどうして他のサーバサイドJavaScriptはスルーされているのか - id:anatooのブログ

    サーバサイドJavaScriptにはNode.js以前にもいくつかの実装がある。ちょっと前に注目されかけたものだと、現在はAppcelerater社に買収されたAptana社が出していたJaxerなどがあるが、きちんと調べるとRingoJsやnarwhalやv8cgiなど選択肢の一つとして数えられるサーバサイドJavaScript実装がいくつかある。ただ、これらはNode.jsのように注目を浴びているわけではない。 Node.jsとこれらの既存のサーバサイドJavaScriptの違いは、他のサーバサイドJSの動作モデルが既存のサーバサイドのものと変わらないのに対して、Node.jsの場合はそうではないから。具体的には、HTTPコネクションのハンドリング戦略が違っていて、既存の動作モデルが1コネクションに対して1プロセス/スレッド消費するのに対して、Node.jsの場合は非同期I/Oを用いて

    Node.jsがどうして注目されているのか、もしくはどうして他のサーバサイドJavaScriptはスルーされているのか - id:anatooのブログ
    tarchan
    tarchan 2011/06/16
    >既存の動作モデルが1コネクションに対して1プロセス/スレッド消費するのに対して、Node.jsの場合は非同期I/Oを用いて一つのプロセスでいくつものHTTPコネクションを扱う。
  • jQueryはモナドだ - id:anatooのブログ

    この記事はjQuery is a Monad | Important Shockという記事の勝手訳です。 追記1: bonotakeさんが補足記事を書いてくれています → JQueryがモナドかどうかとか - たけをの日記@天竺から帰ってきたよ 追記2: hirataraさんが補足記事を書いてくれています → jQueryは当にモナドだった - 北海道苫小牧市出身のPGが書くブログ Haskellプログラマーは誰しもがモナドに関する各々のチュートリアルを書くと言われる。というのも、一度モナドの定義とその可能性を理解すれば、モナド全体を囲む神秘性に挑戦して打ち破るのが容易になるからだ。門外漢からすれば、モナドはHaskellを真に理解することを妨げる不可解な障壁だ。モナドはとても不適当な名前で呪われていて、一風変わった文法を持ち、一度に何もかもやってしまう様に見える。しかしながら、その動き

    jQueryはモナドだ - id:anatooのブログ
  • PHPで書いたはてな記法パーサ&レンダラをopenpearで公開しています - id:anatooのブログ

    HatenaSyntax \ Package \ Openpear はてな記法パーサ&レンダラをopenpearで公開しています。現在beta版です。 CodeReposに置いていたはてな記法パーサの後継ですが、コードは全て書き直されています。使い方も違います。 CodeRepos版とopenpear版との違いは以下の通りです。 pearを通してインストールする 構文木を取り出すことができる いくつか細かな部分に対応できるようになった パーサの実装が変わった pearを通じてインストールする CodeRepos版の様にファイルを一つ保存してインストール終わり、という風にはいかず、openpear版の場合はpearを通じてインストールしてもらうことになります。 インストールする方法はOpenpear :: Open PEAR Repository ChannelとHatenaSyntax \

    PHPで書いたはてな記法パーサ&レンダラをopenpearで公開しています - id:anatooのブログ
  • JavaScriptの関数オブジェクトを拡張する - id:anatooのブログ

    関数オブジェクトにあると便利なんじゃないかと思ったメソッドを適当に生やしてみた。 // 関数を合成するメソッド Function.prototype.compose = function(a) { var self = this; return function() { return self(a.apply(null, arguments)); }; }; // 合成する順番を逆にした以外はcomposeと同じ Function.prototype.prepose = function(a) { var self = this; return function() { return a(self.apply(null, arguments)); }; }; // カリー化する Function.prototype.bind = function() { var base = []; fo

    JavaScriptの関数オブジェクトを拡張する - id:anatooのブログ
  • 1