ひまつぶし雑記帖

xyzzyのバッファを書き出す

2015/8/22 [15:44:21] (土) 天気

PDFのデータをWEBの管理ページにコピペという単調なワープアIT軽作業。
ぺたぺた貼りつけるだけならいいんだけど、PDFのデータは印刷のことを考えて(?)半角数字などの両側に半角のスペースが入ってたりするし、改行があるとWEBで表示すると半角程度空白になってしまう。

・PDFからエディタにコピペ
・無駄な半角スペースと改行を削除
・エディタから管理ページのフォームにコピペ

という作業。
毎度毎度エディタに貼りつけ置換して…いちいち同じ作業にむかついてきたので、調べてみた。

xyzzyというWINDOWSのエディタを10年以上使っていて、以前はマクロ(lisp)が面白くていろいろいじくってた。でも、もうすっかりびっくり忘却の彼方。lispは手強い。

とりあえず。xyzzyの編集中のバッファをperlに渡して処理させて、その結果を編集中のバッファに書き出して、クリップボードにコピーしてくれればいいや、と久しぶりにxyzzyのlispを調べた。

・カレントバッファをtmpファイルに書き出す
・外部コマンドでtmpファイルを開いて処理をして、その結果をカレントバッファに書き出す
・クリップボードにコピーする

perlを使えば何でもできるしなあ。

…て、「_xyzzy.tmp」とファイルを仲介してるんだけど。バッファを標準出力に出してそれを標準入力でperlが受けとるのが本来あるべきスマートな姿。Windowsだと無理、かなぁ…。


以下、外部コマンド実行でハマったのでメモ。
外部コマンドを実行するための関数「execute-shell-command」があって、xyzzyのリファランスを見ると

外部プログラムを実行します。結果だけをxyzzyに取り込みます。

  COMMAND    : 実行するコマンドをオプション付で指定します。
  INFILE     : 標準入力を使用する外部プログラムであれば入力ファイル名を指定します。
  OUTPUT     : 標準出力を出力するバッファを指定します。
  ENVIRON    : 設定する環境変数を連想リスト形式で渡します。
                (("HOME" . "C:/applications/xyzzy/")
                 ("TOPDIR" . "C:/spool/"))
  DIRECTORY  : 実行するディレクトリを指定します。



ところが、INFILEにtemp-fileを指定しても、ファイル名が引数になってない=指定のファイルを開けない。

具体的には
(execute-shell-command "_xyzzy-tmp.bat " t temp-file (selected-buffer))
INFILEにtemp-fileを指定すればバッチファイルの引数に渡されると思ったらダメだったので、perlのスクリプトの中で$f='_xyzzy.tmp'とファイル名を固定で指定してた。
これは超ダサイ。

なもんで、
(execute-shell-command (concat "_xyzzy-tmp.bat" " " temp-file) t (selected-buffer))
↑COMMANDにtemp-fileを入れたコマンドライン文字列を作って入れたところ、バッチファイルでtemp-fileを受けとることができた。
system関数にsprintfでコマンドを作って実行させる、ようなものだ。

うーん、でもきっとINFILEを使った方がいいんだろうなあ。
とはいえ、目先、今月8月も残り10日を切ってるんで、不細工でもこいつで作業してやっつけてしまわんと。時間がかかればかかるほど単価がアレになってしまうんで、〆切一ヶ月前倒し進行!

[08/31 19:48:13]追記。
て、optionalのところ、nilだtだじゃなく、ここにINFILEを書けばいいだけの話だった。誤情報すみません。


ちなみに、xyzzyでは「filter-buffer」というのがあって、「Ctrl+x #」と叩くと、外部コマンドを実行するための1行バッファが現われる。
ここに外部コマンドを入力すると、編集中のバッファ(カレントバッファ)を外部コマンドに渡してくれる。
単純なものならperlのワンライナーでやりたい放題だし、スクリプトを実行させるためのバッチファイルでもOKだ。

超手強いlispを避けて、普段使い慣れてる処理系で書けるのは本当に助かる。

image 

»電子書籍制作代行についてはこちら

