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

2013-11-19

Jena エラーメッセージ対処法

Apache Jenaのエラーメッセージの説明と対処法。

already closed

model操作時に現れるエラーメッセージ。
model.close() が実行されると、リソースが開放されてしまい、それ以降ではmodelを参照できない。
スレッドでclose()が呼び出されていないかどうか要チェック。
Exception in thread "main" com.hp.hpl.jena.shared.ClosedException: already closed

2013-10-30

JavaでSQLiteを使う

RDBM(Relational DataBase Management System)には、MySQLをはじめいくつかのソフトウェアがあるが、個人で開発を行うような小中規模なアプリケーションではSQLiteがオススメだ。

Javaからデータベースを操作するためには、それぞれのRDBM用のJDBC(Java DataBase Connectivity)というAPIを用いる。

SQLiteをコマンドラインで使う

SQLite公式DownloadPageから環境に合わせた"command-line shell"をダウンロードし、適当なディレクトリに解凍する。インストールは以上。

sqlite3.exeを実行し、コマンドを叩く。
コマンドについては参考URLを参照。

SQLiteをJavaから呼び出す

SQLite-JDBCダウンロードページから最新バージョンの*.jarファイルをダウンロードする。適当なディレクトリに解凍する。
classファイル実行時のクラスパスにjarファイルを含める(IDEではプロジェクトのライブラリにjarファイルを追加する)。

SQLite-JDBCのサンプルプログラムがわかりやすい。


参考

SQLite公式
愚鈍人 JavaとSQLiteデータベース
DBOnline SQLite入門
sqlite-jdbc配布ページ

2013-10-23

Jarファイルのメインクラスを確認する

Jarファイルのメインクラスの確認の仕方

  1. 次のいずれかの方法でJarファイルを解凍する

    • 拡張子を.jarから.zipに変更して解凍
    • コマンドラインで以下のコマンドを実行
      >jar tvf JarTest.jar
  2. META=INF\MANIFEST.MF

    を開く

  3. Main-Class:
    以降に書かれているのがメインクラスである。
    メインクラスが指定されていない場合は、手動でメインクラスを記述することで、コマンドラインから実行できるJarファイルにすることができる。

2013-09-14

VirtuosoにYAGOをロードする

Windows環境にOpenLink Virtuosoをインストールし、YAGOオントロジーをロードする。

Virtuosoのセットアップ

  1. OpenLinkのDonwloadページから"Pre-built binaries for Windows"をダウンロードし展開し、適当なディレクトリに設置する。
  2. virtuoso-opensource\database\virtuoso.iniを編集する(環境に応じて設定すること)
    //Stripingを有効にする(DBのロードが速くなる模様)
    Striping = 0

    //DirsAllowedの末尾にyagoディレクトリを追加
    DirsAllowed = ., ../vad, ../yago

    //81行目以降のメモリ設定をマシンスペックに応じて設定する(例:16GB)
    ;; Uncomment next two lines if there is 16 GB system memory free
    NumberOfBuffers = 1360000
    MaxDirtyBuffers = 1000000
  3. システム環境変数に以下を加える:
    変数名:VIRTUOSO_HOME  値:virtuosoのインストールディレクトリ
  4. システム環境変数PATHの末尾に次を追加する:
    ;%VIRTUOSO_HOME%\bin;%VIRTUOSO_HOME%\lib
  5. コマンドプロンプトを開き、以下のコマンドを実行する
    cd %VIRTUOSO_HOME%\database
  6. 続いて、以下のコマンドを実行する
    virtuoso-t -?
    正しくインストールされていれば、適当なメッセージが表示される。
  7. serviceを作成する ※"Instance Name"は任意の名前が可
    (消去する際は"screate"の代わりに"delete"を用いる)
    virtuoso-t +service screate +instance "Instance Name" +configfile virtuoso.ini
  8. 以下のコマンドを実行して、サービスが登録されていれば問題なし
    virtuoso-t +service list
  9. サービスを開始する
    (終了する場合は "start" の代わりに "stop" を用いる)
    virtuoso-t -I "Instance Name" +service start
