2026年5月5日火曜日

モバイルバッテリー容量計算

モバイルバッテリー容量計算

2026.4.24 から始まったモバイルバッテリー機内持ち込みのルールでは

モバイルバッテリーが 2 個 (容量 160Wh までであること)
とあるが、 160Wh ってナニ? mAh しか知らんぞ? となったので、調べてみた。
  • mAh も Wh もバッテリー容量を指す
  • 読んで字のごとく、1 時間当たりの消費量が mA か W の違いだけ
  • つまり、それぞれ a [mAh], w [Wh], バッテリー内部電圧 v [V] とすると \[ w = \frac{a}{1000} \times v \]
  • 通常、バッテリー内部電圧は 3.7 [V] なので \[ 10000 [mAh] = 37 [Wh] \]

計算機

2026年5月1日金曜日

JScript の配列と WScript.Arguments

JScript の配列と WScript.Arguments

JScript の配列と WScript.Arguments

知っている人は当たり前なのだろうが、よく間違えるので備忘録として残しておく。

こんな風に配列長を求める JScript を書いて動かしてみる。

  • test.js

    // 引数を取得
    WScript.Echo('引数の数: ' + WScript.Arguments.Length);
    WScript.Echo('引数1: ' + WScript.Arguments(0));
    WScript.Echo('引数2: ' + WScript.Arguments(1));
    
    // 空配列に値を追加
    var ary = [];
    WScript.Echo('追加前: ' + ary.Length);
    ary.push('foo');
    WScript.Echo('一つ目追加: ' + ary.Length);
    ary.push('bar');
    WScript.Echo('二つ目追加: ' + ary.Length);
    
    WScript.Echo('一つ目: ' + ary[0]);
    WScript.Echo('二つ目: ' + ary[1]);
    
  • 出力

    c:\Users\toasted.laver\Downloads>cscript /nologo test.js aaa bbb
    引数の数: 2
    引数1: aaa
    引数2: bbb
    追加前: undefined
    一つ目追加: undefined
    二つ目追加: undefined
    一つ目: foo
    二つ目: bar
    

Length が定義されていない と言われるが、 WScript.Arguments.Length の方はちゃんと想定の値を返している。

'L' を小文字 'l' すると意図通り動くようになる。

ary.Length ⇒ ary.length
  • 出力

    追加前: 0
    一つ目追加: 1
    二つ目追加: 2
    一つ目: foo
    二つ目: bar
    

恐らく、Arguments は Windows の組込みオブジェクトなので大文字でも小文字でも動くようになっている1 が JScript 言語で定義されている配列はそうはいかない。

てことだろう。知らんけどw

  • まとめ

    大文字 WScript.Arguments.Length OK
      ary.Length NG
    小文字 WScript.Arguments.length OK
      ary.length OK

Footnotes:

1

そもそも、 Arguments は配列じゃないしねw

Created: 2026-05-01 金 15:03

Validate

2026年4月4日土曜日

EXCEL での正規表現置換

EXCEL での正規表現置換

EXCEL での正規表現置換

エクセルで、"No" の後の数字を一括で A1 セルで指定した内容に置換したくて

REGEXREPLACE(B10,"(No)[0-9]+","$1"&A1)

と書いたらエラーになった。なんで?

& 以降を取ったらエラーは出ないので、式自体は問題ないはず…

小一時間熟考して気がついた。 A1 セルに入ってたのは 2 。そらエラーになるわ orz

  • 解説
    • 数式を展開すると

      REGEXREPLACE(B10,"(No)[0-9]+","$1"&"2")
      

      ↓式を処理すると

      REGEXREPLACE(B10,"(No)[0-9]+","$12")
      

      12番目の括弧はない からエラー

    • こんな風に {} で括らなきゃいけなかったのね。

      REGEXREPLACE(B10,"(No)[0-9]+", "${1}"&A1)
      

Created: 2026-05-01 金 14:04

Validate

2025年5月1日木曜日

EXCELでスピルを使う時のメモ

一部非対応関数がある。確認したのは AND(), OR()

例えば、下記の様な表があったとして

  A B
1 TRUE TRUE
2 FALSE TRUE
3 FALSE FALSE

