投稿

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/PowerPCDownloads Mac用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してみた。 ・

Adobe PhotoshopでButtonを作るTutorial

Designに関しては jQuery UI を使うことで逃げていたけど、最近はAdobeのPhotoshop, Illustrator, Fireworksを使う機会が多くなった。 Designerが作ったのを分解してWebに落としこむなど。 Buttonぐらいは自分で作れるようになろうと調べたMemo PhotoShopで美しいボタンを作るチュートリアル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 Analytics Mashable: Google Analytics & Webmaster Tools Now Track the Impact of Tweets, Likes and +1s Bloggerの場合は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.1 define('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 nat

Google Desktopを止めてThunderbirdに戻った

Dual Displayの環境だとGoogle Desktopと他のWindowが重なった部分がチカチカするので(私だけ?)、ThunderbirdがVer5になったのを機に移行してみた。 < 2011/08/17 Modified > Windows7のDesktop Themeを有効にしたらチカチカしなくなった。 移行するもの Google Calendar(予定の確認と追加) Gmail(独自Domain = Google Apps) Thunderbirdで追加するPlugin Lightning Provider for Google Calendar Gmailは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_posts や query_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();

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';  

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 >

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

お客様の環境に合わせて、MySQL4.1の環境が欲しかったので、SourceからCompileして、既存のMySQLと競合しないように別Portで起動させたときのMemo. (途中で諦めたんだけど・・・) 環境はCentOS 5.6 32bit 必要なToolsをInstallしておく # yum install gcc gcc-c++ libtermcap-devel SourceのDownloadは こちら から。 # cd /opt/software # unzip openlogic-mysql-4.1.22-all-src-1.zip # cd mysql-4.1.22-src/ compile optionを確認する # ./configure --help Install prefixを変更してcompile #  ./configure --prefix=/usr/local/mysql41 # make compileの途中で error: redeclaration of C++ built-in type のようなErrorで怒られたら、(検索して解決したあとに) # make clean # make distclean して再compile. # make install installが完了したら、下記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/mysql

[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 Code IEでは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

自分用のLink集 < node.js(JavaScript)関連 > Node.js Style Guide in Felix's Node.js Guide Node.js Manual & Documentation Node.js 日本ユーザグループ   Google JavaScript Style Guide ( 日本語版 ) PHP関数をJavaScriptで書いたSample集(php.js) Underscore.jsのOfficial Document ExpressのOfficial Document Expressを使ったSample集 ejsのProject Home(Google Code) 。 ejsの使い方やDocumentへのlinkがある   同じことをやっていた人を見つけたので、こちらも参考に。 node.js + express + mongoDB + WebSocket などのリンクまとめ - 家族サービスの合間をぬって書く技術系のブログ 最近はWordPressやFlashの開発を行ったり来たりしていたので、頭を切り替えるのが大変。   < Related Post > [node.js]MVCな開発がしたくて「express-mvc-bootstrap」をInstallしてみた [node.js]Express + ejs + Socket.ioを使ったSample Site WebSocket, node.js, Socket.IOって何? Wordpress 開発リファレンスのリンク集

[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.18 Google 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.js if (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

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.3 hoge001 : 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.8 apacheのconfに下記のようにproxy-nokeepaliveを追記してみたら、あっさり直った。 <Proxy *>         SetEnv force-proxy-