タグ

Programmingに関するono_matopeのブックマーク (137)

  • コードレビューのベストプラクティス | POSTD

    Wiredrive では、私たちはかなりの数のコードレビューを行います。しかし、ここで働き始める前には私はコードレビューなどしたことがありませんでした。今回は、私がコードレビューをする時に何に注目するようにしているかや、私の考え出したベストなコードレビューのやり方をお話したいと思います。 コードレビューとは、簡単に言うと2人以上の開発者で問題を引き起こしそうなコードの修正について話し合うことです。コードレビューをすることのメリットについては多くの記事で語られており、知識を共有できること、コードのクオリティが上がること、開発者が成長できることなどが挙げられています。しかし、レビューを行う上で、どのように進めていくかという具体的なことについてはあまり多く語られてないように私は思いました。 レビューで何に注目するか アーキテクチャ/デザイン 単一責任原則 : 1つのクラスは変更する理由が2つ以上

    コードレビューのベストプラクティス | POSTD
  • Bjarne Stroustrup: Why you should avoid Linked Lists

    The part in Bjarne Stroustrup's keynote in GoingNative 2012 where he explains the reason that linked lists, and linked structures, are so bad for performance, even in the scenarios that programmers think that linked lists would be good.

    Bjarne Stroustrup: Why you should avoid Linked Lists
    ono_matope
    ono_matope 2015/03/04
    Listは操作にランダムアクセスが必要なのでキャッシュミスして遅いから使うなとストラウストラップ先生がおっしゃっている
  • コードを書くことは無限の可能性を捨てて一つのやり方を選ぶということ

    なにかの機能を実現するためにコードを書いているというのに、そこから脱線して意味不明なコードを書く人たちがいる。汎用性は高いつもりらしいけど無意味に難しいものを作りたがったり、必要がないのに「念のため」に既存の機能を残したがったりする人たちがいる。どうやら柔軟性あるいは汎用性が至上の価値であって、その価値に反するものはなんであれよくないものだと思っている人たちがいるようだ。 そういう考え方は間違っていると思う。 ある機能を実現するにはいろいろな方法がある。プログラマはそのうち一つの方法を選んでそれを実装しなければいけない。機能を実装する前は無限の可能性がありえたが、機能を実装したあとは具体的に実装したこと以外のことはできない。芸術家が大きな大理石のブロックから一つの彫刻を削りだすように、具体化することによってそれ以外のありえた形というのがなくなってしまうが、それは避けられないことだ。全部の可

  • ソースコードを読むための技術

    $Id: readingcode.html,v 1.13 2003/12/06 00:01:08 aamine Exp $ 2006-05-02 gonzui 追加。thanks: 冨山さん 2003-12-03 ltrace と sotrace を追加 2003-12-03 ツールのところに DDD を追加。thanks: 和田さん 2003-05-27 VCG, SXT などについて追加。thanks: 梅沢さん 2003-05-27 これもすっかり忘れていた strace, ktrace, truss, etags などについて追加 2002-08-30 すっかり忘れていた ctags を追加 2002-07-07 匿名希望さんからメールでいただいた情報を追加 (動的コールグラフ) 2002-06-13 日記経由でいただいた意見をもとに文章を追加。thanks: 柳川さん、まつもとさ

    ono_matope
    ono_matope 2015/02/09
    動的解析大事だ
  • GitHub - matz/streem: prototype of stream based programming language

    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. Dismiss alert

    GitHub - matz/streem: prototype of stream based programming language
    ono_matope
    ono_matope 2014/12/11
    新言語!
  • sprintf を最大10倍以上高速化するプリプロセッサ「qrintf」を作った

    最近H2OというHTTPサーバを書いているのですが、プロファイルを取ってみるとsprintfが結構な時間をっていて不満に感じていました。実際、sprintfは数値や文字列をフォーマットするのに十徳ナイフ的に便利なので、HTTPサーバに限らず良く使われる(そしてCPU時間を消費しがちな)関数です。 では、sprintfを最適化すれば、様々なプログラムが より高速に動作するようになるのではないでしょうか。ということで作ったのが、qrintfです。 qrintfは、Cプリプロセッサのラッパーとしてソースコードに含まれるsprintfの呼出フォーマットを解析し、フォーマットにあわせたコードに書き換えることで、sprintfを高速化します。 たとえば、以下のようなIPv4アドレスを文字列化するコード片を sprintf( buf, "%d.%d.%d.%d", (addr >> 24) & 0xf

  • Cocoa Programming L51 - View-Based NSTableView

    ono_matope
    ono_matope 2014/07/30
    NSTableViewの使い方
  • Big Sky :: Rob Pike のプログラミングに関する5つの掟

    « git で pull-request を clone する設定が覚えられないので alias 書いた。 | Main | Vim で peco する「veco」書いた。 » 掟1 プログラムが時間を費やす箇所がどこにあるのかは知り得ない。ボトルネックは意外な場所で発生するため後知恵で批判してはならないし、ボトルネックがどこにあるか証明出来るまではスピードハックを入れてはいけない。 掟2 測定しよう。測定し終えるまでは、さらにはコードの一部分が残りのコードの支配的な量とならないならばチューニングを行ってはいけない。 掟3 凝ったアルゴリズムは、n が小さいときに低速となり、通常 n は小さい。凝ったアルゴリズムは大きな定数を有する。n は頻繁に大きくなり得ることを知るまでは凝ったアルゴリズムを得てはならない。 (n が大きくなる場合であっても、まず掟 2 を行いなさい) 掟4 凝ったアル

    Big Sky :: Rob Pike のプログラミングに関する5つの掟
  • 新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡 - Qiita

    あわせて読みたい 新人プログラマに知ってもらいたいメソッドを読みやすく維持するいくつかの原則 ペアプログラミングして気がついた新人プログラマの成長を阻害する悪習 「オブジェクト指向プログラミング」と「関数型プログラミング」のたった一つのシンプルな違い あきらめるにはまだ早い!ソースコードの品質向上に効果的なアプローチ 2015年に備えて知っておきたいリアクティブアーキテクチャの潮流 この記事について この記事は新人向けの研修内容を再編集してお送りいたします。 ここで述べる内容はどのようにして現在のプログラミングスタイルが生まれてきたかを理解することで、よりよいプログラムを書くためのもので、正確なソフトウェア工学の歴史を学ぶためのものではありません。正確な歴史を把握したい場合は、原典をあたるようにしてください。 また、想定している読者は「よくあるオブジェクト指向プログラミングの学習」を既にし

    新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡 - Qiita
    ono_matope
    ono_matope 2014/05/20
    力作だ/メッセージ・オブジェクトによる分離・ポリモーフィズムが揃ってオブジェクト指向なら、Golangも真のオブジェクト指向か
  • 新人プログラマに知ってもらいたいメソッドを読みやすく維持するいくつかの原則 - Qiita

    エンジニア組織を強くするためのを出版しました Qiitaでエンジニアリングをめぐる様々なコミュニケーションの問題とその解決策や考え方を書いてきた。それらの背後にあるエッセンスをこの度書籍として出版するに至りました。 エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング この書籍は、エンジニアリングを「不確実性を削減する」という第一原理で捉え直し、様々なエンジニアリングとその間のコミュニケーションをめぐる現象を説明していくものです。 あわせて読みたい 新人プログラマに知ってもらいたいメソッドを読みやすく維持するいくつかの原則 新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡 ペアプログラミングして気がついた新人プログラマの成長を阻害する悪習 この記事について この記事は、新人向けの研修内容を再編集してお送りします。 この記事の内

    新人プログラマに知ってもらいたいメソッドを読みやすく維持するいくつかの原則 - Qiita
  • README のファイル名が大文字である理由 - clock-up-blog

    README のファイル名は慣習的にすべて大文字(であることが多い) GitHubプロジェクトを作るときに README を作成するオプションを入れておくと、README.md というファイルができる。それ以外の場所のプロジェクトでも README.txt や README など、ファイル名がすべて大文字になっているものをよく見かける。 なんか気持ち悪いなぁ、って思ってました。 readme でいいじゃん、と。 詳解 Linuxカーネル 第3版 作者: Daniel P. Bovet,Marco Cesati,高橋浩和,杉田由美子,清水正明,高杉昌督,平松雅巳,安井隆宏出版社/メーカー: オライリー・ジャパン発売日: 2007/02/26メディア: 大型購入: 9人 クリック: 269回この商品を含むブログ (71件) を見る 調べてみた README - Wikipedia, th

    README のファイル名が大文字である理由 - clock-up-blog
    ono_matope
    ono_matope 2014/05/09
    トリビアだ
  • YAPC::Asia 2013 / Github によりバザールモデルへ - naoyaのはてなダイアリー

    ブログを書くまでが YAPC、ということなので、書きます。 初日「モダンPerlリファクタリング」 自分は20分枠で 「モダンPerlリファクタリング」という題で話しました。スライドは以下で公開してます。 https://speakerdeck.com/naoya/modanperlrihuakutaringu-number-yapcasia 今回、思いの他 CI やテストに関する発表が他に多くてそれらに比べると基礎的な内容に終始しちゃいましたが と @t_wada 御大よりお褒めに与ったので個人的には満足です。 リファクタリングはテストさえ書ければその半分以上は終わったことになる、ただしテストはテストを書くことそのものが主目的になりすぎないように。そして書いたテストはとにかく計算機を利用して頻繁に実行しましょうということが言いたかったのですが、意図通りに伝えられたんじゃないかなと思う。

    YAPC::Asia 2013 / Github によりバザールモデルへ - naoyaのはてなダイアリー
  • Crystal : The Crystal Programming Language

    Syntax Crystal’s syntax is heavily inspired by Ruby’s, so it feels natural to read and easy to write, and has the added benefit of a lower learning curve for experienced Ruby devs. # A very basic HTTP server require "http/server" server = HTTP::Server.new do |context| context.response.content_type = "text/plain" context.response.print "Hello world, got #{context.request.path}!" end puts "Listening

    Crystal : The Crystal Programming Language
    ono_matope
    ono_matope 2013/09/23
    クリスタル
  • すごい Haskell たのしく学ぼう!は本当にすごいのか? - ぐるぐる~

    すごいHaskellたのしく学ぼう! 作者: Miran Lipovača,田中英行,村主崇行出版社/メーカー: オーム社発売日: 2012/05/23メディア: 単行(ソフトカバー)購入: 19人 クリック: 552回この商品を含むブログ (36件) を見る 今話題の、すごい Haskell たのしく学ぼう!を読んだのですが、ちょっと思ったことがあるので書評と合わせて書いておきます。 思ったこと 関数型言語がこれほど話題になるのはとても嬉しいことです。 しかし、一方で懸念点もあります。 ノリで「すごい」とだけ言う人たちがいる その人たちに乗せられて (自分には合わないのに) 買ってしまって、挫折してしまう人が出てきそう このは、いいです。 翻訳の質も素晴らしく、読んでいて「読みにくいな」と思った部分はありません。 それに加え、訳注と Appendix も素晴らしい。 しかし、誰にで

    すごい Haskell たのしく学ぼう!は本当にすごいのか? - ぐるぐる~
    ono_matope
    ono_matope 2012/06/08
    読書ガイド
  • ペア・プログラミング:An Agile Way:オルタナティブ・ブログ

    アジャイルのプラクティスを、もう一度解説して行きたいと思います。できるだけ、日の文脈にあった内容を加えて、実践できるように。また、野中先生に後でコメントを頂く予定。 ペア・プログラミング 文字通り、2人一組になってペアでプログラミングを行う。XPでの1つのプラクティスに挙げられており、1台のPCを交互に使って行うのが基形。昨今ではデュアルディスプレーを使ったり、ネットワークと画面共有を使ったりして遠隔地で実践しているチームもある。 コーディングは単純作業ではない。1つ1つの変数や操作の名前を決めることや、その構造、アルゴリズムにいたるまで、多くの設計判断が入り込む、クリエイティブな活動である。また、ミスが起こりやすい作業でもある。刑事やパイロット、スキューバダイビングなど、リスクが高い作業はペアで行うことは現実の世界にはたくさんある。二人でプログラミングを行うことで、リアルタイムにレビ

    ペア・プログラミング:An Agile Way:オルタナティブ・ブログ
  • 小野和俊のブログ:メンテナビリティの高いソースコードを目指して

    ソフトウェアを中長期にわたってメンテナンスしていく場合、メンテナンスしやすいコードと、メンテナンスしにくいコードとの間には、同じ機能を実現していたとしても、その価値には雲泥の差があります。 メンテナンスの容易さを示す言葉として、メンテナビリティ(Maintainability)という言葉がありますが、私自身、アプレッソでDataSpiderを11年間開発・メンテナンスしていく中で、「この人の書いたコードは当にわかりやすいし無駄がない」とメンテナビリティの高いソースコードに感心させられることもあれば、「急いでいたとはいえ、このソースコードはリファクタリングしないと・・・」と、メンテナビリティの低いコードがソフトウェアに混入してしまったことを嘆くこともありました。 このエントリでは、一のソフトウェアを11年間開発・メンテナンスしてきた経験から、ソフトウェアのメンテナビリティについて考察して

    小野和俊のブログ:メンテナビリティの高いソースコードを目指して
    ono_matope
    ono_matope 2012/01/26
    "5年後に自分が読んでわからないコードは捨てたほうが良い"
  • C言語でファイルをコピーする(マルチスレッド&ダイレクトI/O編) - 旧ID:itiriのブログ

    ※2012年8月9日、追記。普通のファイルコピーのソースが見たい場合はcopybenchのソースが参考になると思う。このページの内容はやや古くなっているうえ、ソースコードの質が低いので注意。 そこに至る経緯。 mmapが速いらしいと知ってググる。 ファイルコピーだとmmapよりread/writeの方が早い、という事を知る。 copybench-1.0をちょっと弄ってO_DIRECT使うようにしたら読み書きの速度が2/3程度にまで落ちた。 試しにreadだけやったらごっつ早い(つまりwriteが遅い?) 何となくpthread使ったら速度改善(゚∀゚) シングルスレッドだと遅いのかな?よく分からん。 参考:C言語: UNIX最速ファイルコピー 参考:C言語: write(2)の正しい使い方 関連:C言語でフォルダ(ディレクトリ)を丸ごとコピーする /* gcc -Wall -std=c99

    C言語でファイルをコピーする(マルチスレッド&ダイレクトI/O編) - 旧ID:itiriのブログ
    ono_matope
    ono_matope 2012/01/03
    ふむふむ
  • 最速cp on UNIX Systems - moratorium

    ふとしたきっかけで、UNIX上における「最速cp」をやってみようと思い、いくつかの方法を実装してみた。 read -> write read -> write with posix_fadvice mmap -> mmap -> memcpy -> fsync mmap -> mmap -> memcpy -> fsync with madvise mmap -> mmap -> memcpy -> munmap mmap -> mmap -> memcpy -> munmap with madvise mmap -> write mmap -> write with madvise ソース ソース 環境 Linux ubuntu 2.6.12-10-686 #1 Sat Mar 11 16:22:51 UTC 2006 i686 GNU/Linux glibc 2.3.5-1ubuntu

    最速cp on UNIX Systems - moratorium
    ono_matope
    ono_matope 2012/01/03
    ふむ
  • デスマーチが起きる理由 - 3つの指標

    Your system administrator has blocked your computer or device. Please contact the system administrator.

    ono_matope
    ono_matope 2011/11/11
    長いので明日読む
  • いいアジャイルと悪いアジャイル

    スクラムはラグビーにおいて最も危険な段階であり、それというのも、潰れたり不適切なかみ合い方をすると、前列のプレーヤーが怪我をしたり、首の骨を折る危険すらあるからだ。—Wikipedia 私が子供の頃には、コレステロールは体に悪いものだった。これは覚えやすかった。脂肪は悪い。コレステロールは悪い。塩分は悪い。みんな悪い。しかし近頃では、コレステロールが「いい」コレステロールと「悪い」コレステロールに分かれている。私たちがこの2つをどうにかして見分けられるとでもいうように。そしてその切り替わりは奇妙なものだった。FDAが突然プレスリリースを発表して、殺鼠剤には2種類、いい殺鼠剤と悪い殺鼠剤があり、いい方はたくさん摂って悪い方は摂ってはならず、そして決して2つを混ぜたりしてはいけないのだと言ったかのようだった。 一年くらい前まで、私はいわゆる「アジャイル」プログラミングに対して、ごく一次元的な見

    ono_matope
    ono_matope 2011/11/10
    あとで読む