かなキーでGoogle日本語入力をアクティブにする設定(KeyRemap4MacBook使用)

他の方法があるのかもしれないけど。
かなキーを「Shift + Control +J」に変更

<?xml version="1.0"?>
<root>
    <item>
        <name> KANA TO Google Input</name>
        <identifier>option.kana_to_google_input</identifire>
        <autogen>--KeyToKey-- KeyCode::JIS_KANA, ModifierFlag::SHIFT_L, ModifierFlag::CONTROL_L, KeyCode::J</autogen>
    </item>
</root>

MS Wordの表の挙動がおかしくなったら(改行しても高さが変わらない時)

自分用メモ。Word 2007、Word2010で。

ワードの表を使用中、ときたま、改行しても表の縦幅が追従して大きくならず、文字が隠れてしまうことがある。
それは、「セルの高さ」が「自動」ではなく「自分で指定」になってしまっているから。*1

修正するには、

  1. 表を選択
  2. 右クリック→表のプロパティ→行タブ
  3. 「高さを指定する」のチェックボックス空にする

これで直ります。

#気づかずにモードを変えてしまってあたふたするという感覚は、Word、Excel使い始めの頃のことを彷彿とさせてくれて懐かしい。気づかずにInsertを触っていて慌ててみたり..

*1:もちろんそうなってしまったのは自分の操作が原因なのだけど、気づかずにこうなってしまうことがたま〜にある

配列内で重複している要素を見つける

自分用メモ。

Rubyで配列から重複したモノ(要素)を抜き出す(Uniqの逆) - それマグで!
上のリンクは一番素直な方法だと思うけど二重ループ。
ソートして隣り合っている要素を比べるという方法を試してみた。

a=[8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 4, 6, 8, 10, 10, 10]
a_sorted = a.sort
p a_sorted.each_with_index.map{|e,i| e==a_sorted[i-1] ? e : nil }.reject{|e| !e}
#=>[2, 4, 6, 8, 8, 10, 10]

いくつ重複しているかもちゃんと分かる。
ソート後の配列の最初と最後を比較しちゃっているけど、まあいいか。


#ありえない凡ミスを2時間ほど晒していたのは秘密.

2012-06-30追記

id:takuya_1stさんからトラックバック返し(?)を頂きました。
あまり大きなデータを念頭に置いていなかったのですが、ソーティングのコストも合わせて考えないといけないですね。
データサイズやデータ配列のパターン(重複が多いのか少ないのかとか)といったことが影響しそう。

よりシンプルな書き方も教えていただいて感謝感謝。

画像直リンクでのリンク切れ or 直リンク禁止 => 自前画像に差し替える

他サーバーからの画像直リンクを禁止するのは、もはや昨今のインターネット情勢に合わなくなっていると思っているのですが、いまだに直リンク禁止のところはあります。自動生成のHTMLで他サイトの画像をはりつけるとき、リンク切れや直リンク禁止に簡単に対応できる方法があったのでメモ。
参考にしたのは
http://allabout.co.jp/gm/gc/24043/

imgにonerror属性を追加するだけ。お手軽。

<img src="画像URL" onerror="this.src='差し替え用の画像'">


ありがたいことに、

画像のイベントハンドラonerrorとonloadはJavaScript1.1から実装されているので JavaScriptが動作する現在のブラウザなら完全に動作すると想定してもよい 安全なテクニックです。

とのこと(上記サイト)

蛇足

今回の記事の内容とは関係無いけれど、imgタグのsrcの中が短縮URLでも画像はきちんと表示される。

さくらインターネットのレンタルサーバーでDIY(?)Dropboxなvboxを使ってみた

環境

Ubuntu 11.10
さくらインターネット レンタルサーバー スタンダードプラン*1
ユーザ名:hoge
ホスト:hoge-host.com

公開鍵でSSHログインできるように設定

SSHでログインする為の関連情報とリンク
さくらのレンタルサーバにSSHでログインしてみた - NAT’s Programming Champloo
を参考に、

ssh-keygen

で鍵を作る。パスフレーズは設定しない。
ローカルの~/.ssh

  • id_rsa
  • id_rsa.pub
  • known_hosts

が生成される。

id_dsa.pubをauthorized_keysとrenameして、サーバー上の~/.sshにアップロードする。*2

サーバー上で~/.sshは700、~/.ssh/authorized_keysは600にする

ためしにログインしてみる

$ssh hoge@hoge-host.com
(中略)
Welcome to FreeBSD!

できたので、すぐにlogout.

フォルダを作成

gitからスクリプトを落としてきて解凍。その中にあるconfig.iniを参考にフォルダなどを作成。

  • (local)~/bin/vboxというフォルダを作り、その中に落としてきたスクリプト一式をコピー。
  • 同期対象として(local)~/VBoxというフォルダを作り、何個かファイルを入れておく。
  • 同期先として(server)~/VBoxというフォルダを作っておく。

書き換えるのはconfig.iniだけでOK
フォルダ構成はお好みでどうぞ。

試しに動かしたところ、let: not foundと怒られる

$sh vboxd.sh

で動かした所

./vboxd.sh: 133: let: not found

が出続ける.

どうやら、Ubuntubashといいつつdashが動いてるらしい。
http://ubuntuforums.org/showthread.php?p=8953947
を参考に、

$sudo dpkg-reconfigure dash

出てきた画面で「いいえ」を選択

リトライ

できた

何に使うか?

できたはいいけど、使い道があまりない。Dropboxも20%くらいしか使ってないからな..

追記

タイトルに「さくらインターネット」といれたわりには、べつにさくらインターネットならではの内容はなくて、
むしろUbuntuのデフォルトシェルがdashということのほうが発見。

*1:ライトだとsshが使えないはず..

*2:authorized_keysが存在しない場合

$DEBUGのときはファイルに変更を加えず標準出力するだけになるようにFileクラスをいじる

if $DEBUG
   class File
      alias_method :original_initialize, :initialize
      alias_method :original_close, :close
      alias_method :original_puts, :puts
      def initialize(file,mode="r")
         if mode.downcase=="r"
            original_initialize(file)
         else
            @filename = file
            STDOUT.puts "--- File.open #{@filename} in mode #{mode} ---"
         end
      end
      def close
         if @filename
            STDOUT.puts "--- File.close #{@filename} ---"
         else
            original_close
         end
      end
      def puts(str)
         if @filename
            STDOUT.puts "--- #{@filename} << #{str}"
         else
            original_puts(str)
         end
      end
   end
end
  • 読み取りモードのとき=>通常通りのFileクラスの挙動
  • それ以外のとき=>new,puts,closeを上書きして、実体のファイルには作用しないようにする