投稿

5月, 2011の投稿を表示しています

Domain名でAccessしたときにApacheの応答が異様に遅い

イメージ
社内のServerをReverse Proxyを使って外部に公開する設定をしたときに、Domain名でAccessすると異様に遅い。IP Addressの場合は全く問題なし。http://hoge.domain.com/

http://192.168.0.xxx/
の違いApacheの設定やServer側の名前解決など、いろいろ疑ってみたけど、よく分からない。Domainを指定すると、Apacheの応答が遅いので、Serverで何か処理しているのかな?と思いつつ(↓FirebugのTimeline)気付いた!FirefoxにProxyの設定をしてあって、Domainを指定すると日本のServer経由で参照してた・・・。orzこれに気付くまでに3時間。< Related Posts >ApacheにReverse Proxyを設定して社内の別Serverを外部に公開

ApacheにReverse Proxyを設定して社内の別Serverを外部に公開

前に調べた特定のDomainは社内の別Serverに転送するやり方。外部からは転送されていることは分からない。これをReverse Proxyというらしい。やりたい事は社内に複数のVirtual Machineが違う環境で存在していた場合にhttp://mydomain.com/app1 -> Virtual Machine1に転送
http://mydomain.com/app2 -> Virtual Machine2に転送という感じに振り分けたい。今回は既に80 Portを受け取るServerがいるので、そのApacheのConfig Fileに追記した。<VirtualHost *:80>
  ServerName stage.my.domain
  ProxyRequests Off  ProxyPass /app1 http://192.168.0.81/app1
  ProxyPassReverse /app1 http://192.168.0.81/app1  ProxyPass /app2 http://192.168.0.82/app2
  ProxyPassReverse /app2 http://192.168.0.82/app2
</VirtualHost>特定の人にしか見せたくない場合は、Basic認証をかける。前の記事を参考に。mod_proxy - Apache HTTP サーバ次回引越しのときには外部からのAccessを一元管理するServerを一台用意して、そこにDelegatePoundをInstallして振り分ける予定。Poundで作るロードバランサとSSLラッパ(1/4) - @IT< Related Posts >1つのGlobal IPでDomainごとに別のWeb ServerにRoutingしたい(調査編)

Google Tech Talksの講演動画には役に立つ情報がたくさん

イメージ
HTML5やnode.jsに関して調べているときにYouTubeにあるGoogle Tech Talksの動画に素晴らしい情報がたくさんあることに気付いた。.英語だけど。あとでじっくり見るためにMemo.Building a JavaScript-Based Game Engine for the Web Node.js: JavaScript on the Server Speed Up Your JavaScript Google検索しても見つかりづらいので、YouTubeに実装してほしい機能は音声からTextの抜き出し 動画からTextの抜き出し 近い将来実装されてそう。

[VMware Fusion]LinuxにVMware ToolsをInstallして時刻同期

はVMware ToolsをInstallしなくてもcron + ntpupdateで時刻同期すればいいと書いていたけど、SingaporeにHostごと持ってきたときに全てのGuest MachineのNTPの設定を変更しないといけないことに気づいたので、VMware Toolsで時刻同期することにした。Host環境: Mac OS X Server 10.6.7 + VMware Fusion 3.1.2Virtual Machine: CentOS5.5まずはVirtual Machine -> Install VMware ToolsからImageをMount. then Virtal MachineのConsoleで# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom/
# cp /mnt/cdrom/VMwareTools-8.4.5-332101.tar.gz ./
# tar xzvf VMwareTools-8.4.5-332101.tar.gz
# cd vmware-tools-distrib/
# ./vmware-install.pl全てDefaultで答えていけばOK. 自動起動も勝手に登録してくれる。確認# chkconfig --list
# /etc/rc.d/init.d/vmware-tools status
# date< Related Posts >【VMware Server】LinuxゲストマシンにVMware ToolsをインストールVMwareでLinuxの時間がずれるのをなんとかする(時刻同期)

MongoDBをyum経由でCentOSにInstall

node.jsの開発をするときにMongoDBを使おうとInstall、設定したときのMemo環境はCentOS5.5 64bitOfficial Siteにyum経由でInstallするやり方があるので、そちらを参考に。# yum install mongo-10gen-server今のVersionは1.8.1。起動Scriptが/etc/rc.d/init.d/mongodに出来るので、それを読めば何となく分かる。# less /etc/rc.d/init.d/mongod/etc/mongod.conf
/etc/sysconfig/mongod
から設定を読み込んで起動しているみたい。各項目はOfficial Siteのこの辺を読めば分かりそう。とりあえず起動してStartUpに登録しておく。
# /etc/rc.d/init.d/mongod start
# chkconfig --add mongod
# chkconfig mongod on< Related Posts >MongoDBの概要を調べる

