Range#Value でとってきた配列のReDim
2セル以上の範囲を表すRangeオブジェクトのValueは (行, 列)の二次元配列になる。
これをReDimしようとしたら「インデックスが有効範囲にありません」のエラー。
二次元配列は最後の次元の個数しか変えられない制約があるが、変えようとしているのはまさにその最後の次元の個数なんだけど……
とさんざん首をひねったが、要は個数指定をきちんと(1 to r, 1 to c)と「1 to ~」の形式できちんと書く必要がある、ということだった。
(素で終わりの添え字だけ書くと、0 to ~ という解釈で処理される)
VBAの関数がオブジェクトを返してくるか値を返してくるか分からん場合
VBAでは
・オブジェクトの代入は Set ステートメントで行う
・値の代入はLet ステートメントで行う(ただし「Let」は省略可)
となっているが、関数が状況によってオブジェクトを返したり値を返したりする場合
「実行してみるまで分からないのに、Setが要るかどうかはコードを書く時点で決めておかなくてはいけない」
という理不尽が発生するorz
(そもそもそんな行儀の悪い関数は窓から投げ捨てろという話もあるが
そうもいかない場合もあり……)
が、プロシージャの引数に関しては、そのあたりを気にする必要がないので
例えばこんな感じでラップしてやるとよい。
' 第一引数に関数の呼び出し式、第二引数に関数の戻り値を格納したい変数を渡す Sub WrappingResult(vResult As Variant, ByRef vBox As Variant) If IsObject(vResult) Then Set vBox = vResult Else vBox = vResult End If End Sub
てなアイデアをTeratailで教えていただきました。感謝。
teratail.com
Roundcube Mailで無限リダイレクトを食らった話
試しにインストールしてみてconfigもできて、いざアクセスしてみると
「ERR_TOO_MANY_REDIRECTS」……ってどういうことなの……
で、調べたところ、default.inc.phpで「force_https」をtrueに設定していた場合、
HTTPSでのアクセスを確認できるまでhttpsでリダイレクトする。
それを判定しているのがrcube_utils::https_check()なのだが、
これが冒頭で
if (!empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) != 'off') { return true; }
なーんてやってくれている。このあたりの変数を設定してくれないサーバだと無間地獄に落ちると。
とりあえず、force_httpsの設定をfalseにして無事ログイン画面にたどり着いた。
(別にこの設定をfalseにしてもhttpsでのアクセスは問題なく可能。)
WordPressのパスワードをDBで直接いぢらんならんことになったとき
まあね、普通そんなことないっすよねorz
業者に丸投げしてたサイトを自社で更新するからって契約切って
実は管理アカウントの情報もらってなくて、
問い合わせたら「担当者辞めたから分かりません(てめーとは縁が切れてんだよクソが)」なんて言われたときくらいですよねーorz
愚痴はともかく本題。テーブルがwp_users(かそのバリエ)というところまでは探り当てたとして、問題はuser_passに何を入れればいいか。
古い情報だとMD5でおkなんて書いてるとこもあるが、少なくとも現在はPhPassライブラリが使われているのでそのお作法でハッシュを生成しないといけない。
ライブラリ自体はwp-include/class-phpass.php に配置されているので
require 'wp-includes/class-phpass.php';
// ソースにgrep掛けて実例確認したら引数はこうなってた
$x = new PasswordHash(8, true);
echo $x->HashPassword('生パスワード');
とかして表示させるとよろし。
ちなみに、ハッシュ生成のはずなんだが実行するたびに結果が変わったりする。
それでもちゃんと生パスワードとの一致判定には通るので慌てないこと。
Ubuntuが再起動要求してきたときの原因
ログインするなり
*** システムの再起動が必要です ***
って言われた場合に、何が再起動を要求してるのか、の情報。
/var/run/reboot-required.pkgs にある。(普通にcatすれば読める)
まあ分かったからと言ってできることは大概素直に再起動しかないんだけど。
xfce4でメニューが出ない場合
例によって受け売りながら
http://mw.hatenablog.jp/entry/20140816/1408155195
$ xfce4-panel --quit
$ pkill xfconfd
$ xfce4-panel --disable-wm-check &
VirtualBox Guest Additionsの別カーネル用ビルドしたいとき
ビルド中に表示はされるんだがいっつも忘れるんでorz
VirtualBox Guest Additions:
To build modules for other installed kernels, run
/sbin/rcvboxadd quicksetup <version>
or
/sbin/rcvboxadd quicksetup all