2017年5月の日記

<2017年06月 2017年04月>

アンパンマンDBと日記

アンパンマンDB

テンプレート機能実装。
Wiki記法の使える場所で、テンプレートタグを書くことで、あらかじめ設定した文面が展開されます。そして、展開されたテンプレートにも、Wiki記法が適用されます。
定型文だけど名詞の部分だけは変わるみたいなのはまだ対応していないので、ここらが今後の課題となります。

管理メモのURLを、memo-数字という形式から、memo-英数字という形式に変更しました。
まだ新形式のURLを使っている管理メモはありませんが、今後は管理メモもわかりやすくなっていきます。今あるやつは、もろもろの都合で、数字表記のままです。
あと、もう意味の無くなった管理メモはきれいさっぱり消しました。こうやって消えた抜け番が気にならなくなるのも新形式のいいところですね。

日記

日記内に小見出しを付けるとめちゃくちゃ主張の強い見出しが出てきていたので、ちょっと主張を弱めました。
ページ自体の見出しがh1で、日記の一記事の見出しがh2で、日記内の小見出しがh3という形になりました。
見出し自体のスタイルももう少しわかりやすくしたいところですね…。

アンパンマンDB

カテゴリの定義…というか、ルールを記入する仕組みを作りました。数がそろってきたら一般にも公開して、カテゴリ検索する人や情報提供する人にも参考にしてもらえればと思います。
テンプレートで同じような文面を量産するシステムはまだ作っていません。一部の単語を差し替えた文章を作れるようにするのが理想ですね。

ドラクエ10とアンパンマンDB

ドラクエ10

昨日からの流れで、また今更ながら、モンスターシール始めました。シールを集めても特に何もないそうなので、あまり必死に追いかけるつもりはありませんが、まあ、時間が合えば会いに行こうかなと。

アンパンマンDB

あんまりいろいろシステムを追加すると、作るのも使うのも大変になってしまうので、カテゴリの定義については、単に文字列として登録できるようにしようと思います。
そうすると、同じような文面がたくさん必要になるわけですが、「同じような文面をたくさん作ること」にこそ新システムを作ればいいのではないかと考えました。
これなら、使わないなら使わないでいいし、カテゴリ以外への応用も可能なのです。

Windows Insider Programとドラクエ10と日記とアンパンマンDB

Windows Insider Program

ちょっと興味があったので、登録してみました。普段使っているパソコンをInsider Program用に使うわけにもいかないので、モバイルの動作検証用のスマホに入れています。でも、言うほど新機能を試したいわけでもないから、入れるだけ入れて終わる気もします。

ドラクエ10

今更ながら、冒険ゼミナール行きました。クイズ形式でドラクエ10の基本を学ぶというコンテンツですね。ずっとドラクエ10をやっている人には、正直、学ぶことなんて何もないコンテンツですが、報酬がなかなか豪華だとか、間違いの選択肢がいちいち面白いとかで、やってよかったとは思います。

それと、ゲーム記のドラクエ10のページに、冒険日誌アーカイブへのリンクを入れることにしました。連日ドラクエ10のページの更新になるのもはばかられたので、実際に公開するのは後日になります。

日記

カテゴリがたくさんあるのに提案が太字だけじゃ目立たなかったので、強い提案の赤に加えて、普通の提案も青で色付けするようにしました。

細分化されたカテゴリを古い日記につけていく作業も随時進めています。あんまり機械的に古い順にやっていくと、そんなに古くないページのカテゴリがごっそり抜けてしまうので、他のページからリンクされている日記とか、ランダムに選んだ日記とか、ちょっと特殊な事情のあるカテゴリに入る日記とかも、並行してカテゴリ付けしていっています。とにかく作業量が膨大なので、徐々に無理なく進められるようにしています。

アンパンマンDB

カテゴリの提案に日記と同等の修正を加えました。

あと、先月言っていたカテゴリの定義のことですが、カテゴリ自体を似たカテゴリ同士にカテゴライズして、カテゴリのカテゴリごとに定義を設けようかなと思っています。
例えば、「パン」と「米」は別々のカテゴリですが、食べ物の一種であるという点では同じで、カテゴリの定義も似たようなものになるはずなのです。
そうすると、作業量的にもあまり負担にならずにカテゴリをはっきりさせることができるかと思っています。

ARMSとドラゴンクエスト10

ARMS体験会。
公式サイトは→ARMS | Nintendo Switch | 任天堂
とりあえず、見た目でDNAマンを選んでスタート。
おそらくもっとも癖の強いキャラであろうこいつを初プレイで格ゲー苦手な私が使いこなせるはずもなく、ろくろく動けぬまま、DNAマンの不気味な呻き声を聞きまくるだけになりました。
ファランクスとレイドラは使いこなすと強そうではあるけれど…。

