2017/11/27

[bow]WindowsのUbuntuでダブルクリックによる単語選択をしたい

もう、Bash on Ubuntu on Windowsという名前では無くなってしまい、呼び名が難しくなってしまった。
ともあれ、2017年秋からは正式にLinux環境もStoreからインストールできるようになったので、今Ubuntuで作っているアプリくらいだったら動くんじゃ無かろうか。


インストールはいいとして、コンソールが標準のものでは心許ない。
TeraTermみたいなやつが使いたい。

こちらを見ながら、ConEmuというアプリを使ってみよう。
黒い窓使うよりConEmu使うのが便利だよ、PuTTYも超絶いいよ - Qiita

おおむねよかったのだが、ダブルクリックによる単語の選択が、なんか遅い。
設定を変更していると多少早くなった気はするが、致命的なのが次の行に回り込んだ単語を選択してくれないことだ。

image

希望としては"know"と次の行の文字まで拾ってほしかったのだ。
これは設定を変更しても変わらんかった(やり方がわからんだけかも)。


これは、オリジナルのコンソールでも同じだ。
PowerShellでもそうみたい。

白黒でわかりにくいが、TeraTermはいけるのだ。

image


こちらのwsl-terminalは、なかなかよい。
Bash on Ubuntu on Windows用ターミナルとしてwsl-terminalを試してみる » sa-sa-ki.jpのblog

image


テーマは、私の目に読みやすかったbase16-seti-ui.minttyrcにした。

2017/11/21

[btc]トランザクションを下りたい

Bitcoinのトランザクションを展開したとしよう。
「展開」というのは、Bitcoinのブロックチェーンに投げる、くらいの意味だ。
txメッセージの送信、でもよいかもしれん。


よくあるBitcoinトランザクションだと、vinが1つで、voutが送金先とお釣りの2つだ。
そのvoutのお釣りから、さらに別の送金を行ったとしよう。

いや、もうちょっと今困っている問題に近づけた方がよいな。
私以外の誰か(ここではAさん)が、Aさんが秘密鍵を所有するトランザクションのお釣りから、別のアドレスに送金を行ったとしよう。
そして、私はお釣りを含んでいるトランザクションのTXIDだけは知っているとする。

さて、ここで送金先のTXIDを簡単に知ることはできるだろうか?
ただし、Block Explorerのようなものは使わず、bitcoindのJSON-RPCのみ使用可能とする。


TXIDの特定のvoutが使用されているかどうかは、gettxoutを使うとわかる。
これは、outpoint、すなわちTXIDとindexを指定して、unspentであれば何も返さない(エラーが返るのかも?)。
結果を返すかどうかだけで、とりあえずunspent/spentのチェックだけはできよう。


もし上流に遡りたいのであれば、vinのTXIDをgetrawtransactionなどすればよかろう。
そう、その方向に上っていくのは簡単なのだ。
なのに、もっと簡単そうな下へ下る方となると、途端にやり方が分からなくなる。


以前作ったときはBitcoinプロトコルしか使えなかったので、getheadersなどを使って古いブロック番号からひたすら順番にとり続けた気がする。
セキュリティ的なものなのか、やればできるような機能を持たせていないだけなのか、とにかくbitcoindではそういうことはできないんだ、と結論づけたのだった。


あれから数年が経ち、私もなにもわからずBitcoinを触っていたときよりは知識が増えたはずだ。
もしかしたら、今だと解決できるのかもしれん。
・・・というよりも、下に下りたいという状況が出てきてしまったのだ。

segwitのトランザクションだとwitnessがわからなくてもTXIDが計算できたはずなので、もしかしたら下らずにTXIDがわかるかもしれん、という期待をしながら計算を続けたのだが、無理そうな気配がしている。

送金元のトランザクションはわかるので、vinはわかる。
versionも、決められる。
ただ、voutとlocktimeが自由にできてしまうので、TXIDを事前に計算できないのだ。


あとは、仕様を確認して、実はそこはたどらなくてよいんだ、となることを期待するばかりだ。

2017/11/19

[googlehome]英語でしゃべってもらう

hiro99ma blog: [googlehome]IFTTTのThatをslackbotで受けとる

