Macbookのバッテリー充電最大量を80%で止めるアプリ「Battery」をインストールした話

去年発売されたiPhone 15には、バッテリーを長持ちさせるために満充電を100%から80%に抑制する機能が追加された。
その機能が搭載されたiPhoneよりも後に発売されたMacbookだから当然のようにその機能があると思っていたら、設定されているにも関わらず100%まで充電されてしまった。
(学習式だから普段バッテリーを外して使っていたのが災いしたのだろうか?)

そこで「Battery」というアプリケーションをインストールして、強制的に80%制限を行うことにした。ちなみにAppleでのMacbookのバッテリー交換費用はだいたい37,500円のようだ。
なるべく長持ちさせたいので初期段階で抑制することにしたという話。

導入の理由に加えると、バッテリー駆動だと消費電力の関係でスリープモードになりがちで、USB-HUB経由の外付けHDDやディスプレイがOFFになって復帰にちょっと時間がかかる。それが少し煩わしい感じがしたのが強い。
電源接続した状態でも充電が常に80%で止まってくれるなら助かる。

インストール方法は、いつもの brew install batteryでもいいし、dmgファイルでGUIインストールも、コマンドラインインストールも用意されているので好きな方法で簡単に導入できる。

インストール後はバッテリーアイコンが表示されるので、ON/OFFの設定が可能。
抑制するバッテリー量を変える場合は、ターミナルでコマンド入力を行う。(battery maintain 90 とかで)

ちなみにMacOSのバッテリー充電の最適化設定がどこにあるかわからなくて、探したら「設定」→「バッテリー」→「バッテリーの状態」の「( i )」アイコンをクリックで表示された。
一番下にある「オプション」に設定項目がなかったので、消えたのかと思った。

M3Pro Macbook Proの購入と拡張に悩んだ話

購入ボタンをおしたときは「いつ届くのかなー」と楽しみで、「発送されました」と表示されるまではワクワクしていたはずなのに、実際に目の前に届くと「買ってしまった……」と高額な買い物に後悔が生まれるのはなぜなのだろうか。
そして数日経つと「まぁいいか」となる。
人間の気持ちはそんなものだ。

“M3Pro Macbook Proの購入と拡張に悩んだ話” の続きを読む

NuPhy Air75 V2を購入した話

2025.05.10追記
NuPhyの購入者向けDMでAir75 V3がもうすぐ発売されることが案内された。

APEXでしゃがむ操作はCTRLキーかCを押す。
ボクは指運びが不器用というか、小指が不器用なのでなかなかこの操作が上手く行かない。
上手く行かない理由がもう一つあって、日中の仕事で使っているキーボードはHHKB (Happy Hacking Key Board) だからというのも輪をかけている。

HHKBのキーレイアウトは特殊でCAPS LOCKキーの部分にCTRLキーが鎮座している。
これが良い。
日本と海外の言語に起因する理由だが、日本人は英文を打ち続けるとき以外にCAPS LOCKキーは使用しない。しかし海外の場合は頻度が高いのだろう、SHIFTキーとTABキーの間という一等地に鎮座している。邪魔だ。
その一等地をHHKBはCTRLキーが配置され、本来左CTRLキーがある位置にはロゴが刻印されてブランク・スペースになっている。だから普段はそこに小指を移動しない。

しかしAPEXでCTRLキーを小指で何度も押す操作が必要となった。なんとか頑張って操作・練習をしたものの、小指を垂直にして押しているためかキー表面が爪でガリガリで削れた。
爪を伸ばしていたのが悪いが、こんな簡単に表面の塗装が削れるのかとか、力入れすぎやろとかもあるが、削れた部分からバックライトの光が漏れ出すのでボロボロ感がでてきた。
しかたなくCTRLキーだけKeycrhonサポートに連絡して取り寄せようかなーと思ったとき、以前YoutubeでNuPhy Air75の紹介動画を見て気になっていたことを思い出した。

“NuPhy Air75 V2を購入した話” の続きを読む

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を設定。

迷い人の解決になれば。

自宅のMacをMacbook Pro : M3 Proにしようと思ってる話

最近自宅のMacを使う機会が多いけど、USB関連に不具合が多いので解消したいと思った。
どちらにせよOpen CoreでVenture以上にするにはMac Pro 5.1はUSBをアップグレードしないといけない。(AppleがUSB2.0 Host Controlerのサポートを打ち切ったため)
しかしPCIe USB3.0は一度玄人志向のものを買ったらSATAの電源を供給しても何故か動作せずお金を無駄にした。となると動作報告が多いInateck製が安定しそうだが価格が高い。(4,600円)

しかしもうここまでくるとWindowsはWindows機としてあるわけだし、MacPro Mid2010を無理やり使いつづける必要ってないんじゃないのかなーと思い始めた。
正直その投稿目指してうちのBlogに来る人が多いけど、そのためだけにイジるにはちょっとお金かかり過ぎてきたなーの気持ち。
多分もう少しくらいは行けそうな気がするけど、来年で14年目となるPCを使い続けるのはどうなのって気分。

そこでApple整備品のMacbook Pro M2pro 32GB/1TBの構成で探していたときにふと思ったのが、整備品はどうしてもキーボードがJIS配列に換装されて並ぶためUS配列キーボードが存在しない。
狙っていた機種の価格は30.8万で、最新のM3 pro 36GB/1TBは41.2万。
価格差は10万で英語配列キーボードと暫く満足がいくMacが使えると考えると悪く内容に思えた。

ところでAppleがオンラインストアで新品を安く買える日をご存知だろうか?
そう年明けの初売り(1/2と1/3)だ。
この日だけ新品をカスタマイズして買ってもギフトカードでだいたい10%分くらいの還元がある。(カスタマイズすると上限頭打ちする)

2023年の初売りバナー

つまり買うならその日だ。
届くのがいつになるかは知らない……急いでないからいいか。

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プラスを+α