goo blog サービス終了のお知らせ 

エンタープライズアプリケーション志向

成功は気づきと行動から生まれる。

MySQLに大量データをインポート

2009年03月04日 21時34分51秒 | IT
さらにMySQLを高速化する7つの方法

このサイトから引用。

もし新たなInnoDBテーブルにCSVファイルからデータを大量に
ロードしたい場合にはLOAD DATAコマンドを利用せず、
CSVストレージエンジンからInnoDBテーブルに
ALTER TABLEするという技が存在するのでお勧めである。
ALTER TABLE時には1万行ごとにCOMMITしてくれるので、
上記のようなUNDOログの問題は発生しない。

CSVエンジンからInnoDBにALTER TABLEでバコっとやると速いらしいです。
実際に必要になった時はベンチマークをとって試してみる価値がありそうです。

OSC2009 Tokyo/spring

2009年02月21日 22時33分19秒 | IT
に行ってきました。
仕事があるので、土曜日しか参加できませんでしたが。

参加したのは
・勉強会大集合
・Ext JS

勉強会大集合では、勉強会に参加してスピーカーになると楽しいよ!
っていう内容でした。
OSCらしい内輪ノリがあって、おもしろかったです。
(自分はその輪にはいないんで、知らない名前とか出てましたが)

モデレーターが代役の方で、緊張がものすごい伝わってきました(^^;

勉強会を開催する場所をどうやって確保してるのかギモンだったので質問したところ、
わんくまのとっちゃんさんから、ルノアールに貸し会議室があると聞き、びっくりしました。
また、休憩中に、あまのりょーさんに声をかけていただいて嬉しかったです。
ありがとうございます。

また、企業の会議室を借りて、その代わり、企業のPRチラシを
参加者に配布ってのもあるらしいです。

ITカレンダーを見ると、よく勉強会がどこかの企業の会議室で行われるので、
企業の宣伝セミナー?と思ってましたが、
そうでもないことがあるようです。

ただ、何のコネもない企業では難しいと思うので
きっと参加者の誰かが所属している企業なんでしょうね。

2人だけでスタバで朝勉なんていうお話もありました。
モーニング・ビーなんておもしろい名前をつけてるそうですが、
愛着をもって、続けていくことが大事なんでしょうね。



Ext JSは紹介レベルでした。
もう少しハンズオン的な具体的なプログラムサンプルとデモを期待していたので残念。
デモはあるには、あったんですが、Hello Worldレベルだったんですよね。。。

Ext JSはファイルサイズが大きいのですが、
最低限のコアファイルだけのバージョンもあるそうです。
だいたい50KB未満ぐらいだそうです。

バージョン3.0が5月頃にリリースされるそうですが、
ライセンスがMITになるとか。
これはコアだけがなるのか、UIライブラリも含めてなるのかは不明でした。

それと、APIドキュメントは豊富に整備されている印象を受けました。

会場にギークっぽい壮年外国人がいたので、
もしかしてExt JS開発元の人?って思ったのですが、真偽はわかりません。。。

Zend Server

2009年02月20日 23時23分19秒 | IT
米Zend、PHP Webアプリケーションサーバー「Zend Server」を公開

なにやら新しいアプリケーションサーバーが公開されたらしい。

ダウンロードしてインストールしてみたが、
Zend Platformと何が違うのかよくわからなかった。

紹介ページを読むと
セキュリティが考慮されているところが違うのかな?というところ。

PHPライブラリでセキュリティバグがあった場合は
hot fixのようなパッチがインストールできるっぽい。

それをZend Serverを通じて、ブラウザ上で管理できるようだ。

また、アプリのデプロイは環境の違いで問題が発生することがあるが、
それを解決できるようなことが書いてある。

つまり、構成管理が出来るので、
環境の違いによる問題は起きないよと。

実際に動かしてみたら、PHPの各ライブラリのバージョンが一覧で見れて、
そのOn,Offが切り替えられる表示になっていたので、
この構成管理機能の1つのようだ。

しかし、パッと見ただけでは日本語記事にある

「ミッションクリティカルなPHPアプリケーションを運用・管理できる」

という歌い文句が理解できなかった。
(自分が英語が読めてないだけかもしれませんが。。。)

一応、サーバの状況、アプリの状況をブラウザで管理できるので、
運用段階で必要性のあるアプリケーションだ。

ちなみに、記事にも書いてあるが、商用版と無償版があり、
商用版にはページキャッシュ、モニタリング、サポートが付いている。

Zend ServerとZend Platformの棲み分けについては、
日本語記事で解説が出るのを待ちたいと思います。

Web デベロッパの祭典+ちょっとアキバ気分で。@東京の感想

2009年02月08日 20時42分23秒 | IT
2009/2/7にUDX秋葉原で開催されたWebデベロッパの祭典に行ってきました。

小飼 弾さんを見たかったのと、PHPのセミナー聞きたかったのが、目的。

以下、内容と感想。

どうするデベロッパ!?2009年プログラミング大展望
講師:小飼 弾 氏

晴耕雨読(不況の時代は晴耕:20%、雨読:80%で行こう)

経済的には失われた10年となるかもしれないが、
自分で学んだ知識は失われない。
不況の時代は仕事が少なくなるので、残業時間も減る。
早く帰れる分、勉強に力を入れよう。

勉強内容もトレンド的な技術ではなく、
一朝一夕では身につかない基礎的なレベルを上げよう。
情報技術にこだわらず英語なども良い

「景気がいい時はじっくりやるヒマがなくなる」のは、なるほどと思いました。

景気がよくなった時に備えて、今、力を蓄えることが必要ということですね。

・講師本人を見た感想
聴衆に頻繁に質問していてインタラクティブで面白かった。
声が意外に高かった。もっと、どっしりしているかと思っていた。
プレゼン慣れしてるかと思いきや、そうでもないように見えた。

次世代Web Platformのために
-Java技術動向と関連テクノロジーのご紹介-

講師:舟崎 健治 氏 の代理の人

全体的にクライアントのマシンパワーが上がってきたので、
Ajax、Flexなどクライアントに処理させる技術が多くなってきている。
Javaもクライアント寄りになってきている。

時代につれて、書くコード量は減ってきており、
逆にインタラクティブなソフトウェアになってきてる。

Java SE6 Update10の特徴
・Java Plug-in 2
・アプレットの改善
・etc

画期的だと思ったのはアプレットのプロセスをブラウザから分離させ、
アプレットをドラッグ&ドロップして、デスクトップに置けるというもの。
つまり、ブラウザを閉じてもアプレットは終了しない。

説明では、アプレットをブラウザ→デスクトップだったが、
逆にデスクトップ上のファイルをアプレット上にドラッグ&ドロップできると良い。

今では、ブラウザ上にファイルをドラッグ&ドロップしても、
ブラウザでそのファイルを表示するだけだが、
Webメーラーなどに、ファイルをドラッグ&ドロップして、
ファイルを添付できるようになると、
さらに、Webアプリとローカルで動作するアプリとの境界線がなくなると思った。

JavaFX
Javaとは異なる言語。
Javaよりも少ないコード量でかける
つまり、簡素化した言語である。

GlassFish v3(APサーバ)
コアだけ取り出して軽量コンテナとして使える。
つまり、組み込みに使えるようになる。

JRuby
Javaには、Java、JVM、Javaライブラリがあるが、
JavaをRubyで置き換えたものがJRubyらしい。
Javaライブラリ、Rubyライブラリ両方が使えるとのこと。

JavaOneがもうすぐ開催されるが、
基調講演がストリーミング配信されるらしいので、要チェックだ。

Cloud Computing
3月のコミュニティOneで、サンのクラウドコンピューティングに対する
方針が発表されるらしい。

・講師本人を見た感想
代理をお願いされたらしく、準備ができていなかったのか
時間配分がめちゃめちゃだった。
ただ、内容的には興味があったので、フルで聞いてみたかったので残念。

Webエンジニアの視点
~開発現場からの視点で~

講師:高橋 征義 氏

ジョエルが唱える5つの世界
1、パッケージ
2、インターナル(例:業務システム)
3、組み込み
4、ゲーム
5、使い捨て

パッケージは汎用的に作る必要がある。
インターナルは使用状況が想定できる。
組み込みは後から修正することが出来ないので、高品質が求められる。

というように、タイプによって求められる要件が異なる。
だから、情報を入手する際に、その背景となる前提条件を理解していないと
誤解してしまうよ、ということ。

講師の唱える4つの世界
・自社、受託開発
・業務システム、メディア
これらの組み合わせで2x2=4通り

メディアの例:
会社のHP、コミュニティサイト、セールスプロモーション

業務システムとメディアでは、お客が違う。
業務システム:情報システム部門
メディア:広報

おのずと予算の桁が違う。
つまり、求められる要件が異なる。

最近は業務システムと分けるために、
さらに、目的はメディア活動という理由で
「メディア」と呼んでいるらしいが、
「ITメディア」、「メディアIT」と呼んだ方が意味が通りやすいと思う。
(ただ、同名のITニュースサイトがあるが。。。)

・講師本人を見た感想
一昨年、デブサミで初めてみたけど、プレゼンの仕方が好き。

PHPの最新動向
-5.3の新機能を中心に-

講師:小山 哲志 氏

PHP5.3では大幅な変更がある。
静的関数、メソッドの改善
__callStatic()というマジックメソッドの追加
__call()のスタティック版。
これは実行したメソッドがない場合に、代わりに実行されるメソッド。

クラスメソッドの動的呼び出し
今まで、インスタンスメソッドでは出来なかった。

今まで出来たこと。
$obj = new Hoge();
$method = "action";
$obj->$method();

これが出来るようになる
$obj::$method()

この機能は好きなので、嬉しい限り。

遅延なんとかかんとか(メモれなかった)
selfの代わりに、staticが使える。
親クラスでecho static::$type;

子クラスで親クラスのメソッドを使った場合に、
メソッド内でecho self::$type()とすると、
親クラスのメンバ変数が使われてしまい、
子クラスのメンバ変数が使えなかった。
これをstaticを使うことで、できるようになる。
(うまく、説明できないな。。。)

無名関数
が使えるようになる。
コールバックで使うと便利になるらしい。

$func = function aaa() {echo "hello";};

(あまり詳しくないので要勉強だ)

クロージャ
が使えるようになる。
5.3.0ではクロージャ内で$thisが使えないらしい。

__invoke()
$obj = new Hoge();
$obj();
この時に、実行されるメソッドが__invoke()

初期化する時に使えるのかな。

名前空間
が使えるようになる。
階層の区切り文字はバックスラッシュ。
namespace \A\B\C;

関数名、定数名はなかった場合に、上位namespaceを見に行く
クラス名はなかったらエラーになる

相対パスになる
namespace \A\B\C;
$obj = new My\Foo();
とすると、\A\B\C\My\Foo()となる。

namespaceはファイルスコープで判断される。
namespace A;のファイル中で別ファイルをインクルードしても、
そのファイルの中はnamespace Aとはならない。

namespaceのインクルードのような機能(use)
namespace Foo;
use \A\B\C
としておいて、method()とすると、
Foo\method()と\A\B\C\Foo()が使える。

たぶん、Foo namespaceの中にFoo()がない場合に
\A\B\Cが検索されるのだろう。

namespaceにはエイリアスが使える
namespace Foo;
use \A\B\C as Other;

ここで、Otherとすれば、\A\B\Cとしたのと同じになる。

質疑応答では、namespaceに質問が集中していた。
たしかに、聞いた感想では、使いづらそうな感じがした。

<パネルディスカッション>
その仕事楽しんでる?
「プログラミングの楽しさと仕事としてのプログラミング」

パネラー:橋本 健太 氏、米林 正明 氏、大谷 晋平 氏 、馮 富久 氏 、他講師

rubyのCPANとして、ruby gems。というのがあるらしい。

eclipse4はブラウザで開発していた。
IDEのブラウザ化が始まるかもしれない。
※どこでも開発ができるようになるので、これはちょっと期待したい。

勉強会ではUSTREAMを使って、
リアルタイムにwebから参加できる仕組みがあるらしい。

Javascriptのコミュニティは日本が一番ホット。

自分が書いたプログラムが良いプログラムなのか
悪いプログラムかを判断できることが大事。

これは確かにと思った。
設計書、テスト設計書でも同じことが言えると思う。
時間などの制約で品質を高められない場合があるが、
それを意識的にコントロールできる必要があると思う。
最低限のラインを下回らないよう注意するべき。

クックパッドの橋本さんの「ユーザを幸せにする」
という話は非常に共感できた。
究極的な目標はそれだと思う。

コミュニティに参加したことのない人は参加すべき。

まだ参加したことないので、参加したい。
PHP系を探してみよう。

以上、満足できる内容でした!

携帯でオフラインブラウザ

2009年01月16日 08時15分04秒 | IT
携帯で朝の通勤時にネットを見てる時に、地下に入ってしまい、ネットが見れなくなってしまうのが嫌だ。

オンライン中に指定したサイトのコンテンツを取得しておいて、いつでも見れる機能が欲しい。
ネット接続がないから、サクサク見れるし。

HTTPリクエストを減らせ!

2008年12月25日 00時38分29秒 | IT
WebサイトのレスポンスはHTTPリクエストを減らすと、速くできます。
HTTPレスポンスは画像ファイル、Javascript、CSSなどの数だけ、
ブラウザが発行し、ファイルを取得します。

単純に、このやり取りの回数を減らすから、速くなるというわけです。

このまとめは以下の記事を参考にしています。
Best Practices for Speeding Up Your Web Site

HTTPリクエストを減らせ1(Image Map)
HTTPリクエストを減らせ2(CSS Splites)
HTTPリクエストを減らせ3(ファイル数を減らす)

Webサイトを高速にする方法をまとめて知りたい方は
こちらの記事で紹介している本がオススメです。
感想文:ハイパフォーマンスWebサイト
ページ数も少ないので、さくっと読めます。

HTTPリクエストを減らせ3(ファイル数を減らす)

2008年12月25日 00時28分25秒 | IT
前回はCSS Splitesを使って、画像ファイル数を減らすことで、
HTTPリクエストを減らしました。

今回は、CSSファイル、javascriptを1つにまとめて、
ファイル数を減らし、HTTPリクエストを減らします。

Image MapやCSS Splitesのような技術は使いません。
単純に問題ない範囲で、まとめて下さい。

と、これで終わってはつまらないので、
javascript,cssを圧縮するツールを紹介します。(参考サイトからの引用です。)
JSMin
YUI Compressor

使い方は、、、調べたら更新します。。。

参考サイト
Best Practices for Speeding Up Your Web Site

HTTPリクエストを減らせ2(CSS Splites)

2008年12月24日 23時56分26秒 | IT
前回のHTTPリクエストを減らせ1(Image Map)では、
並んでいる画像を1つにまとめて、HTTPリクエストを減らしました。
(HTTPリクエストを減らす意味については、前回の記事を参照して下さい)

今回は表示する場所が離れている画像ファイルを1つにまとめてしまう方法です。
CSS Splites(CSSスプライト)と言います。

以下のサイトを参考にしました。

参考サイト
CSS Sprites: What They Are, Why They’re Cool, and How To Use Them

前回に続き、百聞は一見にしかず、です。

通常の画像表示



CSSのbackground-imageを使って、画像を表示しています。



CSS Splitesを使った画像表示



こちらは、cssのbackground-imageで画像をブラウザにダウンロードさせ、
その後に、background-positionで、画像のどの部分を表示するかを指定しています。

数値を調べるのは、少々面倒ですが、
Image Mapよりも使える場面が多い方法だと思います。
(youtubeも、これを使っているそうです)


注意
ここで1つ注意です。
このCSS Splitesを使えば、アプリで使う画像全部を1つのファイルにまとめてしまうことが可能です。
しかし、1つのファイルが大きくなりすぎてしまうのは
パフォーマンスの劣化に繋がります。

これでは、本末転倒です。

特に、ブラウザは画像ファイルを並列ダウンロードできるので、
ある程度、分割されていた方がいいのです。
(不確かですが、同時に2つのファイルをダウンロードできるブラウザが多いように思えます。)

何かのブロック単位、モジュール単位に画像ファイルをまとめるのがいいように思えます。

HTTPリクエストを減らせ1(Image Map)

2008年12月24日 23時20分04秒 | IT
WebサイトのレスポンスはHTTPリクエストを減らすと、速くできます。
HTTPレスポンスは画像ファイル、Javascript、CSSなどの数だけ、
ブラウザが発行し、ファイルを取得します。

単純に、このやり取りの回数を減らすから、速くなるというわけです。

Image Mapは複数の画像ファイルを1つのファイルにまとめてしまい、
HTTPリクエストを減らすという手法です。

以下のサイトを使って、説明します。

参考サイト
Rule 1 - Make Fewer HTTP Requests
Example 1 - No Image Map
Example 2 - Image Map


百聞は一見にしかず。ということで、実際の画面を見てみて下さい。

通常の画像表示



ボタンの画像が横に並んでいます。
HTMLを見ると、普通にimgタグを使って表示しています。
また、画像ファイルをクリックすると、
javascriptでポップアップを表示するようになっています。
(正確にはリンクの中に画像を表示していますが)


Image Mapを使った画像表示



これは1枚の画像ファイルを表示しています。
そして、imgタグのusemap属性でmap1を指定しています。
それを受けて、すぐ下のmapタグのareaタグで、
各ボタンの座標を指定して、その部分をクリックした時に
javascriptでポップアップを表示するようにしています。


サンプルでは、javascritpを実行していますが、
実際は、他画面へのリンクになるのが普通です。

何かのアプリを作る時に、始めからこれを狙ってやるのは
慣れている人でないと難しいのではないかなと思います。

一度、作ってから、パフォーマンスチューニングとして、行うのが安全です。

とは言っても、画像ファイルをくっつけても問題ない場合しか出来ないので、
画面デザインを考える場合に考慮する必要があるかもしれません。

これよりも使えそうな方法にCSS Splitesがあります。