PerfectQueueはいかにパーフェクトか、あるいはRubyとMySQLでジョブキューを作る試みについて
はじめに ソースコードを静的解析することでSRP(単一責任原則)を定量的に算出します.*1 svn blameによるSRP算出*2を参考に、git blameによる算出をshで行ってみました. このSRP値が最大のモジュールが王様モジュールに相当します. # 単一責務性の違反指数(SRP) # SRP=R+U+((L/100)-5) # R:修正リビジョンのユニーク数 # U:修正ユーザのユニーク数 # L:モジュールのライン数 function get_SRP() { local target_filepath=$1 echo $(( \ $(git --no-pager blame --line-porcelain $target_filepath | sed -n 's/^summary //p' | sort | uniq -c | sort -rn | wc -l) + \ $(
android:launchMode については以前のエントリ 「Android Activity, Task, Stack, Launch mode」 にも少し書いたのですが、それぞれの違いについてもう少し詳しく説明したいと思います。 上記のエントリで私がまとめた launchMode の表を再掲します。 この表に載っている 「インテントに応答するアクティビティをどのタスクに保持するか」 「アクティビティのインスタンスを複数生成できるか」 「インスタンスに他のアクティビティを含めることができるか」 「クラスの新しいインスタンスを起動して新しいインテントを処理するかどうか」 について順番に説明します。 ■ インテントに応答するアクティビティをどのタスクに保持するか ここに アプリX があるとします。 このアプリは ACTION_SEND を処理できる Activity A を持っています。
子どもへのプログラミング教育は早ければ早いほどいいというものではない。 最近子どもへのプログラミング教育が話題になることが多いけど、恐らく小学3年生までの子どもへの効果はほとんどなく、小学4年生でもほとんどの子どもには難しいと思う。 人間の知能の発達には段階があって、必要な段階に達していないうちにそれが必要な教育を行っても効果は望めない。 まず、なんでこのエントリを書いたかというと、プログラミングには適した発達段階があるということを知らないと、その発達段階に達する前にプログラミング教育を行って、もちろんプログラミングは出来なくて、その子には適性がないという判断をしてしまうとうことが起きてしまうんじゃないかと思ったからだ。 まだ適した段階まで来てないだけなのにプログラミング教育をして失敗して「この子にはプログラミングができなかった/興味をもたなかった」という実績を作ってしまうことによって、将
YAPC::Asia Tokyo 2015 前夜祭に参加して、柴田さん( hsbt さん)とモリスさん*1( tagomoris さん)の講演を聴いた。特に最後のモリスさんの講演を聴いていて、ちょっとした衝撃を受けると共に、気づきや疑問もあったので、久しぶりに blog エントリを書こうという気になった。 なお、このエントリは講演メモや浮かんだ疑問、その後の議論等を記したものであり、すっきりとした結論は無いのでご注意。 モリスさんの講演 講演資料が公開されていた How to create/improve OSS products and its community from SATOSHI TAGOMORI 講演時に取ったメモがこちら 我々にできるOSSとそのコミュニティの育てかた ======================= id:tagomoris TD のモリスさん TD はデー
<追記>いろいろ反応あってたしかになーって思いましたが、ここで説明されてるのは「汎化」とか「パラメタライズ」としたほうが正しいですね。抽象化というと、一塊の手続きをブラックボックスにして、実装を隠蔽する面のほうが正解に近いです。でもまあそこを差し引いて読んでいただければ、それなりに有用ではある記事だと思うので、このまま残しておきます</追記> プログラミングに限らない話かもしれませんが、ふだんの生活で触れないような概念というのは、一度わかってしまえば便利なんだけど、どうしてもとらえどころがない、というようなことが多いと思います。プログラミングにもそういう概念はたくさんあって、わたしのような凡人は新しい概念にぶち当たるたびに苦労しています。今日はそんな中で「抽象化」という言葉について、「昔の自分にこうやって説明してあげたかったな〜」という説明をします。 プログラミングを学んでいく中で、「とり
おたくの社員が失敗作を生む たいていのテクノロジー企業は、発売前の商品のベータ版を社員に使わせて反応を見る。「ドッグフード」と呼ばれるこのプロセスは、バグや、使い勝手が悪いところを見つけて、商品の完成度を高める貴重なチャンスだ。 もちろんグーグルもドッグフードをやっている。 ただ、「ちょっと問題があるんだよね」と複数の元社員は明かす。グーグルは社員におたくっぽい人間が多いから、商品の評価におかしな偏りが出るというのだ。「商品を世に出すには、グーグル社員の支持を集めないといけない。グーグルの社員が使いたいと思うものでないといけないんだ」と元幹部は語る。 とはいえ、社内トライアルで確実に支持を得る方法があると、この人物は言う。データ機能とチャートを加えることだ。必ずしも一般ユーザーには重宝されない機能かもしれないけれど……。 「社内トライアルでいい結果が出るように、グーグル社員の好みを意識しす
起業してほぼ一人でコードを書いていたのですが、そろそろ人が増える可能性もあるのでコーディング規約にしたがっておこうかと思います。 ベース 安定のクックパッドさん https://github.com/cookpad/styleguide 触発フロー まずモダンな記法を頭に入れる http://clang.llvm.org/docs/ObjectiveCLiterals.html Appleのお膝元で膝枕した後に https://developer.apple.com/jp/documentation/CodingGuidelines.pdf githubの技を見たあと https://github.com/github/objective-c-style-guide 最後にNYTimesに触発されて http://raimon49.github.io/2015/03/21/review-n
original: The introduction to Reactive Programming you've been missing (by @andrestaltz) (translated by @ninjinkun, reviewed by @ma0e) あなたはリアクティブプログラミングと呼ばれる新しい方法が気になっている。 勉強するのは大変で、良い教材がないのでさらに難しい。私が勉強を始めたときは、まずチュートリアルを探した。見つけたのは一握りの実践的なガイドだけ、しかもそれらは表面をなぞっているだけで、リアクティブプログラミングのアーキテクチャ全体像を構築しようとしてはいなかった。ある関数を理解するのに、ライブラリのドキュメントは役に立たないことがある。 これを見て欲しい。 Rx.Observable.prototype.flatMapLatest(selector,
- + 最近の小学校では、「お父さん・お母さんの名前をグーグルで検索してみましょう」という、世にも恐ろしい授業があるらしい。・・・。 — 丹 洋介 (@yosuke_tan) January 25, 2015
ここでは、C言語を使ったプログラミングを説明します。 このページは、プログラムを全く書いたことが無い初心者を対象としています。 各説明には出来るだけ短いサンプルコードを入れて、手元で動かしながら実感を持って勉強していただくというポリシーで各ページを書いています。 また、環境の準備を説明している部分では、まずはお金をかけずに無料でプログラムを書いたり動かしたりすることを前提に説明しています。 Windows環境でのC言語環境準備の説明ではcygwinを扱っていますが、ここで紹介しているサンプルコードは基本的なものばかりなので、VisualStudioなどを使っても恐らくそのままコンパイルできると思います。 MacosXであれば、Developer Toolをインストールしてあれば大丈夫です。 このページにある内容が参考になれば幸いです。 内容が難しすぎる、理解できない場合にはお知らせいただけ
昔から「名は体を表す」と言ひます。クラスの名前がクラスの果たす役割と一致してゐるかどうか常に考へ続けませう。 ImageInfo, AccountData, etc. Info って何やねん? Data って何やねん? ImageInfo って Image とはどう違ふねん?? FooInfo や FooData よりも好ましいかもしれない名前の例: FooAttribute, FooProperty, FooMetadata, FooDescription FooConfiguration, FooSetting, FooParameter FooResult, FooStatistics, FooSummary FooBuffer, FooList, FooCollection, ... ProductListItem, TranslationTableEntry, etc. Prod
@hedjirog です。iBeacon Advent Calendar の2日目を担当します。 iBeaconの技術情報はまだ少ないようですが、参考になりそうな記事やソースコードをまとめてみました。 * 宣伝 * iOS開発関連の記事をつぶやく @ios_dev_bot を運用しています。 Advent Calendarの投稿チェック に良ければ利用してください。 目次 技術記事 スライド Apple公式ドキュメント 書籍 ソースコード 解説・関連記事 2013 iBeacon Advent Calendar ※ お世話になったリンク先: はてなブックマーク / Google検索 / SlideShare / Speaker Deck / GitHub 1. 技術記事 iBeaconの解説 - Reinforce-Lab.’s Blog 最も分量の多い記事。iBeaconの説明やiOSア
まえがき データにIDを持たせたいとき、単純な方法としては、DBの提供するauto incrementを使う場合やUUIDを利用することがある。それぞれの方法の利点欠点は以下の通り。 データベースのauto incrementを使う場合 利点: 特別な実装が必要ない 欠点: DBを1台で運用するとデータベースがパフォーマンス・障害のボトルネックになる DBを二台にするとIDのユニークさや順序の保証が困難 UUID(v4)※1を利用する場合 利点: 分散環境で各々がIDを生成しても衝突しない IDを公開したくない場合に、推測されにくいIDを生成できる 欠点: 128ビット必要、DBのインデクシングやプログラミング言語で扱うときに不利なことがある IDから時間の情報が失われる、例えば2つのIDを比べてどちらが古い投稿か判断できない 世界の大企業がどうしてるか 調べてみると多くの企業がブログなど
A guide to optimizing Nginx for maximum performanceMost setup guides for Nginx tell you the basics - apt-get a package, modify a few lines here and there, and you’ve got a web server! And, in most cases, a vanilla nginx install will work just fine for serving your website. However, if you’re REALLY trying to squeeze performance out of nginx, you’ll have to go a few steps further. In this guide, I’
スキル以前に重視する資質 37signalsでは、1つの採用枠に優秀な候補者がたくさん集まります。 最近、37signalsでは、『Basecamp』のプロダクトデザイナーを1名募集しました。プロダクトデザイナーとは、プロジェクトのビジュアルデザインを統括するポジションです。また、チームの方向性をまとめる役割もあります。37signalsはあまり頻繁に採用を行いません。採用は、候補者と私たちにとって貴重な出会いの機会です。 私は、プロダクトデザイナーの候補者を選ぶとき、基本的なデザインスキルに注目します。すなわち、明瞭に思考しコミュニケーションできるか、センスがあるか、新しいアイデアを生み出すビジョンがあるか、新規プロジェクトを構想するだけでなく、実行に移す能力があるか、などです。しかし、こうしたスキルの前に、私が最大に重視する資質がひとつあります。この資質を持った人に、失望させられたこと
さきほどWWDCにて新言語 Swiftが発表されました。 The Swift Programming Language (iBooks Store) で言語ガイドが公開されていたのでザッと目を通してみました。 Objecitve-Cと比較してSwiftがイケてそうなところをパッと気になったところだけ書いていってみます。 変数/定数の型推論がある Objective-Cのように明示的に型を書かなくても型を推論してくれます。 推論で問題ないケースも多いと思うのでタイプ数がかなり減らせそうですね。 ( 変数を宣言する際はvar、定数を宣言する際はletで宣言します。 ) // 型推論 var name = "Shinji Ikari" // 変数の型は推論によりString型になる var age = 14 // 変数の型は推論によりInteger型になる let height = 141.5
はじめに 本シリーズ「iOS Core Audio」ではiOS 2.0からiOSに標準搭載されている「CoreAudio」と呼ばれるオーディオ処理用のソフトウェアインターフェイスを扱っていきます。 今回はCore Audioのフレームワーク群の概要を見ていきます。 目次 Core Audio ? Core Audioを構成するフレームワーク/サービス Inter-App Audio 実機とシミュレータ 外部ハードウェアとの連携 iOSのバージョンとCore Audio まとめ Core Audio ? 「Core Audio」はオーディオ処理用のフレームワークの総称であり、アプリ内でオーディオを再生、録音、ミックス、生成することをサポートします。MIDIコンテンツを扱ったり、他のアプリにオーディオやMIDIをストリーミングしたりすることも可能です。 多数のフレームワークが用意されており、簡
プログラミングを勉強するときに、本とかドキュメントを読んで一ページ目から順に勉強する人が多い。 たしかに、これもいい勉強方法の一つだとは思う。 でも、僕はこれが苦手だ。 楽しくない。 だから、僕は目的を分割して必要な部分だけ飛び飛びに学んでいる。 ジグゾーパズルを作るみたいな感じ。 ジグゾーパズルを作るときに左上から一個ずつ探していたら時間がかかってしょうがない。 必要なところから評価(具現化)するというところは、遅延評価的なのかなとか思った 厨二病だな
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く