タグ

ブックマーク / www.infoq.com (41)

  • GoogleがHTML5構文解析ライブラリGumboをオープンソース化

    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が最近リリースされ、重要な変...

    GoogleがHTML5構文解析ライブラリGumboをオープンソース化
  • プログラミング言語Harlanの紹介

    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が最近リリースされ、重要な変...

    プログラミング言語Harlanの紹介
  • 技術的負債を管理する

    1992年にWard Cunningham氏が、技術系ではないステークホルダにこの問題を伝えるために、初めて「技術的負債」というメタファを使いました。品質の低いコードと自動テストによるカバレッジがないことは、財務的負債と比較されます。このようなコードは、開発者だけでなく、すべてのステークホルダが負う財政的な重荷になり、将来的に利息が課される負債になります。元額は、コードベースを将来簡単に変更できるようにリファクタリングするコストです。利息は、チームがよいコードではなく、汚いコードに取り組まなければならない場合に、将来支払う余分なコストです。 財務的負債とは違い、技術的負債は返済しなくてもよい負債です。時には、返済するのが無駄なこともあります。ある部分のコードを読んだり、変更したりすることはめったにないか、決して起こらないかもしれません。そのため、技術的負債も、どのくらい起きそうかを考慮す

    技術的負債を管理する
    tanakaBox
    tanakaBox 2013/07/03
    素晴らしいまとめ。
  • vert.xのハイボリューム/スケーラブルなアーキテクチャ - Eberhard Wolff氏とのインタビュー

    原文(投稿日:2013/05/20)へのリンク Web 2.0とモバイルクライアントの目覚ましい成長が,アプリケーションアーキテクチャに関する私たちの考え方を変えつつある。Node.jsは,サーバ側のソフトウェアに非ブロック/非同期のランタイム環境を構築することでこの課題に取り組もうと試みた,最初のテクノロジのひとつだ。そして昨年,同様のランタイムをJava仮想マシン上に実現するvert.xが登場した。Node.jsとは対照的にvert.xは,来の意味での多言語(polyglot)アプローチを踏襲している。JavaScript,Groovy,Javaその他の言語を使ったシステムの構築や,ひとつのアプリケーション内での混在が可能だ。 InfoQはEberhard Wolff氏にコンタクトを取り,これら2つのテクノロジの間にある違い,それぞれをベースとした場合の開発アーキテクチャから生じる課

    vert.xのハイボリューム/スケーラブルなアーキテクチャ - Eberhard Wolff氏とのインタビュー
  • DevOpsとITILを知的な方法で統合

    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が最近リリースされ、重要な変...

    DevOpsとITILを知的な方法で統合
  • The Higher Order Rubyist

  • デザインパターンの自動化

    .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の現状

    NoSQLは、たった4、5年で50から150の新しいデータベースを増やしました。nosql-database.orgは、そのようなデータベースを150程紹介しています。その中には、Object Databaseのように、非常に古いけれども、まだ強力な時代遅れのものも含まれていました。そして、もちろん、いくつかの興味深い合併があり、CouchDBとMembaseはCouchBaseになりました。この記事では、主要なシステムについて後ほど触れたいと思います。 多くの人々は、NoSQLの世界では大きな合併が起きていると考えてきました。ところが、当はそうではありません。NoSQLは、ただ急激に増えただけであり、まだ増え続けています。プログラミング言語のようなコンピュータサイエンスのすべての分野と同様に、非常に多くのデータベースのギャップはますます広がっています。これはインターネット、ビッグデータ

    NoSQLの現状
  • Computer Architecture of the 1960’s

    InfoQ Software Architects' Newsletter A monthly overview of things you need to know as an architect or aspiring architect. View an example

    Computer Architecture of the 1960’s
  • LLVM が提案する C言語へのモジュール機能追加

    11月の LLVM developer meeting で Apple の Dong Gregor 氏が,C言語へのモジュール機能の追加に関するプレゼンテーションを行った。その要旨は次のようなものだ。 プログラマやツール一般にとって,Cプリプロセッサは昔から悩みの種でした。プログラマは拡大するマクロ汚染や行儀の悪いヘッダのインクルード順などの問題と戦わなければなりません。これらの問題を軽減するため,いつもさまざまな回避手段が用いられてきました。LONG_MACRO_PREFIXES や include ガード,場合によってはライブラリマクロの #undef といった方法です。 一方,ツールは同じヘッダを繰り返し処理することに関連した,マクロ特有のスケーラビリティに関する問題への対処を余儀なくされます。実行ごとに異なるプリプロセス処理のコンテキストによって,ヘッダの解釈される方法が影響を受け

    LLVM が提案する C言語へのモジュール機能追加
    tanakaBox
    tanakaBox 2012/12/08
  • Webアプリケーションを高速化する50のトリック

    MicrosoftのInternet Explorer PMであるJatinder Mann氏は、BUILD 2012でHTML5アプリとサイトを高速化する50のパフォーマンストリックというセッションで、Webアプリケーションを高速化する多くのチップスを提供した。 Mann氏が提供したアドバイスは、以下の6つの原則を中心に構成されていた。 1. ネットワークリクエストに迅速に応答する リダイレクトを避ける。上位1,000のWebサイトのうち63%は、リダイレクトを使用している。これらはリダイレクトをやめることによって10%のパフォーマンスを改善することができる。 メタリフレッシュを避ける。世界のURLのうち14%は、メタリフレッシュを使っている。 可能な限りユーザーの近くにあるCDNを使用してサーバーの応答時間を最小化する。 異なるドメインからのリソースをダウンロードすることによって、同時

    Webアプリケーションを高速化する50のトリック
  • Xwt によるクロスプラットフォームアプリケーション開発

    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が最近リリースされ、重要な変...

    Xwt によるクロスプラットフォームアプリケーション開発
  • Datomicのアーキテクチャ

    従来のRDBMSはデータを操作するために強力な論理的、宣言的、集合指向言語を提供します。しかし残念ながら、この強力さはデータベースサーバ側限定であり、データがアプリケーションに渡ってしまうとネストしたforループによってその効果がなくなってしまいます。Datomicは分散インデックスを提供し、宣言的問い合わせコンポーネントをアプリケーションサーバ層に配置できるようにします。この問い合わせエンジンはDatomicがホストするデータとインメモリのデータソースの両方のデータを一貫性のある高レベルの手法で操作できます。 全般的な関心 Datomicの設計には多くのコンセプトが取り込まれています。 単純さと合成。システムはひとつのことを行うサービスを複数組み合わせて構成するべきであり、サービスは互いを知っているべきでない。ストレージやキャッシュのような領域には良く考えられたシンプルなコンポーネントが

    Datomicのアーキテクチャ
    tanakaBox
    tanakaBox 2012/11/24
    Clojure作者の作ってるデータベース。
  • The Racket Way

    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.

    The Racket Way
    tanakaBox
    tanakaBox 2012/10/30
    Racket作者の講演
  • REST入門

    第2版(2008年1月19日):翻訳者による注釈を追加しました。 ヘテロジニアスなアプリケーション間の通信を実装するための「適切な」手法について議論が行われているということを、あなたは知っているかもしれないし、知らないかもしれません。そういった状況下で、現在の主流は明らかにSOAP、WSDL、WS-*仕様という世界をベースとしたWebサービスにフォーカスしています。しかし、少数派の人たちの中で、より良い方法があると主張する人がいます。それが、REST(REpresentational State Transferの略)です。稿では、筋から外れることなく、RESTとRESTfulなHTTPアプリケーション統合への実用的な説明を試みようと思います。これらの考え方の説明については、より詳細に踏み込んで説明をするつもりです。私の経験上、誰かが始めてこのアプローチを経験することで一番議論が活発に

    REST入門
  • 実験駆動開発 - ポストアジャイルの手法

    原文(投稿日:2010/02/25)へのリンク TDDとBDDは今や、広く使われているソフトウエア開発技術だ。しかし、単にBDDやTDDに従っているだけではビジネス機会を逸したり、もっと悪いときにはビジネスに悪影響を及ぼしてしまう。TDDとBDDには解決できないふたつの問題がある。すなわち、どのようにして開発したアプリケーションの使用を評価するのか。そして、どうやって顧客からフィードバックを得るか。 ユーザを調査する従来の方法は決して正確な結果にはならない。アプリケーションの提供者も顧客も多大な時間を必要とし、先入観にとらわれてしまう。Nathaniel Talbott氏はRubyConf 2009でのプレゼンテーションで次のような考えを発表した。すなわち、開発時におけるTDDと同じような方法でビジネスもフィードバックを得るべきだ、という考えだ。 (画像はLabnotesから) ソフトウエ

    実験駆動開発 - ポストアジャイルの手法
    tanakaBox
    tanakaBox 2010/03/08
    実験駆動開発とか
  • InfoQ: HTTPSコネクションの最初の数ミリ秒

    ほとんどの人が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。 これは

    InfoQ: HTTPSコネクションの最初の数ミリ秒
    tanakaBox
    tanakaBox 2010/03/04
    TLSのしくみ
  • Gremlin:グラフを扱う言語

    原文(投稿日: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または

    Gremlin:グラフを扱う言語
    tanakaBox
    tanakaBox 2010/01/29
    面白そう。
  • コンパイラのターゲットとしてのJavaScript:Clamato、GWT Smalltalk、Python、Scheme

    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が最近リリースされ、重要な変...

    コンパイラのターゲットとしてのJavaScript:Clamato、GWT Smalltalk、Python、Scheme
    tanakaBox
    tanakaBox 2009/10/18
    JavaScriptのコンパイルなど。
  • InfoQ: JavaScriptへのマルチスレッド・プログラミングの導入

    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開発を経験したことのある方ならば、これではうまくいかないということはすでにおわかりだと思います。これまでの例で

    InfoQ: JavaScriptへのマルチスレッド・プログラミングの導入
    tanakaBox
    tanakaBox 2009/09/24
    マルチスレッド