DBD::Excelとか麻布十番納涼祭りとか

2009/8/22 [18:40:42] (土) 天気

朝から毎月定例の内科。今日は採血されて結果は来月。

帰ってから、ちょっとperl。
毎週ルーチンで、60個前後のエクセルファイルを開いてcsvに保存する、という実に馬鹿馬鹿しい低脳作業がある。こんなもの人間のやる仕事じゃない。腐れエクセルには1mmも触りたくない。
複数人が並行で入力しているんだけど、さいわい、シートの名前に規則性があるんで、以前ちらっとここで触れたDBD::Excelを、本稼動させてみた。

ディレクトリにあるxlsファイルを開いて、特定のシートをcsvに吐き出す

#!/usr/local/bin/perl
use strict;
use Encode;
use utf8;
binmode OUT=>':cp932';
use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::FmtJapan;
my $oFmtJ = Spreadsheet::ParseExcel::FmtJapan->new(Code =>'cp932');

my $sheet = shift(@ARGV);
my $orig_dir = 'xls/';
foreach my $d ( @{ $section_dir } ){
  opendir(DIR, $orig_dir) || die;
  my @files = grep(/.xls/, readdir(DIR));
  closedir(DIR);
  foreach (@files){
    my $xls = $orig_dir . $_;
    my $oBook =
      Spreadsheet::ParseExcel::Workbook->Parse( $xls, $oFmtJ);
    
    my $ws; my $wc;
    for(my $i = 0; $i < $oBook->{SheetCount}; $i++){
      $ws = $oBook->{Worksheet}[$i];
      if( $ws->{Name} =~ m!$sheet! ){
        printf qq{XLS:%s  Sheet:%sn}, $xls, $ws->{Name};
        for(my $r = $ws->{MinRow}; $r <= $ws->{MaxRow}; $r++ ){
          my @buf;
          for(my $c = $ws->{MinCol};  $c <= $ws->{MaxCol}; $c++ ){
            $wc = $ws->{Cells}[$r][$c];
            my $value = $wc ? $wc->Value : ''; $value =~ s/,//g;
            push(@buf, $value );
          }
          print join(',', @buf), "n" if @buf;
        }
      }
    }
  }
}

これだけ。
今日は、ヨメと昼前には麻布十番納涼祭りに出かける予定だったので、時間がないかな、と思ってたのに、20分もかからずスクリプト完成。あとは現物合わせな例外処理だの作りこめば実戦投入できる。
いやもう、ほんと便利で、DBD:Excelの作者には大感謝!糞エクセルからまた一歩離れることができたゼ。ざまみろ。って、休みに仕事なんぞしてちゃいかんだろ、おれ。

大盛況おお賑わい大混雑の麻布十番納涼祭り。今年こそは国際バザールでちゃんと食おうと、開店前に並ぶ気合。ヨメはドイツ、わたしはブラジルに並び、フランクとシュラスコをがっつり食う。比較的すいていたラオスでおじいさんとおばあさんが上げていたスパイシーチキンまで堪能できた。ちなみに、3時開店のときにはもう行列となっていた。どれも美味でありました。大満足。
その後麻布十番側にいって、うろつく。オリオンビールとか赤ワインとか純米酒とか、馬肉ソーセージとか。しかし、今日の暑さ、人ごみにバテバテ。面白かったんだけど、ちょっと余裕がなかった、かも。

あとは、部屋でのたのた転がるかしらん。

 

»電子書籍制作代行についてはこちら

入力formをAjaxにすると

2008/8/22 [09:11:58] (金) 天気

状態が変わった場合に、同じページのほかのコンテナの表示も変えないといけないケースがけっこうあるぞ。ページごと移るなら話は単純だけど。
ううむ。気づいてなかった。入力した、もしくは削除したのに、ページ内の表示が変わらないのはマズイ、ていうか、そんな腐ったページはありえない。
なにかアクションを起こしたら、必ずそれがわかる、てのが世の中の大原則、いわば等価交換だ(by フルメタルアルケミスト)

