Borderlands3プレイ日記 #1

Borderlands3をやっとクリアした。

プレイする時間がなくてクリアが遅れてしまったが、やっとTrue Vault Hunter Modeに入れる。 レベルをキャップしてキャラの育成が今からやっと始まる。

ストーリーは1も2もプリシークエルもやったが、3はすごい出来だったと思う。

キャラはなんとまあずっと今までのシリーズでセイレーンを最初に選んでいたのに、トレーラーのモズがかっこいいと思ってしまい、4作目にしてはじめてセイレーン以外を選んでしまった。
この選択は間違いで完全にセイレーンにスポットがあたったストーリーだったので、セイレーンでやりたかったと後悔した。

どっちにしろ全キャラはプレイするだろうからと気を取り直し、モズの育成に頑張ろうと思う。

しかしPS4でFPSは何年経っても慣れない。
いい加減PCでやりたいな。

WordPress ACF PROのチェックボックスの検索

またWordPressネタ。

ACF PROを購入した。

理由は繰り返しフィールドを使いたかったからだ。

買わないと普通のACFでは繰り返しフィールドは使えない。
でも仕事で使うのに、10000円ぐらい?でこの機能と入力のインターフェイスで用意してくれてるなら安いもんだ。

使い方は色んなサイトで解説されてるから、すぐにわかる。

先日、早速仕事で使用してみた。

何の問題もなく仕様どおりにたくさんのカスタムフィールドを登録し設定をしていく。
絞り込み検索もカスタムフィールドにあわせて作っていく。
楽過ぎる。

動作チェック

問題はそこで起こった。
絞り込み検索ですべてのカスタムフィールドの値で絞り込み検索をかけたとき、サイトが止まった。

SQLのANDの数は感覚だが20くらいだろうか?まったく動かなくなった。

Homebrewのコマンド メモ

MacのパッケージはHomebrewを利用している。
近々マシンを新調する予定で、新調する度に毎回調べてる気がするのでよく使うコマンドをメモしておく。

Homebrewのインストール

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Homebrewのアップデート

brew update

formulaのインストール

brew install formula

formulaのアンインストール

brew uninstall formula

formulaのアップデート(一括)

brew update

インストール済みformulaの表示

brew list

古いformulaの表示

brew outdated

古いformulaの削除

brew cleanup

Homebrew診断

brew doctor

とりあえずこんなものか?随時追加していこう。

まだ他にnpmとnodebrewのメモもしなければと思う。

WordPressでカスタム投稿の数を取得して表示する

WordPressを利用することは多く、今回はmeta_queryを利用して、カスタムフィールドに指定の値を持つ記事数を表示するという処理が必要になったので調査した。

ネットでよく見る実装方法

例によって検索をすると、以下の実装がよくひっかかる。

$args = array(
    'post_type' => 'post',
    'meta_key' => $post_meta_key,
    'meta_value' => $post_meta_value,
    'posts_per_page' => -1
);
$meta_posts = get_posts($args);
$count_post = 0;
foreach ($meta_posts as $post) {
    $count_post++;
}
return $count_post;

こっちの方がよくないですか?

なぜみんなこの記述を採用しているのかわからないが、同じ記述がよく出てくる。
が、気になるのは以下の部分

$count_post = 0;
foreach ($meta_posts as $post) {
    $count_post++;
}

カウンター変数に記事の数だけループさせて、カウントアップしているけど、なぜcount()じゃあダメなんだろう?
以下の処理ではダメなんだろうという疑問。

$args = [
    'post_type' => 'post',
    'meta_key' => $post_meta_key,
    'meta_value' => $post_meta_value,
    'posts_per_page' => -1
];
$meta_posts = get_posts($args);
return count($meta_posts);

処理時間を調べたわけではないけど、こちらの方が標準関数だからループ回すより断然速い気がするのだけれど、、、

もう1つ突っ込むとこの$meta_postsの中身は記事の配列が入っているので、重そう。。
WordPressにクエリ結果の記事数を返す関数がないか?と思ってるんだけど、調べるのがめんどくさくて調べてない。

動けばどうでもいいか(笑

シェルスクリプトで画像圧縮 pngquantとjpegoptim

シェルスクリプトで画像圧縮をしようと思った

コーディング時、画像をスライスして圧縮する際、imageoptimとjpegminiを使用していたのですが、どうもめんどくさい。
シェルスクリプトでいいのがないかな?と思い調べてみると、以前使用していたpngquantjpegoptimがヒット。

Homebrewから

brew install pngquant
brew install jpegoptim

でインストール完了

Foundation HTML5 Animation with JavaScriptの勉強

JavaScriptのアニメーションを勉強する

流し読みでやってみる。

CHAPTER 2 のMouse eventsをやってみる。

マウスイベントの取得

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Mouse Events</title>
<style>
#canvas {
    background: #000;
}
</style>
</head>
<body>
<canvas id="canvas" width="400" height="400"></canvas>
<script>
    window.onload = function () {
        var canvas = document.getElementById('canvas');

        function onMouseEvent (event) {
            console.log(event.type);
        }
        canvas.addEventListener('mousedown', onMouseEvent, false);
        canvas.addEventListener('mouseup', onMouseEvent, false);
        canvas.addEventListener('click', onMouseEvent, false);
        canvas.addEventListener('dblclick', onMouseEvent, false);
        canvas.addEventListener('mousewheel', onMouseEvent, false);
        canvas.addEventListener('mousemove', onMouseEvent, false);
        canvas.addEventListener('mouseover', onMouseEvent, false);
        canvas.addEventListener('mouseout', onMouseEvent, false);
    };
</script>
</body>
</html>

黒いエリアで各種マウスイベントが取得できるというソース。
取得できるイベントは以下になる。
取得結果はconsoleに出力されている。

  • mousedown
  • mouseup
  • click
  • dblclick
  • mousewheel
  • mousemove
  • mouseover
  • mouseout

マウスの座標を取得する

<!doctype html>
  <html>
   <head>
    <meta charset="utf-8">
    <title>Mouse Position</title>
    <link rel="stylesheet" href="style.css">
   </head>
   <body>
    <canvas id="canvas" width="400" height="400"></canvas>
    <script>
    var utils = {};
    utils.captureMouse = function (element) {
        var mouse = {x: 0, y: 0};
        element.addEventListener('mousemove', function (event) {
            var x, y;
            if (event.pageX || event.pageY) {
                x = event.pageX;
                y = event.pageY;
            } else {
                x = event.clientX + document.body.scrollLeft +
                document.documentElement.scrollLeft;
                y = event.clientY + document.body.scrollTop +
                document.documentElement.scrollTop;
            }
            x -= element.offsetLeft;
            y -= element.offsetTop;
            mouse.x = x;
            mouse.y = y;
        }, false);
        return mouse;
    };
    window.onload = function () {
        var canvas = document.getElementById('canvas'),
            mouse = utils.captureMouse(canvas);
            canvas.addEventListener('mousedown', function () { console.log("x: " + mouse.x + ", y: " + mouse.y);
        }, false);
    };
    </script>
   </body>
</html>

WindowsのWSHを使ってスクレイピングしてみる。

先日の
ファイルメーカーでのWebビューワー自動処理 テキストリンククリック(Javascript使用) でも書いたのですが、ログインを伴うスクレイピングにはJScriptが便利だと書きました。(JScriptについてはこちら)

JScriptはJavaScriptでWindowsを操作しちゃおうとするものです。

これを利用してまずはIE(インターネットエクスプローラー)を操作してみようと思います。