投稿

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

Power Mac G5にUbuntu Server 10.4をInstall

イメージ
開発用のServerが足りなくなったので、社内に余ってたPower Mac G5にUbuntuをInstallしたときのMemo.(結局10.10はserver版がなかったので、途中の経緯は読み飛ばしてもOK)UbuntuのInstall ISOはhttp://releases.ubuntu.com/から。< 2011/10/26 Modified >
PowerPC用のUbuntu Install Imageは下記SiteにLink集があった
https://wiki.ubuntu.com/PowerPCDownloadsMac用Ubuntu 10.10のInstall Imagesはhttp://cdimage.ubuntu.com/ports/releases/10.10/release/
から
ubuntu-10.10-alternate-powerpc.iso
をDownload。最新版が欲しい場合は上の階層にいけば見つかる。DownloadしてCDに焼いたあとはInstall作業。(一度立ち上げて)CDを挿入したあとは、Shutdown → cを押しながら起動 → promptが表示されるので「install」と入力。あとは画面の指示に従っていけばいい。ちなみにあとでPartitionを自由に変更したかったので、LVMを指定してInstallした。install完了後起動すると、Fatal Errorが出力されるけれど、一応Login出来る(解像度が高いDisplayでないと表示出来ないので注意)。Installで問題が起きるとKeyboardのCD Eject Keyさえ効かなくなるので、下記siteを参考に、CD または DVD を取り出せない、またはドライブトレイが開かない場合起動 → Control + Mac key + O + F → promptに「eject cd」と入力 → 「shut-sown」でre-install。InstallするSoftwareは最小限にしたいので、今度はbootのpromptで「expert video=ofonly」と入力。細かい設定をしながらinstallしてみた。・・・けど同じSoftwareは選択できず。大人しく10.4で用意されているserver install…

Adobe PhotoshopでButtonを作るTutorial

Designに関してはjQuery UIを使うことで逃げていたけど、最近はAdobeのPhotoshop, Illustrator, Fireworksを使う機会が多くなった。Designerが作ったのを分解してWebに落としこむなど。Buttonぐらいは自分で作れるようになろうと調べたMemoPhotoShopで美しいボタンを作るチュートリアル39個:phpspot開発日誌< Related Posts >[Design]Free PSD Graphic Sample集

Google AnalyticsでFacebook LikeとTwitterをTrackingする

下記記事(英語)を読んで"Social PluginのTrackingがGoogle Analyticsを使って出来るぜ"ということなので実際Bloggerでscriptを設置してみた。Google Analytics Blog: +1 reporting in Google Webmaster Tools and Google AnalyticsMashable: Google Analytics & Webmaster Tools Now Track the Impact of Tweets, Likes and +1sBloggerの場合はDashboard -> Design. Html/JavaScriptのWidgetを追加。Google CodeのGoogle AnalyticsにあるSample CodeからSourceを<script>を付けて保存すれば完了。< 2011/10/18 Modified >
最後に下記Scriptを追記するのを忘れずに。<script type="text/javascript">
  _ga.trackSocial();
</script>

初空手試合 in Singapore

イメージ
この前の日曜はSingaporeで初めての空手試合。今通っている道場(JKA)の先生繋がりで出場することになったらしい。この大会はKUS(Karate Union of Singapore). この辺の団体事情はよく分からない。糸東流、松濤館、剛柔流の選手を見かけた。形は苦手なので組手だけ。組手はWKF(世界空手道連盟)のと同じ(?)。概要は拳サポ+足サポ+マウスピース+(金サポ) 1試合3分 8ポイント差がついたら(3分待たずに)勝ち 上段蹴り=3ポイント、中段蹴り=2ポイント、突き=1ポイント 足サポを付けるのは初めてだったので、最初はしゃいでいたけど、他の試合を見ながら待っている間に思った・・・( ゚Д゚) 追い突きしよ・・・そしてこれが試合 最初の追い突きがダメすぎる。他の追い突きは許せる。ただ確かに当てすぎ。ポイント制の試合って分かっているので、もっとControlすべき。流派が違っても、相手が誰であっても、体格が桁違いの相手であっても、誰もが納得できる「追い突き」で技ありを取るのが夢(目標)。まだまだ修行が足らない。< Related Posts >Singaporeでマウスピース(Mouse Guard)を買う(作り方)初空手稽古 in Singapore

Singaporeでマウスピース(Mouse Guard)を買う(作り方)