ゲーム記のドラクエ10のページを更新しました。
Nintendo Switch版の発売日が公表されて、自分のサイトを見直していたら、Windows版の記述がなかったので、書き足しました。
それから、ページ構成も少し調整しています。
うーん、しかし、ドラゴンクエスト10のプレイヤーイベントを検索および通知するサイトは独自の価値を提供できていると思うけど、ゲーム記のドラクエ10のページとミフミンのDQ10メモは内容が少々被るんですよね…。
本来、ゲーム記側は個人的コンテンツで、DQ10メモはデータ集なんですが、ゲーム記にもお役立ち情報はあるし、DQ10メモにも個人的な写真があるわけです。
うまくコンテンツを切り分けて共存させるか、どっちか一方に統合するか…。

K-means法

学習帳のページのトップページを新デザインにしたついでに、昔作って公開せず放置していたK-means法のページを公開しました。
枠内がクリックできそうでクリックできないとか、そもそも何の説明もないとか、ユーザーインターフェース的にかなり難ありですが、学習帳は質も量も投げ出したコーナーなので、当面はこのままにしておきます。
まあ、学習帳のトップ以外のページも新デザインにするときがあったら、そのときは何か対策をするでしょう。

日記

日記にもAjaxによるカテゴリ提案実装。

んで、カテゴリが扱いやすくなったので、カテゴリを細分化して大幅に増やしてみました。
ゲームはシリーズごとに分けるのではなく、1作品1カテゴリで、自作ソフトも、開発中止を一つにまとめたりはせず、各々のソフトにカテゴリを設定。
細分化したのにはもう一つ野望があって、ゲーム記からプレイ日記にリンクしたいなって思ったんですね。例えば、「ドラクエ」でまとまっていたら、ドラクエ3の日記を見たいのにドラクエ10の話ばっかりしてる、なんてことになりかねないわけです。細分化すれば、そんな悩みともさらばです。

ただ、全部の日記に一気に細分化したカテゴリを付けるなんて無茶なわけです。
ということで、まだカテゴリを付け直していない日記を見つけるために、更新日の古い日記を探す機能を付けました。ありし日の日記へどうぞ。なお、普通の人が見て楽しくなる要素はないと思うので、上のナビメニューに入れていません。
それにしても、あの日の私は…懐かしくも痛々しい…。

アンパンマンDB

Ajaxによるカテゴリ提案実装。
キャラクターもエピソードもみんなみんな個性豊かで、意外な取り合わせが多かったりするので、今まで一緒になる傾向が強かったからと言って今回も一緒になるとは限らないというのが多くて、多少参考にはなるけど間違いもだいぶ多いといった印象でした。
これでは自動で動かすとうるさくなりすぎます。なので、手動サジェストだけにしました。
また、提案の材料にするカテゴリが多いと、提案されるカテゴリも多くなってしまうので、関連性が一定以上高いだけでなく、数が増えたら上から一定個数までで提案を打ち切るようにしました。

アンパンマンDB

アンパンマンDBにもカテゴリ提案機能設置中。
ちょっとPHP的に組み込みづらい仕組みになっていたので、最初からAjaxで実装する方針です。
とりあえず最初は、ボタンを押したらデータを引っ張ってくるという仕組みで。

日記

昨日言っていた案の実装。太字が提案内容です。

まずまず悪くないんじゃないでしょうか。
Nginxは「PCソフト」だし、VPSを契約しようと思ったのは「TGWSAdmin」をクラウドで管理するため。VPSでは、具体的に何かをした報告より、何かをしたい「プログラミング」の「アイディア」があって日記に書いていたわけで、TGWSの「更新」に使いたいと思っていたのでした。
見当違いなのは「funyak」ぐらいのものですが、これは許容範囲です。うちの日記は、関係ない話題も並列して書くので、関係ないカテゴリが一緒に出てくるというのも大なり小なりあるわけですな。

統計にかかる時間はおおよそ1秒以内で、それを使うのは10ミリ秒前後。平たくいって、一瞬です。
待てど暮らせど終わらないのに途中経過を見たら頓珍漢だった前回とは大きな違いです。
この速度なら、編集中にリアルタイムで提案内容を更新するなんて芸当もできそうです。

しかも、テーブル名と列名を差し替えるだけでアンパンマンDBにも適用可能で、実際に既に統計データは作っています。
アンパンマンDBはアンパンマンDBで、カテゴリの親子関係にするには不適切だけど、密接に関わりがあるカテゴリというのがあるので、もしかしたら日記以上に効果を発揮するかもしれません。

