2009-03 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

2009-03-26 (木)

「最近追記された記事」を自動更新するようにしました。 [chalow]

[2009-03-21-1] に手動更新でお茶を濁していた「最近追記された記事」で
すが、自動更新するようにしました。

「追記YYYYMMDD:」といったマークをつけて追記すると、左側の「最近追加
された記事」に自動的に表示されます。デフォルトの設定では 5 つ表示し
ます。"YYYYMMDD" は例えば "20090326" です。chalow を更新しないと、
(?日前) は更新されません。

[2009-03-22-3] の ChangeLogReader.rb で実装しようかなとも考えていま
したが、結局 chalow 本体を修正しました。Perl 初心者なので、変なこと
してたら教えてください。^^;

以下にオリジナル(chalow-1.0.tar.gz)の cl.conf と chalow へのパッチ
を貼り付けておきます。

追記(2009-04-05):
例えば 2009.4.5 に [2009-03-07-1][2009-03-26-1] に追記を行うと、
後者だけしか「最近追記された記事」の候補に上がらないので chalow へ
のパッチを差し替えました。
また、埋め込む URL を絶対パスから相対パスに変更しました。

追記(2011-07-06):
GitHub に push しました。


--- cl.conf.org	2007-10-19 21:38:22.000000000 +0900
+++ cl.conf	2009-03-26 23:40:41.000000000 +0900
@@ -109,6 +109,10 @@
 $latest_titles_num = 10;

 # --------------------------------------------------------------------
+# 最近追記された記事(追記YYYYMMDD:)一覧 (JavaScript ファイル) で出力する日数
+$latest_tuiki_num = 5;
+
+# --------------------------------------------------------------------
 # カテゴリページを作るか (0:NO, 1:YES)
 $output_cat_pages = 0;

@@ -161,6 +165,14 @@
 <p/>

 <div class="stdbox">
+<table>
+<tr><td>最近追記された記事</td></tr>
+<tr><td><TMPL_VAR name=latest_tuiki_list></td></tr>
+</table>
+</div>
+<p/>
+
+<div class="stdbox">
 <table><tr><td>リンク</td></tr><tr><td>
 - <a href="http://chalow.org/">chalow</a><br>
 - <a href="http://chalow.net/">たつをの ChangeLog</a><br>



--- chalow.org	2007-10-19 23:15:01.000000000 +0900
+++ chalow	2009-04-05 19:26:12.000000000 +0900
@@ -292,6 +292,8 @@
 my $output_itemlist = 1;
 # 見出し一覧 (JavaScript ファイル) で出力する日数
 my $latest_titles_num = 10;
+# 最近追記された記事(追記YYYYMMDD:)一覧 (JavaScript ファイル) で出力する日数
+my $latest_tuiki_num = 5;

 # 日ごとにページを作るか (0:NO, 1:YES) --- obsolete
 my $day_page_mode = 0;
@@ -375,6 +377,7 @@
 $stop_date =~ s/-//g;

 my $latest_item_list;
+my $latest_tuiki_list;
 my $category_list;

 my $clog_url_pref = $clog_url;
@@ -426,6 +429,7 @@
 write_rss_file() if ($output_rss); # RSS ファイルを作る
 write_itemlist_file() if ($output_itemlist); # 検索用ファイル(itemlist)を作る
 write_latest_item_list_file();	# 最近の話題一覧を作る
+write_latest_tuiki_list_file();	# 最近の追記一覧を作る。
 write_category_list_file();	# カテゴリ一覧を作る

 ### HTML 生成のためのループ
@@ -683,6 +687,7 @@
             $t->param(ym => $current_ym);
             $t->param(day_list => $current_day_list);
             $t->param(latest_item_list => $latest_item_list);
+            $t->param(latest_tuiki_list => $latest_tuiki_list);
             $t->param(category_list => $category_list);
 	    $t->param(rss_file => $rss_filename); # 050821
             $t->param(entries => [grep /^.+$/, @ents[$i*$n...($i+1)*$n-1]]);
@@ -769,6 +774,7 @@

 	    $t->param(month_page_list => $month_page_list);
 	    $t->param(latest_item_list => $latest_item_list);