空手の試合で必要になったので、周りの人に聞いてマウスピースを買ったときのMemo.買った場所はCity HallのMRTから降りて、地下を通って抜けたところのMarina Square. 店の名前はLiang Seng Sports(Google Map)(HomePage)City Hallから行くと、Marina Squareに入って、3階まで行って真っ直ぐ進むと吹き抜けのEventをやっている会場の上に出るので、そこを左の方に曲がるとすぐ見える。場所の番号は#03-346.Mouse Guardの種類は3種類だけだったので、Senior用のSingleを購入。S$7ぐらい。安すぎ・・・。作ったことがある人なら分かると思うけど、以下作り方の手順沸騰したお湯に30秒浸ける(柔らかくなる) 普通の水に1秒浸ける 口に入れて軽く噛む(歯型が出来る感覚が分かる) 1分ぐらい噛んだら、また水に戻して冷やす(固める) 奥歯の歯型がない部分はハサミで切る 何回か口に入れて確かめながらハサミで整形する 奥の方を緩やかなカットにしておくと入れやすいし、気持ち悪くならない。 下記Siteも参考に。マウスピースの作り方安いし、噛みあわせも変わってくるので、1年ぐらいで買い換えるつもりでいいと思う。

日本の2輪免許証をSingaporeで切替(調査編)

日本でHornet250を乗っていたけど、SingaporeでBikeに乗るためにはどうすればいいか聞いたのでMemo.日本で2輪の免許を持っていれば、Paper Testを受けるだけで切替できるらしい。ちなみにTestは英語。基本は日本の交通Ruleと同じだけど、標識、白線の数と意味あたりは勉強しないとダメらしい。このPaper Test(Theory Test)はInternetでBooking(予約)する。本番の前にS$10ぐらいで練習できるので難しくはないらしい。Singapore Safety Driving Center (SSDC)Bukit Batok Driving Centre(こっちの方が今住んでいるところから近い)Singaporeに山とかないので、Malaysiaまで行けば結構楽しいらしい。あれ?Malaysiaで乗るためにはMalaysiaでも免許更新しないといけないのかな?
→ 必要ないらしい。MalaysiaをBikeで旅するのも楽しそう!!

[PHP]お問い合わせFormでMailを送信するLibrary

