Runner in the High

技術のことをかくこころみ

Xubuntu13.10でDropboxのアイコンがインディケーターに表示されない

 いつからだったかは覚えてないが、なぜかDropboxのアイコンがインディケータに表示されなくなってしまった。
 通常は dropbox startを実行することによってデーモンを起動することができるのだが、今回は実行しても、下のような Dropbox Installation というダイアログと、それに続くデーモンをダウンロードするプログレスバー付きのダイアログが現れるだけで、一向に起動する試しがない。

Dropbox Installation

以下のステップを踏むことでこれは解決される

  1. まず Ubuntu Software Center から Dropbox をインストール
  2. ターミナルから sudo dpkg-reconfigure nautilus-dropbox を実行
  3. 同様に nautilus --quit を実行
  4. dropbox start でデーモンを起動


Ask Ubuntuでもこのアイコンが表示されないバグ?に関してたくさんのスレッドが立てられており、そのほとんどが13.10での現象らしい。

存在しているのに使われてないスワップパーティションを有効化する

 

Not Active
 

わざわざLinuxスワップパーティションを作ったのに有効化されない!!
そんなトラブルを解決するためのメモ。
イメージファイルをパーティションの代わりにするとかもできるらしいけどここではそんな立派なことはやりませんのであしからず。

まずはfdiskでスワップパーティションがあるかどうか確認。
/dev/sda4にあるのがわかる。

% sudo fdisk /dev/sda -l

Disk /dev/sda: 80.0 GB, 80000000000 bytes
ヘッド 255, セクタ 63, シリンダ 9726, 合計 156250000 セクタ
Units = セクタ数 of 1 * 512 = 512 バイ
セクタサイズ (論理 / 物理): 512 バイト / 512 バイ
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイ
ディスク識別子: 0x519e33b3

バイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 63 63167579 31583758+ 83 Linux
/dev/sda2 63168512 106233855 21532672 83 Linux
/dev/sda3 106233856 151781375 22773760 83 Linux
/dev/sda4 151781376 156248063 2233344 82 Linux スワップ / Solaris

mkswapコマンドでスワップ領域を/dev/sda4に設定

% sudo mkswap -L SWAP /dev/sda4
スワップ空間バージョン1を設定します、サイズ = 2233340 KiB
LABEL=SWAP, UUID=a8f385b2-9e9c-4e36-b395-07dab1450858

上で設定したスワップ領域をswaponコマンドで有効化

% sudo swapon -L SWAP

 

Activeになった
 

ちなみにスワップを無効化する場合はswapoffコマンドを使う

% sudo swapoff -L SWAP


スワップ領域操作の参考エントリ
http://d.hatena.ne.jp/pcmaster/20101011/p1

トラベリング(KEYTALK)のタブ譜をつくりました


おととい昨日あたりから急に作りたい欲に襲われたので作った。
Youtubeの「ひとりトラベリング」をかなり参考にさしていただきました。
こういう最近のおしゃれロックはリズムギターがよく聴こえないから楽譜にするのはむずかしいっすね。
あとドラムの人がすごいかっこよくてイケメン。
リードギターはじゃんじゃん歪ませたほうがたぶんかっこいいはず。
リズムギターは軽めのオーヴァードライヴでファンキーにどうぞ。

P.S. 2017/6/21
リンク切れになっていたのを修正しました

(Contents: Gtr1, Gtr2, Bass)
DOWNLOAD .ptb format

Xubuntu13.10で起動時にindicator-keyboardがクラッシュする

この一ヶ月の間に使っていたXubuntuのバージョンを一気にアップグレートした。
※12.04 LTS → 12.10 →13.04 → 13.10(いまココ)
 
アップグレードに際してはなんら問題はなかったもののログイン直後に
indicator-keyboard (0.0.0+13.10.20131010.1-0ubuntu1)
というパッケージによって大量の内部エラーダイアログに遭遇することがある。
 
