スタッフの日記

量子コンピュータ関連書籍を読んで(その1、その2)

2023年8月4日(平石)

1.電卓型とそろばん型
 量子コンピュータに関する文献を読んで、もしかして、情報処理システムには「電卓型」と「そろ ばん型」があるのではなかろうかと思うようになった。
 電卓型は、たとえば下図。

 「ここから上は出力」、「ここから下は入力」で示したように、入力場所と出力場所とが、きっちり と分かれている。

 人間の脳の細胞(ニューロン)も電卓型。入力場所と出力場所は分かれている(下図)。

 「そろばん型」は、適切な画像が無いが、要するに、入力と出力が分かれていない。

上図は、筆者が小学生の時に買ってもらったもの。


 そして、古典コンピュータ(従来のコンピュータ、現在のコンピュータ)は概ね電卓型、量子コン ピュータは必ずそろばん型となるらしい。


 それは、量子コンピュータが、「波の重ね合わせ」を計算するものだからだと思われる。
 例えば、少量の放射性物質と、それが放射性崩壊したときにそれを検知する検知器と、検知器に連動して瓶を叩き割るハンマーとを箱に入れて蓋をする。放射性崩壊は量子現象なので、ふたを開ける前は、瓶が「割れている状態」と「割れていない状態」との、波としての重ね合わせになっている。
蓋を取らなければ、割れているのか割れていないのか決まらない。蓋を取って箱の中の情報を外部に出力すると、割れているか否かが確定してしまう。つまり「割れていない」と「割れている」の両方があったものが、一方だけになってしまう。
 「量子コンピュータは、このような箱をたくさん並べたようなもの」という意味のことが、「でたらめの科学 サイコロから量子コンピューターまで(ISBN:978-4-02-295104-5)」に書かれている。なので、計算の途中で「波の重ね合わせ」でなくなってしまい、瓶が割れているか否かが確定しては、まずいのである。

 「ゼロからわかる量子コンピュータ(ISBN:978-4-06-528299-1)」に、下図がある。

 この図で水平線は同一の〝もの〟である。〝もの〟としては一つであるが、〝状態〟は、複数の状態の重ね合わせである。
 量子コンピュータのプログラミングは、上図のなどの「ゲート」を、どこに配置するかを考えることになる訳である。
 量子コンピュータにおける「ゲート」は、「偏光を当てる」とか「磁場をかける」などの操作である。そろばんにおける、指の動かし方に相当するものだと思う。
 そして、ややこしいことに、「一番上の瓶が割れていない状態と、二番目の瓶が割れている状態の重ね 合わせ」などというのもありうる。上図で縦につながった「ゲート」は、このような、複数の瓶の状態の 重ね合わせに対する操作であろう。
 ということは、古典コンピュータのプログラムが、基本的に1次元であるのに対し、量子コンピュー タのプログラムは、ほとんどの場合、2次元以上となるのではなかろうか。
 ちなみに、は、状態を表現するもので、左側に縦線、右側に閉じ括弧(〉)を書く。

 

余談:
 テレビの時代劇を見ていたら、五珠が2つ、一珠が5つのそろばんが使われていました。
 ネットを検索すると、「もともと13世紀ころ中国で発明された算盤は、重量の単位で1斤=16両、面積の単位で1市頃=16市畝など、16進数が計算できるように、五珠が2つ、一珠が5つだった。」ということのようです。


2.量子を使っているから量子コンピュータと言う訳ではないということ
 今日使われている、いわゆるノイマン型コンピュータは、「電子計算機」とも呼ばれている。「電気 計算機」とか「電動計算機」とか言うと、別のものになってしまう。つまり、電気を使用していることが 本質なのではなく、電子を使用していることが本質なのである。
 そして、電子は、量子の一種である。
 今日のコンピュータには、半導体が使われている。半導体にはn型半導体とp型半導体があって、それらの薄片を何層にも貼り合わせたものを使う。
 そして、電流は、p型半導体からn型半導体へは流れるが、n型半導体からp型半導体へは流れ ない。
