Perl

UNIXタイムスタンプからlocaltimeへの変換(shell/perl/ruby)

UNIXタイムスタンプ(1970-01-01からの秒数)から日付への変換。ワンライナーな方向け。 shell(BSDのdateコマンドの場合) $ date +%s 1377292293 $ date -r 1377292293 +'%Y-%m-%d %H:%M:%S' 2013-08-24 06:11:33 $ shell(GNU dateコマンドの場合) $ date +%s …

perlでのShift_JIS,cp932の扱いテスト

perlにencodingを指定するとき、shiftjisなのかcp932なのかちゃんと考えないといけない。でないと全角マイナスの扱いが違ってくる。 hz.pl #!/usr/bin/perl use strict; use warnings; use utf8; use Encode; use Data::Dumper; binmode STDOUT => 'utf8'; #…

perlでShift_JISファイルを読み込みUTF-8で出力

Encode.pmとPerlIOの備忘録も兼ねて。 perlでShift_JISのCSVを読み込みUTF-8にて標準出力に出力。CSVの解析はText::CSV_XSを使用、PerlIOを使って入出力。 #!/usr/bin/perl use strict; use warnings; use Text::CSV_XS; use utf8; # このファイルはUTF-8 us…

perlのCGIプログラムで文字コードを扱う場合

理解したと思っても何度も何度も忘れてしまうので備忘録。 今のperlにはEncodeモジュールのおかげで文字コードを扱えるわけだが、ここでUTF-8を扱う場合には、UTF-8フラグとPerlIOレイヤを意識すること。 perl内部ではUTF-8フラグをオンにしてマルチバイトと…

MovableTypeのmt-check.cgi備忘録

MovableTypeのシステムチェックmt-check.cgiはperlのライブラリパス、使用モジュールやそのバージョンを表示してくれるので便利だが、設定後に起動する場合、mt-config.cgiがあると動かない。そのため、mt-config.cgiを別名に変更して起動すること。

メールアドレス正規表現

