oflow のすべての投稿

Google検索のサムネイルをopen.thumbshots.orgに変えるユーザースクリプト

open.thumbshots.org がまともに画像を表示しなくなったので使えなくなりました。
ということで対応したやつ Part2 の方で。

Googleの検索結果にサムネイルを追加していくユーザースクリプト Part2

過去の修正内容

  • 2012.08.17
    DOMNodeInsertedでdiv#iresを追加するように変わってたので対応
    c49a94fadc
  • 2012.07.11
    httpsじゃない場合もあるので@include増やした
    9df2cc8
  • 2012.06.20
    サムネクリックできるようにリンク追加
    仕様変更に合わせてCSS修正
    6da82c6
  • 2011.11.08
    商品検索などでレビューがあったときサムネイルが表示されてなかったのを修正
  • 2011.11.07
    httpsの場合も有効に
    (画像取得はhttpなので信頼できるサイトの表示はなくなる)
    サイトリンクが付いてる場合のCSSを修正
  • 2011.10.24
    Google Search Number Favicon使用時でもサムネ付くように対応
    AutoPagerize使用時に2ページ目以降サムネ付かなかったのを修正
    NinjaKitのJSLintで怒られないように修正

PHPでInverse FizzBuzz(逆FizzBuzz)問題を問題を考えた

Fizz,Buzzとかのリストから最小で最短のFizzBuzzを出力できる連続数列を返すみたいなやつ。
強引に解いた感じでスマートじゃないけど関数型脳みそだから仕方ない。

中身

<?php
header('Content-Type: text/plain');
// Inverse FizzBuzz
inverseFizzBuzz(array('fizz')); // 3
inverseFizzBuzz(array('buzz')); // 5
inverseFizzBuzz(array('fizz', 'buzz')); // 9,10
inverseFizzBuzz(array('buzz', 'fizz')); // 5,6
inverseFizzBuzz(array('fizz', 'buzz', 'fizz')); // 3,4,5,6
inverseFizzBuzz(array('fizz', 'fizz')); // 6,7,8,9
inverseFizzBuzz(array('fizz', 'fizz', 'buzz')); // 6,7,8,9,10
inverseFizzBuzz(array('fizzbuzz', 'fizz')); // 15,16,17,18
// 解なし
inverseFizzBuzz(array('buzz', 'buzz'));
inverseFizzBuzz(array('buzz', 'fizz', 'buzz'));
inverseFizzBuzz(array('fizz', 'hoge'));
exit;
function inverseFizzBuzz($fb) {
    $values = array();
    for ($n = 1; $n < 101; $n++) {
        if ($fb[0] != n2fb($n)) continue;
        if ($arr = fb2array($fb, $n)) $values[] = $arr;
    }
    print implode(', ', $fb) . ' -> ' . implode(', ', fblen($values)) . "n";
}
function fblen($arr) {
    // 最短のを選ぶ
    if (!count($arr)) return $arr;
    $n = count($arr[0]);
    $ifb = $arr[0];
    foreach ($arr as $value) {
        if (count($value) < $n) {
            $ifb = $value;
            $n = count($value);
        }
    }
    return $ifb;
}
function fb2array($fb, $n) {
    // fizz,buzz,fizzbuzzから配列を得る
    $values = array($n);
    $length = count($fb);
    $fb = array_slice($fb, 1);
    for ($i = 1; $i < $length; $i++) {
        if (!count($fb)) break;
        // 15ぐらい先までで十分
        for ($j = $n + 1, $end = $n + 15; $j <= $end; $j++) {
            if ($j > 100) break;
            $values[] = $j;
            // fizz,buzzの順番が違ったらやめる
            if (n2fb($j) && $fb[0] != n2fb($j)) break;
            if ($fb[0] == n2fb($j)) {
                // fizz,buzz,fizzbuzzのどれかの場合は$fb[0]取り出してまた15先まで見る
                $fb = array_slice($fb, 1);
                $end += 15;
                if (!count($fb)) {
                    // 最小で終わらせる
                    break;
                }
            }
        }
    }
    if (count($fb) > 0) {
        return null;
    } else {
        return $values;
    }
}
function n2fb($n) {
    // 数値からfizzbuzzを得る
    return $n % 15 ? $n % 5 ? $n % 3 ? '' : 'fizz' : 'buzz' : 'fizzbuzz';
}
?>

