エンジニアが発信する【その他DBMS】の記事を集めました

エンジニアが作る最新ITブログ トップ>エンジニアの発信する【その他DBMS】

2009年11月25日

よりによって・・・Symantecのサイトが攻撃の被害に

セキュリティソフトのメーカだからこそ狙われるのでしょうか。
シマンテックのウェブサイトがブラインドSQLインジェクション攻撃の被害に

被害を受けたのは『被害を受けたのは日本および韓国Norton製品ユーザーのサポートに利用されるウェブサイト』・・・よりによって日本向けのサイトか・・・。

さすがのシマンテックも「参った」でしょうね・・・。

2009年10月19日

情報処理試験

情報処理試験の試験名称が変わっていた。従来のどの試験区分かをよく理解せず、ITアーキテクトという試験を申し込んでみた。

情報処理試験はこの業界にはいった一年目の秋に二種(今の基本情報)、二年目の春に一種(今のソフトウェア開発)を取得してから、受験するものがなくなり(当時は25歳以上でないと受験資格がない、という試験があった)、やむなく畑違いのオンライン(今のネットワーク、に近いが、当時は汎用機系の問題が多かったようだ)を受けては落ち、という状態で、あとはソフトウェア開発という試験区分ができたときに「午前免除」の権利を得るべく受験し通ったのが最後。そのあと、とりあえずときどき受けては落ちている。今回も、試験区分が変わったけど、という記念受験に近い。

場所は、板橋区のとある高校。中学と同じ校舎なので中高一貫の私立校なのだろう。試験案内は東武線の駅から徒歩13分とあったが、私は西武線の駅から歩いた。行きが35分くらい、帰りは25分くらい。

入り口では「手の消毒とマスク着用」を言われた。試験中もマスクを着用。ちょっと風邪気味だった私にはこれが辛く、結局帰りまでに体調を大きく崩すこととなり、家に帰るとほぼダウン、という状態に陥った。


肝心の試験の方だが、今回は試験勉強を全くしていない。というのも、申し込んでから調べたら「アプリケーションエンジニア相当」とのことで、それなら実務で経験してればなんとかなるんじゃ?7割取れればいいんじゃ?と甘いことを考えていた。

午前1は免除、午前2で問題を見て顔面蒼白。
問1、UMLのアクティビティ図。状態遷移図とシーケンス図らしいものは除外し、用途を考えて選択。
問2、DFDの分割。入出力の矢印数が合わない2つは除外し、外部からのインプットを受けないプロセスはまずかろうと、除外。
問3.BPMN。何じゃそりゃ?BPはビジネスプロセスか?じゃあ業務プロセスを表すものでいいや。

こんなように、とにかく適当。

ラッキーだな、と思ったのは計算問題の問9と問22。前者は単純計算だし、後者は極限の考え方が分かっていれば、展開すれば答えが出る。
知らないものも多かった。先ほどの「BPMN」もそうだが、「共通フレーム2007」「自然結合するSQL」など、確認しておきたいところだ。
いい問題だな、と思ったのが問5。記述にある「よいプログラム」の特徴を選ぶものだが、相手の定義を理解し、その中で何が推奨されているのかを読み取るもの。


そんなこんなであったが、採点してみると間違いは3問。相当カンが冴えていたようだ。
午後は相当辛かったが、どうなんだろう?印象としてはそれほど難しくなかったように思うのだが、どんな勘違いをしているのか分からないし・・。

とりあえずご報告であった。

同じテーマの最新記事

2009年09月28日

[db][ide] Oracle SQL Developer 2.1 EA1 リリース

DB開発ツール「Oracle SQL Developer」の次期リリース Release 2.1 のEarly Adopter 1 (ベータ版) が、米国OTNでリリースされています。 2.1の新機能としては、PL/SQLの単体テストのサポート、Oracle SQL Developer Data Modeler Viewer (別途提供しているDBモデリング ツール「Oracle SQL Developer Data Modeler」で定義したDBモデルのビューア) などがあります。 詳細は、米国OT ...