しかし、そのn型半導体のところにもう一つp型半導体をくっつけて、そのp型半導体からn型半導体に電流を流すと、流れなかったn型半導体からp型半導体への電流が流れる。
 この不思議な現象は、量子論によらなければ説明できない。そもそも、なぜn型半導体とp型半導体とが存在するのかが、量子論によらなければ説明できない。
 今日のコンピュータは、これらの量子現象を演算処理等に使っている。
 量子を使っているにもかかわらず、今日普通に使われているパソコンやスーパー・コンピュータ は、量子コンピュータではない。
 たとえば、「量子コンピュータの衝撃(ISBN:978-4-299-00338-6)」には、「古典コンピュータは電 子を使っているのに、何故量子コンピュータと呼ばないのか」という疑問が表明され、それなりの回 答を示している。しかし、「粒子の数が多くなると波のように見える」などと的外れなことを言ってい る。
 筆者は、この回答も含めた諸々の考察の末、「電子を個別処理するのが量子コンピュータ、 電子を集団で処理するのが古典コンピュータ」という結論に達した。

 

【参考にした文献】(量子コンピュータ関連書籍+平石の一言.pdf)

一覧表示 ▶︎ スタッフの日記

標準SQL update操作で必要になるselect権限の付与について

2022年7月3日(staff)

      table 全件update       -> tableのselect権限は不要
      table 条件付きupdate -> tableのselect権限が必要
    
 updateやdeleteの対象となる特定の行や列を指定するには、そのテーブルのselect権限が必要になります。select権限がないユーザが、table条件付きupdateを行うと、例えば“権限不足でエラー”になります。
  
 個人的な思い込みで、レコードのupdateができるのであれば、当然select権限が付与されているだろう、update権限を付与すると自動的にselect権限の付与が補完されるだろうぐらいの認識がありました。
  
[以下が注意したい例]
  
① oracleの"SQL92_SECURITY"パラメータをfalse ー> True に変更した時。 select権限を付与していないテーブルのupdateがエラーになる。
  
② プログラムで動的にSQL文を作成している時、where句がある場合はselect権限が必要になる事に注意。select権限のないテーブルのupdateは、where句が無いときは成功しますが、where句がある時に失敗します。
 

 以上

 

一覧表示 ▶︎ スタッフの日記

ACCESS VBA 複合機(コピー機)のグレースケール印刷指定方法

2022年5月29日(staff)

■複合機側でグレースケール印刷を標準設定しているのに、ACCESSでレポート印刷する際、初期設定のカラー印刷に戻っている。そのたびに設定操作が面倒だ。
 
 [ACCESS VBAによる指定方法]
 
  該当レポートのページフォーマットイベントに以下のコードを追加。

  Private Sub Report_Page()
        Me.Printer.ColorMode = acPRCMMonochrome
  End Sub

 
 [説明]
 
  最近はカラーインクの経費削減で、黒インクのみの印刷が多くなりました。複合機ドライバーのプロパティ設定でグレースケール印刷を標準設定にしています。Word文書、Excel文書等の印刷では、グレースケール印刷出来ていますが、ACCESSのレポート印刷では、カラー印刷になってしまいます。ACCESSでは、なぜか複合機の標準設定は反映されないようです。そこで、上記のようなコードを追加すると、グレースケール印刷のコントロールができるようになりました。
  
  以上、ご参考まで。
 

一覧表示 ▶︎ Webノウハウ

canvasについて続編2―ミウラ折りのデモ

