Hatena::ブログ(Diary)

きんいろモザイク良いです このページをアンテナに追加 RSSフィード

August 15(Wed), 2012

FirefoxのHatena Bookmark拡張でGoogleやYahooの検索結果にブクマ数が表示されない、の対応

タイトルの通り、いつからか、FirefoxHatena Bookmark拡張GoogleYahoo検索結果にブクマ数が表示されなくなってしまったので、最近Chrome検索するようにしていたけど、やっぱりメインブラウザであるFirefox検索したかったので対応した。



Hatena Bookmark拡張を使い出す前に使用していた、Greasemonkeyスクリプトを使用させてもらうことにした。ただ、このスクリプトYahoo対応していなかったので対応させた。

gy_plus_hb.user.js

参考

2005-12-07 - いぬビーム 



ついでに前に書いた、Google検索結果にTweet数を表示するGoogleTweetCounterもYahoo対応させた。

GoogleTweetCounter for Greasemonkey 



おわり

August 05(Sun), 2012

Windowsで良い感じのターミナル環境を構築してvimとかgitとかtmuxを使う

会社の先輩とかに、Windowsで良い感じのターミナル環境を構築した話をしたら、結構受けが良かった(ような気がしたので)のブログにも書いてみる。


f:id:alexam:20120805194152j:image



で、その方法だけど、

を用いることで実現できた。




上の必要ものを挙げた時点で、だいたい分かると思うけど、一応具体的な手順も説明してみる。


  1. VirtualBoxを使用してCentOSゲストOSとして立ち上げる。
  2. ホストOSであるWindowsドライブを、ゲストOSであるCentOSと共有する。
  3. ホストOSであるWindowsからTeraTermで、ゲストOSであるCentOSSSH接続する。



これであとは、CentOSSSH接続したTeraTermからWindows上のファイルに対して、vim編集したり、gitしたり、findしてxargsしてgrepしたり、シェルスクリプトを実行したりできるようになる。
僕はTeraTermに慣れているのでTeraTermからSSH接続したけど、CentOS側のターミナルを使っても別に良いと思う。
VirtualBoxにはシームレスモードという、VirtualBox上で動作しているLinuxアプリケーションを、あたかもWindowsアプリケーションのように使用できるモードがあるのでそれを使うと良いと思う。



こんな感じでCentOSターミナルWindowsアプリケーションみたいに使用できる。

f:id:alexam:20120805194153j:image



シームレスモードを使用するには、Guest Additionsをインストールする必要があるけど、確かここで少しハマったような気がする。
多分、イカの記事を参考にインストールしたような気がする。

CentOS 6.2にVirtualBox Guest Additionsをインストールメモ - hirokan55の日記 

VirtualBox上のCentOSにGuest Additionsをインストール : IT独学勉強会 




とにかく、これで普通にLinuxターミナルが使えるので、色々と面倒なCygwinMinGWとかとサヨナラできたし、最初から普通ターミナルが入っているMacを羨ましいと思わなくなった。
今回の環境を構築するための一番のポイントかつ難所なのが、仮想マシンを動作させても重くならないスペックPCを用意することだと思うけど、VAIO Zを買えばすぐに解決するのでVAIO Zを買うと良いと思う。MacBook Air2台分くらいの値段で爆速スペックのものが買えると思う。
ちなみに、僕の構成のVAIO Z(Core i7-3612QM, メモリ8G, SSD 256G RAID0)だと、メモリ食いで有名なFirefoxGoogle Chromex-アプリとかと一緒にVirtualBox使っても、ほとんど重くなったりしていない気がする。






あと、最近プライベートGitリポジトリがいくつでも作成できるbitbucketを使いだそうと思っていて、今回の環境で試してみたら少しハマってしまったのでメモ



CentOSSSH接続したTeraTermからHTTPSでcloneしようとしたらイカのようなエラーが出てcloneできなかった。

