Windows環境にPerlをインストールする!(Strawberry Perl)

Windows環境にPerlをインストールする方法について記述します。

Active Perlが有名ですが、フリー版での商用利用はライセンスに抵触するため、個人利用以外の場合はStrawberry Perl がもう一つの選択肢と判断しました。

Strawberry Perlのライセンスは、GPLもしくはArtistic ライセンスになっているので、Active Perlよりは使い勝手が良さそうです。
また、Active Perlにおける以下の問題も気になった次第です。

  • CPANが標準で使用できない。(現在は改善されているみたいですね)
  • Perl本体のバージョンが詳細までは確認できなかった。
    Perl本体最新バージョン:5.20.1
    Active Perl:Perl本体バージョン 5.20
    Strawberry Perl :Perl本体バージョン 5.20.1.1

ということで、Strawberry Perl をインストールします。

Strawberry Perl のダウンロード

下記URLよりダウンロードします。
https://strawberryperl.com/

インストール

ダウンロードしたファイルをダブルクリックしてインストーラーを起動します。
対象ファイル:strawberry-perl-5.20.1.1-64bit.msi

NEXTで次へ

 ライセンス内容を確認したら、I Accept the terms in the License Agreement にチェックを入れて、NEXTで次へ

Linuxでは/usr/bin/perlなのですが・・・Perlのプログラムで記述する最初の一行目にパスを記述するので、変更してみる。

変更したら、NEXTで
<<<追記>>>
変更しても意味有りませんでした。
実際に作成されるperlの実行モジュール(perl.exe)は、下記のパスに作成されています。
c:\usr\bin\perl\bin\perl.exe

無駄な抵抗でしたという落ちですね。
まあ、気分ということでご勘弁ください。

Installを開始する。しばしお待ちを・・・ユーザアカウント制御の画面が出てきたらOKを押して続けてください。

完了すると以下の画面が表示される。

 README.txtがメモ帳などで開いているはずなので、一応一通り目を通して。。。。コマンドプロンプトを起動します。

コマンドプロンプトで以下のコマンドを実行すると、バージョン情報が表示されます。

perl -v

 以上でStrawberry Perl  のインストールと動作確認は完了です。

この後の使い方などについては、いずれまた。

 

Linuxでプロセスの性能測定を行う。

Linux上でプログラムの実行時間を計測する場合、timeコマンドを使用します。

私の場合、CentOS上で動作させることが多いのですが、その際に使用するのがtimeコマンドなのですが、bashに組み込まれているtimeコマンドが勝手に(当然ですが・・・)使われてしまいます。
そんな愚かな私のために、メモを残しておきます。

timeコマンドは、/usr/bin/timeを使用します。
いっそのこと、aliasで切りなおしたろか!?と思うくらいwww

で、使用方法はmanページに任せるとして、詳細な計測結果を以下のオプション付きコマンドで得ることが可能です。

$ /usr/bin/time -v command

-vオプションを指定することで、詳細な計測結果を出力してくれます。

その際、気になるのが以下の項目です。

Maximum resident set size 直訳すると、最大使用実メモリサイズ?となるのでしょうか?
ps auxで得られるメモリ使用量と比較してみても、大きく値に隔たりがあります。
起動時に使用するメモリが大きいのか?そんなはずはない!・・・ということで調べてみることに・・・・

Voluntary context switches この値が影響しているみたいです。
本当かどうかは微妙ですが、コンテキストスイッチが行われると、使用メモリも移動してしまう?そのために、Voluntary context switchesの値を掛けた値がMaximum resident set sizeになっているようだ。

つまり、Maximum resident set sizeをVoluntary context switchesで割った値が実質的な最大使用メモリサイズになる。

<まとめ>

/usr/bin/time -v command

で計測された結果で実行時間の計測が可能。

実質的な使用最大メモリは、

Maximum resident set size / Voluntary context switches

となる。

ps auxやpmapsで確認すると、概ね正しい結果をえられる。

今時のPCで数キロ単位のメモリ消費が異なっていても誤差にしか過ぎないと考えて、この値を採用することにしよう!

これを見て、間違っているようでしたら、どなたかご指摘してください。

