2022年5月28日 (土)

equal

「equal」という英単語はプログラム関係の文章によく登場する。これは名詞としても形容詞としても動詞としても使える単語で、文章を読むときには注意が必要だが、意味はいつでも「同じ、等しい」ということなので文意を誤解することはあまりない。ただ文法的な制約がややこしくて、英作文のときにはとても困る。

形容詞として使う場合、等しい相手がある場合にはtoを入れて「A is equal to B」と言う。「A is equal B」とは言わない。でも動詞として使うときには常に他動詞で自動詞にはならない。だから「to」を入れてはいけない。つまり「A equals B」が正しく「A equals to B」は誤り。あと、形容詞なら主語を複数にして「A and B are equal」と言えるが、動詞で「A and B equal」とは言えない。(「A and B both equal C」などのように3つ目が必要。)

名詞のequalは「等しいもの」を表す。等しい相手は所有格やofで表すようだ。「A is an equal of B」とか「A's equal」のように。「He is not my equal」という有名な政治家の発言があるらしいが、これは「彼は私に匹敵する人物ではない」というような意味らしい。(形容詞で言い換えれば「He is not equal to me」、動詞で言い換えれば「He doesn't equal me」かな。)

なお、Google翻訳は名詞のequalをよく「平等」と訳すみたいなのだが、いろいろな英語の辞書を調べても、equalという名詞が「平等」というような抽象概念を表すことはないようだ。「We all treat each other as equals」のような言い回しがあって「我々全員は互いを平等に扱う」ということなのだが、この英文と和文を比べるとequalが「平等」を表す言葉みたいに見えるが、それはちょっと違う。このequalsは名詞の複数形だが、もしもこれが「平等」という抽象概念を表す言葉であれば複数形にはならず「equal」のはずだ。このequalsは「(自分と) 等しい (価値のある) 人たち」というような意味で、「我々全員は互いを『自分と等しい価値のある人たち』として扱う」と言っているのだ。この「自分と等しい価値のある人たちとして」を短い自然な表現として「平等に」と訳しているわけだが、このequalsはあくまでも「等しいひと (もの)」を意味していて、等しいという概念を表しているわけではない。

「等しいという概念」を表す言葉は別にあってequality。英和辞典を引けば先頭に「平等」と書いてある (と思う)。equalityという名詞には数学の「等式」という意味もあり、専門用語が出ている辞書なら載っている (equationともいう)。

ちなみに、形容詞のequalには反対語があってunequalなのだが、「unequalである (等しくない) という概念」を表す名詞はunequalityじゃなくてinequalityなのだそうだ。数学の「不等式」もinequality。数学用語では、等しい方はequalityもequationも等式の他に等号も意味するのだが、等しくない方はinequalityが等式で、inequationは不等号として区別するのだそうだ。本当に?

なお、大抵の辞書はunequalityとかinequalとかは単語として掲載していないが、大きな辞書の中にはinequalを載せているものもあり、unequalと同じ意味のまれな形容詞としている。また、普通の辞書はunequalを形容詞 (のみ) としているのだが、大きな辞書の中には、これを名詞とか動詞とかとして使えるとしているものもないわけではない。私は個人的に、「標準英語にそういう使い方がある」のではなくて「勘違いしてそういう使い方をしてしまう例もないわけではない」という程度の意味かと思っているのだが、まあ素人なのでよく分からない。

2022年5月 8日 (日)

gitのsubmoduleの場所を変更する

git submodule addでサブモジュールを追加したあと、そのサブモジュールを配置するディレクトリーを変更したくなった場合、つまり例えば、git submodule add https://github.com/AlissaSabre/disfr.gitなどとして追加したサブモジュールがあり、この結果できているdisfrというディレクトリーをexternal/disfrに変更したくなった場合は、単にmkdir external; git mv disfr external/disfrとすればOK。(当たり前だが、modified: .gitmodulesrenamed: external/disfrになるので、コミットする。)

これとは別のgitのややこしいケースの情報を探していたところ、サブモジュールの場所を変更するには…のように題し、.gitmodulesやら.git/modules/disfr/configやらたくさんのファイルを手で編集する方法を熱心に説明しているページが複数あったので、一応メモしておく。

(なお、サブモジュールなので、git mvで変更をする前のブランチをチェックアウトすると変なことになるが、git submodule updateしただけでは完全に元に戻らない。また、それを元に戻した後でこちらのブランチに戻るとまたおかしくなる。この点は、移動方法の問題ではなくて、サブモジュールそのものの問題のはずなので、.gitmodules等を手で変更しても同じだと思う。試してないけど。)