(gnome-ssh-askpass:7393): Gtk-WARNING **: cannot open display:


試しにCentOS側のターミナルでcloneしてみたら原因がわかった。

HTTPSでcloneしようとすると、パスワード入力するためのGNOMEウィンドウが立ち上がろうとするのが原因だった。



これを回避するには

git clone https://username:password@bitbucket.org/username/hoge.git

みたいな感じでパスワードを含めるといけるけど、セキュリティ的にあまりよろしくないと思うので、bitbucketに公開鍵を登録してSSH接続するようにした。



おわり

July 16(Mon), 2012

Pixivの検索結果に表示する作品数を増やしたりフィルタリングしたりソートするユーザースクリプト

いつの間にかPixortが閉鎖されていた。いつからかPixortからPixivへのリンク403エラーを出されるようになったりと、いつか閉鎖されるんじゃないかと思っていたけど、ついに閉鎖されてしまったようだ。人気順検索機能本家Pixivプレミアム会員の目玉?機能だけあって、やっぱり色々あったんだと思う。
これで以前に書いたPixortで403エラーが出なくなるユーザースクリプトも用済みになってしまった。



Pixortが無くなってしまったのは個人的には不便だと思うけど、かといってPixivのヘビーユーザでもないのに月525円払うのも少し躊躇してしまったので、本家Pixivでの検索を少しだけ便利にするユーザースクリプトGreasemonkeyスクリプト)を書いた。


PixivSortFilterAddItem for Greasemonkey



機能は、

の4つとなっている。


これくらいであれば、多分、怒られないんじゃないかと思う。
ちなみにPixivAPIを公開してないので、1ページに表示する数を増やすためにスクレイピング的なことをやっているけど、常識的な範囲内(1秒間隔)でアクセスしに行っているので多分大丈夫だと思う。
あとFirefoxでもChromeでも動作する。ただ、僕はあまり好きではないので入れてないけど、autopagerize的なものを入れていると多分ちゃんと動作しないと思う。



デフォルトでは、1ページに通常の3倍の数の作品を表示、ブックマーク数が3以下の作品は表示しない、作品リンクは別タブで開く、という設定になっている。

変更するにはイカのように直接コード編集する。


  • 1ページに表示する数を変更するには28行目のMULTIPLEの値を変更します。
  • ブックマーク数でフィルタリングする値を変更するには30行目のFAV_FILTERの値を変更します。
  • 作品リンクを別タブで開くかどうかは32行目のLINK_BLANKの値を変更します。

※作品の表示数を通常の2倍にした場合、表示されるまでの時間が約1秒多くかかるようになり、3倍にした場合は約3秒多くかかるようになります。

PixivSortFilterAddItem for Greasemonkey



※2012/07/16 追記

他のマシンブラウザでも動作するかテストしてたら、なぜか検索結果に作品がひとつも表示されないので何でかな、と調べていたら、Pixivログインしていないと検索結果にブックマーク数がまったく表示されない、というPixiv仕様が原因だった。あまりPixiv使ってないので知らなかった。
なのでPixivログインしていない、かつ、FAV_FILTERを1以上の値にしていると検索結果に何も表示されなくなってしまうので注意。




PixivSortFilterAddItem for Greasemonkey

// ==UserScript==
// @name           PixivSortFilterAddItem
// @namespace      http://d.hatena.ne.jp/alexam/
// @description    Pixivの検索結果をソートしたりフィルタリングしたり1ページに表示する数を増やしたりできます。
// @version        0.2.2
// @include        http://www.pixiv.net/search.php*
// @include        http://www.pixiv.net/tags.php*
// ==/UserScript==