これで、IFTTTとslackbotを使って、しゃべった言葉をGoogle Homeがしゃべり返すところまで行った。
あとは、翻訳するサービスで無料のところがあれば、それを挟むだけでよさそうだ、とは思っていたところ、こういう記事があった。

Python – googletransを試してみました。 | Developers.IO

制限があったり、いつまで使えるか分からなかったりするようだが、お遊びでやる分には十分だ。


slackbot側のpython

from slackbot.bot import respond_to from googletrans import Translator
import os.path import subprocess def _bcc_exec(cmd): try: print cmd subprocess.check_output(cmd).strip() except subprocess.CalledProcessError as e: print '!!! error happen(errcode=%d) !!!' % e.returncode @respond_to('(.*)') def talk_to(message, params): print params translator = Translator() j2e = translator.translate(params.replace(' ', '')).text print j2e cmd = ['node', os.path.expanduser('~/NodeJs/google-home-notifier-test/slacktalke.js'), '\"' + j2e + '\"'] _bcc_exec(cmd)


google-home-notifier-testのjs側(slacktalke.jsという名前で呼び出している)

var googlehome = require('./google-home-notifier');
var speech;

if (process.argv.length >= 2) {
    speech = process.argv[2];
} else {
    speech = 'I asm slackbot.';
}

googlehome.device('something', 'en');
googlehome.ip('xx.xx.xx.xx');
googlehome.speed(1.0);
googlehome.notify(speech, function(res) {
  console.log(res);
});


IFTTTは、Google AssistantとSlackをつないで、SlackはDirect Messageで作ったslackbotの名前を指定し、MessageでTextFieldを渡すだけだ。

Google Cast APIを使っているので、nodejsはローカルPCで動くようにせんといかんし、nodejsの実行をパス指定で行っているからslackbotもローカルPCで動かさんといかん。
まあそこら辺は素人なので、詳しい人はうまいことやるだろう。
slackbotをnodejsで動かせるか、google-home-notifierのpython版があれば分けなくてもよいのだが、まあいいや。

2017/11/18

[lmdb]mdb_dbi_close()は通常使わない

久しぶりにGoogle HomeやWindows10以外の話だ。
Cのlmdbで、mdb_drop()してエラーが発生したので悩んでいたのだ。


いま、C言語のlmdbを使っている。
「C言語の」とわざわざ書いたのは、どうもpythonなど他の言語にもAPIがあるようだったからだ。
今回はC言語版しか使っていないので、他については分からない。


困っていたのはmdb_drop()だったのだが、そもそもそれ以前にDB保存されているかどうかも危うかった。
ちょっと、まとめておこう。


lmdbの保存から見ていく。

https://gist.github.com/hirokuma/98b5010f4770267ab730efd3422be982

$ sudo apt install liblmdb-dev
$ gcc -o tst lmdb_drop.c -llmdb
$ rm -rf testdb
$ ./tst
$ mdb_dump -a testdb
VERSION=3
format=bytevalue
database=aaa
type=btree
mapsize=1048576
maxreaders=126
db_pagesize=4096
HEADER=END
  6161616161
  313233
DATA=END

databaseが"aaa"、keyが"aaaaa"で、dataが"123"だから、だいたいこんな感じの出力になるのではなかろうか(これはUbuntu 16.04で実行)。


ただ、77行目の「mdb_dbi_close()」のコメントアウトを外すと、DB保存自体されなくなった。
えー、そうなのー!!
順番が、txnの開始→dbi取得だったので、txnのcommitより前にdbiをcloseしてもよいのだろうと思っていたのだ。

確かに、mdb_dbi_close()の説明にも「Normally unnecessary」と書かれているのだ。
通常は不要=やっといても悪いことはない、という判断だったのだが、そうではないのだろう。


では、ここにもう1つdatabaseを追加する。
コメントアウトしている79~92行のコメントを外すのだ。
mdb_dbi_close()は、さっきの話があるので、生かせないのだ。

そうするとですな、dbiが2つ開くことになってしまい、このまま実行するとL82でassertしてしまうのだ。
どうするかというと、L28の引数を1から2に変更するのだ。
つまり、トランザクションを閉じるまでの間は開いていることになるので、その分のmaxdbsは確保しておきなさい、ということだ。


