あるソフトウェアエンジニアの戯言

日々の開発やサーバ管理のなかで出てきたあれや、これや、あんなことや、こんなこと

キーワード「google」の記事 < 前のページ次のページ >
この記事のキーワード:   64bit   debian   google

sid の googleearth-package が新しくなったので、最新のGoogleEarthをインストールしてみたのだが、3Dの部分が表示されない。
原因は、nvidia-glx-ia32がインストールされていないことだった様子。(もちろん、グラフィックドライバがnvidiaであることが前提)

この記事のキーワード:   google   perl   携帯

gmailと自分の持っている携帯(softbank 821SH)との間で電話帳をsyncしたくて、いろいろ探していたのですが、gmailとはふりがなの同期ができないとの記述ばかりであきらめかけていました。

最近、変わったのかもしれませんが、gmailがエクスポートしてくれるvCardデータにそれらしきカラムがあるのを発見したので、結局自分で変換用のperl scriptを実装しちゃいました。
もし、同じようなことをしようとしていて悩んでいる人がいれば、なにかの足しにしてください。

vcard.pl

#!/usr/bin/perl

# sharp携帯のvcardデータをgmail対応に変換するスクリプト

use strict;
use warnings;
use utf8;
use Encode;
use feature qw(say switch);
use MIME::QuotedPrint;

my @cards;
my $card;
my @src = <>;

while (my $line = shift @src) {
  $line =~ s/\r?\n$//;
  while (@src and $src[0] =~ /^(\s|\=)/i) {
    my $l = shift @src;
    $l =~ s/^.(.*)\r\n$/$1/;
    $line .= $l;
  }
  my ($key, $value) = split /:/, $line, 2;
  given ($key) {
    when ('BEGIN') {
      $card = {};
    }
    when ('END') {
      push @cards, $card;
    }
    when (/^(N|TEL|EMAIL|ADR|NOTE|URL)\b/) {
      # デコードのみ
      $value = decode_vcard(\$key, $value);
      push @{$card->{$key}}, $value;
    }
    when (/^SOUND\b/) {
      # デコードして、フリガナに
      ($card->{'X-PHONETIC-LAST-NAME'}, $card->{'X-PHONETIC-FIRST-NAME'}) = split /;/, decode_vcard(\$key, $value);
    }
    when (/^X-GN\b/) {
      # グループ名 - noteへ
      push @{$card->{NOTE}}, decode_vcard(\$key, $value);
    }
  }
}

# 出力
foreach my $v (@cards) {
  print "BEGIN:VCARD\r\nVERSION:2.1\r\n";
  foreach my $k (keys %$v) {
    if (ref $v->{$k} eq 'ARRAY') {
      foreach my $val (@{$v->{$k}}) {
        print Encode::encode_utf8("$k:$val\r\n");
      }
    } else {
      if ($v->{$k}) {
        print Encode::encode_utf8("$k:$v->{$k}\r\n");
      }
    }
  }
  print "END:VCARD\r\n";
}

sub decode_vcard {
  my $key = shift;
  my $src = shift;
  my @dst;

  return '' unless ($src);

  my $charset;
  my $encode;
  if ($$key =~ s/(^|;)CHARSET\=(.*?)(;|$)/$3/) {
    $charset = 'shift_jis'; # $1;
  }
  if ($$key =~ s/(^|;)ENCODING\=QUOTED\-PRINTABLE(;|$)/$2/) {
    $encode = 1;
  }

  my @src = split /(.*?;)/, $src;
  foreach (@src) {
    if ($encode) {
      $_ = decode_qp($_);
    }
    if ($charset) {
      $_ = h2z(Encode::decode($charset, $_));
    }
    push @dst, $_;
  }
  return join('', @dst);
}


sub h2z {
  local $_ = shift;

  s/ヴ/ヴ/g;
  s/ガ/ガ/g;
  s/ギ/ギ/g;
  s/グ/グ/g;
  s/ゲ/ゲ/g;
  s/ゴ/ゴ/g;
  s/ザ/ザ/g;
  s/ジ/ジ/g;
  s/ズ/ズ/g;
  s/ゼ/ゼ/g;
  s/ゾ/ゾ/g;
  s/ダ/ダ/g;
  s/ヂ/ヂ/g;
  s/ヅ/ヅ/g;
  s/デ/デ/g;
  s/ド/ド/g;
  s/バ/バ/g;
  s/ビ/ビ/g;
  s/ブ/ブ/g;
  s/ベ/ベ/g;
  s/ボ/ボ/g;
  s/パ/パ/g;
  s/ピ/ピ/g;
  s/プ/プ/g;
  s/ペ/ペ/g;
  s/ポ/ポ/g;
  tr[ァィゥェォッャュョアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン゛゜ー、。・「」\x{ff5e}\x{2225}\x{ff0d}\x{ffe0}\x{ffe1}\x{ffe2}]
    [ァィゥェォッャュョアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲン゛゜ー、。・「」\x{301c}\x{2016}\x{2212}\x{00a2}\x{00a3}\x{00ac}];

  $_;
}
この記事のキーワード:   google

Linux版Google Earth 5。0 を debian の googleearth-package を使ってインストールしてみた。

$ make-googleearth-package --force

でパッケージの生成は一応完了。

$ dpkg -i dpkg -i googleearth_5.0.11337.1968+0.5.4-1_amd64.deb

でインストールも完了。

$ googleearth

で起動すると、メニュー他の日本語表示が全然おかしい。
でいろいろ調べた挙句、 ここ にそれっぽい情報を発見。

/usr/lib/googleearth/libQtCore.so.4
/usr/lib/googleearth/libQtGui.so.4
/usr/lib/googleearth/libQtNetwork.so.4

の3つをリネームして起動するとちゃんと表示されるようになりました。
おそらく、関連するqt4まわりのパッケージがちゃんとインストールされていることが前提なので、うまく動かない場合は、そちらをチェックしてみるのがよろしいかと。

この記事のキーワード:   WebBrowser   chrome   google

ものすごく地味な機能だけど、google chrome でテキスト部分をダブルクリックすると、辞書を参照しているとしか思えないような選択の仕方をする。
Firefoxやその他のWindows/linuxのアプリケーションでは、日本語をダブルクリックして単語選択しようとすると、平仮名、片仮名、漢字の連続を単語として認識するのが通常の動作だけれど、chromeじゃ、辞書に応じた選択がおこなわれる。
例えば、「この記事編集部分では」なんて文字列があるとき、「編集」あたりでダブルクリックすると、Firefoxなどでは「記事編集部分」の6文字が選択されるが、chromeじゃ「編集」だけが選択されるという具合。

動作に遅延もないので、ネットワークにアクセスしながらやっているわけではなさそう。

はたして、どうやってるのか、、、、
わからなければ、ソースがあるんだから、探せばいいやん、ということで、ソースプログラムを当ってみた。
果して、問題の箇所を発見。(linux版 chromiumのソースツリーを探索しました)

src/third_party/icu38/source/data/brkitr/.svn/text-base/cjdict.txt.svn-base

上記ファイルに40万語ほどの日本語辞書を発見しました。この辞書をもとに単語境界を検索している模様。
日本語以外にも簡体中国語とタイ語の辞書があるようなので、少くともこの二つの言語では同様の処理が可能なのではないかと推測される。
やるねぇ、google。

キーワード「google」の記事 < 前のページ次のページ >

キーワードリスト

バックナンバー