追記

野良犬日記 2.1

RDF/RSS
この日記の検索

最近のツッコミ:


2018-12-12 (Wed) [長年日記]

_ Windows でショートカット(.lnk)ファイルに対する「ファイルの場所を開く」がエラーになっていた

よく覚えていないけど「関連付けがない」みたいなエラーだった。

結局レジストリがおかしくなっていたみたいで、 HKEY_CLASSES_ROOT\Folder\shellの中身を(既定も)削除 すると直った。

問題の原因

よくわからないけど、自作インストーラが変なキーを入れていたのかもしれない。既定の値が自作ツールっぽい名前になっていた。

解決に至るまで

セーフモードで sfc /scannow してもダメ、CCleaner でレジストリをチェックしてもダメ、MS の diag ツールも意味なしだった。

その MS 純正ツールが勝手にゴミ箱を空にしてくれたので、あとで戻そうと思っていたファイルが永遠に失われた。


2018-08-19 (Sun) Google フォームを Google スプレッドシートに反映するときのお節介を回避 [長年日記]

_ 軽く検索しても見つからなかったのでメモ

_ Google フォームに入力があると、スプレッドシート側で手作業が必要になることがある

たとえば、入力が一つだけあるフォームの結果をシート1にリンクしている場合、シート1はこんな感じになってる。

TimestampOK?
19700101000000Yes

これを別のシートから

='シート1'!A2='シート1'!B2
='シート1'!A3='シート1'!B3

というように参照して、次の入力 (A3 / B3) に備えてあるとき、値は

19700101000000Yes
  

となっているはず。 ここでフォームに二つめの入力 (行3) が来ると、そのシートは

='シート1'!A2='シート1'!B2
='シート1'!A4='シート1'!B4

に書き変えられてしまう。自動的に入力を反映して

19700101000000Yes
20180819153000No

になってほしかったのに、

19700101000000Yes
  

のままだということ。

つまり、シート1側の認識としては、それまで A3 / B3 だった行に最新のフォーム入力が入るのではなく、行2 と行3 の間に新しい行を挿入して (A3 / B3 を A4 / B4 に移動して) から、その挿入された新しい A3 / B3 に入力しているらしい。

でも自動で入力を反映したいんです

という場合に、スマートな方法があるのかどうか分からない。

とりあえずは INDIRECT でも使えばいいかな。

='シート1'!A2='シート1'!B2
='シート1'!A3='シート1'!B3

ではなく

=INDIRECT("'シート1'!A2")=INDIRECT("'シート1'!B2")
=INDIRECT("'シート1'!A3")=INDIRECT("'シート1'!B3")

にしてしまうとか。

それはあまりにもアホすぎるというのであれば

=INDIRECT("'シート1'!R" & ROW()+1 & "C" & COLUMN(), FALSE)=INDIRECT("'シート1'!R" & ROW()+1 & "C" & COLUMN(), FALSE)
=INDIRECT("'シート1'!R" & ROW()+1 & "C" & COLUMN(), FALSE)=INDIRECT("'シート1'!R" & ROW()+1 & "C" & COLUMN(), FALSE)

とでも何でも、好きなようにすればいい。(上記の例は実際に試してないので、バグってるかもしれない)

セル指定を文字列にすることによって、アプリ側から認識できないようにしているわけだから、とうぜん副作用として不便になるわけで、できるだけ避けたいことではあるが。


2018-04-08 (Sun) [長年日記]

_ ハンドドライヤって汚いかもしれないんだね

slashdot記事でも「そんなの前から知ってた」っていう意見が多いみたい。でも紙は補充処理しなきゃいけないからな~


2017-07-01 (Sat) [長年日記]

_ [obsd][sec]みんな違って、みんないい - カーネルのランダム化

OpenBSD は kernel relinking により、(ほぼ) すべてのカーネルが別個のアドレス構成を持つようになりました。

この変更の理由は以前 KARL という題で投稿されました。 メモリ割り当てをランダムにしたほうが良いということは既に常識です。 OpenBSD は ASLR に取り組んできました。 しかしカーネルは常に同じです。 OpenBSD は 6か月ごとのリリースなので、stable リリースをインストールする人は基本的に 6か月間、全員が同じカーネルを使い、同じアドレス空間を持っています (カーネルに関しては)。これはイヤですね。*1

その解決策として、毎回インストール or アップグレード or 起動 or 'make install' するたび、世界にひとつだけのカーネルを作ることにしたわけです。

起動に必要な部分は固定ですが、それ以外はランダムなギャップとランダムな順番でリンクし直されます。固定部分も、いったん起動してしまえば不要なので unmap あるいは trash されます。こうして、ひとつリークがあっても他の情報には結びつかないようになりました。

これは重要なセキュリティ機能とはいえ、これだけのために base セットへ cc を入れるのもイヤなので、リンクのためには ld の linkscript 機能を使ったそうです。ここらへん、私は実装を見ていないので何ともわかりません。

デバッグなどのために、この機能を無効にしたい場合は、カーネルを make install ではなく cp で持ってくることで、勝手に再リンクされなくなるそうです。

いやぁ、Theo が 5年近くも (誰かに押しつけようとして) 着手できなかったというだけあって、なんとも危険な香りのする仕組みですが、どうなんでしょうか。スクリプトと ld を使っているということから、今後のリグレッションも心配です。これだけ苦労しても、普通のユーザには一切、目に見える違いがないというのもすごいです。 でも、本当に OpenBSD のカーネルを攻撃しようとする人にとって面倒なことになりそうだというのもわかります。

7/7 追記: Slashdot に記事が来てた。 https://tech.slashdot.org/story/17/07/05/2327234/openbsd-will-get-unique-kernels-on-each-reboot

*1 ちなみに KASLR については grsecurity による批判 (日本語訳?) がありますが、そこで提示されている問題点も今回の relinking によってかなり対処されるように見えますね


2017-05-16 (Tue) [長年日記]

_ Windows 10 にして画面の明るさが変更できなくなってた

image これもレジストリで FeatureTestControl のビットを立てて 0xffff にしろとか書いてあるのを見つけたけど意味なかった。

モニタとかグラフィック関係のドライバを入れ直したりしても意味なかった。 もしかすると勝手にアップデートされるせいかもしれないけど、知らない。

輝度だけ変えた電源プランを用意して、 powercfg -l で GUID を確認し、 ワンクリックで powercfg -setactive するようにした。 これで十分。

ショートカットキーというのが何かは知らないけど、今のところ効いてないみたい。


2002|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|10|11|12|
2011|02|04|05|06|07|08|09|10|11|12|
2012|01|03|04|05|06|09|11|12|
2013|02|03|09|10|11|
2014|02|03|04|06|09|
2015|11|
2016|01|04|09|10|
2017|04|05|07|
2018|04|08|12|