正常にセットアップが完了していれば、http://localhost:8890/conductorから管理画面に入ることができる。
初期ユーザー名とパスワードはともに'dba'。

YAGOのダウンロード

  1. YAGOのダウンロードページから"Download YAGO2s ontology in .ttl format! (2.2 Gb compressed, 18.5 Gb uncompressed) "を選択しダウンロードする。
  2. ファイルを展開し、VIRTUOSO_HOME\yago に設置する

RDFのVirtuosoへのロード

  1. コマンドプロンプトを開き、isqlと実行する
  2. isqlの対話モードになったら、以下のコマンドを実行する
    ※http://abcde.orgは任意のGragh IRIに設定する
    SQL> ld_dir ('../yago', '*.ttl', 'http://abcde.org');
  3. Load Listを確認する
    SQL> select * from DB.DBA.load_list;
    YAGOの.ttlファイルが表示され、ll_stateが0となっていればOK(1:ロード中、2:ロード完了)
  4. ロードを開始する
    ※このコードの実行には非常に時間がかかる(1~2日)
    SQL> rdf_loader_run();
    ※Loaderは複数実行できるようなので、以下の様なbatファイルをつくり実行しても可。この方が早く完了するかもしれない。
    bulk_load.bat
    start isql 1111 dba dba exec="rdf_loader_run();"
    start isql 1111 dba dba exec="rdf_loader_run();"
    start isql 1111 dba dba exec="rdf_loader_run();"
    start isql 1111 dba dba exec="rdf_loader_run();"
    start isql 1111 dba dba exec="rdf_loader_run();"
    start isql 1111 dba dba exec="rdf_loader_run();"
    start isql 1111 dba dba exec="rdf_loader_run();"
  5. 上のロードが全て完了したら、Load Listでステータスを確認する
    SQL> select * from DB.DBA.load_list;
  6. ll_stateが2となっていればロード完了。

SPARQLクエリを投げる

上記の設定がすべて完了すれば、SPARQLインタフェースなどでYAGOにアクセスすることができる。
http://localhost:8890/sparql/からSPARQLインタフェースを開ける。

