WordPressでpictureタグのsrcsetはshortcodeが効かない

解決策ででてくるblogのタグが動かないのでお願いChatGPTで解決したので備忘録。

function generate_image_tag($atts) {
    $atts = shortcode_atts( array(
        'img' => '',
        'alt' => '',
        'webp' => true,
        'theme_url' => get_bloginfo('template_url'),
        'picture_class' => '',
    ), $atts );

    // File path details
    $file_info = pathinfo($atts['img']);
    $file_dir = $file_info['dirname'] != '.' ? $file_info['dirname'].'/' : '';
    $file_url = $file_dir . $file_info['filename'];

    $output = '<picture';

    // クラスが指定されていれば追加
    if (!empty($atts['picture_class'])) {
        $output .= ' class="' . esc_attr($atts['picture_class']) . '"';
    }

    $output .= '>';

    if (strtolower($file_info['extension']) === 'svg') {
        // If the file is an SVG
        $output .= '<source media="(min-width: 768px)" srcset="'.$atts['theme_url'].'/images/'.$file_url.'.svg" type="image/svg+xml">';
        $output .= '<source media="(max-width: 767px)" srcset="'.$atts['theme_url'].'/images/'.$file_url.'_mobile.svg" type="image/svg+xml">';
        $output .= '<img src="'.$atts['theme_url'].'/images/'.$file_url.'.svg" alt="'.esc_attr($atts['alt']).'">';
    } else {
        // For other image types (non-SVG)
        $use_webp = $atts['webp'] && in_array(strtolower($file_info['extension']), array('png', 'jpg'));

        // WebPが指定されている場合
        if ($use_webp) {
            $output .= '<source media="(min-width: 768px)" srcset="'.$atts['theme_url'].'/images/'.$file_url.'.webp" type="image/webp">';
            $output .= '<source media="(max-width: 767px)" srcset="'.$atts['theme_url'].'/images/'.$file_url.'_mobile.webp" type="image/webp">';
            $output .= '<img src="'.$atts['theme_url'].'/images/'.$file_url.'.'.$file_info['extension'].'" alt="'.esc_attr($atts['alt']).'">';
        } else {
            // WebPが指定されていない場合
            $output .= '<source media="(min-width: 768px)" srcset="'.$atts['theme_url'].'/images/'.$file_url.'.'.$file_info['extension'].'" type="image/'.$file_info['extension'].'">';
            $output .= '<source media="(max-width: 767px)" srcset="'.$atts['theme_url'].'/images/'.$file_url.'_mobile.'.$file_info['extension'].'" type="image/'.$file_info['extension'].'">';
            $output .= '<img src="'.$atts['theme_url'].'/images/'.$file_url.'.'.$file_info['extension'].'" alt="'.esc_attr($atts['alt']).'">';
        }
    }

    $output .= '</picture>';

    return $output;
}
add_shortcode('generate_image', 'generate_image_tag');

これで固定ページに以下のショートコードを挿入することで、SVGの時はSVGとして、jpg/pngでwebp用意している・していない時を切り替えることができる。

使い方は

[generate_image img="ディレクトリ+ファイル名" picture_class="pictureへのclassを入力(複数可)" alt="alt属性を入力" webp="true/false"]

img=””にファイル名を入力。拡張子がsvgの時は、webp=””は省略可能。
webp=””はファイル拡張子がpngまたはjpgの時、用意しているのであればtrue、用意していないときはfalseを設定。

迷い人の解決になれば。

YAMAHA NVR500でDHCP固定IPをNASに設定したい

備忘録がてらメモ。

Windowsの場合はtelnetが初期でインストールされているが、Macだとなかったのでインストールから。

$ brew install telnet

次にNVR500のIPにtelnetでアクセス。

$ telnet 192.168.***.***

ログインパスワードを聞かれるので入力。
DHCP情報なんかも見るコマンドを打ち込んでも文字化けしているのでよくわからない。
先に文字コードを変更しておく。

> administrator
Password: // 管理者のパスワードを入力
> console character ascii // 文字コード変更
> save // 設定を保存
Saving ... CONFIG0 Done .

現在のDHCP情報の確認は show status dhcp を入力する。
本題の固定IPの設定は以下の書式

> dhcp scope bind scope 1 192.168.***.*** NASのMacアドレス