mdb_drop()がうまくいかなかったのも、同じ理由だ。
commit前にL124でmdb_dbi_close()していたので、削除できていなかったのだ。


分かってしまえば大したことはないのだけど、なかなか気付きにくかった。
「Normally unnecessary」というのは本当にそうだったのだけど、Normalって難しいですな。

2017/11/14

[win10]Cortanaが無効になっていると、Cortanaが出てこない

何を当たり前のことを言っているんだ!と思われるだろう。
私もそう思う。

Windowss Fall Creator Update後の設定画面で、Windows10 Professional版とHome版で違いがあったので、版の違いだろうと思っていたのだ。
しかし、それはCortanaを無効にしているかどうかの差だったのだ!

全然記憶になかったのだが、レジストリエディタで無効にしていたことが分かった。
グループポリシーエディタではそのままだったため、すっかり気を抜いていた。

レジストリを元に戻して再起動すると、「Cortana」が出てきた。

image


これが.Net Framework 3.5インストール失敗事件と関係があるのでは!?と思ったが、そこは関係ないようだった。
ちっ。

2017/11/12

[googlehome]dialogflowを少しだけ使った

意外と私の中で長持ちしているGoogle Home mini。
しゃべるのめんどくさいだろう、と思っていたのだけど、思ったより使っている。
音楽流すのと、タイマーと、目覚ましくらいしか使っていない気もするが・・・。


IFTTTとつないで、しゃべった言葉をslack投稿し、slackbotがそれを読んでTTSに投げ、その結果をcastするしくみだけ作った。
そうすると、作業場にslackbotを立ち上げておくと、家でしゃべったら、それを向こう側でしゃべる、ということが、一応できている。
まあ、同じ場所にいないので、本当にしゃべってるかどうかは確認したことがないのだが・・・。


しかし、どうにもまだるっこしいので、別のやり方も知っておきたい。
Actions on Googleでdialog flowというやつをつかうと、似たようなことができるらしい。
以前はapi.aiと呼んでいたものが、今はdialog flowと呼ぶようになったそうだ。

Actions on Googleでapi.aiを使ってGoogle Homeに何か言わせてみる - Qiita

だいたい、この通りにやると動いてくれた。
最初に試したときは別のサイトを見ていたのだが、どこかわからなくなってしまった。。。



  • App informationの「Pronunciation」に書いた文字が、「xxxと話す」みたいにして始まったときに読み上げられる名前。
  • 「xxxと話す」のxxxは、デフォルトはAssistant app nameになる。デフォルトと書いたけど、変更できるかどうかは知らん。
  • 一度動くようにした後、SAVEで設定を変更しただけではテスト動作に反映されない?
    • Simulatorに行って、「CHANGE VERSION」をすると確実に反映してくれそうだった。


この「xxx」だが、何を指定するかが難しい。
たとえば「じゃくそん」だと反応してくれないが「ジャクソン」だと反応してくれた。
日本語だと、解釈して変換した後の文字列が一致しないとダメな気がする。
英語で試してみたいところだが、あいにく私の英語は日本語レベルでしかしゃべれない。。。


IFTTTのキーワードと同じにしたら、IFTTTの方が先に動作した。
これが必ずなのか、何か設定があるのかはわからん。


あと、これは個人の感想だが、声がいつものGoogle Homeの人ではなく、アプリの人の声になるのだが、ちょっと聞き取りづらい。
会話用の音声というのは難しいのだろうねぇ。


Dialogflowのintegrationにnode.jsがあった。
これを使うと、IFTTT経由でSlackのSlackBot用チャネルに書込み、それによってSlackBotが立ち上がってnode.jsを起動し、そこでgoogle-home-notifierが動く、という中間の部分がいらなくなるんじゃなかろうか、と期待した。

が、書いてあるとおりにやると、node.jsのアプリからDialogflowに問い合わせて結果が返ってくるだけだった。
待つ方のサンプルはあるのだろうか。。。


Dialogflowだけでなく、SDKなんかも使えるようなので、そっちを見に行った方が良いのかもしれんね。

2017/11/05

[win10]Fall Creator Updateの設定画面(Home版)