ドラゴンクエスト10と日記

ドラゴンクエスト10。
きゅっぴりーんのイベントこなしました。
まあ、前半は、普段やっていなかったザコ討伐も兼ねてダラダラ楽しく。
やっぱドラクエ10は、ダラダラやってるのが楽しいね。
最近は他のゲームやったり、ゲーム以外の新しいことに挑戦したりで、畑の世話以外でほとんどドラクエ10やってなかったんですが、うん、やっぱり遊んでいると楽しい。
後半は…貧乏人お断りか、けっ!

日記。
2日で折れた心は2日で治るのです。
うまくいったらアンパンマンDBにも応用したいのでそう簡単に折れるわけにはいかんのであります。
問題の根本は、「しました」とか「です」みたいな、内容と関係のない文字列まで無数にキーワードとして抽出してしまったこと。
即ち、内容と関係のないはずのないキーワードしかないキーワード集的なものがあればよいのです。
あるじゃないですか!ここに!カテゴリが!
カテゴリからカテゴリを提案して何が悪いのです!
カテゴリであれば、内容と関係が深いからこそ作られるものであり、その数は、不用意に増やしてなお、たかが知れています。
アルゴリズムだって、無理に人工知能的なことはしなくてもいいのです。
しっかり内容と関連の深いキーワードであれば、単純な統計でもいい結果は出せるはずなのです。

GChat

覚えてますか?覚えてませんよね?アルニック。
そもそも…知らない…ですよね?

こんな子です。

素朴でかわいいアホの子です。いわゆる人工無脳チャットってやつです。時代の流れで単純なCGI形式のWebチャットが流行らなくなったとか、サイト移転のごたごたに巻き込まれたとかで、ずいぶん長いこと、まともに動いていませんでした。

プログラム自体はとっくの昔に今の環境に合わせて修正して動くようにしていたのですが、人工無脳チャットの頭脳ともいえる学習データが古いままでした。そのため、何を言われても返す言葉がない、真の無脳になっていました。

学習データに最も致命的な影響があったのが、文字コードの変化です。EUC-JP→Shift_JIS→UTF-8と変遷してきました。

で、文字コードを直したら動くだろうと思ったのが、甘い考えでした。

Shift_JISには、プログラムで扱ううえで重大な欠陥があり、その欠陥に対応するために、データのほうをいじってあったのです。具体的には、パターンマッチング部において、パターンマッチングに影響を及ぼすマルチバイト文字を、影響のない文字の組み合わせに置き換えていました。言ってみれば、壊れたらちょうどよくなるようにあらかじめ壊してあったんですね。

これをUTF-8に単純に変換すると、単に壊れたデータになるわけです。

最終的に、この「壊れたらちょうどよくなるようにあらかじめ壊してあったデータ」を探して、全部置き換えていくことになりました。

だるい作業でしたが…無事直りました。結果は上の画像の通り。賢くはないけどかわいい子です。

皆さんも、気が向いたときにでも相手してやってください。

日記

過去の投稿内容からカテゴリを提案する機能ね、うん。
一応ね、考えてたんですよ、いろいろ。
遺伝的アルゴリズムによりパラメータを調整していって、重要度の低いキーワードは軽視するように、重要な固有名詞等を自動で見つけられるように、とか。
ええ、ええ、考えてたんですよ。
まず最初は、パラメータ調整なしで、やりますよね、調整の材料がそもそもまだないんですからね。
これで多少なりともそれっぽい結果が出たら、張り切って先に進めるぞ!ってね。

そして、長い長い時間をかけて実行して、出た結果が、これだあ!!

VPSの記事に対し、

  • Bomber丸World(企画中のゲーム)
  • CGI(サーバーサイト技術)
  • NeoMupl(自作の音楽プレイヤー)
  • PCソフト
  • アンパンマンDB(自分のサイト)
  • 更新(自分のサイトの更新情報)
  • ドラクエ(ゲームソフト)
  • ふにゃさん(自作ゲーム)
  • プログラミング

完全に何もかも外れとまでは言えないけど、かすっているのがいくつかあるだけで、提案と呼ぶにはあまりにお粗末な…。
もしかして、単純に出現頻度の高いカテゴリが出てきているだけなのでは…?

ちょっと…心折れたんで、この件はしばらく放置で…。

深い深いパス

