プログラミング: 2008年6月アーカイブ

RubyでHTMLファイル生成(Excelデータを一括でHTMLファイルにする)

   ブックマークに追加する
以前にもブログで書いたRubyでHTMLファイル作成ですが、さらに改良しExcelの1行を1つのHTMLファイルに変換するプログラムを書きました。さらに、前回同様HTMLテンプレート機能も使用しています。Excelデータはタブ区切りテキストにします。
※プログラムはクリエイティブコモンズです。

#!/usr/bin/ruby -Ks
require 'erb'
require 'yaml'
include ERB::Util
$KCODE = 's'

class CreateHtml

   def initialize
      @config = YAML.load_file("config.yaml")
      @erb = ERB.new(File.read(@config[:template]), nil, "-")
   end

   def generate
      objs = input
      for obj in objs do
         output(obj)
      end
   end

   def input
      objs = Array.new
      count = 0
      open(@config[:data]).each{|input|
         if count == 0
            @headers = input.split
            count = 1
            next
         end
         h = Hash.new
         arr = input.split
         @headers.size.times{|i|
            h.store(@headers[i], arr[i])
         }
         objs.push(h)
      }
      return objs
   end

   def output(o)
     open(@config[:output]+"/"+o['id']+".html", "w"){ |output|
         output.write(@erb.result(binding()))
      }
   end
end

obj = CreateHtml.new
obj.generate

YAMLも使ってみました。詳細は以下を参照。


config.yamlは以下の通り。

:template: template.rhtml
:data: data.txt
:output: output


data.txtにタブ区切りテキストです。1行目のheader行の項目名をテンプレートファイル(template.rhtml)に設定すると項目が書く行の設定値でHTML生成します。また、1行目のid項目は必須でその項目値がHTMLファイル名になります。


Perlでログをチェックしエラー情報をメール送信するプログラム

   ブックマークに追加する
あるディレクトリにあるログファイルのなかからエラー情報を抜き出し、指定したメールに送信するというプログラムを書きました。cron登録して毎日エラーチェックしています。サーバの都合上、Perl5.8.0でCPANは使用できず。Linux、EUC環境でログファイルはShift-JISという環境で動作しています。メールはsendmailを使用しています。

1度チェックしたファイルはbackupディレクトリに移動し、2度はチェックしないようになっています。

ソースはクリエイティブコモンズでお願いします。

#!/usr/bin/perl

use strict;
use File::Copy;

require "mimew.pl";
require "jcode.pl";

my $ERROR_DIR = '/var/log/error';
my $BACK_UP = '/var/log/error/backup';

opendir(DIR, $ERROR_DIR) or die;
foreach (readdir(DIR)){
  my $file = $_;
  my $error = "";
  next if $file =~ /^\./ ;
  next if $file =~ /backup/ ;
  open(FILE, $ERROR_DIR."/".$file ) or die;
  foreach (){
    $error .= $_ unless $_ =~ /,0,0,/;
  }
  close(FILE);
  print $file."\n";
  jcode::convert(\$error, 'euc', 'sjis');
  if ( length($error) > 1 ){
    sendmail($file, $error)
  }
  move $ERROR_DIR."/".$file, $BACK_UP."/".$file or die "move Error. $!";
}
closedir(DIR);

sub sendmail(){
    my @arg = @_;
    my $sendmail = '/usr/lib/sendmail';

    my $to = "to\@example.com"; 
    my $from = "from\@example.com";
    my $subject = @arg[0];
    my $body = @arg[1];

    jcode::convert(\$body,'jis', 'euc');
    jcode::convert(\$subject,'jis', 'euc');
    $subject = mimeencode($subject);

    open(MAIL,"| $sendmail -t");

    print MAIL "To: $to\n";
    print MAIL "From: $from\n";
    print MAIL "Subject: $subject\n";
    print MAIL "\n";
    print MAIL "$body\n";

    close(MAIL);
}

このアーカイブについて

このページには、2008年6月以降に書かれたブログ記事のうちプログラミングカテゴリに属しているものが含まれています。

前のアーカイブはプログラミング: 2008年3月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

あわせて読みたいブログパーツ
フィードメーター - ウェブ-HACKS 「とりあえずやってみよう!」ブログ   
track feed
  • SEO対策 
  • _ 
  • _ 
  •  
  •  

このブログはクリエイティブ・コモンズでライセンスされています。