2022年1月16日 (日)

セキュアブートとBitLockerでハマりかかった話

新しいノートPCを買った。ドスパラのGalleriaでRL5C-R35という型番のRTX 3050付きのやつ。今朝届いたばかりなので様子を見ているところなのだが、WindowsをProにアップグレードして注文したらBitLockerが有効になって届き、それに気付いていたにも関わらず回復ドライブを作っていないうちに試しにUbuntuを(LiveCDで)起動してみたところ、Microsoft様の怒りに触れて「回復キーを入力するまでWindowsを起動してやらない」みたいな状態になってかなりビビった。幸い、電源入れた直後にマイクロソフトアカウントとリンクしていたので、そっちから回復キーを入手できて事無きを得た。

しかし何年か前だったら、私はマイクロソフトアカウントなんか入力せずにローカルアカウントで初期設定していたはずで、そうしたら回復キーを入手する手段がなくて途方に暮れていたのではなかろうか。危なかった。いやー、なんというか、本当にセキュアブートは怖いわ。

あと、これって、購入直後じゃなくても、セキュアブートでBitLocker使っているWindows 10なら、初めてUbuntu起動した直後に起きる問題なんじゃないだろうか。そう思ってウェブで調べると、BitLocker使っているWindows PCとデュアルブートでUbuntuをインストールする方法みたいな話が多数見つかり「インストールする前にBitLockerを無効にしておきましょう」って書いてあるのだが、インストールせずに動かした場合のトラブル情報が全く見つからない。

ひょっとして、普通は何も問題が起きないものなのだろうか?

いやー、セキュアブートって謎だわ。

2021年2月21日 (日)

公開鍵暗号

たまたま読んでいた小説にこんな風に書いてあった。

普通は「こうかいかぎあんごう」と読むはずなのだが、どうしてわざわざ「けん」なんてルビが振ってあるんだろうか。不思議だ。

2020年12月27日 (日)

ドスパラでRyzen 7 5800Xが購入できた

前回の記事「amazon.com で Ryzen 7 5800X が購入できない…」の続き。

相変わらず主要な通販サイトでRyzen 7 5800Xの在庫を確認しては嘆息する日々が続いていた私だったが、つい先ほど(日曜日の14時ころ)ドスパラの通販サイトを見に行くと、なんと在庫がある!

すかさずカートに入れ、マザボとクーラーも必要なので一緒に購入(ASRock B550 PG Velocitaと虎徹 MarkII)。明日届くそうだ。さすがドスパラ。素晴らしい。

で、せっかくだからまたブログに書くかと思い立ち、他のRyzen 5000の在庫状況も確認しておこうと思って検索すると… 在庫があるのはRyzen 5 5600Xだけ。5800Xは見慣れた「在庫切れ」に戻っていた。どうやら購入できたのは単なる偶然のギリギリセーフ状態だったらしい。「いやー、なんというラッキー」と思って、何とはなしに再び商品検索画面に戻ると、5600Xも在庫切れになっていた。

最初に5800Xをポチってからここまで約30分程度。昨夜は在庫切れだった5800X(夜10時ころに確認していた)が、いつから在庫ありになっていたのか知らないが、Ryzenの5000シリーズは本当に入荷するとすぐに売り切れてしまう状態が続いているのだと改めて実感したよ。

しかし、なぜこんなことになっているのだろう。AMDの予想を超えて売れまくってるってことなのか?それとも、そういう単純できれいな話ではない何かがあるのだろうか。

2020年12月15日 (火)

amazon.com で Ryzen 7 5800X が購入できない…

AMDが先月発売した新Ryzen (いわゆるZen3)。日本に限らず全世界的に品薄で、特に上位モデルはなかなか買えないようだ。私も 5800X が欲しいと思っているのだが、なかなか買えずにいる。

国内の主要サイトに加え、アメリカの amazon.com を毎日チェックする日が続いていたのだが、今日とつぜん amazon.com で 5800X が、ずっと「Out of Stock」(在庫切れ) だったものが「Available to ship in 1-2 days」(1~2日後に発送) になった。すかさず購入しようとしたのだが… 残念、エラーで買えなかった。

その画面がこちら (画像クリックで拡大)。


Amazon1

実はたまに amazon.com で買い物をしているのだが、こういう表示は見たことがない。いわゆる「おま国」っぽいことを言われているように見える。でも、検索結果では


Amazon2

のように「Ship to Japan」(日本へ発送) と言っているし、商品説明も

Amazon3