アキタラヤメル企画に「深い深いパス」を追加しました。
うちのサイトには、パンくずリストというものがあります。
これは、原則として自分のディレクトリからルートディレクトリまで、パンくずリストの記載されたphpファイルを順次見に行きます。
そうすると、パスが深くなるにつれて、見に行くパンくずリストの数がどんどん多くなっていくわけです。
パンくずリストのせいでページ表示が遅くなるようなら、パンくずリストの実装方法変えなきゃいけない、ということで、パフォーマンスの実測のため、深い深いパスのページを作ったのです。
結果、たくさん読んでも大して速度低下は起こらないことが分かったので、パンくずリストに限らず、軽率にincludeしまくっても大丈夫そうでした。

日記

過去の投稿内容からカテゴリを提案する機能を作成中。
記事本文や他のカテゴリの類似度などに基づいて、可能性の高いカテゴリを探すのです。
ただ、問題は、そのための学習データを作るだけで結構重くて、検証も進まないというところ。

VMWare

VMWareには今までUbuntu入れてたけど、今度はCentOSで。
さくらのVPSでもUbuntuは使えるのでこだわる必要はなかったのですが、せっかくCentOS触り始めたので。
まだ具体的なことは何も始められていないけど、とりあえずOSインストールとSSH接続まではやっています。

さくらのVPS

無料期間が終わりそうなのでいったん解約しました。
しばらくは手元のVMWareでLinuxサーバーについて学んで、次はいっそクラウドで…と思ったけど最低料金の時点で結構お高いから次もVPSで済ますかな。
それに伴い、昨日出したURLもさっそく無効になりました。

VPS+CentOS7+Nginx+ASP.NET

昨日まで構築していたVPS環境は、設定がいろいろしっちゃかめっちゃかになってしまったので、いったん初期化しました。

んで、DockerとMastodonは後回しにするという前提で、FTPサーバーを確実にインストールすることから始めることにしました。
とにかく、ややこしい設定にするとたちまち詰まるのは目に見えているので、シンプルな設定で済むように、コマンドを打つときに使っているSSHを暗号通信にそのまま使えるSFTPでやることにしました。

VPSでやりたいことは、Linux(ここではCentOS7)で、C#により記述されたプログラムを動かすサーバーを動かしたいので、Nginxと.NET Coreをインストール。
WebサーバーはApacheでもよかったのですが、どうせWebサーバー本体はHTTP/HTTPSでのアクセスへの玄関口としてしか使わないし、Nginxのほうが新しくて軽くてシェアも伸ばしているらしいし、最悪、背後でApacheサーバーを動かすこともできると分かったので、新しいサーバー技術の勉強も兼ねて、WebサーバーはNginxにしました。設定自体は案外簡単で、HTTPで公開するだけなら、ちょろっと設定ファイルをいじって、Nginxを自動実行するように設定するだけです。

.NET Coreのインストールも簡単で、マイクロソフトの公式サイトに書いてある手順を踏むだけ。昨日はASP.NETを動かすという場面で詰まってしまいましたが、ファイルのアップロードができなかったために詰まっていたので、その点も解決済みです。こちらも、ASP.NETのサーバーを自動実行するように設定しました。

そして、実際にできたのが、以下のサイト。テスト用なので、いずれ消すとは思いますが、ひとまずはうまく動いているようです。
http://linuxtest.tgws.plus/

あとは、VPSでいろいろ定期実行したいこともあるので、crontabについても調べていきたいところですね。

以下、参考にしたサイト。

Visual Studio CodeとVPS

Visual Studio Code

PHPの整形は、いろいろある中で、php cs fixer(小文字のほう)がうまく使えました。
PSR-2に従って整形してくれるらしいのですが、命名規則までは直してはくれないようです。
コーディング規則の最終確認にはSideCIを使っているのですが、ここでチェックすると、警告はある程度までは減っても、ある程度は残ってしまうんですね。
SideCIは本当に最終確認で、気軽にここで調整というわけにはいかないので、できるだけ手元でさっと確かめたいのですが、そのあたりの環境はまだ構築できていません。

VPS

マストドンをちょっとやってみたくてVPS始めたんですが、うまくいかなかったので、もう一個やりたかったこと、.NETのWebアプリケーションをLinux上のサーバーで動かすというのに挑戦しています。
今あるサイトをここのサーバーに置き換えるのではなく、新しいことを始めたい、というところです。
もちろん、軌道に乗ればサーバー移転も考えますが。
先日学習していたdotnetコマンドの件は、これの準備段階ということで、とりあえずハローワールドですが成果が出ました。

dotnet

例えば、C#で作っているfunyakのステージデータが正当なものであるかどうかを検証するには、同じC#で作ったプログラムを使うほうが簡単だったり仕様の不一致が防げたりして都合がいいわけです。

まだFTPを入れていなくて、手元で作ったWebアプリケーションを向こうで試せないので、ちょっとFTPも入れておこうと思います。

