インストールディレクトリ下のdata/install.phpの下記の行を変更する。
define (‘SITE_URL’, ‘http://www.test-site.com/’);
define (‘SSL_URL’, ‘http://www.test-site.com/’);
インストールディレクトリ下のdata/install.phpの下記の行を変更する。
define (‘SITE_URL’, ‘http://www.test-site.com/’);
define (‘SSL_URL’, ‘http://www.test-site.com/’);
レジストリの以下のキーを追加、変更する。
・VirtualMachineファイル
HKLM\Software\Microsoft\Windows NT”\CurrentVersion\Virtualization\ DefaultExternalDataRoot
REG_SZ D:\Virtual_Machines
HKLM\Software\Microsoft\Windows NT”\CurrentVersion\Virtualization\DefaultVirtualHardDiskPath
REG_SZ D:\VHDs
.Net FrameworkにはUriエンコードに使うメソッドがいくつかあるが、違いを調べてみた。
Uriクラスのメソッドは、国際化リソース識別子 (IRI) または国際化ドメイン名 (IDN) 解析を有効に設定するとRFC3986準拠になるようだが、システム全体が変わってしまうようなので、個別にやるにはRFC3986で増える予約記号「!’*()」を後から置換するのが現実的かも。
WPFでWindows FormのApplication.DoEventsメソッドと同様に長時間かかる処理の間にUIのイベントを処理させるには、下記のように行う。(MSDNより)
[SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)]
public void DoEvents()
{
DispatcherFrame frame = new DispatcherFrame();
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background,
new DispatcherOperationCallback(ExitFrame), frame);
Dispatcher.PushFrame(frame);
}public object ExitFrame(object f)
{
((DispatcherFrame)f).Continue = false;return null;
}
code.google.comからGAPIというライブラリをダウンロードする。
curlのモジュールが有効になっていることが必要。下記はGAPIに付属のサンプルコード。実行するとブラウザごとのページビュー、訪問数をページビューの少ない順に出力する。実行するにはdefine文に定義されているemailアドレス、パスワード、プロファイルIDを実際に使用できる者に変更するに必要がある。プロファイルIDはGoogle Analytics管理画面のトップページでプロファイルの編集を実行して表示した画面の左上に表示されている数字。
<?php
define(‘ga_email’,'youremail@email.com’);
define(‘ga_password’,'your password’);
define(‘ga_profile_id’,'your profile id’);require ‘gapi.class.php’;
$ga = new gapi(ga_email,ga_password);
$ga->requestReportData(ga_profile_id,array(‘browser’,'browserVersion’),array(‘pageviews’,'visits’));
?>
<table>
<tr>
<th>Browser & Browser Version</th>
<th>Pageviews</th>
<th>Visits</th>
</tr>
<?php
foreach($ga->getResults() as $result):
?>
<tr>
<td><?php echo $result ?></td>
<td><?php echo $result->getPageviews() ?></td>
<td><?php echo $result->getVisits() ?></td>
</tr>
<?php
endforeach
?>
</table><table>
<tr>
<th>Total Results</th>
<td><?php echo $ga->getTotalResults() ?></td>
</tr>
<tr>
<th>Total Pageviews</th>
<td><?php echo $ga->getPageviews() ?>
</tr>
<tr>
<th>Total Visits</th>
<td><?php echo $ga->getVisits() ?></td>
</tr>
<tr>
<th>Results Updated</th>
<td><?php echo $ga->getUpdated() ?></td>
</tr>
</table>
requestReportDataメソッドのパラメータは
requestReportData($report_id, $dimensions, $metrics, $sort_metric=null, $filter=null, $start_date=null, $end_date=null, $start_index=1, $max_results=30)
となっていて、Google Analytics APIのFeedリクエストで指定できるパラメータが渡せるようになっている。複数指定できるパラメータは配列として渡す。たとえば上位アクセスランキングのリストがほしい場合は上記メソッドを変更して、
$ga->requestReportData(ga_profile_id,array(‘pageTitle’,'pagePath’),array(‘pageviews’,'visits’),
’-pageviews’, null, null, null, 1, 10);
とすることで取得できる。
表示部分は
foreach($ga->getResults() as $result):
?>
<tr>
<td><?php echo $result ?></td>
<td><?php echo $result->getPageviews() ?></td>
<td><?php echo $result->getVisits() ?></td>
</tr>
<?php
endforeach
?>
を
<?php
foreach($ga->getResults() as $result):
?>
<tr>
<td><a href=’<?php echo $result->getPagepath() ?>’><?php echo $result->getPagetitle() ?></a></td>
<td><?php echo $result->getPageviews() ?></td>
<td><?php echo $result->getVisits() ?></td>
</tr>
<?php
endforeach
?>
のように変更する。
Xml-Rpc With WCFから「XML-RPC for WCF」をダウンロード。
上記blogのコメントに従ってXmlRpcDataContractSerializationHelperクラスのDeserializeStructメソッドのループ
while (reader.NodeType != XmlNodeType.EndElement)
{
}
の最後に、下記を追加。(ホワイトスペースと改行(XmlNodeType.Text)をスキップするため)
while (reader.NodeType == XmlNodeType.Whitespace || reader.NodeType == XmlNodeType.Text)
{
reader.Skip();
}
また、Desirializeメソッドでswitch (reader.LocalName)の case XmlRpcProtocol.DateTime:の日付の形式が、dateTime.iso8601の形式(下記例参照)でなかったため修正。
<dateTime.iso8601>19980717T14:08:55</dateTime.iso8601>
また、Desirializeメソッドで<value>の内側に型のタグがない場合stringにする処理がなかったため、メソッドの一番最後に
else if (reader.NodeType == XmlNodeType.Text)
{
returnValue = reader.ReadString();
}
を追加した。このモジュールの使う手順は下記。
<system.serviceModel>
<extensions>
<behaviorExtensions>
<add name=”xmlRpcEndpointBehavior”
type=”Microsoft.Samples.XmlRpc.XmlRpcEndpointBehaviorSection, Microsoft.Samples.XmlRpc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null” />
</behaviorExtensions>
</extensions>
<services>
<service behaviorConfiguration=”debugBehavior” name=”実装したクラス名”>
<host>
</host>
<endpoint address=”" behaviorConfiguration=”xmlRpcBehavior” binding=”webHttpBinding”
contract=”定義したインタフェース名” />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name=”xmlRpcBehavior”>
<xmlRpcEndpointBehavior />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name=”debugBehavior”>
<serviceMetadata httpGetEnabled=”true” />
<serviceDebug includeExceptionDetailInFaults=”true” />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled=”true” />
</system.serviceModel>
fiddlerはlocalhost宛の通信をモニタリングできないが、urlを指定するときにlocalhostの代わりにipv4.fiddlerを使用するとモニタリングできるようになる。たとえばUrlが
http://localhost:10000/
だったら、
http://ipv4.fiddler:10000/
と指定する。