もし間違っちゃったぜ!というときは dhcp scope unbind 1 192.168.***.*** と記載している情報が多いのだけど、ボクの環境では「パラメーターが整数ではありません」とエラーがでた。
そこで先達の知恵に感謝しつつ、以下で解決。

> no dhcp bind scope 1 192.168.***.***

知恵を残してくれた先達に感謝を。
ヤマハルーターnvr510でv6プラスを+α

Keychron カスタムコイルパイロットケーブルを購入した

「自己満足こそ最高の快楽だ」(ある富豪の台詞)

キーボードは無線または有線接続する。
無線接続はUSB2.4GHzのレシーバーと接続するタイプは入力遅延がほぼないのでゲーミング用途で使用可能だが、Bluetooth接続はやや通信にわずかな遅延があるため、一般的にはゲーミング用途にはあまり向いていない。
ボクが使っているKeychron K3は当然のごとくゲーミング向けデバイスではないのでUSB無線ができない。しかも何故かWindows側でBluetooth接続が上手くいかないので有線接続で使っていた。

PCが机からやや離れた位置にあるため、Keychronに元々ついていたUSBケーブルでは結構ギリギリだった。具体的にはキーボードから斜めに机を横断して接続されていている。
なんというか無理やりつないだまま。という感じが否めない。
「でもUSB-Cで繋いでいるのだから、高速なんだろうか」と勝手に思っていたが、片側はType-Aってことは3.0なのかな?と引っこ抜いてコネクタ確認するとUSB1.0だった。
いやお前遅いんかーい。というガックリとした気持ちに。

ならケーブルを長いものにしようかと思い至ったとき、以前メルカリでコイル状になったケーブルが結構な値段で売られているのを見た。そしてなぜか途中に鉄製のコネクタ(アビエイターコネクター)がついていた。
電気はケーブルとケーブルをつなぐような接続端子があればあるほど抵抗になる。ただキーボードは単純な力学作用の送信デバイスだから複雑な送信をしないから自由なのかなーとは思っていた。

しかしこのカスタムケーブルに関しては、元々のUSB-Cをアビエイターコネクター(GX12)のオス・メスコネクタで分け、再接続した先がUSB-Cって、見た目以外の効果がなくて「なんで???」という感想しかわかない商品だ。
どこをどう調べても本当に見た目以外の効果・メリットがない。
それに3,000~1万円である。
キーボード沼の狂気。

Keychronの商品なら$15で買える

USBのキーボードケーブルを買おうと探したとき、意外とキーボードにあうケーブルは販売されていない無いことに気付かされた。
特に多いタイプはコネクターにロゴが入っているものでロゴの主張がある。その次はケーブルの質感が気になってしまう。Keychron純正ケーブルの編み込みでしっかりとした作りながらコネクタが主張しないデザインは、こだわりのあるメーカーであることを感じさせてくれる。
これをそのまま置き換えるのが結構難しい。

そこでkeychronのサイトへ行くとアクセサリーとしてあの狂気の産物、コイル形状にコネクターがついたケーブルが販売されている。
国内サイトだと3,565円で、黒色は入荷待ちだった。

Keychron カスタムコイルパイロットケーブル

本国サイトのほうでは$15となっていたが、やはりこちらも入荷待ちとなっていた。
どうせ当分入荷しないんだろう、と一応お知らせメールだけ登録しておいたら3日後に本国の方で入荷の案内がきた。

余談だが、キーキャップもカスタマイズしてみようとそちらも入荷お知らせ登録していたのだが、そちらも入荷した。
ただ結果としてK3ではそれらのキーキャップは使用できないというか、具体的には「ロープロファイルダブルショットPBTキーキャップセット」のみ使用可能だが、文字部分が透過しない。K3本来のキーボードの光り方にならず異なる見た目になる。
それならいいやとそちらは注文せず、数日悩んだ後話のネタになるかとキーボードケーブルだけ購入。5/12に注文し、5/21のお昼前に届いた。注文から配達完了まで、だいたい1週間ちょっとだった。ちなみに価格は米ドル計算になるので$25.20(商品$15 + 送料 $10.20)を日本円で換算してほしい。(買った時は3,400円ほどだった)

シンプルなパッケージ

