バックアップし忘れて痛い目にあったりすることがあるので、チェックリスト と バッチ を自分用にメモ書きとして残しておきます。
2月 2015年
Windows で ファイル を バックアップ する バッチ
Windows で バックアップ といえば、 xcopy
を使ったバッチ処理がお手軽で便利だと思います。
ですが…ここでは、xcopy
に限らず robocopy
コマンドでのバックアップも、そのサンプルコードを記載しています。
目次
全件 単純コピー
おそらく一番想像しやすい、基本となる xcopy
の サンプルコード です。
同じ場所にバックアップするのであれば、更新分(差分)のみ処理されます。
一応補足ですが、"更新ファイルのみ"とはいえ、初回はすべてバックアップされ、以降は差分のみバックアップ(上書き)されるコードになります。
注意点は、バックアップ元でファイル削除しても、バックアップ先は削除されない点です。
完全に同じ状況にしたい場合、ミラーリング を検討してください。
@echo off cd /d "%~dp0" rem ---------------------------------------------- rem バックアップ元ディレクトリ set SOURCE_DIR=D:\data rem バックアップ先ディレクトリ set TARGET_DIR=\\SERVER\backup\data rem ---------------------------------------------- rem バックアップ処理(xcopy) rem /D:月-日-年 指定された日付以降に変更されたファイルをコピーします。 rem 日付が指定されなかったときは、コピー元の日付がコピー先の日付より rem 新しいファイルだけをコピーします。 rem /E ディレクトリまたはサブディレクトリが空であってもコピーします。 rem /C エラーが発生してもコピーを続けます。 rem /I 指定されたコピー先が存在せず、コピーするファイルが複数の場合、 rem コピー先をディレクトリとしてコピーします。 rem /H 隠しファイルやシステム ファイルもコピーします。 rem /R 読み取り専用ファイルを上書きします。 rem /K 属性をコピーします。指定しない場合、読み取り専用属性はリセット rem されます。 rem /Y 既存のファイルを上書きする前に確認のメッセージを表示しません。 xcopy "%SOURCE_DIR%" "%TARGET_DIR%" /d /e /c /i /h /r /k /y exit
日付ごとにフォルダを作って指定フォルダをバックアップ
xcopy
を使ったバックアップに少し手を加えて、日付ごとにフォルダを作ってバックアップします。
また、一定日数より古くなったフォルダは削除する処理も含まれています。
@echo off cd /d "%~dp0" rem ---------------------------------------------- rem バックアップ元ディレクトリ set SOURCE_DIR=D:\data rem バックアップ先ディレクトリ set TARGET_DIR=\\SERVER\backup rem 保存期間 set STORE_DATE=10 rem ---------------------------------------------- rem 日付を取得 set DATE_STR=%date:~-10,4%%date:~-5,2%%date:~-2,2% rem バックアップ先 set TARGET_DIR=%TARGET_DIR%\%DATE_STR% rem バックアップ処理(xcopy) rem /D:月-日-年 指定された日付以降に変更されたファイルをコピーします。 rem 日付が指定されなかったときは、コピー元の日付がコピー先の日付より rem 新しいファイルだけをコピーします。 rem /E ディレクトリまたはサブディレクトリが空であってもコピーします。 rem /C エラーが発生してもコピーを続けます。 rem /I 指定されたコピー先が存在せず、コピーするファイルが複数の場合、 rem コピー先をディレクトリとしてコピーします。 rem /H 隠しファイルやシステム ファイルもコピーします。 rem /R 読み取り専用ファイルを上書きします。 rem /K 属性をコピーします。指定しない場合、読み取り専用属性はリセット rem されます。 rem /Y 既存のファイルを上書きする前に確認のメッセージを表示しません。 xcopy "%SOURCE_DIR%" "%TARGET_DIR%" /d /e /r /y /i /k rem 古いファイルの削除処理 forfiles /P "%TARGET_BASE_DIR%" /D -%STORE_DATE% /C "cmd /c rmdir /s /q @path" exit
日付と連番を付与して指定ファイルをバックアップ
指定したファイルに対して「ファイル名 + 日付 + 連番 (filename_YYYYMMDD_NN)」という名前を付けてバックアップを行うバッチです。 連番は被らないようにファイルの存在チェックを行って若い番号を振るようにしています。
@echo off cd /d "%~dp0" setlocal enabledelayedexpansion rem ---------------------------------------------- rem バックアップ元ディレクトリ set SOURCE_DIR=D:\data rem バックアップ先ディレクトリ set TARGET_DIR=\\SERVER\backup rem バックアップするファイル一覧 call :BACKUP "ファイル1.txt" call :BACKUP "ファイル2.txt" rem ---------------------------------------------- goto :END rem -------------------------------------------------------- rem SET_TARGET_FILENAME rem バックアップ先ファイル名を生成、TARGET_FILENAME へパスを設定 rem 引数 なし rem -------------------------------------------------------- :SET_TARGET_FILENAME rem 日付を取得 set DATE_STR=%date:~-10,4%%date:~-5,2%%date:~-2,2% for /L %%i in (1, 1, 99) do ( set NUM=%%i rem 連番の生成(= カウンター数値を0埋め) if %%i LSS 10 ( set NUM=0!NUM! ) rem バックアップファイル名の生成(= 元ファイル名 + 日付 + 連番) set FILENAME=%~n1_%DATE_STR%_!NUM!%~x1 rem バックアップディレクトリ + バックアップファイル名 set TARGET_FILENAME=%TARGET_DIR%\!FILENAME! if not exist "!TARGET_FILENAME!" goto :EOF ) goto :EOF rem -------------------------------------------------------- rem BACKUP rem 指定されたファイル名をバックアップ rem 引数1 バックアップしたいファイル名 rem -------------------------------------------------------- :BACKUP rem バックアップ元ファイル名を設定 set SOURCE_FILENAME=%SOURCE_DIR%\%~1 rem バックアップ先ファイル名を設定 call :SET_TARGET_FILENAME %1 rem COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/L] [/A | /B] 送り側 [/A | /B] rem [+ 送り側 [/A | /B] [+ ...]] [受け側 [/A | /B]] rem rem 送り側 コピーするファイル (複数可) を指定します。 rem /A ASCII テキスト ファイルとして扱います。 rem /B バイナリ ファイルとして扱います。 rem /D 受け側のファイルが暗号化が解除されて作成されるようにします。 rem 受け側 新しいファイルのディレクトリまたはファイル名 (複数可) を指定し rem ます。 rem /V 新しいファイルが正しく書き込まれたか検査します。 rem /N MS-DOS 形式以外の名前のファイルをコピーするときに、利用可能な rem らば、短いファイル名を使用します。 rem /Y 受け側の既存のファイルを上書きする前に確認のメッセージを表示し rem ません。 rem /-Y 受け側の既存のファイルを上書きする前に確認のメッセージを表示し rem ます。 rem /Z ネットワーク ファイルを再起動可能モードでコピーします。 rem /L 送り側がシンボリック リンクの場合は、送り側リンクが指し示す rem 実際のファイルではなく、リンクをターゲットにコピーします。 echo %~1 → %FILENAME% copy %SOURCE_FILENAME% %TARGET_FILENAME% goto :EOF :END endlocal
ミラーリング
初回は全ファイルバックアップなので時間がかかります。 2回目以降は差分のみ処理されます。 また、バックアップ元でファイル削除するとバックアップ先も削除されます(ミラーリング)。
@echo off cd /d "%~dp0" rem ---------------------------------------------- rem バックアップ元ディレクトリ set SOURCE_DIR=D:\data rem バックアップ先ディレクトリ set TARGET_DIR=\\SERVER\backup rem ---------------------------------------------- rem ミラーリング(robocopy) rem /MIR :: ディレクトリ ツリーをミラー化します (/E および /PURGE と rem 同等)。 robocopy "%SOURCE_DIR%" "%TARGET_DIR%" /mir exit
Akinari Tsugo
0:08
バッチ
JavaScript で数値 を 指定した長さに 0埋め する方法
JavaScript で 指定した数値を 0埋め (0パディング) したい時のサンプルコードを掲載します。 書き方、やり方はいろいろありますが…桁数固定はしたくなかったので、オーソドックスに実装してみました。
/** * 指定した数値を、指定した長さに、0パディング した文字列を返します。 * * @public * @param {number} number 0パディングしたい数値。 * @param {number} length 最終的に出力する長さ。 * @return {string} 与えられた数値を0パディングした文字列。 */ paddingNumber = function (number, length) { var source = String(number); var count = length - source.length; if (count <= 0) { return source; } while (count--) { source = '0' + source; } return source; };
多分、二分探索ちっくなのや、桁数固定であれば substr
とか…
いろいろコードの工夫の仕方はありそうな気がします。
参考記事
Akinari Tsugo
0:14
JavaScript
JavaScript で 空白 を トリム する 方法
JavaScript で 空白 を トリム(trim、削除) する方法は、何種類か考えられると思いますが… 結局、どの書き方が良いのかわかりませんでした。 そこで、この記事では、"処理速度" という観点で、その方法がよさそうか調査してみました。
まぁ、結論から言うと「ブラウザ毎に違った」という結果でした。。 メインとなるユーザー層が良く使うブラウザで最も速いコードを選ぶ必要があるかもしれません。
JavaScript で 空白 を トリム する コード (測定対象)
var trim1 = function (source) { return source.replace(/^\s+|\s+$/g, ""); }; var trim2 = function (source) { return source.replace(/(^\s+)|(\s+$)/g, ""); }; var trim3 = function (source) { return source.replace(/^[\s]+|[\s]+$/g, ""); }; var trim4 = function (source) { return source.replace(/^\s+/, '').replace/\s+$/, ''); };
処理速度 測定方法
テストデータは、アルファベットをランダムに並べ替え、0~26の文字数をランダムに先頭から選択し、前後に0~5文字の空白を付加して生成させる文字列を1000種類、準備、利用しました。 測定は、前述1000種類の文字列のトリム処理を、1000回実行する時間を測定しました。
測定環境は、手元にあったブラウザが Chrome と IE だけだったので、その2種類で計測しています。。
テストデータvar testdata = ["pcwlqogmkyatbs "," nkahkyifdsurcmweg "," ragkbtpjuqoimhysewfc ","fkuiohblvrqmdtcpwzgnaksyj "," qmpkgfcunevwlbtjkai "," gukcpsrtqhmf "," dneqylcfpzsr "," lenktysc ","uwazqfokldhtkjpe "," slmtecfdjkoazhpwvrnkgb "," il","ikhofzluwnqaky "," ajiweubkpk "," z "," mcibrfogpklaezj "," nfmdhalbcjkuvzwoqespygt ","wvqgylzjcmkrudnahtkosie "," kzcjptu "," rdekzgbmohfajkycu "," cfogymuvikhpbajzdknslqwte "," ktnjwmasqlkuhv "," gjqlrbhvdmfcapkuot"," bwomrqutdpglsvj "," asiqwczyjtfogrpbnlhuekm "," djmopk "," hvcateslyjw "," sjkan "," ikwpfstubjraomdlg "," i"," hqngdusbyltmfvziaeckk ","gfisblywujrhkvqat "," qabwmekvcyfghp ","optsrnmgfhaykq "," olhvnifuywk "," nrtkbzywi ","smqkdvi "," ulpbzjefdkyaqsgnc "," zsvwdlnkjuoc "," mesaginuhftkpcvjbdzo "," "," urti "," zhy "," fyp "," swdgnkzupjqerymt"," kdeq ","rvnhimkedwlgzfskoatq "," zbwelvunriqjyhka "," ykhfersbctiwunmjqko ","dvpgwz"," wmilp ","vaotehbzuqjikylmsprcn "," hjqndgwlouzc ","dkrkw "," jcpyrkihbdk ","rvwzioacflmq"," bh "," vdnzac "," ntewkzsqblpjyfiur "," wqdbpna "," fzkmdtcnegobqhyas "," gbdytjwpkq "," ejnhq "," ehkazigbtnsfmcvjylukop "," khnvu "," kmiyd "," bknwjahfgkirsey "," lrkyi "," opjdkknfqzyiacstl","tgasyqwmufrcnebopjidlkkzv "," svwyuakomkfjdnhgli"," dngjpzyvkwqb "," pfizomrwjsluknbevgt","vgjznodkcihesrwkmatu "," wyteihupbjlrodsaz "," gmfjnqacdlkhwpoitu"," sbwdpnlgqrao "," itrpw "," fjz "," lvrfiobhnpmgkzaktdeqwj "," plu "," lbiutqhm ","nsekhrvckjmabfiydqgzpt"," ojulgsiahmterqzvynbkkw"," dlrsitc "," ke "," cnjgkythiaw "," iculvbnr ","khpgckvlodwfnteabmrqji "," plcmjqwfdnztuibo ","uh ","azpty "," gsk"," qu "," gkkclepovrihqyfdnumzwsabj "," jpz ","eqohipcurvzkyjsbwktga"," svdwjebycklpraqfgukoht "," wnbvkuico "," msltpowki "," lqyjkasktrezf "," fclauhogeikynd"," b ","fzstyaqhwulemid ","zjsdbmftkwlk"," galvtpwezkmhsucdnrofki "," nphecawkkvzfl"," ywhzvfjuplcrdgonqmkbtask "," kobhdterkvacnsijuyglq "," "," "," bavfewgmjqhcknkopisyd"," jmurofwpasktvlzcnbehg "," ehqjndtzvmpg "," wqcg "," qkgzsurhjktencvd"," iewhg "," bmyijkcslgnphrq"," tfksnympchkuldzwar "," rykhvkdmbtoeszufiqa "," woncjdkfamhkrusvpi "," ejbuzmnoyckftpagdwr "," mlipvcjwhatgrdb "," tnewvgfkauojclsiyzrm "," aiohnscwkqprzj "," wmva "," v"," emvzhrulkjdfkgsobwtaqi ","l "," ajhitfm "," ilrf "," jpmshkkevfq "," ih "," mwrlisnchapeg "," qkobzkangcmiwpetjdhvly "," vedcngkskhyqrjazwm "," bgevloipj "," zwhd "," yawkpzcvfudklb "," hekmfjuqskvnwi"," fionhywukpdjqkczgaeltvrm "," uescfbawgrkvnidytmpho "," uelhqstvojpgdmk "," obkufvymwgiensjlzaprh "," jkbtpqvzflwredsokghn ","fpydneil"," gofycmrw "," netacsfqlubovkr "," kzavm ","grbejhuq "," uiveyjnt "," cozwnekv "," cmspoklkuahqbgzwjfn "," seikczthvnamfdwlgboq "," rpvmiqugdlzyakbosnj "," "," zkvsaplfdmounrwycgjq "," da "," eqav "," lfnp "," jktnge"," i ","jqyukvinblhwfdzoepgakcts "," skleydavpfonbquzktrgw "," qsktlonvk"," ikuhdvkq "," hrmkl "," juh "," rlhjobkq"," mbkihotnseqcwlrupaz "," qwabngkpsvjlcftemhzkoy "," ojnq ","kkj "," qaofdelryhckztmbjkugs "," wckualfspoqytbjigh ","pwljkvebdagrqzmfytcs "," dvityakfkbslprcgmwjquhz"," zhwgkv ","avtqugoydirclnbjspk ","ihkpbqlnzwmkadfycvoestujr"," ksahfdlyutcqjzowgpiebmnv"," panzoigjhsvwdefmuyklt ","hkvpjbsyudifl "," y "," yvpuqdekzcnkjogmahisltrwf "," ybkjirkhodguqsvep ","avidkfbugnw "," johgmkbtdina "," l "," cvswkop"," ajchfyzoiknsptvk ","kfdheqgluvsbyzmtjapcwkr "," fjgpquctzkhbnmorsa "," ypgekzvahfmocj ","wkacikpgemlyvoqfbhzjr","gwtbi ","obspdti "," fywzkkjusnbmridvtploqcg "," qakj "," pkhokjsbmrdyaitflu"," vomlafeujqsdpcibkyg "," fjpql "," yvfwargceukntjlomksdbhp ","zadrmvkchtwlspekbyj "," qbyersdnia "," umenzjlcgbtvkrisaqydwfho "," "," riboykplfqhuvdkwjnezcgas"," koblgfusyczhdnkqejtpvmriw"," iscgdvuqrjkat "," a "," puwcrslmkafdhqzkoe "," srz ","lthzfgvi "," ihndrvufbajz "," vgkfhurqjk","btwclfkqogui "," hmnitqzcdjylwpkrgobveska "," zvlgyufsknwjh "," dgmc ","ikvn "," ktyihcejalnwdpvkm ","stlcbwjpmdv "," gwilteafbnmkhsropkqyjuzvd "," efcrwlasdomkvgtkh"," kmlueiyr "," eq "," wnkvlrteybmjgfhkapiuzoc "," zikhujwvkrqtsaopdfbyl "," nwkiglbzacfhome "," snktdapyr","zlgjksaowyftdukncmbep "," vrhjcfwnlzyqdbka "," ikwqhmplfotcnbygadzrv "," ph "," uiakczvty "," soqhptvujibamcfkkynwrzel","mpqcdwz","zlhvitrkaokcbjeyf "," ou"," trqzfbcsgvopludwmkiekj "," lncibmrozdgpuwtfykqj ","ghzblojwvdrqemckayts "," ri "," hfqjaknury "," "," rtpqcheofk "," byzjpitohlmrkn "," "," gkshwtvckomnpiujeqrd "," oakjwilehdk ","eumljriv "," bruahngzweoykjsfcm"," jpewqthrsglfuvkozdkm ","yimnpogvjwhqztkrfebcldu "," kzeoqudarbpmj"," ufbpaviqkkswljey "," kwarlpobchnedzfqjum ","qszlhekywnajcifdvtk "," rfejdzuqwhlpoi ","gmdpozukvafetbchlwsqyrjni "," pydgbtkoclnsqjzamer ","tvugnwzb "," dlfreqpiwkz "," knsclvzeuyw"," flediabk "," cwnsliyjqkurtzgodv "," kmnafdoyzlqpbhk "," tjkosd "," sylqebunkrgw","mwczhjfqot","vpbescomkdtrhakynjgfiqz"," rokihn "," arysklhc ","klunjmqovfwgr ","ruokiknjhapdszybwvmlfce "," qvkaenlo ","f "," o "," sj "," leavibfqwymsn","jbiazlvmnchtfkeko "," f "," "," mefk","qvleifhcymkagopkjnwubs ","rbmqkondltsvgjhczuwi"," v ","ifqb"," qnjkbpgehzo "," gzwfdcpmt "," icz"," rlckobyu "," gezlrtwfqyabksjdhonckpui "," ymujckpafbrstdlhievgk "," ydfbvcshqnrgakm "," bsfzvhgckdjruitlqo "," maqrjzkgpcoftuvlhdsekwi ","uygizdpovtj"," mfsvjryboiahckzqdunk "," damnzgck"," ghv ","kuitqbcgkweylfardom ","ruzqgfsvilyc "," duqajwolkckyesvfm ","vghr "," vtughojpecnm ","uvtojmnire"," hainy "," matkusjlowczkdphrifnq "," pfqlkakuyswcmvi"," lnducvsygoprhk","uytakvjnroz ","uaijeyqt ","gitw "," kqhrvmefijnladkcbwsgotzu "," ifaz","ncyqfrkuvlmpjwaozikdtebs ","blwamokrcqtziednvfjpkhug ","erwkbdik "," mhgpbslfjdrkn","tepjsrmkcayzfnwogkv "," oaekwmisjrkbhfvc"," rjlcmbnqyksgwpvdoahfzet "," ","kvsmbzfenoigwlru "," bglvfy "," yn "," tfjildzspecukmobvwnqgyakh ","vkbcazpsfginho ","rhuq "," kea ","mtgyaoewhfdkjrnq ","ukn "," k "," kyhicudqlbjanpkgsotrzmwfv"," klfwmghojuci "," ftelpjrok "," rkawnpuj"," kgetkfjb "," myljcagozsdtnfuh "," a "," faletcnvmr"," emjqpuwvngatfdyblsh "," ulofrykhikgc "," zmngwhpkcitladfeqysrb "," yqbucisozathgvpdekrk "," yeodwztfqk "," huoigqjsmfrvbkpk ","btkshwyfpjvulqnodzmgiea "," enqylbokjikzsrtgucdvh",""," nebqawikouftmvgjzypldks "," hatfozjrvspiuqkm"," hcgayotplwdrjfzvebkumkins "," aplqkwmoucsfke "," dhimla "," hamfnkpozleivuysk"," jkptmqokzbesucwfvdirnyha "," kzqrj "," zg "," alvputrqkmwbgfdcnkeyhjzs "," gjwuzvahqldepmsrkbnfokyc"," emqdknygfwr "," ehf"," bkuzfktiwvc "," w "," eucjsqgfpywtzonkvmklaid "," niohsdzeujkalqkympt ","knikzd "," ms"," vhsrtqkpk "," zbsedoktilyngjura"," bfowzkchdrqveulgamiyjsptk "," oepjnywbmqckg"," akeqhoulv ","tjkqlcevhokfprgymudwzbian"," zltdswpmega"," uirdpgcqhnm "," akrh "," ichsbnrmyzavwt "," talbndphcrkveq "," kjfoyilpdmrhb "," jtezwpkybvdmgursql "," vqukpytz "," ayrkegljwfhoknvpqdibtzcsm "," hkditbcukgnewqlazr ","okduhakcgyrnpizjeblqt "," mvjpfko "," zpsfrjmakngohyw "," rbwkhzviecgqkjmoyflus "," dwjfmrnezyhocvuslbka"," ogk "," sfegd "," bcntlydwkqefkvupjgoia "," unjzwcdklkrahsqigepyobt "," hlacripbokfnyjevqkszwug "," kyqczmrslikvgjntpfwba "," faktrgmdqocwesvnpjiu "," tvyqcalfnib ","engohzsiacflq "," kmeqrbifjcuotld "," krtybmcpalfeokuvwnzhiq "," lcyzrkkejmb ","mlabgtrhko "," "," kolyqkhrte "," fatosczermk "," tanfie ","cmisp "," kiydsewqzjh "," ndzmvfrg "," jfrug "," hltozimuk "," tfyakzsgou "," qnpr "," kvlduhqey ","lcsjpknekyfiohvrgb ","kkaqdlmwynzfocrpiebstujh "," gkodfyiuzr "," khogklirv"," uojw "," mqkndizrcphgyveuakl"," eorkpiydzqa"," vbpmwjknkoaglyisuecrtf ","lwkipfthvmnadr "," nogaklvkrqwyiuztf "," gqjdrwhzkblopnc"," tpnczskragbewmvf "," mrgqyjfzsuhic "," kktsicqgelnrdozmbwpyfhuaj "," yobpev "," edkymcgspzfkwqajhuon "," lbgnwckathrqmfyzekuospi "," hcu "," "," hujcgimysaflkzrqtbdvwk ","kuf"," jvoyw "," grkavonlybmctze "," gczwnbvpfmeqkdrhjskail "," cphmtnyfkbqkjervla "," yjelhkvtbqkzcnismfawpgrod ","mfd "," stcfd "," ey "," nbjrksdhzqpmwctlkovgyefia "," os "," wosctaebfqmuilyjv "," fgkhtbinywokc "," ekihmdua "," bkpw ","lvse "," dfe "," zcof "," rtdlkikswgonqevh "," hjopunwsiftzyk"," tg ","jfakmqlbvurzntswhygcpkiod "," bvrhqgaeocwjzsfkdynikltu "," rj "," epvmtjfcuhl ","jbdqhefzlturkcgpyvsiakon "," wmskgpftbvylzeiaoqjdnkcur"," liwtrea "," zsvknqpghalwky "," zfequymdawibjcgnotvlkrshk"," vkyqrwuopkaiegbmt "," ehzws "," ep "," zvbfkqtgcj "," yjigmokbwtzcfsr ","bjuasltvdkkqwonef "," smuchyqdwnvi "," syikmjolvfhcenqbwgdra "," zmtusknqjayd "," jnvotqluwk"," iodqhfgnytkbvwzpculek "," "," pjwcl "," qolnmjkwuhfpvte ","jhtfbezsqdwaupgvkly "," fspzdoqrye ","ruvhzdlgq"," bokmlvqkndsyihfzrtapge ","zvmek ","dtc ","hjvisyd "," "," ","zihyjbemkdpvufo"," "," "," ehltnikfboad "," drgalmicjynzesvwoptquhfbk "," kfvetdniqcojlbusmparh ","vmfqizjdo "," brqupvdekkfacwj "," quwy "," kpvakbimuyqwjtf "," svrjgtobzymqnf "," vetcjgkaydzlhk","ubphaqwi"," wodbygtvklnmfchsipa "," db "," qfjkkacnuriyetbldz "," nzueairpvdhbclmtkqfgkos"," kqocjinkrdpv "," o"," jswzkptncaqomy"," jhtdsizegpvlnmufkycqor "," kufbrzosdj ","kzhqevnt"," lrdfukjhegmvznyw "," okjrswf "," imltvqyoa","nezdmcvf ","whtgcpznflsuoibmkyejd "," ","vkicgruedmqs "," ehldpwtvizjkmoauqbkfn"," av "," wvl "," pfrucemk "," umyjbzrkatlogcnwidkvq "," cmrybujlkkapz"," jpswl "," bwpv "," eqkhzprub "," hsekdpcazrboyimjnlgw"," tduynklhepcisfo","zukbkie","esynotkdbjvwfrg"," uclz","lam "," ewoqzlmkgjnp "," raqhpkvmtusnicegwzfy ","dfgqkpzwrebcvy "," ","gdfmlibntjzopqaery "," huonm "," iagolqtwp "," jhlqktdzrpw"," izmkjbwhlykcr "," ckzmbtuhyvlrpiaoj","tmkcakpjv"," fdcqnwibprljzgykvakuhso "," fvoytupdrsknmilwza "," ikevtonrfaucmkdsqwyj"," "," iurcjkklvzmywdpoabnfetqgs","btywsrkdpfqhcemnkv "," zlobjrshmnugwfyviptcqd ","ptbzrdnofawjgeskkcyh "," ltgrikwnfyaupvjqcdsh"," wey "," cnjbzokqegmyvklsd "," ","rlgvuiaeb"," yezibuqfo "," "," rdhzglbnwuoksetqiyfajcpvm "," frc "," oziefcgwaybjdku "," gyocrbqshil "," pqytr "," mpwisveafnkyuoqclb "," qczmfdkiyneavtglwbhkjsour "," svmkjuribctypazqkdeoglnhf"," tezhskrcdiavfmkwyonbug "," nudkwymolazpgikecbvqt"," hrknmwdezk "," svtkemgjhfdr"," lfpar "," toywakdsu ","topbhnvfesrijym "," pdweqmkubilvjk"," kpncwgsuktoijbhdfy "," wqhjoailpvtebfrmznkygdcku"," dojlkmiczhr "," eaiuf "," ","zuwkmpvaegqhdynrbktji "," tkfwljardshuimgcqzp "," hgwbmidautljfn"," cstihdarbeyz "," cegbpwyrkokusmqlndiztv"," ejiwvhgn"," uvqieptlcbhjagkyfmdw "," oh "," jgcoiqzbavfkuslknprwdty "," gekdwhoirv"," keunpqmbivsoyjzk"," rcqjtzfd "," okurkmdjlihbwz ","vjkcsktwgar "," jhtrik ","csafrkomlpdtuhveqynbg "," hydqjzkbucntfargksvipel "," bcmpowndiavrkfylqeusjh"," abmz "," pyzkeodcfbrutvn"," jgvolkpnzhekyqarbmuidsfw ","cblpazyqkfgkrnmuwesthvoij ","kdatgzoemuilnsqyv "," ouwtimclp "," qgvs"," piqeaof "," wqsmikflaovzepbkhunygdt "," ","hlkdkwremszayitvqf "," dqstbrnygm "," dunwkjymtkq"," kjuyhisdtk "," b "," pisndocaqmz "," lfrgyaeoknpdbu"," nwgblmhyfuscievzkoqrkjpta"," plhmgozajc"," suirwegtjkhyoknl ","omftjqhrylps "," hzvbiefqatgku "," sjivrkadutpmewcnbfzkgl "," ypz "," "," gfudnkijkcp "," jnyzwstmhiqackr "," ","wvusqmyrbnfdaclzpgjhkkit ","etibdfackujglqk "," bkwutkelmfiapyvzjsq "," kiahwcndqorbu","niqzcjtlgrwep "," feoutzsdbgjarkcyhi ","ysozcltgvmihfukrpqenj "," swehzymparuin "," "," iankuesvpqlhtdzmbkwgroc"," gudqky "," nfwviyezctoglmusq"," kslfprtivhjumwnzeqbcdao "," qzov "," ktzkebhnglijcpqwyvf "," erkbshgtl "," ybtoajfw "," r "," ioygmtv"," pcwrtlvodezqfjnksakigy "," huzrk "," ajzkgybidulf "," nkjqolgskebcfpyrai "," tiacml "," qkoywclfnre"," whiaysg "," svpz "," jvrhwgycklzmtdoibps"," livoswjcndgekhzrtkb"," jtzapgsdwkcmkqre "," kugojtlhryqbiazn"," cilpamndrkqz "," brdfsymuwip "," afkbcjqmluv"," "," prjofwsazbktgiykvhle "," yohzrgvdimjkflecstk "," fkigwolkqhjv "," cpgbvlyikesw "," hkuk ","kmcdkusthzgjly "," uezlkyhpo "," aqbzumfygljdtpwsrnkhkev "," emaj "," kiudayfvhecplbnw "," zaegdcyvtpjhkmqnulfo "," hrwimdpgv"," crhgaeilsypnfqtwdjbvozk "," "," fkhtom "," eitokmfwpdkugnr"," uvicewrnhbagz "," palt "," dkkmlochtaiebgvjqnwsyzu "," jcyatswnudlhekgz "," dinkzmcgkqvpwb "," qlyimeowbjvshngkfzrct ","dyuzewntlifsrqkvkmb"," "," s","jhtakdwlqfcnigvsmrzyebpu ","mus ","wdsiekrv "," dvkywbhiftnrm "," ypiet "," m "," shtdkivzanq "," qywgpbovjkt "," kbcdalkotfyuh ","kfewktjguazyqlrmoh "," onyiecprzqgaft"," hieqscdbt"," gkvctiwezfnjklar "," ozlrdbcfgyhtna "," arfcgmjytioekbzwlspkdqvhu "," yofmptjwrevlgsakcbkziuqh "," bdqmoeklahjfctwnpuvr ","vsypknfcmuwjehgtbqkrilaoz "," mhurzywtnv "," gkjfmatnbcl "," hizgbqkkyrlmenucdv "," gvstulpwijbr "," "," famkgrcineolbdwpjqvu "," tkuiyzqrbnspfawvkmjgceoh "," cvnrqjyazwbiftukgklmhped "," ebfw "," grokevtjbasclhwnfpkzymi "," kmnlvodftapbz "," aqnhzvwjyortgslbkfipmde "," lkbkdfzwcjiayhqvstoner "," nt"," idg "," pojqcwetaizyn "," nvslfe "," mzkrehlfnd "," gvotecahuirqzmpkbnydks "," tdmlnigehs "," pkjiswnomgfyvbak"," vgnrsoupajmdy "," oyeilapnkvwjcgqdhr "," hirckjylg ","tvczkiredakwg"," "," ephzrnbyitkdm "," vctknokbjp "," zd "," nksytgdpuowcqmrble "," hfugveajidlynts"," vkzlkjsumdeg "," nkzpmfjyiqecabdgwtlhvr"," wybgukqmnozlpt"," ujstkvzrihygwn "," ugknmpe "," umzjrowldpcktbfg "," zfkcpsbjyokq "," qakyrhptbvw "," wurcgjnkloemvdkzfhyqp "," gfaishyzewlnc "," tnsklirz "," qawpmkfdgsilzecnbrotkuv "," hcbnepdkuvokmaqryfji "," hqtejfobapnvdkl "," gutslncjpzwor "," cahtvkrbkfjlsyzmiwupg "," piuhkzjgfcsmkeqtawvl "," tdfuwn ","gzkfivjeulpqa"," yajhlqpwcn "," lmqbgwcdekpvas"," mqibksvapklfod "," kqzjvafcodlpsmnihrut "," lkzemhrwsdfopcjyq "," jczyvnkthospad ","ekhoiksu "," metsdof "," r "," nsokudiyfmpeha "," kdyehza "," wifk "," qzgclbvykepdrkwojitufh "," fomsrkpagzitlujnyvchbkw","nwurpgtzsymlaedf"," tezipufqrohwgmadsjlcb "," ejivfgpmsulrych "," qajpzgonuckesvtlybhi"," bhitnsuqmelgvjafyp "," n "," "," vukkiwfobdjgnyq "," jvkbzlsir"," kun "," brmasdqykjifeukohvz "," wgrvpoulbmdetfqycank "," ilhjgntyawecr "," juqzm "," arcisy "," bhtdqrsifpouleyknc ","rhikcbygsw "," dpcntseiq "," oynltfkecphbugiqjwksrzad"," iszwnkmgopkatqur "," tnkvwzjodasbei"," hja "," lmvtdcbpsh "," anbw "," geqobrickztjwdpvlfsam "," upwto "," sqodrvb "," rimvbdpukkjeqfazo "," "," sbaglwfthezkqpuckynirojvm "," gpkutejzfbiyrkhwvsola "," bkfzdaktml "," jpqedguzvofmastkwkcnibylh "," kyunzdwirhojmpgstabevl "," wikljuzvtograkc "," sqkpuoldjitbnrkhvmwgzaye "," yrqzbgpuiaf "," epchazrqnswfimk "," ntkrzlpog ","ehlytawqpvcdjigk "," "," odi","doakvghpljwifrnstmeqbukc "," gfremhnvywdsqokbc "," bnzkrmcfqkuhj "," lhms ","a"," arzem "," cohakmfrjszpyqln "," qznwpurjskky "," kohjungq "," reliskg"," fwlgsyomkqebzuchdvn"," ztnqcuekwyfmapgkhij ","dyuhkip","ocf "," ","rjcbkm "," vmtgdpharow"," pngybkr "," iordwez ","glmnweyzptakcidhsobkvqjrf "," lzcehp "," lkadnzocvumt "," nwgylpdiorhekqbuk"," bwqadokchunfl ","tgkrqzhjbs ","oifwbhmtkrsgc"," mnewckkhaz"," cjphqsdwanoe ","waldjifusy ","tmqukyokrvdwljah "," asdvrtkulcm ","noafyvkqwushtgzemk ","sakredvlbfmtgk ","ilywkmnogtpjvuhzrdke "," pnlaz ","japftbhyivcwrdnzskmoqgul "," apckdyufbqtim "," crwykpdzqineahb","bmjtgqficvul "," dcsqzrnhvalgbokftyjwiukep "," otikpd "," "," dsbzthfrlingakveqcmwoup "," kiljbzhfomskwprcd ","eywrhojlacvskqm ","ilfqvztjokhrbucnmskew "," grectzsmvnkludqbfyj ","aputzrvidmwfkqybeckh"," s "," rwjdkokhf "," jbdaqskozkpecw "," metwkycgvoujrlhkbqa"," tywfn "," kakt "," kbhj ","jmywohfpdtbecngks","lqn ","sqjlhgzvcd","dyvhgunzoeq "," pcsijeguhortazyn ","gufqwhe "," avft "," kknj"," stpqmwykcofguvjzdkbn "," uwnvskmpqhz "," mahirkyde ","rfkuht "," dypgwlmrvtkisuczfb "," vetohmwfj ","tozyqagrhdkmknwp "," gtykqpmjknrlwbvzfehsuadc"," tnqzuye "," lqfv "," ysek "," emdfp "," rhpkiuj ","daocbevlguynfqtipjhkmzsk "," aiodmspjtcqgvrhulkkez "," iuzklfrokesdw"," jwnlyvrtcqigmkzufbapkdesh "," pj "," kqfmaveucrh "," uvt "," mqhp "," omtdpkejiyvhasfcnqk "," "," zwbnldrkyip","ukkdnbhro ","m "," evsidqakpmgyozkr "," fuovrlkwqshpdcbjmeyatki "," hflwemagoyku","inlkrqmouhfdcyvejkgzbtp "," s "," hmdfsjarvnc "," sqczorakmlidygkevfuw"," okhzrngsfdvepkuqc ","c "," klyesrpakjnhqgdimuztwvof "," jfngidlqsktovc "," zbtjenkl","mstzbejokkfrpailunwghqyv "," sarwknzdj"," ypwboj"," hovkd "," ekutrplnzswamdbho"," lwajro"," gzu "," o ","zqksevdn "," ocmrkfjezapsythl "," urmk"," dgk "," ktqwfkjobzchepdsna"," caqrwdbsjguoknfpkm "," iug "," cka"," igynouzwlet "," ewz "," vjwst "," ie ","dtnfevzwkumj "," jaeokzlwtbvqrngmfk"," pardtsoeq"," pl "," opmngdtulqcjvibfykh "," nkqd"," rafkiplmhyjd"," gcl"," r "," t "," tbldqysjrcefhzouwgmk ","omcz "," ezfhrkbtnpjucmvdi "," uejpmilbqgksnzdchwtfakv "," krzocpdfiqsevjybuag "," zovgejkknqfrimyd "," jpzodqewmlfkk","rnvlzcfmkueitahpgk "," zgfkihrdkbtwem "," kewzcp"," kkidltqcp "," kmjewtiuqdor"," wcayskivfopzjr "," kjo ","sdtm "," buognvzpyiweqltjac "," tpoakufyqkimvsedgwhj "," besunhgotrzmpfilcyd "," hmgikzqypflbnwdva ","rtqlchvbzdy "," bjwmosfvet "," fmhvdjzytqipsrnok "," rzicpdkyqskbw"," iyskmnbegpjcwfukdr "," z "," jezbqnlpr ","hesovcfrukwbjniaqtdlykg ","nkg "," gjtpekmovu ","ilwafngvbuy "," rckkopuqnfheimjvlt ","z "," ytovk "," sdclrfkzhtjbnipvwemqygkua "," lfdarhostwvupikjcnbzmyeq"," rqygutkpaioekblmwvfzs "," qknoiryztbfguvpldjkwesahm ","yrloabumncdskwgi"," cia "," n "," ug ","zd","bketajpmodcvyhsrigzuflnq "," lmistbwfypnkvrazkcoqjghu "," csgbdtnzhuwyelrkqpivjafm ","jnhkrleboavgwyqimfstp"," rkjfsg ","ilvkmbesqapdt "," akgpb "," bvwslujfzncrtahkyqdeigkmo "," rqdokpfvealbtkguyjsc "," gaen "," gdmlikfykuzcbqhtej "," sgbekzrqtouwvmpyidkjh ","cwehbmpjvfrk "," jqm "," retukmlkqdyancgfh "," gavylzbwnkdsqmko"];
処理速度 測定結果
Chrome 40.0.2214.111 m 単位:[msec]平均 | 1 | 2 | 3 | 4 | 5 | |
---|---|---|---|---|---|---|
trim1 | 982.8 | 529 | 334 | 1338 | 1337 | 1376 |
trim2 | 1181.2 | 429 | 1326 | 1401 | 1370 | 1380 |
trim3 | 1068.0 | 420 | 1378 | 1064 | 1194 | 1284 |
trim4 | 484.4 | 335 | 1118 | 305 | 318 | 346 |
Internet Explorer 11 単位:[msec]
平均 | 1 | 2 | 3 | 4 | 5 | |
---|---|---|---|---|---|---|
trim1 | 1633.0 | 1578 | 1333 | 1961 | 2223 | 1070 |
trim2 | 1112.4 | 1080 | 1040 | 1091 | 1291 | 1060 |
trim3 | 755.4 | 585 | 560 | 612 | 1415 | 605 |
trim4 | 917.4 | 453 | 446 | 450 | 1658 | 1580 |
まとめ と 考察
冒頭にも書きましたが、結局、ブラウザによって結果は異なりました。
ただ…使うなら trim3
か trim4
が良さそうな気がします。
本当は Firefox、Safari あたりも調査したいところですが…
また、時間ができたらということにしておきます ( ^ ^ ;
参考記事
Akinari Tsugo
23:58
JavaScript
JavaScript で 配列 を シャッフル する 方法
配列を ランダム に シャッフル する アルゴリズム は Fisher-Yates法 というものが有名なようなので、それを JavaScript 向けに実装してみました。 元々の配列(Array)を拡張する方法、jQuery を拡張する方法もあわせて掲載しています。
Fisher-Yates法
Fisher-Yates シャッフル は Knuth シャッフル としても知られているものだそうです。 最初の考案は 1938年 にもさかのぼる古いもののようです。
基本コード
まずは純粋に基本となるコードを掲載します。 これを元にした、配列(Array) の拡張、jQuery の拡張は後に記載します。
/** * 指定された配列を Fisher–Yates法 で シャッフルします。 * (注意:引数に渡した配列自体をシャッフルします。) * @param number[] arr シャッフルしたい配列 * @return number[] シャッフルされた配列 */ var shuffle = function (arr) { var i, j, tmp, length; for (length = arr.length, i = length - 1; i > 0; i--) { j = Math.floor(Math.random() * (i + 1)); tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } return arr; };
配列(Array)の機能拡張として shuffle メソッド を追加する方法
配列自体を拡張したい場合、上記のメソッドを Array
のプロトタイプへ設定すれば可能となります。
いわゆる prototype拡張 といったところです。
配列を引数として取らない代わりに、this
を利用しているところがポイントです。
Array.prototype.shuffle = function () { var i, j, tmp, length; for (length = this.length, i = length - 1; i > 0; i--) { j = Math.floor(Math.random() * (i + 1)); tmp = this[i]; this[i] = this[j]; this[j] = tmp; } return this; };
jQuery の プラグイン として shuffle メソッド を追加する方法
jQuery に shuffle メソッド を拡張する場合、プラグインとして機能追加します。 具体的には以下のようなコードになります。
jquery.shuffle.js
(function (window, document, $, undefined) { $.fn.shuffle = function () { var i, j, tmp, length; for (length = this.length, i = length - 1; i > 0; i--) { j = Math.floor(Math.random() * (i + 1)); tmp = this[i]; this[i] = this[j]; this[j] = tmp; } return this; }; })(window, document, jQuery);
ちなみに、上記の jQuery.shuffle を利用して、リスト(li
)をシャッフルするコード(HTML と JavaScript)は以下のようになります。
<ul id='list'> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul>
$('#list li').shuffle().appendTo('#list');
参考記事
Akinari Tsugo
20:45
JavaScript
Blogger で 関連する記事 を 表示する 方法
Blogger で 関連記事を表示する 方法がもう少し簡単にならないかと試行錯誤した結果…結局作ってしましました。 実装は JavaScript で Google Feed API を利用しています。
関連記事表示モジュールの設置手順
- メニュー から [テンプレート] を選択し、 [HTML の編集] を開きます。
<b:widget type='blog'>
の子要素で<b:includable />
の並びに以下のコードを追加します。
<b:includable id='related-posts' var='post'> <div class='RelatedPosts'> <p><h2>関連記事</h2></p> <div id='blogger.relatedposts.label'> <b:loop values='data:post.labels' var='label'><data:label.name/><b:if cond='data:label.isLast != "true"'>,</b:if></b:loop> </div> <div id='blogger.relatedposts.output'></div> </div> <script type='text/javascript'> var RELATEDPOSTS_SETTINGS = { BlogURL: 'garafu.blogspot.jp', MaxResults: 5, TitleVisible: true, ThumbnailVisible: true, SnippetVisible: true, NoThumbnailImageUrl: 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkmgOsf9Jh-vnNhFSlUR7rTZe2p93Va3Ne9Avj8RDs5EZG9eFXFnIAfh0ViFbNn7CevhHsD-3eXnl8eT4bwYbP1gRpIB5QmuoAFBC4gPwoEDn5-IhJMN11ejrmifQghsUSHa2S17NsT0Y/s1600/noimage.png', NoRelatedPostsMessage: 'No Related Posts...', }; </script> <script type="text/javascript" src="//www.google.com/jsapi"></script> <script type="text/javascript" src="//garafu.github.io/blogger.relatedposts/release/0.0.1/blogger.relatedposts.min.js"></script> </b:includable>
- 以下の設定を変更します。
- BlogUrl
- Bloggerのドメインを設定します。
- MaxResults
- 表示する最大記事数を設定します。
- TitleVisible
- 記事タイトルを表示するかどうかを設定します。
- ThumbnailVisible
- 記事中最初の画像(サムネイル)を表示するかどうかを設定します。
- SnippetVisible
- 記事の最初の本文120文字程度を表示するかどうかを設定します。
- NoThumbnailImageUrl
- ThumbnailVisible=true のとき、記事中最初の画像がない場合に表示する画像のURLを設定します。
- NoRelatedPostsMessage
- 関連する記事が見つからなかった場合に表示する文字列を設定します。
- 関連記事を表示したい位置に以下のコードを追加します。
ここでは、本文の直後に挿入することにします。
- 保存して公開します。
ブログ記事を確かめてみると関連記事が表示されると思います。 CSSの設定がないので、任意に設定いただければ良いかなと思います^^
ちなみに、記事最初にあるようなスタイルで表示するには、以下のCSSを利用していただければ表示できます。
.RelatedPosts { margin: 5em 0; } .RelatedPosts h2 { padding: 10px; color: #222222; font-family: 'Open Sans',sans-serif; font-size: 16px; font-weight: bold; line-height: 1.2em; margin-bottom: 6px; text-transform: uppercase; border-bottom: 1px solid #D3D3D3; margin-top: 5px; } .RelatedPosts ul { list-style-type: none; margin: 0 !important; } .RelatedPosts .item-content { border: 1px solid #ddd; padding: 10px; margin-bottom: 10px; -webkit-box-shadow: 1px 1px 2px 0 #d0d0d0; -moz-box-shadow: 1px 1px 2px 0 #d0d0d0; box-shadow: 1px 1px 2px 0 #d0d0d0; border-radius: 4px; } .RelatedPosts .item-thumbnail { float: left; margin: 0 5px 5px 0; } .RelatedPosts img { border-radius: 10px; padding: 3px; }
Akinari Tsugo
14:10
Blogger,
JavaScript