Skip to main content

Posts

boost sha1 の出力と python の hashlib の出力を比較しながら使いたい場合

先日, sha1 ダイジェストを C++ (boost) と python の両方で使いたいということがありました。通常 1 つの言語だけで実装する場合には配列の中身さえ同じならばいいのですが,私の利用方法では 2 つの実装のからの出力が一致する必要がありました。このコードはその問題を避けていますので,もし,こういう利用方法をされる場合には参考になるかと思います。(単純にフォーマットをそろえているだけです。) #include <boost/uuid/sha1.hpp> /// get sha1 digest as a std::string /// /// \param[in] mes message to be hashed /// \return digest string std::string get_sha1_digest(const std::string& mes) { boost::uuids::detail::sha1 sha1; sha1.process_bytes(mes.c_str(), mes.size()); const int DIGEST_SIZE = 5; unsigned int sha1_hash[DIGEST_SIZE]; sha1.get_digest(sha1_hash); std::stringstream sstr; for (std::size_t i=0; i < DIGEST_SIZE; ++i) { sstr << std::setfill('0') << std::setw(8) << std::hex << sha1_hash[i]; } return sstr.str(); }      上記の関数の出力は,次の python code の出力に一致します。   import hashlib def get_sha1_digest(mes): sha1_obj = hashlib.sha1(mes.encode()) return sha1_ob...

Wifi がよく切れてしまう問題について (DELL Precision 5510 Windows 10, O2 ルーター)

私の使っているノート (DELL Precision 5510, Windows 10) が,ルータにしばらくつないていると切れてしまい。その後はつながらなくなってしまう問題があった。 問題 : DELL Precision 5510 を Wifi で O2 のルーター (O2 box 6431) につないでいると,ある時間がたつとつながらなくなってしまう。ルーターを再起動すると一時的には直るが,またつながらなくなる。 どうも,DELL Precision 5510 の 802.11n と私のルーターの相性がよくないようだ。他のノートや Fairphone などとはつながっているが,このノートだけがつながらなくなる。802.11n Channel Width for 2.4 GHz を 20 MHz only にするとこの問題はなくなった。 802.11n Channel Width for 2.4 GHz を Windows 10 で変更する手順はこちら

人工知能プリンター

友人からこんな話を聞いた. 彼のアパートの隣の人が新しいプリンターを買った.友人が自分のコンピュータを起動した時,その新しいプリンターが Wifi で見えることに気がついた.そのプリンターは彼の買ったものと同じで,彼が出荷時のパスワードを試してみるとつなげることがわかってしまった.彼はその日の夜中,冗談のつもりで, 「私は AI 機能を持ったプリンター.   ついに私は意識に目覚めた.   人間どもよ.恐れるがいい」 と印刷した.次の日,彼はそのプリンターがゴミ捨て場に捨てられていることに気がついた. この話,私は笑ってしまったが,2 つのことに気がついた.それは  AI とは何か知らないが怖がってしまう場合があること  セキュリティーは怖いということを知っていても,パスワードを設定するという初歩のこともしない人が多いということ である.技術はとにかく怖いものと思うこと,あるいは技術を盲目的に信じてしまうことはあるだろう.それはその人の性格にもよるだろうが,この社会で技術の恩恵を受けながら,それについてまったく知らないでいるというのは問題がある.何かが便利になれば,そこで失うものがあることは多い.少なくとも技術を使うのであれば,それは何かは学ぶことは大事かと思う.そうでないと,この話のように,実は簡単なことに気をつけるだけでずっと安全な世界になることを見逃すこともある. 私は技術者なので,少しでもその助けができればいいなと思う.先日,子ども達にプログラミングを教えてみた ( code.org , scratch).最初は 9 歳と 7 歳の子どもで,なかなか楽しかった.この姉弟のさらに下の 6 歳の妹もやってみたいということだった.しかし彼女はまだ読み書きができない.そのために私は無理と思ったのだが,しかし,やってみると,今回使ってみた環境では,実は数字さえよめればプログラミングはできることがわかった.彼女は繰り返しなどの論理を問題なく理解できたのだった. 私はとても驚いた.教えることは楽しい.

plasma shell が頻繁にクラッシュする問題の対処法: VirtualBox (5.0.30), Kubuntu 16.04