実物と感想

商品のページには掲載されていないが、USB-Cの両端以外に、USB-CをUSB-Aに変換するコネクタが付属している。(写真中央)

開封収納

ケーブルの質感は、キーボード付属ケーブルがより太くなってコイル状になっている。
そして見た目以外になんの意味もないアビエイターコネクターがずっしりと繋がっている。
正直、LANを敷設したりしてきた人間としてはアビエイターコネクターのはめ込んでからしっかりとねじ込んで「外れませんでー!ちゃんと通信しまっせ」というやる気を感じさせるのは嫌いではない。キーボードケーブルという短い距離で必要かといわれると感情がどこへ行けば良いのかわからなくはなる。

実際に設置すると「ボクはじめからここにいました」といわんばかりにピッタリと収まる。
Keychronは今でこそちょっと高いキーボードブランドとなってしまったが、ボクが買ったころのK3が$79でこれ買えるのかー!という利益よりも質に拘っていますという大手にはない、プロダクトメーカーならではのコダワリが好きだ。

OMEN 27iの下部ライトはよく製品レビューで「なんのためについてるんだろうこれ」ってコメントが多かったけど、「アビエイターコネクターが照らされて最高なんだが?シンデレラ生まれちまったなー!」という自然な結婚してた。

本当に机上の景観だけがよくなるためにお金を使ったわけだが、自己満足以外の何ものでもないので、誰にもおすすめしない。ただ国内でそれなりの長さのUSB-Cケーブルを買う場合1,400円前後になるので、まぁそれならちょっと足して満足度が高いなら、ありかなぁ……と買ってしまった。
わりと満足。

どうしようもないオチとしては、机の横断が気になってケーブルを買ったけど、そもそも購入したケーブルはコイル形状となっているためそこまで長くない。
だから延長ケーブルを買う必要があったが、OMEN 27iにはUSBハブ機能がありUSB-AとUSB-Bで接続すると利用できる。そうすればキーボードケーブルをモニター後ろに指すことができるので問題解決できますやん。というかUSB延長ケーブルが思いの外高かったので部屋に転がっていたケーブルでそうしたわけだが、それならコイルケーブルいらなくて問題解決できたのでは?となる。

自己満足こそ最高の快楽だ。

【泥沼に沈み込みたい方向け】アビエイターコネクターとコイルを自由に思うがままにカスタム・自作する場合

アビエイターコネクターを使って思うがままにカスタムできるお店「nokke/cables」がある。
あとは輸入しているお店で購入もできる。Duceyキーボードで有名な「ふもっふのお店」とか。
もちろんUSBケーブルとアビエイターコネクターなので電子部品を購入しはんだ付けをすれば可能でもある。Youtube動画で色々でてくるが1,500円~3,000円で可能な模様。

あとAmazonでもGunMjoというメーカーが展開している。ややお安い。

USB-C変換コネクターの規格違反について

USB-Cで調べると規格違反について書かれているものがよくでてくる。
動作保証の問題もあるし、ケーブルの長さはGenのバージョンによって決まっているので、延長してはいけないとか、USB-C to USB-Aのケーブルに変換をいれて USB-A→USB-C to USB-Aで接続して破壊もある。(ホスト認識機能が消えるため接続先が壊れるし、バッテリーとPCを接続すると炎上する可能性がある)

ただ今回の商品のようにキーボード側のUSB-C接続が絶対で、その上で出力がUSB-A接続の必要がある場合、変換自体は規格違反ではあるが個人が規格を理解した上で行うのであれば問題はないと思う。(USB-C→USB-Aケーブルは違反ではないので)また供給電力も低く熱を持たない。
海外の製品を使う場合、技適の電波法違反もそうだけど、ちゃんと使う商品の規格を理解した上で使う必要がある。そうでないのであればちゃんと国内流通されている大手メーカーの商品を使おう。

アフィBlogが中身スッカスカなのに、アクセス数稼ぎ命でクソデカ主語で大事みたいに騒いでいるのを鵜呑みにせず、正しい知識を持つようにしないとね。順番に見ていきましょう!じゃないんだよ。滅べ。

OMEN 27iを購入した

ボクはEIZOというディスプレイメーカーが好きだ。
初めて自分で買ったディスプレイはCRTのディスプレイから現在使っている液晶ディスプレイまでどうせ買うならEIZO一択!という人間だった。

