ブックマーク / codezine.jp (21)

  • 3値論理とNULL

    要するに、データベースにnullが1つでも含まれていれば、クエリから正しくない結果が返される可能性がある。しかも、一般的には、どのクエリから正しくない結果が返されるのかを知る方法はないので、すべての結果があやしく見えてくる。nullが含まれたデータベースから正しい結果が得られることは確信できない。筆者に言わせれば、この状況はまさにお手上げである。 ――――C.J.デイト はじめに 多くのプログラミング言語が、真理値型(BOOL型、BOOLEAN型)というデータ型を持っています。もちろん、SQLにも真理値型が存在します。ユーザーが直接扱えるデータ型として定義されたのはSQL-99ですが、WHERE句などの条件の評価時にも真理値の演算が行なわれています。 ところで、普通のプログラミング言語の真理値型とSQLの真理値型の違いをご存知でしょうか? それは、普通の言語の真理値型が、true、fals

    3値論理とNULL
    kennak
    kennak 2010/10/17
    プログラマのためのSQLにも書いてあった
  • Javaの限界を超えて実用化を目指す 新開発言語「Scala」のメリットとは~前編

    Scalaとは Scalaは、2003年にJavac(コンパイラ)やJavaのGenericsの設計/開発貢献者であるMartin Odersky氏(スイス・ローザンヌ工科大学教授)によって、開発が開始された比較的新しいプログラミング言語です。Javaは実用言語として幅広いシステムで使用されてきましたが、下位互換性を保つという要請の中、言語としての機能強化がなかなか進まないといった限界も見えてきています。そのような現状もあることから、ScalaJavaの後継として実用的な言語を目指して開発されています。 Scala最大の特徴は、Javaの良さを最大限継承しつつ、スクリプト言語や関数型言語の良いところも吸収し、先進的な機能/文法を取り入れている点です。また、今後のハードウェアのマルチコア化を見据え、簡易に並列処理プログラミングを行うことができるライブラリが付属しています。 Scalaのメリ

    Javaの限界を超えて実用化を目指す 新開発言語「Scala」のメリットとは~前編
    kennak
    kennak 2009/11/09
    静的言語のマクロみたいなもんか便利そう
  • PHP5用フレームワーク「symfony」の現状と今後

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    PHP5用フレームワーク「symfony」の現状と今後
    kennak
    kennak 2009/06/09
  • 自然な思考で当たり前のプログラミングを~Bjarne Stroustrup氏との対話~

    はじめに 連載では、プログラミング言語「C++」を設計し、最初に実装したBjarne Stroustrup氏を取り上げてきました。同氏は「C++」を設計しただけではなく、20年以上の長期に渡りその発展のために努力してきました。筆者は、連載をこれまで閲覧されてきた皆さんが“20年”という数値をどのように解釈されているのか大変気になっています。 国際標準プログラミング言語C++にはSTL(Standard Template Library)と呼ばれるライブラリが採用されています。STLを創案したのはAlexander Stepanovという人ですが、同氏はStroustrup氏の求めに応じて「Short History of STL」(PDF)という小論文を起草し、STLの歴史を手短に整理しています。その論文に目を通してみると、『STLは私の20年間の思索の結論である』という一文に出会うこ

    自然な思考で当たり前のプログラミングを~Bjarne Stroustrup氏との対話~
    kennak
    kennak 2009/01/06
  • コーディングスタイルの常識をぶち壊せ

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    コーディングスタイルの常識をぶち壊せ
    kennak
    kennak 2008/12/22
    コーディングスタイルの話として真っ当な事を書いてある記事だと思うんだけどなぁ。サンプルコードが良くないのかなw。マージンはオートフォーマッターでマルチステイトはある程度はありかと。
  • 人間という生物の常識からITを考えてみよう

    普段意識しない常識 受話器は耳につけて話をする機械ですよね。キーボードは手の指で叩きますね。当たり前のようですが、「なぜ?」と考えることはあまりないものです。 ――なぜ、受話器は耳につけるのでしょうか? それは音は耳で聞くからです。 ――なぜキーボードは手の指で叩くのでしょうか? それはたくさんのボタンを叩くのに手の指が一番都合がいいからです。 極々当たり前の答えが出ました。ほぼこれは人間という生物の絶対常識と呼んでいいと思います。当たり前だからこそ、普段そんなに考えることはないんですね。 前回、世界のどこに行っても変わらない常識を「絶対常識」と呼ぶことにしました。1+1=2などがそうです。絶対常識には、数学的、物理的、生物的、歴史的など、いくつかのカテゴリーがありそうです。ここでは生物的な視点からエンジニアの役割を考えてみたいと思います。 エンジニアと五感 ここでいう生物とは……。そうで

    人間という生物の常識からITを考えてみよう
    kennak
    kennak 2008/12/22
    程よい隙間があると、人はその自由度の中で操作を支配していく
  • 高速かつ省メモリで文字列を扱うデータ構造「wavelet tree」

    はじめに 大規模なデータを扱うアプリケーションでは、速度とともに作業領域量も大きな問題となります。作業領域がメインメモリに収まらない場合、スワッピングが発生し、大幅な速度低下につながります。そのため近年、データ構造は高速なだけでなく、作業領域量が小さいことも求められています。今回紹介するのは2003年に提案されたデータ構造、wavelet tree(以下「WT」と表記)です。WTは圧縮索引やSuccinct Data Structureなど、データをコンパクトに表現する際に重要なデータ構造です。WTは文字列T[0...n-1]が与えられた時、次の2つの操作を定数時間でサポートします。 rank(p, c)――T[0...p]中のcの出現回数を返す select(i, c)――(i+1)番目のcの位置を返す WTの作業領域量は、文字列をそのまま保存した時の約2倍程度です。 対象読者 C++

    高速かつ省メモリで文字列を扱うデータ構造「wavelet tree」
    kennak
    kennak 2008/12/10
  • 高速かつ省メモリなbit vector「sucBV」を作る

    はじめに 大規模なデータを扱うアプリケーションでは、速度とともに作業領域量も大きな問題となります。作業領域がメインメモリに収まらない場合、スワッピングが発生し、大幅な速度低下につながります。そのため近年、データ構造は高速なだけでなく、作業領域量が小さいことも求められています。今回紹介するデータ構造は「操作付きbit vector(SUCcinct Bit Vector:sucBV)」です。sucBVは、圧縮索引やSuccinct Data Structureなど、データをコンパクトに表現する際に重要なデータ構造です。STLのvector<bool>と同様に、bit列情報B[0....n-1]を保存します。このbit列情報は前もって与えられ、変更が無いことを前提とします。sucBVは、次の二つの操作を定数時間でサポートします。 rank(p,bit)――B[0...p]中のbit(bitは1

    高速かつ省メモリなbit vector「sucBV」を作る
    kennak
    kennak 2008/12/10
  • 正規表現エンジンを作ろう (1)

    はじめに こんにちは。hirataraです。 私が初めて正規表現を使ったのは、PerlによるCGIでの文字列処理でした。それから私はPerlを使い続け、今では正規表現なしのコーディングは考えられないほど、正規表現を当たり前の機能として日常的に使っています。昔は標準では正規表現をサポートしていなかったJavaも、今では正規表現をサポートするようになりました。Javaだけではなく、今日ではほとんどの高級言語にとって、正規表現はなくてはならない機能であると言っても過言ではないほどメジャーな機能となっています。 記事では、この正規表現の舞台裏に光を当てます。一見すると作ることが難しそうな正規表現エンジンですが、その根底には数学的な概念があり、その概念さえ知っていれば基礎となる機能の実装はそんなに難しくありません。この連載ではその数学的な概念をPythonを使って表現しながら、実際に動作する正規表

    正規表現エンジンを作ろう (1)
    kennak
    kennak 2008/11/06
  • HttpUnitを利用したWeb画面テストの自動化

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    HttpUnitを利用したWeb画面テストの自動化
    kennak
    kennak 2008/10/29
  • あなたはC++ の発明者? それとも創造者?〜Bjarne Stroustrup氏との対話〜:CodeZine

    はじめに 「Bjarne Stroustrup氏との対話」連載を担当することになりました、豊田孝と申します。よろしくお願いいたします。 対話の相手であるBjarne Stroustrup氏は、プログラミング言語「C++」を設計し、最初に実装した人です。それだけでなく、同氏はC++を国際標準プログラミング言語の地位に付かせました。大変なエネルギーの持ち主です。 筆者はこの数年、「同氏の生き方から何かを学べるのではないか」と考えてきました。その考えは日毎に熱を帯び、「学べるはずだ!」、そしてついには、「わが国の開発者に、同氏の考え方と生き方ぜひお伝えしたい!」へと変化し今回の連載を始めるに至りました。 稿でのStroustrup氏との対話はメール交換を通して行われます。基的には、筆者が質問文を用意し、Stroustrup氏がその質問に対して高所からコメントを寄せることになります。C++言語

    kennak
    kennak 2008/07/30
    「ソフトウェアは現代社会を支えているが、そのことは完璧に無視されている」
  • 「あれは強烈なカルチャーショックだった」 UE清水社長が語った転機とは:CodeZine

    清水さんは元々ドワンゴに勤めていて、iモードの黎明期から携帯コンテンツ業界に関わっていたと聞きました。ですが、ドワンゴが急成長し始めたときにあえて独立されたのはなぜでしょうか? 僕は携帯コンテンツのゲームテクノロジー部分を作っていた人間なのですが、当時、ドワンゴは着メロ事業にシフトし始めていたんです。それは、ゲームを作っている僕のような人間にとっては方向性の違う事でした。そこで会社を離れ、別の道を探そうと思ったのです。

  • CodeZine:C++ 開発者のためのRubyガイド(XML, 言語比較)

    Scaffoldで生成したアプリケーションは出発点にすぎず、自立した完成品のアプリケーションではありません。このため、開発者がプロジェクトに適した形になるように手を加える必要があります。しかし、毎回似たような修正を行うのであれば、生成した時点でその修正が反映されている方が、より生産性も向上します。そこで稿では、Scaffoldをカスタマイズする方法を紹介します。

    kennak
    kennak 2007/06/29
    Ruby
  • CodeZine - エンジニアから経営層と渡り合えるコンサルになるための最短キャリアパス(後編)(BI, キャリア, コンサルタント)

    イーシステムテクノロジー株式会社 執行役員 CRM第三部 部長 石川 亨 コンサルタントを目指すエンジニアの皆さんにとって、その目標を実現させる最短のキャリアパスとしてBI(Business Intelligence)コンサルタントがあります。前回はコンサルタント全般について紹介しました。今回は、BIについて深く掘り下げていきたいと思います。 企業の経営戦略では、まず「戦略目標」を定め、目標を実現するための「手段」CSF (critical success factors;主要成功要因)を策定し、その手段が遂行されているかどうかを測定する「指標」(重要目標達成指標)を決定します。それらを管理する手法の一つにPDCAがあります。また効率的な流通を実現するためにSCMを戦略的に活用する企業が増えていますが、SCMの分析や評価、活用にもBIが有効な手段となります。 ここで言う、PDCAとは「

  • CodeZine - エンジニアから経営層と渡り合えるコンサルになるための最短キャリアパス(前編)(コンサルタント, BI, キャリア)

    イーシステムテクノロジー株式会社 執行役員 CRM第三部 部長 石川 亨 現在、開発の現場でプログラミングなどに携っているエンジニアの多くは、将来はコンサルタントになるキャリアパスを描いていると思います。一口にコンサルタントといっても、販売管理、生産管理といった分野や業種を含めるとさまざまな種類があり、コンサルタントへのキャリアパスは複雑なものとなってしまうでしょう。稿ではコンサルタントになるための、最短キャリアパスを紹介します。 イーシステムテクノロジーが提唱しているのがBI(Business Intelligence)コンサルタントです。BIとは、業務システムなどから蓄積される企業内の膨大なデータを、蓄積・分析・加工して、企業の意思決定に活用しようとする手法です。ERPパッケージやCRMソフトなどからもたらされるデータの分析を専門家に依存せず、経営者や社員が必要な情報を自在に分析し

  • Javassistでクラスのバイトコードを直接書き換える:CodeZine

    はじめに Javaのクラスファイルというのは、ソースコードからコンパイルして作成する――これが、長い間の常識でした。しかし昨今、この常識を覆すような技術が次々と登場しています。最近のフレームワークなどを見ていて、ふと不思議に思ったことはありませんか? XMLで必要な情報を定義すると、自動的にそのクラスが生成されたり、既にあるクラスの機能が書き換わったりする。プログラマがソースコードを書くこともなく、必要なクラスが作成されてしまう。そうした「クラスの自動生成」の技術を大幅に進歩させたのが「クラスのバイトコードを直接書き換える」技術です。対象読者Javaを使ったプログラム作成を行っている中級レベルのプログラマ。クラスのバイトコード操作について興味のあるひと。同じようなBeanクラスをひたすら作り続けるのに、いい加減、嫌気がさしている人。 クラス生成の新しい形とは? 最近のフレームワークなどでは

    kennak
    kennak 2007/06/12
    JAVAでオーバーレイ
  • 「ちょっと待て」 真・MySQLのクエリを最適化する10のTips:CodeZine

    Jaslabs: High performance phpで紹介された「MySQLのクエリを最適化する10のTips」に対して、反論している人がいる。ブログ「20bits」のJesse氏だ。彼は「10 Tips for Optimizing MySQL Queries (That don’t suck)」というエントリーで、Jaslabs氏の記事は適切でないとしている。 Jesse氏の経験によれば、SQL最適化で最も重要なことはSQLDBの基をしっかりと理解することであり、60%がこれで解決するという。残り35%はDBやクエリの特殊な性質に対する対処であり、最後の5%で発想の転換などを求められる。Jaslabs氏はここにばかり力を入れており、それはまったくもって時間の無駄だと述べている(Jesse氏は「SQL_SMALL_RESULTなんて、生まれてこの方使ったことすらない」とまで言

  • 「パソコン環境まるごと手のひらに」 wizpyのオンラインショップ販売が開始:CodeZine

    kennak
    kennak 2007/02/23
    あ~ どこでも端末があるならこゆのがいいね 10年早い気がする製品 欲しいけど
  • 7つのアジャイル開発手法の実践ガイド(第2回):CodeZine

    最新の開発プロセスおよびテクノロジの大規模導入のコンサルテーションを行うValtech Skill Developmentの上級顧問。主にエンタープライズJava開発およびアジャイル手法を行うチームを指導している。アスペクト指向プログラミングからEJB 3.0に至るまで各種の話題について数の記事を執筆。現在はオクラホマのJavaユーザーグループのモデレータを務めながら、頻繁に講演を行う。 Countrywide Financial Corp. のエンタープライズアーキテクト。メンター、コーチ、アーキテクト、マネージャ、開発者、トレーナー、開発方法論者、オープンソース信者など、さまざまな肩書を持つ。著者、プレゼンター、技術校閲者としてさまざまなプロジェクトに携わり、まもなく共著『EJB3 In Action』(Manning刊)が出版予定である。 また、Oklahoma City Ja

    kennak
    kennak 2007/02/21
    大体オレンジが多い
  • Google流プログラミングの真髄を筑波大学で見てきた:CodeZine

    Google Desktop SDK 次に、Googleプロダクトマネージャーの石原直樹氏により、Google Desktop SDK、Google Desktop Gadgetsの説明が行われた。 先ほどの話と混乱しやすいが、Googleのガジェットには大きく2種類ある。一つが先ほどのWebページ用の「ユニバーサルガジェット」、もう一つがGoogleデスクトップ用の「デスクトップガジェット」だ。 「Googleデスクトップ」をインストールすると、ローカルマシン内のファイル検索をGoogleのWeb検索と同じように行える(デスクトップサーチ機能)他、デスクトップやサイドバーにデスクトップガジェットを追加できるようになる。 デスクトップガジェットも、ユニバーサルガジェットと同様に、ニュースやWebサービスの情報表示、時計、ゲーム、カレンダーなど、様々なものが用意されている。デスクトップガジェ