2021年12月18日(平石)

 何年か前、「スマホを2本指でスワイプすると、文字と画像が大きくできる。だけど、画面全体は元のサイズなので、端の方が途切れてしまう。画面も大きくなるようにできないものか。」というような会話をしました。

 ややあって、その会話と、何かで見た宇宙ステーションの発電パネルが宇宙空間で広がっていく映像とが私の頭の中で混ざってしまいました。宇宙ステーションの発電パネルは、打ち上げ時には小さく折りたたまれており、宇宙に飛び出て、ほとんど一瞬の間に、いっぱいに広がります。この折り方は、発案者三浦公亮氏の名前を採って「ミウラ折り」と呼ばれています。

 ミウラ折りは、下図の各辺で折り曲げる折り方です。各辺では折り曲げるけれど、各平行四辺形の内部では折り曲げません。そして、谷折りと山折りをうまく組み合わせることで、ほとんど瞬時に閉じたり開いたりできるのです。

     
   

 

 上図は、広げた状態の図ですが、右下の小さな赤丸の近くをクリックすると、少しだけ折った状態の図になります。そのまま、左ボタンを押したままマウスカーソルを動かすと、閉じたり開いたりできます。

 また、右側にある「軌跡の表示」ボタンをクリックすると、赤丸マークの動く軌跡が表示できます。これは、直線でも円でもありません(双曲線の一部ではなかろうかと思いますが、未確認です)。

 右下の「手動⇒自動」ボタンをクリックすると、閉じたり開いたりの動作を自動的に繰り返し表示するようになります。

 上図には、3×3=9枚のパネルが表示されています。左側に表示した縮小図の当該位置をクリックすることで、表示するパネルを2×3、3×2、あるいは2×2にすることができます。枚数が多すぎて複雑になって見づらい場合などに活用してください。

 もし動かない場合は、タイトル「canvasについて続編2―ミウラ折りのデモ」をクリックして単独表示にしてみてください。

(これは、「canvasについて」の続編です。)

一覧表示 ▶︎ Webノウハウ

canvasについて続編―詰将棋をちゃんと動くようにしてみた

2021年9月17日(平石)

canvasについて」に描いた詰将棋を、実際に動くようにしてみました。

おかげでHTMLとJavascriptについて、大変勉強になりました。canvasを3枚重ねて使っているのですが、下手をすると、下にある「一覧表示 ▶︎ Webノウハウ, スタッフの日記, ブログ」とある箱まで重なってしまって、何やらわからないことになってしまうのに苦労しました。

 

上図の駒をマウスでドラッグすると、将棋のルールに則って、動かすことができます。ぜひ、やってみてください。

もし動かない場合は、タイトル「canvasについて続編―詰将棋をちゃんと動くようにしてみた」をクリックして単独表示にしてみてください。