セキュリティの関係上、コメント時にはメールアドレスを入力することになっていますが、実のところ、メールアドレスは存在しないメールアドレスでもOKです。
こうしておくと、下手な人がコメントすることもないので・・・・(^^♪

postGISでシェープファイルを登録する。

とうとう手を出してしまった。。。。(TT)

DB大嫌いな私が、とうとうこの世界に手を出してしまった。
まだ入口に足を踏み入れただけだから、初歩的なところから始めます。

今回のお題は、postGISを使ってシェープファイル(SHP)とCSVファイルを空間結合して、新たなシェープファイルを作成するところまでです。

Rを使ってなんとか頑張ってみようと試みたところまでは良かったのですが、以下の課題が発生しました。

  • シェープファイルを読込むのが遅い
  • 空間結合に至っては、遅すぎて戻ってこない。
    もしかするとやり方がまずかったか?
    こちらも初心者なので、まずかったかな?

少なくとも、シェープファイルを読込むのが遅い段階で、使えないなと諦めに入っている状況です。ただし、トータルメリットについては考える余地があるので、別途検討は進めたいと思っています。詳細は、気が向いた時にでも報告します。

さて、postGISを使ってシェープファイルを読込む方法について纏めます。

ステップは2段階です。

1)DBを作る。
#ネットで調べると意外と別々に記載されていて、調べるの面倒なので、ここにまとめてメモしておく。

既にDBを作成されている場合は、新たにDBを作る必要はありません。
この作業をスキップしてください。

createdb -U username -T postgis_21_sample new_dbname

 username : postgreSQLのユーザー名
new_dbname:新規にDB作成する場合のデータベース名
postgis_21_sample:テンプレートになるDB名称です。
postGISをインストールする時にインストールしたものを使うのでしょう。

2)シェープファイル(SHP)を登録する。

shp2pgsql [-d] shape_file.shp table_name | psql -U username dbname

もっともシンプルな書き込みで、DBに対しINSERT命令を繰り返し行います。
-dオプションは、既にデータが存在する場合に、一度削除してから書き込みます。

これを高速に行ってくれるコマンドをもう一つ見つけました。

shp2pgsql -D [-d] shape_file.shp table_name | psql -U username dbname

-Dオプションを使うと、postgresqlのDumpフォーマットを使って書き込みを行うので速くなります。基本的に問題がないならこちらがおすすめです。

今回はここまで。次回はこのデータにCSVを空間結合してシェープファイルを作成するところまで進めたいと思います。
シェープファイルの出力は分けた方が良いかも知れないので、次回考えます。

 

地域メッシュをQGISで作成する。

地域メッシュをダウンロードして使おうと思ったのですが、1/8地域メッシュが見つからなかったので、作成することにしました。

一から作ると意外と面倒なのですが、QGIS用に作ってくれている方が居たみたいです。

QGISのプラグインに「JapanMesh」なるプラグインを発見!!早速入れていました。

使い方はReadme.txtを見ると書いてあります。

まず、1次メッシュを作成します。

次に、2次メッシュを作りたい場所の1次メッシュを選択して、2次メッシュを作成します。

後は、この繰り返しです。

欲しかったメッシュは1/8メッシュだったのですが、求めていたコード体系と異なっていたので、変換ロジックを作って変換しました。

この時行ったロジックでは以下のコード体系(3次メッシュ以降)を変換しています。

元)

333 334 343 344 433 434 443 444
331 332 341 342 431 432 431 432
313 314 323 324 413 414 423 424
311 312 321 322 411 412 421 422
133 134 143 144 233 234 243 244
131 132 141 142 231 232 241 242
113 114 123 124 213 214 223 224
111 112 121 122 211 212 221 222

 

変換後)

0700 0701 0702 0703 0704 0705 0706 0707
0600 0601 0602 0603 0604 0605 0606 0607
0500 0501 0502 0503 0504 0505 0506 0507
0400 0401 0402 0403 0404 0405 0406 0407
0300 0301 0302 0303 0304 0305 0306 0307
0200 0201 0202 0203 0204 0205 0206 0207
0100 0101 0102 0103 0104 0105 0106 0107
0000 0001 0002 0003 0004 0005 0006 0007

 

変換に用いたロジックは以下です。

floor("m6code"/1000)*10000+(floor((("m6code"%1000)-100)/200)*2^2+floor((("m6code"%100)-10)/20)*2+floor((("m6code"%10)-1)/2))*100+(floor((("m6code"%1000)-100)/100)%2)*2^2+(floor((("m6code"%100)-10)/10)%2)*2+(floor((("m6code"%10)-1))%2)