メールアドレスの完璧な正規表現はないのだが、以下のもので「おおまか」に表現できるはず。 /^[a-zA-Z0-9_.-]+@([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,4}$/ 正規表現オプション"i"を付けられる言語であれば、"A-Z"の表記はいらないはず。元ネタは以下。 http://befi…

perlで短縮URLを展開(5.8用)

http://blog.livedoor.jp/dankogai/archives/51573012.html にあったperlスクリプトだが5.10でないと動かないので以下のように修正した。 perl -MLWP::UserAgent -le \ 'print LWP::UserAgent->new->head(shift)->request->uri \ http://j.mp/dankogai "-E"…

MovableType 5.03にアップグレードしたら再構築でScript Errorになる件

Movable Type 5.03 にアップグレード後、再構築ボタンにて再構築を行おうとすると、ポップアップウィンドウに Script ErrorThe script did not produce proper HTTP headers. .... のメッセージが出て再構築画面が表示されなくなった。これは、XREAのサーバ…

Movable Type(5.02 or 5.03)の tools/rebuild-pages を使ってみた

Movable Typeでリビルドさせるコマンドとして mt-rebuild.pl があるようだが、これはTypePadにsign inしないとダウンロードできないし、随分前のスクリプトなので MTに同梱されている tools/rebuild-pages を試してみた。なお、参考したのは以下のページだが…

MTOS 5.03へバージョンアップ

基本的には、DBバックアップ、上書き、mt.cgi実行。以下を参照のこと。 http://www.movabletype.jp/documentation/mt5/upgrade/mt5.html $ mysqldump -u mtos -pmtos mtos | gzip >20100909-save.sql.gz $ wget http://www.movabletype.org/downloads/stable…

CentOS5のperl5.8.8にて

CentOS5のperl5.8.8にはXML::Simpleがインストールされていない場合がある。cpan経由でインストールするのもいいが、rpmが用意されているのでyumでインストールしてみた。 # yum install perl-XML-Simple .... Is this ok [y/N]: y .... Installing: perl-HT…

Movable Type TinyMCEプラグインの編集エリアのスタイルシート(CSS)

Movable TypeでTinyMCEを使用可能にするプラグインTinyMCEで、編集領域のスタイルを変更する方法。 [システム]->[プラグイン]->[TinyMCE]の設定にて、[編集領域に関する設定]で変更可能。 じかに記入もできるが、[URLを指定する]で指定してみた。firebugで編…

my, local, ourについて

スコープの違いの再学習。 ファイルの先頭でmy宣言していたものを別ファイルに移動して、requireまたはuseした途端、スコープが違ってundefinedになるのは、こちらに書いてあるとおり、 ファイルは最初と最後に{}があるものとして扱われる ためのようだ。

Movable Typeでのパンくずリスト(別の方法)

ページタイプで切り分け。呼び出す前にはpage_titleに値を設定する必要あり。ulはインラインが前提のようだ。 呼び出し元(ブログ記事のテンプレート) <MTSetVarBlock name="page_title"><$mt:EntryTitle$></MTSetVarBlock> <$mt:Include module="パンくずリストその3(ページタイプで切り分け)"$> テンプレート(…

Movable Typeでのパンくずリスト

サブカテゴリまで考慮したもの。さらに各テンプレートによる切り分けを追加した。また、MTIfNonZeroは非推奨なのでMTIfに変更。 <div> <ul class="breadcrumbs"> <li><a href="/">TOP</a></li> <li>&raquo;<a href="<$mt:BlogURL$>"><$MTBlogName$></a></li> <$mt:TemplateNote value="カテゴリアーカイブリストの時"$> <mt:If name="category_archive"> <MTHasNoParentCategory> <li>&raquo;<$…</li></mthasnoparentcategory></mt:if></ul></div>

Movable Type でアイテム(画像やファイル)をアップロードする際のサイトパスについて変更する方法

MTディレクトリ/tmpl/cms/include/asset_upload.tmpl このテンプレートでサイトパスのデフォルトを設定できるようだ。また、selectの順番を変えられそう。 ただし、直接テンプレートを修正するのではなく、alt-tmplにコピーするべきみたい。 MTディレクトリ/…

Movable Type でページをダイナミックに変更したときの 500 Internal Server Error について

[出力ファイル名]をindex.phpに、[公開]をダイナミックに変更したとき、 500 Internal Server Error になった。原因は、該当ディレクトリのAllOverrideがAllでなかったため。 ダイナミックにすると、該当ディレクトリに.htaccessとmtview.phpを作成する。 .h…

instaMT を MTOS 5.02 にしてみる

末尾の参照サイトを参考にして、instaMT(USB版)をMTOS 5.02にするべく、以下の手順で行ってみた。 1. ダウンロードした instaMT (USB) を解凍する。 2. ダウンロードした MTOS 5.02 を解凍する。 3. MTOS 5.02 の *.cgi の一行目を #!/usr/bin/perl -w から …

Movable Type で複数ブログの同一カテゴリをまとめて一覧表示

ブログ1 カテゴリA カテゴリB ブログ2 カテゴリA カテゴリC とあった場合にサイト全体でカテゴリAの一覧を表示したい場合、を使って表示できた。 <h2>全ブログのカテゴリA</h2> <mt:Blogs include_blogs="children" include_with_website="1"> <MTIfArchiveTypeEnabled archive_type="Category"> <div class="categorycommon"> <h3><a href="<$MTBlogURL$>" title="<$MTBlogDescription$>"><$MTBlog…</a></h3></div></mtifarchivetypeenabled></mt:blogs>

MT5(Movable Type 5)でサイトマップを作成

Movable Type 5のウェブサイト全体のサイトマップを作成したい場合の例。 ポイントはこちらのコードをで囲むこと。include_blogsモディファイアでブログを指定する。必要に応じてinclude_with_websiteモディファイアも指定する。 サイトマップページ作成はも…

Movable Type カレンダーに同じ日に複数記事表示のための日別記事リスト作成

Movable Typeではカレンダーにリンクされるのはその日の最新の記事となる。 これを同じ日のエントリすべて表示させる場合、 日別記事リストテンプレート作成 上記テンプレートにアーカイブマッピングを日別として設定 カレンダーの修正 ということが必要のよ…

MovableType 公開日指定での公開

公開日を指定して日時指定で保存したページは、以下のコマンドによって、指定した日付以降であれば公開となる。指定した日付以降で該当ページを変更保存しても、以下のコマンドを起動させないかぎり公開はされない。 $ perl $MTDIR/tools/run-periodic-tasks…

MovableTypeのスタイル変更とpage_layout,page_columnの関連

[デザイン]->[スタイル]にスタイルを変更できるところがある。これは要するにhtmlを変更せずにスタイルだけ変更することで見た目を変えることができるようになっている。管理画面から変更すると、テンプレートのスタイルシート(styles.css)が変更になる。も…

perlのCGIでのInternal Server Error の時に是非

レンタルサーバに設置した、CGIのInternal Server Errorが出たら、 http://www.kawa.net/works/perl/catch/news.html を試してみるのがよい。KCatch.pm をアップロードして、 #!/usr/local/bin/perl use KCatch qw( execdata );__DATA__ use warnings; use s…

perlのインストール済みモジュールの確認

perlでインストールされているモジュールの確認を行う例。 #!/usr/bin/perl use strict; use warnings; my @modules = qw(Mail Mail::Mailer GD MIME MIME::Parser MIME::Base64); #print join("\n", @INC) . "\n\n"; foreach (@modules) { my $v = (&check_…

tDiaryからwordpressへの変換のためのスクリプト変更

概要 tDiaryからwordpressへ引っ越しをする際、MovableTypeへ変更するようだ。 http://fumi.me/2009/02/10/tdiary-to-wordpress/ そこで上記で見つけたt2m.plをもとに引っ越しを行った。ただ、こちらの環境に合わせて以下の変更を行っている。 投稿ステータ…

quoted print の デコード

perlによる quoted printのdecode。 $ perl -MMIME::QuotedPrint -ne 'print(decode_qp($_));' < quoted-print.txt

perlでEUC-JPからUTF-8への変換フィルタ

まずは、いままでの「文字コード変換」っぽく #!/usr/bin/perl # # This file code is UTF-8N. # use strict; use warnings; use open ":utf8"; use Encode::Guess qw/euc-jp shiftjis 7bit-jis/; use Encode qw/from_to/; # UTF-8コード変換 while (<STDIN>) { # U</stdin>…

redirect 301 permanent (永久的なリダイレクト)

PHPでredirect 301 (permanent)する方法。 perlでredirect 301 (permanent)する方法。 #!/usr/bin/perl use strict; use warnings; my $redirect_location = "http://www.example.jp/"; print <

jcode.plでハマった件

久し振りにjcode.plを使って、こちらのコーディングミスによるエラーでハマった。apacheのエラーログには、 Undefined subroutine &jcode::f called at jcode.pl line 400., .... と出ている。どうも、 jcode::euc(undef, 'euc', 'z'); だとそうなるらしい。…