ここで、下記の様に C 列に「A 列と B 列の各行毎の AND」を表示したい。

  A B C
1 TRUE TRUE TRUE
2 FALSE TRUE FALSE
3 FALSE FALSE FALSE

で、C1 に =AND(A1:A3,B1:B3) を入れると

  A B C
1 TRUE TRUE FALSE
2 FALSE TRUE  
3 FALSE FALSE  

となりうまくいかない。 恐らく AND(A1,A2,A3,B1,B2,B3) と解釈されてるのだろう。

今のところ、各行毎の AND を取りたいなら、 IF((A1:A3)*(B1:B3),TRUE,FALSE) 等とするしかないようだ。 (OR なら + を使う)

Created: 2025-05-01 木 11:31

Validate

2025年4月30日水曜日

WEB版EXCELで「名前を付けたLAMBDA関数」を使う

以前、WEB 版 EXCEL で 名前を付けたLAMBDA関数 を作成しようとして、できなかったので使用を諦めていたのだが、今回登録方法が見付かったのでメモっておく。

やり方

数式タブ→「ネームマネージャー」→「+新規」

これでWEB版でも自作関数が作れる😸


(追記)

WEB版で自作関数にセルの範囲指定を入れたら、動作しなかった😿
  1. セルB5 に 0.3 を入れる
  2. LAMBDA(no,INDEX(Config!B5:B7,no,1))hoge て名前つける
  3. hoge(1) を評価すると 0
欄外に、うっすらと
現時点では、Excel for the web ではスコープを編集できません。規定では、名前のスコープはブックに設定されます
て書いてあったので、 INDIRECT 使って書き直したら意図通りに動いたw LAMBDA(cno,INDEX(INDIRECT("Config!B5:B7"),cno,1))

2024年6月24日月曜日

露出計算ツール

露出計算ツール

基本式

  • 露出: \[ Ev = Av + Tv - Sv \]
  • Av ⇔ 絞りF: \[ Av = 2\log_2 F ⇔ F = 2^{ \frac{Av}{2}} = \sqrt{2^{Av}} \]
  • Tv ⇔ シャッター速度T: \[ Tv = log_2 T ⇔ T = 2^{-Tv} = \frac{1}{2^{Tv}} \]
  • Sv ⇔ ISO感度S: \[ Sv = log_2\frac{30}{100}S ≒ log_2\frac{S}{100}+5 ⇔ 100 \times 2^{Sv-5} \]

Av ⇔ F, Tv ⇔ T, Sv ⇔ S

Chart

2024年6月17日月曜日

リンク集

Google Site を閉じてこちらに移動

  • お気に入り写真集
    image.canon で公開してたが、閉鎖されるので Amazon photo に移行した。
    …まあ、今は会社のPCの壁紙くらいにしか使ってないけどw
  • emacs設定 → こちらを参照
  • bashrc … Github で管理

2024年5月2日木曜日

Eamcs セットアップメモ

新規に Emacs を自分の環境ファイルを使ってセットアップする機会があったので、その時のメモを備忘録として残しておく


MSYS2 をインストール

本家のページよりダウンロード。
なくても動くようにしてるつもりだけど、結局grepとかないと不便なので…

emacs をインストール

本家のページよりダウンロード

