2011年12月29日木曜日

"ハッカーと画家(Hackers and Painters)"を読んだ

Hachers_and_Painters会社の人に勧められて読んだ本。

こういった本を読むのは精神的にもいいと思う。閉じた世界の窓を開けて空気の入れ替えをする感じ。

思ったことを箇条書き。まとまってないけどね。

  • 「日本人は最初から完璧な物を作ろうとするから、欧米人のように作りながら新たなIdeaを生み出すような考え方のほうがSoftwareを創りだすには適している。」
    → これを読んでGoogle Chrome Extension "History Plus"をとりあえずReleaseした。
  • 「大企業は委員会で設計し、ハッカーはただそれを実装するだけ。」
  • 「ソフトウェアはデザインを知っているハッカーによってデザインされるべき」
  • EmacsとXyzzy関連でLISPを噛ったけど、もう少し勉強してみようかな。

 

< Related Posts >

2011年12月22日木曜日

iPad向け電子書籍AppをAdobe InDesign + Digital Publishing Suiteで作成するためのまとめ

adobe_indesign dps_ipad1年前に調査したときはβ版だったのが、Adobe InDesignからiPad App, Android Appが作成できるようになっていたので、詳細を調査。

 


1. Adobe InDesign単体ではEPUB形式のみ対応

InDesign単体ではEPUB形式に書き出せる機能がある。しかし、iPad Appを生成してくれるわけではない。iPad Appを生成するには別途Digital Publishing SuiteというServiceを利用する必要がある。

EPUB形式は電子書籍の規格の一つ。読むためには別途電子書籍Reader(iPadやiPhoneはiBooksが標準でInstallされている)が必要。簡単にいうと、HTML5とCSS3がzip圧縮されている。

 


2. Adobe Digital Publishing Suite (ADPS) とは

Adobe InDesignから.folio形式に書き出し → AdobeのServerにUpload → iPad, Android向けにCompileされた状態でDownload
を提供してくれるService. 2011年9月から販売開始。詳しくはOfficial Siteで。

Sample AppがiTunes App StoreからDownload出来るので、これを読むと何が出来るのかが分かる。

[ Index ]

  1. ADOBE DIGITAL PUBLISHING SUITEの概要
  2. はじめに - 制作するにあたっての準備
  3. インタラクティブコンテンツの制作 [ サンプル ]
  4. インタラクティブコンテンツの制作 [ 作り方 ]
  5. Folio Producer Service
  6. データのアップロードと管理
  7. ADOBE DIGITAL PUBLISHING SUITEの利用

Pointとしては

  • Adobe InDesign CS5/CS5.5が必須。
  • Objective-CのSource Codeは入手できない。AdobeのServerにUploadしてCompileされる。
  • 基本料金(Platform fee)と.folioごとに費用(配信サービス費用)が発生する

 


3. Adobe Digital Publishing Suiteの費用

日本では現在Professional EditionとEnterprise Editionのみ。詳しくは購入ガイド

※SingaporeのAdobe担当者と話したときには、Agency(代理店)の場合はEnterprise Editionしか選択できないと言われたので、この辺はBusiness Modelと比較してよく調査した方がいい。

  初年度 次年度
Professional Edition 基本料金: 60万円(5000folio含む) 
   + 配信サービス費用
基本料金: 60万円 
   + 配信サービス費用
Enterprise Edition 別途見積もり 別途見積もり

USの場合はさらにSingle EditionとProfessional Edition Monthlyがある。詳しくはOfficial Siteで。

この他にもiPadにAppを配信するためのiOS Developer Programの登録も必要になる。

  • iOS Developer Program: 8,400円
    ※ iTunes App Storeを利用して配信する場合
  • iOS Developer Enterprise Program: 24,800円
    ※ 自前Serverで配信する場合

 


4. 流行るか?

必ずと言っていいほどiPad向けに電子書籍を配信したいという要望はあるので、Programmingの知識なしでiPad Appが作れるのは魅力だと思う。

ただAdobe Digital Publishing Suiteが提供している機能内で収まる要件ならいいけど、それ以外の追加要望を捌けるかどうかが分かれ目になるかな。

 

< Related Posts >

2011年12月21日水曜日

VMware FusionにVirtual MachineとしてMac OS X LionをInstallする方法

VMware_Fusion_Mac_LionApp Storeから購入したMac OS X Lionを再Downloadして、VMware FusionのVirtual MachineとしてInstallする方法。

環境: Mac mini(Mac OS X Lion 10.7.2)(Mid 2010版), VMware Fusion 4.1.1

Mac OS X 10.7からLicenseが変更されて、Lionが既にInstallされているPC上に最大2つまで仮想PCとしてLionをInstallできるようになった。詳しくは下記参照。

 


1. Mac OS X LionをApp Storeから再Download

LionにUpgradeしてしまうと自動的にInstall Imageが削除されてしまうので、もう一度App StoreからDownloadし直す。

App Store起動 → (Option Keyを押しながら)Purchases → INSTALL

 


2. Install Disk Image(dmg)を作成

Applications → Install Mac OS X Lionを右Click → Show Package Contents → Contents → SharedSupport → InstallESD.dmgをDouble ClickしてMount

Applications → Utilities → Disk Utilityを起動

"New Image"をClickして新規Disk Imageを作成

image

Mountしてある"Mac OS X Install ESD"を選択して、"Destination"にさっき作ったImageをDrag&Dropする。

image

 


3. VMware FusionにInstall

VMware Fusion起動 → File → New ...

作成したdmgを選択して"Mac OS X 10.7 64-bit"の仮想PCを作成

image

 

 

< Related Posts >

2011年12月20日火曜日

SWF形式のBGMを停止、再生する方法とvideo tagを使ってiPadも対応する

bgm_play_stop_swfWeb SiteにBGMを埋め込んだときの手順をMemo.

環境: Adobe Flash Professional CS5, swfobject 2.2


1. BGM用の曲(MP3)をSWFに

Adobe Flash Professionalが使える環境なら
File → Import → Import to Library ...
からMP3をImportして、TimeLine PanelにDrug&Dropすれば完了。ActionScriptは

Play();

を埋め込んでおく。

後で気付いたけど、Flowplayerにmp3を再生する機能があるので、これを使った方が簡単にできる気がする。

 