しかし今の時代、ディスプレイのブランドで仕事はしないし、ボクも自宅で仕事をする量は明らかに減った。(昔はそんな風潮が広告業界に存在した)
加えて最近のPC / FPSプレイ環境で、画面のリフレッシュレート60Hzはもはやバカのやることというレベルで144Hz以上が当たり前だった。とはいえど目も衰えた初老の自分にそんな差がわかるわけがないと思っていたので、60Hzでプレイし続けていた。

先日APEXがSeason17のアップデートにともない射撃練習場のダミーが、ランダム横移動しながら打ち返すようになった。これが全くあたらなかった。
あまりにも当たらないことが悔しすぎて、どうしてあたらないのかとnVidiaのShadowPlayで録画解析をすると、明らかに0.5秒ほどあとをマウス追尾していた。これまさかリフレッシュレートによる表示遅延で遅れた追尾をしているのでは……。
そう思うと途端に新しくディスプレイを買うのはアリかもしれないと思うようになった。
使っているディスプレイの総稼働時間を確認するとちょうど、2万時間が経過していたこともあって、もうすぐ寿命が来そうな気もした。

新しく買うディスプレイの候補にEIZOを入れることも考えたが、ゲーミング用途を一切排除したようなお硬い製品しかなかったので、潔く諦めることにした。(リフレッシュレート75Hzより上が存在しない)

ディスプレイ探しをはじめる

Youtubeのレビュー解説(モニ研等)を参考に色々探してみたところ、現在使っている27インチ QWHD(2560×1440)のゲーミングディスプレイは以下の種類が人気だった。

ゲーム用途だけであれば24インチがベストだし、TN液晶が良いというのは認識した上で、あくまで現状環境の置き換えしつつゲーミング用途に振りたいというのがゴール。

27インチ WQHD IPSというジャンルは技術開発が盛んなのか144Hz〜300Hzが増えている。どちらかというと現在アツいのは240Hz以上のようだがまだお高い。
このあたりを調べると、真剣にプロ目指すならいい環境にするべきだが144Hzと240Hzはプロが見ても横に並べて比較したらわかるかなーという感じで、「どっちでしょう」と1台だけ見せられてもわからない。とのことだった。
それなら165Hzでも問題ないのでは?とお安くなりがちな商品ラインで探すことにした。

どうせならカッコいいのが欲しい

次に問題になるのがディスプレイの見た目。
MSIはまだしも、ASUSやBENQはロゴの主張が強くなんとももんやりする。
DELLが良いといえば良いけどセールの有り無しで価格差がとんでもなく、ちょうどセールが終わったばかりだったため「時期が悪い」になった。

なんか良いのないんですかねーとネットをウロウロと探すと、HP(ヒューレッド・パッカー)のモニターにゲーミングライン「OMEN」があり、そちらがとても好みのデザインだ。かっこいい。

OMEN 27i

2021年に発売されたOMEN 27iは回転機構こそないが、WQHD / 165Hz / IPS / DisplayPort 1.2とスペックは目的に合致。何より背面のポート類が斜めに刺ささるデザインが好みだ。あと背面とディスプレイ下が無駄に光るのも良い。

OMEN 27iかーどうしようかなーと数ヶ月悩んでいると、今年の4月にOMENディスプレイはラインナップが更新された。27インチで湾曲でない製品はOMEN 27q / 27qsと2種類展開。(165Hz / 240Hzの駆動が異なる)
生産が終了した27iからの変更点は接続ポート類がディスプレイの下側になり、回転機構がついて27qは背面が光らず(27qsは背面が光る)、後ろ側がよくある膨らんだデザインになった。ありがちなポヨンと太ったような見た目だ。さらにモニタースタンドも廉価版っぽいデザインになった。

なんで???(真顔)デザイナー憤死したか???

OMEN 27q

OMEN 27qは44,000円。27qsは約82,000円。
価格は安いがどうしたものかなーと悩んだ末、27iの中古品を探すことにした。
幸いディスプレイはメルカリですぐ見つかったもの、本当に買うかどうするかと数日悩んで35,000円ならいいかと購入、3日後には到着した。

