むむむむむ……。MIT(米国マサチューセッツ工科大学)のキャンパスで毎年行われるパズル競技会「MIT Mystery Hunt」発のクロスワードパズル「Regexp Puzzle(正規表現パズル)」が超難解で脳がしびれると一部で話題になっています。
エンタープライズJava開発に従事している方であれば、一度はStruts 1を扱ったことがあるでしょう。Struts 1はJavaのWebアプリケーションフレームワークとして2001年ごろに誕生しました。 MVCモデルに基づいたアーキテクチャと高い生産性から、数年後にはデファクトスタンダードとなるほどの人気を獲得。当時、多くの企業がこぞってStruts 1を使った企業システムを構築しました。筆者自身が業界に入ったのは2004年のこと。最初に参加したプロジェクトがStruts 1を使った企業システムの構築だったことをよく覚えています。 当時に作られたシステムの多くは、今でも現役で稼働しています。最近でもStruts 1ベースの企業システムを改修する話はよく聞きます。しかし、2013年にサポート終了を迎えたため、今後Struts 1を使い続けることは大きなリスクになりました(参考)。つまり、新
ビルドツールGradleのインストールと使い方、Jenkins/Git連携:小山博史のJavaを楽しむ(18)(1/5 ページ) オープンソースのビルドツール「Gradle」の主な特長やLinux/Windowsでの環境構築方法、さまざまな使い方に加え、CI/バージョン管理との連携方法を解説します。 「これから」のための柔軟なビルドツール、Gradleの主な特長4つ Javaではアプリケーションをビルドしたり、Webアプリをサーブレットコンテナへデプロイしたりするときにビルドツールを使うことがよくあります。ビルドツールを使うと、開発中に変更があった部分に影響する範囲だけコンパイルをしたり、アプリのパッケージを作成するときに必要な比較的単純なファイルコピーの作業をミスなく実行したりすることが、簡単にできるようになります。 今回紹介をするGradleはオープンソースのビルドツールの1つです。J
国民の祝日には、日付が決まっているものもあれば、その年によって変化するものもある。本稿では法律に従って、これらを算出する方法を示す。 カレンダーを表示するプログラムを作ろうとしたとき、厄介なのは祝日だ。日本の祝日には、特定の日に固定されていないものがあるからだ。法律に書いてある通りにロジックを組めば祝日を決定できるとはいうものの、なかなか面倒なコーディングになる。本稿では、2007年以降のある年の祝日を求める方法を紹介しよう。なお、本稿のサンプルは「Windows desktop code samples:.NET Tips #1112」からダウンロードできる。 日本の祝日とは? 本稿で扱う祝日とは、国民の祝日/振替休日/国民の休日の三種類である。 国民の祝日: 「国民の祝日に関する法律」第二条/第三条1項と「建国記念の日となる日を定める政令」による休日 振替休日: 「国民の祝日に関する法
詳しくは上記連載を見てもらえば分かりますが、GruntとはJavaScriptを使用してWeb開発に伴うさまざまな作業を自動化して効率良く行うためのビルドツールです。 このツールでは「タスク」と呼ばれる一連の処理を設定ファイルに記述していきます。Gruntの設定ファイル(Gruntfile.js)は、タスクに対してJSON形式でパラメーターを指定していくのですが、ここで少々問題があります。 シンプルなタスクであれば分かりやすいのですが、多くの拡張機能(プラグイン)を使用したり、タスクの制御を細かく行う必要が生じたたりした場合、Gruntfileの記述量が増えて冗長になり、タスク同士の関連やタスク実行結果も分かりにくくなってしまいます。 そんなGruntの問題点を解消することを目的として開発されたのが、今回紹介する「gulp.js」(以下、gulp)です。 gulpはGruntを継承しつつ、
あのホストまでの経路や通信ボトルネックを調べるには? tracerouteコマンド:ネットワーク管理の基本Tips 目的のホストまでIPパケットがどのような経路で転送されていくかを確認したい場合や、通信経路に問題がないかどうかを調べたい場合は、「traceroute」コマンドが役立ちます。tracerouteはTCP/IPネットワークのトラブルシューティングにおける基本ツールの一つです。 連載バックナンバー 本連載では、ネットワーク管理の基本コマンドを順を追って紹介していきます。基本書式と用法、主要なオプション、用例サンプルを示しますので、manやhelp代わりに通読し、各コマンドでできることを順次おさらいしてみてください。今回はIPネットワークの経路情報を確認する際に利用する基本コマンド「traceroute」を見ていきます。 なお、本連載では、執筆時点の最新版Red Hat Enter
連載目次 連載第1回の「GitHub製フレームワークHubotの概要とインストール、チャットアプリと連携する基本的な使い方」では、GitHub社が開発しているBotフレームワーク「Hubot」の概要、Hubotとチャットとの連携方法、Hubotの基本的な使い方を紹介しました。 前回の「Redmine連携でチケットをチャットに通知&開発を楽しくするHubotスクリプト6選」と同じく、今回も、サンプルアプリケーションに対して修正を行うシーンを例に、Hubotと各ツールがどう連携するかを解説します。 ソースコードはGitHubそっくりなUIと機能を提供している「GitBucket」(Scala製)で管理し、ビルドやデプロイはCI(継続的インテグレーション)ツール「Jenkins」で行います。 利用したソフトウェアとバージョンは以下の通りです。 Hubot 2.4.7 Kandan 1.2 Git
「サンプルアプリケーションに対して修正を行う」シーンを例に、Hubotと各ツールがどう連携するかを解説しながら進めていきます。 サンプルアプリケーションは「Spark」という、Rubyの軽量Webフレームワークである「Sinatra」を参考にして作られたJavaベースのフレームワークを使い、「Hello World!」と表示するだけの簡単なWebアプリケーションを作成しました。サンプルアプリケーションの中身については、次回解説します。 タスク管理は「Redmine」で行います。サンプルアプリケーションに機能を追加する前に、Redmineにチケットを作成します。チケットの作成や更新情報もチャットに流したいので、先に設定しておきましょう。 バージョン管理はGitHubそっくりなUIと機能を提供している「GitBucket」(Scala製)で管理し、ビルドやデプロイは「Jenkins」で行います
近年、ソフトウェア開発を取り巻く環境が急激に変化してきています。ネットワークの整備や、コミュニケーションツールの進化に伴い、リモートワークやインターネット上での協業も盛んに行われるようになってきました。チームメンバー全員の住んでいる国が違う、といったこともあるかもしれません。 しかし物理的に離れた環境で働くと、今まで対面で行っていたコミュニケーションを別の手段で代替しなければなりません。SkypeやGoogleハングアウトなどのビデオ通話、HipChatやSlackなどのチャットアプリを利用することで仕事上必要なコミュニケーションは取れるようになりますが、ソフトウェア開発に関わる状況確認は別のツールを使う必要があります。 特にオペレーションは、いつ、誰が、どのような対応をしたか把握していたいですよね。 このような課題を解決する一つのスタイルとして、「ChatOps」があります。ChatOp
表のような転置インデックス完成後は、クエリに対する結果を返す処理は簡単です。例えば、ユーザーが「Vim」というクエリを発行すると、検索エンジンは「Vim」を含む文書IDリストを返します。表では文書IDの「2」を返します。 検索エンジンを取り巻く7つの技術 検索エンジンのコア技術は前節で紹介したインデックスです。しかし実際に、検索インデックスだけで構成する検索エンジンから、検索サービスを構築するには多大なコストが掛かります。以下の節で検索エンジンを利用したシステム、検索サービスを構築する際に便利なコンポーネントを紹介します。 これらの機能のいくつかは、多くの検索エンジンが組み込んでいます。一方で、簡素な検索エンジンは、以下で紹介するコンポーネントをサポートしていないため、ユーザーが独自に開発するか、その機能を持つコンポーネントを組み込む必要があるものもあります。 【1】トークナイザ 検索エン
■ リクエスト処理のアーキテクチャ Tomcat 4時代から採用されているリクエスト処理のCatalinaアーキテクチャは変更なしで、そのまま採用しています。Tomcatが受け付けたリクエストは、リクエスト処理パイプラインによってServletまで到達し処理されます。 ■ クラスタリング(セッションレプリケーション) 若干のインターフェイスの改良はありますが、基本的には同じ仕様です。 「All-to-All」「primary-secondary」の2つのレプリケーション方式が利用可能となっています。 ■ DBコネクションプール 今までどおりApache Commons DBCPを使用し、バージョンはDBCP 1.4系(JDBC 4用)を採用しています。Tomcat独自のjdbc-poolを利用する場合は別途ビルドが必要です。jdbc-poolは近いうちに同梱されるかもしれません。 では、T
【真夏の夜のミステリー】Tomcatを殺したのは誰だ?:現場から学ぶWebアプリ開発のトラブルハック(6)(1/3 ページ) 本連載は、現場でのエンジニアの経験から得られた、APサーバをベースとしたWebアプリ開発における注意点やノウハウについて解説するハック集である。現在起きているトラブルの解決や、今後の開発の参考として大いに活用していただきたい。(編集部) 【第1章】Tomcatが無応答!? トラフィックの多い大規模サイトでは、その負荷のためにさまざまな問題が発生する。それらの問題を回避するには、性能を考慮して作られたアプリケーションや、ノウハウに基づいたミドルウェアのチューニングが必要となる。 TomcatはServletコンテナとしての長い歴史を持ち、多くの採用実績を持つオープンソースのアプリケーションサーバ(以下、APサーバ)だ。大規模なサイトで採用される事例も出てきており、To
前回、ボトルネックになり得るポイントの検討やベンチマークツール「ab」によるパフォーマンス・チェック方法を紹介した。今回はそれらを基に、Apacheのチューニングを行っていく。 処理の簡略化による負荷の低減 初めに紹介するのは、処理を減らすことによってApacheの負荷を少なくする方法だ。1つ1つの効果は小さいかもしれないが、積み重なると大きな差となって表れる。 不必要なモジュールの削除 最初に行うチューニングは、不必要なモジュールの削除だ。周知のとおり、Apacheはモジュールの組み合わせで動作している。モジュールの種類は実にさまざまで、仮想ディレクトリ機能(mod_alias)やユーザーディレクトリ(mod_userdir)といった基本的な機能さえも、モジュールとして実装しているくらいである。 Apacheがこのような形態で実装されているおかげで、利用する側は不要な機能を切り離してプロ
XSSにCSRFにSQLインジェクションにディレクトリトラバーサル……Webアプリケーションのプログラマが知っておくべき脆弱性はいっぱいあります。そこで本連載では、そのようなメジャーなもの“以外”も掘り下げていきます (編集部) JSONPだって、セキュリティを気にしてほしい 皆さんこんにちは、はせがわようすけです。今回は、JSONPを使用する場合のセキュリティについて解説しましょう。 JSONPとは、JSON with Paddingの名称が示しているとおり、JSON形式のデータにコールバック関数の呼び出しのためのコードを付加することで、クロスドメインでデータの受け渡しを実現するためのデータ形式です。JavaScriptからクロスドメインでのデータが簡単に扱えることなどを理由に、多数のWebアプリケーションでAPIの一部としてJSONP形式でデータの提供が行われています。 具体的な例を見
HTML5+CSS3は「メニューの作り方」を覚えるだけ!:にわかデザイン(1)(1/3 ページ) Photoshopなどの画像処理ソフトを使わず、CSSでできる表現の幅が広がっています。にわかデザイナーになれる、簡単Tipsをお伝えします。 Web製作の現場では、予算の都合上Webサイトのデザインをデザイナーに発注できず、エンジニア自身が担当しなければならないことがままあります。昨今は「Twitter Bootstrap」などのCSSフレームワークを使って、そんな状況に対応している方も多いと思います。確かに、Twitter Bootstrapはリッチなデザインや機能を持つパーツがそろっていて、素早くレイアウトを組み上げるには便利です。しかし、そのためには独自の指定方法やお作法をそこそこ知っておかなければならないのも事実です。 であるならば……、CSS自体を覚えてしまうというのも1つの手では
パーティションを利用する 今回は少し凝ったテーブルを定義をしてみましょう。 郵便番号データは毎月更新されるので、テーブル指定時にバージョンも指定できるようにします。このような場合、Hiveではパーティションを使います。 以下に郵便番号を保存するテーブル「zip」を定義しますが、日付型DATEのパーティションverを設定するようにします。 hive> CREATE TABLE zip (zip STRING, pref INT, city STRING, town STRING) > PARTITIONED BY (ver DATE) > ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' > LINES TERMINATED BY '\n'; OK Time taken: 0.128 seconds
並列分散処理の常識をHadoopファミリから学ぶ:ビッグデータ処理の常識をJavaで身につける(2)(3/3 ページ) 3つの課題に応える「Hadoopファミリ」 関連プロジェクトは、Hadoopが抱える以下の3つの課題に応えたものです。 【課題1】「並列分散処理をもっと簡単に書きたい」 MapReduceをJavaで書く処理はある種のひらめきが必要ともいわれます。特に、SQLで書かれていた処理をMapReduceで書き替える場合、思考の切り替えが必要で苦労することも多いようです。たとえ慣れていても、Hadoopで簡単なデータ加工したい、そのためだけに多くのクラス定義をするのは面倒です。 この難易度を下げるハイレベル言語として「Hive」「Pig」が存在します。どちらの言語もSQLやストアドプロシジャのようなコードを書いて、MapReduceを動かせます。対話型のシェルユーティリティもあり
grepは、デフォルトでは該当する行だけが表示される。これを、該当する行の前後の行も一緒に表示させるには「-」の後ろに表示したい行数を指定してgrepを実行する。例えば、該当行の前後3行を併せて表示する場合は、「-3」というオプションを指定する。 $ grep -n kitaura smb.conf 4: workgroup = kitaura ←-nオプションを付けたので、4行目に該当する文字列があることが分かる $ grep -3 -n kitaura smb.conf 1-[global] 2- coding system = euc 3- client code page = 932 4: workgroup = kitaura ←-3オプションによって、前後各3行も表示される 5- server string = Samba %v
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く