Ajaxを使った入力formでデータの状態を変えたら、データを表示しているコンテナに反映させるためのRequestも必要ってこと。んでなんでAjaxかというと非同期だから。…これで、たぶん、まぬけにハマる。

new Ajax.Requestあれこれ
この時点で、デフォルトだと、返事が帰ってくる前に別の処理を始められるのがAjaxというやつ。これがチョー便利なんだけど(初老のおっさんが「チョー」はない)、だけど、今回の入力formとその反映を考えると返事を待たなきゃいけないぢゃん。

Ajax.Requestを複数仕込む時に。
new Ajax.Request あれこれ
new Ajax.Request あれこれして変更されたデータを取得

最初のpostするRequestはデフォルトを同期に変更して、次のgetするRequestは非同期。てことでイケる…ような気がしてきたぞ。週末にでもちょっと試してみるか。だめならperlの側でsleepをいれてごまかす、というのもありだな。

にしても、案の定、というか無知なままのJavascriptなんかを使うんでハマりまくりだ。でも、Ajaxは流行だし、わたしは流行に弱いミーハーだし(あれ?もしかして、ミーハーも死語かな)

まだ先は長かった、か。とほほ。

夕方のスコールが続いたかと思ったら、いきなり涼しい都心だ。

[08/22 23:23:39]
なんか今日もこき使われてへとへとの図。牛馬だぜ、やれやれ。こんなじゃ青空所属も近いな。と、ぶちぶち言ってもしょうがない。

で、検索してみたらやっぱり、Ajax.Requestで「非同期」じゃなくて、同期通信の要望・ノウハウがちらほら。そりゃそうだよなあ。更新系がすんでから、それを閲覧、というのが普通だ。その一方で、
サーバー側がコケるとクライアントが固まるから、同期通信は「推奨」されない、てのももっともな話。
うううむ。非同期でやると、サーバー側perlにsleepさせるしかないけど、sleep時間が短かいと確実じゃないし、長すぎると連打されて簡単に負荷がかけられる。クライアントを固めるようなことになっても、更新系がからむところは同期でいくほうがいいよなぁ。どっちにしてもあちこち見直しが必要だわ。ふうう。

»電子書籍制作代行についてはこちら

ネットも激戦だ

2005/8/22 [22:15:52] (月) 天気

同じパラパラ漫画・スライドショーでもフラッシュとGIFアニメを一緒にしちゃいかん。画像をちょっと加工した以外たいしたこともせず、イベントに追加していっただけみたいなものを作った。プロパティを開いて少しエフェクトをつけて、写真提供者の名前をテキストで張り込んでみたら、初めて作ったにしてはそれなりのものになったぞ。…いや、昭和のセピアがかった写真=素材がとてもいい感じだったからなんだけど。
今日のように、素材がよければ、せっかくなのにもっとうまく見せられないものかと欲もでてくる。ううむ。マクロメディアの本家ソフトをどうにかするかなぁ。6万弱、自分に投資するかしらん。って、増えて戻るから投資というのであって、どうなるかわからんのに金を突っ込むのはギャンブルでさえ無い、か。
フラッシュとPHPには完全に出遅れた。
フラッシュは素材が作れなきゃ不要だと思ってたし、PHPはperlより使えるとは思えないし。PHPはまだビミョーに信用しきれないけど、フラッシュに関しては、もはやこいつを使えなきゃ金の取れるコンテンツが作れないという状況っぽい。

んで、今さらだけど、ヤフーとかぐーぐるとかどこで儲けてるんだろう、と。多分、間違いなく企業広告なんだろうけど。
企業が自分のページを検索エンジンのトップあたりに持ってくるために、コンサルタント会社に金を払ってるのはもう常識。それだけ市場が膨らんで、そのコンサルタント会社のように目端の効く連中が隙間でも儲かるようになった、てことなんだろうか。てことは、寄らば大樹の陰という構図か。

»電子書籍制作代行についてはこちら

だるい一日、ひきこもる。

2004/8/22 [20:28:57] (日) 天気