数日前、Windows10 Fall Creator Update後の、Professional版の設定画面を載せた。
「違いは『検索』くらいですねー」などと書いていたのだが、よく見ると様子が違う。

image

Cortana ... ?

Cortanaで検索できるから、文字だけの違いかもしれんと思ったけれども、中身が違う。
うーむ。

Home版のPCはメーカー製で、Professional版のPCは自作という違いがある。
また、Professional版はOEMのDVDでインストールしている。
もう1台、Windows7からのアップデートを行ったWin10Proがあるので、そっちでもアップデートするとさらに違いが分かるかもしれん。

ふっ、謎多きOSよ。

[zybo]Z7シリーズが出ている

何気なくFPGAマガジンNo.19を見ていると、Zyboの広告が出ていた。
「今さらねぇ」と思ったが、よく見ると「Zybo-Z7」と書いてある。
新しいんだ!


ZYBO Zynq-7000 評価ボード: 目的別 秋月電子通商 電子部品 ネット通販
ZYBO Zynq-7010評価ボード Z7-10 開発環境ソフトライセンス付: 目的別 秋月電子通商 電子部品 ネット通販
ZYBO Zynq-7020評価ボード Z7-20 開発環境ソフトライセンス付: 目的別 秋月電子通商 電子部品 ネット通販

7020が増えたのはわかるが、ぱっと見た目の違いが分からん。。。

Zybo Z7 Migration Guide [Reference.Digilentinc]

VGAがなくなってHDMIが2つ(InputとOutput)に分かれ、RAMが増えて、メモリ速度も上がって、カメラ用のポートが増えた、というところか。
LEDも、RGBになったようだ。

7010と7020の違いもあるし、細かい違いはあるようだが、大ざっぱにはそういうところかな。


Digilentのgithubも更新されている。
https://github.com/Digilent

以前、新しいVivadoに持っていこうとして苦労したが、もしかしたら今だと楽にできるのかもしれん。
いつか試したいところだが、それは今日じゃないのだ。。。
作業が落ち着いたら、落ち着いたらきっと。。。

2017/11/04

[win10]OSのロールバックは、あれこれやる前にやろう

困ったことは続くもので・・・。

Fall Creator UpdateしたWindows10 Professionalであったが、.NET Framework 3.5がインストールできない(Home版はできている)。
それでは困るので、OSを前に戻した。

が、戻す前にいろいろ作業していて、Visual Studio2015 Communityをアンインストールして2017 Communityをインストールしたりしていたのだ。
元に戻したとき、この辺も中途半端に戻されたようで、インストールされたアプリに2017が出てこず、2015が出てきてしまう。

もちろん、実体はないので実行はできないし、アンインストールも失敗する。
アンインストールツールを使って削除させたのだが、今度は2017のインストールが失敗する。。。


どうやら、VC++ 2015のruntimeがインストール済みに見えるようで、それをアンインストールしようとして、でも実体がなくて「ProgramData\Package cache」に入っているmsiファイルを探したが見つからず「パスを教えろ」とダイアログが出てきてしまう。


最終的には、このツールを使った。
プログラムのインストールまたは削除をブロックしている問題を解決する

これを使うと、インストールされていないものもリストに出てくるので、それをアンインストールできるようだ。
アンインストールしているのか、レジストリを調整し直しているだけなのかは、よくわからん。

1回の起動で1つしかアンインストールできないので、ひたすら実行。
そもそもどういう項目名なのかもわからんのだが、Package cacheのフォルダ名に相当するIDが項目にマウスを当てていると表示されるようだったので、それで当たりを付けていった。


まあ、Visual StudioなんかはOSとの関係が深いので、こういう目にあったのかもしれない。
とにかく、フルバックアップを取るのが一番安全だと感じた。
以前は、バックアップなんて余裕がある人がやるものと思っていたのだけど、そんなことはいっていられませんな。。

[win10]Fall Creatorアップデート前のものが別物と扱われる?

image

むう、困った・・・。

2017年10月末にWindows UpdateでFall Creator Updateがインストールされた。
うちには、Windows10 HomeとProfessionalがそれぞれあり、どちらにもインストールされた。


