ブックマーク / nippondanji.blogspot.com (62)

  • 書評:「7つのデータベース 7つの世界」

    訳者、角 征典氏より献御礼。「7つのデータベース 7つの世界」はそのタイトルの通り、7種類のデータベースソフトウェアについて解説したNoSQLの道標とも言うべき書籍である。7種類のデータベースとして紹介されているのは、PostgreSQL、Riak、HBase、MongoDB、CouchDBNeo4j、Redisである。書は非常にそそるタイトルであり、わくわくしながらページをめくった。だが、第2章「PostgreSQL」で期待感は打ち砕かれることになる。 正直なところ、この書籍について書評を書くのはどうしようか迷ってしまった。なぜならば、第2章の説明がかなり間違っているからである。そのため、書評を書こうとするとどうしても辛口にならざるを得なかった。献して頂いた角氏にその旨を伝えたところ、それでも良いと快く了承して頂いた。当に辛口になるのでその点は容赦して頂きたい。 何が問題なのか

    書評:「7つのデータベース 7つの世界」
  • RDBMSに関する典型的な誤解が絶えないという現実

    新入社員必読、データベースの基を理解しよう - データベースはなぜ必要なの?:ITproという記事に対するブクマで次のようなIDコールが来た。(現在はコメント返しへのお礼が入っているので、文字数制限のためオリジナルのコメントは少し切り詰められている。) "リレーショナルデータベースはすべてのデータを2次元の表形式で表現"こういうのもリレーションが2次元構造という誤解の一種なんだろうか。id:nippondanjiさんが書いてたような。 さて、この疑問に対する正解は如何なるものだろうか? つい先日「7つのデータベース 7つの世界」の書評で書いたばかりだが・・・ 言うまでもなくその通りである。 リレーションが2次元的な構造を持っているというのは典型的な誤解だ。(ちなみにリレーションの次元は属性の数に等しい。n個の属性があるリレーションはn次元。)リレーショナルモデルについてちゃんと学習してい

    RDBMSに関する典型的な誤解が絶えないという現実
  • 紹介:【書籍】SQLアンチパターン

    リレーショナルデータベースの父、エドガー・F・コッド氏が論文を発表したのは1970年。私が生まれる前の話である。そしてSQLがANSI標準になったのが1986年。RDBMSを、そしてSQLを使ったシステム開発は常に主流で在り続けたと言っても過言ではない。そんな歴史のあるSQLであるが、未だに多くの人はSQLを使いこなせて居ないように見える。 SQLはとても奥が深い。ソートやトランザクションが使用出来るおかげで、リレーショナルモデルを無視して単なるデータの入れ物として使ってもそれなりに便利だったりする。だが、それが今現在多くの悲劇を生んでいる原因でもある。多くの人が同じようにSQLを理解せず、そのため多くの人が同じ悲劇に見舞われる。そう、それがアンチパターンである! 今回紹介するSQLアンチパターンは、洋書SQL Antipatternsの邦訳版だ。私は元々英語版のファンでであり、人々が陥り

    紹介:【書籍】SQLアンチパターン
  • 開発スピードアクセル全開ぶっちぎり!日本よ、これがMySQL 5.6だッ!!

    米国で行われているMySQL Connectというイベントで、ついにMySQL 5.6 RC(リリース候補版)が発表された。リリース候補版ということは、これが次の正式版になるということだ。MySQL 5.5は5.1から凄まじい進化を遂げたバージョンであった。だが、MySQL 5.6はさらにそれを上回る進化を遂げている!正直ここまでの進化を誰が予想しただろうか、いや誰も出来なかったであろう。これまで、α版が出たときから何度か新機能について紹介してきたが、今回改めてMySQL 5.6の新機能を振り返ってみようと思う。すべてまとめるともの凄い内容だ。興奮して夜も眠れなくなること請け合いだ。MySQLの進化が止まるのでは?などという心配は吹き飛び、もはやもうちょっと小出しにしなくて良かったのか?と心配してしまうレベルである。 それではMySQL 5.6の新機能について紹介していこう。 InnoDB

    開発スピードアクセル全開ぶっちぎり!日本よ、これがMySQL 5.6だッ!!
  • 私は如何にしてWindowsの呪縛から逃れ、Linuxデスクトップという涅槃の環境にたどり着くことが出来たのか。

    先日、いますぐWindowsを捨ててデスクトップでGNU/Linuxを使う10+の理由というエントリを書いたところ結構な反響があったと同時に、「Windowsから離れることなんて出来るワケがない」という否定的な意見も多く見られたように思う。確かにWindowsにしか存在しないソフトウェアを使う作業(例えばボカロ作曲)などをライフワークにしている人はWindowsから離れることはできないだろう。 最近はMacユーザーが劇的に増えてきた。筆者もかつては仕事Macを使っていた。Macでも仕事を進める上で困ることはほとんどなかった。(現在もそのMacは使っているが、OSXではなくPear OSが動いている。)筆者が幸運にもWindowsに縛られない仕事だったということも大きいだろう。(仕事上どうしてもWindowsから離れられないという人にはまず転職をお勧めしたい。プログラマやDBAなどのエンジ

    私は如何にしてWindowsの呪縛から逃れ、Linuxデスクトップという涅槃の環境にたどり着くことが出来たのか。
  • lessでソースコードに色をつける

    シェルの操作中「テキストファイルをちょこっと覗きたいな」と思ったときに抜群に便利なlessコマンドであるが、普段綺麗に色付けされたソースコードを見慣れていると、モノクロのソースコードの見づらさに愕然としてしまう。結局lessを終了して他のエディタで開きなおすことになるのだが、lessでソースコードに色付け(シンタックスハイライト)できれば便利なのになーっ!と思ったことはないだろうか。そう、あるんです!lessでシンタックスハイライトする方法はあるんです!というわけで、今日はその方法を紹介しよう。 GNU Source-highlight結論から言うと、今日紹介する方法はGNU Source-highlightを使う。GNU Source-highlightを使えばイッパツだ。なのでまずGNU Source-highlightをインストールしよう。UbuntuやFedoraならリポジトリにあ

    lessでソースコードに色をつける
  • MySQLにおけるレプリケーション遅延の傾向と対策

    レプリケーションはMySQLで最もよく使われる機能のひとつだ。レプリケーションは基的に非同期でデータの複製を行う仕組みになっているのだが、非同期故にどうしても逃れられない問題がある。そのひとつが今回のテーマ、遅延である。というと、MySQLのレプリケーションはすぐに遅延が生じてしまうように感じてしまうかも知れないが、そのようなことはない。ほとんどの場合は即座にスレーブの更新が行われる。 なぜ遅延は発生するのか、どのように遅延が起きていることを調べるのか、どのように回避するのかということをエントリでは解説したい。うまく遅延と付き合って、MySQLのレプリケーションをより快適に運用してもらえればと思う。 そもそも遅延とは何かMySQLのレプリケーションは非同期で行われる。これは準同期でも同じであり、スレーブにおいて更新が起きるのはマスターよりも一瞬遅れてしまう。これは非同期であるが故に逃れ

    MySQLにおけるレプリケーション遅延の傾向と対策
  • なぜリチャード・ストールマンはオープンソースを支持しないか

    「リチャード・ストールマンはオープンソースを支持しない。」なんていうと、オープンソースにあまり詳しくない人はギョッとするかも知れない。ギョッとした人は是非このエントリを読んで欲しいと思う。 我らがリチャード・ストールマン(敬称略)はGNU宣言を発表してフリーソフトウェア運動を始めた偉人である。そう、リチャード・ストールマンが支持するのはフリー(自由な)ソフトウェアであってオープンソースではないのだ。なんだか似たような感じがするし、恐らくオープンソースとフリー(自由な)ソフトウェアを明確に区別している人はほとんど居ないだろう。オープンソースと言う語をはじめて公式に発表したブルース・ペレンズも「フリーソフトウェアとオープンソースは実質的に同じものを指す」なんて言っちゃってるぐらいだ。だけどリチャード・ストールマンは二つを明確に区別し、あくまでもフリー(自由な)ソフトウェアを支持する立場を貫いて

    なぜリチャード・ストールマンはオープンソースを支持しないか
  • 「優れたMySQL DBAを見分ける27+3の質問」に対する回答例

    随分と更新が空いてしまったが、「優れたMySQL DBAを見分ける27+3の質問」に対する回答例(漢バージョン)を紹介しよう。実は質問を掲載した際「難しい!」というコメントが非常に多く、もう少し易しい質問にするべきだったかと思って次のように呟いてみたのだが・・・ 非常に心強くて安心した。さすがに日を代表するMySQLのエキスパートである。出題のレベルは間違ってはいなかった!! そんなわけで、回答の方に移ろう。 MySQLのサーバープロセスはいくつある?ひとつ。mysqldはシングルプロセス・マルチスレッドモデルを採用しているので、"サーバー"プロセスはひとつである。多くの場合、Linuxなどでmysqldを動かす場合には、お供にmysqld_safeも常に動いていることが多いが、mysqld_safeはサーバーではなく、mysqldのためのラッパーであるので数には含めない。 rootユー

    「優れたMySQL DBAを見分ける27+3の質問」に対する回答例
  • 優れたMySQL DBAを見分ける27+3の質問

    「優れたPerlプログラマを見分ける27の質問」の日語訳というエントリが人気だったので、MySQL版をやってみた。題して、「優れたMySQL DBAを見分ける27+3の質問(漢バージョン)」。腕に覚えのある人はぜひ試してみて欲しい。 MySQLのサーバープロセスはいくつある? rootユーザーのパスワードを忘れたときの回復手順 MySQLをオンラインバックアップする方法を3つ。(もっとでも可) InnoDBのデータファイルが作成可能な場所はどこか。 InnoDBのデフォルトの分離レベルは? ネクストキーロックについて説明せよ。 ロールバックセグメントにはどのようなデータが格納されるか? InnoDBでデッドロックが発生したときの挙動、および詳細な状態を確認する方法。 MyISAMがサポートしている特殊なインデックス2つ。 MySQLにおけるテーブル1行あたりの最大サイズ。 構成可能なレプ

    優れたMySQL DBAを見分ける27+3の質問
  • 出来る漢になるための唯一無二の階段

    はてなのホッテントリで話題になっている「仕事がデキる人」と「仕事をする人」の違いと習慣 / Keep Crazy;shi3zの日記」という記事を見て凄い違和感を覚えたので思わず筆をとってしまった。ネタバレ注意なので、まずは元記事を読んでからエントリに移っていただきたい。 一見もっともらしい意見のようだが・・・結論から言おう。 単に与えられた命令を淡々と実行するのは当たり前。それは「仕事をしてる」ことにはなっても、「仕事がデキる」ということではない。 では「仕事がデキる人」と「仕事をしてる人」の違いはどこにあるだろうか。 僕はこれを「先読み能力」の違いだと思った。 仕事で先を読むなどということに挑戦するのはまったくの無駄骨にしかならない。 そもそも、ルーチンワークでもない限り、物事の先を読むというのは非常に難しいか、もしくは不可能である。ルーチンワークであれば段取り通りに仕事を進めていくだ

    出来る漢になるための唯一無二の階段
  • エンジニアの楽園を見たッ!クリアコードさんの方々とお会いした話。

    先月、株式会社クリアコードの皆さんが俺が住む栃木県小山市にオフィスを構えられるということで、開設記念パーティーのために総出で小山へ来られた。東京をベース拠点とするクリアコードさんがなぜ小山に!?という疑問を胸に抱きつつ、普段ギークとの会話に餓えている俺は「このチャンスを逃すな!」と言わんばかりにTwitterで声をかけて、ノコノコと乗り込んでしまったのであった。 俺は、クリアコードさんのことはRuby会議2010でるりまサーチのセッションを聞いたときに初めて知った。その後、Xchat-RubyプラグインとGroongaを使ってIRCの履歴を全文検索出来るようにしたときにrroongaを使ったり、さらにSennaストレージエンジンの作者である池田(mir)氏が社長である須藤さんの技術力を絶賛していたこともあって、かなり興味を持っていた。今日は、そんなクリアコードさんの皆さんと会って伺った興味

    エンジニアの楽園を見たッ!クリアコードさんの方々とお会いした話。
  • アジャイルと受託開発

    先日、永和システムマネジメント社がアジャイルによる受託開発サービスを発表し、話題になっている。多くの人の関心を引いているのは、アジャイル開発手法を取り入れるということだけでなく、その価格の安さだ。一ヶ月あたりの料金は、もっとも安いものでは月々15万円から、もっとも高額なプランでも月々150万円からとなっている。果たしてそんなので儲かるの!?というのが多くの人がいだいている疑問であろう。自分なりに「アジャイルによる受託開発サービス」について分析してみたので語ってみようと思う。なお、エントリは永和システムマネジメント社が公開されている資料と筆者の推測に基づくものであるので、より詳細で正確な内容は永和システムマネジメント社さんへ問い合せて頂くよう悪しからず了承いただきたい。 採算割れしないのか?筆者の見解では、たぶんしない。何故か?それは一旦開発が終わったらそうそう頻繁にシステムの仕様を変更し

    アジャイルと受託開発
  • プログラマを目指す10代が読むべきたった一冊の書籍。

    それは、リチャード・ストールマン著「フリーソフトウェアと自由な社会」以外にはない。なぜなら、何か道を定めるとき最も重要なのは倫理観だからだ。 社会は欺瞞に満ちている。企業は自社の利益にとって都合の良いことばかりを宣伝し、政府もそのような企業によって動かされ、市民は何が当に大切なことなのか、即ち倫理を忘れがちである。リチャード・ストールマンの素晴らしいところのひとつに、倫理的な洞察力に優れているということが挙げられる。 倫理を学び、ソフトウェアがどのように社会に貢献するかを知る。それはこれから社会人になろうという人たちにとって、大きな道しるべになろう。リチャード・ストールマンが目指す社会は次のようなものだ。(第2章「GNU宣言」より抜粋。最後の部分。) 長期的には、プログラムをフリーにすることは、飢餓のない世界、つまりすべての人がただ生活するだけのために必死に働かなくても済む世界に向かって

    プログラマを目指す10代が読むべきたった一冊の書籍。
  • Ruby会議2010へ行ってきた。

    Ruby会議2010へ行ってきた。何を隠そう、Ruby会議に参加したのは今回が初めてである。休日に自由時間を確保するのは、小さな子供が居る既婚者男性諸君であればそれが如何に厳しいことかということを理解しているはずだ。だが息子も3歳になり、さらに幸いにも予定が一切かぶっていなかったため、3日間すべて参加することが出来たのであった。 Ruby会議2010のテーマは「Conflict and Resolution」(衝突と解決)である。大規模なオープンソースプロジェクトには人々の衝突がつきものであるため、日有数のオープンソースプロジェクトであるRubyにはピッタリのテーマであるといえよう。というわけで、Ruby会議初参加者による視点で、面白かったことや気になったことなどについてレポートをお届けしたい。 1日目まず最初に、今回一番の目当てにしていた「Ruby開発会議つくば」を傍聴。gdgdなリラ

    Ruby会議2010へ行ってきた。
  • 漢(オトコ)のコンピュータ道: モダンなMySQLの開発環境の構築方法

    遅ればせながら モダンな Perl の開発環境の構築方法 モダンなPHPの開発環境の構築方法 モダンなPythonの開発環境の構築方法 モダンな Java の開発環境の構築方法 に続いてみる。MySQLは言語じゃないけど。 コンパイラ等MySQLをソースからビルドするのでなければコンパイラ等は必要ないけど、どうせアプリ開発に必要なので「MySQLなんかいつでもハックしてやるぞ!」という意気込みを示すために入れておこう。OSXならXcode、LinuxならGCC。最新のソースコードじゃないとヤダ!という粋な人にはBazaarのインストールもお勧めしたい。Bazaarは言わずと知れた分散バージョン管理システムであり、MySQL開発チームも採用している。最新のソースコードは次のコマンドでゲット可能だ。 shell> bzr branch lp:mysql-server/5.1 mysql-5.1

    漢(オトコ)のコンピュータ道: モダンなMySQLの開発環境の構築方法
  • 大人のためのInnoDBテーブルとの正しい付き合い方。

    InnoDB関連でよくある質問のひとつに「テーブルのメンテナンスは何をすればいいんですか?」というものがある。InnoDBMySQL 5.5でデフォルトストレージエンジンとなるため、InnoDBのテーブルメンテナンス計画を立ようと思う機会も増えることだろう。そこで、今日はInnoDBのテーブルメンテナンスの各種方法となぜそうしなければいけないかという理由を解説しようと思う。 ANALYZE TABLEテーブルメンテナンスの代名詞といえば、インデックス統計情報の更新ではなかろうか。運用を続けるうちに、知らず知らずインデックス統計情報が狂ってしまい、思うような性能が出ない。RDBMSにはそのような問題がつきものであるが、InnoDBの場合、ANALYZE TABLEは不要である。なぜなら、InnoDBが自発的に統計情報を更新するからだ。InnoDBは以下の条件に適合すると、ANALYZE T

    大人のためのInnoDBテーブルとの正しい付き合い方。
  • オープンソースによる新しい受託スタイルの提案

    前々回のエントリ「受託開発とGPL」では、受託開発においてGPLのソフトウェアを用いる際に注意すべき点やライセンスの扱いについて書いた。ただし、その視点はあくまでも「GPLはSIerにとって注意すべき≒厄介なシロモノであり、如何に地雷を踏まないようにするか」というものであったように思う。だが、「厄介である」という性質は、裏を返せば「味方につけると頼もしい」ということだ。つまり、GPLは、味方になれば強力で頼もしい存在なのである!今日は、SIerが今の開発スタイルから脱却し、如何にしてGPLを味方につけて戦っていくかということについて語ろうと思う。ちょっとひどい妄想夢物語的な記述も入っているのだが、「何言ってんだコイツ?!」とツッコミたいところをぐっとこらえて最後までお付き合い頂ければ幸いである。 システム全体を再構築するのは大変SIと一口で言ってもその規模は大小様々であるが、業務(基幹系)

    オープンソースによる新しい受託スタイルの提案
  • オープンソースでお金を稼ぐ方法いろいろ。

    オープンソースソフトウェア(以下OSS)が広く使われるようになって久しい。ご存じの通りOSSは無償で入手できるものばかりであるため、多くの人が疑問に思うことがひとつある。それは、「OSS開発者はどこから収入を得ているのか?」ということだ。収入源の実体がよく分からないために「霞をって生きているのか?」などと揶揄されることもある。実際OSS開発者は「どうやって収入を得るか?」ということについて色々と悩んでいる場合も多かったりするのだが、実はOSSには様々なビジネスモデルも存在する。そんなわけで、今日はOSSを活用して収入を得る様々な方法について詳解しよう。OSS開発者になることに躊躇している人の背中を後押しすることが出来れば幸いである。 プロプラエタリソフトウェアのビジネスモデルまずはおさらいである。OSSのビジネスモデルについて考える前に、プロプラエタリソフトウェアのビジネスモデル(特にラ

    オープンソースでお金を稼ぐ方法いろいろ。
  • 受託開発とGPL

    GPLに対する代表的な誤解・・・というかむしろ謎のひとつに、受託開発(SI)におけるライセンスの扱いがある。この点が明確になっていないため、受託開発において無意味にGPLを回避しようとしたり、GPLに対するFUDを流布することに対する原因になっていたりするように思う。フリーソフトウェアおよびオープンソースソフトウェアを愛する者として、そのような状況は断じて見過ごすことができない!!というわけで、今日はGPLを受託開発(SI)において用いる場合の注意事項を説明しよう。 GPLの使いどころ受託開発においてGPL(とその仲間たち=LGPL、AGPL)が登場するのは、第三者、つまり発注側でも受託側でもない者が作成したGPLのソフトウェアを利用する場合である。例えばGPLが適用されたライブラリなどだ。周知の通り、GPLのソフトウェアをリンクしたソフトウェアを再配布する場合は、そのソフトウェア全体に対

    受託開発とGPL