2. PCとMobileを判断してSite埋め込む

iPhone, iPadではswfを再生できないので、前の記事を参考にPCかMobileかを判断して、Mobileの場合はHTML5のVideo tagを使うようにする。

 


3. 再生、停止する方法

PCの場合は、swfobjectをつかって、

再生する場合はembedSWF
停止したい場合はremoveSWF

すればいい。(今ならFlowplayer + mp3でやる)

video tagの場合は下記Siteを参考に。ちなみにiPadで画面読み込みと同時に曲の再生は出来ないみたい。

 

< Related Posts >

2011年12月19日月曜日

NHKオンデマンドを登録、利用してみた。

NHK_ondemandNHKスペシャルでSteven Jobs氏の特集をやるので、「これは見なきゃ!」と思ったけど、Singaporeの家にはTVがない。調べてみるとNHKオンデマンドで過去の番組を動画配信しているみたいなので、試しに登録して視聴してみた。

ちなみに通常NHKオンデマンドは海外から利用できない。

個人的には知識系の番組が好きなので、"その時歴史が動いた"は凄く惹かれる。

価格も単品で105円~なので気軽に視聴できる。(詳しくは利用料金表を参照)

しばらくは週一で見ていこう。

 

< Related Posts >

2011年12月16日金曜日

Mac OS X Lion Serverを購入してInstall(Upgrade)

Lion_install_to_mac_mini前の記事でClean InstallしたMac mini(Snow Leopard Server)にOS X Lion ServerをApp Storeから購入してInstallしてみた。

OS X Lion Server 4300円
OS X Lion           2600円
           計           6900円


ここからはハマったときのLogなので読み飛ばしてOK

購入後Dockに
"OS X Lion Server - Waiting..."
が表示され、一向に動かない。Activity Monitorを見ると、何かしらDownloadしているみたいなので、しばらく放って置いた。

・・・で、2時間経過

さすがに痺れを切らして、Mac mini自体を再起動。
再起動後は、Dockに
"OS X Lion - Paused"
"OS X Lion Server - Paused"
と表示され、App Storeから"Install"をClickしても変化しない。

system logを確認すると以下のようなErrorが出ていた
$ less /var/log/system_log

Dec 13 19:51:17 saturn storeagent[201]: wrote primary DSID: 212901445
Dec 13 19:51:20: --- last message repeated 1 time ---
Dec 13 19:51:20 saturn App Store[907]: Calling purchase callback
Dec 13 19:51:21 saturn storeagent[201]: CANCEL 2: -[DownloadQueue _notifyClientsAboutDownloadsChange:forSource:]
Dec 13 19:53:18 saturn [0x0-0x16016].com.apple.iTunes[932]: AppleGVA:: Error creating the accelerator 1
Dec 13 19:54:33 saturn App Store[907]: *** Assertion failure in -[ISDistributionManager verifyDistributionAtURL:allowsDevSign:error:distributionControl
ler:], /SourceCache/Pisa/Pisa-60.8/Source/ISDistributionManager.m:183
Dec 13 19:57:42 saturn [0x0-0x12012].com.apple.appstore[907]: Tue Dec 13 19:57:42 hoge.com.sg App Store[907] <Error>: CGBitmapContextGetBitsPerComponent: invalid context 0x10036e340

やったこと

  • 固定IP Addressに変更
  • Preference → Networkで"AirPort"をOff
  • DNS Serverの設定もそれに合わせて変更

で、結局

App Store → MenuのStore → Check for Unfinished Downloads ...

から再開(Resume)出来た。

4GB近いFileをDownloadするので時間が掛かってたみたい(?)

InstallはOS X Lion → OS X Lion Serverの順に行う。ただOS X Lion ServerをInstallしようとしても、「既にInstall済みです。」と言われ、Install出来ない。

image

Dockの中には"Server"がいるので大丈夫なのかな?

 

< Related Posts >

2011年12月15日木曜日

Mac mini ServerをNetwork経由でClean Installする方法

MacOSX_SnowLeopard_clean_install1年半前に買って、Singaporeに来てからも大活躍していたMac mini Server. Lion ServerにUpgradeしたくなったので、Clean Installからやってみた。

Mac mini (Snow Leopard Server) (Mid 2010版)

詳しくはOfficial Supportに方法が載っている。

 


1. Install Utility起動

Macがもう一台あれば、そちらにInstall Diskを挿入したあと、
Utilities → Remote Install Mac OS X
を選択。画面に従って、待機状態になるまで進めていく。

Windowsしか周りにない場合は、リモートアシスタントを使うと出来るらしい。
詳しくは"OS X Lion:Windows 移行アシスタントについて"へ。

一台が待機状態になったら、InstallしたいMac miniを再起動。起動中に"Option"Keyを押し続ける。

起動後は右のRemote Install Mac OS Xを選択。Ethernetに接続してあれば、Networkは選択する必要なし。

 


2. Disk UtilityでRaid1構成にする

500GBのDiskが2つあるので、今度はRaid1構成にしてみる。

Install画面のMenuに"Disk Utility"があるので選択。

2つのDiskをそれぞれ"Format: Mac OS Extended(Journaled)"でErase

Image1

"RAID"から"RAID Type: Mirrored RAID Set"を選択。左PanelからFormatしたHDDをDrag&Dropする。

Image2

これでCreate。

Image3

Disk Utilityを終了。作成したDiskを選択してInstall実行。

IMG_0183

 


3. Install後の設定

OS Install自体は40分ぐらいで終わる。その後、Serial Numberの入力などの初期設定。

ちなみにLoginした後もSoftware Updateを行うとさらに40分ぐらい掛かる。

さて、次はLion ServerへUpgradeしてVMware Fusion4をInstallする予定

 

 

< Related Posts >

2011年12月13日火曜日

Google Analytics導入時にやるべき初期設定(FilterとSocial Pluginへの対応)

google_analytics_settingGoogle AnalyticsのTracking CodeをSiteに設置してから、行うべき設定をまとめてみた。

  1. Filterを使って、指定したDomain以外はTrackingしないようにする
  2. Webmaster ToolsとGoogle Analyticsを連携させる
  3. Facebook Like, Twitter, Google +1のSocial系PluginもAccess解析する
  4. その他、Trackingしたい箇所でEvent情報を送信するScriptを埋め込む

 


