メイン | 2006年10月 »

2006年9月 アーカイブ

2006年9月 7日

Yusukebe::Techスタート

プログラミングなどに関する雑多なエントリーはこちらにポストすることにしていこうかと思います。

はてな記法のテスト

小見出し

  • リスト
    • リスト
  • リスト

引用

#!/usr/bin/perl -w
use strict;
print <<END;
<html><body>
  <h1>Hello! スーパーpre記法.</h1>
</body></html>
END

2006年9月15日

Pageantとscreenが激しく便利な件について

やべ知らなかった。DECON関係のレポート見て発見したPagentとscreen使い始めた。俺にとっての遠隔ログイン革命だ。以下参考にしたサイト。

ちなみに.screenrcはこんな感じ。

escape ^t^t
altscreen on
hardstatus string "%H: %w"

ffmpeg関係のapt-line

ffmpeg関係のパッケージがあるapt-lineは以前こんな感じでいけてたのだけども、

deb ftp://ftp.nerim.net/debian-marillat/ sarge main

最近アドレスが変わったらしい。

(Verified) various packages such as mplayer,acroread...for unstable, testing and stable source packages are also given. (Added 2006-06-19, last checked 2006-06-20) (Download as text)

The debian-marillat repositories has moved to a new URL (previously at ftp.nerim.net) Packages in database: acidrip, acroread, acroread-escript, acroread-plugins, anyevent-perl, argyll-bin, autopano-sift, avidemux, babytrans, babytrans-common, ...

以下でいける。

deb http://www.debian-multimedia.org stable main
deb http://www.debian-multimedia.org testing main
deb http://www.debian-multimedia.org sid main
deb http://www.debian-multimedia.org experimental main
deb-src http://www.debian-multimedia.org sid main

config.yamlはUTF-8Nで

Plaggerのconfig.yamlはBOM無しのUTF-8Nで保存すること。

2006年9月16日

Filter::TruePermalinkとEntryFullTextの順番

Plaggerのconfig.yamlで最初Filter::TruePermalinkをFilter::EntryFullTextの後ろに書いていてたのだけど、するとURLにsession idが含まれるページとか毎回linkが変わってしまうのでキャッシュでヒットしてなかった。というマイナーな悩みを抱えてた。単純に、 F::TruePermalinkをF::TruePermalinkより前に書けば解決したっぽい。

  - module: Filter::TruePermalink
    config:
      follow_redirect: 0

  - module: Filter::EntryFullText

その代わり、EntryFullTextでhandleするURLはTruePermalinkで修正したURLを指定すること。。。。むむ、違う問題が発生した。あんまり推奨できないな。。。

Consolasフォントいい!

consolas.gif

ダウンロード: Consolas Font Pack

2006年9月17日

Yahoo!地図を利用して、緯度経度から住所を取得する

あるアイデアがあってGoogle Maps APIで取得した緯度経度情報から住所を取得したいんだけど、 結局これが一番簡単な方法なのかも。 緯度経度を元にYahoo!地図へのURLを生成してそのページのタイトルを引っこ抜く。 日本にしか対応していないのと、精度が悪い(?)という問題があるけど、結構いける。

#!/usr/bin/perl

use strict;
use LWP::Simple;
use HTML::TokeParser;

my $nl;#緯度
my $el;#経度
my $address;

#江ノ島付近
$nl = "35.29892761543741";
$el = "139.48415994644165";

my $url = "http://map.yahoo.co.jp/pl¥?nl=$nl&el=$el";
my $data = get($url);
my $p = HTML::TokeParser->new(¥$data);
if($p->get_tag("title")){
  $address = $p->get_trimmed_text;
}
$address =~ s/(Yahoo!地図情報)|( - )|(の周辺地図)//g;
print "$url¥n";
print "$address¥n";

実行結果はこんな感じ

http://map.yahoo.co.jp/pl?nl=35.29892761543741&el=139.48415994644165
神奈川県藤沢市江の島2丁目

Plaggerで自分のはてブをMTのサイドバーに表示

Plaggerを使って、自分のはてなブックマークをMTのサイドバーに表示する。 Publish::MTWidgetを使ってみる。以下config.yaml

global:
  timezone: Asia/Tokyo
  assets_path: /home/yusuke/var/plagger/assets
  log:
    level: info

plugins:
  - module: Subscription::Config
    config:
      feed:
        - url: http://b.hatena.ne.jp/kamawada/rss

  - module: Filter::Rule
    rule:
      module: Fresh
      limit: 1days

  - module: Publish::MTWidget
    config:
      blog_id: 2
      mt_path: /path/to/mt
      rebuild:
        - メインページ

