役に立ちそうもないTips移転版

俺得なTipsを書き連ねるだけのブログ。

CentOS7を一時的にCUIで起動したい場合

ちょこちょこ必要になるのに割と検索で引っかからないのでorz

1. BIOS画面(VirtualBoxだとVBoxのタイトル画面)が消えるあたりで方向キー↓連打
2. GRUBの画面に入るので目的のカーネルに合わせて e
3. linuxXX/vmlinuz-X.XX~の行のラストに以下を追加
systemd.unit=multi-user.target ※テキストモードの場合
systemd.unit=graphical.target ※GUIモードの場合

4. Ctrl+Xで起動
なおここではたぶんUSキーボードレイアウトなので注意。具体的には=はShift+-じゃ出ねえ。

VBAのCollectionの罠

Collectionはキーを指定して値を追加するMap的な使い方もできるが、この「キー」の一致判定に癖がある。
どうも全角半角、大文字小文字、ひらがなカタカナの差異はすべて無視してくれるようだ。
従って、

' Collection#Addでキーを指定する場合は第2引数
c.Add 1, "ほげ"
c.Add 2, "ホゲ" ' 実行時エラー457: このキーは既にこのコレクションの要素に割り当てられています。

はキー重複のエラーになる。うーんこの。
(Word2013、Excel2013で確認)
Scripting.Dictionaryだとこれらは区別される。

IMAPを(わりと)直接叩くときの備忘録

IMAP searchの
・日付は d-M-yyyy (MはJan、Feb、……Dec)
・文字列検索の場合日本語もそのまま(ISO-2022-JPにしたりbase64エンコードしたりしなくていい)
 ただしRubyのNet::IMAPの場合、ライブラリの都合で検索文字列はforce_encoding('ASCII-8BIT')つけとく

 あと、RubyのNet::IMAPでちまちま叩くときのボイラープレート

require 'net/imap'
imap = Net::IMAP.new(SERVER, 143)
# よく叩くサーバがドメイン乗せただけの連鯖なのでorz
imap.starttls({ :verify_mode => OpenSSL::SSL::VERIFY_NONE })
imap.authenticate('PLAIN', mail, pass)
# いきなりいじくるならselectでおk
imap.examine('INBOX')

VBScriptのRegExp SubMatchesの罠

VBAで気軽に使える正規表現ライブラリなんだが、SubMatchesコレクションにはどうも変な癖がある模様。
正規表現の()内が、「全体がマッチしたからと言ってマッチするかどうか分からない」(0or1の出現とか)場合、その部分に相当するSubMatchesの要素は
空文字列ではなく、ヌルポインタ(VBAの世界だとvbNullString)が返ってくるらしい。
(で、これをSQLiteへ突っ込もうとするとNOT NULL制約に引っかかるという……VBAのラッパがStrPtr()の値をSQLiteへ渡してて、
SQLite側では「ヌルポインタをTEXTにバインドした場合はNULL値のバインドとして扱う」という仕様なもんだからorz)
ということでそんな正規表現書いてSubMatchesを取る場合はとりあえず空文字列を結合しておくのが無難。

VirtualBoxでUbuntuを漫然と使ってると死ぬ(主に/bootが)

Ubuntu(てかDebian?)はカーネルをアップデートしても古いのが残るんで適宜消さないと/bootが埋まる。
というのは知ってて「あー/boot別パーティションに分けるんじゃなかったorz 」と思いながら消してたんだが……

なぜか/boot以下にいつの間にか復活してるinitrd.img-(apt-get purgeしたはずのカーネルども)。

消しても消してもなぜか復活するんだがどういうことなの……と思っていたら、
VBoxLinuxAdditions.run スクリプトを見てようやく分かった。

/lib/modules/* もきっちり消していかないとそれ見てinitrd.img-うんたらを再生成してくれんのなorz
これでもう「/bootが一杯でカーネルアップデートできんぞー」と言われることもない……といいなorz

(追記)
apt autoremove だと/lib/modules/* 以下も面倒見てくれるっぽいので安心。
……と思っていたのだが
なぜかそれでもapt-get upgradeのとき(VBox関係なく?) initrd.imgの亡霊が復活してくることがある。
(それも、「/lib/modules以下のファイルないでー」と逐一文句垂れながら)
結局
Ubuntuで古いバージョンのKernelイメージを削除する方法 - Qiita
こちらの最終手段、

(先に/boot下のinitrd.imgの亡霊をrm -f)
$ sudo apt-get -f install
$ sudo apt-get autoremove
(そして再起動)

……でねじ伏せた。どうなってんのさ一体。

(さらに追記)
どうやら原因はともかく理由は分かったかも。
http://unix.stackexchange.com/questions/274115/update-initramfs-selects-wrong-kernel
> Check /var/lib/initramfs-tools/ to see if it has the wrong kernel version:
そんなところにorz
ここにあった古いバージョンの名前のファイルを消したら一応解決。
ただ、問題はなんでそこに古いバージョンの名前のファイルが延々残るのかだが。

FuelPHPのデプロイ時にうっかり

開発環境でどうやら動くようになったんでよっしゃデプロイや、と思ったら
デプロイ先サーバで.htaccessが制限されまくってるのを忘れてて

mod_rewriteとかあったらそれだけで500吐く→assetsにもあんのな.htaccess orz おかげでCSS読みに行くだけで500吐かれたわorz
・どうもDBつながらんと思ったら
「本番環境でSetEnvできんから開発環境でSetEnvしてDEVELOPにすることにしてデフォルトPRODUCTにしとけ」
と、開発環境に置いた.htaccessまでアップロードしてた上にデフォルトDEVELOPのままにしてたorz
(なのでDEVELOPのDB設定見に行ってたorz)

という多重おまぬけ。

Evernoteのステータスページ

今朝がた(日本時間)落ちてたんでどーなっとんだと探し回ってようやく見つけたorz
なお太平洋時間(-0800(PST))で表示されてるんで、日本時間(+0900(JST))にするには1日進めた上で+5時間すれば合う。(ただしサマータイムェ……)

http://status.evernote.com/