1. Filterを使って、指定したDomain以外はTrackingしないようにする

< 2012/04/05 Modified >
この設定がうまく機能しなくなったので非推奨。
参考: Blogの更新をサボっていたら閲覧数が急激に落ちた

Google Analyticsは同じWeb Property ID(UA-xxxxxx-x)を使っていると、申請したWebsite URLとは関係なくTrackingしてしまう。開発環境やSTAGE(Test環境)からのAccessは除外したいので、下記Siteを参考にFilterを設定。

Google AnalyticsにLogin → Accountを選択 → 設定画面 → Filters → New Filter

入力例

image

Filter Fieldに「Hostname」を選択。
Filter Patternには正規表現を記述するので、「.」(ドット)や「-」(ハイフン)は「\」(バックスラッシュ)でEscapeしないといけない。詳細はAnalytics Helpを参照(Change Languageで日本語に変更可能)

 


2. Webmaster ToolsとGoogle Analyticsを連携させる

Google AnalyticsのSearch Engine OptimizationからWebmaster Toolsの情報を参照できるようになる。

設定画面 → Web Property Settings

"Webmaster Tools Settings"の"Edit"をClick. 既にWebmaster ToolsでSiteを同じGoogle Account登録してあれば、一覧に表示されるので選択するだけ。

image

 


3. Facebook Like, Twitter, Google +1のSocial系PluginもAccess解析する

一般的なSiteではFacebook Like, TwitterのTweet Button, Googleの+1 Buttonがあるのは当たり前になってきているので、これもTracking出来るようにScriptを埋め込んでおく。詳細は前の記事を参考に。

iframeや静的Linkを使っていたりすると、ClickされたときのEventを取得できないので注意。Google +1はWebmaster Toolsを導入していれば何もしなくていい。

 


4. その他、Trackingしたい箇所でEvent(Pageview)情報を送信するScriptを埋め込む

