VirtualBox Guest Additions のアップデート

よく分かっていなかったので、アップデート方法をメモしておく。

デスクトップの上部に「Virtualbox Guest Additions update available」と言うようなメッセージが表示されたら、以下の手順でアップデートする。
(1)デスクトップ上の「VBoc_GAs_XXXX」(XXXX:バージョン番号)をダブルクリック

(2)autorun.sh の実行

以上

XAMPP for WindowsのPHP 7からMongoDBを使用する

タイトルが長いけど致し方ない。
情報が錯綜し、これだけの条件を指定しないと
誤った設定を指定してしまうためだ!

Windows10にxamppおよびMongoDBをインストール済みで
php7からMongoDBに接続するまでがこのブログの課題。

ステップ1:
MongoDB PHP ドライバをpeclから「7.X Thread Safe (TS) x86.」をダウンロードする。
ステップ2:
ダウンロードしたzipファイルを展開し、その中の「php_mongodb.dll」を “/xampp/php/ext” にコピーし、”/xampp/php/php.ini” に次の行を追加する。

ステップ3:
xampp-control パネルから Apache を再起動。
ステップ4:
phpinfo を使用し、次の図のようにMongoDBの動作を確認する。

ステップ5:
次の php-mongo.php というファイルを作成し、PHP 7 から MongoDB に接続できるかテストする。

ブラウザに次のように表示されれば接続成功です!

【参考】

  1. 公式ドキュメント
  2. Configure MongoDB with PHP 7 for XAMPP on Windows

ナンクロにはまる(4)検索

SQL に精通していない私にとり、「くり121」のような検索(slelect)でも何とかなるだろうとボンヤリと考えていたが、調べてみると SQL で出来るのは精々「くり___」まで。
「くり」を含む5文字の単語検索は SQL で出来ても、「121」の部分は自力で対応せざるを得ないようだ。

年の所為か妙案が全く浮かばない。
華麗なロジックを諦め、捻り出したのが超ダサい
全文字総当たり方式
つまり、
(p1) 「くり___」で得られた結果の集合から配列Aを作る。
(p2) 1 の部分に「あ~ん」+ 「-(カナ長音)」、2 の部分に「1 以外の文字」
を割り当てた文字列aを作る(実際には、「く」と「り」を除く必要がある)。
(p3) 「くり+a」が配列Aに存在するかチェックする。
(p4) 存在した「くり+a」だけで配列Bを作成すれば「くり121」に絞り込める。
という次第。
ダサいが確実、でも処理時間 & 処理方式が・・・
ということで、無い知恵を絞り考え出したのが以下の改善策。

検索文字数の絞り込み

(1) 変数の「1と2」に該当するのは、「くり___」で得られた文字の範囲に限られる。
(2) その中に「く」と「り」が含まれていれば、既に使用済みなのでそれを削除する。
この集合をCとする。
(3) 上記(p2)の「あ~ん」+ 「-(カナ長音)」に代え、集合Cを使用すれば、検索する
文字数を減らすことが可能ではないか。
この方式以外に名案が思い浮かばないのでこれに決定。
配列A内の全単語を一文字ずつに分解し、重複する文字を削除して文字集合Cを作るのは
それ程難しくはない。

存在チェック

(p3)の存在チェック処理方式は、「正規表現」の一択のみ!
その汚いロジックを見られたくないのでサーバサイド(PHP)でやることに!

正規表現パターンの生成と絞り込み

① 「1→あ」の場合、「くり121」から正規表現のパターン
/’くりあ[^あ]あ’/
を生成する。

  • preg_replace(/’1’/, ‘あ’, ‘くり121’) → くりあ2あ
  • preg_replace(/’2’/, ‘[^あ]’, ‘くりあ2あ’) → くりあ[^あ]あ

② このパターンを配列Aとマッチング
preg.match(/’くりあ[^あ]あ’/, 配列A[n])

処理に関しては、方式のみでこれ以上の深入りは避けようと思います。
完成品はナンクロ単語検索をご覧ください。

ナンクロにはまる(3)辞書

