ふくの鳥と AI と WordPress

今日は同僚が鶏の唐揚げが食べたいというので、いろいろと彷徨った結果、『ふくの鳥』というお店に入った。ランチメニューがどれも鶏の唐揚げだったからだ。鶏の唐揚げって言うと、あの丸っこいのを思い浮かべるのだけど、ここのは全て一枚肉だった。
同僚は油淋鶏、ボクはカレーを選んだ。

カレー屋さんじゃないカレーはあれね、業務用ね。
当たり前か(^^;

鶏の唐揚げは美味しかったと思うんだけど、カレーがぬめぬめっとしてた。
イマイチ!

ポイント カードについて、このあいだひどい目に遭ったわけだけど(そこまで言う?w)、ふとこの間 THANK で見たロビを思い出して、そもそも AI が普及したらポイント カードいらないじゃん! ってことに気付いた。
いや、AI とかそういう単語を使わなくても現状でも可能だ。
要するに顔認識システムを店頭に置いておいて、会計の時にその人が常連さんなのかどうかを判別して貰えばいいのだ。その人の来店回数や今まで使ったお金の積算を表示するなんて簡単だ。そしてポイントの付与も楽々だ。
たくさん貯まってたら「○○ポイントたまってますけど、お使いになりますか?」と、店員が聞けばいいのだ。自動割引でもイイし、レジのタッチパネルに表示して使うかどうかを尋ねるのでもいい。

いやー、明るい未来が見えてきそうだ。これで財布が金も持ってないのにパンパンなんてことはなくなりそうだ。頼みますよ!

今、仕事をいくつも抱えているんだけど、どれもが PHP + HTML + Javascript な案件なのね。で管理画面があったりとかいろいろするんだけど、クライアントさんには WordPress でやれるようにすることが多い。要するにデザインとかウェブサイトそのものはクライアントさんが作って、システムというか仕組みの部分はボクが組んで、クライアントが作った WordPress 内に組み込むといった感じだ。

ただ 100% WordPress で済むようにはしていなかった。
ボクが作ったシステムの UI は、ボクが自分で HTML を組み、CSS を組んで提供していた。
でもこれだと見た目が良くない。ボクはデザイナーではないからね。それにシステムごとに CSS を組むのがめんどうくさかった。

そこでボクが作ったシステムを全部 WordPress 側で呼ぶ仕組みを作った。
これでボクが作ったシステムも全部 WordPress を通して表示されるようになった。UI も統一されるし、デザインも統一されるうえにクライアントも操作に戸惑うことも減る(まったくなくなるわけではない)。
今までは WordPress とボクのシステムとで管理画面をアクセスする場所が違っていたりしたので、その辺も統一された。

本当は SS とか貼りたいんだけど、開発中なので貼れない……

cURL と file_get_contents と Photoshop と

奈川に旅行している間、プログラミングをしていたと書いた。そしてその日記の中でどうしても動かないので組み直すことになったとも。その組み直す件が上のツイートだ。WebAPI といってネットワーク上で利用できるようにした機能群というものがある。これは様々なサービスを提供している会社が用意してくれている。
たとえば Twitter なんかはこの WebAPI があるおかげで、サードパーティのソフトやサーバなんかがツイートをしたり、色んなツイートに関する統計をとったりすることができるのだ。Facebook しかり Google なんかの様々な機能を利用するにはこの WebAPI というのが公開されていて、それを叩くことによってその会社がもつ機能を第三者であるボクらが利用することが出来るのだ。

でね、PHP で WebAPI を叩く(呼び出す)方法ってのはいくつかあって、ボクは手抜きが大好きなので、その中でも file_get_contents という命令を使ってやっている。これで今まで失敗したことはないし、それこそ大手ゲーム会社が提供する WebAPI も叩いてきたし、そのためのライブラリもすでに作ってあった。
ところが今回の仕事では、これがサッパリうまく動かない。
何度見直しても、悪いところが見つけられなかったのだ。

そこでもう一つのアクセス方法、cURL という命令に置き換えてみたら、渡すパラメータは一緒なのに動きましたよっていう話。えー……。そもそもボクの作ったプログラムからデータを受け取る相手サーバにとって、file_get_contents も cURL も大差ないはず。規格に定められてデータを渡しているだけなんだから。
でも、file_get_contents だとうまくいかなくて、cURL だとうまくいく。
何かが違うんだろう。

そしてその違いがわからないまま、WEB のプログラムを続けていいのか、ヲレ?<ヲイ
ちゃんと調べる必要があるよなぁと思いつつ……とりあえずクライアントの要望通りのプログラムは書けた。

ところで Adobe Creative Cloud の 2018 年版がリリースされた。いや 2019 年版か?w
よくわからんが、とにかく全てのアプリが一新された。
ここでボクが求めるのはただ一つ、Windows 版 Photoshop  で HEIF 形式のファイルが読めるかどうかだ。そして読めなかった……orz

これはもう Adobe は故意に対応するつもりがないで間違いないだろう。こまったなぁ……なんで対応させないんだろう??

Windows Server の証明書サービスを復旧させる方法

amatsukami.jp サーバの SSL 通信部分はボクしか使わないため、オレオレ証明書を使っている。この証明書はボクが勝手に発行したので、他人がブラウザで開くとエラーが出る。ボクのためだけの物なので今の所は問題が無い。
でね、この勝手に証明書を発行するシステムが Windows Server にはあるわけだけど、ftp の証明書の期限が切れていたので更新しようとしたら更新ページがエラーで表示されない。なんだこれ?? 何かいじったかなと思っていじって見るも特に設定は問題なさそうに見える。

エラーの内容は、web.config ファイルが見つからない的な内容なのだが……う~ん、あるよなぁと思っていろいろ調べて見ると、本来あった場所の web.config を見に行かずになぜか C:\Windows\System32\certsrv\ っていうフォルダを参照しに行ってた。

なんだこりゃー!?

何かのパッチでそういう設定に変わったのかしら? Windows Server 2016 や 2019 がそうなってるとか?

そんなわけで C:\Windows\System32\certsrv\ に関係するファイルをコピーしたら普通に動くようになった。もー!

もう一つトラブル事。今、仕事で組んでいるシステムがだいぶ完成してきて、色んな人がアクセスするようになった。ボクはサーバ上のファイルを直接編集していたんだけど、それだとボクのミスでうまく動かなかったりすることがある。そんなときに他の人がアクセスしに来ると、動かないぞってことになってしまう。

そこでボクの開発機にウェブサーバを立ち上げて、開発はそこでやることにし、今のサーバはちゃんと動くものだけ更新することにした。そこで自分のマシンに IIS を入れて PHP を入れて MySQL を入れたんだけどこの時、MySQL の Version 8 を入れてみたのね? SQL 文なんてのは共通だし、別に何か問題が起きるなんてことはないだろうと思って、この新しい開発環境に今まで開発してきたソースファイルをぶっ込んだから、いきなり動かないwww

おい。

エラー内容は SQL 文の Syntax エラー。構文エラーだ。単純にスペルミスとかそういう系のミス。えー、そんなバカな、ちゃんと動くソースですぜ? 間違ってるわけないじゃん、と該当する SQL 文とにらめっこするもどこがおかしいのか全く解らない。
そりゃそうだ、元の環境では動くんだもの。

これは MySQL5.6 系と 8 系で何か根本的なことが変わったのか?
とはいえ SQL 文は規格化されていて、MySQL のバージョンが上がったからと言って勝手に変えていいものじゃない。まぁでもダメ元で調べて見たら、MySQL 8 から新しい内部関数が増えていることが解った。そしてその増えた関数の名前が今回のシステムで使っているカラム名と同じだったのだ。
つまり MySQL はそれを命令だと解釈していたため、エラーになっていたのである。
もー!

解決策はこのカラム名を別の名前に変えるか、カラムを必ず ` で囲むか。
まぁ開発中のものなんでカラム名を変えたので良かったのだけど、ボクの中で意味が定着してしまっていて他の単語がすぐにおもいうかばなかったので `で囲んだ。すると問題なく動いた。

下の写真は大戸屋のカツ煮定食。大戸屋ってセントラルキッチンじゃないのでカツ煮もホクホクとイイ感じのが出てくるんだろうなと思って頼んだんだけど、脂でベチョベチョのカツだった。残念。

妹にジト目で見つめられたい

 

妹にジト目で見つめられたい。妹なんていないけど。
そうなんだよなぁ、最大の原因は 10 代の妹がいないってことなんだよなぁ(何
妹ジト目全集とか作りたい。色んなシチュエーションでジト目される画集。

でもお兄ちゃんは解ってるんだ、たとえ着替え中に間違って妹の部屋に入ってジト目されても、心の中では「やっとお兄ちゃんが襲いに来てくれた!」って心ではドキドキしてアソコがジュンと来ちゃってるってことを!<病気

もしくは部屋でオナニーしてるところを妹に見つかってジト目とか。でも心の中では、「言ってくれれば、あたしが手伝うのに! 何一人でオナニーしてんの? 信じらんない!」って思ってるから! 間違いないから!<重病

ボクのお気に入りの妹のジト目、置いておきますね。

昨日萌え時計をいじったとき、ついでに画像の品質を上げるために JPEG から PNG にしてみたんだけど、転送量が 3.5 倍くらいに増えた(笑)。一日だいたい 400MiB ~ 500MiB くらいなのが余裕で 1GiB を超えてしまった。
というわけで、また JPEG に戻した。ただ今まで 80 だった圧縮率を 100 にしておいた(数値が高い方がキレイらしい)。でもぱっと見、差はよく解らなかったり……。

知人から教えて貰ったダイナーを巡る TV 番組。アメリカ人ってバカだなーってのがよく解る動画なのだが、やっぱりデブ(ボクの事)はすごいね、どれも美味しそうに見えちゃうwwww ダメすぎるwwwww
シナモンロールに SPAM やらベーコンやら卵やら詰め込んでさらに揚げたりとか、ホットケーキにこれまたベーコンやら卵やらを詰め込んだものとか……スゲー、すごすぎるよ。なんか 2ch のスレでさ、日本に留学に来た体重 200kg のデブが日本でも腹一杯毎日食ってたらどんどん痩せていったっていう話があってさ、アメリカの食い物ってどんだけ高カロリーななのよって思ったんだけど、この番組を見ればなっとくできる。

ドラえもんの道具がエロい件について

今開発中のウェブアプリのダミーデータをご覧ください(ぁ

特に話題がないので、今開発しているウェブアプリについて。PHP + HTML5 + Javascript + MySQL で開発してるんだけど、会社でやってる仕事も、構成は同じでしかもボクが個人的に作っている方のウェブアプリの機能を一部移植するだけで済むので、自分のと会社のと同時開発している。

でね、あらかた組み上がったので、データーベースのとりあえずのデータを登録して動作を確認しようとしたんだけど、ハテ、どんなデータを入れようかと思って思いついたのが、ツイートの通りである(ぁ

ドラえもんの道具ってエロいことにも使えていいよね!
っていうかさ、このままのび太が思春期を迎えた時のドラえもんの対応がすごい気になる。
周囲のみんなが童貞を捨てていく中、のび太もドラえもんの力で何とかしようとすると思うんだけど……やはり初めての相手はしずかなんだろうか? まぁそんなことは考えてもしようがないことではあるが。

そんなどうでもいい話。
さらにどうでもいいが、しずかって確かのび太が情けなくてこのままだと可哀想だからとかいう理由で結婚してくれるんだよね。まぁ別にそれはいいんだけど、そんな女の子で見てくれもそこそこ良かったら、たぶん中高大のどこかでチャラ男に騙されてサセ子になっちゃって、20 代の頃にはかなりスレてそう……とか思ったんだけどどうだろう?<偏見
エロ漫画の見過ぎ??(そこかよ

ウェブアプリ開発、色々

正式にはまだ発表出来ないんだけど、ウェブアプリをまた作り始めている。今度のはかなり規模が大きいので、言うだけ詐欺になりかねないのだが、まぁとりあえず(ぉ

HTML と Javascript で画面を作っていたんだけど、縦で使ったときと横で使った時を%だけで表現出来るかなと思ったら無理だった……orz あと上のツイートの立ち絵あるじゃない? この立ち絵をタップできるようにしたんだけど、抜けはタップしても反応しないようにできるかなーと思って調べたら、それをやるには canvas を使わないといけないらしい……。めんどくさい。最近 canvas 使わなくてもイロイロ出来るようになったので、canvas 使うことを考えてなかった(汗)。

ところで、前回当てた大型アップデートから Egde の挙動が変わった。何度更新押しても、CSS と Javascript が更新されない。くそー。仕方ないので、デバッグ画面から常にサーバを読むようにして使ってるけど、これ、普段使いにもどるときにはいちいち OFF にしないとダメだよね? もー……。

最後に、今日は三軒茶屋にある音楽団の PC を診てきたんだけど、その帰り、浅草橋に戻るのに首都高を使ったんだけど、至る所(ジャンクションとか出入り口とか)で検問やってた。検問と言っても、たぶんだけどカメラで撮ってるだけなのかな? 警官と移動交番らしき車両がところどころに配置されていた。ああいう検問の方法もあるんだなぁ。

クラウドに頼らずに iPad を使う with オレオレ証明書との戦い

 

さて、iPad をいかにノート PC の様にして使うか、それが iPad を初めて手に入れたボクの最初の使命である。iOS はバカ素人でも使えるように、様々な PC 的概念が見た目上排除されている。例えば撮った写真は写真アプリでしかアクセス出来ない。他の写真加工ソフトとかで見ることができないのだ。
これはアプリとデータをセットで隔離することによって、セキュリティを高めることが出来るからだ。別のソフトが勝手に他のアプリのデータを読んだり、また他の場所にコピーしたり出来ないようにしているわけだ。

この制限はあくまでも見た目上であり、中身は PC と同じなので、フォルダ(ディレクトリ)があり、ファイルがある。そして上記の制限を完全に守ると使いにくいので、他のアプリが写真にアクセス出来るように許可を出す設定が出来たり、他の場所にコピーをする許可を出す設定ができたりする。

さて、ボクの場合は amatsukami.jp サーバに開発に関わるあらゆるデータが置いてある。これは iPad からするといわゆるクラウドに相当する。要するにボクは 2000 年頃からすでにクラウドみないなことをやっているわけだが、iOS 上のアプリはこの独自クラウドには対応していない。Google DriveiCloudDropbox などの有名なサービスには対応しているが、ボクが個人的に立ち上げたクラウドにはアクセスする手段を用意していないのだ。

じゃぁ Google Drive などのサービスを使えばいいじゃないかというと、そう簡単にはいかない。まず容量が足りない。ボクのサーバはプロジェクト用だけでも 8TB 用意してある。Google Drive で無料に使えるのはその 1/1000 以下の 5GB である。そしてもう一つ重要なのが、エロゲのデータが置いてあることだ。
エロゲの画像データは海外からしたら児童ポルノに認定されてしまうことがよくある。Google などが勝手にボクのデータをのぞき見て、エロゲのデータを児童ポルノだと認定したら垢バンどころかそれ以上の面倒なことになりかねない。

そう言った理由で、自宅サーバにデータを置いているのである。

でね、Googe Drive とかも別に特殊なことをやっているわけではなくて、内部ではインターネットで規定された汎用の技術(WebDAV など)を使って実現されている。と言うことはつまり iOS のアプリ側も汎用的な技術を使って Google Drive とかにアクセスしている。
そこで汎用的な技術を使って iOS とその他のサーバとをやりとりできるアプリを間に挟むことによって、自宅のサーバのデータを iPad で読み書きするように設定できた。FileExplorer というアプリだ。このアプリは、様々なアプリがファイルを開くとき、この FileExplorer が選択できるように設計されているようだ。そのため、アプリからファイルを開くとき、FileExplorer を選べば FileExplorer がアクセス出来るファイルを読み書きできるという具合だ。

ところが iPad 側でいろいろとファイルをいじれるようになったものの、問題が起きた。それはフォント(笑)。ボクの開発用 PC には相当数のフォントが入っているのだが、iPad にはないし、そもそもそんなにたくさんのフォントを入れることは出来ない。
結局印刷物を作ったり、バナーを作ったりするのには全く使えなかった(汗)。

ただ、よくわかんないんだけど、PC で作ったファイルを読み込むと、Adobe や Office はどこからかフォントを読み込んでくれるようだ(アプリ起動時に、本体にないファイルを読み込んでいますみたいなことが表示される)。

さて、ここまではまずまずの結果と言ってもイイだろう。
問題はその次である。それはオレオレ証明書だ。amatsukami.jp の通信を暗号化するための証明書は公的なものではなく、ボクが勝手に発行したものだ(笑)。別にボクだけが使うものだし、暗号化さえされていればいいのでちゃんとした証明書はいらない。それにこのオレオレ証明書を iPad に登録すれば、ボクの iPad だけ公式な証明書となるのだ。
ところが、これが何度登録しても実際に使おうとするとオレオレ証明書になってしまう。コレは困った。iPhone ではすでに同じことをしてあって、そっちではちゃんとエラーも出ずに公式な証明書として使えているのに、なぜか iPad ではダメなのだ……。そのためボクの仕事で使っているサイト(redmine とかグループウェアとか)までエラー表示されてしまう。

困ったなぁ……いったい何が原因なんだろうか? っていうかもう公式な証明書をとるしかないんだろうか??

与太話。ボクは今、趣味でも仕事でも PHP でプログラムを組んでいるんだけど PHP で扱う日付は UNIX 時間という 1970 年 1 月 1 日から何秒経過したかっていうデータなのね。でもそれだと何が何だか解らんので、この秒数を「○年○月○日 XX時XX分XX秒」に変換して使ってる。

ところが、この年月日を計算するとなると(例えば今日は 2017 年 7 月 11 日から何日が経過しているかとか、2018 年 12 月 13 日引く2001 年 10 月 9 日は何年何ヶ月何日間なのかとか)、UNIX 時間のままの方が楽だ。ただの秒数だから、秒数同士を足したり引いたりするだけで OK だからだ。

しかし一度貰ったデータは「○年○月○日 XX:XX:XX」っていう形式のデータに変換してしまっている。

上の strtotime という関数はこの「○年○月○日 XX:XX:XX」っていうデータから UNIX 時間に戻してくれる関数なのだ。コレのおかげで時間計算が凄く楽になって助かったーっていう意味が上のツイートには込められているのであった。