roid123's diary

技術系のメモ中心です

As/RとEverythingの連携メモ

これまでWindowsのファイラーはX-Finderを使用していたが,As/Rの方が軽くて安定している気がするので,こちらを使ってみることにした. X-FinderではEverythingによる高速検索を使用するように設定していた.そのため,その設定をAs/Rに乗り換えることにしたが,X-Finderと違って検索しても設定方法が載っているサイトは見つからなかった.

試行錯誤した結果,なんとか設定できたのでその結果を記してみる.

As/RからEverythingを開く設定

As/Rのツール→環境設定→オプションを開き,インターフェイス→コマンド定義より,ユーザー外部コマンドを選ぶ.コマンドを追加し,コマンドラインに次のように記述する.

"C:\Program Files\Everything\Everything.exe" -filename ?NowDir?

説明は "Everythingで検索" とでもしておけばOK. これでID 42501のコマンドがこの操作になるので,あとは自分の好きなショートカットキーからID 42501のコマンドを呼び出せばOK.私は "Ctrl+F" で呼び出すように設定している.

EverythingからAs/Rを開く設定

Asr.exeと同じディレクトリにあるAsrLoad.exeを使用するのがポイント.Everythingを終了させた状態で,Everyting.iniの次の部分を書き換えればOK.

open_folder_path_command=$exec("..\Asr.exeのあるディレクトリ\AsrLoad.exe" "%1")
open_folder_command=$exec("..\Asr.exeのあるディレクトリ\AsrLoad.exe" "%1")

MacBook AirでSMCリセットしたときのメモ

最近はもっぱらksnctfに取り組んでいる.ksnctfはCTFに入門するための基礎知識をつけるのに良い問題が揃っていると思う.

そんなわけでWebアプリケーションのデバッグなどで使用するBurp Suiteを導入していたのだが,ネットワークで新しいプロキシ設定を作ろうとしたときに突然トラックパッドとキーボードが動かなくなった.慌ててUSBの無線マウスとキーボードをつないでみたところ,そちらは何事もなく動作した. しかし一向に本体のトラックパッドとキーボードが動かないため,少し調べてみたところSMC (システム管理コントローラ) をリセットすればよいとのこと.

以下は私が使用しているMacBook Air (mid2011) でのリセットの手順である.

  1. PCをシャットダウンする
  2. 電源アダプタをつなぐ
  3. 「option+shift+control」(すべて左側のキー) を押しながら電源ボタンを押し,同時に離す
  4. 電源ボタンを押して起動する

「キーボードを認識していない (電源ボタンだけ認識する) のにoptionキーとか認識するのか?」と心配したが,無事にリセットできたようで再び認識してくれた.本体のトラックパッド,キーボードが認識しなくなることなどそうそうあることではないと思うが,備忘録の意味も込めて記録に残しておくことにする.

参考
Intel-based Macs:SMC (システム管理コントローラ) のリセット
https://support.apple.com/kb/HT3964?viewlocale=ja_JP

SpaceFM導入メモ

UbuntuにSpaceFMを導入し、デフォルトのファイルマネージャに設定するところまでメモ。 Ubuntu 12.04 64bitにて動作確認。

SpaceFMのインストール

まずはリポジトリを追加してアップデート

sudo add-apt-repository ppa:mati75/spacefm
sudo apt-get update

SpaceFMとudevilをインストール

sudo apt-get install spacefm-gtk3 udevil

udevilはデバイスのマウントなどをできるようにするものらしい。

SpaceFMをデフォルトファイルマネージャに設定

exo-utilsをインストール

sudo apt-get install exo-utils

デフォルトファイルマネージャに設定
1. exo-preferred-applicationsを起動
2. ユーティリティ→ファイルマネージャのプルダウンを選択し、その他を選択
3. /usr/bin/spacefmと入力し、OKを押して閉じる

参考サイト

https://github.com/IgnorantGuru/spacefm/wiki/Debian#ubuntu
https://launchpad.net/~mati75/+archive/spacefm
http://askubuntu.com/questions/84929/how-to-set-up-dolphin-as-default-file-manager

BackTrack5 R3でlibrexが破損している問題について

先日DEFCON 2013 CTF qualsに参加した関係で,BackTrack5 R3を導入した.

インストールは特に問題なく終わり,apt-getでgdbをインストールしようとしたところ,

Bundler::GemspecError: Could not read gem at /var/lib/gems/1.9.2/cache/librex-0.0.68.gem. It may be corrupted.                                                  
An error occurred while installing librex (0.0.68), and Bundler cannot continue.
Make sure that `gem install librex -v '0.0.68'` succeeds before bundling.       
dpkg: error processing beef (--configure):
 subprocess installed post-installation script returned error exit status 5
Setting up se-toolkit (4.2.1-bt0) ...
svn: OPTIONS of 'http://svn.trustedsec.com/social_engineering_toolkit': could not connect to server (http://svn.trustedsec.com)
dpkg: error processing se-toolkit (--configure):
 subprocess installed post-installation script returned error exit status 1
Setting up gdb (7.1-1ubuntu2) ...

Processing triggers for menu ...
Errors were encountered while processing:
 beef
 se-toolkit
E: Sub-process /usr/bin/dpkg returned an error code (1)

というようなエラーが発生し,インストールすることができない.
また, "apt-get update && apt-get upgrade" でアップデートすることもできない.
サジェスト通りに "gem install librex -v '0.0.68'" を実行してみたがこれも上手く行かない.

これでは困ってしまうので色々調べてみたところ,librexをインストールし直せば解決することが分かった.

http://rubygems.org/gems/librex
からlibrex 0.0.68をダウンロードし,ダウンロードしたディレクトリに移動して

gem install --local librex-0.0.68.gem

とすればよい.

SystemStackErrorと出てしまうが,その前に "Successfully installed librex-0.0.68" と表示されていればOK.
"--local" オプションをつけずに "gem install librex" とすると,インストールが上手く行かないので気をつけること.

JavaのDateオブジェクトのtoString()をparseする方法

DateオブジェクトをtoString()すると以下の形式のStringが得られる.

EEE MMM dd HH:mm:ss zzz yyyy

この形式で出力されたStringをparseして再び別のDateオブジェクトとして格納したいと思ったが,
そのままDateFormatでparseしても上手く行かない.

そこで,SimpleDateFormatで次のようにLocale.USで扱えばよい.

SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);

このLocale.USがポイントで,これを指定しないとparseできない.

以上のようにすることで無事parseすることができた.

参考: http://stackoverflow.com/questions/4713825/how-to-parse-output-of-new-date-tostring

Swingメモ

  • 描画に関係なく,時間がかかる処理はSwingWorker (Java SE 6) を使う.
  • JFrame等を実体化した後で,コンポーネントに関わる処理を行う場合は,イベントディスパッチスレッドにやらせるためにinvokeLater()などでやる.
    • invokeAndWait(): 実行を待つ
    • invokeLater(): キューに入れる

SwingWorkerの使い方なども調べていかねば.

mpz_classの変数でgmp.hの関数を使うためのメモ

公式のリファレンスに載っているが,mpz_class::get_mpz_t()関数を使ってmpz_t型に変換してやればよい.
別の話だが,gmpxx.hの関数を使う際にはコンパイル時のオプションに-lgmpxxだけでなく,-lgmpも付けてやる必要がある.