image 夕べは駅前のやるき。ポイントが少し貯まってたので一杯はタダ。…やるき茶屋って会社の連中の認識だと学生が使う店、らしい。言われてみれば、都心部のやるきは学生のコンパ御用達。だけど、小金井あたりは学生のコンパももちろん、町内会や家族連れ、ひとりサラリーマンの晩飯、と多様な客層なのだ。ひとりでカウンターにいても妙に落ちつける。

今日は朝から身体の芯がモヤっとしてすっきりしない。歯茎も少し疼くし、体調不良の予兆というか、体調不良真っ只中というか。
なもんで、洗濯をしてあとはダラダラ。マクドのセットで昼飯を済ませてしまうほど無気力無体力だ。ついでに給料前で金も無い。
生協でゴーヤ128円を買って、晩飯にゴーヤチャンプルーを作ってみる。美味。だけどだるさは抜けないんだよなぁ。

明日からの一週間は押せ押せ確実だから、シャキっとせんといかんっちゅーのに。

風呂入って早めに寝ます。

»電子書籍制作代行についてはこちら

たばこの夢

2003/8/22 [17:21:13] (金) 天気

我ながら馬鹿じゃないかと思うんだけど、昨日は帰りも全部自転車。いつもだと水道橋から各停の総武線で終点の三鷹まで。そこから自転車で自宅、というパターン。
昨日はほんと久しぶりの自転車だということもあったし、帰りにどこかでメシでも食おうと思って自転車でたらたら走り出したら、結局テキトーなメシ屋がなく、吉祥寺まで辿りついてしまったのだ。でもまあ、吉祥寺で入った ムンタージ というインド料理屋が大正解だったんで良かった。
天気が変だなぁ、とは思ってたけど、吉祥寺でメシを食って走ってたら雨にやられた。雨脚はさほどでもなかったけど、地面が濡れていて、紅虎号はビショビショ。帰ってからあわてて拭いたのはいうまでもない。鉄は錆びるものなのだ。

今日は昨日以上の好天。そりゃ自転車にするさ。さすがに昨日の往復とも自転車で(距離が60キロ近くあるしなぁ)あちこち筋肉痛。ドロップハンドルって掌、掌底部分に負担がきて、今日は手袋してたのに少し擦り剥けてしまった。って、乗り方・体重のかけ方が悪いのかドロップハンドルの角度が悪いのかしらん。
んで天気もいいし、昼飯に自転車でお茶の水まで行って エチオピア でカレー。前回行ったときは野菜カレー辛さ5倍を頼んで美味かったので、今日はチキンカレー辛さ10倍を。口に入れた瞬間、肉の生臭い感じがしてスパイスの香りとか味を殺してた。辛さもイマイチだったし、チキンカレーはだめなのかなぁ。鶏肉が煮込み足りない感じだった。

昨日、手元にあるものを全部放りこんだので、今日はカラーページの割り付けぐらいしかやることがない。写植があがってくればひたすら校正なんだろうけど、写植もあがってこない。ううむ。

金欠の足しにはじめた禁煙もどうやら無事成功している。
タバコを吸って「げげげ、おれ、なにやってんだ」と激しく後悔する夢はまだ時々みる。
授業さぼって出席が足りず「げげげ、おれ、どーすればいいんだ」と途方にくれる夢をまだ時々みるし、クマがだらだら寝転がってるのをみて「ううう、いいなぁ、おまえは」という夢をまだ見るし、きっとタバコの夢も今後見つづけるに違いない。

そいや、夢ってのは、寝ている間、映画を見るように延々と見るのではなく、目覚める直前の一瞬で夢として展開される、という話もある。曼荼羅などと同じく、イメージが一瞬にして頭の中で物語として展開される、ということらしい。(逆にいえば、なぜ曼荼羅みたいなものがあるのか、ということ)
だから、怖い夢など、絶妙なタイミングで目覚めてる、ワケではなく、目覚める直前のイメージ展開なので、そこは都合よく物語をカットするということもあるようだ。

»電子書籍制作代行についてはこちら

profile

profile

 
doncha.net
名前:
飯田哲章
mail:
t2aki@mrh.biglobe.ne.jp
twitter:
t2akii

