サイボウズはクラウドベースのグループウェアや業務改善サービスを軸に、社会のチームワーク向上を支援しています。
![サイボウズ株式会社](https://cdn-ak-scissors.b.st-hatena.com/image/square/bce5d867f2c516e4411fe74a218714abedb9e1c7/height=288;version=1;width=512/https%3A%2F%2Fcybozu.co.jp%2Fassets%2Fimg%2Fog.png)
Javaプログラミングにおいて、クラスの独立性を高め、再利用性の高さ、実装の入れ替えの容易さ、アスペクトの自動的な適用、ホットデプロイなどサーバデベロップメントに欠かせない機能を実現するための基盤技術のひとつにDI(Dependency Injection)がある。DIはインタフェースと実装の完全な分離を目指し、主にDIコンテナと呼ばれる専用の実行環境/フレームワークを通して実現される。 DIコンテナの実装はいくつかあるが、ここでは11日に最新版の2.4.0(2.4.1)がリリースされたSeasar 2.4(S2Container 2.4)を取り上げて紹介したい。Seasar 2.4はThe Seasar Foundationによって開発がおこなわれているプロダクトで、周辺プロダクトの充実や日本語ドキュメントの充実など、国内におけるエンタープライズ向けWebアプリケーションシステム開発用の
2006年11月16日16:55 カテゴリLightweight Languages オブジェクトは難しくない。難しいのはクラス 大人だからオブジェクトは難しくなる。子供にとっては実はオブジェクトは自然で自明で簡単だ。 オブジェクト指向を正しく理解する:ITpro オブジェクト指向はしばしば,とっつきづらく難しい技術と言われます。その理由の一つには,対象とする分野が広く,それぞれに深みがあることが挙げられます。しかし,それ以上にこの技術を難しくしている落とし穴とも言うべき原因が二つあると筆者は考えています。それは比喩を乱用する説明の仕方の問題と,「もの中心」を意味するコンセプト自体の問題です。事実、オブジェクト指向というのは最初は子供向けだったのだ。 このことを、現在「オブジェクトとはなんぞや」という大人たちは忘れてしまっている。 それで、オブジェクトとは何か、といえば、「自分が何が出来る
オブジェクト指向はしばしば,とっつきづらく難しい技術と言われます。その理由の一つには,対象とする分野が広く,それぞれに深みがあることが挙げられます。しかし,それ以上にこの技術を難しくしている落とし穴とも言うべき原因が二つあると筆者は考えています。それは比喩を乱用する説明の仕方の問題と,「もの中心」を意味するコンセプト自体の問題です。 そこで本特集では,「オブジェクト指向という言葉をよく聞くけど,実際どんなものかよくわからない」という方のために,初心者/入門者が陥りやすい落とし穴を明確にしながら,オブジェクト指向の全体像を説明します。余計な先入観やまぎらわしいたとえ話に惑わされなければ,オブジェクト指向そのものはそれほど難しい技術ではないことを理解していただきたいと思います。なお,オブジェクト指向プログラミング,デザインパターン,分析/設計といった個々の技術については特集2以降でそれぞれ解説
「Nine Things Developers Want More Than Money」という記事がありました。 面白かったので要約してみました。 誤訳や勘違いがあるかも知れないので詳細は元記事をご覧下さい。 1. 成功するプロジェクトであること 多くのプロジェクトはそもそも失敗するような計画で行われているという悲しい現実があると書いてありました。 成功の要素として、現実的な納期、安物のツールを使うことを強制されないこと、ろくでもないマネジメント・仕様変更・暗黙の仕様 などを要求する発注先にあたらないなどが重要だそうです。 2. すばらしいマネジメントが行われていること プロジェクトと人の両面ですばらしいマネジメントが行われていることが重要だそうです。 身を挺してチームを守るようなすばらしいマネージャに対してはプログラマはソフトウェアの品質で応えるそうです。 3. 新しいことを学べること
はじめに 本文書は、Rubyによりコーディングを行う際の規約について述べる。 実際のプロジェクトに適用する際には、このコーディング規約をカスタ マイズして用いることを推奨する。 ソースコードの整形 インデント プログラムを読みやすくするため、インデントを適宜行う。インデント 幅は2とする。また、インデントにはスペースのみを使用し、タブは使用 しない。(環境によりタブ幅が異なるため。) 例: if x > 0 if y > 0 puts "x > 0 && y > 0" end end 一行の桁数 一行の桁数は最大80桁までとする。 空行 複数のクラスの区切には空行を挿入する。 例: class Foo ... end class Bar ... end 誤った例: class Foo ... end class Bar ... end また、クラス内の各構成要素の区切にも空行を挿入する。
はじめに Internet Explorer(以下、IE)が主流のブラウザ市場の中で、Firefoxはシェアを伸ばしています。Firefoxがシェアを拡大している理由の一つに、拡張機能の存在があるでしょう。非常に多くの拡張機能が世界中の人々によって開発されています。これらの拡張機能を組み合わせることによって、Firefoxを自分の好みのブラウザにカスタマイズできるのです。 とはいえ、他人が作った拡張機能がぴったり自分に合っているとは限りません。幸いなことにFirefoxの拡張機能は、XML言語の一種でUI部分を規定するXUL、動作を規定するJavaScript、そしていくつかの設定ファイルから構成されています。これらはいずれもごくありふれた開発言語であり、特別な知識は必要ありません。しかも、エディタとFirefoxがあれば高価な開発環境をそろえる必要もありません。他人の作った拡張機能を自分
Web API(WebサービスAPI)をプログラミングで活用するにあたって,ぜひ知っておきたい基礎技術が三つあります。古典的な技術の代表としてSOAPとWSDL,そして昨今急速に普及してきたRESTです。ごく単純に言ってしまうと,前者は「高機能で複雑」,後者は「シンプルで簡単に利用可能」と区別できるでしょう。現時点では,そのシンプルさが多くの開発者に受け入れられたおかげか,REST方式が(先達である)SOAP方式を圧倒しているように見えます*1。 もっとも,だからといってRESTがSOAPよりも優れていると結論付けるのは早計でしょう。昨今では,SOA(Service Oriented Architecture)という言葉に代表されるように,大規模なシステムを「サービス」という単位で構成し,互いに連携し合う設計手法が注目されています。特に,SOAを実現する具体的な基盤技術として注目されている
■ [Comp] [Security] 自動quoteつきERBの実験 高木さんの日記で、 そうすると、「h」付きと「h」無しを逆にしたらよかったのにと思えてくる。 ということだったので、ERB を改造してサクッと作ってみた。 rerb。 とりあえず、h の意味を逆転させてしまうと(hを流用してしまうと)それはそれで 混乱すると思ってそれは避けたのだが、高木さんは「hの逆」を命名してくれなかったので、 とりあえず "raw html" ということで r を使った。何かいいアイディアはないものか。 ついでに、rerb-cgi という名前で起動された場合は CGI モジュールを内包して、 ローカル変数 cgi, header 経由で引数や出力ヘッダにアクセスできるようにしてみた。 そういうわけで、test.ehtml は (rerb-cgi という実行ファイルを用意すれば) 単独でcgiとして
このパートでは,プログラミングを勉強するうえで欠かせないアルゴリズムの中でも定番中の定番を紹介します。ソート(並べ替え)やサーチ(検索)などの機能は今では標準のライブラリとして提供されています。実用的なプログラムを作るときにそのものずばりをいちいち書く機会は少ないかもしれません。しかし定番のアルゴリズムは,様々に形を変えて普段のプログラミングに登場します。 解説を読んで仕組みがわかったら,ぜひそれをプログラムにしてみてください。読んだだけではプログラムを書けるようにはなりませんし,プログラムを書いてみて初めて,実は十分に理解できていなかったと気付くことがよくあります。しかもアルゴリズムは特定のプログラミング言語に依存しないので,一度身に付ければ,後でどんな言語を学ぶ場合でも役に立ちます。 1番目から6番目まではソートのアルゴリズム,7番目から9番目まではサーチのアルゴリズムです。一つひとつ
昨日はOSCに行ってきました。セミナーやブースはほとんど行かず、例によってRubyの会のあたりでだらだらしてたわけですが。 思いがけず師匠の師匠、id:t-wadaさんにもお会いできてびっくり。 で、そこでRailsとTDD(BDD)の話なんかしたので、一週間で思ったことをつらつらと。たぶん不正確というか、理解の足りないところもいろいろあるので、そのへんのツッコミをいただけると感謝です。 書いてたら長くなったのでagenda モデルのテストでは、とにかくロジックを書いたらテストを書く*1。def..endブロック(wを書いたら必ずテストもあるはず。 RailsのMVCコンポーネントの中では一番テストし易いので、そういう意味でもモデルを厚くすると幸せになりやすい。 コントローラのテストでは、基本的にリクエストを受けてから表示対象のオブジェクトを導出するまでをテストしたい。 ビューのテストでは
はてなダイアリーユーザとしては、はてなグループのシンタックス・ハイライトがちょっと羨ましいわけだけど(よくソースコードを張るので)、似たようなことを出来るようにツールを作ってみた。 http://vimcolor.spiritloose.net/ たぶんもう似たようなやついっぱいあるとおもうけど。 たぶんはてなグループのやつと互換性あります。 はてなグループと同じく、1行目が shebang の場合は auto のままで判別できるっぽいです。 1行目が shebang じゃない場合は type を選択してください。 ソースはここに。 生成された html を張るとこんな感じに。 ソースは適当にこれにした。 #!/usr/local/bin/perl use strict; use warnings; use Encode; use Encode::Guess qw(utf8 euc-jp
Webの全体像を効率よく取り込み,分類する 「YSTのシステムは大まかに三つの機能に分かれます(図2)。最初は世界中のWebページをYSTのシステムに取り込む『クローリング(crawling)』という機能です」(Yahoo! JAPAN,リスティング事業部 検索企画室の宮崎光世氏,以下同)。 取り込むと簡単に言っても,Webページの数は膨大なうえ,更新の頻度や情報の質などがまちまちです。すべてのページに同じようにアクセスしていると非効率なことこの上ありません。そこで,限られた時間で質の良い検索ができるようにするための工夫をしています。例えば,クローリングを繰り返すうちに頻繁に更新されることがわかったページは短いサイクルでチェックし,ほとんど更新のないページはチェックの頻度を落とす,といったことをしているそうです。 ただ,更新の頻度が単に高いだけではダメです。重要性が高いと考えられるWebサ
配列操作の比較表: Ruby, Python, JavaScript, Perl, C++ プログラムを書いていると、他のプログラミング言語の記憶とごっちゃになって、「配列の後ろに要素を追加するのは push だっけ、 append だっけ」などと混乱することがあります。特に Ruby, Python, JavaScript はコードの書き方が似ているので、この問題が起きがちです。 そこで、備忘録として、 Ruby, Python, JavaScript, Perl, C++ の配列操作の比較表を作りました。一番慣れている Ruby を基準にしています。間違いなどがあったらご指摘いただけると助かります。他の言語のもあるといいなあ。 Ruby (Array) Python (list) JavaScript (Array) Perl (@) C++ (std::vector)
文字列操作の比較表: Ruby, Python, JavaScript, Perl, C++ Ruby, Python, JavaScript, Perl, C++ の文字列操作の比較表を作りました。配列操作の比較表の続編です。間違いなどがあったらご指摘いただけると助かります。 Ruby (String) Python (str) JavaScript (String) Perl C++ (std::string)
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く