Common LispのWebフレームワークであるCaveman 2で遊んでいる. 今日は,リクエストの前後に処理を挿入し,レスポンスヘッダをいじったりしてみるお話. ある程度Common Lispが分かりますよ,というくらいのレベル感です.僕のレベルは,マクロが書けてうれしいね,とかいうレベルです. 全てのエンドポイントで,リクエストハンドラを処理する前・後ろに一定の共通処理を行いたい,というのは実によくある話だ.例えば認証処理を行いたければリクエストハンドラに到達する前に処理を行う必要があるし,ベンチマークのための特別なヘッダを付与するためにリクエストハンドラを通った後で処理を行いたいこともある.こういった処理は頻繁に使われるが,それらがいかに実現されているかについて運用開始後に知る機会はあまりないのが現状だ. 最近Caveman 2で自分用のアプリケーションを開発していて,そこで1か
Pants¶ Pants is a lightweight framework for writing asynchronous network applications in Python. Pants is simple, fast and elegant. Pants is available under the Apache License, Version 2.0 An incomplete feature list: Single-threaded, asynchronous, callback-oriented. TCP networking - clients and servers! IPv4, IPv6 and UNIX socket families. SSL/TLS support for all that security stuff. Basic schedul
Ruby は柔軟なプログラミング言語であり Sinatra のような手軽で軽量なウェブアプリケーションフレームワークがあります。いままで分析用の言語として主に Python で統計やデータの可視化をおこなってきましたが、もちろん Python にも多種多様なウェブアプリケーションフレームワークがあります。 数値計算などを Python でおこなう仕組みをウェブシステムとして提供したい場合、わざわざ別の言語を利用するよりウェブの部分も同じ言語で作ってしまったほうが一貫性があります。 そこで今回は Flask という Python の小規模なフレームワークを利用し、ごく簡単なウェブアプリケーションを作ってみます。 Flask には日本語訳された親切なユーザーガイドがあります。 https://a2c.bitbucket.io/flask/ とても丁寧に書かれているので、基本的にはこのドキュメン
FINDJOB! 終了のお知らせ 2023年9月29日にFINDJOB!を終了いたしました。 これまでFINDJOB!をご利用いただいた企業様、求職者様、様々なご関係者様。 大変長らくFINDJOB!をご愛顧いただき、誠にありがとうございました。 IT/Web系の仕事や求人がまだ広く普及していない頃にFind Job!をリリースしてから 約26年間、多くの方々に支えていただき、運営を続けてまいりました。 転職成功のお声、採用成功のお声など、嬉しい言葉もたくさんいただきました。 またFINDJOB!経由で入社された方が人事担当になり、 FINDJOB!を通じて、新たな人材に出会うことができたなど、 たくさんのご縁をつくることができたのではないかと思っております。 2023年9月29日をもって、FINDJOB!はその歴史の幕を下ろすこととなりましたが、 今後も、IT/Web業界やクリエイティブ
【特集】NTTデータが多数の開発案件で培ったノウハウを公開 Java、.NET、Ajax開発の“銀の弾丸”オープンソース? 株式会社NTTデータ 技術開発本部 ソフトウェア工学推進センタ 崎山 直洋 2008/2/1 NTTデータが開発ノウハウを社外に公開 TERASOLUNA(テラソルナ)はWebアプリケーションを中心としたシステム開発の総合的ソリューションです。 2007年11月29日、NTTデータは2003年に整備し受注案件向けに展開して数多くのプロジェクトで適用されてきた総合的ソリューション「TERASOLUNA」の「開発プロセス」の概要と、オープンソースとして「フレームワーク」を公開しました(参考「NTTデータが独自の開発フレームワークをオープンソース化~開発プロセスも一部公開~」)。 本稿では、その「開発プロセス」と「フレームワーク」の概要と使いどころを紹介します。 システム開
今月の初めに弊社はてなで開発合宿を行いました。2泊3日の合宿の中でチームを組み、テーマを決めて開発をし、最後に各チームがプレゼンをする、というものです。成果物は今後のサービス開発に生かされます。 僕のチームはバックエンドがCommon Lisp、フロントエンドがCoffeeScriptで、お互いが独立していてAPIでのみ通信する設計のWebアプリケーションを作りました。僕とhitode909とswimy1113の3人の最小チームでしたが、最後のプレゼン投票で優勝できました。 ↓ 優勝したときの図。 東北で開発合宿を実施しました - はてな広報ブログ 左の灰色のはてなパーカーを着てるのが僕です。 Common Lispで書かれたアプリケーションが社内1位ってのはかなり夢があります。 合宿が終わってからも継続して開発を続けており、そろそろ数週間が経ちました。ので、この辺りでCommon Lis
本稿では「C++でも簡単にWebアプリケーションを開発したい!」という声にお応えして、C++によるフルスタックのWebフレームワーク「TreeFrog Framework」を紹介します。C++で開発する最大のメリットは、アプリケーションが高速かつ少ないメモリ使用量で動作することです。Webアプリケーション自体がさらに高速に動作すれば、より少ない数のサーバで多くのリクエストを処理することが可能になるでしょう。 はじめに Webアプリケーションの開発案件をみると、使われている言語はJavaとPHPが特に多いように思います。C++のものはまず聞きません。C++プログラマがWebアプリケーションの開発プロジェクトに参画するとなると、新たに別の言語を習得しなければならないのが現実です。TIOBE Programming Community Indexというプログラミング言語の人気度調査において、C+
今回のテーマ 今回は、Perlのattributeという仕組みの詳細と、そのattributeを利用したClass::Componentのpluginについての解説、pluginの作成方法といった話題を取り上げます。 サンプルアプリケーション 本連載では、プラガブルなモジュールを作製するという事を考えて、Gopperという実際に実行可能なサンプルアプリケーションを元に解説を行ないます。GopperはCodeRepos上のsvnリポジトリに置いてあるので各自checkoutしてください。 svn co -r 455 http://svn.coderepos.org/share/lang/perl/Gopper/trunk Gopper attributeとは attributeとは、Perlのサブルーチンや変数に属性を定義して、サブルーチンとしての挙動を標準から変更したり、どのようなサブルー
JavaScriptフレームワークのQooxdoo開発チームは12月7日、RIA(リッチインターネットアプリケーション)開発向けのAjax GUIフレームワーク「Qooxdoo 1.7」を公開した。オフライン対応など多数の機能が加わっている。 Qooxdooは独1&1 Internetの支援を受けて開発されているGUIフレームワーク。HTML5やCSS3などのWeb技術の活用、オブジェクト主導モデルなどの特徴をもち、RIAのほか、モバイル端末、軽量のWebアプリケーション、Webブラウザ外で動くアプリなどを開発できる。LGPLとEPLのデュアルライセンスで公開されている。 最新版では、オフライン対応が加わった。主要なブラウザが搭載するDOM Storage、Online/Offline eventsなどの新しい技術を活用、オフラインイベントハンドラ、オフラインデータストアなどを利用してイン
はじめに 今やWebのフレームワークと言えば、そのほとんどが「RoRタイプ」です。RoR(Ruby on Rails)がWebの開発に与えた影響は非常に大きく、その後生まれたフレームワークの多くがその影響を受けています。 しかし、Javaの世界に関しては、RoRはなぜか素通りしてしまいました。既にStrutsというデファクトスタンダードがあったために新しいMVCフレームワークが割り込む余地があまりなかったのか、あるいはLL(ライトウェイト)言語でないとRoRなスタイルは作りにくかったのか。ともあれ、その後、長い間、Javaでは「いわゆるRoRタイプ」と言えるフレームワークは登場しませんでした。 その流れを変えたのは、Groovyです。Groovyの登場により、JavaでもLL言語のような小回りの聞くコーディングが可能となりました。そのおかげで、ようやくJavaの世界にも遅まきながら新しい世
Java(.NET)のO/Rマッピングライブラリ。最近、Ruby用も登場。(RBatis) SQL(引数、戻り値、マッピング設定など)をXMLに定義することが特長。 本家(2010/06/16まで) http://ibatis.apache.org/ 本家(2010/06/16以降) http://www.mybatis.org/ (http://code.google.com/p/mybatis/) サンプルは以下のページ参照。 iBATIS(Java) http://634.ayumu-baby.com/ibatis/ http://www.h7.dion.ne.jp/~a.d.1976/ iBATIS(.NET) http://codezine.jp/a/article.aspx?aid=112 http://codezine.jp/a/article.aspx?aid=113 6年
「DI(Dependency Injection)」および「AOP(Aspect Oriented Programming)」と呼ばれる技術が注目を集めている。これらはオブジェクト指向プログラミングにおけるプログラムの単位であるクラスを,互いに結び付ける新たな技術である。システムへの機能変更ニーズが高くなり,さらに開発期間が短くなっている開発の現場において,開発の効率化や品質向上を実現する新たな手段として期待されている。まずはオブジェクト指向プログラミングにおける課題を明らかにし,DIやAOPがそれらをどう解決できるのかを見よう。 DIでクラスを容易に付け外す オブジェクト指向プログラミングの一つ目の課題として,「変更時にクラスの修正が必要になる」ことがある。そもそも,オブジェクト指向で開発したプログラムは,オブジェクト指向ではないプログラムと比べ,機能の削除や変更が容易であることが特徴だ
「 Javaナイトセミナー(Vol.3)」で宿題(?)だった「AOPの適用」について,僕なりの意見を以下に述べようと思う。 AOPはトランザクションやロギング,ベースとなる機構で必要な前処理などを適用することが代表例なのは揺るぎのない事実だろう。そして,AOPのこれらの処理に対する適用は,プログラマからテクニカルで毎度毎度のお決まりコーディングを削減することができ,さらに継承やTemplateパターンなどを駆使することなく前処理を実行できるため,対象のクラスを汚す必要がない(何らかのクラスを継承しなくて済むなど)という利点をもたらしてくれる。 しかし,業務的に必要な前処理や共通的な処理の実行にAOPを使用すると,本来業務処理をコーディングするプログラマはAOPに関する知識を必要としなくて済むはずなのに,業務処理の記述に比較的難解な技術となるAOPを覚えてもらうことになる。敷居が高くなるだけ
DIって本当に必要?たまにそう思うときがあります。DIによって開発は本当に楽になったのか。 DIのメリットでよく語られることとして、インターフェースと実装を分離し、機能の利用者側はインターフェースを通じて機能を利用することで、実装に直接依存しなくなり、後で実装を変更しても影響を受けなくなるということがあります。 実際後から、実装クラスを変更するということはめったにないので、よくあるのは、テストのために実装クラスをモックに変えることです。 でも、別にそれだけならDIContainerなんていりません。たとえば、次のようにServiceクラスに直接依存したClientがあるとします。 class Client { Service service = new Service(); void setService(Service service) { this.service = service;
Javaの世界では、POJOというものが流行している。Plan Old Java Objectの略で、Martin Fowler氏らの造語だ。シンプルで、依存性をなくしたオブジェクトのことをさす。しかし、このPOJOというものをどう捉えるべきか、まだまだはっきりしていないのではないかと感じる。ここでも、僕なりの説明を試みるわけだが、正解といえるかは分からない。ただ、方向性としては間違っていないと思っている。 POJOとは まず、POJOを、もう少し詳しく定義するなら、「自分がするべきことに対して最低限しか知らないオブジェクト」、さらに「実行環境やフレームワークのことは一切知らないオブジェクト」といえるのではないか。たとえば、ビジネスロジックを担当するPOJOであれば、自分のするべきこと、まさにロジックと、そのロジックに必要な他オブジェクトのインターフェース(まさに、interface)し
フレームワーク活用の「ツボ」がわかる! 本書はWebアプリケーションの設計・開発におけるフレームワークの利用について解説したものです。Webアプリケーション開発では、MVC(Model/View/Controller)や3層アーキテクチャなどを採用した開発の枠組み(フレームワーク)が用いられます。本書はそのフレームワークの思想に沿ったアプリケーションの設計とプログラミングを実践的に解説するものです。フレームワークの狙いはどこにあるのか、効率的な開発と改修のためにはどう考えていくべきなのかを学ぶことができます。また、サンプルとしてS2StrutsによるJavaのアプリケーションを提供していることも本書の大きな特徴です。 筆者のシステム開発者、インストラクターとしての経験を活かし、さまざまな現場で応用可能な基本的技法をやさしく身に付けられます。 第1章 イントロダクション―エンジニアのスキルと
良い悪いは置いておくとしてRubyOnRailsはStrutsになるのだなと感じています(エンタープライズ開発でデファクト・スタンダードになって一定のポジションを獲得する) 最近、「RailsはStruts化する」という風に思っている人が多そうなので、私の意見を書いておきます。 そんなことはないでしょう。 エンタープライズ開発をおこなっている多くのSIerは、とても保守的(だと思う)です。Strutsの導入だってとても慎重で、他で結構使われてもう大丈夫と思ったところで導入したというケースが多いのではないでしょうか。 理由は簡単で、規模が大きいと失敗の損失が大きいので、できる限りリスクを避けようとするためです。今特に困ってないなら、冒険する必要はないという判断です。 新たなテクノロジーを導入するのは、リスクがなく生産性が向上すると判断したか、今のテクノロジーではコストがかかり過ぎると判断した
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く