また、いろいろ調べてみると、どうやらindicator-keyboardというものは13.10から導入されたものらしい。
UnityのインジケーターにIBusの動作状態を示すアイコンを表示する機能がIBus本体からなくなった代わりに、indicator-keyboardという、キーボード入力に関連する機能を扱うインジケーターが追加されました。テキスト入力の切り替えや設定、文字マップが使用できます。ただしステータス(現在半角か全角か)を表示する機能やMozcの各種ツールを起動する機能はありません。SaucySalamander/ReleaseNotes/Ja - Ubuntu Wiki 
ということで解決方法。ただ再インストールするだけ。
→しばらくはこれで対処できたが、しばらくしてまたクラッシュが頻発するようになった。
 これはもうアンインストールするしかない。
sudo apt-get remove --purge indicator-keyboard

必要のないログインセッションを消す

Xubuntuのログイン画面にてログインのセッションの選択をするドロップダウンリストがある。
インストールしたときのままだと「Xubuntuセッション」以外にもいろいろと選択肢があるが
Ubuntuセッション」も「GNOMEセッション」も使わないから消したいね、という記事

Xubuntu 10.10のログインセッション選択中の画面

手順としては、おもむろにSynapticパッケージマネージャを起動したのち
いくつかの残さなければいけないパッケージのみに注意しながら
必要のないものを削除していけばよいだけ。

残さなければいけないものは以下の5つ

  •   unity-greeter ... Unityは使わないとしても残さなきゃダメっぽい
  •   gir1.2-unity-5.0 ... これもUnityに関連しているらしいがよくわからん
  •   libunity9 ... 上のgir1.2-unity-5.0との依存関係によりアンインストール不可
  •   accountsevice ... useraddコマンドなどと関連しておりアンインストールするとやばい
  •   gnome-settings-daemon ... GNOMEセッションを使わなくても残さなきゃダメっぽい


