タグ

思考とプログラミングに関するiwwのブックマーク (27)

  • 「ビジネスロジック」とは何か、どう実装するのか - Qiita

    アプリケーション開発で、「ビジネスロジックは分離しろ」だとか「Controller にビジネスロジックを書くな」といったことをよく言われると思います。 しかし、ビジネスロジックという言葉の意味を聞いたり調べたりしてみても、「システムのコアの部分」とか「システムの目的になる処理をするところ」みたいなことを言われたりして、よく分かりませんでした。 そんな中、クリーンアーキテクチャや DDD の戦術的設計について学ぶことで、「ビジネスロジックとは何か」、「ビジネスロジックはどう実装するか」について、自分なりの考えが整理されてきたので、この記事ではそれをまとめます。 ※ 曖昧な言葉を自分としてどう使っているかという話になります。違う意味で使う方もいると思うので、ご注意ください ビジネスロジックとは何か 「システムのコアの部分」とか「システムの目的になる処理をするところ」といった説明も正しいとは思い

    「ビジネスロジック」とは何か、どう実装するのか - Qiita
    iww
    iww 2020/06/29
    UI部分との分離は強く意識していたけど、データベースにも依存しちゃダメなのか。 次から気を付ける
  • Why OO Sucks

    Why OO Sucks by Joe Armstrong (joe@bluetail.com) When I was first introduced to the idea of OOP I was sceptical but didn't know why—it just felt “wrong”. After its introduction OOP became very popular (I will explain why later) and criticising OOP was rather like “swearing in church”. OOness became something that every respectable language just had to have. As Erlang became popular we were often a

  • 「この〜を導入すると、なんとこうなりました!どうです?わかりやすいと思えませんか?」 - mizchi's blog

    主にUI設計やプログラミングのAPI設計について、「わかりやすい」というのは主観的で合意が取れないのでクソという話。 定量的な指標が示されてない そもそも趣味が合わない場合はそこで終わり 〜の来意図された機能が隠れてしまっている ↑によって隠れてしまった機能を呼び出すのが、最終的にコストが掛かる 何が言いたいかと言うと、「指標の伴わない変更に意味はない」「APIの呼び方を変える程度のラッパーライブラリやヘルパーには、特に意味がない」ということです。 ここからプログラミングの話に絞りますが、特にショートハンドしたいだけの場合、ショートハンドするAPIの実装は、必ず来の機能を呼び出す脱出ハッチも必要となります。 よく練られていない「わかりやすさ」は、次第にこの脱出ハッチを使うことを要求するようになり、結果として捨てられることになります。この破棄までの過程は、結果的に「技術的負債」と表現され

    「この〜を導入すると、なんとこうなりました!どうです?わかりやすいと思えませんか?」 - mizchi's blog
    iww
    iww 2018/11/08
    ○○をするために△△を導入しました、という理路なら納得感あるけど、逆は
  • staticおじさんの逆襲 - Qiita

    実はオブジェクト指向ってしっくりこないんです! 私はJavaでキャリアを始めたので、当然、オブジェクト指向を前提としてプログラミングを学んでいきました。オブジェクト指向の概念を聞いたとき、なるほどこれはよくできているなと思ったのを覚えています。オブジェクト指向では、現実世界の「もの」をそのままオブジェクトに表現します。なるほど、合理的でプログラミングが簡単になるように感じます。ちょうど現実のものを操作するようにプログラミングができるのですね。 実際にオブジェクト指向でプログラムを書こうとして分かったのは、私が作っているのはコンピューターのコードであって、現実のものではなかったということです。ArrayListって現実の何に対応するんでしょうか? 棚? 「プログラミングはデータの入出力と、その変形のことだ」というデータ指向プログラミングの考えを知ったことが、決定的にオブジェクト指向への興味

    staticおじさんの逆襲 - Qiita
    iww
    iww 2018/07/31
    いいとこどりをしたい
  • ❤️ Best adult photos at senseicode.club

    free nudes, naked, photos,

    ❤️ Best adult photos at senseicode.club
    iww
    iww 2016/07/05
    プログラミング的思考とは何か。 これを小学生に教えるのはつらそうだな
  • 共変性と反変性 (計算機科学) - Wikipedia

    この記事には複数の問題があります。改善やノートページでの議論にご協力ください。 出典がまったく示されていないか不十分です。内容に関する文献や情報源が必要です。(2021年10月) 独自研究が含まれているおそれがあります。(2021年12月) 出典検索?: "共変性と反変性" 計算機科学 – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (コンピュータプログラミングの型システムでの)共変性と反変性(きょうへんせいとはんぺんせい、covariance and contravariance)とは、データコンテナのサブタイプ関係が、そのデータ要素のサブタイプ関係に連動して定義されるという概念を指す。また、関数の型のサブタイプ関係での、引数型と返り値型の汎化特化の制約を定義する概念でもある。ジェネリックなデータ構

    iww
    iww 2016/03/04
    『型安全性と置換可能性を保証する唯一の方法は、入力に対しては A と同等かより寛容に、出力に対しては A と同等かより厳格に振る舞うことである。』
  • 【C++】なぜヘッダと実装はわけるべきなのでしょうか(.hに実装を書くことは邪道か)

    私はC++歴3年の学生趣味プログラマーです。 「C++はなぜヘッダと実装を分けなくてはならないのか/そもそも当に分けなければならないのか」という質問です。 C++といえば、ヘッダー部と実装部を.hファイルと.cppファイルに分けることが一般的とされている言語ですが、 これは同じオブジェクト指向言語のC#やJavaにはない特徴です。 そのせいでC++使いたちは今日もcppファイルとhファイルを行ったり来たりしながらコーディングする羽目になっています。(そしてVS使いはF12とCtrl+-を得意気に連打しています。) 私にとってもそれが当たり前になって久しいですが、 時々C++を学び始めたばかりの後輩から「なぜヘッダファイルに実装を書いてはならないのか」「なぜC++は二度も同じコードを書くことを強いるのか」と質問を受けます。 私はそのたびに「実装の隠蔽化」とか「循環参照の危険が云々」とか「そ

    【C++】なぜヘッダと実装はわけるべきなのでしょうか(.hに実装を書くことは邪道か)
    iww
    iww 2015/06/11
    『ODR違反になるか否かは「インライン関数として扱われるか」という観点のみが関与します。』
  • 前置インクリメント vs 後置インクリメント | 闇夜のC++

    後置インクリメントにはひと目で遅くなりそうな処理が見て取れますね。 前置インクリメントがインクリメント処理後、単純に自身の参照を返すのに対し、後置インクリメントではインクリメント前に一時オブジェクトの生成、そしてインクリメント後にはその前に生成した一時オブジェクトを値で返しています。 前置と後置では、単純にオブジェクトをコピーして返す分、普通に考えたら後置の方が遅いよね。というのが従来の認識でした。 「C++ Coding Standards -101のルール、ガイドライン、ベストプラクティス」の中でも、特に後置インクリメントの必然性が無い時は迷わず前置インクリメントを使うことが推奨されてきました。 元の値を必要としないときは前置形式の演算子を使おう __C++ Coding Standards (p50) 新たな主張 「ゲームエンジン・アーキテクチャ第二版」の中の一節を紹介します。 しか

    iww
    iww 2015/04/17
    コンパイラが状況に応じ勝手によろしくやってくれるのでわりとどうでもいい、 という話。 個人的にはもう後置固定
  • TDD is dead. Long live testing. (DHH)

    By David Heinemeier Hansson on April 23, 2014 Test-first fundamentalism is like abstinence-only sex ed: An unrealistic, ineffective morality campaign for self-loathing and shaming. It didn't start out like that. When I first discovered TDD, it was like a courteous invitation to a better world of writing software. A mind hack to get you going with the practice of testing where no testing had happen

  • 関数型プログラミングってエクセル方眼紙だよね | システム設計日記

    業務アプリケーションの開発をしていると、エクセルで、ひとつのセルを全角一文字分の小さな正方形にした、いわゆる方眼紙スタイルで書かれたドキュメントにお世話になることがある。 エクセル方眼紙 第一のメリットは、どんな内容でも、縦や横をそろえて見た目をきれいにできること。 箇条書きをインデントして書くのも楽だし、ドキュメントの一部に小さな表とか画面イメージとか、罫線使って簡易な図形表現が手軽にできるのもメリット。 図の貼り付けの位置合わせとかも、他の部分ときっちりそろえることができて超便利。 日語の組版の基は「全角」「半角」に象徴される「等幅」の文字を並べること。 日語のドキュメントを作るときエクセル方眼紙は、理に適っている。 パソコン普及前は、薄い青線の入った方眼紙に文章と図を手書きしてコピーするのが当たり前だったらしい。 エクセル方眼紙は、この電子版というわけだ。 「エクセルの来の使

  • Metro UIは「UXアプリ養成ギプス」 : 小野和俊のブログ

    昨日、今日とWindows Developer Days(WDD)に参加してきた。二日間セッションに参加して感じたのは、「Metro UIは『UXアプリ養成ギプス』だ」ということである。 デザインの原則がある。 例えば原則のひとつに、”Content before Chrome”というものがある。これは、「コンテンツを主役にし、ツールバーやメニュー等のコンテンツへの没入を妨げるものは最小限にする」というものだ。 こうしたデザインの原則やガイドラインがきちんと決められている、ということは重要なことではあるが、それ自体はさほど驚くべきことでもない。先日ブログに書いたように、最近の主要なプラットフォームには、大抵UX/UIのデザインガイドラインが定められているからだ。 では私が何に驚いたかというと、Metro UIではこのデザインガイドラインが「半強制」されていることだ。 UX/UIに意識の高い

    Metro UIは「UXアプリ養成ギプス」 : 小野和俊のブログ
  • ポーギーに話す

    John Graham-Cumming / 青木靖 訳 2010年5月17日 プログラマであれば、何かの問題を同僚に説明していて、説明し終わる前や、何かフィードバックをもらえる前に自分で答えを見つけたという経験があるのではないかと思う。私は同僚さえ必要ないということに気づいた。話す相手は何でも良くて、ただ問題を口に出しさえすればよいのだ。 私がを書いていたとき、解説しようとしている科学の話を自分でちゃんと理解しているか確認するため、声に出して説明してみることが良くあった。あまりばからしく感じないようにを相手にそうしていた。は私の言うことを理解しないか、少なくとも言葉を返すことはなかったが、はっきり口に出して言うのはとても助けになった。 デバッグしているときコンピュータに話しかけることもある。問題をはっきり口に出すことで頭の中の歯車がかみ合って、自ずと答えが出てくるのだ。 Coders

  • エンジニアtype 技術者のキャリアを考えるWebマガジン - 転職@type

    エンジニアtypeは、各種エンジニアをはじめ「創る人たち」のキャリア形成に役立つ情報を発信する『@type』のコンテンツです。

    エンジニアtype 技術者のキャリアを考えるWebマガジン - 転職@type
    iww
    iww 2011/07/27
    『脳内プログラマー★デビュー』
  • 『カルネージハート』がブラウザゲームに! - ファミ通.com

    NHN Japanが、アートディンクの名作シミュレーション『カルネージハート』のオンラインゲーム『ブラウザ カルネージハート Programming Soldier』を発表。βテスターの募集を開始した。 NHN Japanは2011年6月14日、アートディンクとブラウザゲーム『ブラウザ カルネージハート Programming Soldier』の共同開発契約を締結したことを発表した。6月23日よりハンゲームでクローズドβテストを実施するとのことで、テスター募集も開始している。 『カルネージハート』とは、アートディンクのロボットシミュレーションゲーム。ロボットの思考パターンをプログラムして戦うという、奥深い戦略性が特徴のひとつ。バトルが開始するとシミュレーションにより結果を算出し、その成果を存分に確認できる。結果がまずければ思考ルーチンを改良し、より効率よく優秀なプログラムを目指すのだ。 “

  • Life is beautiful: 「時間に余裕があるときにこそ全力疾走で仕事し,締め切りが近づいたら流す」という働き方

    かれこれ30年以上もこの業界でプログラムを毎日のように書いて来た私。当然、自分なりの働き方のノウハウみたいなものも会得して来たつもりだ。以前ここに「私のとっておきのプログラミングスタイル」というエントリーを書いたので、まだ読んでいないプログラマーの方にはぜひとも読んでいただきたい。 ちなみに、そんな中でも後輩とか部下に教えるのが一番難しいのが、「スタートダッシュでできるだけはやくめどをつける」という仕事スタイル。どのエンジニアも、ちゃんと説明すればこの働き方の効用は理解してもらえるのだが、実際の現場でちゃんと実行できる人は100人に1人もいない。 「人はみな怠惰だから、締め切りに迫られなければがんばれないんだ」と言ってしまえばそれまでだが、「まがりなりにもプロとして仕事をする限りは、ペース配分ぐらいはちゃんと考えて仕事をすべき」というのが私の主張。トップクラスのマラソンランナーでペース配分

    iww
    iww 2010/07/20
    最近はカーブはやめて直線で仕事するようにしてる。スタートダッシュしたら疲れちゃうし。
  • バッドノウハウからグッドラッパーへ

    「有用なものを生み出すけれど複雑怪奇になっているシステム」を見つけたときには、 「バッドノウハウだ」と批判するだけではなく、 バッドノウハウを隠す「グッドラッパー」を作ることを考えよう、というお話。 目次 はじめに 有益なものを生み出さなければ「奥が深い」とも呼ばれない バッドノウハウをグッドラッパーで隠そう 当によくないシステムとは よびかけ 補足:Perlとバッドノウハウ いろんな方からのコメント 反応リンク 関連リンク 更新履歴 ぜひ、感想をお送りください はじめに 高林哲さんは『バッドノウハウと「奥が深い症候群」』というページで、 「奥が深い症候群」や「バッドノウハウをありがたがることの危険性」について書いています。 これはもっともな指摘なので、それを受けてもう一歩進んだ話を書いてみましょう。 有益なものを生み出さなければ「奥が深い」とも呼ばれない もしも「奥が深い」システムが何

  • 「1000のアルゴリズムを持つ男」vs.「やわらか頭脳」

    「1000のアルゴリズムを持つ男」vs.「やわらか頭脳」:最強最速アルゴリズマー養成講座(1/3 ページ) 典型的なアルゴリズムをたくさん知っている人間が最強か――? いいえ、典型的なアルゴリズムを知らなくても、違ったアプローチで答えに迫る方法はいくらでも存在します。短い実行時間で正確な答えを導き出せるかを考える習慣をつけましょう。 アルゴリズマー養成講座と銘打ってスタートした連載。もしかすると読者の方の興味は、はやりのアルゴリズムや汎用的なアルゴリズムを知ることにあるのかもしれません。しかし、今回は、いわゆる「典型的なアルゴリズム」を用いずに進めていきたいと思います。 なぜ典型的なアルゴリズムを用いないのか。それは、典型的なアルゴリズムばかりを先に覚え、それだけでTopCoderなどを戦っていこうとした場合、それに少しでもそぐわない問題が出た場合に、まったく太刀打ちできなくなってしまう

    「1000のアルゴリズムを持つ男」vs.「やわらか頭脳」
  • Joel on Software - ビッグマック 対 裸のシェフ

    Joel Spolsky ジョエル・スポルスキ 翻訳: Yasushi Aoki 青木靖 2001/1/18 謎: なぜ世界で最も大きいコンサルティング会社のいくつかは最低の仕事をするのか? なぜクールな新興コンサルティング会社が、事業開始早々目を見張るような成功を立て続けに収め、急速に成長し、それから平凡な会社になってしまうのか? 私はこのことを考え、そして(私の会社の)Fog Creek Softwareがどう成長すべきかについて思いをめぐらせた。私が見つけた最高の教訓はマクドナルドから得たものだった。そう、あのでかいハンバーガーチェーンのことだ。 ビッグマックの秘密は、それはそれほどうまくないのだが、どれもがちょうど同じようにうまくない、ということだ。もしあなたがそれほどうまくない人生を望むなら、あなたには絶対に驚かされることのないビッグマックがある。 ビッグマックのもうひとつの秘密

  • Don't repeat yourself - Wikipedia

    この記事には独自研究が含まれているおそれがあります。問題箇所を検証し出典を追加して、記事の改善にご協力ください。議論はノートを参照してください。(2016年4月) Don't repeat yourself(DRY)は、特にコンピューティングの領域で、重複を防ぐ考え方である。この哲学は、情報の重複は変更の困難さを増大し透明性を減少させ、不一致を生じる可能性につながるため、重複するべきでないことを強調する。 DRY は、Andy Hunt と Dave Thomas の著書 The Pragmatic Programmer (邦題:達人プログラマー) において中心となる原則である。 彼らはこの原則を、データベーススキーマ、テスト計画、ビルドシステムや、ドキュメンテーションにいたるまで非常に幅広く適用している [1]。 DRY 原則がうまく適用されたとき、システムに対するいかなる要素の変更も、

  • 一発で表示崩れの原因が分かるCSSの小技!: OLの本音は給湯室にて・・・

    OL7人とその課長の実況型ブログです。OL達のホンネや女子に囲まれた課長の苦悩と悦び(?)を等身大でお送りします。娘だらけのお父さん!女同士の人間関係に悩む方も必見です!? ナッチーはたまにcsshtmlのコーディングなどもします。 でも、たまになのでショボイです・・・ で、書いてるうちにいきなり表示が崩れたりします! でも前のバージョンとソースの違いがわからない・・・・ そんな時のみんなに笑われる必殺hackがあります! その名も! Photosopで差の絶対値攻撃!!!! 以下手順になります~ 全然違いのわからない AとBのソースが仮にあったとします。 2つをスクリーンショットして Photoshopのレイヤーを分けてそれぞれにペースト で。レイヤー操作「差の絶対値」 すると・・・・・ 見てー!犯人はココダーーー 差異があるところは黒くならないんです。 来は画像修正時の差分チェック

    iww
    iww 2008/12/19
    diffにも文字単位の差分を抽出する機能があればいいのに