それと、このプラグインはデフォルトで2000メッシュまでしかサポートしていません。
JapanMesh.pyの中に「2000」と記述されているので、ちょっと増やしてあげると便利です。

変更するプログラムファイルの保管場所を説明します。

対象ファイル:C:\Users\<ユーザ名>\.qgis2\python\plugins\JapanMesh\JapanMesh.py

ファイルの保管場所は、「プラグイン」→「プラグインの管理とインストール」→「JapanMesh」にインストールされているバージョンと保存場所が記載されています。
該当するフォルダーを開いて対象ファイルを変更すればOKです。

ちなみに、リミッターが2000メッシュまでとされているのですが、拡張して50mメッシュの4.8万程度を10mメッシュに分割したところ、すごく重たかったです。1時間くらい掛かるかな?根気よく待つべし!
大量のメッシュを作成したい場合には、細分化して実行するか、もしくは他の方法を考えた方が良いかも知れません。
お手軽ではありますが、時間が掛かります。

iPhone起動しない!

昨晩、フル充電したはずのiPhoneが、電源が落ちていて起動する事が出来ない!
壊れた?

丸ボタンを長押ししたり、スリープボタンを押しても反応無し。

ネットで調べたらサポートへ…
さらに調べて解った!!

スリープボタン(うえのボタン)と丸ボタンを同時に押し続けること15秒程…何事も無かったかのように、食いかけのリンゴのマークがf^_^;
復活した。

