駄日記 (未完結間欠日記)

2020年 6月

(最終更新:2020-6-30)


2020-6-16 (Tue)

> てきとうなメモ。 (via https://www.pro.logitec.co.jp/about_hdd/hddssd/20191129/https://www.zoa.co.jp/pickup/detail/m2satassd/ )
NVMe
Non-Volatile Memory Express。フラッシュストレージに最適化された通信プロトコル、高速。
M.2
SSD の接続端子規格。mSATA の後継。SATA や PCIe など複数のタイプ、形状がある。小型 (モバイル向け)。
形状規格は 2280 (一番よくある)、2260、2242、など。なお 22 が幅、80 が長さ (mm)。
端子形状は M key と B&M key があり、形状が合ってないと接続できない (後者はNVMeでないので基本遅い)。
PCIe
Peripheral Component Interconnect-Express。接続規格。NVMe 採用の SSD 接続規格はこれ。
AHCI
Advenced Host Controller Interface。SATA 接続に最適化された通信プロトコル。
mSATA
M.2 よりさらに小型 (M.2 はこれの後継)。転送速度は SATA と同じ (最大 6Gbps)。

> 消毒用エタノールの店頭在庫はやく復活しないかなあ…などと思いつつ、ふとヨドバシドットコムを検索してみたら、 「消毒用アルコールの代替として使える蒸留酒 (ウオッカ)」を販売しているのを発見。早速ポチリ。 この間探してみた時にはなかったんで、やっと出回り始めたところなのかな。 いつも買ってた消エタよりもアルコール濃度が低めだけど (76.9~81.4% → 66%)、問題なし。 あとはいままで買ってたのよりも値段が高めになってしまうが、まあやむをえん…。 つーかこれたぶん酒税が (余計に) かかってるんだろうな…。調べてないけど。 酒税などというフザケた制度がはやく消えてなくなりますように。 その前に消費税との二重取りやめろ (税金に消費税かけるという極悪なことをやっとるからな)。
> 先頃買った「ハッカーと画家」を寝落ちで頻繁に中断しつつだらだら読んでやっと読了した…。 Paul Graham ってネオリベ (新自由主義者) なのけ? 格差は社会が健全な証拠だと言いたかった、とかなんとかあとから言い訳めいたことも書いてるけど、 いや格差是正に対しても否定的なこと言っとるし…。 なんかガッカリっすな…。 あとその社会の仕組みのモデルが妙に単純化されすぎてる気がするんだけど…。 全般に睡魔に抗いつつ読んでたんでアレだけど、この箇所以外も妙にモデルが単純化され過ぎてて現実を反映してんのかな? と思える箇所とか、 たとえに挙げてる事例がホントにそれ適切な例なの? と思える箇所とか、 けっこう引っかかったような気がする、というかそういう印象が残った…。 まあ Perl に好意的な点はちょっと好感持てたんだけどなあ (「Land of Lisp」の著者 (Conrad Barski) なんか必要もないところでわざわざ Perl のしょうもない dis り入れてやがってなんだこいつと思った)。
> 6月に入って、Twitter (Web ページ) の仕様が変わり、 個別ページのスタティックな HTML にページ内コンテンツの情報が直接含まれなくなった。 ぜんぶ JavaScript で動的にページ生成するようにしたらしい…。 Twitter は以前から表示画像が素直にポンポンとダウンロード (ローカルへ保存) しづらく、 cygwin 上に無限ループで Perl スクリプトを待機させておき、 ブラウザに仕込んだ vimperator (アドオン) の設定で個別ページの URL をクリップボード経由でそのスクリプトに投げ、 スクリプト側からページを scrape して画像へのリンク URL をピックアップし、 リンク先の画像データを適宜いい具合のファイル名でダウンロードする仕掛けにしていたんだが、 これができなくなってしまった。超不便。うれしくもなんともない…。
とりあえず DOM を構築し終わった状態のページから直接 vimperator 経由で (JavaScript で) 画像のリンク URL を拾い、 clipboard 経由で cygwin 上の Perl スクリプト (改変済) へ投げることで、 かろうじて半自動ダウンロードはできるようにしたが、 これだと個別ページの URL をコピーするだけでは足りず、 結局そのページをいちいちブラウザで表示させないといけない。 とてもメンドい。
という訳で改悪仕様の Twitter ページからなるべく自動で画像を (直接) 拾うのに、 node.js と puppeteer (パペティア) というモジュールの組み合わせでなんとかできないか、 とあれやこれやと情報を拾い、2週間もかかってだらだらとスクリプトを書き書き。 いや~ JavaScript めんどくせー。 await も async もよくわからん。 なにが非同期だ、ぜんぶ同期で動けや。 でもって必要に応じてマルチスレッドくらい走れや。っていう。 自分でもなにいってんのかちょっとわからんが。 Windows 版 node.js を cygwin 上からキックするようなことをやってるが、 一応問題なく動くことは動く。 でもやっぱりちょっと気持ち悪いかなあ…。 まあ動くからいいか。 しかし headless とはいえブラウザを都度起動するんでけっこう処理が重いんだな (時間かかる)。 やりたいことの割に重いんで、若干「なんだかなあ」感はあるな…。
とりあえず、初めて書いた node.js 用のスクリプトなので記念に現時点でのバージョンを貼っとこう。 Windows 環境下でしか動作確認してないし、たぶんバグも残ってるはずだけど (大体動作テストあんましやらないので)。 つーかエラー時の手当てをほとんどやっておらんなこれ。まあ全体が落ちて終わり、とかになるんだろうけどたぶん…。
'use strict';

// クリップボードを見張り、twitterのアドレスだったら個別ページとして開いて、そのページの画像を自動保存する
// Windows版 node.js 使用 (cygwinから)

const puppeteer = require('puppeteer');
const clipboardy = require('clipboardy');
const fs = require('fs');
const https = require('https');
const chalk = require('chalk');
const ctx = new chalk.Instance({level: 2});
require('date-utils');

const save_dir = 'c:/tw_imgs';

const url_queue = [];
const pic_queue = [];


// 0.5秒ごとにクリップボードを見張って変化していたら拾って対象となるurlだったらqueueに入れる
// clipboardy.read() ごとに外部プログラム(プロセス)を起動するのでせわしない…
// clipboardy.read() がエラーを起こしている間はclipboardの取得をスルーする
(async () => {
    let old = '';
    let errstat = false;

    const cread = async () => {
        const buf = await clipboardy.read()
        .then((r) => {
            if (errstat) {
                errstat = false;
                process.stdout.write('\x1b[0G\x1b[K');    // 行頭へ移動→カーソル位置から行末までを消去
            }
            return r;
        })
        .catch((e) => {
            if (! errstat) {
                errstat = true;
                process.stdout.write(ctx.red('cread err'));
            }
            return '';
        });
        if (old != buf) {
            old = buf;
            if (buf.startsWith('https://twitter.com/')) {
                url_queue.push(buf);
            }
        }
        setTimeout(cread, 500);
    };

    cread();
})();


// 0.5秒ごとにqueueのurlを見張って、拾ってscrapeして画像のlinkを抽出して整えて画像用queueに突っ込む
(async () => {
    const browser = await puppeteer.launch();

    const checkurl = async () => {
        if (url_queue.length) {
            const url = url_queue.shift();
            const page = await browser.newPage();
            await page.goto(url, {waitUntil: 'networkidle0'});
            const title = await page.$eval('title', (item) => {return item.textContent});
            const user = (() => {
                let u = title.match(/(.+)さんはTwitterを使っています/);
                return u[1];
            })();
            const alinks = await page.$$('a[data-focusable="true"][role="link"]');
            const piclinks = [];
            for (const aa of alinks) {
                const href = await (await aa.getProperty('href')).jsonValue();
                if (href.endsWith('/likes')) {
                    break;
                }
                let no = [];
                if (no = href.match(RegExp(`${url}/photo/(\\d)$`))) {
                    const img = await aa.$(':scope img');
                    let src = await (await img.getProperty('src')).jsonValue();
                    src = src.replace(/name=[-a-z_\d]+/, 'name=large');
                    piclinks.push({no: no[1], url: src, user: user});
                }
            }
            if (piclinks.length) {
                piclinks.sort((a, b) => a.no - b.no);
                for (const pl of piclinks) {
                    pic_queue.push(pl);
                }
                console.log(ctx.red(piclinks.length) + ` url added -> ${new Date().toFormat('MM-DD HH24:MI:SS')}`);
            }
            await page.close();
        }
        setTimeout(checkurl, 500);
    };

    checkurl();
})();


// 2秒ごとに pic_queue からurlを拾って画像として保存する
(async () => {
    const dlpic = async () => {
        if (pic_queue.length) {
            const picdata = pic_queue.shift();
            const user = picdata.user
                .replace(/:/g, ':')
                .replace(/\?/g, '?')
                .replace(/\//g, '/')
                .replace(/\\/g, '\')
                .replace(/</g, '<')
                .replace(/>/g, '>')
                .replace(/\*/g, '*')
                .replace(/\|/g, '|');
            const url = picdata.url;
            let fnm = url.match(/([^/]+)\?.*format=(.+?)\&/);
            const fname_body = `${fnm[1]} (${user})`;
            const fname_ext = fnm[2];
            let fname = `${fname_body}.${fname_ext}`;
            {
                let bnum = 1;
                while (fs.existsSync(`${save_dir}/${fname}`)) {
                    fname = `${fname_body}-${bnum}.${fname_ext}`;
                    bnum++;
                }
            }
            const req = https.get(url, (res) => {
                const sfile = fs.createWriteStream(`${save_dir}/${fname}`);
                res.pipe(sfile);
                res.on('end', () => {
                    sfile.close();
                });
            });
            console.log(ctx.blue(pic_queue.length) + `: saved ${save_dir}/${fname}`);
            req.on('error', (e) => {
                console.log(`err: ${e.message}`);
            });
        }
        setTimeout(dlpic, 2000);
    };

    dlpic();
})();
気まぐれに google code prettify 使ってみた…。
> GIMP で、画像にガイドを (ガイドに画像を、ではなく) スナップさせるにはどうすればいいんだろうか…。 むかーし使ってた Photoshop (7.0) ではごくフツーにできていたんだが…。 ガイドを画像の縁にぴたっと合わせるのにいちいち zoom で拡大しながら手で調整しないといけない。面倒で仕方ない。 しかし設定を見てもそれらしい項目も見つからないし、 Help や Web を探してみてもそれらしい情報は見当たらないんだよなあ…。 いやーそのくらいはできて当然だろうと思うんで、なにかしら見落としてるんだろうけど…わからんのだ。 誰かに聞いてみようかな…つっても聞く相手のアテがないなあ。
> 6.1、ジョージ秋山氏の訃報。5.12、77歳。

購入記録

  • 雑誌「まんがホーム」2020.7 芳文社
    • らいか・デイズ (むんこ)
    • 孔明のヨメ。 (杜康潤)
    • 河原課長とギャル部下ちゃん (おりがみちよこ)
    • 天国のススメ! (宮成樂)
    • 2年B組オネェ先生 (高瀬雛)
    • 2年B組オネェ先生 特別編 (高瀬雛)
    • スナックあけみでしかられて (松田円)
    • ぼくの上目遣い (市川なつを)
    • 恋はリベンジのあとで (辻灯子) (ゲスト)
    • ラブアマ (有村唯) (ゲスト)
    • めい be love (いちかわ壱)
    • キャバ嬢とヒモ猫 (一式アキラ)
    • ヲトメは義母に恋してる (桐原小鳥) (ゲスト)
    • 菓子男リノベーション (胡桃ちの)
    • 吸血鬼くんと死体ちゃん (さーもにずむ) (ゲスト)
    • 天下分け目の小早川くん (真田寿庵) (ゲスト)
    • 座敷童子あんこ (エミリ)
    • 歌詠みもみじ (オオトリキノト) (ゲスト)
    • うちの秘書さま (ミナモ)
    • もんもん (熊野みみ) (ゲスト)
    • 軍神ちゃんとよばないで 最新第7巻発売記念企画まんが (柳原満月)
    • 目次4コマ:夏至の占い (杜康潤)
  • 雑誌「まんがタウン」2020.7 双葉社
    • 新クレヨンしんちゃん (臼井儀人&UYスタジオ)
    • コミックエッセイ特集~最高な家での過ごし方 (おりはらさちこ/青木U平/橙夏りり)
    • ビギンはもうすぐ閉店します (むんこ)
    • 新婚のいろはさん (ÖYSTER)
    • 平日休みの堀出さん (小坂俊史)
    • 大越春太郎は黙れない! (瀬田ヒナコ)
    • 派遣戦士山田のり子 (たかの宗美)
    • 私たち同じ人を好きになりました (佐野妙)
    • 異時間オーナ店主交代! (胡桃ちの)
    • 野原ひろし 昼メシの流儀 (塚原洋一)
    • かりあげクン (植田まさし)
    • 部長と2LDK (おりはらさちこ)
    • SUPER SHIRO コミック版 (原作:臼井儀人/作画:相庭健太/原案:湯浅政明/制作:SUPER SHIRO制作委員会) (新連載)
    • 勇者様!? こ…これってそういう意味ですかっ!?♥ (大場玲耶) (ゲスト)
    • 袖振り合えば、君との縁 (青山六郎) (ゲスト)
    • 立ち呑み布袋でもう一杯 (とく村長)
    • 鎌倉ものがたり (西岸良平)
    • あいたま (師走冬子)
    • かのんとぱぱ (おーはしるい)
    • あさひ大家族 (ふじた渚佐)
  • 雑誌「まんがタイム」2020.7 芳文社
    • おとぼけ部長代理 (植田まさし)
    • ローカル女子の遠吠え (瀬戸口みづき)
    • 花丸町の花むすび (むんこ)
    • 大家さんは思春期! (水瀬るるう)
    • ラディカル・ホスピタル (ひらのあゆ)
    • 軍神ちゃんとよばないで (柳原満月)
    • ハニトラなんか怖くない! (東屋めめ)
    • レーカン! (瀬田ヒナコ)
    • 茨城ってどこにあるんですか? (真枝アキ)
    • 六畳一間の憑き物石 (西岡さち)
    • 良倉先生の承認欲求 (G3井田)
    • 午前0時のおねだりごはん (あきさと)
    • 抜けだせ! ぼっち!! (いちおか) (ゲスト)
    • 幕の内パラダイス (木丸みさき) (ゲスト)
    • テレパス皆葉と読めない彼女 (諸田トモエ)
    • ご主人様! 確保します♥ (ぼたん)
    • 瀬戸際女優! 白石さん (櫻井リヤ)
    • お天気おねえさんの晴れ舞台 (きなこ)
    • 恋愛ラボ -スピンオフストーリー!!- (宮原るり)
    • 神シュフ☆エンタ (胡桃ちの)
    • 目次4コマ:つながれ! 黒電話ちゃん (瀬田ヒナコ)
  • 雑誌「まんがライフオリジナル」2020.7 竹書房
    • リコーダーとランドセル (東屋めめ)
    • ちぃちゃんのおしながき (大井昌和)
    • 出会ってしまったツルとカメ (むんこ)
    • ねこようかい (ぱんだにあ)
    • となりの席の同居人 (神仙寺瑛)
    • のみじょし (迂闊)
    • しょうもないのうりょく (高野雀)
    • 鬼桐さんの洗濯 (ふかさくえみ)
    • 化け猫さんは恩返しがしたい (梨尾)
    • 森田さんは無口 (佐野妙)
    • 銀子の窓口 (唐草ミチル)
    • セトギワ花ヨメ (胡桃ちの)
    • ネコぐらし (深谷かほる)
    • 博多女子は鬼神のごとく気が強か!? (山東ユカ)
    • バー・オクトパス (スケラッコ) (最終回)
    • はかせの未来 (せかねこ)
    • 新婚よそじのメシ事情 (小坂俊史)
    • ぼのぼの人生相談 (いがらしみきお)
    • なごみクラブ (遠藤淑子)
    • ハッピーアワーガールズ (揚立しの)
    • ばつ×いち (おーはしるい)
    • もぐもぐガーデン (宇仁田ゆみ)
    • 中年女子画報 (柘植文)
    • クレオパトラな日々 (柳原満月)
    • とーこん家族 (よしもとあきこ)
    • ギャル医者あやっぺ (長イキアキヒコ)
    • 出没! アダチック天国 (吉沢緑時)
    • 異世界にマンガ家が転生したらどうなるのか、描いてみた件 (東村アキコ)
    • マンガ家ゲーム日記 (びみ太)
    • 全ての映画は、ながしかく (施川ユウキ)
    • 目次4コマ:ポポ時評 (施川ユウキ)
  • 雑誌「ヤングコミック」2020.7 少年画報社
    • K -keiko- (佐野タカシ) (新連載)
    • 潔癖女王のヤリ返し (蛇光院三郎)
    • ヤンキー娘になつかれて今年も受験に失敗しそうです (ジェームスほたて)
    • 霧島絵美さまの新人教育 (浅ひるゆう)
    • 女だって時間停止できるんだからっ! (さんりようこ)
    • イケナイ菜々子さん (あさぎ龍)
    • 見たいもの見せましょう (たまはがね)
    • 魔女ノ湯 (堀博昭)
    • メスガオ -雌顔- (吉沢雅) (読み切り)
    • はめドル! (東雲龍)
    • 眼鏡さんは塩対応 (zen9)
    • 出戻り館のセバスチャン (かたやままこと)
    • 少年画報社版 人物日本の歴史 三峯徹 (金平守人/監修:稀見理都)

結局ほったらかしだ~。




まだぜんぜん暗号だ…。





2020-6-22 (Mon)

> 当サイトも含めたコンテンツ達をレンサバ (共用サーバ) から VPS へ引っ越ししよっかな…と思い、ぼちぼちあれこれ調べたりしている。 さくっと終わらせずにぼちぼちだらだらしてるところが相変わらずだな。 VPS はストレージ容量はまず足りるだろうけど、メモリが若干心配。 上でなにを動かすかにもよるんだろうが、1GB で足りるのかなあ…という。 昔はそれこそ 1GB もありゃ大容量メモリで個人使用なら十分以上だったけどねえ。 今は CPU も 64ビット化しとるし、当時と比べたらソフトウェアも遥かにメモリ食い前提の設計に寄ってきてる (だろう) しなあ。 まー実際に乗せて動かしてみなきゃわかんないか。
…考えてみたら 2012年末まではここのサイト、 自宅サーバの OpenBlockS 266 で動いてたんだよな…。 スペックは CPU が 266MHz (PowerPC 405GPr、なんと FPU レス) にメモリは 128MB、 ストレージは 2.5inch E-IDE HDD 40GB (20GB だったかも) で、 RDB こそ走ってはいなかったが、 ウェブサーバにメールサーバに DNS (内向けのキャッシュサーバと DNS コンテンツサーバ) も特に問題なく使えてたんだっけ。 …なんか大丈夫そうな気がしてきた。
> サーバの引っ越しをする機会に、 まだ触ったことがなかった Docker とかをちょっといじってみようかな…と余計なことを思い付いたりして、 現物を触らないまましばらくいろいろ情報を漁ってみたんだが、 どういうシロモノなのか、というあたりがどうもいまいちよくわからない。 まあ実際に触ってみりゃいいんだろうけど…。 ウチのような単体の個人サイトでは導入メリットがあまりなさそうな雰囲気を感じる。なんとなく。 とりあえず、いきなり本番サイトへ持ち込むのはやめとこう。 そのうちまた気が向いたら Raspberry Pi あたりに突っ込んでちょっといじってみよ。
> サーバの引っ越しはいいとして、 今借りてるレンサバのサービスに紐づいて提供されてるドメイン (達) が使えなくなるので、 これらをどうにかせねばいかん。 といってもそれらのドメインで作っていたメールアカウントは別のドメイン・アカウントにほぼ移行し終わってるし、 Web コンテンツ類も sabimaru web (sabimaru.mydns.jp) にぶら下がってても構わんものは、 サブドメイン作ってそっちにもう移動してるけど。告知もなにもしないままだけど。
ただ、現在仮設住宅サイトに避難生活してる「名崎無線送信所研究サイト」(預かりもの) はどうしようかなあ…。 これは元々友人がずいぶん昔から運営していたサイトで、 ワシの持ち物ではないのでウチ (sabimaru.mydns.jp) のサブドメインにしちゃうのはちと違う感があるのと、 現状ではウチのサイトが消えると一緒に消えざるを得なくなるので、 この機会にいっそ別の独自ドメインなり独自のダイナミック DNS サービスのサブドメインなりに切り換えて、 いつでもコンテンツ本体を引っ越し (緊急避難) できる態勢にしておくのがいいんじゃないかな、と思うんだが。 元のサイトオーナーが現在いろんな意味で身動き取れない (取りづらい) 状態なんだよな…。 まあとりあえずオーナーに相談してみないことには始まらないか。

購入記録

  • 雑誌「主任がゆく!スペシャル」Vol.148 ぶんか社
    • 主任がゆく! (たかの宗美)
    • 金髪女将綾小路ヘレン (たかの宗美)
    • カメのまんねんさん (千石のりお) (ゲスト)
    • ファニーランドの鬼ババア (むんこ) (ゲスト)
    • 隣のショタがまるで嫁 (道野ほとり) (ゲスト)
    • モノズキ散歩、お茶してうまし♥ (胡桃ちの)
    • 若奥様は侵略中 (佐野妙)
    • 桃川桜は変わりたい (師走冬子)
    • 花野さんとの縁結びは難しい (野広実由)
    • もう雑誌なんて誰も読まねえよ (川崎昇平)
    • あい・ターン (おーはしるい)
    • 双子コンプレックス (おりはらさちこ)
    • マチ姉さんのポンコツおとぎ話アワー (安堂友子)
    • 農学女子 (そめい吉野)
    • 群馬犬! (安西理晃)
    • くそじいじとカメラと私 (うず)
    • きっこと申します。 (海野倫)
    • 女王様の卵 (後藤羽矢子)
    • 事故物件より愛をこめて (魔神ぐり子)
    • それいけ! せっぷく丸 (大塚みちこ)
    • 義母と娘のブルース (桜沢鈴) (再録)
    • 目次4コマ:ゆるゆるマンガ (千石のりお)
  • 単行本(古)「大活字版 ザ・聊斎志異 -聊斎志異全訳全一冊-」蒲松齢/柴田天馬:訳、第三書館 ISBN4-8074-0641-8 C0097 ¥2500E (2007)
  • コミックス「さわらせてっ! あみかさん (4)」トフ子、芳文社 ISBN978-4-8322-5735-1 C9979 ¥619E (2018)

> あみかさんの最終巻やっと買った。 まあ、まだ買ってない本たくさんあるんだけど…。 4巻で終わっちゃったのがほんと惜しい漫画だったな~…。
ザ・聊斎志異、は判型 A4 判で厚さ 3cm ほどの大判の書。 紙質は小型の英和辞典みたいなペラペラで、裏側もかなり透けるが、印刷の質はだいぶよろしい。 大活字版で字はかなりでかいが、老眼鏡が不要というほどではない (でも文字が大きい分、目はラク)。 不思議なことに旧字体の漢字と新仮名の組み合わせになってる。旧字体が咄嗟に読めないのがびみょうに辛い。 まあ読んでるうちに読めるようになっていくだろう…たぶん。

↑2019年 12月の記事。
たいへん心引かれるブツではあるが…。懐事情および現状の生活行動パターンからみてこれはちょっと手を出してはいかんブツだな…。
こっちはキーボードを背面に格納できる (隠せる?) んだな。この方が使いやすそう。

そういや先日、オプションでなんか来てたなー。 なんだこれ、そもそもうち Edge なんぞ入ってねえし、と非表示にしてスルーしたんだが、 まさかアップデートじゃなくインストールの配信だったとは。 まあ要らないから結局スルーに変わりはないけど。

2020-6-27 (Sat)

> すっかり spam ホイホイな旧個人用メアド以外に、 Web にさらしてる gmail のアドレスにもぼちぼち spam が届くようになってきた。 中身が spam なだけのフツーのメールならいいんだが、最近続けて来てるやつはメールヘッダのうち Date: 部分が規格に沿っておらず、 pop3 で手元に落としてきた時に、常用メーラ内で日付が 1970年 1月 1日 0時 0分 0秒 (UTC) になっちゃって、 始末がメンドくさい。 見ると、spam 業者がメール送信元 (From:) の偽装ドメインに 5文字のランダムな英数字を使っているんだが、 それとまったく同じ文字列を Date: にも突っ込んでる。 例えば from: が *****@wrIs6.us で、 date: が wrIs6、てな具合。 わざとやってんのか単にマヌケなのか詳細は不明だが。
とりあえず、Date: 部分が規格外なトンチキなメールは spam だろうがそうでなかろうが問答無用で全部捨てるよう、 google apps script (gas) で仕掛けを作った。 これをプロジェクトに登録して 1時間に 1回程度走らせて、腐れメールは全部削除する作戦。 ホントは受信した時点でフィルタリングできればいいんだけど、 gmail が標準で備えてるフィルタ機能ではそこまでできないんだよな…。
// GmailApp.search() で指定する query の newer_than は、Web UI に表示された(受信)日時が対象。
// 一方 GmailMessage.getDate() は、実際の header に書かれた Date: を Gmail が解釈した後の日時データ (Date())。
// 不正なフォーマットの Date: は解釈不能なので、 unix time で 0 となる。
function remove_spam_with_broken_date_header () {
  var threads = GmailApp.search('in:inbox -is:starred newer_than:1d');
  for (var i = 0; i < threads.length; i++) {
    var messages = threads[i].getMessages();
    for (var j = 0; j < messages.length; j++) {
      if (messages[j].getDate().getTime() == 0) {
        messages[j].moveToTrash();
      }
    }
  }
}
だがしかし! これで問題は解決にならなかった…。
最近、手持ちの複数メールアカウント宛に届いたメールを読み出し専用アカウントに集中転送してそこから読み出す方針に変えた関係で、 このアカウントも受信したメールは即転送する設定にしていた。 つまり、上のスクリプトで gmail 内のメールを処理している時点で肝腎の spam はとっくに転送されて手元に届いちゃってるんで、 なにをどう処理しても意味がないんであった。 いや、さっさと気づけよっていう。
当該アカウントだけは転送設定を解除して、直接読み出すようにするという手もないことはないが… でもなー。せっかく読み出し元をまとめてほぼタイムスタンプ (Date: の値) 順に POP3 で拾えるようにしたのを崩すのも忍びないんだよな。
転送のタイミングを spam 判定処理の後にすれば、つまり gmail の設定による転送をやめて、 gas で spam 判定処理をするのと同時に spam 以外のメールを転送するようにしたらどうか? と思って書き直してみたんだが…。
// GmailApp.search() で指定する query の newer_than は、Web UI に表示された(受信)日時が対象。
// 一方 GmailMessage.getDate() は、実際の header に書かれた Date: を Gmail が解釈した後の日時データ (Date())。
// 不正なフォーマットの Date: は解釈不能なので、 unix time で 0 となる。
// 除去したspam以外のメールは既読とし、このスクリプトから外部へ転送する
function forward_without_broken_spam () {
  var threads = GmailApp.search('in:inbox is:unread newer_than:1d');
  for (var i = 0; i < threads.length; i++) {
    var messages = threads[i].getMessages();
    for (var j = 0; j < messages.length; j++) {
      if (! messages[j].isUnread()) {
        next;
      }
      if (messages[j].getDate().getTime() == 0) {
        messages[j].moveToTrash();
        next;
      }
      messages[j].forward('***@***.com');  // 転送先アドレス直指定
      messages[j].markRead();
    }
  }
}
だがしかし! gas の GmailMessage.forward() による転送は、 gmail の設定による転送ではなく、 手動での転送と同じ方式になってしまうのであった。 すなわち Subject: の先頭に「Fwd:」がつき、 From: も元の送信主ではなく当該 gmail アカウントのアドレスになってしまう。 ダメじゃん…。
というわけで、結局 gmail (google) 内でうまいこと捌くのはムリっぽいことがわかった。 そしたらもう、gas でいじらずにぜんぶ外部サーバにさくっと転送しちゃって、 そっちで適宜 spam 判定 (& 除去処理) するしかない。 外部サーバつってもまあ、飛ばす先はさくらのサーバくらいしかないんだけど。
とりあえず Perl スクリプトで処理する方針で、 spam 判定のスクリプトは以前書いたのがあるのでそれを下敷きにするとして。 メールの Date: フォーマットを解析するのに手頃なモジュールはないかな、とさくっと検索してみたところ、 DateTime::Format::Mail と Date::Manip がさくっと見つかった。 前者は ->loose 設定にしてやらないと、 時間帯などにくっついたコメント部 (例えば「Tue, 9 Jun 2020 12:35:30 +0900 (JST)」の「(JST)」の部分など) をちゃんと認識できなかったりするのと、 不正な (解析できない) フォーマットだと例外で落ちるので (死ぬなよ…)、 若干扱いがメンドウっぽいけどまあ用途には十分。 後者はメールの Date: 部に限らずいろんな書式の日時表記に対応できてて(*27-1)汎用かつ多機能だが、その分ちと処理が重いっぽい。 試しに Benchmark 取ってみたら前者が後者の 50倍くらい速かったので(*27-2)とりあえず DateTime::Format::Mail を使ってみよう。

購入記録

  • 雑誌「まんがタイムオリジナル」2020.8 芳文社
    • ラディカル・ホスピタル (ひらのあゆ)
    • らいか・デイズ (むんこ)
    • 小森さんは断れない! (クール教信者)
    • 大家さんは思春期! (水瀬るるう)
    • おしかけツインテール (高津ケイタ)
    • Dr.こよりの美味カルテ (按図よしひろ) (ゲスト)
    • ミッドナイトレストラン7to7 (胡桃ちの)
    • ネコがOLに見えて困ります (鳴海アミヤ)
    • 僕は女心なんて知りたくない (トモエキコ)
    • となりのフィギュア原型師 (丸井まお)
    • 可愛い上司を困らせたい (タチバナロク)
    • ローカル女子の遠吠え (瀬戸口みづき)
    • 負け恋。 -ずるい恋の始め方- (近衛桜月)
    • わさんぼん (佐藤両々)
    • コスプレ地味子とカメコ課長 (橙夏りり)
    • うららのパンツは店長を困らせる (saku)
    • カントリー少女は都会をめざす!? (鬼龍駿河)
    • 敷金礼金ヤンキー付き (namiki)
    • 氷室君は板野さんの事が覚えられない (かわのゆうすけ) (ゲスト)
    • 大奥より愛をこめて (松阪)
    • 目次4コマ:やくみつるのズバリ!!一発勝負!! (やくみつる)
  • 雑誌「まんがライフ」2020.8 竹書房
    • めんつゆひとり飯 (瀬戸口みづき)
    • 動物のおしゃべり♥ (神仙寺瑛)
    • だもんで豊橋が好きって言っとるじゃん! (佐野妙)
    • 恋愛感情のまるでない幼馴染漫画 (渡井亘)
    • チート転生した猫は嫁の膝で丸くなりたい (樹るう)
    • 晴れのちシンデレラ (宮成楽)
    • 俺だけは八木坂さくらを好きにならない (季野このき)
    • リコーダーとランドセル (東屋めめ)
    • はかせの未来 (せかねこ) (ゲスト)
    • ますたーあっぷ! (湧井想太/原作:仁藤砂雨)
    • 若旦那はザンネン。 (小池定路)
    • あなたの街のトビウオ運輸 (えきあ)
    • アスクミ先生に聞いてみた (後藤羽矢子)
    • スパロウズホテル (山東ユカ)
    • お姉ちゃんが来た (安西理晃) (最終回)
    • 醍鹿館のシェアメイト (おーはしるい)
    • おまわりさんと悪女ちゃん (まどろみ太郎)
    • 有閑みわさん (たかの宗美)
    • 奥さまはアイドル♥ (師走冬子)
    • 高尾の天狗とミドリの平日 (氷堂リュージ)
    • オルタナティブメランコリー (渋谷一月)
    • ぼのぼの (いがらしみきお)
    • 猫俣社長とちまりちゃん (ヒャク)
    • 見上げるあなたと星空を (とこみち) (最終回)
    • 旅するように暮らしたい (胡桃ちの)
    • 新フリテンくん (植田まさし)
  • CD(古)「“STAND BY FOR ACTION!” THE MUSIC OF BARRY GRAY」SILVA SCREEN RECORDS SILCD-1279 (2009)
    FOUR FEATHER FALLS
    1. Kalla Ma Kooya Kalla - Opening Title (Voice artist: David Graham)
    2. Four Feather Falls (Vocal: Michael Holliday)
    SUPERCAR
    1. Mike's Theme
    2. Supercar Series 2 Titles (Vocals: The Mike Sammes Singers)
    3. The Supercar Twist
    FIREBALL XL5
    1. Fireball XL5 Opening Titles
    2. This is The Twist
    3. Formula 5
    4. I Wish I Was A Spaceman - End Titles (Vocal: Don Spencer)
    STINGRAY
    1. Stand By For Action! (Voice artist: Ray Barrett)
    2. Stingray Titles (Vocals: The Mike Sammes Singers)
    3. The Loch Ness Monster Suite
    4. I've Got Something to Shout About (Vocal: Gary Miller)
    5. Aqua Marina (Vocal: Gary Miller)
    THUNDERBIRDS
    1. Thunderbirds Titles (Voice artist: Peter Dyneley)
    2. Desperate Intruder Suite
    3. Perils of Penelope Suite
    4. Thunderbirds End Titles
    CAPTAIN SCARLET
    1. Century 21 Sting
    2. Captain Scarlet Opening
    3. The Mysteron Complex
    4. White As Snow
    5. The Mysteron Theme
    6. Captain Scarlet End Titles (Vocals: The Spectrum)
    JOE 90
    1. Joe 90 Theme
    2. Balloon Flight
    3. Hijacked
    4. International Concerto Suite
    5. Joe 90 End Titles
    THE SECRET SERVICE
    1. The Secret Service Theme
    2. Operation Intercept
    UFO
    1. UFO Opening Titles
    2. SHADO - Variations On A Theme
    3. A Rose For Sylvia
    4. The Trip
    5. UFO End Titles
    SPACE: 1999
    1. Breakaway Intro
    2. Main Titles Extended
    3. Ring Around the Moon, Another Time Another Place, Black Sun, Matter of Life and Death
    4. End Titles
  • DVD(古)「仮面の忍者 赤影 第一部 金目教篇」東映/東映ビデオ DUTD-02038 (2019)
    DISC 1
    1. 怪物蟇法師
    2. 甲賀の悪童子
    3. 逆襲蟇法師
    4. 怪奇忍び屋敷
    5. 謎の独楽忍者
    6. 恐怖の大魔像
    7. 妖術一つ目
    • ソングコレクション
      1. 「忍者マーチ」カラオケ2コーラス、メロディ有り
      2. 「赤影の歌」カラオケ3コーラス、メロディ有り
      3. 「赤影の歌」歌入り3コーラス
      4. 「赤影の歌」歌入り1コーラス
      5. 「忍者マーチ」歌入り3コーラス
      6. 「忍者マーチ」赤影歌詞1コーラス
      7. 「忍者マーチ」青影歌詞1コーラス
    DISC 2
    1. 南蛮大筒の秘密
    2. 不死身の魔像
    3. 怪忍者黒蝙蝠
    4. 鬼念坊鉄車
    5. 闇姫髪あらし
    6. 大魔像破壊作戦
    • BGMコレクション
      1. スローな立回り (M2)
      2. 赤影の立回り
      3. 白影のテーマ、立回り
      4. 白影のテーマB、やさしい
      5. 赤影 (バスフルート)
      6. 赤影 (バスフルート) T3
      7. 青影のテーマA
      8. 青影のテーマB、立回り
      9. 青影のテーマC、やさしく
      10. スリル (M18)
      11. エンディング
      12. エンディング T2
      13. エンディング (M9)
      14. エンディング (M10)
      15. エンディング (M9) T2
      16. エンディング (M11)
      17. エンディング (M12)
      18. 怪物出現 (M19A)
      19. 怪物出現 (M19B)
      20. 怪物出現 (M19C)
      21. 怪物出現 (M19D)
      22. 空を飛ぶ (M20)
      23. 火を吹く (M21)
      24. 変化する (M22)
      25. 変化する (M23)
      26. 激しい (M24)
      27. 楽しい (M26)
      28. 悲しい (M27)
      29. スリル (M28)
      30. 怪奇 (M29)
      31. おどろき
      32. おどろき
      33. おどろき
      34. おどろき
      35. おどろき
      36. おどろき
      37. おどろき
      38. おどろき
      39. おどろき
      40. おどろき
      41. (タイトルなし)
      42. 悲しみ (M14)
      43. 赤影 (M15)
      44. コミック (M16)
      45. さわやか (M17)
      46. (タイトルなし)
      47. (タイトルなし)
      48. ミステリーA (M5)
      49. ミステリー (M6)
  • DVD「仮面の忍者 赤影 第二部 卍党篇」東映/東映ビデオ DUTD-02039 (2019)
    DISC 1
    1. 謎のまんじ党
    2. 小法師白蝋鬼
    3. 怪獣針紋鬼
    4. 不死の魔老女
    5. 鳥獣むささび
    6. 忍法つむじ傘
    7. 怪物大まんじ
    • ソングコレクション
      1. 第二部「卍党篇」プロローグ鐘の音のみ・オープニング
      2. 第一部「金目教篇」オープニング (未使用テイク)
      3. 第一部「金目教篇」オープニング (ナレーション入り)
      4. 第一部「金目教篇」オープニング (ナレーションなし)
      5. 第二部「卍党篇」オープニング (ナレーションなし)
      6. 第二部「卍党篇」オープニング (ナレーション入り)
    DISC 2
    1. 渦潮骸骨丸
    2. 怪獣変化陣
    3. 地獄の魔老女
    4. いかるが兄妹
    5. 悪魔の鐘
    6. 大爆發
    • BGMコレクション I (「大忍術映画ワタリ」より)
      1. (タイトルなし)
      2. ギア カチャン
      3. 強く出る
      4. ギター強く出て
      5. 不気味
      6. お化け 頭ブッツケに
      7. お化け ミステリー
      8. 少し強く出て後やさしくトランペット
      9. ダイナミック
      10. ショック
      11. 不安
      12. 魔神像
      13. 立回りほか
      14. 立回りほか ラスト・スローテンポ、エレジー的
      15. 不気味
      16. かき廻し
      17. ガの大群
      18. (タイトルなし)
      19. ギター
      20. 不安
      21. コード
    • BGMコレクション II (「忍者ハットリくん」より)
      1. 怒り (M2)
      2. おどろきB (M1)
      3. おどろきC (M1)
      4. おどろきD (M1)
      5. おどろきE (M1)
      6. おどろきF (M1)
      7. 笑い (M3)
      8. 泣きA (M4)
      9. 泣きB (M4)
      10. 走りA (M5)
      11. 走りB (M5)
      12. ドロンA (M7)
      13. ドロンB (M7)
      14. ドロンC (M7)
      15. ドロンD (M7)
      16. ドロンE (M7)
      17. サスペンスB (M9)
      18. サスペンスC (M9)
      19. サスペンスD (M9)
      20. 立回りA (M10)
      21. 立回りB (M10)
      22. とぼけ (M12)
      23. 両親 (M14) T1
      24. お姉さん (M15) T1
      25. スリル (M18) T4
      26. 忍び (M20) T2
  • DVD(古)「仮面の忍者 赤影 第三部 根来篇」東映/東映ビデオ DUTD-02040 (2019)
    DISC 1
    1. 根來十三忍
    2. 忍法大怪魚
    3. 忍法山彦変化
    4. 蟻怪獣ガバリ
    5. 怪忍百面鬼
    6. 鉄甲アゴン
    7. 大百足ドグマ
    • ソングコレクション
      1. 第四部オープニング主題歌「忍者マーチ」(ナレーション入り)
      2. 第三部オープニング主題歌「忍者マーチ」(ナレーション入り)
      3. 主題歌「忍者マーチ」(青影のテーマ)
      4. 主題歌「忍者マーチ」(白影のテーマ)
      5. 副主題歌「赤影の歌」(3コーラス)
      6. 副主題歌「赤影の歌」(1コーラス)
      7. 主題歌「忍者マーチ」(3コーラス)
      8. 第三部オープニング主題歌「忍者マーチ」(ナレーションなし)
    DISC 2
    1. 怪獣大逆襲
    2. 梟怪獣ガッポ
    3. 忍法石仏
    4. 怪忍獣ジャコー
    5. 怪忍獣勢揃い
    6. 六大怪獣大逆襲
    • BGMコレクション (第三部・新録音曲)
      1. M1サブタイトルA
      2. M1サブタイトルB
      3. M1サブタイトルC
      4. M2ブリッジ
      5. M3コミック
      6. M4サスペンス
      7. M5時間経過
      8. M6コードA
      9. M6コードB
      10. M6コードC
      11. M7コンマA
      12. M7コンマB
      13. M8テーマ
      14. M9テーマ
      15. M10立回りA
      16. M10立回りB
      17. M11Aハンザキ
      18. M11Bアリ
      19. M11Cフクロウ
      20. M11Dヤマネコ
      21. M11Eムカデ
      22. M11Fカブト虫
      23. M12Aハンザキ
      24. M12Bアリ
      25. M12Cフクロウ
      26. M12Dヤマネコ
      27. M12Eムカデ
      28. M12Fカブト虫
      29. M13マーチ
      30. M13マーチ T2
  • DVD(古)「仮面の忍者 赤影 第四部 魔風篇」東映/東映ビデオ DUTD-02041 (2019)
    DISC 1
    1. 魔風忍者の来襲
    2. 鎧怪獣グロン
    3. 忍法はがね鞭
    4. 吸血怪獣ギロズン
    5. 顔のない忍者
    6. 岩石怪物ガガラ
    7. 怪獣ががら対ざばみ
    • ソングコレクション
      1. 「赤影の歌」カラオケ1コーラス
      2. 「赤影の歌」カラオケ3コーラス
      3. 「忍者マーチ」カラオケ3コーラス、メロディ有り
      4. 「忍者マーチ」カラオケ1コーラス、メロディ有り
      5. 「忍者マーチ」カラオケ2コーラス、メロディ有り
    DISC 2
    1. 魔風堂の怪獣
    2. こども忍者術くらべ
    3. 人喰い植物ばびらん
    4. とかげ忍獣じじごら
    5. 決戦魔風忍群
    6. 六大怪獣包囲陣
    • BGMコレクション (第四部・新録音曲)
      1. M1お正月
      2. M2立回り
      3. M3情景
      4. M4恐怖A
      5. M4恐怖B
      6. M4恐怖B T2
      7. M5シリアス
      8. M12走り
      9. M13歩き
      10. M14行列
      11. M15怪奇
      12. M16喜び
      13. M17悲しみ
      14. M18怒り
      15. M6影烈風斉
      16. M7ショッキングA
      17. M7ショッキングB
      18. M7ショッキングC
      19. M7ショッキングD
      20. M7ショッキングE
      21. M7ショッキングF
      22. M8サブタイトルA
      23. M8サブタイトルB
      24. M8サブタイトルC
      25. M8サブタイトルD
      26. M9タイトル・山
      27. M9タイトル・海
      28. M9タイトル・城
      29. M9タイトル・都
      30. M9タイトル・かがり火
      31. M9タイトル・飛騨
      32. M10追跡
      33. M11尾行
      34. M19黄金の仮面 (ファンファーレ)

> 「“STAND BY FOR ACTION!” THE MUSIC OF BARRY GRAY」は輸入盤。 中古で買ったんだが、届いてみたら未開封品だった。 よく見たら商品説明に未開封品て書いてあった…。 CAPTAIN SCARET のボーカル入りが好き。あとやっぱ JOE 90 の Hijacked のイントロのドラムだな。
赤影は…ブックオフオンラインで第二部以外の 3点が一斉に在庫ありになったのでつい。 第二部どうしよう…と思って調べてみたらヨドバシドットコムの新品でも (ポイント還元を勘定に入れれば) 値段変わらなかったのでつい。 基本的に普段の買い物でポイントカードは作らないしポイントもまったく考慮しない方針だが、 ヨドバシドットコムはカードを作ったり管理したりせずとも勝手にポイントがつくし (逆に拒否もできない)、 ポイント期限とかを全く気にしないでよい程度には頻繁に買い物してるので。 イーカゲンな方針だな。
赤影は…むかーしむかーし、友人 (故人) がビデオテープ (β) で持っていて、 下宿に遊びに行った時にいくつかエピソードを見せてもらったのだが。 みんな寝ちゃった後も一人で延々と朝まで鑑賞し続けてたら、 朝になって起きてきた友人に「一晩中見てたの!? デッキとテープが傷むでしょ…」と怒られたっけなあ。 そして赤影見るのはあの時以来だったりする。

こちらのキーボードはスライド式。おねだん約 9万 (税別)。

6 飛ばして 7 って PHP か! まあなんつーか、むりに 7 にしなくてもずっと 5 のままでいいような気もするんだけど…。
後方互換性を (オプションなどで維持する手段は残しつつも) 重視しないで使える方向へ。

蛇足的脚注

*27-1 : メールの Date: に限らず
というかメールのヘッダの Date: のフォーマットが一般的な欧米の日時表記の (慣習的な?) フォーマットとはちょっと違ってるっぽいので、 むしろメールの Date: まで対応範囲に含んでいる、というべきかもしれない… (適当)。
*27-2 : Benchmark
正規の Date: と壊れた Date: をそれぞれひとつずつ処理させた場合の結果。 後で正規の Date: と壊れた Date: の割合を 300:1 にして試してみたが、 やはり DateTime::Format::Mail の方が 60倍くらい速かった。

2020-6-30 (Tue)

> Date: のぶっこわれた spam メールを除去する仕掛けを作ったのはいいが、 その後該当する spam がまったく送られてこない。 まあいいか。ヘンなモンが来ないのがなにより。
> Amazon (co.jp) の検索結果一覧表示が、スマホ基準っぽい「1商品 1行」になってしまってとても見づらい。 以前はマトリックス状に並んで一覧しやすかったんだが、なにかのきっかけで 1商品 1行の表示に固定されてしまった。 amazon.co.jp と amazon.com に関連する cookie を削除してみたが状況に変わりなし。 常用ブラウザは諸事情により、ちょっと古いめの Waterfox を使っているのだが、 試しに chrome 系ブラウザで見てみると問題なくマトリックス状に表示される。 最新の (動作確認用にだけインストールしてある) Firefox や Firefoxdev でも問題なし。 Amazon 側で USER AGENT を見て最新のブラウザに該当しないやつはぜんぶスマホ扱いみたいなことをやってんのかしら…とも思ったんだが、 アドオンで USER AGENT を偽装してみても結果は変わらず。 でもって、このちょっと古い Waterfox でもプライベートウィンドウからアクセスすると、 2回に 1回くらいはマトリックス状の表示になる… (つまり、それでもやっぱり 2回に 1回くらいはスマホ基準ぽい 1商品 1行になってしまう…)。 うーんわけがわかんねーや。
表示方法を切り換えるメニューも特に見当たらないし、 Amazon にまたひとつクソな部分が増えたことだけは確かなんだが、 そうは言っても現状 Amazon をまったく使わんという訳にもいかず。 とりあえず他の chrome 系ブラウザなら (今のところは) 問題なく表示されるのはわかったので、 brave browser (chrome 系) を Amazon ログインしっぱなしブラウザとしてしばらく専用に使うことにしてみよう。 ホンットに Amazon てクソのかたまりだね… (クソクソうるさい)。
> XF1 (故障により死亡) の後継のつもりで半年ほど前に中古で買った FUJIFILM の XQ1 (コンデジ) だが…。 以前、夜中に買い物に出た時についでにちょっと持って行って、そこらを試撮してみたら、 ピントがボッケボケの写真が何枚かできてしまったのがナゾだった。 あとでよく見たら、マクロモード (近接撮影用モード) がオンになっていた。 もちろんマクロモード + 遠景でも一応 AF でピントが合うこともあるんだが、外す確率が上がる。 同じ FUJIFILM の XF1 もそういえばマクロモードをマメに切り換えないとピント合いにくかったかも…。 ただ、撮影時に合焦 (ピント合いましたぜダンナ) サインが出ていたのは確かなので。 ピントぼっけぼけのくせにピント合ってると判定してしまうファームウェアなのか。 他のカメラではあまり見ない症状だな…と思った。
しかしその後使っているうちに、 マクロモードかどうかとはあまり関係なく、 そもそもこのカメラはピント合わせがヘタクソなんじゃないかという気がしてきた。 特に暗い場所…。なんなら普通に照明をつけた室内くらいの暗さでも AF で合焦失敗する率がはね上がる。 このカメラ使っていて AF に特に問題ない人はたぶん昼間の明るい屋外などでの撮影が主な人なんじゃないかなあ。 そして合焦しなかったサインが出る場合と、ボケボケなのに合焦サイン出る場合と両方ある。 コントラスト AF と位相差 AF のハイブリッドで AF が優秀、ってのが確かウリだったはずなんだけど…。
AF モードでシャッター半押しで合焦させた後でも、ダイヤル類でピントの微調整ができるといいんだが、 このカメラにはそういう機能はついてない。 どうしても MF で微調整したい場合は、MF モードにしておき、 AF を利かせたい時だけ裏面のコマンドダイヤルキー左を押す、というような使い方でしのぐしかない。 しかしこれはシャッター半押しでの AE とは別に操作しないといけないので、手間も時間も余計にかかる。 普段は AF で使い、微調整したい時だけ MF に切り換える、という方法も考えられるが、 このモード切り換えも機能キーでショートカット的に割り当てはできるものの、 最低でもボタンを 3回押さないといけない。 とてもワンタッチでとは言えない操作の煩雑さなのであった。 基本的には AF メインでばっしゃばっしゃ使うのを前提の設計なのかもしれないが、 その肝腎の AF が弱いととたんに使いづらくなるという…。 AF モード中でもシームレスに MF が使えるような機能がついてたらよかったんだがなあ… せっかくレンズ基部にコントロールリングもついているのにな。 RX100M4 や LX100 あたりならできるのになあ。 いや、カメラのグレードが違うし、比較してはいかんか? でも同じ FUJIFILM の X30 (XQ1 よりも上のグレードと思われる機種) も、 取説を見てみるとやはり AF モード化で一時的に MF を利かす機能がついてないっぽいんだよなあ。 これはメーカーの設計思想の違いも大きいのかもしれんな…。わからんけど。
あと、中古で入手したせいもあるだろうが、背面のコマンドダイヤルの挙動が若干おかしいのがなかなか直らない。 先日はどちらへ回転させても一方向への回転としか検知されなくなって往生した。 大半の操作はコマンドダイヤルの上下左右押しで代替できるんだが、 中にはダイヤルを回す以外に調整手段のない機能もあって… (フォーカスエリアの選択とフォーカス範囲の拡大縮小が、 前者が十字キーで後者がコマンドダイヤルに同時に割り当てられているので、 フォーカス範囲のサイズが最小の状態から変更できなくなってしまった…)。 ダイヤルの隙間から接点洗浄剤をがっしゅがっしゅ吹いてぐりんぐりん回していたら、なんとか直ったようだけど。 またいつ調子が悪くなるかわかんないなあ、という。
そんな訳で、XQ1 への愛着が少しばかり薄れた出来事だった。 まあ、このへんは割り切って使う類のカメラかもしれないなー。 XF1 もやたら機能豊富っぽく見えて意外と融通が利かない面もあったような気がするし (すでに記憶がおぼろげ)。 しかし普段づかいし切れないほどデジカメ買っておいて (中古で)、 なにかにつけてこまごまと愛着を失ってたりするのが我ながらなんともはやだな。
> そういえば RX100 m4 の AF も、 近接撮影するとどうしても奥の方にピントが合いがちで、 なかなか手前の方にピントが合ってくれないことに最近気づいた。 具体的には 10~20cm 程度離れた斜め上から皿に入れたモノを撮ると、 皿の奥の縁あたりにピントがくることが圧倒的に多い。 同時に使っていた LX100 は大体、皿の真ん中から手前あたりのちょうどいい位置にピントが来たんだが。 この違いはなんだんべなー。 RX100 m4 は小型な割に機能詰め込み過ぎてるせいなのかなんなのか、 ちょくちょく惜しい部分が見つかりがちなんだった (ワシ的に)。 あるいは SONY の設計思想と個人的に相性があんましよくないのかもしれんけど。
> さくらからレンサバの DB (MySQL) のメンテの予告通知メール。メンテは 2週間後。 対象は MySQL 5.5 のみで、5.1 や 5.7 は対象外とのこと。 通知が届いたくらいだからワシが使ってるのは 5.5 だよな…? と念のため確認しようとコンパネにログインしてみたら、 データベースアップグレードとかいうメニューがあった。 5.5 から 5.7 へアップグレードして現在のデータベースをコピーしてくれるサービスらしい。 ただしなんかいろいろ制約があるらしい…。 ヘルプをたどって見てみたら、データベースの総容量制限とか書いてあるし。 それは本来コンパネにでも表示しておくべき事柄ではないだろうか…? ちなみにスタンダードプランでは、MySQL 5.5 では総容量 500MB まで、MySQL 5.7 では 1.5GB まで。 あとデータベース数 20まで、テーブル数は 5000程度までらしい。 規定を超えたら連絡することがあるとか、大幅に超えたら利用制限するとかなんとか。 見てみたら、うちでデータベース使ってんのは Tiny Tiny RSS (ttrss) だけなんだが既に 700MB いっていた…。あれ、オーバーしとる? まあ警告が来てないということは、とりあえずこの程度ならセーフってことでいいのかね…?
アップグレードを申し込んでも旧データベースは削除されず使い続けられるらしいので、 ダメだったらやり直せばいいか、と思って、 アップグレードサービスの実行日時をメニューから選択して予約。 念のためにとりあえずコンパネから phpMyAdmin にログインして現データベースをエクスポート・ダウンロードしておいて、 ttrss の更新 (cron による) も止めて待機。 待機っつーか寝ちゃったけど。 起きたらコピー完了の通知メールが来ていた。 10分程度で終わったらしい。 アップグレード後のデータベース総容量も 700MB 程度。 データベース名が {レンサバのユーザアカウント}_55 のままになってたので、これを変えたいな、と思ったんだが、 コンパネからも phpMyAdmin からも変更できず。 MySQL の 5.1 以降 (だったかな?) では RENAME DATABASE は使えなくなっているので、 どうしてもデータベースの名前を変えたい場合は CREATE DATABASE newdb; RENAME TABLE olddb.table1 TO newdb.table1; … (全てのテーブル分繰り返す) …; DROP DATABASE olddb; などとやるらしい。 CREATE DATABASE も phpMyAdmin からはできず、コンパネからやる必要があり、 この場合データベース名には強制的に頭に「{レンサバのユーザアカウント}_」がつく仕様らしい…。 まあ共用サーバだししょうがないのかね。 ちなみに末尾の「_55」はたぶん、以前にさくら側で DB を 5.5 に上げた時に自動的にくっついたんだったと思う。もう覚えてないけど (自分でつけた可能性もある)。 ttrss 側の設定は、config.php 冒頭のデータベース関連の記述をエディタで修正するだけ。 cron による更新も再開して、問題なく稼動することを確認したので、 MySQL 5.5 の方のデータベースはさくっと削除した (コンパネから)。 まあ DB アップグレードしてもレンサバ自体近いうち解約するつもりなんだけどさ…。なかなかそのメドが…。