なお、canvasを重ねて使う方法については、けーちゃんのプログラム開発ノート【JavaScript】 Canvasでレイヤーを表現する(https://note.affi-sapo-sv.com/js-canvas-layer.php)を参考にさせていただきました。

 

 

一覧表示 ▶︎ Webノウハウ

canvasについて

2021年8月3日(平石)

HTML5のcanvasについて調べてみました。

それで、やあっとこんなことができるようになりました。

上の枠内で、マウスのボタンを押しながら、マウスを動かしてみてください。 をクリックしてからやると、色が付きます。

次に、詰将棋とかをやってみようと思い、絵は描くことができました。しかし、今回は、動作は断念しました。だから下図で「金」をドラッグしても、何も出ません。

いろいろ研究してみれば、もっといろんなことができそうです。

ただ、いちいち script を書かないといけないのが、ちょっと煩わしいです。

 

一覧表示 ▶︎ Webノウハウ

「ャtト」って、こういうことだったんだ

2020年11月7日(平石)

 ネット上で時々見る意味不明の言葉「ャtト」について、ひょんなことから判明したので、ここに記しておくことにします。

 まず、その「ひょんなこと」について。
 現在開発中のシステムで、「予算実績管理表」というものをpdf出力するテストを行いました。ファイル名は、“予算実績管理表_~.pdf”としたつもりでした(「~」の部分は補足情報)。ところが、“落Z実績管理廟~.pdf”なるファイルができてしまいました。“予”が“落”、“算”が“Z”、“表_”が“廟”に文字化けしてしまった形です。
 ネットを探しても、対処方法が分からず、文字の順序を変えたり、前後に他の文字を入れたりすると、ということをいろいろ試してみて、ついに、“予”の後ろと“表”の後ろに“\”を入れると、期待した正しいファイル名になることが判明しました。

 「文字“表”の後ろに“\”」で、思い出したことがあります。
 かなり昔、ソースプログラムの“表”という文字の後ろには“\”を付けないと、文字化けしたり、コンパイルエラーになってしまったりというコンパイラがありました。
 これは、“表”という文字のShift-JISでのコードが「955c(16進表示)」で、2バイト目が「5c」つまり“\”と同じなので、エスケープ文字(“\n”(改行)などとして使われるもの)と判断されてしまうからです。そこで、“\”+「文字」の機能の一つである、「“\\”が“\”という文字1文字を表す」ということを利用します。つまり、“表”という文字の2バイト目がエスケープ文字の“\”、その後ろにさらに“\”を付けることによって、“\\”となり、「“\”という文字1文字」となって、最終的に“表\”は“表”となり、また、後続の文字もちゃんと正しく処理される訳です。

 そこで、“予”についても、2バイト目が「5c」なのではないかと調べました。その通りでした。
 さらに、2バイト目が「5c」のものを探してみると、“ソ”(835c)がありました。
 もし、“ソ”についても同様の文字化けが起き、“\”を付けると文字化けしないなら、文字化けの原因はこれであり、他の文字も、2バイト目が“\”だったらその後ろに“\”を追加することで、文字化けを防ぐことができると考えられます。
 そして、“ソ”を含む文字列として、“ソフトウェア”を用いることにして、実験。

 その実験結果のファイル名を見て、声を上げてしまいました。
 実験が成功したからでも、失敗したからでもありません。
 “ャtトウェア”となったからです(“ャ”は小さいカタカナ、拗音)。
 この、あちこちのサイトで見かける意味不明な文字列。ファイルをダウンロードするとファイル名中に見られることのある意味不明な文字列。ついに、その意味が、分かったからです。

 “ソ”は「835c」、“フ”は「8374」、「5c」がエスケープ文字“\”とみなされると、次の文字「83」あるいは「8374」は“\n”とかの“\”と組み合わせて特別な意味になる文字でないので、この“\”は無視されてしまい、「83 83 74」となります。「8383」は“ャ”、「74」は“t”なので、結果として、“ャtトウェア”となる訳です。

 おまけ。
 今回のきっかけとなった“予算”と“表_”については、
   予=975c、算=8e5a、結果として「97 8e 5a」=落Z
   表=955c、_=5f、結果として「95 5f」=廟
となってしまっていました。
 対処としては、

  $fileName = mb_convert_encoding($fileName, "SJIS-WIN");

  header('Content-Disposition: attachment;filename="'.$fileName.'"');

の間に、

  $fileName = str_replace('\\', '\\\\', $fileName);

を入れました。“'\\'”とあるのは、“\”1つの意味。“'\'”としてしまうと“'”の意味になってしまいます。

一覧表示 ▶︎ Webノウハウ

注意!「Amazonセキュリティ警告:サインインが検出されました」 というフィッシング詐欺メールの見分け方【迷惑メール】

2020年5月20日(staff)
はじめに
 最近、Amazonの注意喚起メールを装ったフィッシング詐欺メールが届きました。
 本家Amazonがセキュリティ対策として同様のメールを配信しており、文面も一瞬見ただけでは信じて誘導されてしまいそうでした。騙されない為に、見分け方を紹介します。
 
■見分け方■
 以下、
  1が手っ取り早く確実な確認方法です。
  2から5は、偽装できてしまう情報もあるので全部を確認してから判断します。
  ご参考まで。
  
 なお、本物例)、偽物例)は自分のところに届いたメールから抜き出した情報です。
  
1.Amazonのアカウントサービスをチェック
  届いた怪しいメールはとりあえず放置します。
  Amazonのアカウントサービスで、Amazonが送信したメールを確認する事が出来ます。
   
  [操作]
  ・Amazonにログイン
  ・[画面右上]-[アカウント&リスト]-[アカウントサービス]と操作
  ・アカウントサービス画面の中に、「Eメールとメッセージ」枠欄があります。
   その中の「メッセージセンター」をクリック
  ・[アカウントサービス>メッセージセンター]画面でメールに該当するメッセージがあるか確認
     

