• [ubuntu][VMWare] VMWare+UbuntuにApache,PHP,MySQLのインストール

    手持ちのwindowsマシンでlinuxを使いたくなったので、coLinuxを入れたがネットワークの設定がうまくいかなかったので、先日参加したPHP勉強会後の懇親会でちょっと話題に出たUbuntuインストールしてみた時のメモ。 vmware+Ubuntuは以前インストールしたことがあったので、ここまではすんなり。 続いてApache+PHP+MySQLの最新版をそれぞれインストールを行う。 ・Apacheのインストール 2.2.8をインストール``` $ tar zxvf httpd-2.2.8.tar.gz $ cd httpd-2.2.8 $ ./configure –prefix=/usr/local/apache2 –with-mpm=worker –enable-module=so –enable-rewrite=shared –enable-ssl=shared –enable-dav=shared … checking for C compiler default output file name… configure: error: C compiler cannot create executables See ‘config.log’ for more details. configure failed for srclib/apr コンパイラーがないというエラーが出ました。ちょっと調べたところg++がないためのエラーのようです。以下のコマンドで、gccやmakeまでインストールされるようなのでこれを実行します。 $ sudo apt-get update $ sudo aptitude install build-essential もう一度configureをします。 $ ./configure –prefix=/usr/local/apache2 –with-mpm=worker –enable-module=so –enable-rewrite=shared –enable-ssl=shared –enable-dav=shared … no recognized SSL/TSL toolkit detected
  • [勉強会] 1000speakers4のまとめ

    聞く人で行ってきました。 会場 製図室みたいな雰囲気だった。仕事しやすそうです。 基調講演 デブサミのつくり方 岩切晃子さん 2003年から始まった。2002年から準備をしていた 祭りを10年続けたら、世の中が変わるのではないかという仮説があった 最終的な野望。世の中が変わること。 Developper->CTO、CIO Developper->ビジネスモデルを生む人 Developper->幸せシステムを作る人 長く続けることが本当に大切ですよね。ぜひうまくいってほしいです。 もし世の中が変わったら、志向的に私は2番目辺りにいそう(程度の差はあれ)。 jj1bdxさん - Learning Erlang - from a Prolog dropout’s perspective Erlangについて 今の環境で十分早く動く動く webサーバー ATM(Asynchronous Transfer Mode)のパケット交換 などで使われている(結構使われているのですね)。 cとはだいぶ違う IPv6 アドレスの文字列処理実演 プログラマはこれから並列処理を学ばなければならない。 →勉強します。 hogelogさん - Wannabe ProgrammerからReal Programmerにいたるまで ワナビープログラマ →プログラムを書きたいのに特に作りたいものがないのでその先に進まない人(hello world++) hello Worldとかは面白くないからもうやめたほうがいい。 自分で言語処理系を実装するしかない brainf*ck 1つのおおきな配列と、ポインタが1つ チューリング完全 ワナビーコミッタという人はいるのだろうかとふと思った。 kuzuhaさん - Flash Player 間で通信 オレオレ通信規約でFlash Player間で通信 IRCサーバを介す 質問で色々突っ込まれてしまいましたが、新たな発想でがんばってください。 issmさん - ニコニコ動画における「笑い」の可視化について淡々と めがねラボLLPのひと にこぐらふのしくみなど
  • [JavaScript] JavaScriptの勉強をかねた画像読み込みの続き

    以前画像の遅延読み込みにいて書いたのですが、最近javascriptをちゃんと勉強しようという気持ちになって、以前はオブジェクトだったものをクラス化したのでアウトプットしておきます。``` function LazyLoader() { this.initialize.apply(this, arguments); } LazyLoader.prototype = { altimg: ‘images/foo.png’, // サイズの小さい代替画像 initialize: function(id) { this.id = id; this.images = []; }, stopLoadingImages: function() { var filter = “#“+this.id+” img”; var base = this; $$(filter).each(function(img) { img.orgSrc = img.src; img.src = base.altimg base.images.push(img); }); }, loadImages: function() { this.images.each(function(image) { image.src = img.orgSrc }); } }; [domready.js](http://weblog.metareal.org/2007/07/10/domready-js-cross-browser-ondomcontentloaded/)を使ってDOMの読み込みを検知しているときは、 var loader = new LazyLoader(id); Event.domReady.add(loader.stopLoadingImages()); のように書きます。 前回のときは、遅延読み込みを行うDOMのid(というよび方でいいのか?)が固定だったのですが、今回はインスタンス生成時の引数で設定できるようにしてあります。 クラス化する際にjavascript初心者が躓いたところは、 var base = this; $$(filter).
  • [web] IPAのiLogScannerを使って脆弱性を検出してみた

    IPAがウェブサイトの脆弱性検出ツール iLogScannerというものをリリースしました。これは「ウェブサーバのアクセスログを解析して脆弱性検出を簡易に行うツール」と書いてあります。現在のところはSQLインジェクションと思われる攻撃の検出しかできないようですが、これから増えていくようです。今回はこのツールを使用して、自分が運営しているサイトについて診断しました。 iLogScannerのトップページへ行き概要を読みます。 解析対象のアクセスログ形式と動作環境は以下の通りでした。Javaの実行環境が必要なようです。ちなみに自分あはWinXP Professional SP2、IE6でやってみました。 アクセスログの形式 IIS5.0/6.0のW3C拡張ログファイルタイプ Apache HTTP Server1.3系/2.0系/2.2系のcommonタイプ 動作環境 OS Microsoft Windows XP Professional SP2 Webブラウザ Internet Explorer 7 JRE Sun Java Runtime Environment 5.0以上(JRE 5.0系を推奨) ※その他の環境でも動くようです(こちら)。 上記ページの中ほどに操作手順という項目があり、すぐしたの「次へ」ボタンを押すと、利用規約が出てくるので「規約に同意する」を押してアプリケーションのページへ行きます。 まず、アクセスログファイル入力画面が表示されるので、アクセスログの形式、ログファイル名、結果を出力するディレクトリを選びます。 今回はApacheのログファイルを使ったので以下のようになりました。 「解析開始」ボタンを押すと、以下のようなダイアログが表示されて解析が始まります。 解析が終了しました。 出力先ディレクトリで指定したディレクトリに拡張子がhtmlとlogの2つのファイルが作成されています。 htmlファイル(下図)には解析結果のレーポート概要が、logファイルには実際にSQLインジェクション攻撃をされたと思われるアクセスログが記録してありました。 分割されたいくつかのログについてやってみた結果、9件ほど攻撃された形跡があり、成功したと思われるものは0件でした。小規模のサイトで、だいたい一年くらいの運用です。 簡易ツールなのでこの結果に浮かれずにこれからも開発してゆきたいと思います。
  • [JavaScript] 画像の遅延読み込みメモ

    ※prototype.js 1.5.1を使っています。 ちょっと前の記事ですが、ウノウラボの記事を参考に画像の遅延読み込みを実装してみました。 ウノウラボ Unoh Labs: 画像の遅延読み込みから引用``` Foo = {}; Foo.images = []; Foo.stopLoadingImages = function() { $$("#foo img”).each(function(image) { image.orgSrc = image.src; image.src = “1x1.gif”; // 小さな画像に置き換え Foo.images.push(image); // 置き換えた要素をとっておく }); }; Foo.loadImages = function() { Foo.images.each(function(image) { image.src = image.orgSrc; // 元の値に戻す }); }; 記事によると、Foo.stopLoadingImagesを呼び出すタイミングとしては「**ページ全体のDOMツリーの読み込みが完了したタイミングがいいでしょう**」とあります。 おそらくjavascriptでDOMツリーの読み込みが完了したタイミングを判定すると思うのですが、困ったことに私はjavascriptが得意ではありませんのでどうすればいいのかわかりませんでした。 ネットで調べたところ、[domready.js](http://weblog.metareal.org/2007/07/10/domready-js-cross-browser-ondomcontentloaded/)というものがあり、これを使えばうまくできそうです。 使い方は簡単でした。DOMツリーの読み込みが完了したタイミングで実行したい関数を Event.domReady.add で登録するだけです。 Event.domReady.add(function() { … }); こんな感じの実装になりました。 Foo = {}; Foo.images = []; Foo.stopLoadingImages = function() { $$("#foo img”).each(function(image) { image.
  • [sitemap][xml] サイトマップ sitemap.xmlの生成方法についてまとめ

    サイトマップ sitemap.xmlについて調べたのでまとめてみました。 内容はgoogleのページを参考にしています ■ 概要 サイトマップを検索エンジンに送信することで、検索エンジンのクローラでサイトをより正確にクロールできるようになります。 サイトマップはリンクを辿れない動的ページや、新しくできた、リンクのないページに使うと効果的です。 サイトマップは検索エンジンが URLを検索するために補助的に使用するもので、サイトマップを指定してもウェブページが検索インデックスに必ず登録されるわけではなく、また、Googleでのページの掲載順位に影響を与えることもありません。 ■ サイトマップファイル仕様 詳しくはここ タグで始め、タグで閉じます。 個々のURLの情報を、タグ内に記述します。 タグ内にを含め、この中にURLを書きます。 以下に例を書きます。< ?xml version="1.0" encoding="UTF-8"?> http://www.example.com/ http://www.example.com/catalog ... これがサイトマップの最小単位となります。 タグ内のURLはhttpなどのプロトコルからはじめ、末尾にスラッシュをつけます。URLは2048文字以下で指定しなければなりません。また、のuelはエスケープ処理必須です(& → &)。 タグ内にはオプションで以下のタグを付け加えることが出来ます ・タグ ファイルの最終更新日です。 W3C Datetime(http://www.w3.org/TR/NOTE-datetime)形式で記述します。YYYY-MM-DD(2008-02-20) や YYYY-MM-DDThh:mm:ssTZD(2008-02-20T10:51:32+09:00)です。 ・タグ ページの更新頻度を指定します。検索エンジンはこの値を参考情報として使用するとあり、この値と異なる頻度でクロールする場合がるようです。always hourly daily weekly monthly yearly neveralwaysはアクセスするたびに内容が更新されるドキュメント、neverはアーカイブページのURLにそれぞれ使用します。 ・タグ サイト内の、他のURLと比較した優先度です。0.0から1.0まで値を指定できます。 これ、自サイト内の重要なページからクロールされるようにするためのもので、他の外部サイトとの比較のものではありません 上記オプションを含めた記述例です。< ?xml version="1.0" encoding="UTF-8"?> http://www.example.com/ 2005-01-01 monthly 0.8 http://www.example.com/catalog 2005-01-01 monthly 0.8 ... ■サイトマップでのURLのパス サイトマップに含められるURLは、現在のパス以下のものに限ります。たとえば、http://example.com/catalog/sitemap.xmlというサイトマップにはhttp://example.com/catalog/item?id=12345 http://example.com/catalog/campaign/ http://example.com/catalog/new/id/12345などはOKですが、``` http://example.com/order/item?id=12345 http://example.com/new * <sitemapindex>タグで始め、</sitemapindex>タグで閉じます。 * 個々のサイトマップの情報を<sitemap>タグで囲みます。 * <sitemap>タグ内に、サイトマップの場所を記述した<loc>タグを含めます。 * オプションで<lastmod>タグを含めることができます。内容はサイトマップインデックスファイルの最終更新日で、サイトマップファイルの同タグと同じ内容です。 上記をまとめた記述例です。``` < ?
  • [Google][API] Google Chart API お勉強

    遅ればせながら使ってみる。 グラフを使いたいなぁ、といろいろさがいていたらちょうどリリースされました。 そういえば、去年GDでグラフを書いていたときは大変だったな。