となっていて、日本で個人輸入した際の税金なんかも教えてくれて、日本に発送する気マンマンに見える。

そもそも、日本に発送できない商品の場合は、この画面で警告が出るのだ。普通は。

Amazon4

(ちなみに、ボタン電池は「爆発の危険がある」ということで、飛行機に積めない決まりなのだそうだ。これは日本でもそう。)

うーむ。なぜ買えないのだ、Ryzen。

2020年8月19日 (水)

お上手ですこと

「お上手ですこと。」というセリフを見ると、僕にはその話者が「女性」「上流・上品」であるように聞こえる。この後に笑い声が続くなら、間違いなく「オホホ」だ。「ハハハ」とか「エヘヘ」ではない。「ガハハ」なんてありえない。(いや、ジャイアンが「お上手ですこと ガハハ」ならアリかもしれない。笑いを誘う意図的なギャップだ。)

このニュアンスを作り出しているのは「お」と「こと」だと思う。「お」は「丁寧語」や「美化語」を作る接頭辞で、過剰な使用が話題になったりすることもあり、素性が良く知られていると思う。では「こと」の方は何か?

辞書をいくつか調べたが、僕が見た国語辞典は例外なく「終助詞」としている。解説や意味の説明はいろいろだが、感動を表す、断定を和らげる、相手に同意を求める、といった働きがあり、新明解などいくつかの辞書は「主として女性語」という感じの注記を加えている。文法情報を掲載している辞書は「用言の終止形に接続」としている。(他の接続を併記している辞書もあるが、終止形接続はすべての辞書が挙げている。)

ところが、

これを MeCab-UniDic で解析すると、「こと」が名詞になってしまう。「名詞 / 普通名詞 / 一般 / *」だ。それに合わせて「です」は連体形と判定される。「です」の連体形というのは、普通は「普通の名詞の前には立たない。用言の連体形に接続する助詞(例えば準体助詞「の」)の前のみ。」ということになっているような気がする。つまり、解析結果がおかしい。

なぜそうなるのかと思っていろいろ調べたら、なんと、UniDic には「こと」という終助詞が登録されていないのだった。

surface が「こと」である語は四つあり、うち三つは「名詞」。残る一つは「副詞」だが… 副詞の「こと」って何だろう?