+	    $t->param(latest_tuiki_list => $latest_tuiki_list);
 	    $t->param(category_list => $category_list);
 	    $t->param(back => $ymdi_before);
 	    $t->param(next => $ymdi_after);
@@ -825,6 +831,7 @@
 	$t->param(day_list => $day_list);
 	$t->param(month_page_list => $month_page_list);
 	$t->param(latest_item_list => $latest_item_list);
+	$t->param(latest_tuiki_list => $latest_tuiki_list);
 	$t->param(category_list => $category_list);
 	$t->param(rss_file => $rss_filename); # 050821
 	$t->param(back => $day_before);
@@ -876,6 +883,7 @@
 	$t->param(day_list => $day_list);
 	$t->param(month_page_list => $month_page_list);
 	$t->param(latest_item_list => $latest_item_list);
+	$t->param(latest_tuiki_list => $latest_tuiki_list);
 	$t->param(category_list => $category_list);
 	$t->param(rss_file => $rss_filename); # 050821
 	$t->param(back => $m_before);
@@ -922,6 +930,7 @@
     $t->param(day_list => $day_list);
     $t->param(month_page_list => $month_page_list);
     $t->param(latest_item_list => $latest_item_list);
+    $t->param(latest_tuiki_list => $latest_tuiki_list);
     $t->param(category_list => $category_list);
     $t->param(rss_file => $rss_filename); # 050821
     $t->param(entries => \@top_n_entries);
@@ -1168,6 +1177,61 @@
 }


