まだWordPressの使い方がわかってないけど、初めてコメントを書くと僕の承認待ち状態になるはず。一度承認された人なら承認プロセスを経ずに即時にコメントが登録されます。要はいたずら防止。
それで、承認するとコメントした記事の下に「xx件のコメント」と出るようになります。
が、あまりに控えめな表示で分かりにくいので、右の欄に最近のコメントを出すようにしてみました。
まだWordPressの使い方がわかってないけど、初めてコメントを書くと僕の承認待ち状態になるはず。一度承認された人なら承認プロセスを経ずに即時にコメントが登録されます。要はいたずら防止。
それで、承認するとコメントした記事の下に「xx件のコメント」と出るようになります。
が、あまりに控えめな表示で分かりにくいので、右の欄に最近のコメントを出すようにしてみました。
DELLのIPS液晶のFull HDモニターが比較的安く出ていたので数日前に注文していたのが、今日届いた。
1ヶ月くらい前からボーナスで液晶モニターを買い換えたいなぁと思って物色していて、はじめは1920×1200くらいはほしいと思っていたけど、1920×1080のFull HDでも十分に思えてきて、DELLのU2311Hというモデルに決めた。
今まで使っていたのは16インチの1280×1024。こちらは在宅勤務用に置いておく。普段つなぐものがないので、サーバ用に小さめの中古PC買っちゃったりして。
そういえば、ワイドに対して従来のアスペクト比(1024×768とか1280×1024とか)ってスクエアって呼のね。なんか違和感。
twitterを眺めていたらこんな記事を見つけた。
2.2.7Rにあって、3.x-stableでなくなっているということは、自分がFreeBSDを使い始めた2.2.8Rにもあったのかなぁ。全然気づかなかった。
ちなみにこのページが動いているサーバもFreeBSD。またFreeBSD使ってみたくなってきた。
ここの続き。
早速firefox5を入れてみた。アドオンのTab scopeのバージョンを上げる必要があった以外は、特に問題なし。
むしろ、「タブをピン留め」機能がいい感じ。とりあえず、My yahooやらGoogle calendarやらなんてなをピン留め。
ここを見ると6/21の深夜にリリースとある。今日か。
3から4に上げるときはAdd-onが動かなくなったりしてかなり困ったけど、ここを見る限りは4から5は大丈夫そうな感じ。出たら試してみようかな。
とある理由でCSVからエクセルにデータを貼り付けるのに、CSVファイルがたくさんあって面倒なので、RubyでCSVをひらいてカンマ区切りの処理をして、win32oleで開いたエクセルのセルに1個ずつ貼りつけたところ、泣きそうなくらい遅くて悲しかったので、もっといい方法が無いか少し調べてみた。で、ここに辿りついて参考にさせていただいた。
結論的には、クリップボード経由で一括貼付けするのが超高速。
↓使ったコード。100×100=10000セルに値を貼り付けるだけ。
require 'win32ole' require 'win32/clipboard' # include Win32 # なくても動く? require 'benchmark' def getAbsolutePath filename fso = WIN32OLE.new('Scripting.FileSystemObject') return fso.GetAbsolutePathName(filename) end filename = getAbsolutePath("test.xls") xl = WIN32OLE.new('Excel.Application') book = xl.Workbooks.Open(filename) xl.Visible = true x=[] 1.upto(100) {|r| x[r-1] = [] 1.upto(100) {|c| x[r-1] << r*c } } begin book.Worksheets("sheet1").select puts Benchmark::CAPTION puts Benchmark.measure{ Win32::Clipboard.set_data((x.map{|a| a.join("\t")}.join("\r\n"))) book.Worksheets("sheet1").paste('Destination' => book.Worksheets("sheet1").Range("A1")) Win32::Clipboard.empty } book.Worksheets("sheet2").select puts Benchmark::CAPTION puts Benchmark.measure{ 1.upto(100) {|r| 1.upto(100) {|c| book.Worksheets("sheet2").Cells(r,c).Value = x[r-1][c-1] } } } ensure book.Save book.Close xl.Quit end
これを実行した結果が↓。
C:\work\hoge\win32ole_xls>ruby test_xls.rb user system total real 0.000000 0.000000 0.000000 ( 0.053707) user system total real 2.969000 1.906000 4.875000 ( 36.125617)
はじめはクリップボード経由、次はセル一つ一つコピー。realのところの秒数が体感速度と思うけど、クリップボード経由はほんの一瞬。セル一つ一つは30秒くらい。クリップボード経由のほうがはるかに速い。
ExcelのAPIを呼ぶ毎のオーバーヘッドがすごいのだろうか。
余談
win32/clipboardを使えるようにしたときのメモ。こちらもかなり簡単。VC++の環境設定がされたコマンドプロンプトで↓を実行するだけ。
> gem install win32-clipboard
いつだかにActiveTclを8.5.9にアップデートしてからRuby-1.9.2-p180をビルドし直したらext/tkのコンパイルに失敗していたことに最近気づいた。
昨日の夜からいろいろ調べたら、どうやら要因が2個あるっぽいことがわかった。
一つ目は、ActiveTcl側の変更でextconf.rb でのライブラリチェックに失敗していたこと。二つ目は、同じActiveTcl側の変更でVC++2010のヘッダーでdefineの競合がおきていたこと。
どちらも、C:\Tcl\lib\tclConfig.sh にある「-Dintptr_t=int -Duintptr_t=unsigned\ int」が悪さをしているよう。そういう意味では根本は1つか。
一つ目の方は、ここのパッチをあてる。ただし、そのままでは通らないので少し修正必要。要は途中に半角スペースのある「-Duintptr_t=unsigned\ int」をそのままコマンドラインオプションで指定するのではなくヘッダーファイルで指定するようにする変更。
2つ目の方は、c:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.hの以下の部分。
#ifndef _INTPTR_T_DEFINED #ifdef _WIN64 typedef __int64 intptr_t; #else typedef _W64 int intptr_t; #endif #define _INTPTR_T_DEFINED #endif #ifndef _UINTPTR_T_DEFINED #ifdef _WIN64 typedef unsigned __int64 uintptr_t; #else typedef _W64 unsigned int uintptr_t; #endif #define _UINTPTR_T_DEFINED #endif
さっきの-Dで定義済みだとtypedefで同じ名前の型を定義することになってしまうので、とりあえずtclConfig.shに「-D_INTPTR_T_DEFINED=1 -D_UINTPTR_T=1」を追加。
これで無事コンパイルが通った。めでたしめでたし。
パンくずリストというカテゴリの階層を表示するやつ、
Snapshots » その他 » breadcrumb
こんなのを、ここを参考に設定してみた。
変更点は、
functions.phpに以下を追記
function get_breadcrumbs(){ global $wp_query; if ( !is_home() ){ // Start the UL echo '<div class="breadcrumbs"><ul>'; // Add the Home link echo '<li><a href="'. get_settings('home') .'">'. get_bloginfo('name') .'</a></li>'; if ( is_category() ) { $catTitle = single_cat_title( "", false ); $cat = get_cat_ID( $catTitle ); echo "<li> » ". get_category_parents( $cat, TRUE, " » " ) ."</li>"; } elseif ( is_archive() && !is_category() ) { echo "<li> » Archives</li>"; } elseif ( is_search() ) { echo "<li> » Search Results</li>"; } elseif ( is_404() ) { echo "<li> » 404 Not Found</li>"; } elseif ( is_single() ) { $category = get_the_category(); $category_id = get_cat_ID( $category[0]->cat_name ); echo '<li> » '. get_category_parents( $category_id, TRUE, " » " ); echo the_title('','', FALSE) ."</li>"; } elseif ( is_page() ) { $post = $wp_query->get_queried_object(); if ( $post->post_parent == 0 ) { echo "<li> » ".the_title('','', FALSE)."</li>"; } else { $title = the_title('','', FALSE); $ancestors = array_reverse( get_post_ancestors( $post->ID ) ); array_push($ancestors, $post->ID); foreach ( $ancestors as $ancestor ) { if( $ancestor != end($ancestors) ) { echo '<li> » <a href="'. get_permalink($ancestor) .'">'. strip_tags( apply_filters( 'single_post_title', get_the_title( $ancestor ) ) ) .'</a></li>'; } else { echo '<li> » '. strip_tags( apply_filters( 'single_post_title', get_the_title( $ancestor ) ) ) .'</li>'; } } } } // End the UL echo "</ul></div>"; } }
single.phpに以下を追記
<?php get_breadcrumbs(); ?>
style.cssに以下を追記
.breadcrumbs{ clear: both; padding: 0 0 28px 0; } .breadcrumbs ul { list-style: none; padding: 0; margin: 0; font-size:12px; } .breadcrumbs ul li { float: left; margin: 0 5px 0 0; padding: 0; }