Visual Studio Code

インストールしてみました。
主にPHP開発環境として。
今までは秀丸を使っていて、Visual Studio 2015にもPHP Toolsを入れていたのですが、どちらもコードの自動整形が利かなかったんですね。
Visual Studio Codeがどこまでできるかわかりませんが、とりあえず試してみます。

.NET Core

Dockerであれこれやるのはいったん置いといて、使い慣れたC#をLinux完了で動かすため、.NET Coreについて勉強中。
さくらのVPS無料お試し期間中にできる限りのことはやっておきたいのです。
とりあえず、手元のWindows環境での.NET Coreの実行には成功。
Linux環境ではまだ試していませんが、dotnetコマンドで実行ができるようです。

カービィハンターズZ

全クエストクリア。プラチナメダルで。
装備はまだまだ集めきっていないし、ゆうしゃミッションも取り残しているのがたくさんあるので、りんご収穫しつつ、もうしばらくはのんびりやっていこうと思います。

VPS

昨日から頑張っていたのですが、なかなかうまくいかないものですね。
ログインからしてトラブル続きです。
なんとかDockerとか入れてみたりあれこれできる環境は作っていますが、これは一度仕切りなおしたほうがいいかなという気もしてきました。

京都鉄道博物館

行って来ました。
書くの面倒なんでTwitterのモーメントで。
https://twitter.com/i/moments/861194161470357506

ドラゴンクエスト10

おでかけ便利ツールの貯めに貯めた無料ジェムで電子書籍まとめ買い。
そして特典アイテムもたくさんもらったのです。
あと、イベントでもらったショッピング用のポイントは、風呂桶になりました。
一円も使わない散財でありました。

長い長い文字列のURLエンコード

リンクチェック。
外部リンクはリンク切れしていても自分ではどうしようもないので、内部リンクのみ。
ゲーム記のリニューアルでたくさんのURLが変更になったのでやっておきました。
いくらかリンク切れがあったので、今直せる、直して意味があるものは直しておきました。

プログラミングコーナー更新。
以前から言っていた、長い長い文字列のURLエンコードの話です。
記事中でも書いたけど、そもそもこんなことしなくて済むようにしたほうがいいんじゃないかな、というのが私の中での結論です。

カービィハンターズZとUri.EscapeDataString

ゲーム記の新方式への移行が完了。
そしてカービィハンターズZのページを公開。
ゲーム記のほうは管理画面がまだまだできていませんが、管理画面で頑張らなくてもあんまり問題ない設計にはなっているので、そのへんは急がずぼちぼちやっていこうかと思います。

ゲーム記の件が落ち着いたので、以前TGWSAdminで問題になっていたデータ送信の問題の対処についての話を書き始めました。
実はサンプルコードはとっくの昔に作ってGitHubにアップしてるんですけどね。
mifumi323/EscapeLongDataStringSample
ただ、これに関しては、ちょっと言いたいことがあるので、プログラムだけでなく、解説とかも入れていこうかと思います。

VPSについて。
一応OSをインストールして、セキュリティの設定をするところまではしたけど…うーん、ここから先、サーバー構築とかしなきゃいけないのよね…。
そこらのやっすい共有レンタルサーバー並みの環境を構築するだけでも、不慣れな私には結構な作業ですし、じゃあそこまでしてその先に求めるものは何なの?って話で。
共有じゃLet's Encrypt使えねーなめんどくせーなVPSならできんじゃねぐらいの気持ちで始めてみたのですが、ちょっと、手間の天秤計算すると割に合わなさそう…。
当初は、今のこのサイトを移転するのを視野に入れて考えていたのですが、今は、TGWSAdminの自宅PC以上の安定稼働のためにVPSを使うのがいいんじゃないかという気がしてきています。

ゲーム記

あとは…あとは…全ページを目視確認して…微調整して…公開するだけ…

ゲーム記

リニューアル作業中。
作業の自動化を進め、作業量をさらに半分に減らしました。
ここから先は、イレギュラーが多々あるため手作業が必要になりますが、イレギュラーがない場合には単純作業になるので、無駄な手間のほとんどが解消されたと言っていいでしょう。
終わりの見えないリニューアル作業に光が見えてきました。

VPS

ちょっとVPSを検討中。
いくつかVPSやクラウドサービスを比較してみたけど、結局さくらのVPSがコストパフォーマンス的にも信頼性的にも現実的かなーといったところ。
いろいろ考慮することがあるのでVPS使うからと言ってすぐ今のサイトを移転するわけじゃないけど、何らかの形で使っていけたらなーと。

<2017年06月 2017年04月>