自分の環境(Xubuntu 12.04 LTS)では上のパッケージだけを残せば問題は起きなかった。
おそらくこのなかで消しても問題のないものが環境によってはあるのかもしれないがそのあたりは未検証。
そもそもUnityを使う使わないに関係なく一部のパッケージは必ず残して置かなければならないらしい。
(参考:Ubuntu日本語フォーラム / 11.10でUnityを削除してみたら起動しなくなってしまいました

もし、上に挙げられたパッケージ(あるいは依存関係にあるなにか)を間違えて消してしまうと、下のようなダイアログが表示され、ログインできなくなる。

"gnome"の箇所は場合によっては"ubuntu"となることもある
こうなってしまったときは、落ち着いて別の仮想コンソールにログイン(CTRL+ALT+F1〜F6)したのち、間違えてアンインストールしてしまったパッケージを再インストールのこと。

みくったーの最新版をチェックするPerlスクリプトを作った

 

LWP::UserAgentHTML::TreeBuilderとかいう便利なライブラリを見つけた。
勢いにまかせてみくったーの最新版があるかどうかをチェックするスクリプトPerlで組んでみた。
やってることはダウンロードページのhtmlを無理やりスクレイピングしてるだけです。

#!/usr/bin/perl

#
# みくったーの最新版があるのかどうかを調べるPerlスクリプト
#

use strict;
use warnings;
use LWP::UserAgent;
use HTML::TreeBuilder;

my $target = 'http://mikutter.hachune.net/download';
my $conf = '/home/izumi/mikutter.0.2.2.1328/core/config.rb';
my $installed;
my $string;
my @vers;
my $ver;
my $rev;

# コンピューターにインストールされているバージョンを取得する
open (FILE, $conf) || die "Can't open: $!\n";
while () {
if ($_ =~ /REVISION/ && $_ !~ /TWITTER_AUTHENTICATE_REVISION/) {
if ($_ =~ /VERSION/) { $ver = $_; }
else { $rev = $_; }
}
}
close(FILE);

# ドットを取り除いて比較のために数値へ変換する
@vers = split(/,/, $ver);
$_ =~ s/[^0-9]//g foreach (@vers);
$rev =~ s/[^0-9]//g;
$vers[$#vers] = $rev;
$installed = $installed.$_ foreach (@vers);
$installed += 0;

# 表示のためにまたドットを含むフォーマットに戻す
foreach (@vers) {
$string = $string.$_;
$string = $string."." if ($_ ne $vers[$#vers])
}
print "\nInstalled Ver: ".$string."\n";

# 最新版のバージョンをウェブサイトから取得する
my $ua = LWP::UserAgent->new('agent' => "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)");
my $res = $ua->get($target);
my $content = $res->content;
my $tree = HTML::TreeBuilder->new;
my @items;
my $current;

$tree->parse($content);
@items = $tree->look_down('class', 'accordion versions')->find('li');
foreach (@items) {
$current = $_->as_text;
$current =~ s/[^0-9]//g;
$current += 0;
if ($current > $installed) {
print "Curent Ver: ".$_->as_text,"\n\n";
print "There is a new version!\n";
print "You have to update it ASAP.\n";
exit(1);
}
}

print "\nThere isn't a new version.\n";
print "You don't have to update it :P\n";
exit(0);

すっごい汚いスクリプトになったけど動くからいいだろ(すっとぼけ)

RadioTrayのプラグインを作る

RadioTrayというネットラジオを聴くためのアプリケーションに、プラグインの機能があるので
ちょろっとなにか作ってみる

必要なファイル

- 処理本体を記述するPythonスクリプト
- プラグインそのものの情報を記述するpluginファイル

インストール

/usr/share/radiotray/plugins/に2つのファイルを放り込むだけ

作る

ということでさっそく、簡単なプラグインを書いてみる

[RadioTrayPlugin]
name=Website Jumper
desc=Open the website of the current radio
script=WebsiteJumper.py
class=WebsiteJumper
author=IzumiSy
from events.EventSubscriber import EventSubscriber
from events.EventManager import EventManager
from Plugin import Plugin
import webbrowser

class WebsiteJumper(Plugin):

# 初期化時に実行される関数
def __init__(self):
super(WebsiteJumper, self).__init__()

# 何に使うのかはわからないが必要らしい
def getName(self):
return self.name

# プラグインの設定から有効化されたときに実行される関数
def activate(self):

# SONG_CHANGEDにフックする関数を登録
self.eventSubscriber.bind(EventManager.SONG_CHANGED, self.on_song_changed)

# プラグインメニューに登録
self.tooltip.addSource(self.def_tooltip)

# プラグインのメニューに表示するために必要な関数
def hasMenuItem(self):
return True

# メニューに登録する名前を返す
def def_tooltip(self):
return "Website Jumper"

# SONG_CHANGEDにフックされる関数
def on_song_changed(self, data):
global location

if ('location' in data.keys()):
location = data['location']

# メニューから選択された場合の処理
def on_menu(self, data):
print "[WebsiteJumper] open %s" % (location)
webbrowser.open(location)

コードを見てくれればほとんど解説はいらないはず。
アプリケーションを起動して、ラジオを聴くとSONG_CHANGEDイベントが起きるので、その際に今聴いているラジオ局のウェブサイトのURLをブラウザで開くだけのプラグインです。

ちなみに、ソースコードを見る限りプラグインからフックできるイベントは、いろいろあるらしい。

  • STATE_CHANGED... ラジオのON/OFFとかそういったときに発生するイベント
  • SONG_CHANGED... 聴いているラジオの音楽がかわったときに発生するイベント
  • BOOKMARKS_CHANGED... ブックマークが編集されたとき?に発生するイベント(未検証)
  • STATION_ERROR... ラジオ局に関連するエラーが起きた時に発生するイベント(未検証)
  • VOLUME_CHANGED... ボリュームが変えられたときに発生するイベント(未検証)
  • BOOKMARKS_RELOADED... ブックマークの再読み込み時?に発生するイベント(未検証)
  • NOTIFICATION... 通知に関するイベント?(未検証)

まあ他にもあるんだろうけど、それは自分で調べてください
ソースコードを読むといろいろ書いてあります。(適当)

IzumiSy/WebsiteJumper - Gist

NGC224(UPLIFT SPICE)のタブ譜を作りました


作りました。
CD音源だとギターが2本とシンセ的なのがいるように聴こえますが
そこらへんは面倒なので楽譜にしてません。
ちなみにベースは自分でコピーしたものじゃないのでご了承を。
楽譜ファイルにあるコピーライトの欄をご覧ください。

P.S. 2017/6/21
リンク切れになっていたのを更新しました

(Contents: Gt, Vo, Ba)
DOWNLOAD .ptb format