タグ

patternとprogrammingに関するraimon49のブックマーク (215)

  • JavaScriptのIIFEとモジュールパターン | fenomas.com

    他の多くのフラッシャーと同じく、最近色々HTML5開発を触ってみている。(現時点ではEdge Animateで色々を。)で、JSはAS3とかなり似ているため、それほど慣れにくくはない。(ほとんどのJSはAS3としてでもコンパイルできるし。JSを横目で見たら、変数の型を宣言しない人が書いたAS3と見間違えられる。) ただしJSとAS3は似ている言語にしても、使われる方言が違う。例えばこれ: 最初は「はあ?」と思った。でもJSにはよ〜くあるのだ。このパターンは英語圏で「IIFE」(イッフィー)とよばれる:「Immediately-invoked function expression」。つまり即時に実行される関数エクスプレッション。まあ、コードを見ればそういうもんですね。(@spacelogueさんによると日語では即時関数というんだって) まあそれはそれで良いんだが、何のために使うのだろう?

    raimon49
    raimon49 2015/10/20
    >英語圏で「IIFE」(イッフィー)とよばれる:「Immediately-invoked function expression」。つまり即時に実行される関数エクスプレッション。
  • Microsoft Corporation

    Microsoft Learn. Spark possibility. Build skills that open doors. See all you can do with documentation, hands-on training, and certifications to help you get the most from Microsoft products. Learn by doing Gain the skills you can apply to everyday situations through hands-on training personalized to your needs, at your own pace or with our global network of learning partners. Take training Find

    Microsoft Corporation
    raimon49
    raimon49 2015/10/19
    REPL付くんだ。便利そうでもパフォーマンス的に厳しい文法はC#に取り込まれないポリシー。
  • Testing Swift's ErrorType: An Exploration

    In this post, we explore the nature of Swift’s new error type, looking at the possibilities and restrictions for testing error handling implementations. We end with an illustrative example, and some helpful resources. How to Implement the ErrorType Protocol If we jump to the definition of the ErrorType protocol in the Swift standard library, we see that it doesn’t contain many obvious requirements

    Testing Swift's ErrorType: An Exploration
    raimon49
    raimon49 2015/08/12
    ErrorTypeに繋がるNSErrorの系譜。domainとcodeプロ パティ。なかなかマニアック。
  • Google流 JavaScript におけるクラス定義の実現方法

    目次 2019年追記 はじめに クラス実現のために必要な JavaScript の言語仕様 function this call new 演算子 prototype チェーン プロパティ: prototype Google Closure 流のクラスの実現方法の概要 クラスの宣言とコンストラクタの定義 メンバ変数 (インスタンス変数) メソッド定義と呼び出し private, protected 継承 プロトタイプチェーンを利用してメソッドを親クラスから引き継ぐ 親クラスのコンストラクタの呼び出し メソッドオーバーライドと親クラスのメソッドの呼び出し 多重継承 abstract, interface inherits の実際のコード 良くないクラス実現方法 ES6 のクラス 2019年追記 この記事ではclassが導入されたES6以前のJavaScriptでどのようにクラスに相当するものを

    raimon49
    raimon49 2015/08/07
    妥当なやり方なんだけど、そろそろ何世代か前の方法という印象もある。
  • Swift 2でのAPIKit + Himotoki

    Jul 29, 2015 Swift 2の利点を最大限に活かすため、APIKitのデザインは大幅に刷新されました。型制約つきprotocol extensionsとHimotokiと組み合わせるとresponseFromObject(_:URLResponse:)にデフォルト実装を与えられるので、個々のリクエストの定義を楽にできます。以下はその例です。 // https://developer.github.com/v3/search/#search-repositories struct SearchRepositoriesRequest: GitHubRequestType { enum Sort: String { case Stars = "stars" case Forks = "forks" case Updated = "updated" } let query: Strin

    Swift 2でのAPIKit + Himotoki
  • Swift2でiOSアプリの開発を始める前に知っておくべきこと

    こんにちは、プラットフォーム開発グループの山口洋平です。 現在、新規iOSアプリをSwiftを使って開発しています。 先月WWDC2015が開催され、そこで Swift2 が発表されました。 Swiftのオープンソース化など色々と話題になりましたが、Swift自体も様々な機能拡張が行われ、これからのiOSアプリ開発は Swift2 が主流になっていくと思われます。 Swift2を使ったアプリの申請は9月頃まで待つ必要がありますが、今回は先立ってSwift2を使ってコードを書くなら知っておくべき機能、テクニックについて紹介していきたいと思います。 動作確認環境 Xcode 7.0 β4 で動作確認を行いました。 β版なので、今回紹介するコードは今後動かなくなる可能性があります。 guard による早期リターン Optional型を扱うとき、その値がnilなら早く処理を終えたいと思うことが何度

    Swift2でiOSアプリの開発を始める前に知っておくべきこと
    raimon49
    raimon49 2015/07/24
    NSErrorPointerのシンタックスシュガーとしてのthrow〜catch文によるError Handling
  • Goで使える10のテクニック | POSTD

    ここでは、私がたどりついた最善のやり方を紹介しましょう。個人的に過去数年にわたって大量のGoコードと付き合ってきた経験から集めたものです。これらは全て非常にスケーラビリティがあると思っています。私が、スケールする、と言うときは次のような意味があります。 アプリケーションが求める環境は、アジャイル環境の中で変化していきます。開発の3、4か月後に、全てをリファクタリングする必要が出てくるなど、考えたくもないはずです。新しい機能は簡単に追加できなくては意味がありません。 あなたのアプリケーションは多くの人々によって開発されます。可読性が高く、維持しやすいものでなくてはなりません。 あなたのアプリケーションは大勢の人々に使われます。バグは容易に特定でき、修正できなくてはなりません。 長期的にみるとこれらのことが重要になる、ということを私は今までに学んできました。小さなことであっても、多数に影響しま

    Goで使える10のテクニック | POSTD
  • SwiftでCocoa Delegation Patternに合わせたカスタムビューのProtocolを設計する - Steel Dragon 14106

    SwiftCocoa Delegation Patternに合わせたカスタムビューのProtocolを設計する By raimon, 2015-07-12(日), in category Ios Delegateを通したカスタムビューとのやり取り Objective-C/Swiftでは各オブジェクトの応答できるメソッドの約束事(他のプログラミング言語ではInterfaceと呼ばれるもの)としてProtocolを宣言する。 Protocolの中でもUIKitに含まれるようなビュークラスでは、Cocoa Delegation Patternと形容されるやり方が存在しており、自前でカスタムビューを作る時も、このパターンに合わせておくとユーザーコードも分かり易いものになる。 Swiftでこのやり方をする場合のコードを整理しておく。 Objective-Cの場合 Objective-Cの場合は、定

  • Javaで1行ずつテキストデータを読み込むイディオムの変遷 - argius note

    テキストデータを読み込む場合、言語にかかわらず1行ずつ読み込んで処理します。ここではこのイディオムを"read-lines"と呼ぶことにします。 スクリプト言語なんかだと大抵、最初からforeachで済んでしまっていたりしますが、初期のJavaではちょっと面倒な手順が必要でした。 新しいバージョンではだいぶ簡単簡潔に書けるようになりましたが、今度はたくさんありすぎて、どれがなんなのかが良くわからなくなっています(大袈裟)。 そこで今回は、"read-lines"の変遷についてまとめてみました。 最近Javaを始めた方がバージョンが古い時に書かれたソースコードを読むときに役に立つ...かも知れません。 目次 基 BufferedReader (Java1.1~) Scannerと拡張for文 (Java5~) java.nio.file.Filesとtry-with-resources(J

    Javaで1行ずつテキストデータを読み込むイディオムの変遷 - argius note
    raimon49
    raimon49 2015/06/07
    Apache CommonsのUtils系が地味に便利という再発見にもなってる。
  • Swiftのパワー(objc.io #16-1 日本語訳) - Qiita

    Issue #16 Swift, September 2014 By Chris Eidhof まずはじめに、私は非常に偏っていることを認めなくてはなりません。私はSwiftが大好きです。私がCocoaのエコシステムに関わって以来起こったことの中で一番いい出来事だと思います。なぜそう思うか、それを私のSwift、Objective-C、Haskellの経験を共有することで伝えたいと思います。この記事で取り上げることはベストプラクティスということではなく(執筆時点でSwiftは新しすぎて確立したベストプラクティスはまだありません)、Swiftがどこで威力を発揮するのか、その例をお見せします。 少し個人的なバックグラウンドを説明すると、iOS、OS Xプラットフォームのプログラマーになる前、私は何年かHaskellを(他の関数型言語とともに)書いていました。私は今でもHaskellは経験した中

    Swiftのパワー(objc.io #16-1 日本語訳) - Qiita
    raimon49
    raimon49 2015/05/27
    取り得る値の種類が有限でパターンマッチさせたいものは積極的にenumで表現する。type safetyとimmutabilityの嬉しさについて。
  • 既存のObjective-CアプリケーションをSwiftで書き換えた話 - クックパッド開発者ブログ

    海外事業向けのiOSアプリケーション開発を担当している西山(@yuseinishiyama)です。クックパッドは現在、海外複数カ国に向けてサービスを展開しています。 主にObjective-Cで記述されたアプリケーションを全面的にSwiftに書き換える機会があったので、その際に得た知見や書き換えるに至った動機を共有します。 書き換えに至るまでの経緯 この項では、書き換えに至るまでの経緯について説明します。 Objective-C期 アプリケーションの開発は2014年7月頃にスタートしました。Swiftの発表直後でしたが、時期尚早ということもあり、Objective-Cで実装することになりました。 Objective-C、Swift混在期 2014年10月頃から、Swiftへの段階的な移行のために、新規のコードをSwiftで書くようになりました。Swiftの記述力や、ヘッダと実装を行き来しな

    既存のObjective-CアプリケーションをSwiftで書き換えた話 - クックパッド開発者ブログ
    raimon49
    raimon49 2015/04/27
    ビューよりもモデルやAPIクライアント部分をSwift化した方がメリットを享受できるし書き換えのモチベーションになるが、そのためにはフルSwift化が必要だったという話。iOS 7をサポートする場合はDynamic Frameworkが使えない。
  • Objective-C オブジェクト間通信のパターン - Toyship.org

    この記事は、Tech Women Advent Calendar 2014の17日目の記事です。 基ですが、あらためてiOS開発でのオブジェクト間通信についてまとめてみました。 オブジェクト間通信 Objective-Cでソースコードを書いているときに、オブジェクト同士で通信を行う必要は頻繁に発生します。 通信元のオブジェクトが通信先のポインタを持っている場合もあるし、ない場合もあるし。 通信元、通信先のどちらのオブジェクトも動的に生成されたり消えたりするし。 複数の相手に通信したい場合もあるし、一つだけでいい場合もあるし。 いろいろな状況に応じてこのオブジェクト間通信を使い分ける必要が有ります。 「呼び出し元」と「呼び出し先」だとわかりにくいので、AliceがBobやCarolをよぶ、(AliceからBobやCarolにメッセージを送る)としてみましょう。 Target-Action

    Objective-C オブジェクト間通信のパターン - Toyship.org
    raimon49
    raimon49 2015/04/18
    NSNotificationCenterとKVOの通知パターンはオブジェクトのライフサイクルを意識したremoveが必要なんだよね。
  • Node.jsフロー制御 Part 1 – コールバック地獄 vs. Async vs. Highland | POSTD

    (このシリーズのPart 2はこちら: Node.jsフロー制御 Part 2 – FiberとGenerator ) 今回は、JavaScript/node.jsアプリケーションのフロー制御に対するアプローチを、いくつか取り上げて比較してみたいと思います。 通常のコールバックを使う 平坦化されたコールバックを使う Async ( @caolan 作)を使う Highland (こちらも @caolan 作)を使う Bluebird ( @petkaantonov 作)を使う Expressフレームワークを使った以下のルート処理(お粗末ですが)を例に見てみましょう。 ファイルから読み込む いくつかのプロセスを実行する(ステップの数は3つ) プロセスとは、単に拡張データをコールバックする任意の非同期処理を指します ファイルに結果を書き出す リクエストに対して成功またはエラーのメッセージを返す

    Node.jsフロー制御 Part 1 – コールバック地獄 vs. Async vs. Highland | POSTD
  • Introducing APIKit

    let path = "/search/repositories" let parameters = [ "q": "APIKit", "sort": "stars", "order": "asc", ] GitHub.call(.GET, path, parameters) { JSON, error in if error != nil { println("error: \(error!.localizedDescription)”) } else { self.repositories = /* model object from JSON */ } }

    Introducing APIKit
    raimon49
    raimon49 2015/03/14
    型安全・XcodeフレンドリーなAPIクライアントを実装するためのライブラリ コールバック時にOptionalを意識しなくても良い
  • APIKitでSwiftらしいAPIクライアントを実装する

    Feb 22, 2015 堅牢で使いやすいAPIクライアントをSwiftで実装したいをライブラリにまとめてAPIKitとしてリリースしました。 なお、”Swiftらしい”というのは主観です。 https://github.com/ishkawa/APIKit 利用側のコード リクエストに渡すパラメーターは型によって明らかになっている。 レスポンスはモデルオブジェクトとして受け取れる。 成功時にレスポンスを非オプショナルな値で受け取れる。 失敗時にエラーを非オプショナルな値で受け取れる。 // リクエストに渡すパラメーターを型で制限 let request = GitHub.Endpoint.SearchRepositories(query: "APIKit", sort: .Stars) GitHub.sendRequest(request) { response in // option

    APIKitでSwiftらしいAPIクライアントを実装する
  • jQueryとAngularJSにおけるAjaxの微妙な違い | ゆっくりと…

    AngularJS の勉強、始めました。 最初はそのプログラミングに関する独特のお約束事項にイラッとしましたが、キモであろう DI を「疎な関係のクラスを(実行時に)結びつけるのに必要な仕組み」と割り切り、DI – 猿でも分かる! Dependency Injection: 依存性の注入 で引用されている ITpro 記事 の クラス図 をコードから想像できるようになったところで、それなりに面白くなってきました。 何より「jQuery が要らなくなる!」のがとっても快感なんです (つらい時もあるけど…)。 さて今回は、jQuery まみれのページを AngularJS で書き換えた時に気付いた Ajax の動作 − 非同期通信の戻り値をいつどこで DOM に反映するか − に関する話題を書いてみます。 jQueryの場合 検索のクエリを渡すと Github のリポジトリを返す関数を例にとっ

  • Value Objects と Immutable - かとじゅんの技術日誌

    おつかれさまです。そろそろ、プログラミングに関するエントリも書かなければw DDDの勉強を開始するにあたって、一番最初にEntitiesとValue Objectsに出会う。 今回は、まず先にValue Objectsと関連が深いImmutableについて、考えてみよう。なぜ、Value ObjectsかというとOODの基礎をなすからだ。基礎が弱いとその上の建造物ももろいものとなってしまう。だからValue Objectsがまず先。なーんだ、ただのJavaBeansなんでしょ、と思うと痛い目にあうよw 値を表すのがValue Objects。説明することが目的のオブジェクトである。ここに説明されているとおり。 ● Value Objects(値オブジェクト)パターン エンティティとは逆に、たとえば「色」や「量」のように、その属性だけが重要で、アイデンティティを考えることに意味のないオブジェ

    Value Objects と Immutable - かとじゅんの技術日誌
    raimon49
    raimon49 2015/01/09
    Effective Javaのやや難解な言い回しをDDDのValue Objectパターンに翻訳、Immutableな値オブジェクトとして振る舞わせるサンプルコード。
  • Cocoa Design Patterns | Apple Developer Documentation

    Adopt and interoperate with Cocoa design patterns in your Swift apps.

    Cocoa Design Patterns | Apple Developer Documentation
    raimon49
    raimon49 2014/12/26
    if–letパターンによるrespondsToSelector:の置き換え、NSErrorに書き込ませるハンドリング、KVO、is演算子によるクラスの動的判定とas演算子による型キャスト
  • O/Rマッパーによるトラブルを未然に防ぐ

    This document summarizes a microservices meetup hosted by @mosa_siru. Key points include: 1. @mosa_siru is an engineer at DeNA and CTO of Gunosy. 2. The meetup covered Gunosy's architecture with over 45 GitHub repositories, 30 stacks, 10 Go APIs, and 10 Python batch processes using AWS services like Kinesis, Lambda, SQS and API Gateway. 3. Challenges discussed were managing 30 microservices, ensur

    O/Rマッパーによるトラブルを未然に防ぐ
    raimon49
    raimon49 2014/12/22
    クエリオブジェクト方式ORMで起きるトラブルと対策。クエリID付与してロギングや遅延フェッチなど。
  • Option Table (GNU Coding Standards)

    4.10 Table of Long Options Here is a table of long options used by GNU programs. It is surely incomplete, but we aim to list all the options that a new program might want to be compatible with. If you use names not already in the table, please send bug-standards@gnu.org a list of them, with their meanings, so we can update the table. ‘after-date’ ‘-N’ in tar. ‘all’ ‘-a’ in du, ls, nm, stty, uname,

    raimon49
    raimon49 2014/12/21
    ロングオプション 対応表