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

Swiftではクロージャを関数ポインタに近い形で使えるため、UIViewのタッチイベントなどを簡単に外部に分離できます。 今回は私のお気に入りの方法で、タッチイベント4種類を外部から呼べるようにする例を挙げます。 (※2015-10-20: Swift1.2からSwift2.0に修正しました) UIView派生クラス タッチイベント用にev_touches_****という変数を4つ作成し、それぞれの初期化にクロージャを入れておきます。 クロージャ内の処理はからっぽにしておきます。こうするとクロージャを初期化で入れておけるので、各オブジェクトのnilチェックしなくても問題なく動作します。またSwiftの型推論が力を発揮します。関数ポインタのようにややこしい型定義をしなくてすむので楽チンです。 KNGView.swift import UIKit class KNGView : UIView
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに 中級以上のJavaScriptプログラマを目指す上で、避けては通れない壁の一つは クロージャ(Closure) だと思います。「関数の外側で定義された変数を持つ関数の実行時オブジェクトです」とさらっと説明されることが多いですが、シンプルなだけに理解したつもりになって実は使いどころが分からないってことになりがちです。きちんと自分のものにするには基本から丁寧に理解しないとダメですねってことで、今回はクロージャについてその背景から調べてみたいと思います。 歴史と語源 まずは歴史から振り返ってみたいと思います。Wikipediaによる
3. いまどきのWeb開発 • 静的なHTML+API • アプリとWebの共通化、SPA • コンパイルされたJS • AltJS、Closure Compiler • MV*、データバインディング • Vue.js、AngularJS • Virtual DOM • React 4. 静的なHTML+API • サーバサイドではHTMLを生成しない • スマホ用アプリとWebでバックエンドを共通化 • Single Page Applicationsの台頭 • JSON等のAPIのみのレスポンス • 脆弱性検査する側 • 「ページ単位」でのボリューム管理の破たん • 反射型、蓄積型XSSの根絶 • もちろんSQLインジェクションなども存在しない 5. コンパイルされたJS • AltJS、Closure Compiler等の利用 • TypeScript、CoffeeScript、JS
If you've worked with blocks in C or Objective-C or lambdas in Ruby, then you won't have a hard time wrapping your head around the concept of closures. Closures are nothing more than blocks of functionality that you can pass around in your code. As a matter of fact, we've already worked with closures in the previous lessons. That's right: functions are closures too. Let us start with the basics an
ObjectiveCで用意されていた関数や,ObjectiveC関連の情報をあさっていると,頻繁にクロージャに出くわす. [hogeSuccess:^{ hogehoge; }]; よく,クロージャとかブロック構文とか呼ばれるヤツだ. ^自体はブロックと呼ばれるもので,これを関数の引数に渡しているから,ブロック変数とか呼ばれていたりする. 使用方法は関数の引数に限らず,他のところでも使えるのだが,とりあえずこれをブロック変数として使っているメソッドが,結構いっぱい用意されている. swiftでクロージャが定義されているメソッドを呼ばなきゃいけないときや,自分でクロージャを使いたいことがよくあるのでメモしておく. 引数を取らないクロージャをsiwftで // 定義 func hogeSuccess(success:()->Void) { // なんか処理 success() } // 呼び出
compile JS to better JS 超圧縮と最適化 JSDocベースの静的型づけ Google製品にはだいたい入っているので毎日使っているよ JSDocベースの静的型づけ 冗長but既存JSとの親和性(コンパイルいらない) JSの進化に追随 コンパイルしない どうせJSDoc書くだろ? Githubに移行 対応 ES6 型推論 RefasterJS(自動リファクタ) Conformance(規約チェック) compile ES6 to ES3 http://kangax.github.io/compat-table/es6/ 対応チェックの自動化 Traceurを使わない理由 コメント残せない パフォーマンス 二重コンパイルしちゃう 微妙なところ 自前実装の基準が不明 ランタイムがでかい コンパイル不要部分はes6shimに任せたら? AltJS オレオレSyntax うち有用
2013年4月13日追記: PHP 5.5 で finally 句が追加されたので Loan パターンを追記しました。 Closure Design Patterns で紹介されている Groovy のコードを PHP に翻訳しました。無名関数とクロージャを区別しても情報が分散してしまうのでクロージャに統一しました。Method Combination (関数合成)は省略しました。原文ではカリー化(currying) と書いている箇所を部分適用 (partial application) に訂正しました。カリー化と部分適用の違いについてはこちらのブログに解説があります。Groovy コアに本当のカリー化メソッドを採用することへの要望があり、長期的には取り込まれる見込みのようです。 これらのパターンは Venkat Subramaniam 氏および Neal Ford 氏のプレゼン資料から抜
Facebook(Parse)が提供している Bolts-iOS は有名だし便利そうだけど、最初使い方がわかりづらい。READMEはParse利用時を想定して書かれているし、実際、ちょっととっつきにくいんですよね。サンプルコードもちゃんと書くとややこしくなりがち。それを出来るだけ簡単に説明しようと思います。そのために、細かい説明は端折ります。コードは説明的に冗長にします。まず使って、そして深めていくのが効率が高いやり方だと思うので。僕が伝えたいのは、 Bolts-iOSは実は簡単なんだぜ! ってことです!サンプルプロジェクトは末尾に用意しました。 Swiftで説明していますが、使い方はObjective-Cでも同じです。適度に読み替えて下さい。 Boltsの簡単な説明 Boltsは非同期処理をより扱いやすくします。非同期処理をよく使うのは通信周りだと思いますが、通信終了時にClosure(
クロージャはわかりづらい。 なんでかと言うと、以下の2つです。 名前 定義がよくわからない Wikipediaさんなんかで調べると。 クロージャ(クロージャー、英: closure)、関数閉包はプログラミング言語における関数オブジェクトの一種。いくつかの言語ではラムダ式や無名関数で実現している。 関数閉包!! 関数閉包、意味不明すぎる。なんかこの字面が意味分からなくしようとしているような気配すら感じる。(とはいえ、じゃあどんな名前が良いかと言えば、わかりませんし。それに一般的には「クロージャ」で通っていますから、別にいいのですが。) 関数ヘイホウってなに?初めてクロージャを学ぶような僕は、もう、むしろ笑えます。ちなみに、その先の**「関数オブジェクトの一種」とか「ラムダ式」**なんかも知りません。 けど、JavaScriptのクロージャの事例は、とても分かりやすい。 関数の中に関数がありま
Swiftが発表されてから、とりあえずは、 The Swift Programming Languageを読んでみる事からはじめたわけですが、 ひとまず現在はXcode6betaを元にアレやコレや触りながら 理解を深めていってるような感じもあるので、このあたりでひとまず一区切りとして The Swift Programming Languageでブックマークをつけた箇所をまとめてみようかなと [追記] ブコメでご指摘頂きまして、記述が古い部分がありましたので 修正をかけました。 以下内容は2014/07/22 時点でのものという事でご了承お願い致しますm(_ _)m 1.The Basic (p46) これはスタートということで。。 変数宣言など基礎的な部分が記述されています。 2.The Basic (p75) Optionals(?)について。 Swiftにふれて一番ハマった所でありま
Jul 23, 2014 AppleのSwift Blogを読んで@auto_closureが面白そうだと思い活用方法を考えてみました。 @auto_closureはclosureを取る引数につけると、呼び出し側はclosureの{}を省略できるようになるというものです。 Swift Blogによると、AppleはSwiftでのassert()などの実装にこれを利用しているそうです。 今回はこれを利用して、条件が成立するまで待つXCTestExpectationを実装してみました。 以下のように使うことができます。 func testBlockOperation() { let queue = NSOperationQueue() let operation = NSBlockOperation(block: { NSThread.sleepForTimeInterval(1.0) })
天下一altJS武闘会での発表 http://connpass.com/event/6402/ Google Closure Compilerの最新事情についてRead less
さて、前の記事からずいぶん時間が経ってしまいましたが「piine!」の技術的こだわりに触れておこうと思います。 こだわりポイント 力学モデル 操作方法はタップだけ 非ネイティブアプリ Webフォント 技術的こだわりポイント Closure Library + Socket.IO Github pages + AmazonEC2 それぞれを順に見ていきましょう。 こだわりポイント 力学モデル デモを用意しました。 まずは存分に力学モデルをお楽しみください。 プロジェクターに表示される側のpiine!では、挨拶を聞いているユーザーが点として表示されます。 ユーザーが参加・退出するとき点が増えたり減ったりするわけですが、このとき点の配置を滑らかに遷移させるために力学モデルを使っています。円上の点はそれぞれの距離が近いほど強い斥力が働きます。この斥力によって、それぞれの点は円を均等に分割する点へと
はいこんにちはこんにちは! 今日はラムダ式でクロージャとDSLの解説をします。 ガチなラムダ計算の話ではまったくないのでご安心ください。函数型プログラミング言語の話でもないので怯える必要はありません。 それと、実用なDSLそのものではなく、どちらかといふと ふざけたDSL をシンプルに作ってみました! といふ例題なのでその点はご承知おきください。 ##謎のコピペとDSL まづはこちらのソースコードをお読みください。 # -*- Coding: utf-8 -*- scripter = ->(*args){->{puts args.join("\n")}} title = ->(text){"『#{text}』\n"} paragraph = ->(*args){args.join("\n")+"\n"} chara = ->(name){ ->(text){"#{name}「#{text}
先日JSHint 1.1.0がリリースされ、そのリリースノートに気になる記述がありました。 Adds new option gcl to make JSHint style checks compatible with Google Closure Linter. うそーまじでーなにそれヤバイ! 普段は仕事でClosureにどっぷりなせいもあってClosure Linterを使っているんですが、Closure LinterってJSDocとかお作法的なとこはチェックしてくれるけど、他のLintツールが当たり前にチェックしてくれるとこはやってくれないんですよね。たとえばvarの付け忘れとか。 Closure Compilerを使ってコンパイル時にチェックすることもできるけど、規模が大きくなってくるとその結果が出るまでに10分とか待たないといけなくっていやな感じー。Closure Linterと
日頃から愛用してるIDEのPhpStorm 6 がリリースされました。JavaScriptにコンパイルされる系の言語のサポートが強化されたのが目立ちますね。 今日は、6の新機能というわけではないですが、WebStormを使ってJavaScriptファイルをMinifyする方法について紹介します。 概要 WebStormでjsファイルを編集したら自動的にMinifyされるようにします。JavaScriptにおいてMinifyとは余計な空白をとったり変数名を短くしたりして、機能的動作を変えずにJavaScriptのファイルサイズだけ小さくすることをいいます。今回はClosure Compilerを使います。 インストール まず、Minifyを実行するプログラムをダウンロードします。Getting Started with the Closure Compiler Applicationからリン
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く