メッセージセンター画像

メッセージセンター画像


     
 ここで該当メールが無ければ、フィッシング詐欺メールです。
 なお本当に送られてきたメールで、しかも覚えのないサインイン履歴であったなら、きちんと対応しましょう。
  
  
2.差出人メールアドレス(ヘッダー情報:From)
  ぱっと見はAmazonですが、よく見ると違います。
  同じでも、ここは簡単に偽装できてしまうので、これだけで判断するのは危険。

      偽物例)   Amazon.co.jp<helpdesc1801@lojasapatos.com.br>
      本物例)   Amazon<account-update@amazon.com>
     

 
3.経由したメールサーバー (ヘッダー情報:Received)
 経由したメールサーバーで、メール配送経路を把握する事が出来ます。メール中継サーバ(MTA)が複数あれば
その数だけReceived情報があります。 配送経路は下にあるReceivedほど古く、一番下にあるReceivedが差出人側のメールサーバーが付けた情報になります。 ここでFromのアドレスがAmazonのドメイン名でなければ怪しいと判断。ドメイン表示が無い場合なら、そのIPアドレスをネットで検索しましょう。  この例では、偽物は日本のどこかから発信されたようです。
  以下、Receivedだけ抜粋。
     
      偽物例)
   
Received 詐欺メール例

Received 詐欺メール例

  
     
      本物例)
     
Received 本物メール例

Received 本物メール例


     

4.送信ドメイン認証の署名確認 (ヘッダー情報:DKIM-Signature)
 AmazonぐらいになるとDKIM(DomainKeys Identified Mail)による送信者認証のための電子署名を付けています。これが無ければ、怪しいと判断。

      偽物例)無し
     
     
      本物例)
     
送信ドメイン認証の署名確認 (DKIM-Signature)

送信ドメイン認証の署名確認 (DKIM-Signature)


     
5.本文
 まず偽物は、宛名表示がありません。本物はアカウント情報を把握している為、○○様とあります。但し、アカウント情報が漏洩していれば、偽装は容易。後は全体的に文章に違和感があります。句読点など、何となくおかしい。
    
  
      偽物例)
  
詐欺メール本文

詐欺メール本文

   

     
      本物例)
        
 
本物メール本文

本物メール本文

   
 
 
おわりに
 年々フィッシング詐欺メールが巧妙になってきていますね。標的型攻撃メールも見破る事が難しくなってきています。重要なメールには電子署名が必須ですね。
 
 自分は信頼できるメールであっても原則としてメール本文のリンク、ボタンは踏まない事にしています。そもそも、普段からメール本文はHTML表示しません(Webビーコン対策)。
 
 なのですが・・・・
 こんな事を書いている自分が、メールのやり取りの中でリンク先を張り付けたり、平気でファイルを添付してしまう。相手にはソーシャルエンジニアリングに注意しましょうといいながら、自分のメールは大丈夫だからと説明してしまう。こういうところは正さないといけません。
 
 在宅ワークの流れがあります。これからどんどん広がるでしょう。メールは電子署名は必須になるのでしょうか。今後もメールに限らず情報の伝達にはこうしたリスクが付きまといます。システムで防ぐ事は限られるので結局最後は気を付けましょう、という事になります。難しいなあ。
一覧表示 ▶︎ スタッフの日記

Windows Updateによってaccdbのクエリ―がエラー。MS-ACCESSをダウングレードして対応する。

2020年1月6日(staff)
 またしてもWindows Updateがやらかしてくれました。
対応方法として、該当するKBnnnnnnnnをアンインストールすれば良いのですが、
MS-ACCESSの場合、少し操作方法が違っていたので備忘録として載せておきます。
 
 
■不具合
 昨日まで動いていたMS-ACCESSのaccdbシステムが、次のようなエラーを検知して動かなくなった。
 
 "エラーが発生しました''クエリ―が破損しています"
  
 もちろんaccdbは変更して無いので、これはもうPCの別ソフトウエアの変化による不具合だろうと・・・
  