(function (d, func) {
	var h = d.getElementsByTagName('head')[0];
	var s1 = d.createElement('script');
	s1.setAttribute('src', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js');
	s1.addEventListener('load', function() {
		var s2 = d.createElement('script');
		s2.textContent = 'jQuery.noConflict();(' + func.toString() + ')(jQuery);';
		h.appendChild(s2);
	}, false);
	h.appendChild(s1);
})(document, function($) {

	/**
	  1ページに作品を通常の何倍表示するか
       Ex) 1なら通常通り, 2なら通常の2倍, ...
	      2倍にすると表示されるまでの時間が約1秒多くかかるようになり、
	      3倍だと約2秒多くかかるようになる
	**/
	MULTIPLE = 3;
	// ブックマーク数が以下の値未満の場合は表示しない
	FAV_FILTER = 3;
	// リンクを別のタブで開くかどうか true or false
	LINK_BLANK = true;



	function get_images(page) {
		if (page != 1) {
			page++;	
			if (page <= get_image_limit) {
				url = url.replace(/p=\d+/, 'p='+page);
			} else {
				return 0;
			}
		} else {
			page++;	
			if (page <= get_image_limit) {
				url += ('&p='+page);
			} else {
				return 0;
			}
		}
		var req = new XMLHttpRequest();
	        req.open('GET', url, true);
	        req.onload = function (event) {		
        	        $(req.responseText).find('#search-result').children('.images').children('.image').each(function() {
			        $('#search-result').children('ul').append($(this));
		        });
		        get_count++;
                        if (get_count == (MULTIPLE-1)) {
			        var show_images = filter_blank_sort();
			        $('#loading').remove();
			        $('#search-result').children('ul').empty().append(show_images).show();
		        }
	                req = null;
	        }
	        req.onerror = function (event) {
	                alert('画像の取得に失敗しました。');
	                req = null;
	        }
	        req.send(null);
	        setTimeout(function() {
		        get_images(page)
	        }, 1000);
	}

	
	function filter_blank_sort() {
		$('#search-result').children('.images').children('.image').each(function() {
			var fav = $(this).children('ul').children('li:first').children('a').text();
			if (fav < FAV_FILTER) {
				$(this).remove();
			} else {
				if (LINK_BLANK) {
					$(this).children('a').attr('target',  'blank');
				}
			}
		});
		var images = $('#search-result').children('.images').children('.image').map(function() {
			return $(this);
		});
		for (var i=0; i<images.length; i++) {
			for (var j=i+1; j<images.length; j++) {
				var fav1 = $(images[i]).children('ul').children('li:first').children('a').text();
				var fav2 = $(images[j]).children('ul').children('li:first').children('a').text();
				if (fav1 != '') {
					fav1 = parseInt(fav1);
				} else {
					fav1 = 0;
				}
				if (fav2 != '') {
					fav2 = parseInt(fav2);
				} else {
					fav2 = 0;
				}
				if (fav1 < fav2) {
					var tmp = images[i];
					images[i] = images[j];
					images[j] = tmp;
				}		
			}
		}
		var show_images = "";
		for (var i=0; i<images.length; i++) { 
			show_images += $('<div>').append(images[i]).html();					
		}
		return show_images;
	}

	var get_count = 0;
	var url = location.href;
	var page = url.match(/p=(\d+)/);
	var get_image_limit;
	if (page !== null) {
		page = parseInt(page[1]);
		get_image_limit = MULTIPLE - 1 + page;
	} else {
		page = 1;
		get_image_limit = MULTIPLE;
	}
	if (MULTIPLE != 1) {
		$('#search-result').children('ul').hide();
		$('#search-result').prepend(
			'<div id="loading" style="width:50px;margin-left:auto;margin-right:auto;">'+
			'<img src="http://semifo.pa.land.to/loading.gif" /></div>'
		);
		if (page != 1) {
			$('.pager').empty().append(
				'<a href="'+url.replace(/&p=\d+/, '')+'" style="margin-right:15px;">&lt;&lt;</a>'+
				'<a href="'+url.replace(/p=\d+/, 'p='+(page-MULTIPLE))+'" style="margin-right:10px;">&lt;</a>'+
				'<a href="'+url.replace(/p=\d+/, 'p='+(page+MULTIPLE))+'" style="margin-right:10px;">&gt;</a>'
			);
		} else {
			$('.pager').empty().append(
				'<a href="'+url+'" style="margin-right:15px;">&lt;&lt;</a>'+
				'<a href="'+url+'&p='+(page+MULTIPLE)+'">&gt;</a>'
			);
		}
		get_images(page);
	} else {
		var show_images = filter_blank_sort();
		$('#search-result').children('ul').empty().append(show_images);
	}
});


July 11(Wed), 2012

VAIO Zを購入した(タッチパッドに関して追記あり)

VAIO Zを購入した。


f:id:alexam:20120711055205j:image


Core i7-3612QM, メモリ8G, ディスプレイ Full HD 1920×1080, SSD 256G RAID0, という20万くらいの, ほとんど妥協してない構成にした。
カラーは「グロッシープレミアムカーボン」という, VAIO 15周年記念特別仕様の, 選択するだけでプラス1万円になるソニー信者用のやつにした。凄くテカテカしていて指紋もつくけど、信者欲は満たされると思う。
キーボードは前のVAIOでは調子に乗って英字キーボードを使用していたけど、会社では基本的には日本語配列キーボード配列の違いに凄くイライラしたので、日本語配列のかな文字なしにした。これからは基本的にはジェネラルスキルを身につけていきたいと思ってる。
それと第3世代 SSD RAID0はやばいと思う。起動からブラウザ立ち上げるまでの時間10秒くらいになった。これまで使っていたVAIOスリープモードからの復帰なみの速さ。やっぱりこのスペックバッテリーも9時間くらいもつのに重量が1.17kgというのは凄いと思う。




f:id:alexam:20120711055523j:image



f:id:alexam:20120711055524j:image



f:id:alexam:20120711055646j:image



f:id:alexam:20120711055647j:image




それと、MacBook Airを購入しようとしていた会社の同期にもVAIO Zを購入させることに成功した。その同期はMacBook Airを購入するため秋葉原に行くと言っていたので、僕も秋葉原に少し用があったので、ついていったのだけれど、そこでVAIO Z(その時点ではまだ注文しただけで届いていない)の素晴らしさを説くことによって, その同期はVAIO Zを購入するに至った。僕の信者スキルもかなり上がっているような気がした。ここ最近ソニーはほとんど良い話は聞かないけど、VAIO Zのような究極のモバイルPCはこれからも作り続けていってほしいと思う。


あとGoogle日本語入力インストールができなくて困っている。「Google Update のインストールに失敗しました。次のエラーが発生しました:0x8004071b」というエラーが何か出る。少し調べてみたら、しばらく放置していたら解決したという記事を見つけたけど、3日くらいたった今でも未だインストールできてない。後でちゃんと調べないといけない。面倒。


メールのプロの独り言: Google日本語入力がインストール出来ない件(仮説あり)




※2012/07/12 追記

コメントしていただいた方と同じく、僕のVAIO Zのタッチパッドにも1mmほど隙間があった。


f:id:alexam:20120712065708j:image


実はコメントしていただく前からこれには, 気づいていて, 信者から見て見ぬふりをしていたわけではなく, 普通に使用するには問題ないし, かといって修理に出したりすると1〜2週間くらいかかったりと面倒臭そうなので事実から目を逸らしていた。
ただ指摘されたら気になりだしたので少しWebでも調べてみると

タッチパットの建付けゴミ。目で見てわかるくらい左側の隙間が右側に比べて

空いてるずさんな造り(>ω< )

SONY VAIO Z part109

とあるように, タッチパッドの隙間は, これまでのVAIO Zについてはわからないが少なくとも夏モデルVAIO Zには, よく見られるものらしい。


サポートにも電話して「タッチパッドの隙間は仕様ですか?」と聞いてみた。すると, サポート側にあった夏モデルVAIO Zで確認した結果, それにも隙間があると言っていた。ただ, その隙間は左にではなく右上にあると言っていたので, 夏モデルが一律左下に隙間がある, というわけでもないのかもしれない。サポートは「これが仕様かどうかと言われると、うーん。。。」みたいなことを言っていた。
「夏モデル以前のVAIO Zにもこのような隙間はあったのでしょうか?」と聞くと, 「それはこちらでは確認できないです。」という返答が返ってきた。
「もし修理する場合無料でやってもらえるのでしょうか?やってもらえる場合は修理期間はどれくらいになりますか?」と聞くと「修理できるかどうかはお客様の実機を見てみないとわからない。なので修理期間、無料かどうかもわからない。ただできる限り迅速にお届けできるようにする。」みたいなことを言っていた。「では, 先ほど確認していただいた, 右上に隙間があるという, そちらにある夏モデルVAIO Zを修理できるかの確認と, その修理にかかる時間を確認していただいて後日伝えてもらう, みたいなことはできますか?」と聞くと, 「確認のため少し時間をいただけますか?」のあと「それは難しい。」という返答が返ってきた。


という感じで, 結局修理するには, 修理できるかどうかもわからないのに, サポートセンターVAIO Zを送って1〜2週間以上待たないといけない, ということらしいので, タッチパッドの隙間に関しては, このまま真実から目を逸らすという選択をすることにした。




ソニー信者をやるのも色々と大変だということを改めて実感した。
まあ, ただタッチパッドの1mm隙間以外は今のところ満足している, という, 信者らしいフォローを自分にも言い聞かせるように最後記述して記事終了。




※2012/07/12 追記

Google日本語入力の件だけど、いつの間にかインストールできるようになっていた。
リンクした記事で言及していたように、やっぱりWindowsアクティベーション関連が原因なんだろうか。よくわからない。




※2012/08/08 追記

SSD256Gベンチマーク

f:id:alexam:20120808203937p:image

参考

ソニーが基本的に好き。:新VAIO Zシリーズは、薄く軽くなってもパフォーマンスは上がっているのか?(基本スペック&ストレージ編)

店長野田の2011夏VAIO Z(Z21)、、、512GB SSDは本当に速いのか? - ソニーな店長のつぶやき???

June 09(Sat), 2012

cronを使用してMySQLを自動バックアップして古いものから順に削除するシェルスクリプト

シェルスクリプト勉強も兼ねて書いてみた。

#!/bin/sh

# MySQLユーザ名                                                                              
mysql_user=ikamusume
# MySQLパスワード
mysql_pw=iloveshrimp
# バックアップするデータベース名
mysql_db_name=shrimp_db
# バックアップ先
save_dir=/home/ikamusume/shrimp_backup/
# バックアップファイルを残す数
max_save_count=10
# バックアップファイル名
backup_name=`date +"%Y-%m%d-%H%M%S"`

mysqldump -u$mysql_user -p$mysql_pw $mysql_db_name > $save_dir$backup_name
zip $save_dir$backup_name.zip $save_dir$backup_name
rm -rf $save_dir$backup_name
file_count=`ls -F1 $save_dir | grep -v / | wc -l`
if [ $file_count -gt $max_save_count ] 
then
    rm -rf $save_dir`ls -F1tr $save_dir | grep -v / | head -1`
fi

このスクリプトをcronで定期的に実行するようにすると便利だと思う。


毎日0時

$crontab -e
0 0 * * * sh /home/ikamusume/shrimp_backup.sh

毎週月曜日の0時

$crontab -e
0 0 * * 1 sh /home/ikamusume/shrimp_backup.sh

※crotabでコマンドを使用する場合絶対パスで指定しないと動かなかったりする場合があるので、上のスクリプト環境にあわせて書き換える。取り敢えず、mysqldumpは絶対パスで指定しないと動かないと思う。
コマンドパスを調べるにはwhichコマンドを使用する。

$which mysqldump
/usr/bin/mysqldump