New tweak "InfinityTask"

InfinityTask debut on Cydia Store!

This new tweak feature is...

  • Infinite background task.

  • Add OpenTabBackground++ background task to Safari and Chrome.

  • Add Add to ReadingList background task to SpringBoard for iOS 6+.

  • ■Infinite bgtask and change idle sleep behavior.

    First, this is iOS original task completion and idle sleep behavior mechanism since iOS 4.

    Then below image is InfinityTasktweaked version of one.

    If you lock the device then after 15s, iOS go idle sleepmode for battery life(super power saving mode). Idle sleep mode stoped most HW and SW feature also TCP connection. But many background task required network connection; So system prevent idle sleep mode for background task during it running.

    Although iOS restrict 600sec for battery. InfinityTask unlock that mechanism! You can enable infinite background task one by one apps, that app's background task can prevent your selected time have passed after locking the device. I recommend enable to network connection not required bgtask type apps.

    ■Add OpenTabBackground++ background task to Safari and Chrome.

    Added new background task for Safari and Chrome monitoring clipboard to open url as new tab in background.


    ■Add Add to ReadingList background task to SpringBoard for iOS 6+.

    Said OpenTabBackground++ is background task, so that app must running background. This feature isn't require Safari running in background. When you copy URL to clipboard, automatically add to ReadingList that URL.

    Mac上でiOSバイナリをClassDump

    「あのバージョンのバイナリ(SpringBoardとか)をClassDumpしたいけど稼働してる実機がないなぁ」って時の方法。

    1. vfdecrypt(Intel Mac) をDL。chmod +xして/usr/local/binにでも突っ込むといいでしょう。
    2. DumpしたいバージョンのipswをDL。
    3. ipswをunzipmkdir dmg; unzip hogehoge.ipsw -d dmg; cd dmg
    4. 対象のVFDecrypt keyを調べる。Root Filesystemのやつね。
    5. vfdecrypt -i hogehoge.dmg -k 対象のkey -o output.dmg
    6. output.dmgをマウントしてバイナリをコピる。
    7. class-dumpする。

    以上。

    Teratermのアノ挙動をvimに!

    この記事はVim Advent Calendar 2012の61日目の記事です。
    60日目は@KSuzukiiiさんの「はじめての unite source(unite-tig)」でした。

    最近仕事で使うWindowsでもgvim(kaoriyaさん版)を使用しだしたのですが、コピペまわりで四苦八苦したのでそのあたりの事を書きます。

    Windows gvimでのコピペ事情

    Windowsのgvimですが、Windows標準の<C-c>や<C-v>でのコピペが初期設定ではできません。

    これを実現するにはsource $VIMRUNTIME/mswin.vimを書いてvimrcで有効にすればできるようになります!が、行選択ビジュアルモード<S-v>時に<C-f>や<C-b>で画面移動すると選択が外れるバグがあります。

    これが結構使う動作のため、泣く泣く無効化させてクリップボードの貼り付けは右クリックから行なっていました。

    ある日気づいた!

    gvimで右クリックするといくつかのメニューが出てきますが、クリップボードからの貼り付けにしか使用していない事に気づきました。唐突ですが皆さんはsshクライアントは何を使用していますか?私はMacではTerminal.appでWindowsではTeratermを使っています。

    このTeratermのデフォルト設定に以下の2つの機能があります。

    • 選択した文字列を自動でクリップボードに保存
    • 右クリックするとクリップボードの文字列を挿入

    この2つの機能をなかなか気に入っていまして、右クリックを貼り付けにしか使用していないならTeratermのこの挙動をVimにも設定したところなかなか便利!

    vimrcに追加!

    まずは「選択すると自動でクリップボードに文字列を保存する」設定から。下記の設定でビジュアルモードで選択すると自動でクリップボードに保存されます。(+clipboardでコンパイルされたvimである必要があります)

    " GUI
    set guioptions+=a
    " CUI
    "set clipboard+=autoselect

    次に「右クリックでクリップボードの文字列を挿入」ですが、ノーマルモードとインサートモードの両方でできるようにしました。こちらも*レジスタを利用するのでclipboardが有効なvimが必要です。

    nnoremap <RightMouse> "*p
    inoremap <RightMouse> <C-r><C-o>*

    完成ッ!

    上記の設定でTeraterm風のキーバインドのVimを得られました。エクセルやらでコピーして右クリックでVimに貼り付けッ!今のところこの設定で快適に作業できています。このカスタマイズ性の高さがVimの醍醐味ですね。

    明日の62日目は2回目の@thincaさんです。楽しみです。

    自動retainされないNSMutableSet

    addObjectしてもretainされないNSMutableSetを作る。使い所はグローバル変数のstatic NSMutableSet *でこれを使って特定クラスのオブジェクトを詰め込んでいって、あるタイミングで全インスタンスに対して何か処理をする為。retainさせないのはreleaseタイミングはデフォルトのままにするため。まぁaddObjectしたらすぐにreleaseするのと大差ないんだけどね(その場合もSEGVには注意しないといけない)。

    CFSetCallBacks assignCallbacks = kCFTypeSetCallBacks;
    assignCallbacks.retain = NULL;
    assignCallbacks.release = NULL;
    NSMutableSet *assignSet = (NSMutableSet *)CFSetCreateMutable(kCFAllocatorDefault, 0, &assignCallbacks);

    これで[assignSet addObject:obj];してもobjのretainCountは増えない。解放されたオブジェクトを触るとSEGVになるので、以下のようにaddするオブジェクトのクラスにおけるdeallocの中で外す。

    - (void)dealloc
    {
            if ([assignSet containsObject:self])
                    [assignSet removeObject:self];
            [super dealloc];  // %orig;
    }
    上記のようにdeallocいじらないといけないので、単一のクラスのオブジェクトを詰め込む場合以外ぐらいに留めておくのがよさそう。

    参考 http://decafish.blog.so-net.ne.jp/2010-10-27-1

    シェルスクリプトのファイル内未定義変数を調べる

    どれが外部ファイルで宣言されているのかわからない

    シェルスクリプトでかなりの数の変数を外部ファイルで定義をしているものに出会った時に、どれが外部宣言なのかを調べるために作りました。check.py < sample.shって感じで使います。




    evalで変数展開して組み合わせて使っている変数には対応していません。
    hoge=foo
    fuga=bar
    foobar=yes
    
    eval echo \$$hoge$fuga
    # yes