ローカルでポート変換

  • ローカルでポート変換
  • 待ち受けポート固定のアプリを複数のホストで動かしたい時、かつグローバルIPが一つしかなくてNATで制御を行っている場合、便利
  • ex)192.168.0.3 で40001から40002へ変換 (:40001 でも :40002 でもどちらでも疎通可)
sudo iptables -t nat -A PREROUTING -p tcp --dst 192.168.0.3 --dport 40001 -j DNAT --to-destination 192.168.0.3:40002

UbuntuでUSB接続のHDD(NTFS)の自動マウント時にパーミッションを指定する方法

外付けHDD(NTFS)をUSBで接続すると、自動マウントしてくれるのはよいのだがパーミッションが所有者のみ読み書きになっており、目的によっては不便。
Ubuntu 12.10 にて実験

  • /etc/fstab に以下の行を追加。
UUID=B474B12074B0E5F0 /media/mountpoint1 ntfs-3g defaults,umask=000 0 0

fstabに依存しないでgnome-mountはマウントしてくれるのかと思っていたが、
gnome-mountの挙動としては、デバイス検知→ mount -a →それでも対象のパーティションがマウントされなかった場合に、/media/{ユーザ名}/{パーティションボリューム} を自動作成して、それっぽいtypeでマウントする という感じだろうか。

Openoffice.org から LibreOfficeへの移行 (debian)

単純にアップデートがより最新だったので移行

  • 以下を /etc/apt/sources.list に追加
deb http://backports.debian.org/debian-backports squeeze-backports main
  • 実際にapt-get
sudo apt-get update
sudo apt-get install libreoffice libreoffice-gnome libreoffice-l10n-ja

Net::Google::Calendar で Google Calendar の予定作成

Term::ReadKey 便利。

#!/usr/bin/env perl
use Term::ReadKey;
use Net::Google::Calendar;
use DateTime;
# init
my $url = "https://www.google.com/calendar/feeds/#calendarname#/public/basic";
my $username = "#mail#";
my $title = "#title#";
# passwordget
print "enter your password :";
ReadMode "noecho";
chomp ( my $password = ReadLine 0 );
ReadMode "restore";
# init cal object
my $cal = Net::Google::Calendar->new ( url => $url );
$cal->login($username,$password);
print "\n";
# init event object
for ( my $i=1; $i <= 4; $i++){
    my $start = DateTime->new(
        time_zone => 'Asia/Tokyo',
        year      => 2012,
        month     => 11,
        day       => 23,
        hour      => 10,
        minute    => 30,
        second    => 0,
    );
    my $end = DateTime->new(
        time_zone => 'Asia/Tokyo',
        year      => 2012,
        month     => 11,
        day       => 23,
        hour      => 18,
        minute    => 0,
        second    => 0,
    );
    my $start = $start->add( days => (($i-1) * 7));
    my $end   = $end->add( days => (($i-1) * 7));
    print $start->strftime('%Y/%m/%d %H:%M:%S')."\n";

    my $entry = Net::Google::Calendar::Entry->new();
    $entry->title($title);
    $entry->status('confirmed');
    $entry->when($start,$end);
    $cal->add_entry($entry);
}

My Tracks で記録したKMLの高度情報が Google Earth 上で反映されない問題の解決法

原因:
KMLファイル上において 内ではなく
内に
absolute の記述があるため。

解決法:

<gx:Track>
<altitudeMode>absolute</altitudeMode>
<when>2012-10-07T22:59:42.000Z</when>
<gx:coord>136.931622 36.658851 477.79998779296875</gx:coord>
...
</gx:Track>

の様に書くとよい