amedama41のブックマーク (275)

  • なぜ自動テストの導入は失敗するのか? - プログラマーの脳みそ

    開発室の雑談。営業側のマネージャが言うには 「今のプロジェクトで自動テストの導入を試みている話をしたら、XXXさんのところでも過去にいくつか導入を試みたけどもみんな上手くいかなかったって話になって」 なるほど? まあ確かに自動テストはシステム開発にとって魅惑の技法ではあるものの、では導入がうまくいっているか? というと普及率は低いと言わざるを得ない。私がお手伝いしたプロジェクトでは、元請け側から自動テストをやるお達しが来たわけだが、紆余曲折あって掛け声倒れのような状態になってしまった。 ビジネス書の煽りタイトルのような件だが、古式ゆかしき受注生産の業務システム開発プロジェクトに自動テストを導入しようとして失敗する事例を聞いたので、僕なりに分析して見出した要素を挙げておこうと思う。 V字モデル ソフトウェア開発の手法としてV字モデルというものがある。 オーダーメイドでシステムを作るにあたっ

    なぜ自動テストの導入は失敗するのか? - プログラマーの脳みそ
    amedama41
    amedama41 2021/04/29
    失敗してるプロジェクトは、自動化してるのに単体テストのフェーズでしかテストを実行してない。自動化のコストだけかさんで失敗してる。必要なのはCIだよ
  • Goエラーハンドリング戦略

    Goのエラーハンドリングが採ったスタイル 多値返し 直積(関数の返値とエラーを両方返す) try-finallyをdeferという機構でカバー panicはプロセスを落とすためのもの Goはこの戦略でエラーハンドリングを行うとしましたので、「多値はなぜタプルじゃないんだ?」、「直和(返値orエラー)で十分じゃ?」「panic-recoverでtry-catchできそう?」などいう様な他の処理系の風習を持ち込むことは意味がありません。そしてそれらの提案の多くはすでに検討されリジェクトされてきた経緯があります。 「try組み込み関数」プロポーザルなんかも検討されマージ直前くらいまで進んだこともありますが、「Goのエラーハンドリング」にとって一長一短がありました。その欠点課題は解決できずに最終的にリジェクトされました。 「多値返し」は実にCPUフレンドリーな機構で、C言語の関数呼び出し規約にちょ

    Goエラーハンドリング戦略
    amedama41
    amedama41 2021/03/05
    “適切に書かれたエラーメッセージからトラブルの概要を掴む際、スタックトレースが役に立つ場面は多くはありません(役に立つ時、それは適切なエラーメッセージの構築が不十分)” 十分に書ける人間は多くないと思
  • Tokio チュートリアル (日本語訳)

    Rust の非同期ランタイム Tokio のチュートリアルの日語訳です。オリジナルはこちら: https://tokio.rs/tokio/tutorial

    Tokio チュートリアル (日本語訳)
    amedama41
    amedama41 2021/02/25
  • Timeout.timeout を安全に使うのは難しい | Wantedly Engineer Blog

    こんにちは!Wantedlyエンジニアの縣です。 先日 Rails アプリケーションで ActiveRecord::StatementInvalid: PG::DuplicatePstatement というエラーが確率的に発生するという事象に遭遇し、その原因が Timeout.timeout と関係していてなかなか面白かったので記事に書き起こすことにしました。 (この記事を書くために今改めて調べてみたところ、 https://github.com/rails/rails/pull/41356 で ActiveRecord に関しては問題が解決していることがわかりました。が、記録として投稿しておきます。) TL;DRRuby の Timeout.timeout は非同期例外を発生させる非同期例外発生時に ActiveRecord の Connection の内部状態が壊れたことでエラーが

    Timeout.timeout を安全に使うのは難しい | Wantedly Engineer Blog
    amedama41
    amedama41 2021/02/23
  • Apple M1の参照カウントは本当に速いのか - yamasaのネタ帳

    Apple M1に関して以下のようなツイートが話題になった。 18/ Another "magic" trick is how their "Swift" programming language uses "reference counting" instead of the "garbage collection" in Android. They did something in their CPU to double the speed of reference counting.— Robᵉʳᵗ Graham😷, provocateur (@ErrataRob) 2020年11月26日 fun fact: retaining and releasing an NSObject takes ~30 nanoseconds on current gen Intel, and ~6.

    Apple M1の参照カウントは本当に速いのか - yamasaのネタ帳
    amedama41
    amedama41 2021/01/29
  • ロギングベストプラクティス - kawasima

    #翻訳 https://www.scalyr.com/blog/the-10-commandments-of-logging/ CC BY 4.0 @Brice Figureau 1.自分でログの書き出しをしない printfをつかったり、ログエントリを自分でファイルに書き出したり、ログローテションを自分でやったりしてはいけない。運用担当者にお願いして、標準ライブラリやシステムAPIコールを使うようにしよう。そうすれば、実行中のアプリケーションが他のシステムコンポーネントと適切に連携して、特別なシステム設定なしに適切な場所またはネットワークサービスにログを記録できるようになる。 ロギングライブラリを使いたければ、特にJavaの世界にはLog4j, JCL, slf4j, logbackなど多くのものが存在する。私はslf4jとlogbackを組み合わせて使うのが好きだ。とてもパワフルで、設

    ロギングベストプラクティス - kawasima
    amedama41
    amedama41 2020/01/18
  • [C++] std::rangesの範囲アクセス関数(オブジェクト)の使いみち - 地面を見下ろす少年の足蹴にされる私

    C++20のRangeライブラリ導入に伴って、std::ranges名前空間の下にbegin,end,size,data等の、これまでコンテナアクセスに用いられていた関数が追加されています。しかし、これらの関数はすでにstd名前空間に存在しており、一見すると同じ役割を持つものが重複して存在しているようにも見えます。 従来のstd::begin()/std::end()の問題点 std::ranges::begin/std::ranges::end std::ranges::swap std::ranges::size std::ranges::empty std::ranges::data 結論 参考文献 謝辞 従来のstd::begin()/std::end()の問題点 元々、範囲を表すイテレータのペアを取り出す口としてのbegin()/end()は各コンテナのメンバ関数として定義されて

    [C++] std::rangesの範囲アクセス関数(オブジェクト)の使いみち - 地面を見下ろす少年の足蹴にされる私
  • 電源を切っても消えないメモリとの付き合い方

    メモリのように書けて永続化される次世代ストレージデバイスNVDIMMの扱い方を解説します これは2019年10月19日に行われる予定だった カーネル/VM探検隊@北陸 5回目(台風の影響で中止) での発表資料です サンプルコード: https://github.com/Fadis/kernelvm…

    電源を切っても消えないメモリとの付き合い方
    amedama41
    amedama41 2019/10/21
  • A terminal UI for tshark, inspired by Wireshark

    Why? You're debugging on a remote machine and need to study a pcap. You don't want to copy it back to your desktop. You're familiar with Wireshark. 😃 Features Read pcap files or sniff live interfaces. Use Wireshark's display filters. Reassemble TCP and UDP streams. View conversations by protocol. Written in Go - for Linux, macOS, *BSD, Android (termux) and Windows. For setup, bugs and feature req

    A terminal UI for tshark, inspired by Wireshark
    amedama41
    amedama41 2019/10/20
  • Coinbaseがうけた標的型攻撃とその対応についてまとめてみた - piyolog

    暗号資産を取り扱う米国のCoinBaseは、2019年6月に発生したFirefoxの脆弱性(当時ゼロデイ)を悪用した攻撃への対応を2019年8月9日にセキュリティ担当者がBlogで明らかにしました。ここでは一連の対応の顛末についてまとめます。 対応公開までの経緯 情報の公開を行ったのは米暗号資産取扱い事業者 Coinbaseのセキュリティ担当者 Philip Maritin氏。 2019年6月20日にTwitterで第一報レベルの情報共有が行われていた。 1/ A little more context on the Firefox 0-day reports. On Monday, Coinbase detected & blocked an attempt by an attacker to leverage the reported 0-day, along with a separ

    Coinbaseがうけた標的型攻撃とその対応についてまとめてみた - piyolog
  • Linux メモリ管理を理解したい - Qiita

    Linux カーネルのメモリ管理方法について、勉強したことをまとめる。 メモリ管理はハードウェアに強く依存するため、x86_64 かつ OS起動後に 64bitプロテクトモード に移行したあとに話を絞る。また、OS は CentOS7.6、カーネルは次のバージョンを利用する。 ]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) ]# uname -a Linux localhost.localdomain 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux 概要 ノイマン型アーキテクチャ コンピュータの基的な構成のひとつ。次の図が参考になる。 ほぼ全てのコンピュータが、このアーキ

    Linux メモリ管理を理解したい - Qiita
    amedama41
    amedama41 2019/07/08
  • mimalloc/readme.md at master · microsoft/mimalloc

    mimalloc (pronounced "me-malloc") is a general purpose allocator with excellent performance characteristics. Initially developed by Daan Leijen for the runtime systems of the Koka and Lean languages. Latest release tag: v2.1.7 (2024-05-21). Latest v1 tag: v1.8.7 (2024-05-21). mimalloc is a drop-in replacement for malloc and can be used in other programs without code changes, for example, on dynami

    mimalloc/readme.md at master · microsoft/mimalloc
    amedama41
    amedama41 2019/06/23
  • SQLアンチパターンもりもりDBを設計しよう! - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 概要 名著SQLアンチパターンを読み終えたので、それの復習のために悍ましいデータベースを作ろうと思った。 まず前半では、SQLアンチパターンを意図的に盛り込み、目も当てられない酷い設計をします。 そのあとリファクタリングを行なったER図に書き直していきます。 なお、真面目に書くと参考書の丸写しになってしまうので、この記事は アンチパターンもりもりのER図を見て嫌悪感を学習し、設計に役立てようという趣向のもと、詳しい説明は省きます。 とても良いなので読んでください。 想定するシステムの概要と状況 目的において適切かはわかりませんが、とり

    SQLアンチパターンもりもりDBを設計しよう! - Qiita
    amedama41
    amedama41 2019/06/23
  • 高速化の観点から new Array(100) を使わない方が良い理由

    別件で V8 の JIT コードの逆アセンブルを眺めている時に気づいたのですが、JavaScriptで new Array(100) という形で配列を作るのは、高速化の観点から言うと V8 においては避けるべき書き方です。 高速化を求める方は、 new Array() や [] で作成して Array#push で追加していくのが良いでしょう。この記事では、その理由を説明します。 今回の記事は、以下の V8 のブログ記事を参考にしております。 https://v8.dev/blog/elements-kinds 「詰まった配列(Packed Array)」と「穴あき配列(Holey Array)」 v8 は内部的に、その配列がどういうタイプの配列であるかの状態を記録しており、その情報を利用して最適化を適用します。状態は内部的には21個あるのですが、今回話題にするのは、その中でも「詰まってい

    amedama41
    amedama41 2019/06/10
    そもそもなんで穴あき配列なんて仕様を入れたのか。メリットよりも、バグの要因になるデメリットの方が大きそう
  • 株式会社はてなを退職します - el cine

    2018年2月14日、約6年間在職したはてなへの最終出社を終えました。しばらくの有給消化期間の後、3月に正式な退職日を迎える予定です。 はてなには2012年の4月に入社し、はてなブックマークやPresso、またカクヨムやPINGAなど数多くのサービスにディレクターとして携わってきました。Web開発のバックグラウンドが皆無という状況で新卒入社しましたが、同僚や上司に恵まれこれまで育てていただきました。お世話になった同僚・上司のみなさま、当にありがとうございました。 思い出 いくつかのサービスは立ち上げから参加することができました。特に入社後、初めて立ち上げに関わった「Presso」カドカワさまと共働開発した「カクヨム」については、サービスの魅力をどう組み上げていくかという点で最初から工夫・検討の余地が大きいプロジェクトでした。ディレクターとしてやりがいを実感しやすかったので、大変ではあった

    株式会社はてなを退職します - el cine
  • コンピューティングの基礎と高速化入門

    コンピューティングの基礎と処理の高速化入門 #1 at connpass で発表したスライドです。 https://liberal-arts-for-tech.connpass.com/event/123273/

    コンピューティングの基礎と高速化入門
    amedama41
    amedama41 2019/04/29
  • 重要な証拠となる証拠映像の費用負担 地域によって大きな差 | NHKニュース

    刑事裁判で重要な証拠となる取り調べの録音・録画などの映像について、被告側が弁護活動に使うため検察庁にコピーの提供を求めたときに、地域によって無料だったり有料だったりと、費用負担に大きな差があることがNHKの調査でわかりました。 捜査機関による取り調べの録音・録画や、事件現場の防犯カメラの映像は、刑事裁判で重要な証拠として扱われています。 こうした映像について被告側は、内容を確認して弁護活動に使うため検察庁にコピーの提供を求めることができますが、全国50の地方検察庁で提供の方法が異なり、費用負担に大きな差があることがNHKの調査でわかりました。 このうち大阪や東京など8つの検察庁では、専門のコピー業者などが窓口となっているため、人件費などの手数料が必要で、その料金もブルーレイディスクの場合、1枚300円から1200円まで4倍の差があります。 また、30の検察庁では手数料は取らないものの被告側

    重要な証拠となる証拠映像の費用負担 地域によって大きな差 | NHKニュース
    amedama41
    amedama41 2019/04/19
    “もう一方の業者とも話し合って値下げを決めた” カルテルかな?
  • 「不正アクセス」の定義をご存知ですか?:ITpro

    問題を一つ。退社した元社員のユーザー名,パスワードを使って認証を回避した場合,「不正アクセス禁止法」(厳密には,不正アクセス行為の禁止等に関する法律)に照らして犯罪になるか?そしてその根拠は? この問題に,どのくらいの方が即答できるだろうか。不正アクセスという言葉はよく使われるが,不正アクセス禁止法で何を禁止しているのかは必ずしも正しく認識されていない。原因は「アクセス」の定義が明確になっていないことである。そこで今回は,法律からみる不正アクセスについて考えてみよう。 不正アクセス禁止法のように,刑法とは別に存在する刑法系の法律を特別刑法という(刑法と特別刑法を合わせて広義に刑法と呼ぶこともある)。刑法系の法律では,違法とする行為を明確にすることが特に要求される。これが曖昧な法律や条文は憲法違反(憲法31条)となり,起訴されても無罪判決が下されることになる。もっとも現実には言葉は数式のよう

    「不正アクセス」の定義をご存知ですか?:ITpro
  • 職質裁判一審で不当判決、曰く、110番通報を要請することは不審事由にあたる

    警察官に職務質問をされた話が2017年の7月、これが違法な職務質問であると考えたので国賠訴訟をし、一審判決が今日言い渡された。 曰く、「原告の請求を棄却する」。負けたわけだ。ではなぜ負けたのか。判決の言い渡しでは主文しか読み上げられないので、判決文を取りに行く。 当日は、東京都(警察)の主張によれば、パトカーで私とすれ違った際、私を視認し、しばらくみていたところ、私はパトカーを見るなり顔を伏せて足早に通り過ぎたということだ。裁判所は東京都(警察)のこの主張を採用しなかった。というのも、車道と歩道の間には植え込みが多くあり、私をしばらく見るなど不可能であるからだ。したがって今回の職務質問は適切な不審事由なしで始まっていることが認められた。 その後10分間ほど、私を路上にとどめて職務質問が行われた。裁判所はこれを適切であると判断した。不審事由がなく始まった職務質問ではあるが適切だそうだ。 その

    amedama41
    amedama41 2019/03/14
    警察官による犯罪の前例があるので、警察官に取り囲まれている状態で逃亡、および他人に助けを求めることは不審ではない
  • パンティー地蔵

    昔々ある所に、KKOだが心優しい増田増田が住んでいました。 ある年の大晦日の事です。 増田増田はパンティーを作りました。 それをアノニマスダイアリーに書き込んで、セルクマし、頂いたはてなスターでお正月のを買おうと思ったのです。 「パンティーは5つあるから、を買えるぐらいのスターはもらえるだろう。」 「お願いしますね。それから今夜は雪になりますから、気をつけて下さいよ」 増田は、五つのパンティーを持って出かけました。 家を出て間もなく、雪が降ってきました。 雪はだんだん激しくなったので、増田はせっせと道を急ぎました。 村はずれまで来ると、お地蔵さまが六つならんで立っています。 お地蔵さまの頭にも肩にも、雪が積もっています。 これを見た増田は、そのまま通り過ぎる事が出来ませんでした。 「お地蔵さま。雪が降って寒かろうな。せめて、このパンティーをかぶってくだされ」 増田はお地蔵さまに、書

    パンティー地蔵