タグ

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

  • GitHub - fbeline/Design-Patterns-JS: All the 23 (GoF) design patterns implemented in Javascript

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

    GitHub - fbeline/Design-Patterns-JS: All the 23 (GoF) design patterns implemented in Javascript
    raimon49
    raimon49 2018/10/23
    JavaScriptでGoFデザインパターン。ES6での実装例もある。
  • Go言語のInterfaceの考え方、Accept interfaces,return structs - Qiita

    Go言語のInterfaceの考え方、Accept interfaces,return structsGo言語interface Go言語の優れた特徴の一つとして、Interfaceが挙げられることがあります。 Interfaceを持つJavaやC#のような他言語と比べ、GoのInterfaceの言語機能における主な違いは 静的言語のように静的にチェックされるメソッドの羅列を宣言できるinterfaceでありながら ダックタイピングや型アサーションによって動的言語のように柔軟な使い方ができることです。 しかしこれだけでは単に、ケースに合わせて使い分けることができる選択肢を得ただけのように聞こえます。 実際にはGo言語のパッケージ、型システム、そして文化的特徴によってGo言語特有の軽量でシンプル、そして有機的なInterfaceを表現できます。 Go特有でGoらしいGoのInterfaceで

    Go言語のInterfaceの考え方、Accept interfaces,return structs - Qiita
    raimon49
    raimon49 2018/09/20
    >パッケージでは処理する側でinterfaceを定義し引数として受け取り、New関数の戻り値など外部にわたすものはstructのように具体的な型にすべき
  • 最近のアプリ界隈での「設計」の違和感 - なるようになるかも

    アプリ界隈で「設計」の話をするときに MVC / MVP / MVVM のような「設計パターン」だけが語られるようになった気がする。 往々にして、「アプリの規模によってどれを採択すべきかは変わる」みたいなお茶を濁すような結論で終わることが多い。 私的な結論 「設計」と、「設計パターン」は別物だと思う。 「設計」のレベルを上げたい。 アーキテクチャシンドロームから抜け出して、価値のあるものを作りたい。 以下、思うところのメモ。 MVC は古い / 劣ったやり方か? MVC は Model をどう構築するかについてとくに規定していない。 MVC への批判をするときに、FatVC が持ち出されることが多いのですが、FatVC を実装してしまうのは単に実装者の能力不足だと考えていて、MVVM を採用しても FatVM を作るだけだと思っている。 また、比較的新しめの Flux アーキテクチャは、良

    最近のアプリ界隈での「設計」の違和感 - なるようになるかも
    raimon49
    raimon49 2018/06/16
    言わんとするところは分かる。モバイルアプリは「ストアに早く出してしまって育てる」側面も強いので、最初から頭でっかちに議論しているとチャンスを逃すケースもあって、成長フェーズに応じて改善するのが良さそう
  • Big Sky :: Go 言語の非同期パターン

    Gogoroutine という非同期の仕組みを提供していますが、使い方次第では色々なパターンが実装できる為、初めて goroutine を見た人はどの様な物が正解なのか分からない事があります。以前、このブログでも紹介した事がありますが Go の非同期の仕組みは一見単純な様に見えて実はとても奥深いのです。 Big Sky :: golang の channel を使ったテクニックあれこれ golang の channel は他の言語に見ない独特のパラダイムを開発者に提供します。 単純にスレッド間でメッセージングをするだけでもC言語で書けばそこそこの量になったり、慣れていない人であればど... https://mattn.kaoriya.net/software/lang/go/20160706165757.htm 2012 年に Rob Pike 氏が Google I/O で「Go

    Big Sky :: Go 言語の非同期パターン
  • Django における認証処理実装パターン - c-bata web

    追記: 翔泳社さんからDjangoの書籍を出版するのでぜひ読んでみてください。 実践Django Pythonによる格Webアプリケーション開発 作者:芝田 将翔泳社Amazon この資料は DjangoCongress JP 2018で話した「Djangoにおける認証処理実装パターン」 の解説記事になります。 2019/04/08 追記: GithubのコードはPython3.7 Django2.2にupdateしています) 何年か前に Djangoのユーザー認証まとめ という記事を書きました。今でもコンスタントに100PV/dayくらいアクセスのある記事なのですが内容が古く、実装時にハマりやすい注意点にもあまり触れることができておらず、おすすめできる資料ではありません。今回はDjangoCongress JPにて発表の機会をいただけたのですが、この機会に認証処理についてまとめ直すと同

    Django における認証処理実装パターン - c-bata web
  • Promise と async/await の理解度をもう1段階上げる - Qiita

    はじめに 表題のモチベーションで書き上げた備忘録に加筆・修正したものを記事にしました。 記事を読んで下さった方の Promise, async/await の理解度が 1LV でもアップしてくれたら嬉しく思います。 Promise とは Promise は非同期関数を扱うためのインターフェース Promise は 悲運のピラミッド型コールバック (ネスト地獄)を根的に解決してくれる thenable と呼ばれる then メソッドを有するオブジェクトを resolve の第一引数に入れることで Promise オブジェクトへ変換することが可能 // thenable を Promise オブジェクトへ変換する const converted = Promise.resolve({ then: (onFulfilled) => onFulfilled('be promise') }) co

    Promise と async/await の理解度をもう1段階上げる - Qiita
  • GoらしいAPIを求める旅路 (Go Conference 2018 Spring)

    ソーシャルゲーム案件におけるDB分割のPHP実装 ~とにかく分割ですよ。10回じゃ足りない。20回くらい分割。~ 株式会社インフィニットループ 佐々木 亨基 2013/7/15にPHPMatsuri2013内で発表された講演のスライド より詳細なCQRSに関する資料はこちら https://little-hands.hatenablog.com/entry/2019/12/02/cqrs 参考資料:http://little-hands.hatenablog.com/entry/jjug2017fall 社内新規プロダクトでDDD, CQRSの思想をベースとしたアーキテクチャを構築し、コマンド(更新系処理)ではSpring Data JPA(Hibernate)を、クエリ(参照系処理)ではjOOQを採用しました。 結果としてそれぞれのORMの良いところを生かした組み合わせのアーキテクチャが

    GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
  • 関数の話 - ( ꒪⌓꒪) ゆるよろ日記

    こんにちは、しいたけです。 某所で関数型プログラミングとはリスト処理のことなのか、と燃えているのを見て、関数型プログラミングとは何か、ということを自分なりの考えを述べたいと思いました。春なので。 この資料は2年ほど前にSupershipの社内勉強会で使ったものですが、この中で関数とオブジェクトを対比している箇所があります。 関数もオブジェクトも、変数や関数の引数戻り値として扱える第1級の値であり、状態を持ち(メンバー変数/クロージャ)、組み合わせが可能(delegate, composition/関数合成)、である、と。 ではオブジェクト指向と関数型プログラミングで何が決定的に異なるかというと、設計・実装のアプローチに何を中心に据えるか、ということだと思います。 オブジェクト指向では、クラス・オブジェクトをモデリングし、各種のオブジェクト指向的デザインパターンを用いてオブジェクト同士を組み

    関数の話 - ( ꒪⌓꒪) ゆるよろ日記
    raimon49
    raimon49 2018/04/08
    「関数型プログラミングの考え方を知ってると良いことあるよ」というアプローチ。対立を煽る二元論よりもこっちの方が好ましい。
  • Goでのサービスロケータパターン - Qiita

    ネストの深いプログラムを書くとき、 プログラム全体で共有したいオブジェクトをどうやって引き回すかというのはいつも悩む問題です。 グローバル変数 小さなプログラムの場合は雑にグローバル変数に入れてしまうのも悪くはないですが、 プログラムが大きくなるにつれ、このやりかたはつらくなります。 シングルトン シングルトンは基的にはグローバル変数と同じことです。 ただしファクトリ関数をうまく使えばグローバル変数をそのままつかうより柔軟な取り回しが可能になるかもしれませんが。 グローバル変数にせよシングルトンにせよプログラム全体で状態を共有しますが、 そうではなく関数ごとに引数としてサービスを渡していく方がテスタビリティも高いし好ましいと思います。 コンテキスト APIサーバをたてるときによくやってしまいますよね。 リクエスト処理全体で共有したいような変数をミドルウェア経由でコンテキストにセットすると

    Goでのサービスロケータパターン - Qiita
  • https://www.freia.jp/taka/blog/expert-python-programming-2nd-intro/index.html

    https://www.freia.jp/taka/blog/expert-python-programming-2nd-intro/index.html
    raimon49
    raimon49 2018/02/23
    充実の改訂内容。Mercurialやbuildbotが置き換わるのも時代に即してるし、これは改訂2版の方も読みたくなる。
  • or-done-channelでコードの可読性を上げる - YAMAGUCHI::weblog

    はじめに こんにちは、キーボード自作おじさんです。このエントリはGo Advent Calendar 2017の4日目の記事です。 今年のエントリーは大作が並ぶアドベントカレンダーの休憩用のエントリーと思っていただければ幸いです。 Advent Calendar、小ネタでいいのよ。頑張り過ぎてネタ思い浮かばなくて穴開けるくらいなら575でもいいのよ。— mattn (@mattn_jp) 2017年11月29日 Goの並列処理のパターン Goが公開されてからもう8年になり、Goが得意とする並列処理にもGo特有のパターンなどがコミュニティ内で蓄積されてきました。 その中でもよく聞くものとしては for-select loop or-channel or-done-channel tee-channel fan-in, fan-out などがあります。今日はその中でも or-done-chan

    or-done-channelでコードの可読性を上げる - YAMAGUCHI::weblog
  • Goの実装パターン ~ Webサーバ編 ~

    From Spring Boot 2 to Spring Boot 3 with Java 22 and Jakarta EE

    Goの実装パターン ~ Webサーバ編 ~
  • Idiomatic Kotlin. Best Practices.

    Philipp Hauer's Blog Engineering Management, Java Ecosystem, Kotlin, Sociology of Software Development Posted on Mar 28, 2017. Updated on Jun 12, 2022 In order to take full advantage of Kotlin, we have to revisit some best practices we got used to in Java. Many of them can be replaced with better alternatives that are provided by Kotlin. Let’s see how we can write idiomatic Kotlin code and do thin

    Idiomatic Kotlin. Best Practices.
  • Python デコレータ再入門  ~デコレータは種類別に覚えよう~ - Qiita

    Pythonのアットマーク(@)を使った記法であるデコレータについてまとめる。難しいと思われているかもしれないデコレータだが、デコレータの種類(パターン)を意識することが理解の近道だと思ったので今回は種類別にデコレータの簡単な実装例をあげて解説をしていこうと思う。 対象者 Python のデコレータを学んだことがあるがたまに分からなくなる デコレータを自作しろと言われたらスラスラかけるか不安 知っていると良いこと 関数のスコープ 第一級関数 *args , **kwargs のような記法 デコレータ関数の種類分け 以下2つの要因でデコレータ関数の種類分けが可能だと思われる。 引数を取るか否か ラッパー関数を返すか否か よって組み合わせから計4つのパターンが考えられるが、今回は "引数を取らずラッパー関数を返さないデコレータ"を除いた3つを紹介する。1つ除外する理由は簡単すぎて意味がなさそう

    Python デコレータ再入門  ~デコレータは種類別に覚えよう~ - Qiita
  • ドメイン駆動設計について DroidKaigi 2017 で登壇しました。

    長らく Y.A.Mの雑記帳というブログでAndroid技術情報を発信しています。最近はなかなか投稿できなくなってしまいましたが、それも仕事としてAndroidに関われているためです。Androidを触り始めたころはまだ学生だったので時間があったんでしょうね。 はじめて Android に関するエントリを投稿したのは 2009 年 5 月 24 日です。当時はJavaFXを触っていたので、NetbeansでAndroidをやろうとしていたようです。 当時のAndroidのバージョンは1.5、Fragment もなく、Support Library もなく、マルチタッチすらなく、ストアは Google Play ではなく Android Market という名前でした。 ここから2、3年くらいは、仕事Android アプリを開発している人はもっぱらメーカーのプリインアプリを作っている方たち

    ドメイン駆動設計について DroidKaigi 2017 で登壇しました。
    raimon49
    raimon49 2017/04/03
    利口なUIやUIが使役するユーティリティメソッドからドメインモデルを隔離するとはどういうことか、という話。
  • Python: ソケットプログラミングのアーキテクチャパターン - CUBE SUGAR CONTAINER

    今回はソケットプログラミングについて。 ソケットというのは Unix 系のシステムでネットワークを扱うとしたら、ほぼ必ずといっていいほど使われているもの。 ホスト間の通信やホスト内での IPC など、ネットワークを抽象化したインターフェースになっている。 そんな幅広く使われているソケットだけど、取り扱うときには色々なアーキテクチャパターンが考えられる。 また、比較的低レイヤーな部分なので、効率的に扱うためにはシステムコールなどの、割りと OS レベルに近い知識も必要になってくる。 ここらへんの話は、体系的に語られているドキュメントが少ないし、あっても鈍器のようなだったりする。 そこで、今回はそれらについてざっくりと見ていくことにした。 尚、今回はプログラミング言語として Python を使うけど、何もこれは特定の言語に限った話ではない。 どんな言語を使うにしても、あるいは表面上は抽象化さ

    Python: ソケットプログラミングのアーキテクチャパターン - CUBE SUGAR CONTAINER
  • まだMVC,MVP,MVVMで消耗してるの? iOS Clean Architectureについて - Qiita

    <この記事は「Money Forward Advent Calendar 2015」の22日目の記事です> この記事は、iOS Clean Architectureと実際にコードへ適用した内容について紹介します。 コードについては、改善の余地があるため随時修正していくと思います。 → github: https://github.com/koutalou/iOS-CleanArchitecture iOS開発においてよくある問題点 「ビジネスロジックはModelに置くべき」と言うが、開発者によって理解や意見がバラバラで統一的な実装ができない 度重なる仕様変更や複雑な仕様に対応するためにViewControllerや特定のModelが肥大化し、ビジネスロジックの質を見失う MVC,MVP,MVVMだけで考えると、どこかのレイヤが複数の責務を持つことになり依存度の高い複雑なコードが生まれてし

    まだMVC,MVP,MVVMで消耗してるの? iOS Clean Architectureについて - Qiita
  • 10分で実装するFlux

    10分で実装するFlux 自己紹介 azu @azu_re Web scratch, JSer.info Flux /flˈʌks/ Fluxとは Facebookが提唱したSmalltalk MVCの焼き直し CQRS(Command Query Responsibility Segregation)と類似 データが一方通行へ流れるようにするアーキテクチャ ウェブUIについてそれを適応する 今日の目的 小さなFluxの実装を作りながらFluxついて学ぶ Fluxの特徴: Unidirectional data flow 当にデータが一方通行に流れるのかを確認する Fluxでよく見る図 登場人物 何か色々いる Action Creators, Dispatcher, Store, React Views... Dispatcher = EventEmitterと今回は考える もっと実装的

  • CoolなソロとHotなペアプロのあいだ

    チームでプログラミングをする際、幾つかのスタイルが存在します。どの場面でどのスタイルを使うかについて経験を元にご紹介します。 https://commons.wikimedia.org/wiki/File:Pair_programming_1.jpg一人が黙々とプログラミングするソロのスタイル、ソロでプログラミングしつつも「(WIP)プルリクエスト」のオンライン上「コードの共同所有」で集団で洗練させていくスタイル、2人が同じタスクを同じディスプレイを共有し対話しながら難しい問題を解いていく「ペアプログラミング」スタイル、複数人がホワイトボードと巨大なディスプレイに集まって寄ってたかって、議論しながら開発する「モブプログラミング」スタイル、などがプログラミングスタイルとしてよく知られています。 しかし、実際の開発の現場では、「ソロプログラミング」「プルリクエスト」「コードの共同所有」「ペアプ

    CoolなソロとHotなペアプロのあいだ
    raimon49
    raimon49 2017/03/21
    コミュニケーション類型 教育効果
  • Rebuild: 175: Executive Order (higepon)

    Taro Minowa さんをゲストに迎えて、Google Docs, 手ぶらライフ、ディープワーク、ゲーム、プログラミング教育などについて話しました。 Show Notes Introducing Dropbox Paper Accepting Google Docs - steps to phantasien パワーリスト 悪童日記 | アゴタ クリストフ Amazon.co.jp: deep work Deep Work 大事なことに集中する Apple reportedly going all in with wireless charging for the iPhone 8 xkcd: Standards P5 - ペルソナ5 小学生・子ども向けのプログラミング体験・入門ワークショップ Betsy DeVos’s Rocky Path as Trump’s Pick for E

    Rebuild: 175: Executive Order (higepon)