Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。この本では、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...
1992年にWard Cunningham氏が、技術系ではないステークホルダにこの問題を伝えるために、初めて「技術的負債」というメタファを使いました。品質の低いコードと自動テストによるカバレッジがないことは、財務的負債と比較されます。このようなコードは、開発者だけでなく、すべてのステークホルダが負う財政的な重荷になり、将来的に利息が課される負債になります。元本額は、コードベースを将来簡単に変更できるようにリファクタリングするコストです。利息は、チームがよいコードではなく、汚いコードに取り組まなければならない場合に、将来支払う余分なコストです。 財務的負債とは違い、技術的負債は返済しなくてもよい負債です。時には、返済するのが無駄なこともあります。ある部分のコードを読んだり、変更したりすることはめったにないか、決して起こらないかもしれません。そのため、技術的負債も、どのくらい起きそうかを考慮す
原文(投稿日:2013/05/20)へのリンク Web 2.0とモバイルクライアントの目覚ましい成長が,アプリケーションアーキテクチャに関する私たちの考え方を変えつつある。Node.jsは,サーバ側のソフトウェアに非ブロック/非同期のランタイム環境を構築することでこの課題に取り組もうと試みた,最初のテクノロジのひとつだ。そして昨年,同様のランタイムをJava仮想マシン上に実現するvert.xが登場した。Node.jsとは対照的にvert.xは,本来の意味での多言語(polyglot)アプローチを踏襲している。JavaScript,Groovy,Javaその他の言語を使ったシステムの構築や,ひとつのアプリケーション内での混在が可能だ。 InfoQはEberhard Wolff氏にコンタクトを取り,これら2つのテクノロジの間にある違い,それぞれをベースとした場合の開発アーキテクチャから生じる課
.NETで簡単な例を見てみましょう。 public Person : INotifyPropertyChanged { string firstName, lastName; public event NotifyPropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string propertyName) { if ( this.PropertyChanged != null ) { this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } public string FirstName { get { return this.firstName; } set { this.firstName
NoSQLは、たった4、5年で50から150の新しいデータベースを増やしました。nosql-database.orgは、そのようなデータベースを150程紹介しています。その中には、Object Databaseのように、非常に古いけれども、まだ強力な時代遅れのものも含まれていました。そして、もちろん、いくつかの興味深い合併があり、CouchDBとMembaseはCouchBaseになりました。この記事では、主要なシステムについて後ほど触れたいと思います。 多くの人々は、NoSQLの世界では大きな合併が起きていると考えてきました。ところが、本当はそうではありません。NoSQLは、ただ急激に増えただけであり、まだ増え続けています。プログラミング言語のようなコンピュータサイエンスのすべての分野と同様に、非常に多くのデータベースのギャップはますます広がっています。これはインターネット、ビッグデータ
11月の LLVM developer meeting で Apple の Dong Gregor 氏が,C言語へのモジュール機能の追加に関するプレゼンテーションを行った。その要旨は次のようなものだ。 プログラマやツール一般にとって,Cプリプロセッサは昔から悩みの種でした。プログラマは拡大するマクロ汚染や行儀の悪いヘッダのインクルード順などの問題と戦わなければなりません。これらの問題を軽減するため,いつもさまざまな回避手段が用いられてきました。LONG_MACRO_PREFIXES や include ガード,場合によってはライブラリマクロの #undef といった方法です。 一方,ツールは同じヘッダを繰り返し処理することに関連した,マクロ特有のスケーラビリティに関する問題への対処を余儀なくされます。実行ごとに異なるプリプロセス処理のコンテキストによって,ヘッダの解釈される方法が影響を受け
MicrosoftのInternet Explorer PMであるJatinder Mann氏は、BUILD 2012でHTML5アプリとサイトを高速化する50のパフォーマンストリックというセッションで、Webアプリケーションを高速化する多くのチップスを提供した。 Mann氏が提供したアドバイスは、以下の6つの原則を中心に構成されていた。 1. ネットワークリクエストに迅速に応答する リダイレクトを避ける。上位1,000のWebサイトのうち63%は、リダイレクトを使用している。これらはリダイレクトをやめることによって10%のパフォーマンスを改善することができる。 メタリフレッシュを避ける。世界のURLのうち14%は、メタリフレッシュを使っている。 可能な限りユーザーの近くにあるCDNを使用してサーバーの応答時間を最小化する。 異なるドメインからのリソースをダウンロードすることによって、同時
従来のRDBMSはデータを操作するために強力な論理的、宣言的、集合指向言語を提供します。しかし残念ながら、この強力さはデータベースサーバ側限定であり、データがアプリケーションに渡ってしまうとネストしたforループによってその効果がなくなってしまいます。Datomicは分散インデックスを提供し、宣言的問い合わせコンポーネントをアプリケーションサーバ層に配置できるようにします。この問い合わせエンジンはDatomicがホストするデータとインメモリのデータソースの両方のデータを一貫性のある高レベルの手法で操作できます。 全般的な関心 Datomicの設計には多くのコンセプトが取り込まれています。 単純さと合成。システムはひとつのことを行うサービスを複数組み合わせて構成するべきであり、サービスは互いを知っているべきでない。ストレージやキャッシュのような領域には良く考えられたシンプルなコンポーネントが
Sustainable Security Requirements with the ASVS Josh Grossman provides a brief overview of what the ASVS is, but takes a closer look at balancing trade-offs and prioritizing different security requirements. Josh shares how to make the process repeatable and how to implement it as part of your own organization's requirements process.
第2版(2008年1月19日):翻訳者による注釈を追加しました。 ヘテロジニアスなアプリケーション間の通信を実装するための「適切な」手法について議論が行われているということを、あなたは知っているかもしれないし、知らないかもしれません。そういった状況下で、現在の主流は明らかにSOAP、WSDL、WS-*仕様という世界をベースとしたWebサービスにフォーカスしています。しかし、少数派の人たちの中で、より良い方法があると主張する人がいます。それが、REST(REpresentational State Transferの略)です。本稿では、本筋から外れることなく、RESTとRESTfulなHTTPアプリケーション統合への実用的な説明を試みようと思います。これらの考え方の説明については、より詳細に踏み込んで説明をするつもりです。私の経験上、誰かが始めてこのアプローチを経験することで一番議論が活発に
原文(投稿日:2010/02/25)へのリンク TDDとBDDは今や、広く使われているソフトウエア開発技術だ。しかし、単にBDDやTDDに従っているだけではビジネス機会を逸したり、もっと悪いときにはビジネスに悪影響を及ぼしてしまう。TDDとBDDには解決できないふたつの問題がある。すなわち、どのようにして開発したアプリケーションの使用を評価するのか。そして、どうやって顧客からフィードバックを得るか。 ユーザを調査する従来の方法は決して正確な結果にはならない。アプリケーションの提供者も顧客も多大な時間を必要とし、先入観にとらわれてしまう。Nathaniel Talbott氏はRubyConf 2009でのプレゼンテーションで次のような考えを発表した。すなわち、開発時におけるTDDと同じような方法でビジネスもフィードバックを得るべきだ、という考えだ。 (画像はLabnotesから) ソフトウエ
ほとんどの人がHTTPSとSSL (Secure Sockets Layer) を結びつけて考えます。SSLは1990年代半ばにNetscape社が開発した仕組みですが、今ではこの事実はあまり正確でないかもしれません。Netscape社が市場のシェアを失うにしたがって、SSLのメンテナンスはインターネット技術タスクフォース(IETF)へ移管されました。Netscape社から移管されて以降の初めてバージョンはTransport Layer Security (TLS)1.0と名付けられ、1999年1月にリリースされました。TLSが使われだして10年も経っているので、純粋な"SSL"のトラフィックを見ることはほとんどありません。 Client Hello TLSはすべてのトラフィックを異なるタイプの"レコード"で包みます。ブラウザが出す先頭のバイト値は16進数表記で0x16 = 22。 これは
原文(投稿日:2010/01/15)へのリンク Gremlinはグラフを扱うのに便利なチューリング完全であるプログラミング言語だ。この言語はXPathを幅広く使って問い合わせや分析や操作ができるJava DSLだ。 Gremlinは多対多の関係のグラフを作成するのに使うことができる。グラフの要素や頂点やエッジには key-valueのペアの属性を持っているので、グラフは属性グラフと呼ばれている。例をあげると下記のようになる。 Gremlinには下記のような型がある。 graph:graphはvertexとedgeの集合で構成されている。 vertex:vertexは出て行くedgeと入ってくるedges、そして属性のmapで構成される。 edge:edgeは出発点となるvertexと、終着点となるvertex、そして属性のmapで構成される。 boolean:booleanはtrueまたは
function backgroundLoad ( ids ) { for ( var i=0; i < ids.length; i++ ) { var a = getArticleWithCache(ids[i]); backgroundLoad(a.children); } } このbackgroundLoadはIDの配列を引数に取り、その各IDに対して上で定義したgetArticleWithCacheを呼び出します。これでIDに対応する記事のデータがキャッシュされます。そして読み込んだ記事の子記事のIDに対してbackgroundLoadを再帰的に呼び出すことで、ツリー全体をキャッシュすることができます。 ここまですべてうまくいっているように見えます。しかし、一度でもAjax開発を経験したことのある方ならば、これではうまくいかないということはすでにおわかりだと思います。これまでの例で
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く