MongoDBの概要を調べる

node.jsを使った開発をする際にDatabaseをどれにしようか迷ったときMemo.node.js関連でよく見かけるMongoDB(official site)。NoSQL(Not only SQL)のDocument-oriented databaseに属するみたい。詳しくは下記Siteを参考に。はじめに - Docs-Japanese - 10gen Confluence第3回 ドキュメント指向データベースと列指向データベース | Think ITドキュメント指向データベース「MongoDB」|サイバーエージェント 公式エンジニアブログ特徴としては、Dataの持ち方自体がJSONを元にしたBSONという形式 JavaScriptを使用してDBにAccessできるShellが用意されている(JavaScriptの関数をそのまま渡すことが可能) このためnode.jsとの相性が非常にいい 複数Serverを用いた負荷分散、Replicationが簡単 MySQLと比べて(ちょっとだけ?)高速 Transactionは使えない JavaScriptを知っていれば、Database, Server, Clientと一環したProgrammingが出来るので面白そう。最後にこんな記事も見つけた。NoSQLをRDBの代わりに使うと、どういう恐ろしいことが起こるか。PARTAKEの作者が語る - Publickey

初空手稽古 in Singapore

昨日はSingaporeに来て、初めての空手稽古。「稽古したいなぁー」とつぶやいていたら、「○○さんはここで稽古しているよ」と友人が教えてくれたので、さっそく連絡して行ってきた。The Japan Karate Association - Singapore BranchJapan Karate Association - Singapore Branch | Facebookfacebookのfan page.さっき検索したら、下記Blogがあったので日本の方はこちらに連絡した方がいいかも。シンガポール ☆ 空手久しぶりの稽古だったので、やっぱり体が思うように動かない。どんどん下手になっているし・・・。でもやっぱり空手は気持ちイイね!

[node.js]Express + ejs + Socket.ioを使ったSample Site

前まではnode.jsとSocket.ioをInstallしてSampleを動かしただけ。今度本格的なApplicationを開発しようとExpressというnode.js用開発FrameworkをInstallしてみた。参考にしたのは下記Site.Creating a basic site with node.js and Express | Shape Shedexpressでejsつかってログインしてみよう - すにぺっとnode.js + express + mongoDB + WebSocket などのリンクまとめ - 家族サービスの合間をぬって書く技術系のブログnpmを使ってサクっとInstallできる。# mkdir /opt/express_test
# cd /opt/express_testexpressが使うmoduleを先にInstallしておく
# npm install connect qs mime
# npm install express socket.io ejs
# ./node_modules/express/bin/express -t ejsapp.jsはdefaultで3000 portが設定されているので、任意に変更しておく。# node app.jsこれで、http://192.168.0.xxx:8080/にAccessすると表示されるはず。各Module一覧underscore.js
(github)(Document)便利関数の詰め合わせ。connect
(github)(Document)Pluginのように3rd party middlewareを動作させるためのFrameworkqs
Query StringをParseしてjson形式で返すmime
Multipurpose Internet Mail Extension. MIME Typeの一覧ejsjsp likeなtemplate engine.< Related Posts >node.js, socket.ioをInstallしてWebSocketを試す(Sample実行編)node.js, socket.ioをInstallして…

node.js, socket.ioをInstallしてWebSocketを試す(Sample実行編)

イメージ
前回node.jsとsocket.ioのInstallまで成功したので今回は実際にSampleを動かしてみる。Sample sourceは~/node_modules/socket.io/example/にある。この中にあるserver.jsは8080 portを使うように書かれているので、Firewallの設定を忘れずに行っておく。起動してみる。# cd ~/node_modules/socket.io/example/
# node server.jsこれでClientからhttp://192.168.0.xxx:8080/で接続すると次のような画面が起動するはず。複数のBrowserでAccessするとchatっぽくなっているのを確認できる。そのうちWordpressと連携したApplicationを開発したいと模索中。node.jsでhttp sessionを共有するsocket.ioのテストを書く< Related Posts >node.js, socket.ioをInstallしてWebSocketを試す(Install編)WebSocket, node.js, Socket.IOって何?

node.js, socket.ioをInstallしてWebSocketを試す(Install編)