ナンクロ用の単語辞書作成手順を以下に示します。
辞書には次の2つを使用することにしました。
(1)豚辞書(第12版)……. ①
(2)SKK辞書(SKK-JISYO.L)..②
豚辞書(第14版)が最新らしいが、現在は公開していないらしく入手できませんでした。
版を重ねている分、14版の方が単語数が多いのだろうと推測できるので、その少ない分をSKK辞書から追加しようとの作戦です。

SKK辞書を使用するに当たり、次の変更を加えています。
(1)動詞の活用形部分等は不要なため、先頭から英字単語までの全体を削除
(2)かな部分に “>” や “#” を含むものを削除
(3)拗促音「ぁぃぅぇぉっゃゅょ」を「あいうえおつやゆよ」に変換

この ①、② からcsvファイル(1フィールドの単純なプレーンテキストファイル)を作成し、sqlite3 にインポートしました。
この DB 操作には、「DB Browser(SQLite)」がお勧めです。

このデータを公開するには、著作権上問題なしとはしないので公開は控えます。
個人的にプログラミングの練習に必要な方は、コメントを残してください。
対応を検討します(2019年内のみ)。

ナンクロにはまる(2)

「ナンクロかな/漢字単語検索」を使ってみて、
(1)どのような辞書を使い
(2)それをどのように検索しているのか
との、疑問が湧いてくる。
病院内では如何ともし難い。スマホはあっても金食い虫で、基本スマホは
使用禁止にしていたので、退院後自宅での課題とした。
以下は、自宅で調査した内容です。

辞書

「ナンクロかな/漢字単語検索」で使用している辞書は次の2種類。
(1)豚辞書(第14版)
(2)SKK辞書
豚辞書(第14版)は、現在は公開されてない(2019/8/20現在)ようです。第12版は Vector
から入手できます。
SKK辞書は、上のリンクを辿ればダウンロード可能です。
なお、SKK辞書は通常の辞書ですので、拗促音(ぁぃぅぇぉっゃゅょ)を大文字に変換
しないと、豚辞書との整合性が取れない点に注意する必要があります。

検索方法

SQLでどうにかなるかなと思いきや、検索したい未知のかな文字に指定できるのは
“%” か “_”(アンダーバー)のみ。
例え単語用の辞書をRDBに作成したとしても、「くり121」を検索するには、

これが限界。
プログラムで対応せざるを得ないことに漸く気付くも、ロジックが・・・・

ナンクロ用単語辞書作成
ナンクロ用単語検索

ナンクロにはまる(1)

6/末から7/30までの長期間にわたり、病気治療のため入院を余儀なくされた。
この病、痛くも痒くもないので病院内なら移動は自由(点滴棒と一緒なら)。
余りに退屈なので、1階にあるコンビニを覗くとクロスワードパズルや
ナンプレ(数独)などの雑誌がたくさん並んでいる中で選んだのが「ナンクロ」。

部屋に戻り、内容を見てビックリ。
クロスワードのようなヒントはなく、わずかなカナ文字が数個指定されている
のみで、残り30字程度の文字をそのわずかなヒントから類推して、マスの中に
指定された番号にそれを埋め完成させるというもの。

これはなかなか難解で、入院後半の退屈さを十分紛らわせてもらいました。

単語がどうしても類推できなかったら、
「ナンクロかな/漢字単語検索」
というサイトもあるのでご参考までに。

Apache ログの変換