2006年9月19日

Catalyst::Helper::View::TTSiteを使ってみる

はこべさんのところで知ったCatalystのViewヘルパースクリプトTTSiteを使ってみる。

$ ./script/myapp_create.pl view TT TTSite

すると、rootディレクトリの下にTemplate Tookitの雛形を作ってくれる。

$ ls -l
total 16
-rw-r--r--  1 yusuke yusuke 2551 Sep 18 22:45 favicon.ico
drwxr-xr-x  4 yusuke yusuke 4096 Sep 19  2006 lib
drwxr-xr-x  2 yusuke yusuke 4096 Sep 19  2006 src
drwxr-xr-x  3 yusuke yusuke 4096 Sep 18 23:02 static

libディレクトリには設定ファイル、srcにはTTファイルができる。 myapp.ymlに

View::TT:
        INCLUDE_PATH:
           - 'root/src'
           - 'root/lib'

としてディレクトリをView::TTのINCLUDEパスに含める。これで準備おけー。 自前の.ttファイルにもヘッダーとフッターをつけてくれて、それっぽい見た目にしてくれる。 見た目を変えたかったら設定を変えればよい。 例えばコントローラのRoot.pmでサンプルmessage.tt2を動かしてみる。

sub message : Local {
    my ( $self, $c) = @_;
    $c->stash->{message}  ||= $c->req->param('message') || 'No message';
    $c->stash->{template} = 'message.tt2';
}

ttsite01.gif

自前の.ttもbodyの中身を書けばヘッダとフッタが付いたHTMLを出力してくれる。 所詮ヘルパースクリプトなのでそのまま実用的なサイトで使うことはないにしろ、Template Toolkitをうまく使う方法として参考になるね。以下は中身が「テストですよ」のみの.ttを表示させた例。

ttsite02.gif

catalyst.pl の -short オプション

-short use short names, M/V/C instead of Model/View/Controller.

しらなかった

ffmpegをソースからインストール

http://www.debian-multimedia.org レポジトリからインストールできるstableのffmpegでは WMV3に対応していないので最新版のWindows Media形式のビデオなどをエンコードできない。 なので最新版をとってきてソースからインストールする。 その前にビルドに必要なライブラリーはapt-getでインストール。apt-lineに

deb http://www.debian-multimedia.org stable main

を追加。うちの環境だと以下の手順が必要だった。

# apt-get install libdts-dev
# apt-get install libgsm1-dev
# apt-get install liblame-dev
# apt-get install libvorbis-dev
# apt-get install libxvidcore4-dev
# apt-get install libx264-dev
# apt-get install libfaac-dev
# apt-get install libfaad2-dev

うんでいよいよソースをもってきてビルド。configureオプションは適当にこんな感じ。

$ svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
$ cd ffmpeg
./configure --disable-network --disable-ffserver --disable-ffplay --enable-shared ¥
--enable-mp3lame --enable-gpl --enable-faad --enable-vorbis --enable-pthreads ¥
--enable-faac --enable-xvid --enable-dts --enable-amr_nb --enable-amr_wb --enable-pp¥
 --enable-libogg --enable-libgsm --enable-x264 --enable-a52 --enable-a52bin

configureが終わると以下のようなメッセージが出るので言われたとおりにやる。

AMR WB FLOAT NOTICE ! Make sure you have downloaded TS26.204
V5.1.0 from
http://www.3gpp.org/ftp/Specs/archive/26_series/26.204/26204-510.zip
and extracted the source to libavcodec/amrwb_float

AMR NB FLOAT NOTICE ! Make sure you have downloaded TS26.104
REL-5 V5.1.0 from
http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-510.zip
and extracted the source to libavcodec/amr_float

そんで

$ make
# make install

あとは、/etc/ld.so.confに/usr/local/libを追加してldconfigを実行。

$ ffmpeg -formats

をすると、wmv3にも対応していることが確認できて、ちゃんとエンコードできたました。

お世話になったサイト

2006年9月22日

MT3.3xでTechnoratiへATOMフィードを使ってタグ情報を送る

このYusukebe::TechではMT3.3xで標準となったタグ機能を使ってエントリーの分類をしていますが、 そのタグ付け情報そのままをTechnoratiへ送る簡単な方法を試してみる。 Technorati Help: Tagsより

