SQLで処理する場合のイメージ 他の言語で処理する場合のイメージ 他の言語で処理するのは非効率になる 当たり前の話ですが材料と結果は同じです。途中経過が違うだけですが、理論的には、RDBMSを使うのにSQLで処理しなければ、必ず余計な処理が必要になりなるため非効率になります。とんでもなく馬鹿げた構造になるのですから理論的には議論の余地はないでしょう。「結果が出るのだから良いじゃないか」という馬鹿もいますが、「出来る・出来ない」の低次元の話をしているわけではなく効率の問題です。IT技術者は業務効率を上げるために存在しているのですから、理論的に効率が悪い方法を選択してはいけないはずです。 現実論としては「『出来ない技術者』をどこまで考慮すべきか?」ということしかない。 しかし、SQL92が理解できていれば90%、SQL99が理解できていれば99%問題ないでしょう。つまりは、20年近くほとんど変
UnQL means Unstructured Query Language. SQLiteの開発者であるRichard Hipp氏と、CouchDBおよびCouchbaseの開発者であるDamien Katz氏が、ドキュメントデータベースに対する新しいクエリ言語「UnQL」の策定を進めていることを明らかにした。「UnQL」は「Unstructured Query Language」の略称。JSONやセミコロンで区切られたデータ、ドキュメントデータベースに対する専用のクエリ言語としての利用が想定されている。 UnQLのサイトはまだ構築がはじまったばかりで、サンプルクエリが掲載されていないなど、実際にUnQLがどういうものか把握するのは難しい。UnQL: UnQL Syntax Notesを参考にする限りでは、UnQLは文法や見た目はSQLに似ており、SELECT、UPDATE、INSERT
SkipfishはSQLインジェクションをはじめWeb向けの脆弱性を発見するソフトウェア。 SkipfishはGoogle製のオープンソース・ソフトウェア。2011年になってセキュリティインシデント関係の話題が飛び交っている。特に大きいのはソニーだろう。あそこまでの規模は相当珍しいが、何も対岸の火事という訳ではない。 オプション セキュリティホールを狙うのは人間に限らない。日々クローラーがWebサイトにアクセスしてセキュリティホールを狙っているのだ。狙われる前にSkipfishを使って自主的にチェックしてみよう。 SkipfishはGoogleが開発したセキュリティチェックソフトウェアだ。ターミナルで動作するソフトウェアで、指定したURLに対してSQLインジェクションやXSSなどWebアプリケーションが狙われやすい脆弱性をついてくる。結果はHTMLベースのレポートとして出力される。 結果は
MariaDB, a drop-in replacement for MySQL with enhanced features and patches. MySQLのオリジナル開発者であり、現在はMySQLをベースとしたオープンソースソフトウェアのデータベースMariaDBを開発しているMichael Widenius氏が自身のブログにおいて、MariaDB 5.3に新しく「ダイナミックカラム」と呼ばれる機能を追加したことを発表した。この機能はNoSQLとSQL(MariaDB)との掛け渡しを実現する機能になるという。 ダイナミックカラムはblobにいくつかのカラムを保持することで動作するもので、操作のために専用のSQL命令が用意されている。ブログに掲載されている次のサンプルがダイナミックカラムを把握するうえでわかりやすい。COLUMN_GET()がダイナミックカラムにアクセスしている部分
Mantisは、さまざまな機能を過不足なく盛り込んだ、小規模プロジェクトで重宝するバグ管理システムだ。ごく普通のコンピュータ・ユーザでも利用可能なバグ管理ソフトを探している開発者には最適と言える。すっきりとしたインタフェースと多彩な機能を利用して、簡単かつスピーディなバグ管理が可能だ。 MantisはPHPで開発され、68の言語にローカライズされている。バックエンドのデータベースには、MySQL、PostgreSQL、Microsoft SQL Serverを利用可能だ。開発者やユーザーからのバグ報告は、Webインタフェース、WAP対応のモバイル機器(サードパーティ製プラグインの購入が必要)、カスタムHTMLフォームから行える。HTMLフォームなら、任意のWebページに独自のバグ報告フォームを設置できる。バグが報告されたときには、開発者や一般ユーザーに対し、メールやRSSフィード、さらには
「安全なウェブサイトの作り方」は、IPAが届出(*1)を受けた脆弱性関連情報を基に、届出件数の多かった脆弱性や攻撃による影響度が大きい脆弱性を取り上げ、ウェブサイト開発者や運営者が適切なセキュリティを考慮したウェブサイトを作成するための資料です。 「安全なウェブサイトの作り方」改訂第7版の内容 第1章では、「ウェブアプリケーションのセキュリティ実装」として、SQLインジェクション 、OSコマンド・インジェクション やクロスサイト・スクリプティング 等11種類の脆弱性を取り上げ、それぞれの脆弱性で発生しうる脅威や特に注意が必要なウェブサイトの特徴等を解説し、脆弱性の原因そのものをなくす根本的な解決策、攻撃による影響の低減を期待できる対策を示しています。 第2章では、「ウェブサイトの安全性向上のための取り組み」として、ウェブサーバの運用に関する対策やウェブサイトにおけるパスワードの取扱いに関す
はじめに Dao(Data Access Object)とは、業務システム開発でよく利用されるデータベースアクセスパターンです。本稿では、このDaoの実装に有効な「S2Dao」というO/Rマッピングツールについて紹介します。 対象読者 Javaにて開発を行っていて、データベースプログラミングやO/Rマッピングに興味をある方を対象としています。 必要な環境 このサンプルはJ2SE Development Kit 5.0 Update 6と、オープンソースデータベース「HSQLDB」のバージョン1.7.3にて動作確認をしています。 S2Daoの最新版は、Seasarファウンデーションのホームページからダウンロードすることができます。なお、本稿のサンプルソースには、S2Daoのバージョン1.0.29とS2Daoが必要とするライブラリを同梱しています。 S2Daoの特徴 S2Daoとは、Seasa
Ringとは、リクルートグループ会社従業員を対象にした新規事業提案制度です。 『ゼクシィ』『R25』『スタディサプリ』など数多くの事業を生み出してきた新規事業制度は、 1982年に「RING」としてスタートし、1990年「New RING」と改定、そして2018年「Ring」にリニューアルしました。 リクルートグループの従業員は誰でも自由に参加することができ、 テーマはリクルートの既存領域に限らず、ありとあらゆる領域が対象です。 リクルートにとって、Ringとは「新しい価値の創造」というグループ経営理念を体現する場であり、 従業員が自分の意思で新規事業を提案・実現できる機会です。 Ringフロー その後の事業開発手法 Ringを通過した案件は、事業化を検討する権利を得て、事業開発を行います。 さまざまな事業開発の手法がありますが、例えば既存領域での事業開発の場合は、 担当事業会社内で予算や
メタモデル記述をJavaで書いて解釈するってのが前回の主張ですが、GAE以外のケースでいくらかうまくいかないものを発見。 たとえば、HogeがFooを参照していて、それぞれのメタモデルがHogeMetaとFooMetaであるとすると、HogeMetaは次のように書かなきゃいけない。 public class HogeMeta { // FooはFooMetaからあとで生成されるので、いまは参照できない public static final Property<Foo> foo = ...; } そうすると、FooじゃなくてFooMetaを参照しないといけない。 public class HogeMeta { public static final Property<FooMeta> foo = ...; } もしくは遅延を掛けておく。 public class HogeMeta { pub
以前このブログでも取り上げたことのある神戸デジタル・ラボの近藤伸明氏がThink IT上で「SQLインジェクション大全」という連載を執筆しておられる。その第三回「SQLインジェクションの対策」を読んで以下の部分が引っかかった。 バインド機構とは、あらかじめSQL文のひな型を用意し、後から変動個所(プレースホルダ)に実際の値(バインド値)を割り当ててSQL文を生成するデータベースの機能だ。バインド値はエスケープ処理した後にプレースホルダにはめ込むので、悪意あるSQL文が挿入されても、その実行を阻止することができる(図1-2)。 http://thinkit.jp/article/847/1/ たしかにエスケープ処理を使ってバインド機構を実装する場合もある。JavaとMySQLの組み合わせでUnicodeのU+00A5を用いたSQLインジェクションの可能性 | 徳丸浩の日記から派生して、MyS
自称Javaが出来る人でも設計書をまともに書けない。先週は社内の諸事情からプログラミングをする機会を得た。 既にプロパーによってプログラム設計書は記載済で、製造工程以後を担当というもの。 早速プログラム設計書を見てみると…。会員No登録チェックメソッド(引数int型で会員番号):戻り値はなしtry-catch宣言をする。try-catch宣言をする。try-catch宣言をする。Connection conn = new Connection();PreparedStatement pstm = new PreparedStatement();ResultSet rs = new ResultSet();DBに接続する。pstm = conn.prepareStatement(strSQL);pstm.setString(1, 会員番号);pstm.executeUpdate();conn
第7回 GAE+SQL4GでRailsアプリ開発(リベンジ編) 萩原 巧 リトルソフト株式会社 中越 智哉 株式会社ナレッジエックス 2010/8/17 最終回となる今回は、進化したGAE、JRuby環境でリアルなRailsアプリを動かしてみます(編集部) 本連載の第5回でGAE上のRails開発に挑戦しました。Scaffoldを使ったアプリの動作を試みましたが、当時は残念ながらローカルでの動作は確認できたものの、GAE上で完全な動作を確認するには至りませんでした。あれから3カ月以上が経過し、GAEのインフラやJRuby側のGAE対応モジュールもバージョンアップされたことによって、状況は変わりつつあります。 今回は、「リベンジ編」と題して、再びRailsアプリケーションをGAE上で動作させることにチャレンジします。GAE上でJRubyを動作させるためのモジュール群であるgoogle-app
第2回 SQL4GでGAE+PHPを体験しよう 萩原 巧 リトルソフト株式会社 中越 智哉 株式会社ナレッジエックス 2010/2/22 Web アプリケーション開発者にとって、魅力的な環境に映るGoogle App Engineだが、データの永続化などで落とし穴が存在する。これまでの開発手法を変えずに使えないだろうか(編集部) 第1回「GAE上でLL+RDBアプリを作ろう」では、Google App Engine(GAE)環境上で、PHPやRails(Ruby)とリレーショナルデータベース(RDBMS)がシームレスに連携できることによる新しい可能性について言及してきました。 これまで、GAEでの開発では「リレーショナルデータベースは使えない」というのが常識であり、開発者はいかにして旧来のリレーショナルデータベース的なアプローチから、Key-Valueストアに適応したアプローチに設計を転換
SQL4GGAE(Google App Engine)上で稼動するSQLデータベース SQL4Gとは? SQL Database for GAEの略称です。 オープンソースのJavaデータベース「H2 Database Engine」をリトルソフトが独自にエンハンスし、GAEが用意しているBigTableと呼ばれる分散キー・バリュー型データストアへ内容を書き込めるようにしたものです。 いまさらRDB? GAEのデータストアはJavaの場合 JDO、JPA といったインターフェースからアクセスすることが出来ますが、JDO、JPAを駆使してGAEのデータストアを自由自在に扱うことは、今までRDBMSに慣れ親しんだ開発者にとっては、少々敷居の高いものになります。 そのため、RDBMSに相当する環境が存在しないGAEは、現状において「クラウドは魅力的だけどデータ周りに難あり」とお考えになる方が多数
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く