HTMLで作ったFormからEmailを送信するのを作ってほしいと頼まれたときのMemo.まずはServer上のPHP versionとMailが送信できるか確認。Emailを送信するSample<?php
$to      = 'hoge@hoge.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: noreply@hoge.com';mail($to, $subject, $message, $headers);
//mail($to, $subject, $message);
?>Mailを送信するPHP Libraryはたくさんあるけど、Wordpressでも使っているPHPMailerを使うことにした。Wordpressでは
wp-includes/class-phpmailer.php
wp-includes/pluggable.phpのwp_mail
を読めば参考になる。単純な使い方は下記のような感じ。使ったのはPHPMailer Lite v5.1define('MAIL_TO', 'hoge@hoge.com');
define('MAIL_FROM', 'noreply@hoge.com');
//error_reporting(E_ALL);
if ($_POST && strpos($_SERVER['HTTP_REFERER'], 'hoge.com')) {
    require_once('./PHPMailer-Lite/class.phpmailer-lite.php');
    $mail = new PHPMailerLite();
    $mail->IsMail(); // telling the class to use native PHP mail()

    $mail-&…

Google Desktopを止めてThunderbirdに戻った

Dual Displayの環境だとGoogle Desktopと他のWindowが重なった部分がチカチカするので(私だけ?)、ThunderbirdがVer5になったのを機に移行してみた。< 2011/08/17 Modified >
Windows7のDesktop Themeを有効にしたらチカチカしなくなった。移行するものGoogle Calendar(予定の確認と追加) Gmail(独自Domain = Google Apps) Thunderbirdで追加するPluginLightningProvider for Google CalendarGmailはIMAPを設定すればサクっと終了。Gmailヘルプの推奨されるIMAPクライアントの設定も参考に。Google Tasksとも同期して欲しかったけど、まだ出来ないみたい。< Related Posts >Windows Live MailからThunderbirdに乗り換えたGmailとGoogle デスクトップで脱メーラー。メール通知アプリThunderbird + Lightningでスケジュール管理

相対Pathで別swfを読み込むと失敗することがあるので現在のURLを取得する

相対Pathで指定すると現在(object, embed tagが貼りつけてある)htmlが表示されているURLからのPathになる。swfの置き場所がどこになるのか分からないので、Mainのswfが置いてあるURLを取得する方法を調査。Action Script 3.0次のような感じ。var current_url = root.loaderInfo.loaderURL;
this._swf_url = current_url.substr(0, current_url.lastIndexOf("/"));this._pageLoader.load(new URLRequest(this._swf_url + "/hoge.swf"));< Related Posts >FirefoxのFlashFirebugでFlash内のTraceを表示するAS3からAS2の外部swfを読みこんでEventを取得したい初めてのFlash。お役立ちLink集

cssで@importを使うと読み込みが遅くなる

イメージ
今まで当たり前のように複数のCSSファイルを一つのCSSから@importを使って読み込むようにしていた。その方が管理し易いし、長くなったCSSを分割したり、追加したりするときもCSSだけで完結する。でも、この方法はPerformanceが落ちるらしい。[css] @importを使うべきでない理由 | Screw-Axis「遅くなると言っても無視できるLevelじゃないの?」と思い、実際に今開発中のwordpressで試してみた。それがこれになった。この開発用のServerはReverse Proxyを使っているので、別の環境でやればここまで差が出るとは思わないけど、ここまで違うのはちょっと驚き。< Related Post >ApacheにReverse Proxyを設定して社内の別Serverを外部に公開

[Wordpress]Global変数を汚さずにWP_Queryを使って記事を取得

表示している記事とは別に、他の条件を指定して記事を取得したいときがある。Sidebarに閲覧数のRankingを表示させるとか。get_postsquery_postsが便利だけど、これらはGlobalな$wp_queryを使うので、WP_QueryをInstance化する方法がOfficial Documentでも記載されている。この方法の注意点は、独自のparameterを追加して、add_filter('posts_where', hoge())する際に引数を指定しないと実行中のquery Objectを取得できない。詳細はadd_filterのOfficial Document(英語)で。以下はCustom Fieldにviewsというkeyがあるのだけ絞り込むsample// Create a new instance
$second_query = new WP_Query( 'view_ranking=true' );// The Loop
while( $second_query->have_posts() ) : $second_query->the_post();
    echo '<li>';
    the_title();
    echo '</li>';
endwhile;//loop中に使用した$postを$wp_queryからsetし直す
wp_reset_postdata();//この関数とadd_filterはthemeのfunctions.phpとかに追記しておく
function hook_posts_where($where, $query) {
    global $wpdb;
    $ranking_count = $query->get('view_ranking');
    if (!empty($ranking_count)) {
        $sql = array();
        $sql[] = "SELECT…

Facebook APIのOAuthで認証する

Facebook Developers Authenticationの項に書いてあるので、それを読めば間違いない。Facebookにlogin ここからWebsiteを登録する。 登録後、My Apps(Developer Dashboard)に登録されたSiteが表示されているはず。 fbAsyncInitを使った方が非同期で読み込むので、他の処理が邪魔されずに済むらしい。こちら。LoginしたUser Nameをalertする場合は下記のようになる。window.fbAsyncInit = function() {
    FB.Event.subscribe('auth.login', function(response) {
        var query = FB.Data.query('select name, uid from user where uid={0}', response.session.uid);
        query.wait(function(rows) {
            alert('Your name is ' + rows[0].name);
        });
    });
    FB.init({appId: '<%= app.set('fb_appid')%>', status: true, cookie: true,
      xfbml: true});
};
(function() {
    var e = document.createElement('script');
    e.type = 'text/javascript';
    e.src = document.location.protocol +
      '//connect.facebook.net/en_US/all.js';
    e.async = true;
    do…

MySQL4.1の環境をXampp for Linuxを使って別Port(3つ目)で構築

はSourceからCompileしようとしたけど、既存のMySQLに影響が出たので、Xampp for Linux(Lampp)を使って構築するようにした。環境はCentOS 5.6 32bitちなみに既にmysqld, lamppがInstallされているので、このServerにとっては3つ目のMySQL.今はSingaporeに来たばかりで今のNetwork環境で何とかやりくりしているけど、次回引越しするときはServer, Network環境を設計し直してやると思いながら・・・。MySQL 4.1はXampp for Linux 1.4.16までなので、こちらからDownload.解凍
# tar xzvf xampp-linux-1.4.16.tar.gz
# mv lampp /opt/lampp14今回はMySQLだけ利用したいので他は起動させない。
# cd /opt
# lampp14/etc/my.cnf[client]
port            = 3309
socket          = /opt/lampp14/var/mysql/mysql.sock[mysqld]
port            = 3309
socket          = /opt/lampp14/var/mysql/mysql.sock
tmpdir          = /tmp/mysql41/# mkdir /tmp/mysql41
# chmod 777 /tmp/mysql41# cp /opt/lampp14/lampp /etc/rc.d/init.d/lampp14
# vi /etc/rc.d/init.d/lampp14/opt/lampp/を/opt/lampp14/に一括で変換3306を3309に。でも思うように動いてくれない・・・。いろいろ調べてみるとSource Code自体に/opt/lampp/の文字が入っているので、compileからやらないとダメみたい・・・。< Related Posts >Xampp for Linuxを別Portで起動する設定Xampp For Linux(Lampp)でサーバ構築と設定

CentOSにMySQL4.1をInstallして複数起動(失敗編)

お客様の環境に合わせて、MySQL4.1の環境が欲しかったので、SourceからCompileして、既存のMySQLと競合しないように別Portで起動させたときのMemo. (途中で諦めたんだけど・・・)環境はCentOS 5.6 32bit必要なToolsをInstallしておく
# yum install gcc gcc-c++ libtermcap-develSourceのDownloadはこちらから。# cd /opt/software
# unzip openlogic-mysql-4.1.22-all-src-1.zip
# cd mysql-4.1.22-src/compile optionを確認する
# ./configure --helpInstall prefixを変更してcompile
#  ./configure --prefix=/usr/local/mysql41
# makecompileの途中で
error: redeclaration of C++ built-in type
のようなErrorで怒られたら、(検索して解決したあとに)
# make clean
# make distclean
して再compile.# make installinstallが完了したら、下記Official Documentに従って初期化を行う。MySQL :: MySQL 4.1 リファレンスマニュアル :: 2.4 インストール後の設定とテスト# ./scripts/mysql_install_db
# cd /usr/local/mysql41
# bin/mysqld_safe --user=mysql &ここで、
A mysqld process already exists
と怒られたので、mysql_install_dbの出力messageに従うことにした。# cp support-files/mysql.server /etc/rc.d/init.d/mysql41
# chmod 755 /etc/rc.d/init.d/mysql41あとはこの起動Scriptを読んで、必要そうなのを準備
# mkdir…

[CentOS]VPSにswap領域を追加したくて調査(結論:出来ない)

借りていたVPSにはdefaultでswap領域が割り当てられていない。yum updateしようとしたら下記Errorになるので、手動でswap領域を追加できるか調査memory alloc (24 bytes) returned NULL環境はCentOS 5.6 64bitちなみにUSONYXという日本のクララオンラインが海外展開しているVPS Serviceを利用。< 2011/12/27 Modified >
USONYXのVPSは、いろんなcronとServiceが設定されているので使いづらい。Maintenanceで普通に再起動されるので、VPSの意味がない。今の状態ではオススメ出来ない。swap領域を拡張するためにはfdiskを使って、diskに新規partitionを作成しなければならない。dfで確認してみると、物理(仮想)diskがmountされているだけで、
# fdisk /dev/simfs
とかやってみても開くことができない。つまり、VPS上でSwap領域を作成することはできない。Memoryを使い切ると、本当にProgramが途中で止まるので、余裕のある運用をしないとダメみたい。< Related Posts >【CentOS】LVMでディスク容量を拡張(VMwareのHDD容量を増やす)

JavaScriptをconsole.logでDebugする

最近知ったconsole.logとconsole.debug関数これを使うとFirebugやGoogle ChromeのDeveloper Toolsのconsoleにobjectや配列の中身を出力できる。詳しくは下記siteで。Firebug の強力な JavaScript デバッグ機能 - Google AJAX Search API - Google CodeIEではsupportされないので、あくまでdebug用として使うか、Google先生に聞くと拡張した便利関数が見つかる。昔はalertだけでdebugしていたのが懐かしい。

jquery-scroll-followがjQuery 1.6で動かない

このblogでも詳細記事で使っているjquery.scrollfollow.js(配布元)がerrorを吐くようになっていたので調べてみた。原因はjQuery 1.6だと動かないみたい。ここを参考に修正。var parentHeight = parseInt( box.cont.attr( 'offsetHeight' ) );
var boxHeight = parseInt( box.attr( 'offsetHeight' ) + ( parseInt( box.css( 'marginTop' ) ) || 0 ) + ( parseInt( box.css( 'marginBottom' ) ) || 0 ) );
これを次のように変更。var parentHeight = parseInt(box.cont.css('padding-top')) + parseInt(box.cont.css('height'));
var boxHeight = parseInt( (parseInt(box.css('padding-top')) + parseInt(box.css('height'))) + ( parseInt( box.css( 'marginTop' ) ) || 0 ) + ( parseInt( box.css( 'marginBottom' ) ) || 0 ) ); Google CDNを使って最新のVersionを取得しないようにしたほうがいいかもね。< Related Posts >Bloggerの記事にFacebook, Twitterのshare linkを表示[jQuery]Scrollしても位置を固定のままにしてくれるPlugin

jQueryからMooToolsへ乗り換えようかと調べてみた

jQueryでclassの継承とかを実装するときに、なんか直感的じゃないなと調べていたら、MooToolsというJavaScript Frameworkなら簡単に実現できるみたい。jQuery vs MooTools(和訳)原文)なんかよさげ。でも今後も継続的にMaintenanceされるか 社内で自分だけ「MooToolsの方がいいんです!」と言っても・・・。社内で使うLibraryは統一していきたい。 jQuery UI, jQuery Mobileは使いたい と考えると、やっぱりjQueryのやり方に慣れた方がいいのか?jQueryのpluginで
HJS - JQUERY OBJECT ORIENTED CLASS
を使うと、ある程度Object指向っぽい書き方ができる。ちなみにMooToolsにはserver-side versionもあるので、node.jsの開発をしている身としてはすごく惹かれる。

node.js用の開発Document, Coding Guide(コーディング規約) #nodejs_jp

[node.js]sourceを修正して再Compile

イメージ
前の記事でも悩まされていた下記Error. Browserを立ち上げて最初にAccessしたときになるみたい。events.js:45
        throw arguments[1]; // Unhandled 'error' event
                       ^
Error: EBADF, Bad file descriptor環境はCentOS 5.6 64bit, node.js v0.4.8, Express v0.7.7, socket.io v0.6.18Google Chrome + Inspectorを使ってDebugするとErrorになった箇所をみることができる。InspectorのInstallの仕方は前の記事を参考に。Inspectorの機能でTraceすると、fs.jsの
ReadStream.prototype.destroy.close
を実行するときにErrorになっているみたい。fs.jsやevents.jsはcompileして組み込まれているみたいなので、これを回避するためにsourceを修正して再Compileしてみた。すでにnvmがinstallされている前提Errorになっていた箇所を分岐して回避
# cd ./.nvm/src/node-v0.4.8
# make clean
# make distclean
# vi lib/fs.jsif (cb) cb(err);
if (err.code != 'EBADF') {
  self.emit('error', err);
)
return;これでRebuild. そのままmakeしても出来たかもしれない。# cd ..
# rm -f node-v0.4.8.tar.gz
# tar czvf node-v0.4.8.tar.gz node-v0.4.8/
# rm -rf node-v0.4.8
# cd ..
# rm -rf v0.4.8
# cp v0.4.5 v0.4.8
# cd
# nvm in…

ApacheのReverse Proxyで502 Proxy Errorが出力される

node.js + socket.io(websocket)を使った開発をしていて、たまに下記Errorが出力される。GET http://dev.hoge.com/socket.io/xhr-polling/5791412864346057/1307368752522 502 (Proxy Error)(結果だけ知りたい人はこの記事の一番下へ。)Google先生に聞いてみると、apacheのversionを上げると直るという情報がHit。下記記事を参考にyum経由で上げようとしてみた。今の環境はCentOS 5.6 + apache 2.2.3hoge001 : CentOS5.5 Apache 2.2.15 インストールYum Repository Setup Instructions | Utter Ramblings# vi /etc/yum.repos.d/utter.repo[utter]
name=Jason's Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=0
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka# yum --enablerepo=utter install httpdでも、already installedと言われた。なんか依存関係でInstallできないのかな?wingも駄目だった。「どーしたもんかなー」と調べ直してみたら、下記の情報がhit。502 HTTP Errors being thrown by our Reverse-Proxy server : Apache, Http Server, 2.2.8apacheのconfに下記のようにproxy-nokeepaliveを追記してみたら、あっさり直った。<Proxy *>
        SetEnv force-proxy-request-1.0 1 
        SetEnv proxy-nokeepalive 1
</Proxy&g…