2012年8月18日土曜日

Macでcrontab -e がエラーになる

Macでcron実行をしようとして crontab -e を実行するが、保存時に以下のようなエラーになる。 crontab: no crontab for username - using an empty one crontab: "/usr/bin/vi" exited with status 1 以下のようにすると解決した。 (Mac OS X 10.7 Lionで) export EDITOR=/usr/bin/vim を実行後、crontab -e

Macbook(Late 2007)のトラックパッドのクリックボタンが押しっぱなしになった

Macbook(Late 2007)のトラックパッドの調子がおかしくなった。
クリックボタンに少し触れただけでも反応するようになり、ついには押しっぱなしになるようになってしまった。

検索してみたところ、以下の事例を発見。

長時間使っているとトラックパッドやマウスの左クリックが出来なくなる


似てる状況なのでバッテリーを確認したところ、やはり膨らんでた。
外すと直ったので、同じ状況のようだ。
バッテリーを買い直すしかないか・・・。

調べてみたところ、以下が一番安い。


2012年8月11日土曜日

picasaに写真をアップロードするコマンド

Picasaに写真をアップロードするコマンドを発見。

googlecl

Pythonが必要です。
インストールは、python setup.py install コマンドを行うだけ。
初回実行時にブラウザが起動し、認証を行えば使用できます。

使い方も非常に簡単。