WEBサービス制作/電子書籍制作

検索
<<2017/08>>
  12345
6789101112
13141516171819
20212223242526
2728293031

リンク

WINDOWS版サウンドノベル
おかえりください PC WINDOWS版サウンドノベル
『おかえりください』体験版

iPhone電子書籍アプリ
小説同人誌Select iPhone電子書籍アプリ
『小説同人誌Select』

[2 Page] »
1 2

TOTAL:2833

2017 (25)
1 (2)
2 (1)
4 (2)
5 (1)
6 (6)
7 (3)
8 (5)
9 (3)
10 (2)
2016 (41)
1 (5)
2 (5)
3 (2)
4 (3)
5 (4)
6 (6)
7 (2)
8 (2)
9 (3)
10 (1)
11 (4)
12 (4)
2015 (99)
1 (11)
2 (12)
3 (9)
4 (6)
5 (8)
6 (8)
7 (3)
8 (5)
9 (16)
10 (6)
11 (1)
12 (14)
2014 (112)
1 (16)
2 (5)
3 (6)
4 (12)
5 (16)
6 (19)
7 (9)
8 (6)
9 (4)
10 (8)
11 (6)
12 (5)
2013 (145)
1 (24)
2 (15)
3 (18)
4 (23)
5 (14)
6 (11)
7 (7)
8 (11)
9 (5)
10 (4)
11 (6)
12 (7)
2012 (103)
1 (1)
2 (1)
3 (4)
4 (3)
5 (7)
6 (26)
7 (17)
8 (5)
9 (8)
10 (10)
11 (11)
12 (10)
2011 (54)
1 (4)
3 (7)
4 (4)
5 (14)
6 (6)
7 (3)
8 (3)
9 (1)
10 (4)
11 (2)
12 (6)
2010 (70)
1 (12)
2 (7)
3 (6)
4 (6)
5 (3)
6 (10)
7 (6)
8 (4)
9 (3)
10 (4)
11 (3)
12 (6)
2009 (144)
1 (15)
2 (12)
3 (12)
4 (6)
5 (15)
6 (6)
7 (10)
8 (9)
9 (17)
10 (12)
11 (14)
12 (16)
2008 (148)
1 (10)
2 (6)
3 (10)
4 (11)
5 (13)
6 (10)
7 (13)
8 (19)
9 (18)
10 (12)
11 (13)
12 (13)
2007 (106)
1 (7)
2 (5)
3 (3)
4 (7)
5 (5)
6 (9)
7 (8)
8 (13)
9 (18)
10 (11)
11 (8)
12 (12)
2006 (158)
1 (28)
2 (28)
3 (25)
4 (7)
5 (9)
6 (7)
7 (12)
8 (13)
9 (10)
10 (7)
11 (6)
12 (6)
2005 (350)
1 (31)
2 (26)
3 (26)
4 (27)
5 (29)
6 (30)
7 (32)
8 (30)
9 (30)
10 (32)
11 (29)
12 (28)
2004 (292)
1 (24)
2 (24)
3 (29)
4 (27)
5 (28)
6 (25)
7 (26)
8 (24)
9 (12)
10 (19)
11 (26)
12 (28)
2003 (318)
1 (22)
2 (25)
3 (21)
4 (28)
5 (28)
6 (28)
7 (28)
8 (29)
9 (26)
10 (29)
11 (28)
12 (26)
2002 (317)
1 (29)
2 (26)
3 (26)
4 (25)
5 (28)
6 (30)
7 (27)
8 (21)
9 (25)
10 (27)
11 (28)
12 (25)
2001 (277)
1 (17)
2 (21)
3 (23)
4 (20)
5 (31)
6 (18)
7 (26)
8 (25)
9 (29)
10 (19)
11 (24)
12 (24)
2000 (53)
6 (9)
7 (4)
8 (2)
9 (3)
10 (1)
11 (15)
12 (19)
1999 (3)
7 (1)
10 (2)
1998 (18)
9 (9)
10 (7)
11 (2)