2009年09月12日

System.Data.SQLite !?

自宅鯖のイベントログに System.Data.SQLite なんて載ってるから
驚いた。

ファイルまたはアセンブリ 'System.Data.SQLite, Version=1.0.63.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139'、またはその依存関係の 1 つが読み込めませんでした。


System.Data.SQLite
これが SQLite の .NET 版のようですが System.Data を名乗ってよいの?
System.~ を名乗ってよいのは MS 純正品だけだと思っていたけど。

SQL Server Compact - Compact & Capable
こちらは MS 純正品。
流行ってないのかな。

SQL Server 2005 Compact Edition : ASP.NET 練習帳
昔書いた記事。

2009年09月07日

[SQL][Oracle]テーブル定義情報を取得してくるSQL for Oracle

Oracleでテーブル定義情報を取得してくるSQLを書いたのでメモ。 SELECT T.TABLE_NAME AS "テーブル物理名", TC.COMMENTS AS "テーブル論理名", C.COLUMN_ID AS "カラムID", CASE WHEN PK.COLUMN_POSITION IS NOT NULL THEN PK.COLUMN_POSITION ELSE NULL END AS "PK", C.COL ...

2009年07月30日

日本IBM、企業向けクラウドサービスを発表

日本IBMは仮想環境を提供するIBM Managed Cloud Computing Service(IBM MCCS)を発表

仮想基盤にはVMwareを利用。仮想環境を提供するサービスですが、課金はリソース利用料金制になるそうです。このあたりがAmazon AWSとは違うところですね。
また99.999%の稼働率保証もあるそうです

IBMですから当然ミドルウェアにはWebSphereやDB2を提供してくるでしょう。
日本IBM発表なのですが、ワールドワイドなサービスではないのかな?Blue Cloudとも違うようですし・・。


クラウド大全 サービス詳細から基盤技術まで

クラウド大全 サービス詳細から基盤技術まで




クラウド化する世界

クラウド化する世界

  • 作者: ニコラス・G・カー
  • 出版社/メーカー: 翔泳社
  • 発売日: 2008/10/10
  • メディア: ハードカバー


2009年07月27日

[Open-EC]MySQLとPostgreSQLの互換性チェック中

DMLに関してのMySQLとPostgreSQLの互換性は非常に高いが、どうも、DDLでかなりMySQL独自の縛りがあるようだ。 この辺に関しては、Alinous-CoreのDatabaseアダプターで十分に互換性を出していこうとおもいます。

2009年07月23日

脆弱性のあるサイトの58%が未対応

IPAの報告によると脆弱性のあるサイトの58%が対策未完了とのこと。

XSSやSQLインジェクションなどの割合が高いというのが気になります。こうした脆弱性があると正規のWebサイトでもウィルスなどが混入することもあります。被害にあうだけでなく、加害者にもなりえます。
さらにSQLインジェクションの脆弱性の内容によっては顧客情報を大量に流出させる危険性もあります。

私の感覚ですが、日本企業は脆弱性対策などパッチ適用に対して反応が鈍いような気がします。
パッチ適用をするために確認作業をしなければならない、その時間もコストもない、ということで後回しにされていて、しかもそれが当然と思われている・・・。


この部分、なんとかならないかな~と普段から思っているのですけどね~。

Hacking:美しき策謀―脆弱性攻撃の理論と実際

Hacking:美しき策謀―脆弱性攻撃の理論と実際




ファジング:ブルートフォースによる脆弱性発見手法

ファジング:ブルートフォースによる脆弱性発見手法

  • 作者: Michael Sutton
  • 出版社/メーカー: 毎日コミュニケーションズ
  • 発売日: 2008/05/28
  • メディア: 単行本(ソフトカバー)


2009年05月27日

改変に強いシステムを作ろう!

最近僕が意識しているのが、変化に強いシステムだ。近年のシステムはビジネスモデルの変化の早さに付いて行かなければならないため、システムの改変が多い。そうなると、今までのように「作ったらおしまい。後は二年に一度大きいリリースがあるだけ」のようなシステムはビジネスモデルについて行くのが比較的難しい。
さて、そうなるとどんなシステムが変化に強いのだろうか?僕なりに理想をまとめてみる。