If your blog software supports categories and RSS/Atom feeds (like Movable Type, WordPress, TypePad, Blogware, Radio), just use the included category system and make sure you are publishing RSS/Atom feeds and your categories will be read as tags.

とのことで、たぶんATOMフィードのcategory要素のterm属性からタグ情報を拾ってきていると思われる。MovableTypeデフォルトのATOMフィードのテンプレートのままだとterm属性にはタグのID番号がついていてlabel属性にタグの名前が入る。このままだとtechnoratiにはタグのID番号、つまりただの数字がタグ情報として送られてしまう。なのでテンプレートを変更。

   <MTEntryIfTagged><MTEntryTags><category term="<$MTTagID encode_xml="1"$>" label="<$MTTagName encode_xml="1"$>" scheme="http://www.sixapart.com/ns/types#tag" />
   </MTEntryTags></MTEntryIfTagged>

を以下のようにする。

   <MTEntryIfTagged><MTEntryTags><category term="<$MTTagName encode_xml="1"$>" />
   </MTEntryTags></MTEntryIfTagged>

結構強引なやり方だけど、たぶんこれでうまくいくはず。このエントリーでテスト。

追記

たぶん、できたっぽい。 http://www.technorati.com/tag/movabletype?from=http://yusukebe.com/tech ←これでこのエントリーが確認できるので。

2006年9月23日

Geo::Coder::YahooJapan + Google Maps

Geo::Coder::YahooJapan なるモジュールがアップされたので早速使ってみる。 Googleのgeocoderは日本の住所で現在検索できないらしく、他のサービスだとgeocoding.jpが有名みたい。 Geo::Coder::YahooJapanは「Yahoo Japan Geocoder API」のラッパー(そんなのあったのね、ウィジェット用みたい)で、日本語の地名で検索→緯度経度取得が可能。

今回は、Geo::Coder::YahooJapanで検索をして、その結果得られた座標点を中心とするGoogle Mapsを表示するってのを作ってみた。方針として極力シンプルに、非同期通信などせずに、得られた座標点をそのままテンプレートに渡して表示、テンプレートはGoogle Maps APIのドキュメントにあるサンプルをあまり変えずにって感じで。

これが動いているサンプル→Geo::Coder::YahooJapan + Google Maps(六本木ヒルズで検索)

これ、検索結果の返りが意外なのがあって結構面白い。 例えば、 japanで検索すると「BEAMSJAPAN」がでてきたり、 江ノ島で検索すると「江ノ島電鉄 七里ケ浜駅」がでてきたり、おれんちがある 鎌倉山で検索すると鎌倉の鎌倉山がでてこないで長野の鎌倉山がでてきたり。 (追記: これはいくつか複数の検索結果から1件だけ取得して表示しているからだとは思う) 以下ソース。

続きを読む "Geo::Coder::YahooJapan + Google Maps" »

2006年9月24日

TTのシンプルな使い方

自分用にメモ。Template-Toolkitのシンプルな使い方雛形。

use Template;

my $tt = Template->new;
my $template = <<"EOF";
template text
EOF

$tt->process(\$template,{prop=>\prop,array=>\@array})
        || die $tt>error(), "\n";

Net::Amazonのキャッシュ機能

知らなかった。Net::Amazonにキャッシュ機能あるなんて・・・ →Net::Amazon CACHING

なんて便利なモジュールなんだ。

「Ajax Hacks」10月5日発売

お、邦訳版が10月5日発売みたいです。

Ajax Hacks ―プロが教えるWebアプリケーション構築テクニック Ajax Hacks ―プロが教えるWebアプリケーション構築テクニック

2006年9月25日

Class::DBI::Pagerすげぇ便利

Class::DBI::Pager便利! Class::DBIのPluginモジュールで、データベースにあるオブジェクトを指定した件数ずつ表示させたい時などに使う。例えばはてなブックマーク風のページングとか。

はてなナビ

Catalystで使うときは、lib/MyApp/Model/CDBI.pmなどに

package MyApp::Model::Plagger;

use strict;
use base 'Catalyst::Model::CDBI';
use Class::DBI::Pager;

とuseする。Controllerではモデルのpagerメソッドで1ページあたりの件数を指定してpagerのインスタンスを作り、retrieveできる。

  #Controller
  my $pager = MyApp::Model::CDBI::Item->pager(20,$page);
  my @items = $pager->retrieve_all;

  $c->stash->{pager} = $pager;