早速11年ほど使ったSX2762Wを部屋の隅に置き、設置をしてみる。
しかし机の天板が絶妙に反っていて左右にグラグラとゆれる。前のSX2762Wは重量10kgと重かったので天板が重みで歪んだ可能性がある。
次の日東急ハンズで3mmのゴム板と3mmのクッション材を購入し、足の下に敷いたところぴったり安定した。危うく机を購入し直さないとだめかと震えるところだった。


最近のディスプレイの流行りにもれずOMEN 27iはベゼルが1cmもなく、SX2762Wのような圧迫感がなくてスッキリした。
肝心の発光ユニットは基本7色(赤・黄・緑・黄緑・青・紫・白)の他にRGBを調整できるようだった。そこでキーボードの発光色とあわせたのだが、ここだけは多いに不満だった。上下で数値設定できるが数値を0→255に上げたり・下げたりがすんごい遅い。長押しで加速しないのはマジで設計ミスだと思う。USBハブで接続するとPC連動で設定できるらしいので、そちらでやったほうがいいかもしれない。しかし色は一度設定してしまえば再設定もすることはないだろう。見た目は最高で大いに満足。

早速Windowsのディスプレイ設定でリフレッシュレートを165HzにしてAPEXで確認。
違いがそこまでわからないけど、気持ちレレレでBOT打ちすると命中率が向上しているようだ(以前56%→63%前後)
あとSX2762Wが11年目で背面LEDが暗くなっていたのかもしれないが、すんごい明るい。
ディスプレイってこんなに鮮やかな色だっけと感動した。

その後Kovaak’sもプレイする。
表示切り替えが早い分、Grid Shotや1wall6target TEは見やすいし、何よりSYWの的がかくかくしない。シンプルに感動した。

一息ついたあと、ディスプレイの大きな空箱をどうしようかなーと悩んだが、ココまで気に入ったディスプレイを売るのはだいぶ先だろうと考えゴミとして廃棄した。
稼働時間を確認すると1,900時間だったので、まだまだ長く使えそうだ。

XserverにSSH接続しようとすると「Permission denied (publickey,gssapi-keyex,gssapi-with-mic).」が出る場合の解決策

Google検索してもいかがでしたか????されて役に立たない解決策がでてこないので怒りの投稿。Google検索の汚染具合がひどすぎて最近はBing検索に切り替わりつつある。公式サイトがでてこないとか頭悪すぎる。

解決策

もしSSH接続をコマンドラインで行っている場合

$ ssh -l サーバーID -p 10022 -i 公開鍵ファイルを指定 sv****.xserver.jp

ユーザーIDを指定する箇所はサーバーのIDを指定(sv****の形ではない)

xserverのサーバーコントロールパネルの上部に記載がある。(例ではhogehoge

サーバーID(ユーザーID)

接続先のサーバーはサーバー情報のホスト名を指定

公開鍵ファイルは自分で作っても、コントロールパネルで生成しても良い。
まとめると

$ ssh -l hogehoge -p 10022 -i ~/.ssh/id_rsa_xserver sv00000.xserver.jp

みたいな形で接続が可能。
とくにユーザーIDを間違っているだけで一生「Permission denied (publickey,gssapi-keyex,gssapi-with-mic).」を吐き出され続ける。

もしこれでなおらない場合は、秘密鍵のパーミッションが600になっていない可能性はもちろんあるので、だめなら確認しても良い。

怒りのいかがでしたかで疲れた人のお役に立てば。

さくらインターネット(共用ホスティングサーバ)で、WordPressが500エラーで管理画面を開けない

最近ローカルdockerで開発したあとに、Wordmoveで一式アップロード後、ごくまれにこの現象が発生していて難儀していたので備忘録がてらメモ。

結論

wordpress格納フォルダのパーミッションが777になっている場合は、755に変更する

[cgi:error] [pid 00000] [client 000.000.000.000:0] AH01215: suexec policy violation: see suexec log for more details:

CGI使ってないのになんでエラーが……という理由はわからないが、調べたらパーミッションエラーとのことだったので確認すると、フォルダのパーミッションが777だった。

検証サーバなので、管理画面からインストールしている他のサイトのWordperssフォルダは確認すると755だったので、ならって755に修正すると500エラーが解除された。

ハマっている方の役に立てば幸い。