次のような場合はGoogle AnalyticsにEvent情報を送信するようにしている

  • Ajaxで遷移(詳細記事
  • 動画の再生、一時停止、最後まで見たか。(詳細記事
  • 画像や商品のSlideshow(Lightbox)系

 

 

< Related Posts >

2011年12月12日月曜日

動画(FlowPlayer)の再生回数をGoogle AnalyticsでTrackingする

flowplayer_google_analytics動画の再生回数、最後まで見たかどうかをGoogle AnalyticsでTrackingする方法。

YouTubeを利用する場合は、YouTube Analyticsがあるので特に何もする必要はない。

どうしてもGoogle Analyticsを使いたい場合は、YouTube JavaScript Player APIを使うと再生、停止のEventを取得できるので、EventをTriggerにしてGoogle Analyticsに情報を送れば可能。この辺は前の記事を参考に。

今回は動画をYouTubeに置きたくないという要件だったので、再生するためにOpen SourceのFlash Player "FlowPlayer"(version 3.2.7)を利用。

FlowPlayerはGPLv3で配布されていて、Free版はFull ScreenにするとFlowPlayerのLogoが表示される。このLogoを消すためにはCommercial Licenseを購入する必要がある。詳しくはOfficial Siteを参照。

このFlowPlayer非常によく出来ていて、外見(Skin)を変更したり、JavaScriptで外部から操作できるようなAPIが充実しているので、とても使いやすい。

Google Analyticsと連携するCodeはOfficial Siteにもある。Eventにhookして、Google Analyticsに情報を送信するのはYouTubeのAPIと同じ。それすらも面倒くさい場合は、直接Parameterを指定すると、FlowPlayerがGoogle Analyticsに情報を送信してくれる機能もある。

Official SiteにあったのはGoogle Analyticsの古いCodeを利用していたので、jQueryと組み合わせて利用するために次のように記述。

<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-1234567-1']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
</script>

<script type="text/javascript">
jQuery.extend({
    gaEventTracker: function(action, label, target, value) {
        if (typeof _gaq == 'undefined') return false;
        var target = target || location.href;
        _gaq.push(['_trackEvent', action, label, target, value]);
    }
});
</script>

<script type="text/javascript">
jQuery(function($){ 
    flowplayer('movie-player', {
      src: 'flowplayer.swf',
      wmode: 'transparent'
    },
    {
      clip: { 
        onStart: function(clip) {
            $.gaEventTracker('Videos', 'Play', clip.url);
        },

        onPause: function(clip) { 
          $.gaEventTracker('Videos', 'Pause', clip.url, parseInt(this.getTime()));
        },

        onFinish: function(clip) { 
           $.gaEventTracker('Videos', 'Finish', clip.url);
        }
      }
    });
});
</script>

"_trackEvent"の詳細はGoogle AnalyticsのOfficial Documentを参照(英語)

実際にGoogle AnalyticsにEvent情報を送っているかは、Google ChromeのDeveloper Toolsを使って確認する。

下図のように"__utm.gif"を取得していれば、何かしらの情報をGoogle Analyticsに送っている。開発環境(Google Analyticsに登録したDomain以外)では動作しない。

Google_Chrome_Developer_Tools


< 2011/12/16 Modified >
Google Chrome + Google Analytics Debuggerを利用するとConsoleにHost Nameなどの情報を表示してくれるので便利。

image


さらにiPad, iPhone用にはHTML5のVideo Tagを使っているので、こちらのTrackingも同様に取得する。Video TagのEventについては、下記Siteを参考に。

<script>
jQuery(function($) { 
    var jContent = $('#content');
    jContent.find('video') 
    .bind('loadeddata', function() { 
        $.gaEventTracker('Videos(HTML5)', 'Play', $(this).attr('src'));
    })
    .bind('pause', function() { 
        $.gaEventTracker('Videos(HTML5)', 'Pause', $(this).attr('src'));
    })
    .bind('ended', function() { 
        $.gaEventTracker('Videos(HTML5)', 'Finish', $(this).attr('src'));
    });
});
</script>

iPadの場合はSettingからSafari → Debug ConsoleをOnにするとconsole.logの結果を閲覧できる。もしくはiOS Simulatorを使うとDebugし易い。詳しくは前の記事で。

 

< Related Posts >

2011年12月9日金曜日

HTML5のVideo Tagを使う際の注意点とiPad, iPhone向けの動画へ変換する

html5_videoHTML5のVideo Tagを使うとIE9, iPhone, MacのFirefoxなど特定の環境だけ動画が再生されなくて困ったときのMemo.

結論から言うと、PC BrowserではFlowPlayerなどのFlashを使った方が無難。少なくともお客様相手の仕事はそうした方がいい。

VideoJSなどのJavaScript Library(HTML5のVideo Tag)を使う場合の注意点。

動画の形式(type)も様々。Video TagのType属性指定する値は下記Siteを参考に。

iPad, iPhoneなどiOS向けへの動画はAdobe Media Encoderを使って変換しているけど、FFmpegなどで変換する場合は下記Siteを参考に。

 

< Related Posts >

2011年12月8日木曜日

HTML5(<video>) or Flashを自動で切り替えてくれるJavaScript Library(iPadやiPhoneでも動画を再生)

all_browser_movieWeb上で動画を再生させる方法はswfobjectを利用して、
Flash対応 → Flashを埋め込む
Flash未対応 → 静的画像
とするのが今までの正攻法。今後はiPad, iPhone(iOS)やSmart Phoneでも再生できるように、HTML5の"video" Tagを使うのが当たり前になってくると思う。

各Browserの差異を吸収して、HTML5のVideo TagとFlashを切り替えてくれるJavaScript Libraryを紹介。

  MediaElement.js VideoJS JW Player
License GPLv2/MIT LGPLv3 CC3.0
商用利用 - FlashはFlowPlayerを利用しているので、Logoを消したい場合はこちらを参照。
$95~
$89~
詳しくはOfficial Site
説明 Flash PlayerのSourceも公開されているので何でも出来る。基本はこれでいい気がする。 FlowPlayerがJavaScriptで制御できて使いやすい。 Creative Commons Licenseなので注意。iOSの場合だけHTML5を使うみたい。
注意点 「○秒間連続再生できるまで停止する」のようなBuffering機能がない。 3.2.7にはBufferingしている間Loading Animationが表示されないBugがある。(詳細  

Video tagに設定できる属性は下記Siteを参考に。

その他HTML5 Videoについて参考になる記事

 

実際使ってみて・・・

Video Tagを使うと動画形式によって再生できたり出来なかったりでハマるので、前に書いたMobile端末かを判断するScriptを使って、PCならFlash, MobileならHTML5と使い分けた方がいいと思う。

 


< 2011/12/21 Modified >
表に「注意点」追記。


 

< Related Posts >

2011年12月7日水曜日

PHP or JavaScriptでMobile端末(iPad, iPhone, Android)かどうかを判別

pc_or_mobilePCとiPad両方に対応したWeb Siteを構築したときのMemo.

共通のCSSのみで完結させたかったけど、どうしても下記理由でPCとMobileを判別する必要が出てきた。

  • どの端末でも動画を再生させたい
  • どの端末でも曲(BGM)を流したい
  • Gallery(画像一覧)はSwipeで次の写真に移動したい
    → jQuery系Plugin側で対応しているのが多い。
  • PCで画面を広くした場合だけ、位置を変えたい

実現するために調査した結果の一覧。

Library 言語&License 用途
swfobject JavaScript
(MIT)
Flash(swf)が使えるか判別して、object tagか静的画像を自動挿入してくれる。
Modernizr JavaScript
(MIT & BSD)
HTML5/CSS3が使えるか判別。<video>が使えるかの判断に
jQuery.Mobile JavaScript
(MIT or GPLv2)
TapやSwipeなどのEventを取得するのに使える。その場合autoInitializePage=falseにして利用する。
VideoJS JavaScript
(LGPLv3)
video tag → flash → 静的画像の順に判断して、動画を再生できるようにしてくれる。Flashの場合はFlowPlayerを利用。こちらの記事も参考に
php-mobile-detext PHP
(MIT)
Server側で判断したいときに。PHP4で動かないけど、簡単に修正できる。
(WordPress) PHP WordPressを使っているなら標準でiPhoneかを判断するGlobal変数($is_iphone)がある。
詳しくは/wp-includes/vars.phpを参照。

ちなみにiPhone, iOS, Androidが判断できればいいという場合は次のようなJavaScriptで簡単に判断することが出来る(jQueryを拡張)。

jQuery.extend({
    isMobile: function() {
        if (navigator.userAgent.indexOf('iPhone') > 0 ||
            navigator.userAgent.indexOf('iPad') > 0 ||
            navigator.userAgent.indexOf('iPod') > 0 ||
            navigator.userAgent.indexOf('Android') > 0) {
            return true;
        }
        return false;
    }
});

jQuery(function($) {
    if ($.isMobile()) {
        alert('this is mobile');
    }
});

HTML5のVideo TagはBrowserごとに動作が違うので

PC → Flash or 静的画像
Mobile(iOS or Android) → Video Tag or 静的画像

と判断した方がよさそう。

 


< 2012/05/18 Modified >
WordPressのGlobal変数$is_iphoneを見つけたので追記

 

< Related Posts >

2011年12月6日火曜日

WordPressのOfficial LogoがPSD形式でDownloadできる

WordPress-logo-download最近は記事にThumbnail画像を付けるようにした。

理由は

  • Blogger(このBlog)をSmart Phone(iPhone, iPod touch, Android)で開いたときに最初の画像が一覧で表示される。
  • 記事を読みやすく。
  • 閲覧数に影響が出るか実験
  • Design Skillを上げたい
  • Gimp, Photoshop, Illustrator, Fireworksの使いこなせるように

ちなみにAndroidはこんな感じで表示される。

screenshot_2011-11-30_2312

WordPressはOfficial LogoのSource Fileを配布している。

PSD形式でDownloadできるので、どんな風に構成されているかも確認できて勉強になる。iPhone用のIconの作成するときにも参考になりそう。

 

< Related Posts >

2011年12月5日月曜日

Xen or KVM or OpenVZ. VMware Serverからの移行を考える

Xen_OpenVZ_KVMVMware ServerのSupportが切れて、CentOS6.0にInstall出来なかったので、他の仮想化技術に切り替えようと調査したMemo.

用途は主に社内の開発用。要件をまとめると、

  • Source CodeはSubversionで管理しているので、サーバーが壊れても問題ない。
  • Guest OSはお客様の環境に合わせるので、CentOSとかWindowsとかいろいろ。
  • Windows XP + IE6 or IE8の環境は作っておきたいので、Windowsはほぼ必須。
  • Commandを叩かなくても管理Toolで簡単に起動、停止できるとうれしい。
  • 無償で将来的にも安心して、長く使える技術を選択したい。

 

参考にしたSiteは下記。

ちなみにKVMはCPUに仮想化支援機能がないと使えないらしい。

要件と照らし合わせると、WindowsをGuest OSに出来ないOpenVZは消える。将来性を考慮すると、やっぱりKVMかな?

でも、Server自体が古いので、結局CentOS5 + VMware Serverになりそう。(^^;

 

< Related Posts >

2011年12月4日日曜日

このBlogの閲覧数とGoogle AdSense収益を公開。今後の方針について

このBlogも書き始めてから丸4年。ほぼ毎日(平日だけ)投稿し続けたのは我ながらスゴイと思う。

今読み返してみると自分の日本語能力のなさと読みにくさが、あまりに痛いので、今後のBlogを書いていく上での方針を決めてみた。

今まで

  1. 何でもいいから調べたことを残していく
  2. 毎日書き続けることが大事
  3. 間違ってても後で直せばいい

 

今後

  1. 読みやすく
  2. 読者を意識する
  3. 誤字、脱字をなくす

 

4年間書き続けたGoogle Analyticsの結果はこれ(2011/11/02 - 2011/12/02)

image

簡単に言うと、

毎日でなくていいから、もう少し精査した記事を投稿するようにする

ということ。

まぁ、だんだんとね。

 

< Related Posts >

2011年11月29日火曜日

SubversionのRepositoryを移行

Max OS X ServerからCentOSにSubversionのRepositoryを移行したときのMemo. Installと設定は前の記事を参考に。

Subversion_to_Subversion

環境
旧: Max OS X Server 10.6.8, Subversion 1.6.17

新: CentOS 6.0 x64, Subversion 1.6.11

参考にしたのは下記Site.

 

まずは移行元のMac Serverで作業。念のためDirectoryの容量を確認して、全てのProjectのDirectoryを圧縮して保存。
$ cd /svnroot/
$ du -hx -d 1
$ tar czvf svn-repository-20111125.tar.gz Repository/

本当はここからsvnadmin dumpを使って、各Projectごとにdumpとloadを行うみたいだけど、Versionも近いし、そのままCopyしても大丈夫という情報もあったので、移行先でそのまま展開してみた。

# tar xzvf svn-repository-20111125.tar.gz

移動させて権限を変更
# mv Repository/* Repositories/
# chown apache. -r Repositories/*

これでTortoiseSVNで右Click → Relocate...でURLを変更。

なんかこれで大丈夫っぽい。

 

< Related Posts >

2011年11月28日月曜日

CentOS + Subversion + LDAP + ApacheをInstallして設定

CentOSにSubversionをInstallして、Mac OS X ServerのSubversionで管理していたRepositoryを移行したときのMemo. 長くなったので今回は設定まで。

CentOS Subversion OpenLDAP Apache

環境は

Server: CentOS 6.0 x64, Subversion 1.6, OpenLDAP 2.4.19, Apache 2.2.15

Client: Windows 7 Home Premium 64bit (英語版)


参考にしたのは下記Site.

 


1. Install

Subversion本体をYUM経由でInstall
# yum install subversion

SubversionとApacheを連携させるModuleをInstall. mod_authz_svnも同時にInstallされるらしい。詳しくは
/usr/share/doc/subversion-1.6.11/mod_authz_svn-INSTALL
に書いてある。
# yum install mod_dav_svn

Moduleがあるか確認
# ls /usr/lib64/httpd/modules/

自動的にModuleを読み込むApache用設定Fileを作成してくれる。
# less /etc/httpd/con.d/subversion.conf

 


2. Apache用設定Fileを記述

Repository用のDirectoryを作成
# mkdir /home/svn
# mkdir /home/svn/Repositories

VirtualHostを利用した場合の設定例

#
# For subversion
#
<VirtualHost *:80>
  ServerName svn.hoge.com.sg 
  <Location "/">
    DAV svn
    SVNParentPath /home/svn/Repositories
    #SVNListParentPath on
    #SVNAutoversioning on
    <LimitExcept GET PROPFIND OPTIONS REPORT>
      Order deny,allow
      Deny from All
      Allow from 127.0.0.1
      Allow from 192.168.0.0/24
      AuthType Basic
      AuthBasicProvider ldap
      AuthName "Authorization Realm for Subversion"
      AuthzLDAPAuthoritative off
      AuthLDAPURL ldap://127.0.0.1/ou=people,o=hoge,dc=com,c=sg?uid
      Require valid-user
    </LimitExcept>
  </Location>
</VirtualHost>

DocumentRootがあると

Error: Redirect cycle detected for URL

とCheckoutするときに怒られるので注意。

設定を反映させる
# /etc/rc.d/init.d/httpd configtest
# /etc/rc.d/init.d/httpd reload

 


3. LDAPに認証するUserを追加

OpenLDAPのInstall方法は前の記事を参考に。Install後はLDAP AdminというFree Softを使うと楽。今のVersionは1.2

起動直後に「規定のLDAP Browserにするか?」と聞いてきて、「Yes」を選択するとErrorになるけど気にしない。

image

 


4. Repositoryを追加して、Http経由でCheckout, Commitが出来るか試す

Test用のRepositoryを追加
# cd /home/svn/Repositories/
# svnadmin create test1
# chown -R apache test1/

TortoiseSVNなどのSubversion ClientでCheckoutとCommit出来れば完了。

次回はMac OS X ServerのSubversionのRepositoryを移行する。

最後にSubversionのRepositoryを作成、削除するにはUSVNというFreeの管理Toolが便利そう。今度試す予定。

 

< Related Posts >

2011年11月25日金曜日

[WordPress]Themeのどの名前のFileが読み込まれるか理解する

WordPressの開発で、「このPageだけ特別な表示をさせたい」をどう実現するか調べたときのMemo.

WordPress-logos

page.phpでif文を書いても実現できるけど、Theme内のどのFileが読み込まれるか理解するとif文を書かなくても実現できる(こともある)。
公式DocumentのFlowchartが分かりやすい。

Pageを作れば下記RuleでTheme内のFileを検索してくれる。(Wordpress 2.9以上)(WordPress Codex: Templates by page-ID or page-Slug)

page-{id}.php
page-{slug}.php

WordPressのDocumentは整備されていて十分詳しいので、困ったら英語で検索するのがオススメ。

 

< Related Posts >

2011年11月24日木曜日

CentOS 6.0にLDAP ServerをInstall, 設定

Subversionの認証にOpenLDAPを使おうと思って設定したときのMemo. 前にも書いたけど古いので書き直し。

LDAPworm環境はCentOS 6.0, OpenLDAP 2.4.19


参考にしたのは下記Site.

 


1. Install, 設定

Installはyum経由で
# yum install openldap openldap-servers openldap-clients

管理者用Passwordを生成。
# slappasswd

生成されたPasswordをMemoっておく。次は設定Fileの編集。
# cd /etc/openldap/
# cp slapd.conf.bak slapd.conf
# vi slapd.conf

access to *
        by dn="cn=Manager,o=hoge,dc=com,c=sg" write
        by self write
        by users read

suffix      "o=hoge,dc=com,c=sg"
rootdn     "cn=Manager,o=hoge,dc=com,c=sg"
rootpw     {SSHA}U2cQrzA1a(←生成した管理者用Password)

# allow onlu rootdn to read the monitor
access to *
        by dn.exact="cn=Manager,o=hoge,dc=com,c=sg" read
        by * none

openldap-clientsの設定
# vi ldap.conf

BASE    o=hoge, dc=com, c=sg
URI     ldap://127.0.0.1/

設定FileのTest
# slaptest

bdb_db_open: warning - no DB_CONFIG file found in directory /var/lib/ldap:

Warningが出るのでDB_CONFIGをCopy. Owner権限も変更
# cp /usr/share/doc/openldap-servers-2.4.19/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
# chown ldap. /var/lib/ldap/*

 


2. 設定Fileを変換

OpenLDAP 2.4からはslap.dの下にTree構造で設定Fileを格納するようになったので、slapd.confを変換。
# mv slapd.d slapd.d.bak
# mkdir slapd.d
# chown ldap. slapd.d
# slaptest -f slapd.conf -F slapd.d
# chown ldap. -R slapd.d/

LDAP Server起動して、自動起動するようにも登録しておく。
# /etc/rc.d/init.d/slapd start
# chkconfig slapd on

試しに検索してみる。
# ldapsearch -vxb '' -s base +

 


3. LDAPに登録

まずは次のような簡単な構成で登録
# vim top.ldif

# Domain
dn: o=hoge,dc=com,c=sg
objectClass: top
objectClass: organization
o: hoge

# Group
dn: ou=group,o=hoge,dc=com,c=sg
objectClass: organizationalUnit
ou: Group

# People
dn: ou=people,o=hoge,dc=com,c=sg
objectClass: organizationalUnit
ou: people

登録内容を確認するときは
# slapcat

これをLDAPに登録
# ldapadd -x -D "cn=Manager,o=hoge,dc=com,c=sg" -W -f top.ldif

登録出来たか確認
# slapcat

削除するときはTree構造の下から削除する必要がある。
# ldapdelete -x -D "cn=Manager,o=hoge,dc=com,c=sg" -W "ou=people,o=hoge,dc=com,c=sg"
# ldapdelete -x -D "cn=Manager,o=hoge,dc=com,c=sg" -W "ou=group,o=hoge,dc=com,c=sg"
# ldapdelete -x -D "cn=Manager,o=hoge,dc=com,c=sg" -W "o=hoge,dc=com,c=sg"

ただ、削除してたらslapdが強制終了してた。startしても起動しないので下記CommandでRecover
# slapd_db_recover -h /var/lib/ldap/

これで無事起動出来るようになった。

 


4. LDAP Adminを使って登録

ここまで来たらLDAP Adminを使うと楽(Windowsの場合)。

image

image

 


5. Firewall(Security)の設定

最後に外部からの問い合わせは遮断したいので、hosts.allowとhosts.denyを修正
# vim /etc/hosts.allow

slapd: 127.0.0.1 192.168.

# vim /etc/hosts.deny

slapd: ALL

Firewallの設定も忘れずに
# system-config-firewall-tui

Port / Port Range: 389
Protocol: tcp

 

< Related Posts >

2011年11月23日水曜日

Reverse Proxyの環境でSWF(Flash)が再生されない

開発環境はApacheのReverse Proxyを使って、LAN内のServerに転送しているけど、swfをFirefoxで再生しようとするとFirefox自体が落ちてしまうので調査したMemo.

apache_flash_firefoxちなみにIP Addressを直接入力してSWFを指定すると再生できる。

環境は
Server: CentOS 6.0, Apache 2.2.15
Client: Windows 7 Home Premium 64bit(英語版), Firefox 8.0, Flash Player 11.1.102.55


Reverse Proxyを設定してあるApacheのconf fileにProxyPassReverseCookieDomainを追記したら直った。(追記:でもたまに落ちる)

なぜ?気のせいかもしれない。

<VirtualHost *:80>
ServerName dev.hoge.com
ProxyRequests Off

 ProxyPassReverseCookieDomain 192.168.0.81 dev.hoge.com

ProxyPass /testsite http://192.168.0.81/testsite
ProxyPassReverse /testsite http://192.168.0.81/testsite
</VirtualHost>

"ProxyPassReverseCookieDomain"に関しては下記を参考に。

 

< Related Posts >

2011年11月22日火曜日

Google Appsに2-step verification(2段階認証)を導入してみた

どんな感じになるか知りたかったのでやってみた。

google-lock

詳しくは下記Siteを参照。

簡単なまとめ

  • Google Accountの設定Pageから"Using 2-step verification"を選択
  • 認証に使う携帯電話を登録する(SMSで認証Codeが送られてくる)。
  • 新規BrowserでGoogle AccountにLoginするときに携帯に送られる認証Codeが必要。
  • このGoogle 2-step verificationに対応していないApplication(Service)は、管理画面で生成するApplication-specific(固有) Passwordを使う。
  • AndroidやiPhoneやPOPでAccessしている他のGmailなど、ほとんど再設定が必要。
  • iPhone App, Android Appの"Google Authenticator"を使えばSMSで送られてくる認証Codeがいらなくなる。
  • Google AuthenticatorをInstallした端末も管理画面から登録する必要あり。
  • 携帯をなくした場合の対処方法は公式Helpを参照。Google Appsの場合は管理者権限のあるAccountで2-step verificationを無効にすることが出来るらしい。

1ヶ月使っているけど、ほとんど2段階認証を意識する場面はない。DBSのiBankingもこの仕組みにしてほしい。

 

< Related Posts >

2011年11月21日月曜日

CentOS6にVMware Server 2.0.2をInstallする(失敗編)

MinimalでInstallしたCentOS6にVMware Serverを導入しようとしたときのMemo.

CentOS_VMware環境はCentOS 6.0 x86, VMware Server

KernelのVersionが上がって一筋縄ではいかなくなっているみたい。
下記SiteからPatchをDownloadして実行。

VMware製品のカーネルモジュールがLinux 2.6.29に対してビルドできない件とその対処 - 試験運用中なLinux備忘録

このPatchを実行するのに必要なToolをInstall
# yum install patch

VMware serverのSourceを展開
# cd /home/VirtualMachines/
# tar xzvf VMware-server-2.0.2-203138.i386.tar.gz

上記SiteからDownloadしてきたPatchを適用
# vi vmware-patch.sh

MODULEDIR=/home/VirtualMachines/vmware-server-distrib/lib/modules/source/

# chmod 755 vmware-patch.sh
# ./vmware-patch.sh

Compileに必要なToolをInstall

# yum install gcc kernel-devel make

実行
# cd vmware-server-distrib/
# ./vmware-install.pl

。。。失敗

"Building the vmnet module."するときにAbortしてしまう。

VMware ServerはVersion Upしないみたいなので、本格的にVMwareからKVMに移行しようと思う。

 

< Related Posts >

2011年11月18日金曜日

[Windows XP]認証なし共有Folderの設定と自動Loginを有効に

EPSON製Scannerと接続されているWindows XPのShared Folderを誰でも閲覧可能にして、再起動しても指定したUserで自動LoginしたときのMemo.

shared-folder

環境はWindows XP Professional 英語版


参考にしたのは下記Site.

 

1. Security関連の設定を変更

UserにPasswordを設定してGuest Accountを有効にする
My Computer → 右Click → Manage → Local Users and Groups → Users

Security Policyを変更する
Control Panel → Administrative Tools → Local Security Policy → Local Policies → User Rights Assignment

  • "Deny access to this computer from the network"からGuestを削除

Local Policies → Security Options

  • "Network access: Sharing and security model for local accounts"を"Guest only - local users authenticate as Guest"に変更

 

2. 共有Folderの設定

「簡易ファイルの共有」を無効に
Explorer → Tools → Folder Options → View
"Use Simple file sharing (Recommended)"をOff

あとは共有したいFolderを右Click → Share and Security ...を選択して設定する。Everyoneに書き込み&閲覧権限を与えるのを忘れずに。

その他注意点

  • 共有Permissionと実Permissionの設定
  • Firewallの設定

 

3. 自動Login

下記Siteを参考に。

  1. [Windows + R]から"control userpasswords2"
  2. "Users must enter a user name and password to use this computer"のCheckをはずす
  3. "Apply"
  4. Dialogが表示されるので、自動LoginするUserの情報を入力

 

全て終わってから記事を書いたので抜けがあるかも。。。(汗

 

< Related Posts >

2011年11月17日木曜日

TortoiseSVNを1.7.1にUpgradeしてみた。Serverは1.6だけど

TortoiseSVNの1.7.1がReleaseされていたのでUpgradeしてみた。

TortoiseSVN-1.7.1TortoiseSVN 1.7からSubversion 1.7に対応して、Working CopyのData構造が変更になっているので注意。

まず最初に"SVN Upgrade working copy"を実行して、Data構造(.svn)をUpgradeする必要がある。

詳しくは下記を参照。

目に見える所だけ箇条書き

  • Root Directoryのみ".svn"が作成される。
  • UpgradeするとSVN Client 1.6系では操作できない。
  • ServerのSubversionをyumで管理している場合は、しばらくConsoleから直接"# svn update"が出来ない
  • 旧Repositoryとの互換性はあるので、Subversion(Repository) Serverが1.6であってもCommitなどは出来る。
  • Performanceが改善されている。"Show log"が早いとか。

Serverはyumで配信されるまで待ち。

 

< Related Posts >

2011年11月16日水曜日

ATEN CM0264でDual DisplayをMultiに切り替えたい

会社でDual Display(Apple Cinema Display A1081 20-inch x2)で作業していて、Windows 7, Mac Pro, Mac miniを切り替えたいなと久しぶりに切替器を調べてみた。

aten_cm0264そこで見つけた商品がこれ。

ATEN CM0264

2つのDisplayと4つのPCをMultiに切り替える事が出来て、各PC間のFile転送も片方のDisplayにDrag&DropするだけでCopy出来てしまう。Parallels Desktopを物理的に実現している感じ。

下記動画を見ると、どんな感じか分かる(英語)。

下記SiteのReviewも詳しい(英語)

Aten CM0264 2x4 DVI/HDMI KVMP Switch Review - Hardware Bistro

ただこれが結構高い。台湾の会社だから、そっちで調べると安いかも?

こういうの好きだから買ってしまいそうな気がする。隣の席空いているんだけどね(^^;

 

< Related Posts >

2011年11月15日火曜日

社内LAN向けにDNS Server"Bind"をInstall, 設定

images今の社内にはDNS Serverがおらず(RouterにもDNS機能がない)、名前解決するためにProviderのDNSに問い合わせていたので、DNS ServerをInstall, 設定したときのMemo.

環境はCentOS 6.0 64bit, Bind 9.7.0


社内にDNS Server(Bind)を導入する利点

  • DNS ServerのCache機能で名前解決が早くなるので、Networkの体感速度が上がる。
  • 社内の共有Serverに(Mac, Windows関係なく)名前でAccess出来る。
  • 名前でAccess出来ると共有ServerのIP Addressが変わっても通知しなくて済む。
  • (hostsを変更しなくても)本番環境のURLを社内の開発Serverに指定出来るので、Testし易い(かも)。

参考にしたのは下記Site.

 


1. Install

Install自体はyum経由でサクッと終了。自動起動とFirewallも設定しておく。
# yum install bind
# /etc/rc.d/init.d/named start
# chkconfig named on
# system-config-firewall-tui

 


2. /etc/named.confを編集

< 2013/05/29 Modified >
Bind 9.3の場合は
# yum install caching-nameserver
するとサンプルの設定ファイルがインストールされる。
/etc/named.caching-nameserver.confを編集してnamed.confを作成する。

 

利用を許可する範囲と自前で名前解決出来なかったときの外部DNSを指定

options {
    listen-on port 53 { 127.0.0.1; 192.168.0.0/24; };
    allow-query     { 127.0.0.1; 192.168.0.0/24;};
    /* Specify the IP addresses you can throw a query to this DNS. */
    allow-transfer { 127.0.0.1; 192.168.0.0/24; };

    /* If this DNS could not resolve your request, the request is forwarded to other DNS. */
    forwarders { 8.8.8.8; 8.8.4.4; }
    forward first;

     /* cache settings */
     max-cache-ttl 86400;
}

max-cache-ttlは秒を指定。なぜかDefault値が反映されなかったので設定した方がよさそう。(2011/12/13 Modified: ない方が安定して稼働するみたい)

次は各Zone Fileを読み込むための設定を追記. named.rfc1912.zonesを読み込んでいるので、"localhost"系はそっちに任せることにした。

"hoge.com"ではなく、"lan.hoge.com"をLAN内で使い、外部DNSで管理している"hoge.com"に影響が出ないようにする。

// forward map for lan.hoge.com
zone "lan.hoge.com" {
        type master;
        file "hoge.com";
};

// reverse map for 192.168.0.*
zone "0.168.192.in-addr.arpa" {
        type master;
        file "192.168.0.rev";
};

次はそれぞれ正引き(Forward)と逆引き(Reverse)のZone Fileを作成する。
directory       "/var/named"
の記述があるので、/var/namedがZone Fileの置き場所。

 


3. zone "lan.hoge.com"の設定

# cp named.empty lan.hoge.com
# vi lan.hoge.com

$TTL 3H
@       IN SOA  mercury.lan.hoge.com. root.mercury.lan.hoge.com (
                                        20111110        ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                     IN      NS      @

@                  IN      A       192.168.0.100
router             IN      A       192.168.0.1
mercury          IN      A       192.168.0.100
venus             IN      A       192.168.0.13
earth              IN      A       192.168.0.11
mars              IN      A       192.168.0.12
jupiter             IN      A       192.168.0.250

ns         IN      CNAME   mercury
www     IN      CNAME   mercury
nas       IN      CNAME   jupiter

 


4. zone "0.168.192.in-addr.arpa"の設定

# cp named.loopback 192.168.0.rev
# vi 192.168.0.rev

$TTL 1D
@       IN SOA  mercury.lan.hoge.com. root.mercury.lan.hoge.com (
                                        20111110        ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      @

        IN      PTR     lan.hoge.com.
        IN      A       255.255.255.0

1        IN      PTR     router.lan.hoge.com.
100     IN      PTR     mercury.lan.hoge.com.
11       IN      PTR     earch.lan.hoge.com.
12       IN      PTR     mars.lan.hoge.com.
13       IN      PTR     venus.lan.hoge.com.


5. 確認

作成したZone Fileの権限を変更
# chown named. lan.hoge.com 192.168.0.rev

Name Serverは自分を参照するように変更
# vi /etc/resolv.conf

search lan.hoge.com
nameserver 127.0.0.1

別Consoleを開いてLogを確認しながら
# tail -f /var/log/messages
# nslookup

Windowsから確認する場合はcmd.exeを起動して下記Command
> nslookup - 192.168.0.100

この場合192.168.0.100がName Server.

Pingで試している場合はCacheを削除するのを忘れずに。
> ipconfig /flushdns

Server側のCacheを削除するには
# rndc flush

無事名前解決することを確認できれば、DHCP ServerになっているRouterや固定IPのServerに設定して完了。

Secondary Name ServerはGoogle Public DNSのIP(8.8.8.8)を設定しておくと安心できる。

 


6. digで再帰問い合わせしないか確認

Bindの設定が再帰問い合わせ可能になっているとDDos攻撃の踏み台にされる可能性があるので、digを使って確認する。詳しくは下記Site.

ちなみにBindはTCPを利用しないので、hosts.allow, hosts.denyを利用することは出来ない。

 


< 2011/12/08 Modified >
名前解決が最近遅くなったと思ってlogを見ると次のようなErrorがいっぱい

named[8372]: error (network unreachable) resolving 'hoge.net/AAAA/IN': 2001:500:2f::f#53

bind9はDefaultでIPv6機能が有効になっているらしい。ここを参考に起動Optionを追加

# vi /etc/sysconfig/named

OPTION="-4"

再起動
# /etc/rc.d/init.d/named restart

さらにdigを使って試してみるとISPのDNS自体が遅いことが分かったので、forwarders先をGoogle Public DNSに変更。

そうすると、今度は下記Error(?)が吐かれて応答が時々遅くなる

success resolving 'hoge.jp/A' (in 'hoge.jp'?) after disabling EDNS

EDNS(Extension Mechanisms for DNS)はDNSの拡張仕様。詳しくは下記Siteで。

EDNSを無効すればいいのかな?と思い、/etc/named.confの最後に次の行を追記

server 0.0.0.0/0 { edns no; };

でBindを再起動すると、Google Public DNSからAccess拒否された。どうやら必須らしい。・・・で、元に戻して再び再起動。

するとErrorも出ず、名前解決の応答速度も素晴らしくなった。

・・・なぜだろう・・・一応解決?

ちなみにGoogle Public DNSはIPv6に対応しているので、CentOSのIPv6設定をしてあれば問題なく使えそう。それはまた次回。


 

< Related Posts >

Related Posts Plugin for WordPress, Blogger...

Blog Archives