■コード量が少ない
変化に強いシステムで外せない条件の一つとして、コード量が少ないという条件が挙げられる。コード量が多いということは、それだけ変化に合わせた修正箇所が増えるということである。また、修正箇所が多いということはコードを修正する際に影響範囲を調べるのに時間もかかる。
コード量を減らすという手法は昔から幾つもある。
例えば「サブルーチン」と言う、今で言う「ファンクション」や「メソッド」の位置づけに近い(?)ものだ。平たく言えば同じコードをあちらこちらに記載するのではなく一箇所に纏めて書こうというものである。
今でこそ当たり前の手法だが、N88-Basicのプログラミングを行っていたときに「サブルーチン」を知ったときは戦慄が走ったものだ。(僕がコーディングしていた時代は既に「サブルーチン」と言う手法はあったのだが、僕がそこに行き着くまでに時間がかかったのだ。なんせその時の僕は幼年期(小学生)だった上に、文献は分厚いリファレンスマニュアルだけだったので・・・。(*1))


他にも僕が最近勉強しているCoC(Convention Over Configuration:設定より規約)と言う概念もコード量を減らすために一躍買ってます。
これは、何でもかんでも設定ファイル(XML等)で制御するのではなく決まりごとを作ってその通りにコーディングすることでコード量を減らすというものです。


コード量が減るということは、それだけシステムが単純化されているということにも繋がります。(纏まっていないシステムはコードが冗長になっていたり、継承関係がぐちゃぐちゃになっていたりします。)



■データモデルの変化に耐えれる設計

ビジネスモデルが変化するということは大抵においてデータベースも変化するということです。すなわち、動いているアプリケーションのスキーマを変更するということです。これを行うためには、既存のデータを消さずにスキーマを変える方法を考えなければなりません。


一番に思いつく方法がバッチでSQLを流してスキーマを変更させる方法です。

この方法はオーソドックスですが、いくつか欠点があります。


・開発者同士の同期をとるのが難しい。

開発者内部でもバッチを流したり、SQLを変更させたりするためどのバッチが最新であるかを把握することが難しい。(また、どのSQLは流してどのSQLは流していないという管理が比較的難しい。)


・差分管理ができない

プログラム管理で良く使われるCVSやSVNといったツールではSQLの管理が難しい。SQLの差分管理が出来てもそのSQLをスキーマに対して流したか、を変えたか変えてないかの管理が難しい。


僕が大きく直面した問題はこの二点です。

リリースされたDBの管理は比較的難しく、DBAも居ない状態が多いのでどうしても混沌としてしまいます。



そこでスキーマ管理をしてくれるようなツールがあるかと言うと・・・僕が知る限りではRailsのマイグレーションが思い当たります。(DBの知識は薄いため、他のツールをほとんど知りません。)

マイグレーション機能はバッチの履歴管理をしてくれます。どこまでのバッチを流したかをDBに情報として持っているため、開発者同士の同期がとれます。また、スキーマ更新(UP)とスキーマ更新取り消し(DOWN)があるためスキーマの変更履歴をプログラムと同様にとっておけます。


しかし、欠点もあります。それはテーブル数と比例して管理するファイルが増えてしまう事と、履歴の古いファイルの修正を行うとそれまでのスキーマ更新を全て取り消さなければならない点です。

僕の知っている限りでは、この点を解決するためにはプロジェクトで決めごとをするしかないかと思っています。

(Version毎にファイルを凍結させたり、変更した場合は一斉にDOWN→UPを行わせたり・・・)


現在の僕の見解では、スキーマの変更に強いシステムを作るためには上記のようなツール+工夫をしなければならないということです。

後、初期の設計をある程度詰めておきスキーマの変更はカラム追加テーブル追加以外が起こらないようにする方法がベストだと思う。



■体系化されたコードを書く