【アルバムを作成してアップロード】
google picasa create --title "albumname" folder/*.JPG

【現在あるアルバムに画像を追加】
google picasa post --title "albumname" folder/*.JPG

【アルバム名の表示】
google picasa list-albums

【アルバム内の画像ファイル表示】
google picasa list --title "albumname"

これらを使えば、シェルスクリプトでPicasaに自動的に画像をアップロードすることも出来そうです。

2012年7月12日木曜日

QNAP TS-439ProIIのmakeでエラー

QNAPはデフォルトでTelnetログインできるのが魅力。
ipkgパッケージでたいていのものはそろうが、それでも数が少ないため、make せざるをえない場合がある。
ところが、普通にmakeすると、以下のようなエラーが出る場合がある。

libtool: link: cannot find the library `/home/slug/optware/ts509/toolchain/i686-unknown-linux-gnu/i686-unknown-linux-gnu/lib/libstdc++.la'

どうやら、QNAPの中の人の環境がこのようなディレクトリ構成になっているらしい。
よって、以下のようにシンボリックリンクを貼ってあげる。


mkdir -p /home/slug/optware/ts509/toolchain/i686-unknown-linux-gnu/bin/
mkdir -p /home/slug/optware/ts509/toolchain/i686-unknown-linux-gnu/i686-unknown-linux-gnu/lib/  
ln -s /opt/bin/ld /home/slug/optware/ts509/toolchain/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-ld
ln -s /opt/bin/as /home/slug/optware/ts509/toolchain/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-as
ln -s /opt/lib/ /home/slug/optware/ts509/toolchain/i686-unknown-linux-gnu/i686-unknown-linux-gnu/lib/

これでも、以下のようなエラーがでる場合がある。

undefined reference to `__sync_fetch_and_add_4'

これは、TS-439 Pro II のCPUの指定をするようにフラグを設定してconfigureとmakeすると解決した。

export CFLAGS="-march=i686"
export CXXFLAGS="-march=i686"
./configure
make CFLAGS="-march=i686" CXXFLAGS="-march=i686"

これで、MeCab、Rubyなどもインストールできた!

2012年7月10日火曜日

TeraStation Pro TS-HTGL/R5 のE04エラーからの復旧

職場で使ってるTeraStation Pro(TS-HTGL/R5)が起動しなくなった。
電源を入れても、Now System Loading... のまま動かない。たまに、E04エラーになる。

というわけで、復旧作業を試みた。
すべてネットワークから切り離し、クロスケーブルを用意。
ファームウェアの最新版をダウンロードしておき、接続するPCのIPアドレスは192.168.11.1 にしておく。

1.フタを開けて、リセットボタンを押しながら起動。
フタをあけた左上の赤いボタンがそのボタンらしい。押しながら起動すると、”EM Mode Start"とディスプレイに出て起動が始まるが、やはりそのまま動かない。失敗。


2.HDDを入れ替えて起動。
 HDDをはずし、順番を入れ替えた。まずは1番と3番を入れ替えてみると、無事に起動。
 液晶に出るIPアドレスは192.168.11.150。用意したPCを接続し、ファームウェアアップデートを実行。再起動すると、元通り!

何が原因か結局わからなかったが、1番のディスクのみにして起動するとダメで、3番のみにすると起動したので、1番のディスクのシステム領域にエラーがあったのかも。

2012年7月1日日曜日

QNAPのNASでcron

QNAPのNASでcronを動かす場合、crontab -e ではダメです。
vi /etc/config/crontab で編集し、 crontab /etc/config/crontab でセットします。

2012年6月17日日曜日

QNAPにTelnetログインできなくなった場合

うっかりQNAPのNASへのログイン中、passwdファイルの設定を間違えてTelnet(SSH)出来なくなった場合は、以下のような方法で復旧できる。
(試したのはTS-439ProIIだが、他も同じだと思う)
・HDDを取り外し、電源ON。 ・SSHでログインを試みる。
   ポートが異なる場合もあるらしい(その場合、13131 で接続)
・admin/admin で ログインする。
・この時点で電源を入れたままHDDを接続。
・以下のコマンドを実行。
   > mdadm -A /dev/md9 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 > mkdir
  /mnt/HDA_ROOT;mount /dev/md9 /mnt/HDA_ROOT
・vi   /mnt/HDA_ROOT/.config/passwd で、passwdを書き換える。
・reboot コマンドで再起動。 

私の場合、ログインシェルを、ipkgで入れたbash に変更しようとして /bin/bash を書いてしまって発生した。
 ipkg でインストールしたものは /opt/bin に入るので、間違えないこと。 (シェルを換えるくらいなら chsh コマンドで行いましょう・・・)

2012年5月20日日曜日

vimの初期設定

vimの初期設定

 ・ステータスラインに改行コードと文字コードを表示する。 WindowsやMacなど、クロスプラットフォームで使っていると改行コードと文字コードの違いがやっかいなので、常に表示するようにする。
 .vimrc に以下を記述。 set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,%c%V%8P

 ・プラグイン管理用プラグイン Vundle の設定
 Vimプラグインを管理するためのプラグインを最初に導入。 これがないと、.vimディレクトリが散らかって管理が大変になるので。 git でインストール。

 git clone http://github.com/gmarik/vundle.git ~/.vim/bundle/vandle

 次に、.vimrc に以下の用に書く。
filetype off

set rtp+=~/.vim/bundle/vundle/
call vundle#rc()

Bundle 'gmarik/vundle'
'以下、インストールしたいプラグインを列挙する。(例)
Bundle 'Shougo/unite.vim'
Bundle 'Shougo/vimfiler'

filetype plugin indent on '最後の行
.vimrc に列挙したプラグインは、以下のコマンドで一括インストールできる。 :BundleInstall インストールしたいプラグインは、BundleSearch コマンドで探せるので、探して.vimrcに記述するとよい。 参考になった書籍は以下。

2012年5月15日火曜日

特許システムshareresearchからSDI配信結果を自動取得する

会社の特許システムは日立の shareresearch という特許検索用Webシステム。

使いやすいシステムなのだが、SDI検索配信(事前に検索式を登録しておくと、週次でメール配信される)の際に、複数の検索式を登録しておくと、重複する特許がある場合が多い。

いままでは一つずつみていたのだが、面倒なので重複する特許を自動で取り除いた結果を自動取得するPerlスクリプトを書いた。

流れは、WWW:Mechanize で自動ログイン→SDI配信結果ページ→結果をたどって行きTableを取得→HTML::TreeBuilderでリスト化→重複特許を除いたリストを出力という手順。
参考になったのはこれらの書籍。


ソースは以下。ただし、配信結果が最新のもののみで、たどったページが1ページのときしか取得出来ないと思われます。

#!/usr/bin/perl

use WWW::Mechanize;
use Data::Dumper;
use HTML::TreeBuilder;

my $login = 'http://hostname/SR-C/Login/Login.aspx';
my $header = 'http://hostname/SR-C/Main/Header/Header.aspx';
my $id = 'ID'; #登録アドレス
my $pass = 'password'; #登録パスワード

my $mech = new WWW::Mechanize(autocheck => 1,cookie_jar => {});
$mech->agent_alias('Windows IE 6'); #IE6になりすます


$mech->get($login); #ログインページにアクセス
$mech->submit_form(
form_name => "Form1",
fields => {
G02_TextBox1 => $id, #ID入力
G02_TextBox2 => $pass, #パスワード入力
},
button => "Button1" #ログインボタンを押す
);

$mech->get("http://hostname/SR-C/Main/Search/ReservationSearchResult2.aspx"); #SDI配信結果ページへ
$txt = $mech->content;

@line = split("\n",$txt); #ページを行で分割
@btn = ();

foreach $row (@line){
if($row =~ m/javascript:PostBack_Btn1\((.+?)\)/){ #配信結果IDを取得
$no = $1;
push(@btn,$no);
}
}

foreach $docno (@btn){
$mech->get("http://hostname/SR-C/Main/Search/ReservationSearchResult2.aspx");
# SDI配信結果ページへ
$mech->submit_form(
form_name => "Form1",
fields => {
DocView => $docno
}
);
$mech->follow_link(tag=>"frame",name=>"main"); #フレームなのでメインページへ
$content = $mech->content; #結果の取得

my $tree = HTML::TreeBuilder->new();
$tree->parse($content);

@Kouho = $tree->look_down("class","Item_BunkenNo"); #公報番号
@Title = $tree->look_down("class", "Item_Hatsumei"); #発明
@Author = $tree->look_down("class", "Item_Syutugannin"); #出願人

foreach $kouhou_no (@Kouho){
$no = $kouhou_no->as_text;
$kouhou_title = shift(@Title);
$tit = $kouhou_title->as_text;
$kouhou_author = shift(@Author);
$aut = $kouhou_author->as_text;
$kouhou_row = $no.",".$tit.",".$aut; #CSV化
push(@list,$kouhou_row);
}
}

my %count;
@list = grep {!$count{$_}++} @list; #重複削除

foreach $out(@list){
print $out,"\n";
}

#ログアウト
$mech->get("http://hostname/SR-C/Main/Header/Header.aspx");
$mech->submit_form(
form_name => "Form1",
button => "Button0"
);
$mech->get("../../Login/Logout.aspx?LogoutButton=yes&LANG=ja");
exit;

2012年5月13日日曜日

MacのHDDを取り替えたら、取り替え前のTimeMachineにアクセスできなくなった!

使用していたMacBookのHDDが壊れたので、新しいHDDを買って付け替えたところ、TimeMachineで昔のバックデータにアクセスできなくなって驚いたのでメモ。

新しいHDD(750GB)を取り付けて再インストールし、データの整理をかねて「最低限必要なデータ」だけをTimeMachineから復旧させた。



その後、いままでTimeMachineで使用してたディスクを再度、TimeMachineディスクとして割り当てた。
そうしたところ、HDDを取り替える前のデータにアクセスできなくなった!

このように、昔のバックアップは黒いウィンドウになってしまっている。
もしや、復旧できないのか?と思ったが、単純なことだった。
HDDが変わっているため、対応するフォルダが変わっただけみたい。
以下のように、「デバイス」にあるこのMac自体を選択すれば、以下の通り。
(デバイスに表示されていない場合、Finderのサイドバーのカスタマイズで表示すればOK)

選択できるようになった。よかった!

etckeeperをインストールして設定ファイルのバージョン管理

さくらのVPSにUbuntuがインストールされたので、設定する。
ここから、/etc 以下のファイルをいじってsshなどの設定をしていくのだが、その前に、etckeeper をインストールする。

etckeeper とは、/etc 以下のファイルを「自動的にバージョン管理」してくれるシステムである。これを入れておけば、このあといろいろな設定ファイルをいじっても、バージョン管理されているから安心して元に戻したりできる。

etckeeper を使うためには、バージョン管理システムが必要なので、まず git のインストールから。

リポジトリを更新して、git インストール。

sudo aptitude update 
sudo aptitude install git-core git-daemon-run gitweb

そして、etckeeper のインストール。

sudo aptitude install etckeeper

gitを使うように設定する。

sudo vi /etc/etckeeper/etckeeper.conf
VCS="git"   #<-コメント外す
#VCS="bzr"  <-コメントアウト

初期設定して、コミットする。

sudo etckeeper init
sudo etckeeper "1st Commit"

これで、aptでインストールした場合や日付が変わった時にetckeeperが自動的にコミットしてくれるので、/etc内の設定ファイルのバージョン管理はOK!

ログを見る場合や、変更箇所を見る場合など、gitですべて管理できる。

cd /etc
git log
git diff






さくらのVPSにUbuntuをインストールする


さくらのVPSがリニューアルして、1Gプランが980円に。いままではメモリ512MB,HDD20Gだったのが、メモリ1G,HDD100Gになったのでさっそく乗り換え。

せっかくなので、OSをデフォルトのCentOSから、Ubuntuに変えてみることにした。
なぜUbuntuの方を選んだかというと、


  • CentOSのパッケージが古い
これにつきる。デフォルトではgitも入っていないのでリポジトリを追加しなければいけない。UbuntuはDebian系なので更新も速く、パッケージ量が多い。別にDebianでも良かったのだが、流行のUbuntuに触れてみる目的もあり。

VPSへのインストールは簡単。以下、Macの場合で説明。
※:Macで行う場合はSafariの方がよいようだ。


  1. コントロールパネルにログイン。
  2. 「OS再インストール」メニューから、「カスタムOSインストールへ」
  3. 「OS選択」で、「Ubuntu 10.04 amd64」を選択。i386は32bitなので、64bitのこちらを。
  4. 「確認」ボタンを押すと、「インストールを開始しました」とウィンドウが出る。これを開きっぱなし、または保存しておく。Macの場合、「インストール情報」の部分をドラッグしてデスクトップなどにドロップするだけで保存できる。
  5. Javaのアプレットが立ち上がってくる。Javaがインストールされてないとインストール画面になり、さらにMacの「ソフトウェアアップデート」がかかるため、事前にインストールしておいた方がいい。
  6. VNCが立ち上がって、インストール画面になる。"Japan"→"Japan - Macintosh"と選択。
  7. ネットワークの設定(Configure The network)画面になるので、以下のように入力
    • IPアドレス:先ほどのページのIPアドレスを入力。
    • ネットマスク:255.255.254.0 ← デフォルトでは 255.255.255.0 になっているので注意!
    • ゲートウェイ:先ほどのページのゲートウェイを入力。
  8. 画面が真っ青になり(1分程度)、その後ステータスバーが数分間進行。
  9. パーティションの設定(Partition disks)画面になるので、以下のように入力。
    • Pertitioning method : (2行目) Guided – use entire disk
    • Select disk to partition: そのままエンター。
    • Write The change to disks?:Yes
  10. ステータスバーが数分間進行。
  11. ユーザー設定(Set up users and passwords)画面になるので、以下のように入力。
    • フルネーム。ユーザーアカウントと同じでもOK。
    • 使用するユーザーアカウントを入力。
    • パスワード。(2回)
    • Encypt your home directory?:No(ホームディレクトリの暗号化:しない)
  12. ステータスバーが進行。ここは少し時間がかかった。
  13. Finish The installtion で完了。Continue を選ぶとシャットダウンして、コンソールも切断される
  14. コントロールパネルにログインして、「VPSホーム」の「仮想サーバー操作」項目の「起動」ボタンを押す。「稼働中」になってインストール完了!
上記の途中でほったらかしにすると、いつの間にかコンソールの接続が切れてた。その場合、最初から作業をやり直すとインストール出来た。

さくらのサポートページにとても細かく手順が書いてある。

この次は設定。