Professionalの方には、.NET Framework 3.5がインストールできないという現象が発生している。
アップデート前はインストールされていて、アップデート後に外して、もう一度インストールしようとしたのだ。
ダメだったのでOSのアップデートを戻して試したのだが、それでもダメだったので、Fall Creatorが原因かどうかははっきりしない。
ダウンロードはしているようだし、けっこう処理はしているように見えるのだが、最後の最後でエラーになるのよねぇ。


最初に載せた画像は、Home版で発生している。
うちはATOK Passportを使っているのだが、Faill Creatorみたいな大きめのアップデートが行われる際はMS-IMEに戻されると同時に、登録情報もいくつか消えてしまうのか、シリアルナンバーの入力を求められてしまう。
それは別によいのだが、オンラインアップデートに項目が出てきて、それをインストールしようとすると画像のようなエラーが発生するのだ。


はっきりしないのだけど、今のFall Creator Updateにはアップデート前にインストールされたものの管理がうまくいっていないような感じがする。
.NET Framework 3.5の方は、アンインストールがうまくいっていないとかか?
Home版ではインストールされているのだが、Cleanup Utilityでも候補に出てこないのだ(出てくるものかどうかはわからんが)。

image


Windows Updateはしたいのだが、Fall Creatorだけ外す、みたいなことはできるんだろうか?
起きてしまったものは仕方ないのだが、次の春にもアップデートが行われるだろうから、そのときに同じ過ちを繰り返したくないのだ。

2017/11/03

[nfc]確定申告でのマイナンバーカード

マイナンバーカードという、個人番号カードをNFC化したものがあるが、そっちで確定申告できるということらしい。

スマホで確定申告可能に 国税庁、iPhone非対応  :日本経済新聞

日経新聞って、技術的なニュースが弱いと思う・・・。
技術系のニュースは的外れな気がするのだが、しょうがないのだろうか。

まあ、私に生活とか法律とかの記事を書けといわれたら、同じようなことを書いてしまうかもしれんので、あしざまに言うことは避けておこう。


いや、タイトルに間違いがあるわけではないのだ。
読んだ範囲では、内容も間違っているわけではない。

ただ「○○自動車が新発売する車では空を飛ぶことができません」みたいな感じで、そもそもそんな機能がないのに「飛べるはずなのに飛べる機能を付けなかった」みたいな感じで読めてしまうのが、よろしくないんじゃなかろうかと思ったのだ。


マイナンバーカードは日本で発行するカードなのだが、その内容は国内規格ではなく、どちらかといえば海外で標準となっているType-Bという形式だ。
パスポートなんかもType-Bだったと思う。

iPhoneが対応していないのは、そういう国際規格のフォーマットは読めなくしているからだ。
読めるのは、NDEFという、NFC Forumが作っている規格のものだけだと思う(持ってないので、よくわからん)。
まあ、iOSはそういうところは攻めないので、Androidで数年かやって問題なさそうだったら採用する、とかじゃなかろうか。
ここら辺は、戦略の違いだろう。


ともかく、今回については、iOSがそういう機能を提供していないから、どうしようもない。
国際規格にすれば大丈夫だろうという目論見だったのかもしれんが、iOSの非公開制に阻まれたのかな。
できるとすれば、日本に限ってそういうiOSにしてしまうとか?


また、読めるだけではダメだろう。
JPKIがあるので、正当性の確認は行うに違いない。
正当性というのは、マイナンバーカードを「うちが発行したものです」と認める作業になろう。

まあ、それくらいやってもらわないと使う方も怖いしね。
普及だけでなく、使い勝手が上がるにもまだまだ時間が必要そうだ。

[win10]Fall Creator Updateの設定画面

アップデートされると項目が変わっているので、メモとして残しておく。


image

Home版は、一番最後の「検索」がなかったような気がする(これはProfessional版)。


