タグ

Programmingに関するauientのブックマーク (385)

  • エラーメッセージは 2W1H がいいんじゃないか

    良くあるダメなエラーメッセージ エラーが起きたときは、以下のようにエラーメッセージをどこかしらに出力すると思います。 $c->log->error('something wrong!'); ただ、このエラーメッセージって、実際に発生したときには意味がわからないことが多いのです。 $c->log->error('error!'); 気でこういう「error!」とだけ吐くメッセージだと、エラーが起きたことしか伝わってきません。程度の差はあれ意味のわからないエラーメッセージはこの世にあふれているかと思います。 機械的なエラー情報 そういうわけで、たいていは Exception クラスや Logger クラスで多くの補助が受けられるようになっていると思います。 発生時刻 発生場所 stack trace 変数の状態 ただ、このような機械的な情報だけだと、結局、運用上は対応が難しい場面ってのが多か

    エラーメッセージは 2W1H がいいんじゃないか
    auient
    auient 2016/07/19
    分かりやすいエラーを強制するインタフェースというアイディア
  • バグゼロを実現した話とその後の顛末 - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、アプリケーション基盤チームの青木(@a_o_k_i_n_g)です。好きなメソッドは emptyIfNull です。 僕は、自社クラウドである cybozu.com のミドルウェアを開発するチームで働いています。具体的には、検索サービスやファイルサーバー、非同期処理用ワーカー、セッションマネージャーなどなどを提供しています。 僕がこのチームに来たのは数年前ですが、当時はバグの多いプロダクトでした。今はすべての既知のバグを直し、残存不具合件数が 0 件、つまりバグゼロな状態になりました。また、バグゼロを実現してから 2 年ほど経過していますが今もその品質を保っています。今回はこのバグゼロを実現した方法と、その後の顛末について記そうと思います。 以前のコード 数年前に提供されていたこのミドルウェア群は、はっきり言って、バグの塊のようなプロダクトでした。 当時のコードは保守性とは程遠い

    バグゼロを実現した話とその後の顛末 - Cybozu Inside Out | サイボウズエンジニアのブログ
    auient
    auient 2016/05/18
    テストコードを書く、ログを監視、リリースサイクルを短くする、古いコードを破棄する、バグ改修の際に周辺のコードを綺麗にする
  • 全社的おんぼろ煙突化(Stovepipe Enterprise) - Strategic Choice

  • 厚切りジェイソン、NHKでプログラミング番組「可能性は無限大」

    お笑い芸人の厚切りジェイソンが23日、東京・渋谷のNHKでEテレのプログラミング教育番組『Why!?プログラミング』(3月21~25日 後3:30)の取材会に出席。自身も幼いころからプログラミングに親しんできたといい「大学学士も修士号もコンピューターサイエンスなので、馴染みのある世界で活躍できて光栄です」と出演の喜びを語った。

    厚切りジェイソン、NHKでプログラミング番組「可能性は無限大」
  • Raspberry PiのGPIO制御ライブラリ比較 - karaage. [からあげ]

    2017/02/11 pigpioに関して追記 Raspberry PiでGPIOを制御 このブログを読んでいるような電波な人はもうトランジスタ技術(通称トラ技)3月号は熟読しているかな? トランジスタ技術 2016年 3月号 出版社/メーカー: CQ出版発売日: 2016/02/10メディア: 雑誌この商品を含むブログを見る ついにトラ技までも格的にRaspberry Pi特集。Interface誌との差がいよいよわからなくなってきましたね。そんなRaspberry Pi、GPIOを手軽に制御できるのはよいのだけど、制御するやり方が色々あって、どういうときにどれを選べばよいのか、いつも迷うので一度整理してみることにしました。基宇宙語なので、この後は興味ある方のみごらんください。 GPIO制御方法比較 自分の知る限りでは、以下の3通りが代表的です。 echoで直接制御 RPi.GPIO

    Raspberry PiのGPIO制御ライブラリ比較 - karaage. [からあげ]
  • ペアプログラミングのコツ - komagataのブログ

    KRAYの@amachinさんにこう言われたので書きます。 うまいやり方を知りたいです。 ”ペアプロは疲れるけれど、コツが分かってくると、うまいやり方をすればとても有用だと知りました。” https://t.co/Ao7lVvmD8y — amachin (@amachin) 2015, 11月 30 実ペアプロ時間1年未満の僕がコツなんて言うのはおこがましいですが、ペアプロオンリーでやっているMediweb社さんのやり方の受け売りです。 1台のPCを共有しないペアプログラミングは1台のPCを使って交代しながらやるものですが、エディタの違いとか環境の違いをあわせるのはクッソストレスが溜まるのでやりません。EmacserとVimmerは一生わかりあえません。 かわりにラップトップを持ち寄って1台の外部ディスプレイを交代でつなぎます。(Thunderbolt Displayは電源も一緒になって

  • テストを書くか書かないかの判断の話

    writing_unit_test.md ユニットテストでテストを書くか書かないかの判断の話 お題 メソッドの出力の結果が、true か false のどちらでも返ってくる可能性がある場合、assert 文を書く時は true の場合だけで良いのだろうか テストとは まず、基の考えとしてなぜテストをするのか?というのがあります。 テストとは、エラーをみつけるつもりでプログラムを実行する過程である。(via ソフトウェアテストの技法 [Glenford J. Myers]) という言葉のとおり、最小の手間でプログラムのエラーを見つけ出そうとする試みがテストです。裏を返せば、エラーが見つかる可能性が低いのにすべてのことを試すのはテストではありません。 判断するときの論点 いくつかこれを判断するときの論点があります (Boolean に限らず、「そのテストは必要か?」と考えるときの観点ともいえ

    テストを書くか書かないかの判断の話
    auient
    auient 2015/11/12
    開発中のテスト(TDD)、品質保証のためのテスト(QAテスト)という分け方は分かりやすい。目的が違うしテストの内容も違って然るべき
  • mruby で同期呼出を非同期化する話(もしくは H2O の mruby ハンドラでネットワークアクセスする話)

    ■背景 H2Oではバージョン1.5より、mrubyを用い、Rackのインターフェイスに則った形でハンドラを書けるようになっています。 この機能を提供している目的は、正規表現による書き換え等を用いる複雑な設定ファイルではなくプログラミング言語を用いることで、ウェブサーバの設定をより簡潔に拡張しやすくするためです(Apacheのmod_rubyやmod_perlのようにウェブアプリケーションをウェブサーバ内で実行可能にすることではありません)。 とは言っても、現実のウェブサーバの設定においては、外部のデータベース等に問い合わせた結果に基づいたルーティングが必要になることがあります。 H2Oのようなイベントドリブンなウェブサーバ上で動作する、同期モデルを採用するRackインターフェイスを用いて記述されるハンドラ内において、データベースへの問い合わせをどのように実現すれば良いか。問い合わせが同期的

  • Scala入門記 - $shibayu36->blog;

    僕はこれまでまともに学習したプログラミング言語がPerlJavaScriptしかなくて、静的言語的パラダイムや関数型パラダイムは概念は知っているものの、それがどう役に立つのか、逆にどういう面で課題がありどのように対処されているのか、などといったことを知らなかった。知らなくてもまあ仕事PerlとJSでやっているので問題ない。しかしすでにこれらの言語から得られる概念的な知識の吸収の速度が鈍化してきていて、このままではエンジニアとしてまずいのではないかという危惧感があった。 そこで静的言語であり、関数型言語であり、また社内でも使われ始めているためサンプルコードがあるScalaの学習をすることにした。 学習するにあたって困ったことは、どういうドキュメントを読み、どのように実践するとScalaの概観をつかめるか分からないということだった。そこで今回は自分の経験を踏まえて、このように入門していくと

    Scala入門記 - $shibayu36->blog;
  • Big Sky :: RubyからGoの関数をつかわなくても再帰をやめる → はやい

    RubyからGoの関数をつかう → はやい - Qiita 約20倍はやい!!!!!!すごい!!!!!!!!!!!!!! Go単体での実行に毛が生えた程度になりました!!!!!!!!!!!!!!!!!! もう「Rubyより、ずっとはやい」なんて言わせないぞ!!!!!!!! http://qiita.com/grj_achm/items/679b3f3af2cf377f0f02 def fib(n) return n if n <= 1 fib(n - 1) + fib(n - 2) end puts fib(40) 巷で良く見る fib のコードですね。 $ time ruby fib1.rb 102334155 real    12.692 system  0.031 user    12.651 これを再帰を使わない様に修正すると以下の様になります。 def fib(n) f0, f1

    Big Sky :: RubyからGoの関数をつかわなくても再帰をやめる → はやい
  • Stackoverflow活動で得たノウハウなど - koogawa blog

    どうも、Stackoverflow活動中の koogawa です。 Stack Overflow活動 がんばるぞい from Kosuke Ogawa 毎日少しずつ、自分が力になれそうな質問に回答していった結果、おかげさまで日 1000 reputation を突破しました!\(^o^)/ というわけで、今回はStackoverflow活動の中で得たノウハウや、おすすめの使い方をまとめてみたいと思います。 回答じゃないならコメントで たまに質問に対して 「情報が少なすぎて答えようがない」 「試してないけど、多分できるんじゃない?」 といった回答をしている人がいますが、それは「回答」ではないですね。(ひどい場合は回答がdown voteされることもあるので注意) reputation が 50 以上あれば、質問に対してコメントをつけることができるので、不足している情報を質問者から聞き出すと

    Stackoverflow活動で得たノウハウなど - koogawa blog
  • Web エンジニア 6 年 5 ヶ月やってたどり着いた価値観 | Born Too Late

    Web エンジニアとして経験を積むことでいくつかのプログラミング言語やツール・ミドルウェアの使い方を覚えたりもしたけど、それらのうちいくつかは 10 年後ぐらいには陳腐化してしまっているかもしれない。 だけどそれらを通じて身につけた価値観や哲学はもっと普遍性を持っているような気がする。 大学を卒業し、Web エンジニアとしての職を得て 6 年 5 ヶ月、日数にして 2344 日経ったので、現時点での頭の中にあるもののダンプを残しておく。 どこかで聞いたようなことばかりで新鮮味はないと思うけど、自分で実感を持ってたどり着けたことには意味があるはず。 プログラミングについて 言語はいろいろなものを試してみる 毎年新しい言語に挑戦せよ、というのは確か dankogai さんの講演をまとめた記事で読んだはずなんだけど、記事が見つからない。 キーワードをもとに検索してみたら達人プログラマーにもそうい

  • うまくメソッド名を付けるための参考情報 - Qiita

    クラス名編をつくりました あるメソッドを定義しようとするとき、そのメソッドを使う人達が名前からどんなことをするか理解できるようにするには、メソッドの内容に応じて適切な情報量の命名が求められます。 この記事では、メソッド名に用いることでどのような情報が提供できるかを見ていきたいと思います。 真偽値を返すメソッド 場所 単語 意味 例

    うまくメソッド名を付けるための参考情報 - Qiita
  • プログラミングとなら、できること/図書館となら、できること番外編

    少女:聞きたいことがあるんだけど。プログラミングとかする? 少年:しない。 少女:前に何かちょこちょこっと作ってたことなかった? 少年:コンピュータ周りの雑用をやらせるスクリプトのこと? 大抵は数行くらいの使い捨てだけど。繰り返し使ってるのは、近代デジタルライブラリーからダウンロードして一つのファイルにまとめる奴くらい。 少女:あ、それ欲しい。そういうのってどうやったら作れるようになるの? 少年:うーん、こういうのは禁煙さんが詳しいんだけど。よく使ってるのはPythonってプログラミング言語だけど、これも禁煙さんのオススメだったし。 少女:そうなんだ。ねえ、今度一緒に禁煙さんとこ行かない? 少年:いや、それはちょっと。 少女:あれ?苦手だっけ? 少年:少し。コンピュータの話になると、あの人ちょっと…・・・。 少女:ふーん。じゃあ禁煙さんに教わったこと、教えて。 少年:教わったっていっても大

    プログラミングとなら、できること/図書館となら、できること番外編
  • コンパイラの構造を解説 | Shinta's Site

    はじめに 久しぶりに Aho氏, Sethi氏, Ullman氏の書いた Compilers(レッド・ドラゴン・ブック)という書籍を目にしたので、昔、コンパイラを作った時の事を思い出しながらコンパイラについてまとめてみました。 Translator (翻訳) Translatorとは、一つのプログラミング言語(Source Language: 原始言語)で書かれたプログラムを入力として取り、別の言語(Object Language or Target Language: 目的言語)のプログラムとしてつくり出すプログラムです。 原始言語が FORTRAN, C, Pascal などの高水準言語で、目的言語がアセンブリ言語や機械語といったような低水準言語である時、そのような Translator をコンパイラ(Compiler) と呼びます。また、原始言語がアセンブリ言語で目的言語が機械語であ

  • プログラマ能力指標表 | POSTD

    2015年05月27日: 表が見にくいというご意見を頂いたため、原文著者に連絡のうえ体裁を修正しました。 上位のレベルには下位のレベルの知識も蓄積されているということに注意してください。つまり、レベル n であれば n より低いレベルの知識も全てあります。 コンピュータサイエンス データ構造

    プログラマ能力指標表 | POSTD
  • なんだかんだで SPA から jQuery に戻った話 - ボクココ

    最近は SPA とか React といった話題が尽きないが、自分は結局 フロントエンド JavaScript は jQuery が最もいいと感じている。それはそれら SPA の JavaScript をいじった経験を踏まえての感想。 理由としては、「 やりたいことができにくい 」これに尽きる。 最新を追うということ 自分が最初にSPAを触ったのは AngularJS だった。なるほど、この ng-repeat や $route, $scope などを使えば、今までサーバサイドでやってたようなレンダリングが表側で制御できるようになる!と感動したものだった。この気持ち良さはきっとサーバーサイドでごにょごにょやっていた経験のある人ならなおさら感動するものだ。 さて、じゃあといって「次作るのは SPA のサービスにしよう!」と意気込んで初めて見たとする。それで作っただけで話題になるし、エンジニア

    なんだかんだで SPA から jQuery に戻った話 - ボクココ
    auient
    auient 2015/05/18
    phpと他の何かの比較に似てる気がする。結局知見が蓄積されてて、タコでも触れる環境の方が手離れがいいという話では。/ railsや流行りのjsフレームワーク追いかけられる人は優秀で数が少なくて単価高いから。
  • 品質の文脈でコメントの代わりのメソッド導入が安易に受け入れられない理由 - きしだのHatena

    前提 目的は品質であり、品質のために読みやすさを求める。 メソッドを導入するとコードの複雑度はあがる。 コメントの記述ではコードの複雑度はあがらない。 コードの複雑度が高くなるとバグがでやすくなる。 バグがでやすくなると品質はさがる。 ここまでは今回前提とさせてもらいます。なので、ここで異論があれば、あぁそこに考え方の違いがあったのね、ということで。 目的が読みやすさであれば、まあそれで読みやすい人もいるんですねぇ、ということで終わらせることもできます。 ただ、このまえのエントリでは、品質がテーマです。 そういう前提では、読みやすいだけじゃなくて、品質を落とさないということも大事になります。 メソッドの導入は、基的に複雑度をあげるので、それはそれでやりすぎるとバグの原因にもなっていきます。 もちろん、メソッドによって式や処理に名前をつけるというのは、複雑度をあげたことを補ってあまる効果が

    品質の文脈でコメントの代わりのメソッド導入が安易に受け入れられない理由 - きしだのHatena
  • Rubyist Magazine - スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編)

    『るびま』は、Ruby に関する技術記事はもちろんのこと、Rubyist へのインタビューやエッセイ、その他をお届けするウェブ雑誌です。 Rubyist Magazine について 『Rubyist Magazine』、略して『るびま』は、Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌です。 最新号 Rubyist Magazine 0063 号 バックナンバー Rubyist Magazine 0063 号 Rubyist Magazine 0062 号 Kaigi on Rails 特集号 RubyKaigi Takeout 2020 特集号 Rubyist Magazine 0061 号 Rubyist Magazine 0060 号 RubyKaigi 2019 直前特集号 Rubyist Magazine 0059 号 Rubyist

    Rubyist Magazine - スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編)
  • K のこと -- steps to phantasien t(2007-11-03)

    友人の話をしよう. 先達に敬意を表し, 仮に彼を K と呼ぶ. (イニシャルは便宜的なものだ; 向上心云々と罵ったこともないし, 恋人を寝取ってもいない.) ある時期, 私は K と一緒に働いていた. 今は違う会社にいるけれど, 互いに暇なのか, このごろもよく二人で管を巻いている. 1 K は優秀なプログラマだ. いつも敵わないと思う. 一緒に仕事をしていたこともあり, プログラマとしての私は K から強い影響をうけている. たとえば私が自動テストを始めた発端には K がいる. コードレビューもそう. この日記に出てくる話も K の影響は色濃い. 私は K のあとを追いかけるようにプログラマを続けている. K と働いてはじめて, ああ, 物事とはこう改善していくものなのかと知った. 何か問題を感じると K は試行錯誤を始める. 問題は私が諦めていたものもあるし, そもそも気付かないものも

    auient
    auient 2015/04/23
    泥の中で一歩を踏み出す、良い