+### JavaScript feed ファイルを出力する
+sub write_latest_tuiki_list_file {
+
+    ### 最近追記された記事
+    my @line_list;
+    my $now_s = time;
+    foreach my $ymd (sort {$b cmp $a} keys %{$cl->{all}}) {
+	my $e = $cl->{all}->{$ymd};
+	foreach my $i (sort {$b <=> $a} keys %$e) {
+	    next if ($i !~ /^\d/);
+
+	    ### 追記YYYYMMDD:
+	    while ($e->{$i}{co} =~ /追記(\d{4})(\d{2})(\d{2}):/g) {
+		my $t_y = $1;
+		my $t_m = $2;
+		my $t_d = $3;
+		my $tuiki_day = $t_y.$t_m.$t_d;
+		my $tuiki_day_s = timelocal(0, 0, 0, $t_d, $t_m - 1, $t_y - 1900);
+		my $before = int(($now_s - $tuiki_day_s) / 86400);
+		push @line_list, "- <a href=\"".
+		    datestr2url("$ymd-$i")."\">$ymd-$i</a> ($before日前)<br>";
+	    }
+	}
+    }
+
+    my @lines;
+    my $ctr = $latest_tuiki_num;
+    foreach my $line ( sort compare_for_latest_tuiki_list @line_list ) {
+#	print "$line\n";
+	push @lines, $line;
+	$ctr--;
+	last if ($ctr <= 0);
+    }
+
+    my $ostr = join("\n", map {s/\'/&\#x27;/g; "document.writeln('".$_."');"}
+    		    @lines);
+    output_to_file("$outputdir/tuiki.js", \$ostr);
+
+    $latest_tuiki_list = join("\n", @lines);
+
+}
+
+sub compare_for_latest_tuiki_list {
+    my $a2 = $a;
+    $a2 =~ s/.+\(//;
+    $a2 =~ s/日前\).+//;
+
+    my $b2 = $b;
+    $b2 =~ s/.+\(//;
+    $b2 =~ s/日前\).+//;
+
+    $a2 <=> $b2;
+}
+
+
 sub write_category_list_file {
     ### カテゴリ一覧
 #    return if ($output_cat_pages == 0 or $cat_page_cgi eq "");


この記事に言及しているこのブログ内の記事

2009-03 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

最終更新時間: 2020-08-10 15:55 JST

検索


最近の話題
- 2020-07-24
  何年も続いている私の Emacs パッケージ管理方法
- 2020-07-17
  Android の HTTP Shortcuts アプリで Slack Status 変更と勤怠打刻をいい感じにする
- 2020-07-14
  『第5回 データアーキテクト(データ整備人)を”前向きに”考える会』に参加した #前向きデータ整備人
  iPhone X から Pixel 3a XL に乗り換えて一週間経った
- 2020-06-09
  『第4回 データアーキテクト(データ整備人)を”前向きに”考える会』に初参加した #前向きデータ整備人
- 2020-06-08
  エニタイムフィットネスを退会した #筋トレ
- 2020-05-24
  iOS のショートカットで Slack Status 変更と勤怠打刻をいい感じにする
- 2020-04-11
  Docker マルチアーキテクチャイメージのメモ
最近追記された記事
- 2014-11-02-2 (142日前)
- 2020-01-22-1 (148日前)
- 2019-02-11-1 (322日前)
- 2019-02-03-1 (322日前)
- 2019-01-28-1 (322日前)
- 2019-02-03-1 (364日前)
- 2018-11-28-1 (378日前)
- 2019-05-07-1 (458日前)
- 2018-04-30-1 (473日前)
- 2018-01-28-1 (485日前)
カテゴリ
- Android (2)
- Anthy (3)
- Apache (11)
- Apple (1)
- ATOK (4)
- au (3)
- AWS (24)
- Bazaar (1)
- Berkshelf (2)
- BigQuery (1)
- BitBar (4)
- Book (109)
- Boxen (2)
- Bugsnag (1)
- capistrano (4)
- chalow (57)
- ChatWork (1)
- Chef (17)
- Chrome (3)
- Chromecast (1)
- CircleCI (11)
- clang (26)
- Comics (2)
- Cooking (10)
- cvs (15)
- cygwin (12)
- D3.js (1)
- Debian (55)
- Docker (5)
- E-mail (9)
- elasticsearch (4)
- Emacs (224)
- Emacs講座 (10)
- English (4)
- feedforce (7)
- fetchmail (3)
- Firefox (20)
- Fluentd (4)
- ftp (2)
- Game (21)
- GCP (1)
- Gem (5)
- Git (9)
- GitHub (23)
- golang (11)
- Google (1)
- gpg (4)
- GrowthForecast (7)
- Health (7)
- Heroku (21)
- Homebrew (10)
- HTML (6)
- iBook (1)
- iOS (1)
- iPad (1)
- iPhone (17)
- IRC (1)
- Jenkins (8)
- JS (1)
- Karabiner (1)
- KeySnail (3)
- Kibana (1)
- Kindle (1)
- Kubernetes (2)
- Langrich (7)
- LDAP (6)
- Life (24)
- Linux (7)
- Mackerel (1)
- macOS (1)
- Mew (18)
- MongoDB (1)
- Mozilla (19)
- Music (1)
- MySQL (1)
- NAS (4)
- nginx (6)
- NHK (1)
- Node (1)
- ntp (4)
- OOP (2)
- OpenID (2)
- openssl (1)
- Opera (2)
- OSX (41)
- Perl (14)
- PHP (19)
- PostgreSQL (1)
- procmail (4)
- Programing (3)
- Puppet (1)
- Python (2)
- Rails (13)
- Rake (2)
- RaspberryPi (2)
- Redash (1)
- RedHat (29)
- Redmine (3)
- RSpec (2)
- Ruby (54)
- samba (3)
- screen (7)
- sed (5)
- serverspec (6)
- sh (8)
- Slack (4)
- Solaris9 (22)
- Spring (2)
- ssh (4)
- StatusNet (21)
- svn (12)
- Swift (1)
- Tablet (1)
- tdiary (3)
- Terraform (3)
- Twitter (15)
- Twmode (6)
- Ubuntu (5)
- UNIX (102)
- vagrant (8)
- Video (21)
- vim (1)
- Wercker (9)
- Windows (29)
- Wine (3)
- XML (11)
- XP (1)
- zsh (26)
- インストールメモ (33)
- クイックシェイプ (12)
- ネタ (15)
- 勉強会 (19)
- 携帯 (6)
- 正規表現 (4)
過去ログ
2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12