apache のエラーログにおいて、日本語のメッセージが16進数形式の文字に変換され読めない。
“\x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83\x82\x83W\x83\x85\x81[\x83\x8b\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B”
読めるか、これが。
これを日本語の読める形式に変換したいんだけど。
インターネットを探せば、shell コマンドを得意げに紹介しているものばかり。
こちとら、windows 環境で、チットばかり急いでんだぁ!
さくさく変換できるサイトは無いんかい?
—– ありました!
探しあぐねて漸く行き着いたのが次のサイト。

16進数エスケープ文字デコードツール

変換したら「指定されたモジュールが見つかりません。」とのこと。
知ったかぶりのコマンドなんかより遥かに役に立つ。
今後も使用させて戴きたいのでメモに残しておこう。

blogdownへの道(6):終

GitHubのブログを公開

いよいよ最終回です。
次の手順で、アップしたブログを公開してみます。

  1. GitHub にアップした my_blog を開き、”setting” タブを選択します。
    図 6-1 公開手順 初期画面
  2. 表示された画面を、下方にスクロールし “GitHub Pages” というタイトルを探します。
    その中の、”Source” の下にある “None” と表示されたプルダウンをクリックします。
    そのプルダウンから、”master branch/docs folder” を選択します。
    図 6-2 ソース選択
  3. この操作で、公開サイトのリンクが先程の “Source” のすぐ上に表示されます。
    図 6-3 公開サイト

以上の結果、表示されたのがこの画面!

図 6-4 残念な結果

CSS、画像、Post 等々全然無視されている!
何故だ?!

(追記)
アップロード時に、Hugo のテーマと css や JavaScript が ./docs に正しくアーカイブされていないのが原因と思われます。
そのため

を実行すると、docs フォルダが作成され、その下にサイトの公開に必要なものがすべてアーカイブされます。
その結果、
図 6-5 最終結果
このように、正常に表示されるようになりました。
【前に:blogdownへの道(5)】

blogdownへの道(5)

GitHubへのアップロード

GitHub リポジトリへアップロードします。
アップロードではなく、Commit とか Push と言うのが正しいのかも知れませんが、如何せん GitHub の知識が皆無に近いので不正確な表現にはご容赦ください。
以降は、参考サイトの手順に従い進めていきます。

  1. フォルダ “public” を “docs” に変更し、Git タブを選択する。
    図 5-1 commit1
  2. Git タブ内の初期状態はこのように、全て未選択状態になっています。
    図 5-2 Gitタブ内の初期状態
  3. 全ファイル(ホルダ)の “staged” をクリックして選択し、次に “commit” ボタンをクリックします。
    (注): “staged” をチェックする際、フリーズする場合があるようです。特に、”docs” や “theme” のようにディレクトリの階層が深い場合やファイル数が多い場合に発生するような気がします。この状態を脱するには “Ctrl+Alt+Del” でプロセスを停止するしかない(のかな?)。”stage” するには、私の場合は SourceTree を使用しましたが、git add -Aでもよいそうです。
    図 5-3 Gitタブ内ファイル選択後の状態
  4. 上の操作で、次の画面が表示されるので “commit message” に好みに応じメッセージを入力後、”commit” ボタンをクリックします。
    図 5-4 commit 押下後の画面

    commit が終了すると、次のような画面が表示されるので “close” ボタンを押し閉じてください。

    図 5-5 commit完了画面
  5. いよいよ最後の操作で、画面右上の “push” をクリックします。
    図 5-6 push

    push が終了すると、次のような画面が表示されるので “close” ボタンを押し閉じてください。

    図 5-7 push完了画面

以上で、GitHub リポジトリへのアップロードは完了です。

(追記:2019/05/27)
“stage” の処理を強制終了した場合、.git/index.lock が作られ、Sourcetree で当該ディレクトリを開くと次のようなメッセージが表示され commit ができなくなります。

このようなエラーが表示された場合は、”.git/” から “index.lock” を削除してください。

【前に:blogdownへの道(4)】【次へ:blogdownへの道(6):終】

blogdownへの道(4)

ローカル web サイトの作成

  1. blogdown パッケージのインストール
    CRAN と GitHub から、次によりインストールできます。

  2. Hugo のインストール
    blogdown のヘルパー関数を使用します。

  3. 次により、プロジェクトへ新規 web を作成します。
  4. 暫く待つと、多数のファイルが作られ、RStudio の Viewer に次のよう web 画面が表示されます。
    図 4-1 web 画面
  5. (追加:2019/05/27)
    config.toml に、次の設定を確認し、未設定なら追加します。

    • relativeURLs:アドレス参照を相対アドレスにします。これを設定しないと、css や Javascript の参照が絶対アドレスになり、参照が不正になります。
    • publishDir:blogdown::build_site() の出力ディレクトリを設定します(この場合は “docs”)。

    サイトに必要なファイルを全て./docs* 以下に生成するため、次のコマンドを実行します。

今回は、ここで作成されたものをそのままアップロードします!

【前に:blogdownへの道(3)】【次へ:blogdownへの道(5)】