rcmdnk's blog

ソーシャル・ネットワーク [DVD]

ソーシャルボタンにツイートされた数とかを載せるのには JavaScriptでAPIを叩いて数取ってきて挿入、みたいなことが良くされますが、 いくつも違うソーシャルボタンがあると結構負担がかかります。

このブログはテストも兼ねて毎日一度はビルドして更新する様にしているので 最大一日程度なら数が変わらなくてもそんなに困らないだろう、 ということで数をビルド時に取ってきて埋め込んでしまうようにしました。

Sponsored Links

このブログでのソーシャルボタン

これまでにソーシャルボタン関係では

みたいな事をやって来ましたが、 基本的には上にも書いたとおりページを読み込んだ時に JavaScriptで数を取ってきて書いてました。

pluginを使ってjekyll build時に数を取ってくる

上のレポジトリに入ってます。 ソーシャルボタンを自作に変更 の所でやったJavaScriptで数だけ取ってくる物も source/javascripts/share-numbers.jsに入っています。

ビルド時に取ってくるには plugins/share-numbers.rbpulginsディレクトリに入れて、 _config.ymlの中で

# CPUs for parallel jobs
n_cores: 4

# Choose method
share_official: false
share_custom: true
share_static: true
share_check_all: false

# Select shares
hatebu_button: true
twitter_button: true
googleplus_button: true
facebook_button: true
pocket_button: true
linkedin_button: false
stumble_button: false
pinterest_button: false
buffer_button: false
delicious_button: false
tumblr_button: false

な感じで設定してあげるとtrueになってるボタンの数を プラグインの中で取ってきて source/_includes/post/sharing_custom.htmlの中に書き込みます。

これをページの上部や下部等においておけばOK。

Octopressデフォルトだと source/_layouts/post.htmlの中に元のsharing.htmlを呼び込んでるものがあるのでそこで

post.html
1
2
3
4
5
6
7
8
9
10
 </p>
 {% unless page.sharing == false %}
+{% unless site.share_official == false %}
 {% include post/sharing.html %}
 {% endunless %}
+{% if site.share_custom == true %}
+{% include post/sharing_custom.html %}
+{% endif %}
+{% endunless %}
 <p class="meta">

な感じで入れておくと最初からあるものと置き換えられます。

hatebu_buttontwitter_buttongoogleplus_buttonfacebook_buttonpocket_buttontrueな状態で450位あるこのブログをjekyll buildすると 8 coresな環境で1分半位かかります。

Parallelに事項しない(n_cores: 1)でやると13分程かかるので ちょっとCPUが沢山使える所でjekyll buildしたい所です。

今は主に werckerを使ってBitbucketのプライベートレポジトリからOctopressを自動デプロイする でやった様にwerkerでビルドしてますが、 werkcerでのテスト環境がどんな環境なのか探してみても ちょっと見つからなかったんですが、 cat /proc/cpuinfoしてみたら

$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 62
model name : Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
stepping : 4
microcode : 0x415
cpu MHz : 2494.070
cache size : 25600 KB
physical id : 1
siblings : 8
core id : 0
cpu cores : 1
apicid : 32
initial apicid : 32
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu de tsc msr pae cx8 sep cmov pat clflush mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes rdrand hypervisor lahf_lm ida arat epb pln pts dtherm fsgsbase erms
bogomips : 4988.14
clflush size : 64
cache_alignment : 64
address sizes : 46 bits physical, 48 bits virtual
power management:

...

な感じのCPUが8つある環境だったので ちょっとthreadを2、4、8、16とかでやってみたところ、 ちゃんと8で一番速く(丁度シングルスレッドの8倍位)になったので特に制限もなく使えるのかな、と。

それでもちょっと余計に時間がかかるようになりますが、 その代わりページの表示は大分速くなったと思います。

Sponsored Links
Sponsored Links

« OctopressでJavsScriptやHTMLを圧縮する CSSの読み込み負担を下げる »