Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

恒等モナド Maybeモナド リストモナド 継続モナド Do 記法 連鎖呼び出し モナド とは、一連のステップによって実行する計算を記述する際に使用する、1つのデザインパターンです。 純粋関数型プログラミング言語 では、モナドは 副作用を管理する ために広く利用されていますが、 マルチパラダイム言語では、モナドで複雑性を制御することもできます 。 モナドはデータ型をラップして、空の値を自動的に伝播したり( Maybe モナド)、非同期コードを簡略化したり( 継続 モナド)といった、新たな動作を既存のデータ型に追加します。 一連のコードをモナドと見なすためには、その構造には次に挙げる3つの要素が含まれていなければなりません。 型コンストラクタ — 基本的な型に対してモナドの動作を追加した型を作成する機能です。例えば、基本的なデータ型 number に対して、 Maybe<number> とい
JavaScriptにもScalaにもPromiseという機能がありますが、全く内容が違って、しかもScalaのFutureがむしろJavaScriptのPromiseに似た機能なのでそれを整理します。 基本的には、言語によってちょっと違うFuture/Promiseをまとめてみたのシリーズの内容をはしょったものです。 まずはJavaScriptのPromiseは、非同期処理自体を抽象化したものとなっております。しかも、thenというPromiseを更に関数を適用して得たでPromiseでPromiseChainを書くことも可能です。 詳しくは、AzuさんのPromiseの本が詳しく書かれていますが、簡単な実装例で言うと、 function doubleUp(value) { return value * 2; } function increment(value) { return va
JavaScriptの現状を支えるエコシステム群を軽く紹介して、モジュールについて少し掘り下げた勉強会
What's Milkcocoa? Milkcocoaを利用すると、自前でサーバを準備せずに弊社が提供するクライアントSDKを介してデータの保存、更新、取得またPub/Sub通信を行うことが出来ます。通信はTLS暗号化され、保存されたデータは自動的にレプリケーションされます。クライアントからの通信はErlangサーバにて処理され、多くのトランザクションに対応することが出来ます。 例えば以下のコードは、Milkcocoaのデータストアにデータを保存する例です。保存したデータはMilkcocoaの管理画面で確認することができます。データは、Milkcocoaのデータベースに保存されるため、データベース用のサーバーを用意する必要はありません。 var milkcocoa = new MilkCocoa('app_id.mlkcca.com'); var dataStore = milkcocoa
@tsuchikazuです。半年ほど仕事でAngularと戯れています。 3/21に開催されたng-japanでは、あと1週間後ほどでリリースされるとアナウンスされていたAngular 1.4 あれから10週間ほど経った5/27。ついに、Angular1.4の安定版がリリースされました。 Developer Guide: Migrating from 1.3 to 1.4とCHANGELOGから、Breaking Changeを中心に簡単にまとめましたので、公開します。 概要 Angular1.4では、主にngAnimateの大きなリファクタリングと、ngMessagesの機能改善、$cookiesへの新しいAPIが追加されました。 ngAnimateのリファクタリングは、今まで存在していたissueやバグフィックスと、より便利なアニメーションを提供するための新APIのために行われました。
Lambdaを使うとS3アクセスログの処理が出来るので、EC2を使わずにちょっとした動的サイトとして使うことが出来そうです。簡単そうなところで、簡易的なアクセスログカウンタを作ってみました。S3のstatic website hostingのアドオンとしてどうでしょうか? 仕組み S3のログ更新があったあと、Lambdaでログをパースして、index.htmlへのアクセス数をカウントします。カウントした数字は、S3上に「counter.txt」という名前のファイルでおいておきます。新規でログが来た場合に、このファイルの数字を更新していきます。 index.htmlの方には、このcounter.txtの数字を読み込んで、カウンター画像を作るコードをjavascriptで入れておきます。こうすることで、counter.txtが更新されると、カウンターがアップしていく仕組みです。 0.pngから
validate: function (attrs) { var errors = []; if (_.isUndefined(attrs.name)) { errors.push({ attr: 'name', message: 'Name is required' }); } if (errors.length) return errors; } まず Backbone の基本事項として下記を再確認してください: validate メソッドが真を返すと invalid イベントが発生する 返り値が invalid イベントのコールバックに渡される で、上記のコードサンプルは errors という配列を作っています。なんでわざわざこんなことをしているのかというと、コールバックに複数の属性の情報を渡すには配列などを利用するしか無いわけです。そして View のコールバックでその配列の値をパ
以前こんな記事を書きましたが、Haxe 3.2で状況が改善したようです。 とりわけ嬉しいと思われるのは @:nativeマクロがクラスフィールドをサポート 可変長引数のサポート Union Types的な機能をサポート でしょうか。 nativeマクロがメンバ変数やメソッドにも使えるようになった @:nativeというマクロは、以前は型名のエイリアスにしか使えませんでした。そのため、利用法としてはモジュール名が大文字から始まる(Haxeではモジュール名は小文字からはじまらないといけない)というようなケースくらいにしか使えませんでした。 ところがJavaScriptでは、$記号や、catchなどの予約語をメソッドに使うなどの行為は実際チャメシ・インシデントです。 一応Haxeでも、propertyを使ってクロージャを返すような型定義をする(うろ覚え)……などの裏技で回避出来るんですが、@:o
Brendan Eich Standardization "Things that are impossible just take longer." - Hixie What was it like to hack JS in 10 days? Me in 1993, before I created JavaScript in 10 days 1995, after I was done creating JS in 10 days Java was the big Web VM JavaScript was "little brother" Think back to 1995... what was on TV then? I had my big break that year... I'd go to a real library to read Computer Scienc
「gulpって何だよ、makeでいいじゃん(要約」論争について、私もちょっと一本講釈をぶってみることにする。あれやこれやといった実利的な話をするつもりはない。そういうものは既に書いた人がいるのでそちらを参照のこと。 Gruntの思い出 Gruntは、私の印象で言えば車輪の再発明の失敗作のようなもので、タスク間の依存関係が破滅への一途をたどり管理不能に至るなど、宣言型の負の側面が強く出てしまった。しかし、設定は本当にサンプルコードのコピペだけで組み立てられるので、JSが不得手なデザイナーなどには非常に受けが良かったという点は忘れてはならない。ちょうど、html5ブームが本格化して, Apache Antとかに慣れ親しんだJava(主にSIer)系の人が入ってきたタイミングにあった道具かつ、Yeomanファミリーにも組み込まれており、それでいて簡単な事をやらせるには悪くはない具合のシンプルさ、
var bunyan = require('bunyan'); var log = bunyan.createLogger({name: 'myApp'}); module.exports = function (req, res, next) { req.logError = function (error, message) { log.error({ req:req, res:res, error:error }, message); } next(); }; /** * StackTrace APIを利用して呼び出し元を取得する * * @param {Number} stackIndex 取得するstacktraceのindex, デフォルトは1 * @return {Object} { file: 'ファイル名’, line: '行番号', func: '関数名(設定されている
(このシリーズのPart 2はこちら: Node.jsフロー制御 Part 2 – FiberとGenerator ) 今回は、JavaScript/node.jsアプリケーションのフロー制御に対するアプローチを、いくつか取り上げて比較してみたいと思います。 通常のコールバックを使う 平坦化されたコールバックを使う Async ( @caolan 作)を使う Highland (こちらも @caolan 作)を使う Bluebird ( @petkaantonov 作)を使う Expressフレームワークを使った以下のルート処理(お粗末ですが)を例に見てみましょう。 ファイルから読み込む いくつかのプロセスを実行する(ステップの数は3つ) プロセスとは、単に拡張データをコールバックする任意の非同期処理を指します ファイルに結果を書き出す リクエストに対して成功またはエラーのメッセージを返す
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く