まさか国語研は「お上手ですこと」を含む言語資料を持っていないのかと一瞬思ったりしたが、さすがにそんなことはなかった。BCCWJ の「少納言」というシステム(https://shonagon.ninjal.ac.jp/ )でコーパスを検索してみたら、「お上手ですこと」は2件見つかった。どちらも小説で、セリフのようだった。つまり、UniDic を作った人たちは「お上手ですこと」という「こと」の用例を知った上で「終助詞『こと』」を語彙表に登録しないと判断したように思われる。つまり、この文の最後の部分は、終助詞「こと」ではない、何か別の品詞と見なすのが妥当と判断したらしい。さすがに「ます」の連体形+名詞「こと」が妥当な解析とは思えないので、UniDic の基となったBCCWJの解析テクストを見てみたいが、そのデータは一般公開されていないのだった。

ま、僕としては「こと」自体はなんでも良くて、その前の「です」が「終止形」と判定されて欲しいだけなのだが、「こと」が名詞のままではそういう解析結果になるはずもなく。かと言って、「終助詞」なんていう機能語を、十分なコーパスもなしにユーザー辞書に新規登録するのは避けたいし。

どうしよう。困った…。

# 因みに、困っているのはこの件です。

2020年7月 5日 (日)

Github は危害を加える可能性があるサイト?

Windows の「標準」ウェブブラザー Edge がアップデートされ、「検索エンジン」の設定がリセットされて Microsoft の検索エンジン Bing で検索するようになってしまった。

それで、いつものように単に github と入力して、当然一番上に表示される github.com にアクセスしようと思ったら「警告」が出た。

Bing

Microsoft によると、どうやら github というのは「デバイスに危害を加える可能性がある悪意のあるソフトウェアがダウンロードされる可能性がある」サイトらしい。

どうしてそうなった?

2020年5月12日 (火)

Excel VBA でウィンドウ枠の固定位置を調べる

Excel の VBA(Visual Basic for Application; 要は Excel 用のマクロ言語)で、「ウィンドウ枠の固定」がしてあるワークシートの、固定位置を調べたくて、方法をウェブで調べた。


だが、見つからない。


しかたがないから MSDN の Excel object model を読みまくって自分で書いた。こんな感じで固定位置(ウィンドウ枠の固定を行った際に固定の基準にしたセル)を調べることができる。


Sub Macro1()
    Dim r As Long, c As Long, i As Integer
    With ActiveWindow
        r = .ScrollRow
        c = .ScrollColumn
        For i = 1 To .Panes.Count
            With .Panes(i)
                r = Min(r, .ScrollRow + .VisibleRange.Rows.Count)
                c = Min(c, .ScrollColumn + .VisibleRange.Columns.Count)
            End With
        Next i
    End With
   
    MsgBox Cells(r, c).Address(False, False)
End Sub


Function Min(x As Long, y As Long)
    If (x < y) Then
        Min = x
    Else
        Min = y
    End If
End Function

※ 上では Min という関数を定義して Macro1 の中で使っているが、もちろんこれはベタ書きしてもいい。


ただし注意点がある。Excel には freeze panes(日本語版では「ウィンドウ枠の固定」)という機能と split panes (日本語版では単に「分割」)という似ているが少し違う機能がある。上のマクロで使っているプロパティは両者の兼用なので、「ウィンドウ枠の固定」ではなく「分割」を行っている場合には誤動作してしまう。本来はあらかじめ ActiveWindow.Split の値を調べて、これが true だったら(true は「分割」が行われていることを示す)「ウィンドウ枠の固定」は行われていないとみなして一律に A1 にするとか、そういう配慮が必要だろう。


ちなみに、最初に解法を探した中で最も参考になったのは「インストラクターのネタ帳」のこのページの記事だった。実はこのサイトにはよくお世話になっている。大変充実したサイトだ。インストラクターのネタ帳に「いつでも正しい結果となるわけではありません 」という注意書き付きの不完全なマクロしかないのを見つけたときには、VBA できちんと調べることは不可能なのかと思って目の前が真っ暗になった…。




ということで、VBAの体で記事にしたが、本当のことを言うと、今回私はVBAでマクロを書いているわけではない。そもそも VBA なんて滅多に書かない。NetOfficeを使うC#のコードを書いているのだ。ExcelやWordのVBA用のオブジェクトモデルというのは COM でできていて、Office PIAとかNetOfficeというのはその COM オブジェクトを CLI から使うラッパーだから、使い方も VBA とほとんど同じ。Office PIA や NetOffice の情報に比べると、VBA の情報の方が圧倒的に多いので、困ったときには NetOffice の情報を探すよりも VBA の情報を探す方が良い情報が見つかりやすいのだ。それで、VBA を使うわけでもないのに「インストラクターのネタ帳」にいつもお世話になっている次第だ。

2020年4月 2日 (木)

LibreOffice を C# アプリから操作

LibreOffice (昔 OpenOffice.org と呼ばれていたオープンソースのオフィスソフト) には UNO と称する API があり、C++ や Java からリモーティングのようなことができるという話は、なんとなく知っていた。

ところが昨日、この UNO という仕組みには CLI バインディングも存在するという話を聞いた。CLI ってことは、C# から使えるってことだ。LibreOffice で Office PIA とか NetOffice みたいなことができると非常に助かる。

で、さっそく調べ始めたのだが、なんというか、CLI/C# は相手にされてないっていうか、情報がほとんど何もない。公式のC#のサンプルソースが、コメントが Javadoc で書いてあったり、ビルド環境が .mk だけだったり、いろいろ厳しい。それなりに調べまくっているのだが、まだサンプルのビルドすらできない。

今回は、とりあえずリンク集だけ。

  • https://api.libreoffice.org/
    • LibreOffice の API に関する本家のページだが、基本 C++ と Java の話ばかり。
    • よく見ると C# のサンプルプログラムが 1 本だけあるが、そのコメントが Javadoc で書いてあるのだった…。
  • https://wiki.openoffice.org/wiki/Documentation/DevGuide/ProUNO/CLI/CLI_Language_Binding
    • OpenOffice 3.0 の話が最新情報として追記されていたり、実行環境が .NET Framework 1.1 だったりするのでかなり古い情報なのだが、どうやらこのページが一番基本的な話がまとまっているような気がする。
  • https://vdlz.xyz/Csharp/Porpose/Office/LIbreOffice/LibreOfficeCSharp.html
    • 僕が今日の昼までに見つけることのできたページの中で一番詳しい。しかも日本語。やったね!
    • "CLI" を「C#でLibre Officeを扱う仕組み」と断言したり、イントロでいきなり「Libra OfficeをC#で操作するためのドキュメントは、全く無いわけではありません。」と言って見せたりする辺りで期待感が高まる。😃

ちゃんと使い物にできたらいいなあ。

«ハードディスクも速くなっているが進歩は遅いようだ