タグ

ブックマーク / thinkit.co.jp (10)

  • 命令型プログラミングはどこに行くのか

    命令型プログラミングパラダイムとは 現在主流のプログラミング言語は、質的にはハードウエアの実行メカニズムに深く根ざして発展してきた言語です。すなわち、固定長メモリセル列の上にデータ構造を構築し、状態を表現します。そして機械語命令列をプロセッサが順番に実行し、状態遷移を行うというチューリングマシン的メカニズムです。プログラミング言語が変われば、1つの命令文が扱えるデータ構造の粒度や抽象度も大きく変わりますが、「データ構造を構築し、計算を実行するためのアルゴリズム(命令文の列)を記述する」というパラダイムには変わりありません。 連載の視点では、PascalやCなどの構造化プログラミングや、C++Javaのようなオブジェクト指向プログラミングなども、質的には命令型パラダイムに含まれると考えます。 命令型プログラミングは、次回紹介する「宣言型プログラミング」と対になる概念です。「手続き型プ

  • プログラミングの常識を疑え!

    プログラミングとは何か プログラミングと聞いて、みなさんはまず何を連想するでしょうか? 狭義の意味では、人間の意図をプログラミング言語によって記述すること(コーディング)ですが、より広い範囲、ソフトウエア開発全体を連想する人も多いかと思います。 狭義の意味だけに絞ったとしても、プログラミング言語にはさまざまなものがありますし、記述する内容や書き方のスタイル(プログラミングパラダイム)にもいろいろなものがあります。 例えばCやC++のようなコンパイラ言語は、OSを初めとした、さまざまなシステムやアプリケーションを作るのに向いた言語と言われています。これらの言語で書かれたプログラムは、コンパイラに対して細かな指示を与え、効率的な実行可能ファイルを生成するための記述です。 それに対してShellやPerlのようなスクリプト言語は、その名の通り、システムの動作内容などを台のように記述します。そし

  • 統合プロジェクト管理ツールを比較!

    dotProjectの機能と特徴 今回は、プロジェクト管理機能に加え、企業のほかの部門で扱う情報も含めて管理することを目指したオープンソースの統合管理ツールを紹介します。 まずは、PHPで記述されたWebインタフェースの「dotProject」です。原稿執筆時点(2008年9月現在)の最新バージョンは2.1.2です。 dotProjectには「プロジェクトの登録」「タスクの登録と追跡」「カレンダー作成/表示」「ファイル共有」「顧客コンタクト先リスト」「フォーラム」「トラブルチケット登録」「企業(取引先)の登録」「部署の登録」「ガントチャート表示」などの機能が搭載されています。 dotProjectのインストールに関しては、ツールそのものよりも、動作に必要となるPHPのセットアップに筆者は手こずりました。そこで、少し試してみたいという方には、demoサイト(http://www.dotpro

  • [Think IT] CPUの仮想化

    ハードウエアの仮想化とは? ここ2、3年仮想化技術が注目を集めています。サービスやアプリケーションなどのソフトウエアから、サーバーやストレージ、CPUなどのハードウエアまで、さまざまな場面で仮想化がキーワードになり、それを利用したソリューションが提供されるようになりました。 連載では、特にサーバーやPCで使われているハードウエアの仮想化においてキーとなるCPUによる仮想化をサポートする技術を紹介します。CPUの仮想化をサポートする技術を使うことで、1つのシステム上で複数のOSを起動することが簡単にできるようになります。なお、ここでのCPUはIntel系のいわゆるx86系CPUを中心に紹介していきます。 CPUの特権レベルとは何か? 仮想化について説明する前にCPUの「特権レベル」について説明します。これを理解すればCPUの仮想化というものが簡単に理解できます。 Intelの386以降のC

  • lighttpdを知っていますか?

    lighttpdとは? Webサーバーソフトウエアといって思い浮かべるのは、代名詞的な存在の「Apache」でしょうか、それともMicrosoft社製の「IIS」でしょうか。 今回、紹介する「lighttpd(http://www.lighttpd.net/)」は、軽量かつ高速性を重視して設計された比較的新しいWebサーバーソフトウエアです。 lighttpdは、BSDライセンスで公開されているオープンソースソフトウエアで、無料で利用することができます。そのため国内外を問わず、多くの著名な大規模Webサイトで利用されており、特に画像や映像などといった静的コンテンツの配信に使われることが多いようです。 さらにCGIやFastCGIといった外部プログラムのインターフェースもサポートしているため、近年流行のWebアプリケーションフレームワークであるRuby on Railsや、Python(Dj

  • iGoogleガジェット制作の基本

    はじまりはいつも"Hello, world!" 前回はGoogleガジェットの使い方やその利点について解説しました。今回は、Googleガジェットの作り方を解説します。 Googleガジェットは、XMLを書いて作ります。 百聞は一見にしかずということで、Googleがサンプルとして提供しているHello Worldと表示するガジェットのXMLを見てみましょう。 Moduleタグの子要素にModulePrefsタグとContentタグがあり、Contentタグの中にCDATAとして"Hello, world!"の記述があります。では、これをiGoogle上で表示してみましょう。 iGoogleにログインし、iGoogleのページ右上の「コンテンツを追加」をクリックします。もしくはこのページを表示します。 ページ左側のメニューバー下に「フィードやガジェットを追加」というリンクがあるので、そこを

  • [Think IT] 第4回:OpenIDの仕様を改めて復習してみよう (1/3)

    OpenIDの仕様を改めて復習してみよう 連載ではPHPによるOpenIDのサンプルを使って、実際に「Consumer」や「Identity Provider(以下、IdP)」を動かしながら、その仕組みについて解説してきました。かなり駆け足で紹介してきたため、今回はこれまでの解説を踏まえながら改めてOpenIDについておさらいします。 OpenIDでIdPが受け付けるアクセスには「associate」と「checkid_immediate」「checkid_setup」「check_authentication」の4つのモードがあります。これらは認証のたびにすべてが呼び出されるのではなく、状況によって選択されます。 まず「associate」では、アソシエーションハンドルとその有効期限、共通暗号鍵がIdPからConsumerに渡されます。アソシエーションハンドルは有効期限の間は再利用可能

  • [Think IT] 第1回:仕様記述言語を紹介するにあたって (1/3)

    【新・言語進化論】仕様記述言語を知っていますか? 第1回:仕様記述言語を紹介するにあたって 著者:シンクイット編集部 公開日:2007/11/7(水) Think ITというメディアがなぜ仕様記述言語を取り上げたのか? Think ITというメディアその登場以来オープンソースというキーワードを切り口にして、企業システムを見つめてきた。創業当時のソフトウェア環境から大きく進展をしてきたのは、読者の皆さんがご存知のとおりである。Think ITでは、これらの状況をかんがみ、企業としての取り組み方について債権等を実施、大きくメディアとしての方向性を考え直すことにしている。 5月から始まった「PHP特集」は、1ヶ月毎の「特集」というテーマを取り上げることとし、読者の皆さんにメッセージが伝わりやすくした。またソフトウェアテクノロジーに再度焦点をあて、ソフトウェアの開発現場の皆さんに喜んでいただけるよ

  • [Think IT] 第1回:今勉強したい関数型言語「Haskell」 (1/3)

    【新・言語進化論】次にくる!新登場言語 第1回:今勉強したい関数型言語「Haskell」 著者:シンクイット編集部 公開日:2007/11/5(月) 今勉強しておきたい新言語 一般的に「プログラミング言語特集」といった場合、今ビジネスで広く利用されているCやJavaPHPが取り上げられるケースが多い。しかし、9月の特集「魅惑のRuby」で取り上げたRubyのように、新たに世に送り出され、急速にその利用範囲を広げているプログラム言語もある。 そこで連載「次にくる!新登場言語」では、Rubyのように次世代の主要言語の座を狙う新登場言語を取り上げ、個々の言語の歴史やメリット、情報源、開発環境の導入、さらに既存言語との比較などを紹介していく。日頃使っている以外の言語に触れることで、新しい知識が得られるだけでなく、従来の言語のメリットの再確認にもつながるだろう。 第1回となる今回は純粋関数型言語

  • [ThinkIT] 第3回:トランザクションの比較 (1/4) -at- 徹底比較!! PostgreSQL vs MySQL

    トランザクション機能をサポートしているのは、PostgreSQLMySQL+InnoDBエンジンであり、MySQL+MyISAMエンジンはトランザクション機能をサポートしていません。ここでのトランザクション機能とは、複数のテーブルやレコードに影響をおよぼす処理を1つの単位とみなし、この単位での処理結果を保証する機能を指します。 具体的には、BEGIN文にてトランザクションを開始していくつかの処理を行った後、処理を確定する場合はCOMMIT文、処理を取り消す場合はROLLBACK文を使用し、トランザクションを終了させるまでの処理です。 トランザクション分離レベルとは、複数のトランザクションが同時に実行された場合に、他のトランザクションからの影響がどのくらい分離するかのレベルを意味します。 ANSI/ISO SQL規格(SQL92)では4つの分離レベル(下記コラム参照)が定義されています。P

  • 1