サンプルクエリ
SELECT * WHERE {<http://yago-knowledge.org/resource/Albert_Einstein> ?p ?o}
参考
OpenLink Virtuoso - Using Virtuoso Open-Source Edition on Windows YAGO

2013-09-04

HTTPでSPARQLクエリを投げる

DBpediaなどでは、オントロジーののアクセスポイントとしてVirtuosoを採用している。
VirtuosoにはHTTP経由でクエリを投げることができる。
以下は実装例。
import com.hp.hpl.jena.query.*;
import com.hp.hpl.jena.rdf.model.RDFNode;
import com.hp.hpl.jena.sparql.util.StringUtils;

public class Virtuoso {

    public static void main(String[] args) {
        String service = "http://dbpedia.org/sparql";
        String queryString = 
                "PREFIX rdfs:  "+
                "SELECT ?x ?y "+
                "WHERE {?x rdfs:label ?y}";
        Query query = QueryFactory.create(queryString);
        
        QueryExecution qe = QueryExecutionFactory.sparqlService(service, query);
        try {
            ResultSet results = qe.execSelect();
            for (; results.hasNext();) {
                QuerySolution soln = results.nextSolution();
                RDFNode x = soln.get("x");
                RDFNode y = soln.get("y");
                System.out.println(x.toString());
                System.out.println(y.toString());
            }
        } catch (Exception e) {
            System.out.println("Query error:" + e);
        } finally {
            qe.close();
        }
    }
}

2013-08-25

Linuxで空き領域を完全消去

ファイルの復元を防ぐため、ファイルシステム上の空き領域を完全消去する。

Step1:パーティションの空き領域を確認する
Step2:空き領域分のダミーファイルを作成する
Step3:ダミーファイルをshredする

作業手順

  1. 以下のコマンドで空き領域を確認する。
    $ df
    Filesystem     1K-blocks    Used Available Use% Mounted on
    /dev/sda1       19609276 4506940  14106240  25% /
    udev              505076       4    505072   1% /dev
    tmpfs             204956     788    204168   1% /run
    none                5120       0      5120   0% /run/lock
    none              512384     156    512228   1% /run/shm
    
    空き領域をメモする。
    (ここでは14106240)
  2. 空き領域するに応じたダミーファイルを作成する。
    (空き領域の算出:14106240/1024=13775)
    $dd if=/dev/zero/ of=tempfile bs=1M count=13775
  3. (dfコマンドで空き領域を確認する)
  4. shredコマンドで消去する。
    $shred -uvz tempfile

2013-08-05

ポスター印刷の方法

画像や文書を複数の紙に分割して印刷(ポスター印刷)する方法。

画像ファイル

ペイントを使う

  1. 画像をペイントで開く
  2. ファイル - 印刷 - ページ設定
  3. 「拡大縮小」の「合わせる」で2x1ページ(適宜応じて)に変更
  4. 印刷の向きを適宜調節
  5. 印刷プレビューで確認

pdfファイル

Adobe Readerを使う

印刷ページでポスターを選択
参考
ITmediaエンタープライズ 画像を分割して拡大印刷したい

2013-07-28

覚えておきたい「ファイル名を指定して実行」コマンド

「ファイル名を指定して実行」(Win+R)で使えるコマンドのメモ。
環境変数のPATHで指定したディレクトリにショートカットを置くことで、任意のショートカットを追加可能。
コントロールパネルのコンポーネントは
C:\Windows\System32
にある。

コントロールパネル項目

  • アプリケーションの追加と削除 appwiz.cpl
  • イベントビューア eventvwr/eventvwr.msc
  • インターネットオプション inetcpl.cpl
  • インデックスサービス ciadv.msc
  • オブジェクトパッケージャ packager
  • 画面のプロパティ desk.cpl
  • 管理ツール contorol admintools
  • キーボードのプロパティ control keyboad
  • 共有フォルダ fsmgmt.msc
  • 共有フォルダの作成 shrpubw
  • グループポリシー gpedit.msc
  • ゲームコントローラ joy.cpl
  • コマンドプロンプト cmd/command
  • コンソール mmc
  • コントロールパネル control
  • コンピュータの管理 compmgmt.msc
  • サービス services.msc
  • サウンドとオーディオデバイスのプロパティ mmsys.cpl
  • サウンドレコーダー sndrec32
  • システムエディタ sysedit
  • システム構成ユーティリティ msconfig
  • システム情報 winmsd/msinfo32
  • システムのプロパティ sysdm.cpl
  • 自動更新 wuaucpl.cpl
  • 証明書 certmgr.msc
  • スクリーンキーボード osk
  • 送付状エディタ fxscover
  • タスクマネージャ taskmgr
  • 地域と言語のオプション intl.cpl
  • ディスククリーンアップ cleanmgr
  • ディスクデフラグツール dfrg.msc
  • ディスクの管理 diskmgmt.msc
  • デバイスマネージャ devmgmt.msc
  • 電源オプション powercfg.cpl
  • 電話とモデムのオプション telephon.cpl
  • ネットワーク接続 ncpa.cpl
  • ネットワークセットアップウィザード netsetup.cpl
  • ハードウェアの追加ウィザード hdwwiz.cpl
  • パフォーマンス perfmon/perfmon.msc
  • 日付と時刻のプロパティ timedate.cpl
  • ファイルと設定の転送ウィザード migwiz
  • ファイルの署名と確認 sigverif
  • フォント control fonts
  • フォントフォルダ fonts
  • プリンタとFAX control printers
  • プログラムの追加と削除 appwiz.cpl
  • 分散COMの構成のプロパティ dcomcnfg
  • ポリシーの結果セット rsop.msc
  • ボリュームコントロール sndvol32
  • マウスのプロパティ control mouse/main.cpl
  • 文字コード表 charmap
  • ユーザーアカウント nusrmgr.cpl
  • ユーザー補助の設定ウィザード accwiz
  • ユーティリティマネージャ utilman
  • リムーバブル記憶領域の管理 ntmsmgr.msc
  • リムーバブル記憶領域の操作要求 ntmsoprq.msc
  • リモートデスクトップ接続 mstsc
  • レジストリエディタ regedit/regedt32
  • ローカルセキュリティポリシー secpol.msc
  • ローカルユーザとグループ lusrmgr.msc
  • DDE共有 ddeshare
  • Direct X診断ツール dxdiag
  • Driver Verifier Manager(システム内のドライバ分析) verifier
  • Windows Script Hostの設定 wscript
  • Windows XPアカウントデータベースのセキュリティ保護 syskey
  • Windowsセキュリティセンター wscui.msc
  • Windowsバージョン情報 winver
  • Windowsファイアウォール firewall.cpl
  • WMI wmimgmt.msc

参考 みで@Wiki 「ファイル名を指定して実行」のコマンド一覧表

2013-07-20

自宅サーバにWordpressをインストールする

自宅サーバにWordpressをインストールする方法。

必要なもの

Apache
PHP
MySQL
Wordpress

Apache

\conf\httpd.cnfでPHPに応じた設定をする。
\bin\httpd.exeで起動する。エラー終了してしまう場合は、コマンドプロンプトから叩くと良い。

PHP

必要に応じてphp.iniをいじる必要あり。

MySQL

インストールし、localhostにバインドする。

Wordpress

Apache2x\htdocs\にインストールする。

Wordpressデータベースのコピー

既にWordpressを持っていて、データベースをコピーしたいときの手順。
GUIが便利なため、MySQL Workbenchで説明する。
  1. MySQL Workbenchを開く
  2. (右)の下にある'Manage Import/Export'をクリック
  3. 左のブラウザから'Data Import/Restore'を選択
  4. 'Import from Self-Contained File' を選択し、'File Path' で予めバックアップしたWordpressのSQL/Dumpファイル(.sql)を選択
  5. 'Default Schema to be Imported To' で 'new' を選択し、適当な名前(ここではtestschemaとする)のShemaを作成
  6. 'Start Import' をクリック
  7. 左上のホームタブをクリックしホーム画面に戻る
  8. 'Local instance MySQL**' をダブルクリックして開く
  9. Schema Browser で 'testschema' - 'Tables' を開く
  10. '***options' で終わるテーブル名を探す(wp_optionsとする)
  11. 中央のQueryWriterで次のクエリを書く
    select *
    from wp_options
  12. 稲妻マーク(Execute Query)をクリック
  13. 次の2項目を適宜変更する
    option_id:1 siteurl
    option_id36 home

OpenXML Document Viewer

Microsoft Office WORDファイルをXHTML化したいときに便利なのが"OpenXML Document Viewer"だ。

Code Plex OpenXML Document Viewer
例えば、WORDファイルをプログラムに食わせる際、通常取り出せるのはテキスト情報のみで、フォント情報はこぼれてしまう。
そこで、一度XHTML化をしてからXMLパーサーを使って分析することで、タグ情報まで拾うことができる。

2013-07-19

JenaAPIを用いたオントロジー構築

Apache Jenaを用いたオントロジーの構築方法。
日本語の記事があまりにも少ないため、落ち着いたらスタートアップガイドをまとめる予定。

サンプルコード

    public void testFunc2() {
        String BASE = "http://mybase#";
        OntModel model = ModelFactory.createOntologyModel(OntModelSpec.OWL_LITE_MEM);
        model.setNsPrefix("mybase", BASE);

        //RDF:TYPE
        OntResource BLOG = model.createOntResource(BASE + "Blog");

        //Property
        OntProperty hasName = model.createOntProperty(BASE + "hasName");

        //Class
        OntClass ITBlog = model.createClass(BASE + "ITBlog");
        ITBlog.setRDFType(BLOG);

        OntClass myBlog = model.createClass(BASE + "myBlog");
        myBlog.setSuperClass(ITBlog);

        myBlog.addProperty(hasName, "Catalina Note");
        myBlog.addProperty(DC.title, "Catalina Note");


        RDFWriter wr = model.getWriter("RDF/XML-ABBREV");
        wr.write(model, System.out, BASE);
        //以下でも可
        //model.write(System.out, "RDF/XML-ABBREV", BASE);
    }

※1
ModelFactoryでModelオブジェクトを生成する際にOntModelSpecを指定しないと、次のようにrdfsの定義まで出力されてしまう。
(ただし、model.writeメソッドで出力する場合はされない模様)
<rdfs:Datatype rdf:about="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral">
    <rdf:type>
      <rdfs:Class rdf:about="http://www.w3.org/2000/01/rdf-schema#Resource"/>
…

※2
リソースのrdfTypeを定義することで、rdf:IDで出力される。
そうでない場合はrdf:aboutとなる。

実行結果

<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:mybase="http://mybase#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
  <owl:Class rdf:ID="myBlog">
    <dc:title>Catalina Note</dc:title>
    <mybase:hasName>Catalina Note</mybase:hasName>
    <rdfs:subClassOf>
      <mybase:Blog rdf:ID="ITBlog"/>
    </rdfs:subClassOf>
  </owl:Class>
  <rdf:Property rdf:ID="hasName"/>
</rdf:RDF>
参考
Apache Jena
An Introduction to RDF and the Jena RDF API Jena I/O Mini HowTo assigning rdf:id in JENA

[NetBeans] コード補完

NetBeansを始めとしたIDEでは、自動でコード補完をしてくれる機能がある。
[省略名]を入力してから[tab]で展開することができる。

デフォルトのコードテンプレート

デフォルトで登録されているコードテンプレートとしては次のようなものがある。(NetBeansIDE, Java)

for

for (int i = 0; i < 10; i++) {

}

sout

System.out.println("");

カスタムコードテンプレート

以下の項目で、任意の省略名を追加することができる。
ツール - オプション - エディタ - コードテンプレート

私はよく使う次のような省略名を追加した。

try

try{
${selection}${cursor}
} catch (Exception e) {

}

it

Iterator ${IDX newVarName default="it"} = ${TREE default=tree}.iterator();${selection}${cursor}
参考
NetBeans IDE Javaエディタでのコード支援: リファレンス・ガイド

2013-07-09

[Apache] Skypeによるポート80の使用

Apacheを立ち上げようとした際に、次のようなエラーメッセージが出て立ち上がらないことがある。
(OS 10048)通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、またはポートのどれか 1 つのみを使用できます。 : AH00072: make_sock: could not bind to address 0.0.0.0:80 AH00451: no listening sockets available, shutting down AH00015: Unable to open logs

原因を調べてみよう。
エラーメッセージによると、ポート80に問題があるらしい。コマンドプロンプトでnetstatを叩く。
C:\>netstat -abn

アクティブな接続
プロトコル ローカル アドレス 外部アドレス 状態
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
[Skype.exe]
どうやらSkypeにポート80を使われてしまっているようだ。

Skypeのポートを変更

Skypeの設定を開き、「詳細」→「接続」タブを開く
「上記のポートに代わり、ポート80と443を使用」のチェックを外す

2013-07-03

Excelで数式を固定してセルをコピーする

セルの数式に相対参照セルが含まれていると、コピーした際に動かした分だけ参照セルがずれてしまう。
それを回避して、数式だけをコピーする方法を紹介。

  1. Ctrl+Shift+@ を押して、数式表示モードにする
  2. コピーしたいセルをコピーし、メモ帳に貼る
  3. メモ帳で、すべてを選択しコピーしなおす
  4. 貼り付け先のセルで貼り付ける
  5. 再び Ctrl+Shift+@ を押して、通常モードに戻す
参考
エクセルの学校『数式を変えないでそのままそっくりコピペする方法』

2013-07-01

Wordpressのトップページが表示されないときの解決

Wordpressインストール後、ログイン画面からログインに成功しても、ダッシュボードが表示されず、「Index of /wordpress/wp-admin」とwp-adminディレクトリのフォルダが表示されてしまうことがある。

原因はApacheの設定。
.htaccessまたはhttpd.confの設定で、DirectoryIndexを変更することで解決できる。
私のhttpd.confでは以下のように書き換えた。

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>
変更後
<IfModule dir_module>
    DirectoryIndex index.php
</IfModule>
参考
Wordpressフォーラム ログイン後TOPページが表示できません

PHPでMySQLを使うための設定

PHPインストール先のphp.iniを編集する。

  • 以下を変更する
    'extension=php_mysql.dll -> extension=php_mysql.dll
  • 以下を追加する
    extension_dir = "c:\php\ext"
参考
PHPBook.jp PHPの設定

ApacheでPHPを利用する

ApacheでPHPを利用するための設定。

メモ


Windows環境で、Apache2.0、php-5.5.0-Win32-VC11-x86を用いようとした。
しかし、php5.5.0には(nts版に関わらず)php5apache2.dllが含まれておらず、 dllライブラリからダウンロードしてきたものを使っても、モジュールのロードに失敗した。
原因は不明だが、Apache2.4の使用を推奨する。

apache2.4の入手先
Apache Lounge
(Apache公式ではソースしか公開してない)

php5.5.0(forWindows)の入手先
PHP公式
(Apacheとの連携にはThread Safe版を推奨らしい)


設定


Apacheフォルダ内の"httpd.con"を編集する。
(ここではphpをc:/phpにインストールした場合)

モジュールの追加

# Dynamic Shared Object (DSO) Support
のブロックの末尾に
LoadModule php5_module c:/php/php5apache2_4.dll
を追加

拡張子の登録

# AddType allows you to add to or override the MIME configuration # file specified in TypesConfig for specific file types.
ブロックの末尾に
AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
を追加  

php.iniへのリンク

ファイルの末尾に次を追加
<IfModule ssl_module> SSLRandomSeed startup builtin SSLRandomSeed connect builtin </IfModule> PHPIniDir "c:/php"  
参考
AdminWeb.jp PHP利用のための設定

CSSの優先度を変更する

プラグインで指定しているCSSとは別に自分でCSSを記述した場合、プラグイン側のCSSが優先されてしまい、オリジナルのCSSが反映されないことがしばしばある。
!importantを記述することで、優先度を変更することができる。
.class{
  background:#CCCCCC !important ;
}
参考
HTMLタグボード スタイルシートの優先度を変更する

2013-06-28

[Wordpress] テンプレート内でショートコードを使用する

ショートコードは固定ページや投稿記事内で以下のように書くことで呼び出せる。
(ここではshortcode01という名前のショートコードとする)
[shortcode01]


テンプレート内でもphpを用いて以下のように記述して呼び出すことができる。
<?php echo do_shortcode('[shortcode01]'); ?>
参考
あわわうぇ WordPressショートコードの書き方いろいろ

画面の外に隠れてしまったウィンドウの救出方法

  • タスクバーでアイコンをクリックし、アクティブ化する
  • Alt(メニューバーの表示)、Space(コンテキストメニューの表示)、M(Move;移動)を続けて押す
  • 任意の矢印キーを押す(例えば「→」)
  • ウィンドウがマウスに引き寄せられる

Excelを別ウィンドウで開く

複数のExcelファイルをクリックして開くと、ひとつのExcelの中ですべて実行されてしまう。
別のExcelウィンドウで開くためには、新しくExcelを立ち上げ、「開く」からファイルを選択する。