■対応
 この対応方法として、PCに適用されている以下のWindows Update更新プログラムをアンインストールする、という情報がありました。
  [Officeのバージョンに合わせて下記の更新プログラムをアンインストールする]
  ・Office 2016
    KB4484113
    KB4484148
  ・Office 2013
    KB4484119
    KB4484152
  ・Office 2010
    KB4484127
    KB4484160
    
 さっそく自分のPCで該当の更新プログラムをアンインストールしようとしたが、見当たらない!
該当のKBが更新プログラム一覧に出てこない!
どうやら、MS-ACCESSの自動更新機能によってアップデートされているPCの場合、そっちのルートで適用されてしまったようです。なので、ACCESSのバージョンをダウングレードする方法を取りました。
   
 作業手順 例)
(1) ACCEESSを起動してOFFICE更新プログラムのバージョンを確認
    アカウント情報を開いて確認。
現在のバージョン及び、ACCESSのバージョン情報をクリックするとMicrosoftのサイトでバージョン履歴を確認できるので、一つ前のバージョンを把握しておきます。
因みに今回ダウングレードするバージョンは、15.0.5179.1000。
    (2) バージョン確認後、とりあえず自動更新の設定を無効にしておく
    (3) OfficeC2RClient.exeを実行してOFFICEバージョンをダウングレードする
      予めコンピュータが32bit版か、64bit版か確認しておきます。
      cmd.exeコマンドを管理者で実行して、CDコマンドでディレクトリを移動。以下は64bitの例。
      
      次のコマンドを実行。
      OfficeC2RClient.exe /update user updatetoversion=15.0.5179.1000
[メッセージ例]
 
 
(4) ACCESSのバージョンを確認
 
 
以上です。

 

 
 
一覧表示 ▶︎ スタッフの日記

MS-AccessでYes/No型項目をコンボボックスにすると不思議なことが

2019年11月4日(平石)

あるMS-Accessのシステムのバージョンアップで、「あり」と「なし」を値とする項目が必要になったので、テーブルに当該の項目をYes/No型として追加しました。

そして、その値を設定するフォームを作成して動作確認したところ、・・・

コンピュータは 何かやってるんですが、フォーム上の表示では空白にしかならないんです。

下図は、この事象の調査のためにいろいろやってみたものです。「対象の有無」とあるコンボボックスがその項目だと思ってください。

ここでコンボボックスをクリックしてドロップダウンさせると、「あり」と「なし」が表示されます。

ここで、「あり」を選択しても、コンボボックスの表示は空白のままなんです。

これが「不思議なこと」とタイトルで言っていることです。

よくよく目を凝らして、フォームの左端のレコードセレクタを見ると、鉛筆マークになっている。つまり、何かが変わったということです。

そこで、テーブルの内容がどう変わったのか確認してみました。

なんと!、値が「-1」になってるんです。

「True」と「False」でも、「Yes」と「No」でもなく、「-1」と「0」なんですね。

この項目のルックアップを確認すると、「True」と「False」にしていました。

そこで、「-1」と「0」に直しました。

そして、テーブルの内容を初期値に戻してフォームを表示してみると、下図の通り。目的通りの表示です。

コンボボックスをドロップダウンしたときの表示はちゃんと現在の値に対応したところ:「なし」が選択され、「あり」を選択の結果も目的通りの結果でした。

どうも、コンボボックスの値集合ソースでは、すべて文字列として処理されるみたいです。だから「True」と書くと「"True"」という文字列として処理されてしまう。そして、テーブル上の「-1」とは一致しないので空白表示になるようです。ところが、「あり」を選択して「"True"」を設定させようとすると、「"True"」を「-1」に変換してくれるわけです。「Yes」でも「-1」に変換してくれますが、「はい」だとエラーになります。この中途半端さが、いかにもMS-Accessらしいですね。

という訳で、「Yes/No型の項目をコンボボックスで処理するときは、『-1』と『0』にすべし」と覚えておこう。

一覧表示 ▶︎ スタッフの日記