emacs 環境ファイル

  1. github から .emacs.d を clone
  2. emacs 起動して、エラー出る箇所を見ながら下記をインストール
    • migemo
      • 本体は package-install で入る
      • cmigemo はダウンロードしてインストール
        →Windows は AppData/Local/cmigemo に入れて各アプリで共用できるようにした
      • migemo-dictionary 等の値を環境に合わせ設定
      • もう UTF-8 以外の環境になることはなさそうなので削除
    • ddskk
      • 本体は package-install
      • L 辞書は github からダウンロードして .emacs.d/etc/skk に入れる
      • Win 環境では SKKFEP の L 辞書と共用にしようと思ったが、 SKKFEP 辞書の文字コード等が本家と変わっているので諦める
      • (require 'skk-autoloads) は不要になった模様
        ※パッケージインストール限定かも
    • dired のカスタマイズ関連
      • sorter.el (ファイルのソート)
        オリジナルのファイルが見つからないので使うのを諦める
      • w32-symlinks (Windows のシンボリックリンクを処理できる)
        EmacsWiki からダウンロード
      • bf-mode (ファイルの中身を表示)
        package-install で入る
    • color-moccur (検索) grep や ripgrep 等が使えない環境 (Windows native とかw) のためにいれておく
      package-install で入る
    • dabbrev-ja (動的略語展開 dabbrev の日本語対応設定)
      オリジナルのファイルが見つからないので使うのを諦める
      どうやら これ がオリジナルらしい (追加設定の方ねw)
    • dabbrev-highlight (動的略語展開時に色つけ)
      オリジナルのファイルが見つからないので使うのを諦める
      オリジナルの改良版 ここ にある
    • psvn (svn インターフェース) 職場では現役
      EmacsWiki からダウンロード
    • helm 関係 … 下記全て package-install で入る
      • recentf-ext (recentf でディレクトリも保存できるようにする)
      • helm 本体
        最新では (require 'helm-config) ではなく (require 'helm) になったようだ
      • helm-gtags
      • helm-swoop (絞り込み検索の画面を編集して元ファイルに反映)
      • helm-ag (ag で helm インターフェースを使う。設定で grep/ripgrep も使える)
    • shell-toggle
      package-install で入る
    • session (kill-ring やミニバッファ入力、開いたファイルなどの履歴を保存する)
      package-install
    • cygwin-mount.el (cygwin形式のパスを扱えるようにする)
      gtags等の外部ツールはパスがunix形式になるため必要
      EmacsWiki からダウンロード
    • magit (git インターフェース)
      依存するパッケージ compat が見付からないとかで、インストール不可
  3. その他設定
    • shell-command-completion-mode 設定不要 (なくても補完できてそう)


2021年12月7日火曜日

mintty で全角文字の一部が重なって表示される

mintty で文字コードを UTF-8 にすると、一部の記号が下記の様に重なったり欠けたように表示される。

調べてみると、 Unicode で規定されている East Asian Width で Ambiguous(曖昧) に属す文字は半角表示するようになってるらしい。

ここを参考にして mintty のオプションにある「文字セット」を「UTF-8@cjkwide」に設定した後、ターミナルを再起動したら解決した。
※GUI のオプション画面でも、 .minttyrc を直接設定しても OK

他にも East Asian Width 関係には、他にもフォントやソフトが規定を守ってない問題などがあるらしい…

2021年11月1日月曜日

png に日付情報 (Exif) を追加

 スマホのあるアプリで撮ったスクショ (PNG) を Amazon Photo に上げると「日付なし」となって日付で整理できない。

ファイル名にスクショしたタイムスタンプが使われているようなので、これを exiftool で撮影日として登録するスクリプトを書いてみた。

#!/usr/bin/ruby

ARGV.each do |arg|
  /([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})/.match(arg)
  year = $1
  month = $2
  day = $3
  hour = $4
  minuite = $5
  sec = $6
  puts "#{year}/#{month}/#{day} #{hour}:#{minuite}:#{sec} <- #{arg}"
  system("exiftool -DateTimeOriginal=\"#{year}/#{month}/#{day} #{hour}:#{minuite}:#{sec} JST\" #{arg}")
end

2020年5月8日金曜日

shell-toggle で ansi-term が立ち上がるようになった

昔からずっと shell-toggle.el を使っていたのだが、最近の版 (少なくとも 1.3.1 以降) に変えると通常の shell モードではなく ansi-term が立ち上がる。
ansi-term はいちいちモードを切り替えないと emacs のキーバインドが使えないので個人的に使い難い。

できれば通常の shell モードが立ち上げるようにしたい。

どうにかならないかと shell-toggle のコードを眺めてたら、どうやら shell-launch-shell を書き換えれば良さげだったので、 init.el に下記を書き込んで解決。
(setq shell-toggle-launch-shell 'shell)

モバイルバッテリー容量計算

モバイルバッテリー容量計算 2026.4.24 から始まったモバイルバッテリー機内持ち込みのルールでは モバイルバッテリーが 2 個 (容量 160Wh までであること) とあるが、 160Wh ってナニ? mAh しか知らんぞ? ...