前回でnode.jsって何?というのが大体分かったので、今度は実際にServerにInstallしてみた。環境: CentOS5.5node.jsのバージョン管理ソフトnvm (Node Version Manber)経由でインストールすることにした。基本はOfficial SiteのReadmeを見ながら。GitがInstallされていなければ、まずはDAG(RPMForge)を追加してyum経由でInstallできるようにする。詳しくは前の記事を参考に。# rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS//rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
# yum update
# yum install gitここからnvmのInstall# git clone git://github.com/creationix/nvm.git ~/.nvm
# . ~/.nvm/nvm.shこれで"nvm"が使えるようになっているはず。Loginしたときに常に使いたいので
# vi ~/.bashrc. ~/.nvm/nvm.shを追記して保存。node.jsの最新版をInstall。最新版はOfficial SiteでCheck。# yum install gcc-c++ openssl-devel
# nvm install v0.4.7Now using node v0.4.7
/usr/bin/which: no npm in (/root/.nvm/v0.4.7/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
Installing npm...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed…

WebSocket, node.js, Socket.IOって何?

HTML5とWebSocketを調査していて辿り着いた「node.js」。何これ?と思ってGoogle先生に聞きまくってたときのMemo.WebSocket
(wikipedia)HTTPと同じような通信規格(Protocol)の一つ。非常に高速。ServerからPush配信できる。前はHTML5の仕様の一部だったらしい。node.js
(公式Site)
(Wikipedia)Server Side JavaScript Engine Framework. 高速。全てのI/Oが非同期に処理され、ブロックされることがない。このためWebSocketとの相性がいい。
このスライドが分かりやすい。socket.io
(公式Site)node.js上でWebSocketを使うためのLibrary. Server側とClient側両方のJavaScript Libraryを提供してくれる。WebSocketに対応していない端末でも通信できるようになっているらしい。npm
(公式Site)node.js用のPackage Manager. socket.ioを使いたい場合はnpm経由の方が管理が楽。nvm
(Readme)Node Version Manager. node.js自体のVersion管理をしてくれる。これを使ってnodeをInstallしておくと後が楽。
同様の機能でnaveというのもあるらしい。大枠は理解できたので、次は実際にnode.jsのinstallからsampleの起動まで行う予定。< 2011/0519 Modified >
面白い記事があったのでLinknode.jsは普及しそうに無い: ニュースの社会科学的な裏側Node.jsについてのよくある誤解 - 自分の感受性くらい< Related Posts >HTML5とWebSocketについて調査、勉強(関連Link集)

HTML5とWebSocketについて調査、勉強(関連Link集)

役に立ったSiteのMemo. < HTML5 >HTMLの大幅な改訂版。HTML4までは「文書」の作成が主な目的。HTML5では「Application」も作成できる機能が加わる。詳しくはwikipedia.Google Developers | HTML5ROCKS was a google projectHTML5.JPHTML5ベースのWordPressのテーマファイルのまとめHTML5+Canvasタグによるアニメーションユーティリティ「gury」Chrome Experiments
< WebSocket >XMLHttpRequest(XHR)の欠点を解決する手段として開発。ServerからClientにPushできる。iPhone, iPadのSafariでも動作可能。詳しくはwikipedia.最近のWebSocket事情についてまとめとく@IT 第1回 node.jsの衝撃とWebSocketが拓く未来
HTML5(canvas) + CSS3 + WebSocketでiPhone, iPadでも動作するApplicationを作ってみたい。
< 2017/10/12 Modified >
指摘を受けてリンク修正

Ajax通信しても固定URLを持たせてGoogle Analyticsに記録したい

Ajaxを利用してPage全体をReloadしない仕組みにしたけど、下記の要望に対応したMemo。環境はWordpress 3.1.2詳細記事にBookmarkしたい。 Google Analyticsでアクセス解析したい。 詳細記事にBookmarkこれを実現するために非同期で詳細情報を取得して描画した後に、URLを変更しないといけない。location.hashを使うのが一般的みたい。検索してみるとjQuery HistoryHashListenerというLibraryを使えば簡単に設定できそう。ただ#以降のURLはServer(PHP)側で取得できないので、実際そのURLを指定したら、onLoadのEventを使って(Client側で)記事を検索、表示させてあげないといけない。Server側で処理をしたい場合はQuery Stringに埋め込む。これを受け取ったあとの処理は前に導入したqTranslateというWordpress Pluginを参考にするとできそう。Google Analyticsでアクセス解析したいlocation.hashにsetする時に_gaq.push(['_trackPageview', '/home/landingPage']);を発行すればいいみたい。詳細はGoogle Codeで。< Related Posts >Wordpressで多言語対応。「qTranslate」pluginを導入

1つのGlobal IPでDomainごとに別のWeb ServerにRoutingしたい(調査編)

1つのGlobal IP Addressしかないのだけれど、社内LANにある複数のServerを外部に公開したくて調査したMemo。そういった機能はReverse Proxy(リバース プロキシ)というらしい。@IT【リバース・プロキシ/リバース・プロクシ】実現するにはApacheだけでも出来るらしい。他にもWikipediaにいくつか紹介されている。そのうち社内に導入する予定。< Related Posts >一つのIPアドレスで複数のWebサイトを運営するapacheの設定

Marina Bay SandsでCasino(カジノ)をやってみた

Casino好きの知人が日本から来ているので、Marina Bay SandsのCasinoを体験してみた。実はその知人は先週からSingaporeに来ていて、連れて行ってもらうのは今回が二回目。前回はSlot Machineをやって、S$300(2万円)負けた。このうちS$100は自腹で、残り200はS$100を取られて呆然としていたら知人(←とてもお金持ち)が提供してくれた。今回挑戦したのはRoulette(ルーレット)。テーブルを囲むと思いきや、一人一台使うTouch PanelのDisplayが置いてあって、それにTapしてBetする。最初は知人の横に座って、どんな感じか見学。一時間ぐらい出る目の傾向を調査して、いざ挑戦。今回の資金はS$50。最低S$10からなので、最悪5回外れればGame Over。結果。。。S$160になった。前回の自腹分を取り返せて満足。Slotよりも長く遊べるので初心者向けかな?最初は論理的に出る目の傾向を掴もうとしていたけど、やっているうちにどうでもよくなる。最終的には「勘(運)」。今回は勝ったけど、一人で行こうとは思わない。ちなみに中はFree Drinkなので買い物に疲れたら、Drinkだけ飲んで出てくるのもあり(?)。

Singaporeの固定電話から日本の固定電話にかける

Singapore(会社)の固定電話から日本の固定電話にかけたときのMemo.(外線)-(国際識別番号)-(国番号)-(先頭の0をとった日本の電話番号)9-001-81-xx-xxx-xxxxを使うみたい。

Windows7のCommand

Windows7のCommand覚え書き。説明CommandSendTo(送る)Folderを表示shell:sendtoStarupのApplicationを停止、管理msconfig見つけたら追記予定。

Wordpressで多言語対応。「qTranslate」pluginを導入

Wordpressを使って多言語対応のSiteを作ったときのMemo. 環境はWordpress 3.1.1すでにいくつか多言語化するpluginが公開されている。今回は人気もあり入力がしやすそうな「qTranslate」を選んだ。導入するのは他のpluginと同様にplugins directoryにおいてactivateする。設定画面を開くとCould not write to "/opt/hoge/wp-includes/languages", Gettext Databases could not be downloaded!とerrorが出るので、wp-content/languagesを作ってapacheが書き込み出来るようにする。# cd /opt/hoge/wp-content/
# mkdir languages
# chmod 777 languages日本語の設定を開くとlocaleが「ja」になっていて、文字化けの元になるらしいので、これは「ja_JP」に変更する。他は適当に。基本はこれで完了。記事を投稿するときに別言語で登録できるようになっているはず。次はThemeの多言語化。これはWordpressの基本機能を使う。Twentytenを元にしているなら、function.phpでload_theme_textdomain( 'twentyten', TEMPLATEPATH . '/languages' );と指定しているので、twentyten/languages/jp_JP.moを置くと自動で読み込んでくれる。mo fileの名前は管理画面で設定した「locale」。(qTranslateがadd_filter('locale', 'qtrans_localeForCurrentLanguage',99)してるから。)ちなみにmoファイルを作成するには、Poeditを使うと簡単に生成できる。詳しくは下記Blogを参考に。Poedit 取扱説明書

[xyzzy]DefaultのClipboard-EncodingをUTF8nに設定

最近はVitenam(ベトナム)とかThailand(タイ)の言語も扱うので、xyzzyの「クリップボードエンコーディング」の初期値がsjisになっているのを変更。.xyzzyに下記を記述(setq-default *clipboard-char-encoding* *encoding-utf8n*)< Related Posts >【xyzzy】デフォルトの文字コードと改行コードを指定する