実行結果

fizz -> 3
buzz -> 5
fizz, buzz -> 9, 10
buzz, fizz -> 5, 6
fizz, buzz, fizz -> 3, 4, 5, 6
fizz, fizz -> 6, 7, 8, 9
fizz, fizz, buzz -> 6, 7, 8, 9, 10
fizzbuzz, fizz -> 15, 16, 17, 18
buzz, buzz -> 
buzz, fizz, buzz -> 
fizz, hoge -> 

宝塚歌劇団 人名辞書 単語ファイル 57期生~98期生

宝塚歌劇団の人名(フルネーム)の単語ファイルを作りました。
1900人分ぐらいありますがWikipediaからコピペして作ってるので間違いがあるかもしれません。
57期生からなのは面倒臭いからです。苗字だけで変換が出来ないのも面d(ry

ATOK(2007以降)用、MS-IME用と用意してますがMacの方は分からないのでどうにかして下さい。
Google IMEでもATOK用ファイルを使用すればインポートできます。

宝塚歌劇団 人名辞書 単語ファイル (ATOK用)

宝塚歌劇団 人名辞書 単語ファイル (MS-IME用)

GitHub
https://github.com/oflow/takarazuka

さくらのレンタルサーバでもGyazoる

GitHub / Gyazo より Server/upload.cgi のみダウンロード。
以下のように編集した。

--- a/upload.cgi
+++ b/upload.cgi
@@ -20,15 +20,15 @@
 if not id or id == "" then
     create_newid = true
 end

 dbm = SDBM.open('db/id',0644)
 dbm[hash] = id
 dbm.close

-File.open("data/#{hash}.png","w").print(imagedata)
+File.open("../#{hash}.png","w").print(imagedata)

 headers = {}
 if create_newid then
     headers = {"X-Gyazo-Id"=>id}
 end

-cgi.out(headers){"http://gyazo.com/#{hash}.png"}
+cgi.out(headers){"http://gyazo.oflow.me/#{hash}.png"}

oflow.me/gyazo/#{hash}.png

gyazo.oflow.me/#{hash}.png
で迷ったけど後者に決定。
Aレコードにサブドメイン追加。

こんな位置関係。
gyazo/hoge/upload.cgi
gyazo/hoge/db/
gyazo/#{hash}.png

Windows環境で動かせるクライアントは gyazowin+を最新のgyazowinのソースとマージした よりダウンロード。

あとはreadme.txtみたら書いてる。

_vimperatorrcでも晒してみるか

" _vimperatorrc
source! ~/_vimperatorrc.local
" vim: set ft=vimperator:

" プラグインパス
set runtimepath=~/vimperator

" https://github.com/vimpr/vimperator-plugins
" _libly.js
" _smooziee.js
" feedSomeKeys_3.js
" googlesuggest.js
" migemo-find.js
" walk-input.js

" https://github.com/oflow/vimperator-plugins/blob/master/copy.js
" copy.js
" (タイトル取得時に選択文字列を優先するようにしてる)

" ウィンドウタイトルの文字列
set titlestring=Firefox

" ページ全体で検索語を強調表示
set hlsearch

" リンクURLをコマンドラインに表示
" 1ならステータスライン
set showstatuslinks=2

" input要素にfocusを奪われないようにする
" set focuscontent

" 補完リストは検索エンジンと履歴
" オートコンプリート関係
" s 検索エンジンのん
" f ローカルファイル
" b ブックマーク
" h 履歴
" l ロケーションバー(ブックマーク、履歴)
" S 検索サジェスト
set complete=sl

" リストに表示する最大数
set maxitems=10

" 検索は大文字小文字を無視する
set ignorecase

" Beepいらない
set visualbell
highlight Bell display:none

" クイックヒントのスタイル
" ●の中に数字
highlight Hint z-index:9999; font-size:10px; color: #fff; text-shadow: 0 1px 0 #000; line-height: 20px; background-color:rgba(0,0,0,0.6); border-width:0px; border-radius: 10px;box-shadow: 0 0 2px rgba(0,0,0, 0.5); padding: 0 0; min-width: 20px; text-indent: -1px;text-align: center; display: inline-block;position:absolute; text-align: cener; vertical-align: middle; font-family: Menlo, Consolas, Monaco, monospace; text-transform: uppercase; margin-top: --7px; margin-left: -7px;

" クイックヒントのリンクの色
highlight HintElem background-color:rgba(240,0,0,0.1);

" クイックヒントのアクティブなリンクの色
highlight HintActive background:rgba(0,0,240,0.3);

" コマンドラインでIMEを自動的にOFFにする
style -name commandline-ime chrome://* #liberator-commandline-command input {ime-mode: inactive;}

" キーマップ
" nmap ノーマルモード
" imap インサートモード
" vmap ビジュアルモード
" cmap コマンドモード
" omap オペレータ待機モード
" mapでなくnoremap使う

" ;とtypoっても安心
map ; :

" ブックマークに追加するの無効
map a <NOP>

" BackSpaceで戻るを無効
map <BS> <NOP>

" 貼り付け無効
noremap p <NOP>
noremap P <NOP>

" 補完候補を上下キーでも選択できるようにする
cnoremap <Up> <S-Tab>
cnoremap <Down> <Tab>

" 上下移動を大きく (5倍)
noremap j 5j
noremap k 5k

" J, Kはページ下端、上端
noremap <S-j> 100%
noremap <S-k> gg

" 右のタブに切り替え
noremap h <C-p>

" 左のタブに切り替え
noremap l <C-n>

" 親ディレクトリに移動j
noremap <S-u> gu

" Windows風なアレ
" <S-Esc>で一時的に無効にして戻す
" Ctrl+a (全選択)
noremap <C-a> <S-Esc><C-a><S-Esc>
inoremap <C-a> <S-Esc><C-a><S-Esc>
cnoremap <C-a> <S-Esc><C-a><S-Esc>
" Ctrl+c (コピー)
noremap <C-c> <S-Esc><C-c><S-Esc>
inoremap <C-c> <S-Esc><C-c><S-Esc>
cnoremap <C-c> <S-Esc><C-c><S-Esc>
" Ctrl+x (カット)
noremap <C-x> <S-Esc><C-x><S-Esc>
inoremap <C-x> <S-Esc><C-x><S-Esc>
cnoremap <C-x> <S-Esc><C-x><S-Esc>
" Ctrl+v (ペースト)
" noremap <C-v> <S-Esc><C-v><S-Esc>
inoremap <C-v> <S-Esc><C-v><S-Esc>
cnoremap <C-v> <S-Esc><C-v><S-Esc>
" Ctrl+z (アンドゥ)
" noremap <C-z> <S-Esc><C-z><S-Esc>
inoremap <C-z> <S-Esc><C-z><S-Esc>
cnoremap <C-z> <S-Esc><C-z><S-Esc>


" <C-S-t>, <C-S-c>でタイトルとURLをコピー
noremap <C-S-t> :copy titleAndURL<CR>
noremap <C-S-c> :copy titleAndURL<CR>

" <C-A-u>でURLをコピー
noremap <C-A-u> :copy URL<CR>

" Google検索(同じタブ)
noremap s :set<Space>complete=s<CR>:open<Space>g<Space>

" Google検索(新規タブ)
" 検索キーワードがgになってる場合
noremap S :set<Space>complete=s<CR>:tabopen<Space>g<Space>

" Amazon検索(新規タブ)
" 検索キーワードがaになってる場合
noremap ga :set<Space>complete=s<CR>:tabopen<Space>a<Space>

" 楽天市場検索(新規タブ)
" 検索キーワードがrになってる場合
noremap gr :set<Space>complete=s<CR>:tabopen<Space>r<Space>

" -- feedSomeKeys_3.js --
" https://github.com/vimpr/vimperator-plugins/raw/master/feedSomeKeys_3.js
command! -nargs=+ lazy autocmd VimperatorEnter .* <args>

" feedly
lazy fmaps -u='www.feedly.com' g h m a e t c d p l s n b n p o v V m s S D e t d c / r ? 1 2 3 4 5 6 7 8 9 <Enter>

" Google Reader
lazy fmaps -u='www.google.(com|co.jp)/reader' -events=vkeypress <Space> j k n p m o s v A r S N P X O gh ga gs gt gu u / ? J K

" Google Reader Full Feed (Greasemonkey)
lazy fmaps -u='www.google.(co.jp|com)/reader' -events=vkeyup z

" Gmail
lazy fmaps -u='mail.google.com/mail' c / j k n p o u e x s r a # [ ] ? gi gs gt gd ga gc
lazy fmaps -u='mail.google.com/mail/.*/[0-9a-f]+$' c / j n k p n j p k o u e x s r a # [ ] ? gi gs gt gd ga gc

" Twitter
lazy fmaps -u='^http://twitter.com/' <Space> . j k ?
lazy fmaps -u='^http://twitter.com/' -events=vkeydown f r t n m gh gr gp gf gm

" -- /feedSomeKeys_3.js --

" -- copy.js --
" https://github.com/oflow/vimperator-plugins/blob/master/copy.js
javascript <<EOM
// この2つしか使わない
liberator.globalVariables.copy_templates = [
  {label: 'titleAndURL', value: '"%TITLE%" %URL%'},
  {label: 'URL',         value: '%URL%'}
];
EOM
" -- /copy.js --

iPod touch 4G買ってJailbreakしたまとめ+α

文鎮になったやつざまぁ

b-mobile Fair
Wi-Fiルータ(docomo BF-01B)に刺して使用。
120日(約4ヶ月)を8350円、1ヶ月にすると2088円なのでパケ放題とかより大幅に安い。
回線はdocomoだけどそこまで早い訳じゃないみたい。
位置情報がおかしくなる事もたまにあるけど安いので許容範囲。
iOS
iOS 5.1.1 Untethered Jailbreak (sn0wbreeze v2.9.6)
sn0wbreeze
iPhone 3GSのときはお手軽具合からredsn0wだった。
ファームウェア作成時に%TMP%か%TEMP%フォルダに800MBぐらいの空き容量が必要。
ispw, iBooty(tethered jailbreak)はデスクトップに勝手に保存される。選ばせろや…
Cydiaアイコンが真っ白だったりSBSettingsインストール後などで2~3回ほどReboot必要だったはず。
Repository
  • http://hitoriblog.com/apt/

    IMEPatcher, SwipeToMoveCursor, etc…

  • http://takami.squares.net/cydia/

    ShutterSoundToggle

  • http://cydia.nexti4hack.com/

    MobileTerminal

  • http://apt.dba-tech.net/beta/

    LockInfo

  • http://cydia.myrepospace.com/ipon3g/

    IMEPmodokiLite

Cydia App
iOS 5.0で以下をインストール。
*は有料App、打ち消しは現在使用してないApp。

  • Action Menu

    アイコンにしてる

  • ActionMenu NowPlaying

    たまに使う

  • afc2add
  • AlbumArt On AppSwitcher

    再生中のやつ表示だけどやめた

  • *App Switcher Brightness

    微妙なのでやめた

  • Bigify

    アイコンラベル削除・少し縮小

  • BytaFont

    Ubuntu Fontに変えてる
    [^_^]とか一部化けてるのはFontForgeで//private/var/mobile/Library/MyFonts/Ubuntu.font/PhoneKeyCaps.ttfを編集

  • Autolock SBSettings
  • CleanStatus

    キャリア名消す, バッテリー%表示してる時に表示消したりするとおかしくなるバグがあった(Fixed 0.9.8.1-1)

  • Direct Control

    マルチタスクバーを開くと先にiPodコントロールが表示される。スワイプするといつもの

  • *Gridlock

    壁紙によっては使う

  • IMEPmodokiLite

    半角カナ入力できるIMEPatcherはiOS5に対応してないので

  • *LockInfo

    ホーム画面にTypography Time, 通知センターの代わりにInfoShade

  • *MarkThatMessage

    xMessagesで同じ機能がある

  • MultBoot

    ホーム画面にRespring, Powerとかのボタン

  • *Multifl0w

    Activatorでホームボタン1回押すのに割り当て

  • MailQuotePatcher4

    iOS 5.0でも使える

  • MobileTerminal
  • NCSettings

    仕事用の3GSにのみインストール

  • No Lockscreen Camera

    ロック画面にカメラは表示したくない

  • NowListening

    これ標準であってもいいぐらい

  • Plugication

    イヤフォン挿したら再生って便利じゃね

  • Remove Background SBSettings

    1.0-6でiOS 5.0対応

  • Remove Recents
  • Rotation Inhibitor

    Direct Controlがあるから使ってない気がする

  • RSS Plugin for LockInfo
  • SBSettings
  • *ScrollingBoard

    ホームボタン2回押しは面倒なので横にスワイプでミュージック
    Activatorとの相性悪いのか今は使ってない

  • ShutterSoundToggle

    音消すだけなら//System/Library/Audio/UISounds/photoShutter.cafをリネームとか

  • SpotRemover

    NoSpotより自然な動作してた

  • SwipeShiftCaret

    SwipeToMoveCursorと同じでiOS5対応

  • Typography Time for LockInfo

    これがしたいだけでLockInfo使ってる

  • Ubuntu Font

    BytaFont用

  • xMessages

    メッセージアプリに連絡先の画像やタイムスタンプ付ける

  • WiFiFoFum

    近くのWi-Fiスポット探す

  • Zephyr

    他のAppの関係で使ってない
    Switcher Delay 0.2secぐらい

  • Zeppelin

    CleanStatusから乗り換えた

IMEPatcher, SwipeToMoveCursorはiOS 5.0未対応

消したりするやつ
別にたいしてかわらん。
//Applications/MobileSafari.app (.lproj, StaticBookmark-*.plist)とか
//private/etc/hosts (主に広告)
//System/Library/LaunchDaemons の以下のアレ

  • com.apple.CrashHousekeeping.plist
  • com.apple.DumpPanic.plist
  • com.apple.MobileInternetSharing.plist
  • com.apple.ReportCrash.DirectoryService.plist
  • com.apple.ReportCrash.Jetsam.plist
  • com.apple.ReportCrash.SafetyNet.plist
  • com.apple.ReportCrash.SimulateCrash.plist
  • com.apple.ReportCrash.StackShot.plist
  • com.apple.ReportCrash.plist
  • com.apple.VoiceOverTouch.plist
  • com.apple.aslmanager.plist
  • com.apple.chud.chum.plist
  • com.apple.chud.pilotfish.plist
  • com.apple.crash_mover.plist
  • com.apple.gamed.plist
  • com.apple.iapd.plist
  • com.apple.mobile.profile_janitor.plist
  • com.apple.powerlog.plist
  • com.apple.racoon.plist
  • com.apple.scrod.plist
  • com.apple.search.appindexexer.plist
  • com.apple.searchd.plist
  • com.apple.syslogd.plist
  • com.apple.voiced.plist

Firefox用のクックパッド レシピ検索プラグイン作った

晩ごはん何にしようか迷ったら具材からまー適当に調べられるので。
たぶん他に作ってる人いるだろうけどググるのすら面倒だし自分で書いた方が早いやって事です。

どうやらこれ、Chromeでも使えるみたい。

クックパッド検索プラグインをインストール

cookpad.xmlの中身はこんなの↓

<?xml version="1.0" encoding="UTF-8"?>
<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>クックパッド</ShortName>
<Description>クックパッド レシピ検索</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16">data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMDAAAzYQECNs0LIV/+Ezl//xQ8gv8OKWn/Awc94QAAM4AAADMPAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMaAQI2xhZBiv8uier/M5n//zOZ//8zmf//M5n//zGS9v8dVqb/BApB5QAAMzsAAAAAAAAAAAAAAAAAADMWAgc92yRswv8sg+L/LIPi/yyD4v8sg+L/LIPi/yyD4v8sg+L/M5f9/y2F5P8IF1H2AAAzOwAAAAAAAAAAAAAztCNovf8lb8j/JCRQ/1FRdP9RUXT/UVF0/1FRdP9RUXT/KytW/yVtxP8zmf//LYXk/wQLQeUAADMPAAAzQBAwc/8zmf//K4Dd/15efv/w8PP/5ubr/+bm6//m5uv/5ubr/4yMo/8eWqr/M5n//zOZ//8dV6f/AAAzgAAAM6Imc8z/M5n//zGS9v8/P2b/eHiT/0ZGa/9GRmv/RkZr/0ZGa/82Nl//GEeS/zOZ//8zmf//MZL2/wMIPeECBjveMpf8/zOZ//8zmf//JCxc////////////////////////////29vi/xEydv8yl/z/M5n//zOZ//8OKWr/BxZQ+jOZ//8zmf//HVeo/xcbS//+/v7///////////////////////n5+v8MDD3/ICVU/xxSoP8zmf//FDyC/wYTTPYzmf//J3TO/01Ncf/5+fr/////////////////////////////////hoae//z8/f9PT3L/J3bQ/xM5f/8BAjbSMZL1/xtRn/+rq7z/////////////////////////////////////////////////oKCz/x1YqP8LIV/+AAAzjSJluf8lbcX/Xl5+//7+/v/+/v7/39/m////////////z8/Z/2VlhP/8/P3/+fn6/0hJbf8jab//AQI2zQAAMyYKHVr7M5f8/xhIkv8pK1f/KCpX/zk6Y//19ff//v7+/25ui/8OK2z/HCJT/xkhVP8eWan/FkGK/wAAM2EAAAAAAAAziRlKlf8zmf//MpT4/zKU+P8hYbT/FyBU/x8jU/8XRY7/M5j+/zOZ//8zmf//JW7G/wECNsYAADMDAAAAAAAAMwUAADOxGUqV/zOX/f8zmf//M5n//zOZ//8zmf//M5n//zOZ//8zmf//I2i9/wIHPdsAADMaAAAAAAAAAAAAAAAAAAAzBQAAM4kKHVr7ImW5/zGS9f8zmf//M5n//zKW/P8mc8z/EDBz/wAAM7QAADMWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzJgAAM40BAjbSBhNM9gcWUPoCBjveAAAzogAAM0AAAAAAAAAAAAAAAAAAAAAA+A8AAOAHAADAAwAAgAEAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAAgAEAAMADAADgBwAA+B8AAA==</Image>
<Url type="text/html" method="GET" template="http://cookpad.com/search/post">
  <Param name="keyword" value="{searchTerms}"/>
</Url>
<SearchForm>http://cookpad.com/</SearchForm>
</SearchPlugin>