びっくりしたやんけ(♯`∧´)

RT MapServer Exporterを使いたい!

MapServerのmapファイルを作成するのに、QGISを使っていると、mapファイルを勝手に作ってくれるツールが欲しくなる。
でも、単純にプラグインをインストールして「RT MapServer Exporter」を起動しようとすると、以下の様なエラーに出くわす(^^ゞ
ちなみに、今回使用しているQGISは2.4の64Bit版です。

Traceback (most recent call last):
File
“C:\Users\xsc/.qgis2/python/plugins\rt_mapserver_exporter\plugin.py”, line 65, in run
from .mapfileexportdlg import MapfileExportDlg
File “E:/osgis/QGIS/apps/qgis/./python\qgis\utils.py”, line 453, in _import
<つづく>

なんでやねん!?と色々と調べるも・・・
結局答えはここに書かれていた。
https://plugins.qgis.org/plugins/rt_mapserver_exporter/
<以下抜粋>
It needs python-mapscript istalled in your machine. This is available as a Debian (therefore Ubuntu) package, and as a part of OSGeo4W on Windows.

ここでは、python-mapscriptが必要で、インストールしてあることが必要らしい。
なんじゃそりゃ?
ということで、プラグインにそんなんあるんかな?と探してみるも存在しない。
OSGeo4Wでインストールしていたので、Setupを起動して・・・

StartUp
StartUp

アドバンスインストールを行う。

RT_MapServerExp2

後は適当にデフォルトの設定を進める。
もちろん、インターネット接続する。

 

 

RT_MapServerExp3

フォルダー名は、インストール時の設定がそのまま反映されているはず。

RT_MapServerExp4

RT_MapServerExp5 RT_MapServerExp6

もくもくと進めると、時折、以下の画面で固まる時があった。

サーバーとの接続が上手く行かない時が頻繁にあるようだ?
私のネットワーク設定が影響しているのか不明であるが・・・そんなもんなのかな?とも思える。誰かコメントして頂けるとありがたい。

RT_MapServerExp7

 

10秒程待っても進まないときは、多分待っても無駄なので、キャンセルして最初からやり直した方が早い。
私の場合は、数回チャレンジすることもしばしばである。

 

RT_MapServerExp7

 

で、肝の部分です。
上記の3項目にチェックを入れて、インストールの対象にする。
これで、後はひたすら「次へ」を押して進めればインストールしてくれる。
で、お気付きの方もいらっしゃると思いますが・・・・
python-mapscriptではなくmapscript-python。。。になってるんですよね。Linuxだと正しい名前なのかな?とWindowsだからなのかは知らん!!

ということで、これを入れてから、プラグインの追加を行えば上手く動作させることが出来た。

ちなみみ、使い方については、解りません(^^ゞ

プラグインを追加すると、Web(W)というメニューが追加されるので、RT MapServer Exporter」を起動すると、以下の画面が表示されます。

RT_MapServerExp9

ここからは、誰かがきちんと書いてくれているサイトを探した方が良いと思うけど・・・

Map file Mapファイルの保存先(多分日本語はやめた方が良い)
Name 多分レイヤ名になってくるのかな?
Image type Webで使用するので、デフォルトpngでお好みに応じて。
Width / Height 私の場合は、Web使用するのであまり意味はないと思う。
Shape path Shapeファイルのフルパスを入力。
後で、Mapファイルが出来てから、相対パスに変更した方が良いと思います。
Online resource URL これっているのか?と思いますが。。。。そのまんまで(^^ゞ
Image path 出力先
Image URL URLでの出力先
Temporary path テンポラリ領域なのだが。。。必要なのかな?
External graphic regexp  解らん!

取りあえず、適当に書いて、Mapファイルを出力して中身を良くて見てみると、いっぱいダメな部分があるので、適当に書き換える。

感覚としては、Layerのセクションだけは、QGISの設定を反映してくれているみたいなので使えるけど、他は適当に使えるベースの様な物を準備しておいて、切り貼りする方が良さそうな気がした。

誰か詳しく説明してくれている場所があったら教えてくださいm(__)m
って、サイト立ち上げたばかりで、だれも見てくれていないだろうに・・・・

WordPressのサブドメイン対応に

いきなりですが、前回までにWordPress本体のインストールがサブドメインで指定したURLに設置されました。
このページから見た人は、以前のページを見てくださいね。

さて、サブドメインで使えるようにWordPressを設定します。
基本的には他のサイトで紹介されている方法と全く同じなのですが、ちょっと違うのは、本体自体もサブドメインで設定されていることです。

ということで、本題に入ります。

wp-config.phpを変更します。
wordpressのフォルダー直下にあるはずです。

以下の一文をwp-config.phpに追加します。
「編集が必要なのはここまでです」を記載されている部分よりも前に入れてください。

define(‘WP_ALLOW_MULTISITE’, true);

メニューの「ツール」をクリックすると、「ネットワークの設置」を選択できるようになります。
「ネットワークの設置」をクリックします。

WordPressサイトのネットワークの作成
WordPress Network Settings

「サブドメイン」を指定して、必要な情報を入力し「インストール」を行います。

次に、画面の指示に従って、wp-config.phpと.htaccessを編集します。

WordPress Network Settings

画面の指示にはありませんが、以下の操作を行います。

wp-contentに移動して、blogs.dirを作成します。パーミッションはapacheに変更します。
# cd wp-content
# mkdir blogs.dir
# chown apache:apache blogs.dir

続いて、ブログのサイトを追加するのですが・・・・
その前にプラグインを追加します。
画面左上の「参加サイト」にマウスカーソルを合わせて、「サイトネットワーク管理者」を選択します。
画面上部に「サイトネットワーク管理者:XXXXX」表示されるはずです。

「プラグイン」→「新規追加」を選択し、「WordPress MU Domain Mappin」をインストールします。
「ネットワークで有効化」をすることを忘れないように。

さて、ここからが山場です。
サイトを追加します。
「サイト」→「新規追加」を開きます。

サブドメインのサイトを追加する画面
WordPress Sub-Domain Bolg Settings

「サイトのアドレス」にサブドメインを指定します。
気になるところで、その下に記述されているアドレスが、メインサイトのドメインが記載されていると思います。
メインで使った「main.domain.net」になっています。
つまり、この時点で指定するのは、「sub1.main.domain.net」がアドレスになっています。
ここでは気にせず、そのままサイトを作成します。
「サイト名」や「管理者メールアドレス」には必要な情報を記載してください。

ここで、wp-config.phpをもう一度開いて、以下の一行を追加します。

define( ‘SUNRISE’, ‘on’ );

wp-contentディレクトで以下のコマンドを実行してsunrise.phpをwp-contentディレクトの直下にコピーします。

# cp ./plugins/wordpress-mu-domain-mapping/sunrise.php .

「設定」→「Domain」をクリックしてください。

Site IDを指定します。
この番号は、最初にメインサイトで使用している番号が1で次にサブドメインで作ったサイトが2になっています。
順番に番号が振られる様です。
なので、削除したりするとどうなるか・・・・調べ方が解ったら、別途お伝えします。

「設定」→「Domain Mapping」を選択して、Saveします。

Domain Mappingの画面
Domain Mapping

何やってるか解んないけど、取りあえず、これやらないと次が上手く行かないみたい(^^ゞ

次に、「設定」→「Domains」を指定して以下の画面を表示。

ドメインマッピングの設定
Domain Mapping

domainに本来設定したいDomainを指定します。
Site IDに2を指定します。(2番目に作ったから)
sub1.domain.net

※Site IDの確認方法はこちらで確認できます。

下に表が表示された成功です。
なかなか下に表が表示されない時があるようです。
何故なのかは不明。
多分、Domain Mappinをなんらしか登録しておかないと、Domain側が正常に動作しないのではないかと思われます。
カット&トライの連続なので、正しいかどうか?ご意見いただければと思います。

参加サイト→Sub1を選択し、ダッシュボードが表示されたら完成です。

お疲れ様でした。これでWordPressをサブドメインで作成するところが完成しました。

もしかすると・・・右側メニューの「サイト」→「全てのサイト」で一覧を表示させて、ドメインの指定を本来の
URLに指定し直した方が良いかも知れません。

<目次>

  1. WordPress用のデータベース構築
  2. WordPressのダウンロード
  3. WordPressのインストール方法を考える(今更?)
  4. WordPressのインストール<サブドメイン型?複数ドメイン型?>
  5. WordPressのインストール<Apacheのサブドメイン対応>
  6. WordPress本体の初期設定
  7. WordPressのサブドメイン対応に

WordPress Site IDの確認方法

WordPressに登録したブログサイトのIDを確認する方法について説明します。

ブログサイトをサブドメインで登録する際に、Site IDが必要になるのですが、そのIDを調べる方法が解らなかったので、探してみたらこんなところに記録されていました。
もっと良い方法があるかも知れませんが。。。素人考えです。

<目次>

  1. WordPress用のデータベース構築
  2. WordPressのダウンロード
  3. WordPressのインストール方法を考える(今更?)
  4. WordPressのインストール<サブドメイン型?複数ドメイン型?>
  5. WordPressのインストール<Apacheのサブドメイン対応>
  6. WordPress本体の初期設定
  7. WordPressのサブドメイン対応に

 

 

WordPress本体の初期設定

疲れてきました。。。。
でも、前回までで概ね準備は完了していますから、後は通常のインストール方法と同じです。
所謂「5分でブログを開始!!」のところまで来たと思えば気が楽になるかな?

今回は、WordPress本体の初期設定が完了して、実態が使えるようになるところまで進めます!!

ちなみに、この時点で概ね50%程度の進捗状況ですw

とは言え、概ね山は越えましたので、下り坂です♪

本体の初期設定を行います。

ブラウザで下記URLを開きます。

https://main.domain.net/  ⇐実施のURLをご利用ください。

WordPress初期インストール画面
WordPress StartUp Image

 

まず、作成したデータベースの設定を行います。WordPress DB設定

WordPress Database Settings

次が表示されればOKです。WordPress データベース設定完了画面

WordPress DB Settings Success!
次に必要情報を登録します。(ここから5分ですねw)
最初に作成されるブログサイトになるのですが・・・・
本体運用はサブドメインと考えると、本体のブログが必要なのか?という思いもあります。
本体に指定しているドメインを検索エンジンに登録したくない場合は、画面下の「検索エンジンによるサイトのインデックスを許可する。」のチェックボックスを外してください。(どこまで有効化は知りませんが・・・)
WordPressへようこそ!!

WordPress Welcome message & Needed information

次は何を設定するのか?と思いながら、WordPressをインストールボタンを押して、次の画面へ・・・・

WordPressインストール完了画面
WordPress Install Success!!

最後?は駆け足でしたw
ログインボタンをクリックしてログイン画面に移動します。

この時点で本体の設置は完了です。
単純にサブドメインで1つだけブログを立ち上げたい場合はこれにて終了です。
使い方は、いずれ紹介するかも?ですが、他のサイトをご参考にしてください。

と、ここで終わると、なんじゃったんじゃい(´・ω・`)。。。なので、次からがここの本番である、サブドメインで複数ブログの立上げです♪

 

<目次>

  1. WordPress用のデータベース構築
  2. WordPressのダウンロード
  3. WordPressのインストール方法を考える(今更?)
  4. WordPressのインストール<サブドメイン型?複数ドメイン型?>
  5. WordPressのインストール<Apacheのサブドメイン対応>
  6. WordPress本体の初期設定
  7. WordPressのサブドメイン対応に