ときどきの雑記帖 RE* (新南口)
蘇る金狼
pack
別件で検索をしていた時に pack に言及している記事を発見。
Think GNU 第 6 回 □カスタマイズのしやすさと圧縮プログラム□
CUJJ#10/‘90.7.18 発売号掲載
4-3. 圧縮の考え方
基本的な考え方は、入力ファイルの中で出現頻度の高いコード (一般に文字ごとに扱うためバイト単位) に短い符合を割り当て、 出現頻度の低いコードには長い符合 (ハフマン・コード、huffman code) を割り当てるというアイデアである。
これをそのままアルゴリズム化すれば圧縮プログラムはできあがるわけである。つまり、ファイルを最初から最後まで読み込んで それぞれのコードの出現順序を調べるという仕組みである。出現順序の高いコードから短い符合を割り当てて出現コードの全ての 符合割り当てを行なう。しかしながら、ファイルを全て読み込まないと処理できないという欠点がある。これは Unix の pack コマンドで採用されているアルゴリズムである。★6・7
それを改良したアルゴリズムが適応型ハフマン符合化で、これは変換表をダイナミックに作っていく方法である。Unix の compact で採用されている方法である。
★6
栗田多喜夫「コンピューティングの玉手箱 (41) ファイル圧縮」「bit」1988 年 5 月号、共立出版
★7
T.A.Welch,“A Technique for High-Performance Data Compression”, IEEE COMPUTER, Vol.17, No.6, pp.8〜9(1984)
bit のバックナンバーならどこかで確認できるか?
long option
こういうのも発見(同じくThink GNUから)。
〈補遺〉GNU tar のオプション一覧
以下に全ての GNU tar コマンドのリストを示す。これは文献★3 を参考にした。最近の GNU ソフトウェアと同様に「長いオプション名」の 機能もサポートしている。これまでの慣習に合わせて同じ 1 文字で示すオプションを最初に示し、「長いオプション名」を括弧内に示す。◆11
-c(+create)
引数として指定したファイル名を生成する。引数を省略した場合は、現在作業しているディレクトリの全ファイルを生成する。 いずれの場合にも同じファイル名が存在すると、上書きされる。
-d(+compare または +diff)
引数として指定したアーカイブ・ファイルとファイル・システムのファイルを比較し、ファイルの大きさやモード、所有者、 内容を表示する。引数を省略した場合は、全アーカイブ・ファイルを比較する。
そうそう。最初は +
がロングオプションの開始記号だったんだよね。
わりと早い時期に POSIX の何かとぶつかる(date の引数指定だったか?)
ので --
に変更されたという。
long long
long の倍の大きさ(32bitの倍の64bit)を表すものとして long long
を最初に導入したのは
gcc だったような記憶があるんだけどどうだったっけか(求む情報)。
gccへの導入は
Tue Jun 28 09:25:49 1988 Richard Stallman (rms at sugar-bombs.ai.mit.edu)
(サクッと省略)
- decl.c (init_decl_processing): Create type nodes for 64-bit ints. (grokdeclarator): use them for `long long’. Warn only if pedantic.
この辺。1.25から1.27くらいの時期。
GNU grep
grep.git - grep を見ると 最近も結構手が入っている模様。 いくつか気になったものをあげてみる。
- NEWS: Record release date
- remove GREP_OPTIONS
- use RE_NO_SUB when calling regex solely to check syntax
Tanaka さんの名前がありますね。
Shell Parameter Expansion
RSS
Hugo でRSSに出力する記事の範囲を指定(制限)することについて まずはググってみた。
見つかった HugoのRSSテンプレートを作成 | Ken’s blog @teaplanet にある例を見ると
{{ range first 5 .Data.Pages }}
<item>
<title>{{ .Title }}</title>
<link>{{ .Permalink }}</link>
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
{{ with .Site.Author.email }}
<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>
{{end}}
<guid>{{ .Permalink }}</guid>
<description>{{ .Summary | html }}</description>
</item>
{{ end }}
のように {{ range first 5 .Data.Pages }}
で数が指定できるようだ。
サマリーでなく全文出力することについては
Full-text RSS feed - support - HUGO
というのがあった。
description>{{ .Summary | html }}</description>
のように .Summary といういかにもなキーワードがあるので
全文出すためのそれもあるのだろうと踏んでいたが
<description>{{ .Summary | safeHTML }}</description>
<content:encoded>{{ .Content | safeHTML }}</content:encoded>
.Content
かな。
上記の例では直接件数を指定しているけど、外部から数を指定することも可能な模様。
hugo/rss.xml at master · gohugoio/hugo · GitHub
{{- $limit := .Site.Config.Services.RSS.Limit -}}
{{- if ge $limit 1 -}}
{{- $pages = $pages | first $limit -}}
Tips for Customizing Hugo RSS Feeds | Ben Congdon にもいろいろ書いてあるので後でチェックしとこう。
追記
RSSの出力件数の指定について Configure Hugo | Hugo に
rssLimit (unlimited)
Maximum number of items in the RSS feed.
というのがあった。