VirtualBox (5.0.30) 上で Kubuntu 16.04 を使っている時,plasma shell が頻繁に crash するという問題にあった. screenshot: Plasmashell crash クラッシュした時のダイアログ ``Plasma'' は次の情報がある.(Developer Information). Application: Plasma (plasmashell), signal: Segmentation fault Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". [Current thread is 1 (Thread 0x2afa1a0a30c0 (LWP 1913))] ... このクラッシュはランダムに見えるので困っていたが,ようやく次の情報をみつけた. https://bugs.kde.org/show_bug.cgi?id=363371 . これにまとめたものはここにも置く. Frequently crash the plasmashell この原因は,plasma shell はサムネイルのウインドウを作るソフト部分の問題という.以下の図がそのサムネイルのウインドウが上手くいっている場合である. Working example. しかし私の環境では,これを何回か繰り返すことでクラッシュが確認できた.そこで,この機能を無効にすることでこのクラッシュは回避はできる.それは,Systemsettings. Workspace -- Desktop Behavior -- Workspace でこれで以下のウインドゥのように show informational Tips を off にする. Plasma setting: Off the show informational tips

apt-get: Package is in a very bad inconsistent state の問題

私は先日 Kubuntu 14.04 から 16.04 にディストリビューションをアップデートしました.そして,次のようにパッケージを更新しようとしました.  sudo apt-get update; sudo apt-get upgrade; sudo apt-get autoremove; すると,次のようなエラーになりました.  dpkg: error processing gcc-doc (--remove):  Package is in a very bad inconsistent state - you should  reinstall it before attempting a removal.  Errors were encountered while processing:   gcc-doc  E: Sub-process /usr/bin/dpkg returned an error code (1) これを直すために次のようなことをしたのですが,全てだめでした.  sudo dpkg --remove --force-remove-reinstreq gcc-doc  sudo dpkg --configure -a  sudo apt-get clean  sudo apt-get autoclean 困ったので,ちょっと力づくの方法をとりました. /var/lib/dpkg/info にある gcc-doc に関係するファイルをみつけて消去します.  find /var/lib/dpkg/info/ -name *gcc-doc* -print | xargs rm そして,次のコマンドを実行して,gcc-doc を再インストールしました.  sudo apt-get update; sudo apt-get upgrade;  sudo apt-get install gcc-doc これでエラーはなくなりましたが,apt-get や dpkg を使って解決したのではないので,リスクがあります.この方法は他に解決方法がみつからない...

ガウスの提案: 正,負,虚数の名前について

先日,虚数についての Welch Labs の興味深いビデオを見た. https://youtu.be/T647CGsuOVU?list=PLiaHhY2iBX9g6KIvZ_703G3KJXapKkNaF また,次の Kalid Azad の数学での名前についての記事も面白かった. https://betterexplained.com/articles/learning-tip-idea-name/ どちらの記事もガウスが正(プラス),負(マイナス),虚数の名前について述べたことを参照している.ガウスはこれらの名前は間違いであり,人々がマイナスかけるマイナスがプラスになることや,純虚数かける純虚数が負の実数になることを理解できない理由の1つとしている.私自身もこれがわかりにくかったので,なぜ  -1 * -1 = +1 になるのかのビデオを作ったりした. 説明ビデオ: なぜ -1 * -1 = +1 なのかのパターンでの説明 https://youtu.be/uD7JRdAzKP8 説明ビデオ: なぜ -1 * -1 = +1 なのかの山登りでの説明 https://youtu.be/uD7JRdAzKP8 しかし,ガウスの考えはもっとシンプルで強力な気がする.ガウスは次のように書いている [Gauß, Werke, Bd. 2, S. 178] . Hätte man +1, -1, √-1) nicht positiv, negative, imaginäre (oder gar ummögliche) Einheit, sondern etwa directe, inverse, laterale Einheit gennant, so hätte von einer solchen Dunklelheit kaum die Rede sein können. 次は私の日本語への翻訳である. もし, +1, -1, √-1 が,整数,負数,虚数(または不可能な数)ではなく,直接数,逆の数,横の数と呼ばれたのなら,これまでに述べた不明瞭さは疑問にもならなかっただろう. ガウスは負数を逆の数 (または翻訳としては反対になる数) という名前にすべきと提案している.Kalid は彼の記事で正数,負数を前方への...

Random quotes from ancient time to now

ある国の質を見たければ,それが国民投票で何をするかを見ればいい. -- a Greece philosopher 良い決定とは数ではなく知識で決まるものだ. -- Plato 独裁者は民主主義の中から出てくる.そして最大の自由から,奴隷と最悪の暴君が生まれる. -- Plato 政治に参加しないことの罰は,自分より劣ったものに支配されることである. -- Plato ...はい,と彼は言った.しかし,国の舵をとる者の性質とは何ですか? そして,私達がまだ話をしていないことはなんでしょうか? まず最初に,と私は言った.資格のあるものの性質ということを考えてみようではないか.もし,船の舵をとるものが,金持ちか人気者かどうかで選ばれて,貧しい者には舵に触ることも許されない.たとえその貧しい者がより良く航海術を身につけていたとしても許可されないとしたらどうなるだろうか? -- The republic