タグ

プログラミングに関するmasudaKのブックマーク (151)

  • Sourcegraph

    Application error: a client-side exception has occurred (see the browser console for more information).

    Sourcegraph
  • 【C++】なぜヘッダと実装はわけるべきなのでしょうか(.hに実装を書くことは邪道か)

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

    【C++】なぜヘッダと実装はわけるべきなのでしょうか(.hに実装を書くことは邪道か)
  • 小数の計算にはfloat型よりもdouble型を使おう(C/C++) - 結果だけでなく過程も見てください

    ゲームプログラミングでのお話です。 ゲームプログラミングでは、通常キャラクターの速度や座標を小数で保持します。 DirectXでは、これらの値を保持するためのベクトルクラスが定義されています。 D3DXVECTOR3などのクラスです。このクラスはx,y,zのメンバ変数を持ち、 速度や座標を表すことができます。 struct D3DXVECTOR3 { : FLOAT x; FLOAT y; FLOAT z; : } ここで見てほしいのが、メンバ変数x,y,zの型です。型が「FLOAT」なのです。 (※FLOAT型はここではfloat型と同義と考えてください) なぜdouble型ではなく、FLOAT型が使われているのか?理由は2つあります。(もっとあるかも) CPUではdouble型の方が計算速度が速いが、GPUではFLOAT型の方が速い double型が8byteでFLOAT型が4byte

  • すべてのソースコードが手元にあるのに不要な抽象化を行うのはよくない

    「よい」とされているプログラミング手法のひとつに差分プログラミングがある。クラスを継承して親クラスとの差分だけのコードを書けば、親ですでに実装されている機能はそのまま使えて、かつカスタマイズもできるというやつだ。 たとえばGUIのボタンをカスタマイズしてマウスオーバーするとなにかちょっと特殊なことを行うボタンを作りたいとしたら、ボタンクラスを継承して、マウスオーバーのイベントハンドラをちょいちょいとカスタマイズしてやればよい。差分プログラミングは大変素直でよいプログラミング手法のような感じがする。 よいのはよいと思う。 しかしこういういい例だけをみてそれをどこでも真似しようと思ってしまうと、不必要な抽象化を積み重ねる困ったプログラマになってしまう(そういう人は結構たくさんいる)。自分でプログラムを書く場合には、よくできたクラスライブラリやフレームワークをお手にして抽象化を行うのは、ほとん

  • モブプログラミングを実際にやってみた - Qiita

    「巷で噂のモブプログラミングってどうなんだろう?」と興味を集まったメンバーで集まって、実際にモブプロをしてみました。参考までに簡単にまとめておきます。 モブプログラミングとは モブプログラミングは、2012年頃にHunter Industies社で取り組みが始まりました。そこで得た知見をWoody Zuillさん達がカンファレンス等で紹介することで広まっていきました。 Mob Programming – A Whole Team Approach by Woody Zuill 以下の動画を見ると、実際にモブプログラミングをしている様子を見ることができます。 さらに2016年の様子のビデオが下記です。複数のモブが動いている様子を見ることができます。 モブプロは簡単に言うと、みんなで画面をみながらわいわいプログラミング(またはそれに準じた作業)をすることです。基的な進め方・コツ・現場で出てき

    モブプログラミングを実際にやってみた - Qiita
    masudaK
    masudaK 2018/01/18
    初めて聞いた
  • もっと早くオブジェクト指向設計実践ガイド読んどけばよかった - razokulover publog

    @joker1007さんが激推ししてたのでオブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方を読んだ。 なんかすんませんw Sandi Metzはここ数年でトップクラスに良いだったのでオススメです。 #railsdm— ジョーカー (onkさんに返済完了) (@joker1007) 2017年12月9日 内容としては、オブジェクト指向設計の核となるものを初めての人でもわかりやすく理解できるように書かれたという感じ。 この手のは静的型付け言語でかかれたものが多いがRubyで書かれてるのでゆるふわなwebエンジニアにも読みやすそう。 流行りのDDDをやるにもまずオブジェクト指向がしっかり理解できてないと厳しいし、まずはしっかり土台を固めようぜみたいな。 オブジェクト指向を理解した気になっている人とか、新卒で入社してきたwebエンジニア諸氏に

    もっと早くオブジェクト指向設計実践ガイド読んどけばよかった - razokulover publog
  • Keep a Changelog

    Version 1.0.0 # Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ## [1.1.1] - 2023-03-05 ### Added - Arabic translation (#444). - v1.1 French translation. - v1.1 Dutch translation (#371

  • オーバーフローが引き起こした面白いバグの話|Rui Ueyama

    一度聞いたら忘れられないような印象深いバグというものがある。僕は数値のオーバーフローと聞くと必ずこの2つのバグを思い出してしまう。どちらも面白いエピソードなのでちょっと紹介してみよう。 一つ目は、初代Civilizationにあったバグである。Civilizationは文明間で戦う戦略シミュレーションゲームで、チンギスハンとかエリザベス女王みたいなプレイヤーを選んで、世界制覇か宇宙開発競争での勝利を目指すというゲームだ。 初代Civilizationにあったバグは、非暴力主義のガンジーが突然核攻撃してくるというものだった。原因は文明が民主主義を採用すると攻撃性が2下がるというロジックだった。初代Civではガンジーの攻撃性は全プレイヤー中で最小の1なのだが、ゲームが進んでインド文明が民主主義を採用すると、攻撃性がマイナス2されてオーバーフローで255になり、ガンジーがゲーム中で突如、極度に攻

    オーバーフローが引き起こした面白いバグの話|Rui Ueyama
    masudaK
    masudaK 2017/11/18
    ダメだけど、笑ってしまった。ガンジーヤバい
  • 「Lean Architecture / DCI Evening」参加レポート

    2017年10月18日、James Coplienさんとその奥様であるGertrud Bjørnvigさんをお招きして、「Lean Architecture / DCI Evening 」というイベントを開催しました。日ではソフトウェアパターンやアジャイルのリーダーとして知られるJames Coplienさんは、『 マルチパラダイムデザイン 』(1998年)でドメインとドメイン間の関係を中心に据えた設計パラダイムを提唱していました。Coplienさんは2009年、MVCアーキテクチャの考案者である Trygve Reenskaug さんと共に「DCIアーキテクチャ」を発表しました。2010年、CoplienさんはGertrudさんとともに書籍『 Lean Architecture 』を上梓、トヨタ生産方式をソフトウェアアーキテクチャに適用するリーンアーキテクチャについて、DCIアーキテク

    「Lean Architecture / DCI Evening」参加レポート
  • ファットコントローラはFacadeパターンで撲滅しよう - はむはむエンジニアぶろぐ

    MVCのコントローラのレガシーコードによくあるのが、ファットコントローラです。 最初は、単純なロジックだけだったのでコントローラに書かれていたロジックが月日を追うごとに肥大化して誰も読めなくなったというのはあるあるです。 ファットコントローラのビジネスロジックのテストコードを書くのはViewが絡む為、難しいです。 なので、ファットコントローラ = テストがないと言ってもいいでしょう。 そんな、ファットコントローラさんはGoFのデザインパターンの一つFacadeで撲滅できます。 ファットコントローラ 今回、撲滅したいファットコントローラ。 要件 ユーザがべ物と購入数を指定し支払額を送信すると、購入額の計算をし商品の支払いを行う クーポンの発行も行う 何かしらエラーが発生したらログを残す <?php class TopController { public function buy() {

    ファットコントローラはFacadeパターンで撲滅しよう - はむはむエンジニアぶろぐ
  • オブジェクト指向できていますか?

    3. 自己紹介 1992年~1997年 某ゲーム会社 プログラマ SFC,GB,PS1,N64のゲーム開発経験 1998年~現在 日工学院八王子専門学校 @mozmoz1972 専任講師 プログラミング教育を中心に担当 twitterもfacebookも実名です。よかったらフォローしてください。

    オブジェクト指向できていますか?
  • Treasure 2017 の研修資料は Go を学ぶのに最高だった - kakakakakku blog

    Go 関連のを読んだり,サンプルコードを写経するだけではなく,もっと実践的に勉強したいなと思って調べていたら,VOYAGE GROUP の Treasure 2017 と言うインターンシップの研修資料GitHub に公開されていることを知って,さっそく挑戦してみた.数日間取り組んでみて,とにかく素晴らしかったので,紹介したいと思う.suzuken 先生,素晴らしすぎます! Go入門 GitHub - voyagegroup/talks 学べるテーマ Go研修資料とは言え,幅広いテーマで Go を学ぶことができる点が素晴らしかった.ザッと挙げるとすると以下のようになる.テーマを見るだけで,もうワクワクしてくるのではないだろうか? アルゴリズム実装とテストコード フィボナッチ数 スタック CLI net/http curl 実装 スクレイピング実装 コンカレンシー goroutine

    Treasure 2017 の研修資料は Go を学ぶのに最高だった - kakakakakku blog
  • [保存版]人間が読んで理解できるデザインパターン解説#1: 作成系(翻訳)|TechRacho by BPS株式会社

    こんにちは、hachi8833です。今回から3回に渡って『Design Patterns for Humans』の日語訳を公開します。あえてクラス図などを使わず、デザインパターンをストーリーで理解できるように書かれた異色のデザインパターン解説です。 #1 作成系デザインパターン(記事) #2 構造系デザインパターン #3 振舞い系デザインパターン 概要 原著者の許諾を得て、MITライセンスに基づき翻訳・公開いたします。 英語記事: Design Patterns for Humans™ - An ultra-simplified explanation 更新日: 2017/09/25 著者: Kamran Ahmed サイト: Hugobots -- 開発者向けのニュースレターを発行しています。 「Design Patterns for Humans」は商標(TM)です。 2017/1

    [保存版]人間が読んで理解できるデザインパターン解説#1: 作成系(翻訳)|TechRacho by BPS株式会社
  • 『テスト駆動開発』を読んで - まめめも

    テスト駆動開発posted with amazlet at 17.10.12Kent Beck オーム社 売り上げランキング: 563 Amazon.co.jpで詳細を見る オーム社さまから電子書籍を贈いただきました。ありがとうございます。 書はテスト駆動開発(TDD)の原典で、たいへん有名なです。が、自分はわず嫌いで読んだことがありませんでした。 というか、TDD 自体もちゃんと理解したことがありませんでした。なんだろう、なんか怖かった。 そんな自分が今回このをいまさら読んでみたら、なるほどこれは確かにいいでした。なんというか、語りたくなる感じ。ということでご紹介。 紹介 テストとプログラムを交互に書いていく開発方法 TDD を、例題を用いて実演していくです。 TDD というと「プログラムより先にテストを書く」というところだけ強調されますが、正直それではよくわからないのでし

    『テスト駆動開発』を読んで - まめめも
  • Goはオブジェクト指向言語だろうか? | POSTD

    “オブジェクト指向”の意味を当に理解するには、この概念の始まりを振り返ることが必要です。最初のオブジェクト指向言語はSimulaという言語で、1960年代に登場しました。オブジェクト、クラス、継承とサブクラス、仮想メソッド、コルーチンやその他多くの概念を導入した言語です。おそらく最も重要なのは、データとロジックが完全に独立したものであるとする、当時では全く新しい考え方をもたらしたことでしょう。 Simula自体には馴染みがない方も多いかもしれませんが、Simulaからインスピレーションを得たとされるJavaC++、C#、Smalltalkといった言語は皆さんよくご存知でしょう。さらにそこからインスピレーションを得たものとしてObjective-CやPythonRubyJavaScriptScalaPHPPerlなど様々な言語があり、Simulaは現在使用されているポピュラーな

    Goはオブジェクト指向言語だろうか? | POSTD
  • Rubyのtrueとfalseの話 - Qiita

    この記事は、技術同人誌としてまとめるはずだった原稿をほぼそのまま転載しています。諸事情により向こうかなり長い間同人誌即売会に売り手として参加することが難しくなったためです。 長いですが、お楽しみいただければ幸いです。 まえがき このは、Rubyコミッタである卜部昌平に、そのである私、卜部一恵がRubyのtrueとfalseについて突っ込んで聞いてみた話です。文は両者の対話形式で進んでいきます。 私は昌平と同じ大学同じ研究室に所属していたのでプログラミングについての基礎は一応ありますが、エンジニアとして職を得たことはありません。つまり、プログラミング初級者です。このはそのくらいのレベル感のだと思います。 私自身が初級者なりにRubyを使っていて、if文が思った通りに動かない、そんなときに抱いた疑問からこのが生まれました。 同じような疑問を抱いている方の一助になれば幸いです。 は

    Rubyのtrueとfalseの話 - Qiita
  • Getters and Setters are evil

    Getters and Setters are Evil Downloads Getters and Setters are Evil (Article) Introduction Since I started programming in Java in 2001, I have read so much about encapsulation. The Internet has become replete with Java articles and lessons teaching the basics of encapsulation in the form of declaring some class with private fields and public getters and setters. Typical Examples of Encapsulation M

    Getters and Setters are evil
    masudaK
    masudaK 2017/08/14
    getter, setterがいらないという話じゃなくて、サービスクラスに持たせないという話なだけだと思うし、そうかなとも思う
  • 【Java】定数クラスをどうしたものかと改めて考える

    いや、大した話じゃないんですけど みんなどうしてるのかなって思って。 Javaの定数クラス。皆さんの使用状況はこんな感じだろうか。 なにそれ? 知ってるけど使ってない 全部propertiesファイルとかxmlとかに持ってるから使わない 使ってる 使うとすればどのように使うのが良いかなとか。 わざわざ考えたりしないような気がするので、あえて考える。 定数クラスとは 定数クラスとはpublic static finalなフィールドをたくさん持つクラスで、 定数を管理するために用いられる感じ。 ざっくりとこんなの。 見たことある人は「あー、、。。。」となる。 public final class Constants { public static final String SLASH = "/"; public static final String BLANK = " "; public s

    【Java】定数クラスをどうしたものかと改めて考える
    masudaK
    masudaK 2017/07/30
    いまだに正解分からないよなー
  • 「スキル伝授にはペアプロが最速」というのは何故か - 圧倒亭グランパのブログ

    この問いに対して、自分なりの答えを言語化できたのでまとめます。 目次 目次 疑問 実践する機会 自分なりの答え 「コードを書く瞬間の思考」にアドバイスを貰える 他の方法で代替できない ペアプロの欠点 まとめ 疑問 きっかけは、下記の方々のやり取りをTwitterで見かけたからです。 「それをできる人とペアプロする」以上に短期間で新しい技術を身につける方法を知らない。— Jxck (@Jxck_) 2017年2月3日 ペアプロが最速だろうなあ https://t.co/SdbZZ2EypI— Takuto Wada (@t_wada) 2017年2月3日 サッと調べると「最速なのは同意」という意見が大半でした。自分もこれには同意するのですが、「なぜペアプロが最速なのか?」という疑問を持ったのです。 ペアプロ、最速だと思うんだけど、なぜ最速なのかがハッキリわからない。「わからないことがすぐに聞

    「スキル伝授にはペアプロが最速」というのは何故か - 圧倒亭グランパのブログ
  • 外国人が語る:英語でクラスやメソッド等の名付け方 - Qiita

    アメリカ人です。 Hello 👋 この記事の目的 多くの日人は自分の英語力には自信がないではないでしょうか。残念ながら「英語がわからん」、「英語が全然できない」という声をしょっちゅう聞いています。でも、今まで英語ができて意味がちゃんと伝わる何人かの日人に会ったがあります。完璧な英語ではないけど(外国人も英語でミスる時もある...)、がんばって話そうとするので充分仕事ができる人たち。そういうがんばる姿勢はオープンソースのプログラムや英語圏のプログラムに手を出すためには一番大事なことだと思います(外国人側もすごく助かります)。日文化では「私はできる!」と自慢することは少ない中、この記事を通して、流暢に話せなくても自分のプログラミングの命名の仕方にはちょっとだけでも自信を持たせたいなと思います。完璧じゃなくていいです。Let's go! 合わせて読んでいただきたい 【日エンジニア

    外国人が語る:英語でクラスやメソッド等の名付け方 - Qiita