みんなバラバラなコードを書くとどうしても可読性が落ちます。そのため、先ほど記載したCoCの概念を取り入れる事やMVCモデルを使う、オブジェクト指向に徹する等の方法が考えられます。

これらの方法を使うことによって可読性の良いコード、すなわち改変し易いコードを書くことができます。

可読性の悪いコードは変更する時に他のコードに影響を与えるかどうかの判別が難しくなります。


ただし、これらの方法の欠点は開発者みんながどのように体系化されているかを知っている必要があるということです。



■情報の伝達をスムーズに

システム自体には関係ないのですが、情報の伝達が遅いと改変に時間がかかります。いくつもの組織が階層化されて入って開発を行う場合は、情報の伝達がネックになる場合もあるので理想は少数精鋭です。

僕が思うに、システム開発は大体において人が多すぎるのです。



僕自身の中でもまだ纏まってない状況で、模索している部分である。

情報社会が来ている今、ビジネスモデルの変化するサイクルが短くなることはほぼ間違いないと思っている。だから、このような考え方は重要なのではないかと僕は思う。

*1・・・今思えばよくあの頃にあの分厚い本を読めたなぁ。ちなみに、文献と言えばBasicとか言う雑誌からも情報を集めていました。買うお金がなかったので、もちろん立ち読み(苦笑)

同じテーマの最新記事

2009年05月26日

見積もりでは手を抜いてはいけない。

僕が最近失敗したので備忘録的にここに書いておきます。

僕は見積もりで手を抜いてしまって非常に安価な見積もりを出してしまいました。すなわち、この後どんなに大変な仕事が待っていたとしても基本的には見積金額を変えることは出来ません。


今回の失敗は以下の点です。

お客様から仕事の依頼に対してアバウトな見積もりをしてしまい、どのようにでも取れるような見積書を作成してしまったのです。

その後にもう少し依頼の内容を確認したところ、、、実は見えない作業が発生していたのです。


僕はそれに気づかずに「●●機能 ○円」のように機能全般的に受けてしまったのです。(実際はもう少し詳細に見積もっていますが、話を分かりやすくするために簡単な記述をしてます。)

そのため「●●機能」と言う括りの中で、僕の考慮していなかった機能が発生すると当然お客様には請求できません。つまり、僕が自己負担で仕事を引き受けるしかないのです。



仕事を受ける際に重要なのは、本当に必要だと思う項目を可能な限り洗い出すことです。そして、その洗い出した項目でお客様の合意を得ることが重要になります。合意を得た見積もりで機能漏れがあった場合は双方のミスになるため交渉の余地があります。


ただし、この洗い出すという作業が曲者なのです。見積もりを出来るだけ詳細に洗い出そうとするとその間にコーディングした方が早い場合が出てきます。そのような場合に見積もりが通らなければその見積もりをした時間は全てパァになってしまうのです。

この折り合いが僕としては難しいところだと思ってます。



最後になりますが、見積金額を途中で変更するということは基本的にやってはいけません。

これは、法的にどうこうではなく信頼関係にヒビが入ってしまうからです。見積もりを元に予算を組むので、途中で見積もり内容が変わってしまうと予算を組みなおす必要が出てしまうのです。すなわちお客さんに迷惑をかけてしまうのです。

なので、見積もりをおろそかにしてはいけないのです。

(僕のような技術者上がりは本当にこの点が甘い・・・。)


見積もりは現状では確固たる手法が確立されていないため、難しい仕事の一つだと思います。

みなさんも見積もりを行う場合には重々注意をしてください。




P.S.

ここには記載しませんですが、あまりにお客さんの事ばかり優先すると見積もりを出す方に煽りが来てしまいWin-Loseの関係が築かれてしまうので注意。

リクエストがあれば、この辺の事をもう少し詳しく書きます。

同じテーマの最新記事

エンジニアが作る最新ITブログ トップ>エンジニアの発信する【その他DBMS】

メンバー紹介

タグパネル

ランキング

エンジニアが作る最新ITブログ DODA