Pages - Menu

2013-12-29

Starting out Windows Powershell

Windows Powershell を始めるにあたってのメモ

ダウンロード

Win7以上の対応で最新版はPowershell4.0 (2013.12.29現在)。Windows Management Framework 4.0パッケージに含まれている。
Microsoft Download Center - Windows Management Framework 4.0
なお、Microsoft .NET Framework 4.5 が必要。
Microsoft Download Center - .NET Framework 4.5

とりあえずここまで。

2013-12-25

Win7の小ネタ

Windows7で地味に便利だと思う小ネタ。

エクスプローラー

  • Ctrl+フォルダをダブルクリック:新しいウィンドウで開く
  • Shift+右クリック:拡張メニューを表示(「パスとしてコピー」などが便利)

タスクバー

  • アイコンをShift+クリック:新しいインスタンスを開く
  • 起動してないアイテムのアイコンをShift+右クリック:通常のファイルに対するコンテキストメニューを表示
編集中...

PukiWiki Advance セットアッップのメモ

自前サーバでPukiWiki(Advance)をセットアップしたときのトラブルのメモ。

スペック
Windows7(x86), Apache2.4, PHP 5.4.23, PukiWiki Advance v1.0.3
(PHP5.5でPukiWikiAdv1.0.3を動かそうとするとwarning:preg_replaceがログされる。PHP5.4を推奨)

設定確認に関する基本的な事項

  • 必要なモジュールを公式ページでチェックし、正しくロードされているか確認する。
    モジュール設定後、正しくロードされている場合はphpinfo()でモジュール名がついたテーブルが表示される。
  • Apacheの/log/error.logを確認する。
  • pukiwiki/webroot/index.phpをエディタで開き、DebugModeを有効にする。
    index.phpを開いて、エラーがある場合は表示される。

index.php以外が表示されない

http://xxx/index.php は表示されるが、その他のページへのリンクでは、403やファイルの一覧が表示されてしまう。
次のようなパターンがある:

コマンドページが表示されない

たとえばログインページ(http://xxx/?cmd=login)に飛ぼうとして、403やDirectoryのファイル一覧が表示されてしまう場合は、はてなマーク以降のコマンド(cmd=login)がindex.phpに渡せていない。

解決法

URLを"http://xxx/index.php?cmd=login"に手動で変更すると正しく表示される場合は、DirectoryIndexの問題。
httpd.confまたは.htaccessでwebrootディレクトリのDirectoryIndexをindex.phpに変更する(以下参照)。

<IfModule dir_module>
      DirectoryIndex index.php
  </IfModule>

他ページが表示されない

例えばトップページのURLが"http://xxx/FrontPage"と表示される場合。

解決法

URLを"http://xxx/?FrontPage"(または"http://xxx/index.php?FrontPage)に手動で変更して正しく表示される場合は、wiki-data/pukiwiki.ini.phpファイルの設定が間違っている可能性がある。

  1. pukiwiki.ini.phpをエディタで開き、223行目あたりの$static_urlの値を0にする。
    これによって、/FrontPageが/?FrontPageのように出力されるようになる。
  2. Apacheのconf/httpd.confをエディタで開き、rewrite.moduleのロードをコメントアウトする。
    #LoadModule rewrite_module modules/mod_rewrite.so

その他

正しく表示されない場合、関係があるかもしれない設定項目。

rewriteモジュール

URLrewrite機能を利用しないならば(しないほうが無難だと思う)、rewriteモジュールはロードしないようにする(webroot/.htaccess内のIfModule rewrite.cで呼び出されるため)。

mbstringモジュール

php.iniを開き、module_mbstringのコメントアウトをはずす。さらに下のほうにある[mbstring]以降の設定項目を適宜コメントアウトを外して有効にする。

php.iniが反映されない

php.iniを編集しても、Apache上で反映されないことがある。
以下の項目をチェックする:
・httpd.confのPHPIniDirの参照先
・httpd.confのphp5apache2_4.dllモジュール(モジュールの設置場所は利用するphpのディレクトリ、たまにモジュールに問題があり接続できない?)

2013-12-16

SPARQL Queryについて:rdfs:label

リテラル値(rdfs:labelの値など)を含むクエリがうまくいかないことがある。
(OWL DL、Protege3.4.8)

たとえば次のようなリソースがあったとする。

<owl:Class rdf:about="http://test#component">
  >rdfs:label xml:lang="en"<component>/rdfs:label<
</owl:Class>
これに対して、次のクエリを投げてもヒットしない(ことがある)。
SELECT ?subject ?object
WHERE { ?subject rdfs:label 'component'@en }

確実なのはFILTERを使う方法で、これならばヒットする。

SELECT ?subject ?object
WHERE { 
?subject rdfs:label ?object. 
FILTER regex (str(?object), "component") 
}

2013-12-15

Dropboxを強制同期

インターネットに接続しても、Dropboxの同期に時間がかかることがある。
原因は不明だが、インターネットへの接続がDropbox同期のトリガーになっていないためであると考えられる。

解決策

Dropboxプロセスを再起動

Dropboxを一旦終了しふたたび起動することで、同期を促すことができる。
以下はDropboxプロセスを再起動するバッチファイル。

restartDropbox.bat
@echo off
Taskkill /IM Dropbox.exe /F
timeout /t 2
start "" "(Dropboxのインストールディレクトリ)\Dropbox.exe"
@pause

Dropboxにファイルを追加(未実装)

この記事を書いていて思いついたアイディア。筆者のメモ。
Dropbox同期フォルダ内のファイルの変更(追加)が、同期のトリガーとなりうる可能性が高い。
同期ファイルの書き換えをすることで同期を促すことができる(かもしれない)。
後日確認予定。

2013-12-10

ブラウザに渡したフラグメント識別子が無視される問題

一部の環境(OS・ブラウザ等による)で起こる問題で、フラグメント識別子を含むURIをブラウザに渡しても、#以降が無視されてしまうことがある。

WEBページへのショートカット、JavaでのDesktop.Browse()等でブラウザにURIを渡したときに起こる。
直接打ち込んだURL、WEBページからのリンクでは、問題なくフラグメント識別子を認識する。
Windows環境で多いようだ。

原因は不明だが、おそらくはウィンドウシステムの問題であり、解決は極めて困難だと思う。

代替案

一時的にダミーページを表示させ、フラグメント識別子を含む目的のURIへ自動転送する。

例:temp.html (目的のURL:http://nanaowls.blogspot.jp/test.html#aaa)

<HTML>
    <HEAD>
        <meta http-equiv="refresh" content="0;URL=http://nanaowls.blogspot.jp/test.html#aaa">
    </HEAD>
    <BODY></BODY>
</HTML>

参考

OTN Community Desktop.browse() won't show URI fragments on Windows