大きめのアップデートが行われると、設定自体がいくつか元に戻されるのが困る。

  • 高速スタートアップが有効に戻る
  • Alt+TABがスクリーンショットタイプに戻る(アイコンにする
  • MS-IMEが復活して、ATOKを初回使う際にシリアルナンバーが必要になる
  • システムフォントがYuゴシックに戻る

他にもあるかもしれんが、数が多くて気付かんね。

[win10]Fall Creatorになったあと.Net Framework 3.5が入らん→直った

(注意:うちでの解決は、一番下に書いています)

image

これを書いているのが2017/11/03だから、Fall Creator Updateになったのは10月末だったと思う。
最初は安定しなさそうだから、安定連絡を待ってからインストールしようと思っていたのだが、Windows Updateで普通にインストールされてしまった・・・。


アップデートして気付いたのだが、Atok Padが起動しなくなった。
Twitterで「.NET Framework 3.5をインストールし直すとよくなった」という人がいたので、一度削除して、もう一度インストールしようとしたところ、出てきたのが上の画面だ。


下のリンク先はWSLのものだが似た現象だし、この人も.NET 3.5で起きているようだ。
https://github.com/Microsoft/WSL/issues/2582#issuecomment-339568847


ダイアログからWindows Updateの修復ツールっぽいものに連れられていったのでやってみたが、症状が変わらん。
.NET Frameworkの修復ツールらしきものもあったが、変わらん。

あとは、こちらにあるアンインストールとインストールを試すべきか。。。
.NET Framework のアンインストール方法 – Visual Studio サポート チーム blog


いろいろ考えたが、元のバージョンに戻すことにした。
今なら、手痛くないだろう。

・・・戻したが、.NET Framework 3.5はインストールできなかった。
バージョンを上げる前からダメだったのか?
あるいは、上げてから削除するところがダメだったのか?
もはや、理由は分からん。


あきらめて、バックアップから戻すことにした。
今回はEase Backupでだいたい毎週バックアップしているのだ。ふふん。
まあ、そういうバックアップがあるから、バージョンが上がっても戻せばよかろうと思っていたのだよ。


・・・あっ、システムドライブだけバックアップ対象に入れるの忘れてる!!!
そんなばかな・・・。
今まではデータのバックアップしか取っていなかったということなのか。。。


こうなると、もうできるのはバージョンを上げて.NET Framework 3.5がインストールできるようになるのを待つだけだ。
まさか、こんな終わり方になろうとは思わんかったよ。

「やよいの青色申告」がFramework 3.5がないと動かないので、今回の月末処理はあきらめるとしても、確定申告までには動いてくれないと困るのだよなぁ。


2017/11/08

0x80070781は、まだダメ。
dismコマンドでインストールしたときのログにCBS.logにエラーを吐いているようだった。

Overlap: Duplicate ownership for directory

こういうのがずらずら出ている。

しかし、sfcでスキャンしても何も出てこないのだ。
同じような作業をしていたから、どこかで修復されて、PCの再起動で治ったりするんだろうか?


2017/11/18

あれから毎日0x80070781を直すために試しているが、どれもダメだ。

ショートカットが切れたのが残っているせいかもしれんと思って、そういうツールで消してもみた。
Microsoftのfixitにあるインストール・アンインストール不具合用ツールで.NET系のものをアンインストールもしてみた。
Visual Studio2017をインストーラで.NET3.5開発をインストールしてみようともしてみた。
どれも効果が無いか、インストールができないかで終わった。


当時を思い出すと、Fall Creator Update前は.NET3.5をインストールしていて、そこからアンインストールまではできたのよね。
ただ、ATOK Padというツールが動かないので、一度アンインストールしてインストールし直そうとしたところ、今回の現象になったのだ。
同じ並びにある.NET4.7は大丈夫だったし、Media Playerも大丈夫だった。
今のところ、.NET3.5だけ失敗するのだ。。。


もう考えても仕方ないので、システムのフルバックアップを取って、Fall Creator UpdateのISOファイルから再インストールを行っている(これは別のPCから書いている)。
「回復」の方も考えたのだが、今インストールされているアプリは全部削除されます、と言われると、さすがに悩んでしまったのだ。
今回も「再インストール」と書いたが、特にそういう項目があるわけではなく、マウントすると入っているsetup.exeを実行しただけだ。
今、インストールが行われている。

心配しているのは、このインストールによって別の場所に新しくWindowsがインストールされやしないだろうか、ということだ。
ハードディスクが複数台あるので、そっち側にインストールされたりとか。


終わった。
そんなに時間はかからなかった。
うちはWindows Firewall Controlというアプリを使っているのだが、ネットワークは切断したままにしていて、それが有効なまま起動した。
だから、そういう設定も残ったままらしい。

デスクトップなんかも、前と同じように見える。
ATOKのシリアルナンバーを求められたから、何かしら設定は変わっているようだ。
ではさっそく、.NET3.5のインストールを行う。
Windows Updateに接続するかどうか確認されたので、OK。
ダウンロードが始まり・・・終わった。
そして変更を適用して・・・プログレスバーが進んでいって・・・・

ダメだった。
0x80070781で終わった。


こういうエラー番号でネット検索すると、Microsoftではないページで修復ツールっぽいのが見つかることがあるけど、ああいうのは試していない。
さすがに危険だろう。

このエラーは発生する人が少ないのか、あまり引っかからないのだ。
なんとなく、英語圏ではない人の記事が多いように思う。
まあ、Microsoftの検索でも番号は出てこないし、仕方ないのかもしれん。

image


Visual Stucio 2017 communityもインストールに警告が出る。

リターン コード: 1603
リターン コードの詳細: インストール中に致命的なエラーが発生しました。
メッセージ ID: 1714
メッセージの詳細: The older version of Microsoft Portable Library Multi-Targeting Pack Language Pack - enu cannot be removed.  Contact your technical support group. 

これかな?
https://developercommunity.visualstudio.com/content/problem/32202/vs2017-installation-error.html

解決していないようだ。
私のところでは、.NET3.5を含めなくてもこの警告が出るので、関係は無いのかもしれん。
インストール・アンインストール修復ツールでMulti-Targetingのものを修復しようとしたが、4.5.1 Multi-Targeting Packと4.5.2 Multi-Targeting Packは失敗してしまう。
ネットでこれが出てきたので使ったら消えたけど、大丈夫だろうか。。。
https://github.com/tsasioglu/Total-Uninstaller
かといって、このツールを使って失敗するものがインストール・アンインストール修復ツールでうまくいくこともあるし、なんだかわからんな。
しかし、VS2017の警告に関係したのは4.5.1でも4.5.2でもなく、さらにリストの下にあったPortableのMulti-Targetingであった。
それをアンインストールすると、警告が出なくなった。
.NET3.5開発もインストールできたのだが、プロジェクトを作成しても.Net Frameworkの選択に3.5は出てこない・・・。


うーん、クリーンインストールまで行かずに、アプリは残す方向で、もうちょっと危険な修正方法はないだろうか。
ネットにあまり出てこないということは、通常であればうまく行っていると思うので、クリーンインストールすれば解決できるだろうけれども、そこから元と同じ環境に戻すまでの時間がかかりすぎる。


2017/11/23

まだまだ解決していない。

今日は、イベントビューアを見てみた。

image

むう、なんか出てる。。。

この件はたくさん検索に引っかかった。
どうも、バックアップするときに権限がないとかなんとかで出てくるようだが、見た感じはユーザの操作で起きたというよりもアップデートか何かで生じたりしたのかなぁ。

イベント 513, CAPI2 のエラーログが記録される

たくさん引っかかるのだが、うちのは試してもダメだった。
コマンドの出力は変化しているから、処理自体はできていると思うのだが、インストールすると必ず出てくる。
まあ、バックアップをやろうとしているわけじゃないし、Detailが違うから、原因が違うということか。
いくつか同じ件で見つかり、それぞれsdsetに与える引数が違い、どれもダメだった。。。


では、DetailがFindFirstFileのエラーを探してみよう。
Access Deniedだからちょっと違うけど、まだましかも。
Windows Server Backup - Cannot find System Writer SERVER 2012

最初の人は、解決したらしい。
レジストリの方は、NT SERVICEにパーミッションをフルで与えるとなってたけど、うちではNT SERVICEが見つからなかった。。。
そこはスルーして、次がC:\Windows\Microsoft.NETを触っているので、期待できそうだ。
その中にあるFrameworkやFramework64にあるテンポラリっぽいファイルを削除するらしい。
Frameworkの方にはフォルダがバージョンごとにあったが、そもそもv3.5はインストールできていないので無いし、Framework64の方はそもそもフォルダがほとんど無い。
1041、とかいうフォルダへのショートカットがあったのでたどろうとしたが、自分自身へのショートカットになっていてどこにも行けない。。。
こんなショートカットは削除だ。

この状態でインストールさせたところ・・・・できた!
やよいの青色申告も起動したぞ!!
Home版では起動しないAtokPadも動く!


はああああ、誰だよ、こんなところにショートカット作ったの・・・。
作成日時が2017/10/29だから、Fall Creator Updateされた日が怪しいのだが、確証はないな。

2017/11/02

[googlehome]IFTTTのThatをslackbotで受けとる

何をしたいのかだんだんわからなくなってきた・・・。

前回、IFTTTで、「This: Google Assitant」「That: Slack」にして、しゃべった内容をSlackに投稿するところまでは動いた。
しかし、slackbotはそれを読み込めず、例外が発生していた。


ログを出しながら見ていくと、msg['attachments'][0]['pretext']というところに文言が入っているようだった。

あまり深く考えず、pythonのslackbotを変更して、pretextを読むようにした。
https://github.com/hirokuma/slackbot/commit/c04aa038fb0c60d855adb5c4b8aefb6a777feba3


うん、これで@respond_toのparamsに文字列が入るようになって、slackbotも起動し、google-home-notifierを使ってしゃべってくれるようになった。

意味があるのかどうかはわからんが、

    1. 手元にあるGoogle Homeに話しかける
    2. Google Assistantが受け取る
    3. IFTTT経由でSlackが受け取って投稿
    4. それを相手側のサーバにあるslackbotが@respond_toで読込む
    5. nodejsでgoogle-home-notifierを使って文字列を送る
    6. 相手側のGoogle Homeがキャストしてしゃべる

という動作ができるようになった。

あとは、ここに翻訳APIを上手に挟めば、機械翻訳した言葉を相手に伝えることができそうな気がする。
ちょっと調べたけど、翻訳APIは有料サービスのところが多いのですな。

[googlehome]初めてのIFTTT

どうやら、IFTTTというサービスを使えば、Google Homeに音声コマンドを割り当てられるらしいということで、やってみた。


やり方は、いろいろなサイトに書かれているので、ここに書くまでもあるまい。
INPUTとOUTPUTは、ThisとThatという呼び方らしく、Google AssistantをThisに割り当てるそうだ。
まあ、Google Homeに話しかけても「はい、Google Assitantです」としゃべることがあるので、そうなのだろう。


今回は、ThatをSlackにした。
Slackの方には、Slackbotを立てていて、そこからnodejsのgoogle-home-notifierを呼び出せるようにしている。
そうすることで、

Google Home → Google Assistant → (IFTTT) → Slack → Slackbot → google-home-notifier → Google Home

という流れができる。

あー、回りくどい。。。


一番簡単そうな、しゃべった内容をslackbotに書込み、そのテキストをGoogle Homeに読み上げてもらうことにした。
たぶん、動いていると思う。
「たぶん」なのは、動いている先が職場に置いてある方のGoogle Homeなので、家で確認出来るのはSlackbotに通知されるところまでだからだ。
すまん、作業場にいる人々よ・・・。


難しいのは、Google Assitantに読み取ってもらうコマンドを作る部分。
「これなら聞き取れるだろう」と思う言葉を使っているのだけど、なかなかうまく読み取ってくれない。

AndroidアプリのAlloをインストールして、私がしゃべった内容をどう解釈しているのかを確認しながら進めた。
IFTTTの設定を「Japanese」にしているけど、キーワードのところはAlloで漢字変換している文字を書くべきなんだろうか?


いろいろ疑問はあるが、まあまあ認識してくれるようになったからよしとしよう。
なんとなくだが、Google HomeにGoogle Homeが理解できる指示を出すときの方が、Alloで認識させた場合よりも物わかりがよいように思う。
ちょっとしくみが違うのだろうか。


後日談


実際に、作業場に行って、動作状況を確認した。
・・・ダメだった。

Slackには投稿されているのだけど、slackbotがexceptionを起こしてしまうのだ。
slackbotの中の方で、なんだかよくわからない。
KeyErrorで'text'などと出ているのだけど、なんだろう?