タグ

programmingに関するnaglfarのブックマーク (80)

  • 【翻訳】テスト駆動開発の定義 - t-wadaのブログ

    このブログエントリでは、テスト駆動開発(TDD: Test-Driven Development)の考案者Kent BeckがTDDの定義を改めて明確化した文章を、許可を得たうえで翻訳し、訳者の考察を沿えています。 きっかけ 2023年の年末、テスト駆動開発(TDD: Test-Driven Development)の考案者Kent Beckは、substackにTDDに関するポストを連投して論戦を繰り広げていました。TDDはその誕生から20年以上が経ち、その間に「意味の希薄化」が発生して議論が噛み合わなくなっていました。意味の希薄化(Semantic Diffusion)とは、新しく作り出された用語が広まる際に来の意味や定義が弱まって伝わる現象です。 私(和田)はTDDと関わりの深いキャリアを歩んできました。Kent Beckの著書『テスト駆動開発』の翻訳者であることもあり、TDDの正

    【翻訳】テスト駆動開発の定義 - t-wadaのブログ
    naglfar
    naglfar 2024/03/08
    テストを書く際に忘れちゃいけないこと。闇雲にテストをしても意味はない。
  • こんばんは、X-Forwarded-For警察です - エムスリーテックブログ

    エムスリーエンジニアリンググループ製薬企業向けプラットフォームチームの三浦 (@yuba)です。普段はサービス開発やバッチ処理開発をメインにやっておりますが、チームSREに参加してからはこれに加えて担当サービスのインフラ管理、そしてクラウド移行に携わっています。 今回はそのクラウド移行の話そのものではないのですが、それと必ず絡んでくるインフラ設定に関してです。 アクセス元IPアドレスを知りたい Webアプリケーションがアクセス元IPアドレスを知りたいシーンというのは、大まかに二つかと思います。ログ記録用と、アクセス制限ですね。どちらもアプリケーションそのものではなく手前のWebサーバの責務のようにも思えますが、そうとも言い切れません。動作ログ、特に異常リクエストをはじいた記録なんかにセットでIPアドレスを付けたいとなるとアプリケーション要件ですし、アクセス制限についてもマルチテナントサービ

    こんばんは、X-Forwarded-For警察です - エムスリーテックブログ
    naglfar
    naglfar 2021/03/24
    アプリケーションサーバに適切な設定を行えばアプリは remote_addr を取得するだけで済むんだ。すてき。
  • 良いコードを書くための8つの習慣

    成功者がどのようにNew Relicを使用してKubernetesのパフォーマンスを4倍に向上させ、拡張性とスループットを改善したかをご覧ください。

    良いコードを書くための8つの習慣
    naglfar
    naglfar 2020/06/23
    好い記事だった。学ぶことは考えること。
  • 算数の教養がほとんどないプログラマが1年間AtCoderをやった結果の振り返り|きりみんちゃんノート

    こんばんみんみん。 バーチャル幼女プログラマーという肩書でインターネットをやっているきりみんちゃんというものです。 去年の7月に競技プログラミングAtCoderを始めてだいたい1年くらい経ったので、勉強したこととかを振り返りたいと思います。 で、誰?YouTubeでAtCoderの過去問を解く配信をしたり、Twitterで無限にAtCoderについてつぶやいたりしているVTuberです。 普段の仕事での専門分野はAndroidアプリ開発です。 半年くらい前にAtCoderを普通の社会人エンジニアに布教するエントリを書きました。 また、技術書典で「AtCoderの歩き方 -数学が得意じゃないエンジニアにこそ競技プログラミングを布教したい!-」というを出したりもしました。 現在のAtCoderコミュニティの中心層は理系の学生やもともと数学がかなり好きなタイプの人たちです。 一方きりみんちゃ

    算数の教養がほとんどないプログラマが1年間AtCoderをやった結果の振り返り|きりみんちゃんノート
    naglfar
    naglfar 2020/06/23
    競技プログラミングやってないけど納得した。凡才プログラマが仕事で求められるのは優れたアルゴリズムではなく読みやすさと属人制の排除と考えてるので。
  • コーディングインタビューの対策とその意義 (1/2) - 16bitのメモランダム

    1.コーディングインタビューとは何か コーディングインタビュー(Coding Interview、またはProgramming Interview)とは、1時間ほどの制限時間内に小さなプログラミング問題を解かせる面接形式のことをいう。プログラマー、またはデータサイエンティストなどの採用試験として、米国を含むいくつかの国で用いられている。「物理的なホワイトボード上にプログラムを書く」という形式で実施されることが多い。「オンライン上の共有エディタで書く」といった形式のこともある。Googleなどは自社のYoutubeチャンネル動画でも説明している。 出題される問題としては、例えば、「複数の数字numbersと整数kが与えられたとき、合計がkとなる数字の組を1つ出力せよ」といったものがある。この問題は有名なので通称が付いており、Two Sumと呼ばれる。 Two Sumの一例。与えられた数値の並

    コーディングインタビューの対策とその意義 (1/2) - 16bitのメモランダム
    naglfar
    naglfar 2020/01/08
    基礎の積み重ねが効いてくる。本当に大事。
  • 現在時刻が関わるユニットテストから、テスト容易性設計を学ぶ - t-wadaのブログ

    この文章の背景について この文章はテスト容易性設計をテーマに 2013/11/26 に CodeIQ MAGAZINE に寄稿したものです。残念ながら CodeIQ のサービス終了と共にアクセスできなくなっていたため、旧 CodeIQ MAGAZINE 編集部の皆様に承諾いただき、当時の原稿を部分的に再編集しつつ、ライセンス CC BY(クリエイティブ・コモンズ — 表示 4.0 国際 — CC BY 4.0) で再公開いたしました。 旧 URL にいただいたブックマークとご意見はこちらです(これであなたもテスト駆動開発マスター!?和田卓人さんがテスト駆動開発問題を解答コード使いながら解説します~現在時刻が関わるテストから、テスト容易性設計を学ぶ #tdd|CodeIQ MAGAZINE)。旧記事には当に多くの反響をいただき、誠に感謝しております。 目次 この文章の背景について 目次 出

    現在時刻が関わるユニットテストから、テスト容易性設計を学ぶ - t-wadaのブログ
    naglfar
    naglfar 2019/09/30
    ユニットテスト、ひいては実装の設計ポイントについて。とても勉強になる。
  • 動詞を三人称単数化することでBoolを返すことを表せる - Qiita

    iOS系の動画を扱うフレームワークの中に AVplayerViewController というクラスが存在します。 このクラスのメソッドを調べてみると 動詞を三人称単数化して Booleanを返すアクセッサメソッドがいくつか用意されていることに気づきました。

    動詞を三人称単数化することでBoolを返すことを表せる - Qiita
    naglfar
    naglfar 2019/08/13
    なるほどなーと読み進んで「exits」を「exists」と見間違えた。
  • 標準出力もプログラムの動作を致命的に変えるという話 - Qiita

    正常に動作しないスクリプトやプログラムに標準出力処理(echoやSystem.out.print()など)を追加して、デバッグした経験は誰にでもあるのではないでしょうか。標準出力処理の追加は、簡単なプログラムの動作検証から制限などによりデバッガーを使用できない環境での調査まで、いろいろな場面で活用されていると思います。 しかし、1行の標準出力処理の追加でもプログラムの動作を致命的に変える可能性はあります。 過去に、echoが原因でバッチが停止した問題の対策のために、JavaのプログラムにSystem.out.println(・・・);の1行を追加した結果、アプリケーションが応答を返せなくなったことがありました。その時の記憶を、サンプルプログラムを交えながら説明したいと思います。 年次バッチが停止した! 10年ほど前のある日、あるシステムの保守を担当していた私のもとに「年次バッチが停止してし

    標準出力もプログラムの動作を致命的に変えるという話 - Qiita
    naglfar
    naglfar 2019/04/03
    外部プロセスを呼んだときは、いらなくても標準出力を処理するのって定番だよね。
  • 役立つコードレビュー 8つのヒント | POSTD

    役立つコードレビュー(CR)のコツは、学校では習いません。アルゴリズム、データ構造、プログラム言語の基礎は習っても、確実に役に立つフィードバックを返す方法をじっくりと教えてくれる人はいないでしょう。 コードレビューは優れたソフトウェアを作り出すには欠かせないプロセスです。レビューを通したコードは、そうでないコードよりも 質が高く、バグが少ない 傾向があります。健全なコードレビュー文化には、副次的な利点もあります。たとえば、 バス因子 を押しとどめる、新メンバーのトレーニングに最適なツールになる、など。また、コードレビューは優れた知識共有の手段でもあります。 前提 まずは、この記事のポイントの前提を提示する必要があるでしょう。それは以下のとおりです。 信頼のおける環境で作業をしている。あるいは、あなたとチームは、あなたの信頼性を高めることを目指して作業している。 コードではないシナリオでフィ

    役立つコードレビュー 8つのヒント | POSTD
    naglfar
    naglfar 2019/03/26
    納得できる。やっぱり受ける側がどう思うかって大事なんだよな……。
  • 2018年の段階で私が知らないこと

    Originally written in: English • Русский (авторский перевод) Translated by readers into: Deutsch • Español • Français • Português do Brasil • Svenska • Tiếng Việt • తెలుగు • 日語 • 简体中文 • 繁體中文 • 한국어 Read the original • Improve this translation • View all translated posts 多くの人は、私が実際に持っている知識量より遥かに多くのことを知っていると思い込んでいる。それは悪い事ではないので文句を言っているわけではない。(世の少数派の人達は、努力して資格を得ているにもかかわらず、逆の偏見に苦しめられている。それはイケてない。) この記

    naglfar
    naglfar 2019/03/09
    寡聞にして存じ上げないが、素晴らしい方らしい。こんな詳細に書けるほど、分からないことが分かっている。
  • 開発者が知っておくべきSOLIDの原則 | POSTD

    (編注:2020/08/18、いただいたフィードバックをもとに記事を修正いたしました。) オブジェクト指向プログラミングが、ソフトウェア開発に新しい設計を持ち込みました。 その結果、開発者は単一の目的を処理するために、全体のアプリケーションに関係なく、1つのクラスの中で、同じ目的や機能を持つデータを結び付けることができるようになりました。 しかし、このオブジェクト指向プログラミングで、分かりにくいプログラムやメンテナンスができないプログラムを防ぐことはできません。 そこで、5つのガイドラインがRobert C. Martinによって作り出されました。これら5つのガイドラインすなわち原則により、開発者にとって読みやすく、メンテナンスが可能なプログラムを作成しやすくなりました。 5つの原則は、S.O.L.I.Dの原則と呼ばれています(頭字語はMichael Feathereによって名付けられま

    開発者が知っておくべきSOLIDの原則 | POSTD
    naglfar
    naglfar 2019/01/11
    守りたい原則。……現場の政治的な理由で守れない原則。つらい。
  • 不具合にテストを書いて立ち向かう - t-wadaのブログ

    テストを行っている品質保証チームや、実際にシステムを使っているお客様から不具合が報告されたとき、あなたはどう思いますか? 悲しんだり、恥ずかしいと思い、不具合修正にすぐに着手したいと気がはやるのが人情というものです。しかし、焦っているときに行う作業はしばしば視野が狭く、一つの不具合修正が三つの新たな不具合を生んでしまうようなことになりがちです。 テスト駆動開発(TDD : Test Driven Development)は、プログラマが自分の不安を克服し、自分が書くコードに自信を持ちながら一歩一歩進んでいくための手法です。不具合の発生は、端的に言えばこれまでの「自信」を揺らがせる事態です。テスト駆動開発者は不具合にどう立ち向かうのでしょうか? やはりテストを書いて立ち向かってゆくのです。私はテスト駆動開発を数年間実践してきた中で、心がけているひとつの「掟」があります。それは「不具合の修正時

    不具合にテストを書いて立ち向かう - t-wadaのブログ
  • Node.js における設計ミス By Ryan Dahl - from scratch

    Ryan Dahl は Node.js の original author ですが、彼の作ったプロダクト deno に関するトークが jsconf.eu 2018 でありました。 Node.js にずっと関わってきた僕が見て非常に興奮するような話だったので、しばらくぶりにブログに書き起こすことにしました。 背景 Ryan Dahl は2009年に Node.js の話を初めて公の場に公開しました。その時の「公の場」というのが「jsconf.eu 2009」です。 www.youtube.com Video: Node.js by Ryan Dahl - JSConf.eu - 2009 この発表から Node.js が広まり、今やサーバのみならず、IoTデバイス、デスクトップアプリなど、様々なところで動作しています。 で、今回はその発表から9年の歳月が経過し、Node.jsに対しての設計不

    Node.js における設計ミス By Ryan Dahl - from scratch
  • eeb0b42a1ecbba0c49e3 - Qiita

    @see <https://qiita.com/1ed873c7e9a8edd9c695d2fa438cc1ed/items/eeb0b42a1ecbba0c49e3/revisions/13> Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationWhat you can do with signing up

    eeb0b42a1ecbba0c49e3 - Qiita
    naglfar
    naglfar 2018/07/24
    得られるものが最高。ただし着いていく自信はない。
  • HTMLに著作権なんてあるわけないでしょ

    連載目次 IT訴訟事例を例にとり、システム開発にまつわるトラブルの予防と対策法を解説する連載、今回は「著作権」を考察する。 著作権については、過去にも連載で「プログラムや設計書、画面デザインなどが著作権法で定める著作物として認められるためには、作成者独自の工夫や創意が必須である」と解説した。 今回はこの著作物の定義について、より分かりやすい判例を紹介する。あるユーザー企業(以降、ユーザー)がベンダーに依頼して作成したHTMLが著作物に当たるかどうかを争った裁判だ。 HTMLファイルに著作権は認められるのか HTMLファイルは、作成者が一生懸命に頭を悩ませて作り上げるものであり、全く同じものは他には存在しない。 その一方、他のプログラミング言語に比べると使用する単語や文法が限定的であり、誰が作っても同じようなものになりやすい。これを「著作物」としてしまうと、HTMLの作成者は、何を書いて

    HTMLに著作権なんてあるわけないでしょ
    naglfar
    naglfar 2018/07/04
    マークアップやプログラムって個性めっちゃくちゃ出るけど、個性が出てれば著作権があるかっていうと違うからね。
  • 「悪い方が良い」原則と僕の体験談|Rui Ueyama

    ソフトウェアの世界には「悪い方が良い」原則という有名なエッセイがある。キレイにレイヤ分けされた一貫性のある良いデザインよりも、一見手抜きの悪いデザインのほうが実は良いときもあるという話だ。この逆説的なデザイン原則を僕は身をもって体験したことがある。それについてちょっと書いてみようと思う。 僕はlldというリンカの現行バージョンのオリジナル作者だ。リンカというのはコンパイラと組み合わせて使うもので、実行ファイルやDLLを作るのに使用される。lldはプロダクトとしてはかなり成功していて、標準のシステムリンカとして採用しているOSがいくつかあったり、GoogleやFacebookなど皆が知っているような大規模サイトの中で広く使われていたりする。 現在のlldは2世代目で、第1世代のlldは僕がプロジェクトに参加する前から存在していたのだけど、数年前にそれを捨てて一から書き直すということになった。

    「悪い方が良い」原則と僕の体験談|Rui Ueyama
    naglfar
    naglfar 2018/04/12
    「これとこれとこれの処理、違うのはここだけなんだ!」の「ここ」がクリティカル過ぎてまとめない方がよいこと、まれによくあるよね。
  • [レポート] 『きれいなcommit, pull requestを知りたい/作りたい方のためのgit勉強会』に参加してきました | DevelopersIO

    はじめに こんにちは、クラスメソッド最年少らしい黒澤です。 先日、『きれいなcommit, pull requestを知りたい/作りたい方のためのgit勉強会』 というものに参加してきましたので情報を共有します。 情報 日時 : 3月27日(火)20:00-21:30 場所 : 東京都渋谷区道玄坂1-9-5 渋谷スクエアA 11F 【勉強会】きれいなcommit, pull requestを知りたい/作りたい方のためのgit勉強会 スライド @imaizume さんに講師をしていただきました。 この勉強会ではタイトル通り、きれいな commit, pull request というテーマについてお話をいただき、 そのためのテクニックなどもご紹介いただきました。 きれいな commit を積む目的 commit : 変更の塊 変更には必ず意図がある。commit に含まれる変更の意図は見えるべ

    [レポート] 『きれいなcommit, pull requestを知りたい/作りたい方のためのgit勉強会』に参加してきました | DevelopersIO
    naglfar
    naglfar 2018/04/04
    -p と -i はオトモダチ。これに慣れると git を GUI で使うって何をしているのだろうという気分にさえなる。
  • AWSのアクセスキー・シークレットアクセスキーをプログラムに安全に埋め込む(埋め込まない)方法 - プログラマでありたい

    AWSでやらかす系の事故で、もっとも恐ろしいものの一つに、アクセスキー・シークレットアクセスキーの流出があります。これは、多くの場合プログラム中にアクセスキー・シークレットアクセスキーを埋め込んだままGitHub等の公開リポジトリに登録することで起こります。GitHubを監視しているBotがカモを待ち受けているので、キーを発見するやいなや不正利用して可能な限りのインスタンスを立ち上げます。そして、BitCoin等の採掘などに利用します。気が付かないと、一晩で100万円近くの請求という話もあったようです。 AWSのアクセスキーの流出を防ぐ方法 このアクセスキーの流出は、AWSの仕組みを知っていると、ほぼ被害は防げます。という事、基的な部分をおさらいしましょう。アクセスキーではなく、IAMロールを使うというのが基ですが、どうしても使わざるをえない場合は、下記のルールを守ってください。 守る

    AWSのアクセスキー・シークレットアクセスキーをプログラムに安全に埋め込む(埋め込まない)方法 - プログラマでありたい
    naglfar
    naglfar 2018/03/20
    インフラと仲が悪くて……できないんだ……。
  • 提案:エンジニアに気軽に「バグ」というのはやめませんか? - worker experienceの日記

    もしかしたら私だけかもしれないです。ずれているかもしれません。 一般論ではないかもしれません。 でも、同じような気持ちになっているエンジニアがいるかもしれないので、 代表して言わせてください。 エンジニアに、気軽に「バグ」と言うのをやめませんか? 最近立て続けに以下のようなことが起こっており、私と同僚が消耗しています。心がすり減ってます。ワーカーエクスペリエンスが低下しています。。。 ~~~~~~~~~~~~~~~~~~~ 「○○さん、この数値がバグなんだけど直してもらえる?」 →調べたらその週は祝日影響で、営業日が少ないだけだった。 「あのデータのバグはいつ直りますか?」 →データの集計定義の変更の依頼があり、変更前の状態をバグと呼ぶ 「この前入ってなかったバグなんだけど、次の開発に入れてもらっていい?」 →スコープ外のこと(担当がそれを忘れていた)をバグと呼ぶ ~~~~~~~~~~~~

    提案:エンジニアに気軽に「バグ」というのはやめませんか? - worker experienceの日記
    naglfar
    naglfar 2018/03/01
    非エンジニアにとって"バグ"は「なんかおかしい挙動」なのかもしれないが、プログラマにとって"バグ"とは「ミス」を指すので噛み合わない。相互理解が欲しいところだ。
  • Javaのジェネリクスは「まがい物」ではない - kmizuの日記

    先日、自分が書いた kmizu.hatenablog.com に対する反応として、「Javaのようなまがい物のジェネリクスと比較するのは適切でない」「Javaのジェネリクスと比較するのは適切でない」(おそらくC#や(C++等(2017/09/24追記))の言語と比較して)といった コメントをいくつか見かけました(はてなブックマークコメントやツイッターなどで)。しかし、ここでは、そのような言説こそが適切でない、ということを言いたいです。なお、methane氏との 対話については既に終わったものなので、それとは関係ありません。 そもそも、Javaジェネリクスは、静的型付き関数型言語で既に一般的であったパラメータ多相をJavaに追加する目的で導入されました(C++テンプレートのようなものをJavaに追加するためだと思っている人がいるかもしれませんが、それは実態にあっていません)。実際、Java

    Javaのジェネリクスは「まがい物」ではない - kmizuの日記