stashでpagerを渡して、Templateでは以下のようにしたらはてブ風ページング表示が可能。

    合計 [% pager.total_entries %] 件<br />

    [% IF pager.previous_page %]
    <a href="?page=[% pager.previous_page %]">
      <前の[% pager.entries_per_page %]件</a>
    [% END %]
    
    [% FOREACH num = [pager.first_page .. pager.last_page] %]
    [% IF num == pager.current_page %][% num %]
    [% ELSE %]<a href="?page=[% num %]">[% num %]</a>[% END %]
    [% END %]

    [% IF pager.next_page %]
    <a href="?page=[% pager.next_page %]">
      次の[% pager.entries_per_page %]件></a>
    [% END %]

2006年9月30日

plaggerプロセスたまり杉

plagger

むむ。ERO Plaのplaggerプロセスが滞ってるっぽいな。 あtopコマンドの時kを押すとプロセスkillできるんだね、今気づいた、こりゃ便利。

iTunes7にアップグレードしてCOMインターフェースが使えなくなる件

iTunes7にアップグレードするとiTunes COMインターフェースが使えなくなった。 マニアックな悩みだ。 これはどうやらiTunes6から7へ上書きアップグレードすると起こる問題らしくて、一度iTunesをアンインストールしてもいちどインストールすると通常のように使える。 にしても7重たいな(再インストしたらちょっとはよくなったっぽい)。

MeadowでConsolasフォントとモトヤシーダフォントを使う

MeadowでConsolasフォントとモトヤシーダ1等幅フォントを使う。 綺麗だ。

meadow

以下.emacsの設定、これでいけますよ、という感じ。

(let ((make-spec 
       (function 
    (lambda (size charset fontname &optional windows-charset)
      (setq size (- size))
      (if (not windows-charset)
          (setq windows-charset 
            (cadr (assq charset mw32-charset-windows-font-info-alist))))
      `(((:char-spec ,charset :height any)
         strict
         (w32-logfont ,fontname 0 ,size 400 0 nil nil nil ,windows-charset 1 3 0))
        ((:char-spec ,charset :height any :weight bold)
         strict
         (w32-logfont ,fontname 0 ,size 700 0 nil nil nil ,windows-charset 1 3 0)
         ((spacing . -1)))
        ((:char-spec ,charset :height any :slant italic)
         strict
         (w32-logfont ,fontname 0 ,size 400 0   t nil nil ,windows-charset 1 3 0))
        ((:char-spec ,charset :height any :weight bold :slant italic)
         strict
         (w32-logfont ,fontname 0 ,size 700 0   t nil nil ,windows-charset 1 3 0)
         ((spacing . -1)))))))
       (make-spec-list
    (function
     (lambda (size params-list)
       (list (cons 'spec 
               (apply 'append 
                  (mapcar (lambda (params)
                    (apply make-spec (cons size params)))
                      params-list))))
       )))
       (define-fontset 
     (function
      (lambda (fontname size fontset-list)
        (let ((spec (funcall make-spec-list size fontset-list)))
          (if (w32-list-fonts fontname)
          (w32-change-font fontname spec)
        (w32-add-font fontname spec)
        )))))
             (consolas-fontset-list
    '(
      (ascii "Consolas")
      (katakana-jisx0201 "NFモトヤシータ゛1等幅")
      (japanese-jisx0208 "NFモトヤシータ゛1等幅")
      (korean-ksc5601 "Dotum")
      (chinese-gb2312 "SimHei")
      (chinese-big5-1 "MingLiU")
      (chinese-big5-2 "MingLiU")
      ))
       )
  (funcall define-fontset "Consolas 10" 10 consolas-fontset-list)
  (funcall define-fontset "Consolas 12" 12 consolas-fontset-list)
  (funcall define-fontset "Consolas 14" 14 consolas-fontset-list)
  (funcall define-fontset "Consolas 16" 16 consolas-fontset-list)
  (funcall define-fontset "Consolas 18" 18 consolas-fontset-list)
  (funcall define-fontset "Consolas 20" 20 consolas-fontset-list)
  (funcall define-fontset "Consolas 22" 22 consolas-fontset-list)
  (funcall define-fontset "Consolas 24" 24 consolas-fontset-list)
  (funcall define-fontset "Consolas 36" 36 consolas-fontset-list)
  (funcall define-fontset "Consolas 48" 48 consolas-fontset-list)
  )

(add-to-list 'default-frame-alist '(font . "Consolas 14"))
(set-frame-font "Consolas 14")

About 2006年9月

2006年9月にブログ「Yusukebe::Tech」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

次のアーカイブは2006年10月です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。


ブログSEO対策:track word seo