スキップしてメイン コンテンツに移動

vimpagerを入れようと思ったらpandocが必要でpandocはHaskellで書かれているわけで

ことの発端


CentoOS7にしたサーバの環境を整えていて、vimを整備しているときに、vimの日本語manの見栄えが崩れていたので、pagerなのかmanファイルが悪いのかと調べていたら。そういえばless(manのpagerはlessね)って以前カラーじゃなかったっけとかふと思い出し、シンタックスカラー化しようかと思って、設定しててカラースキーマーが気に入らなかったのでカスタマイズしようとかやってたら、pagerって他のでもよくね?と脱線。・・・あ、viewもカラーに・・・



ここでPager(ページャ)とは?

端末でテキストを画面単位で表示してくれるものです。

いくつかあるpager

比較的日本語に強いものをチョイスしてみた。
・ less
 標準的
・ lv
 日本語に強いという話
・ w3m
 テキストブラウザ、でもページャだったのね
・ vimpager
 名前から分かるようにvimをページャにするんだね
他にもありますが

lessを使っていてその場でvimに移行(編集モード)することがあるので
vimpagerを試すことにしました。


# git clone git://github.com/rkitover/vimpager
# cd vimpager
# make install


makeしてたらpandocってドキュメント変換ツールが必要だったのでpandoc入れようとしたらですな、
これがまたHaskellで書かれているのでコンパイラが必要となりGHC(The Glasgow Haskell Compiler)を入れないとならない・・・
しかし、pandocを使っているのはvimpagerのドキュメントを加工するのに使っているだけで、別になくても動くわけで・・・・でもpandoc使ってみようと入れることに

Pandocとは

Haskell製のドキュメント変換ツールです。
他に有名なのがsphinxで、以前使おうと思ってたのですがPythonで書かれている為、当時Pythonを入れるのに面倒くさかったからやめましたw
Pandocだとかなりの種類のフォーマットを変換出来るのが強みですかね、あと正規表現よりも強力でHTMLなどのタグを囲むような文法を容易に解析できるみたいです。
これらは、Haskellの構文解析で使用するPersecを使用しているため容易に解析できるみたいです。パーサーだとyaccがありますが、正直文法が面倒くさいですね、はいw
昔は、yaccっていうとコンパイラコンパイラってなんぞって思ってたときもありましたが・・・
UNIX触ってれば知らない人はいないですけどね。
pandocでは、HTMLやLaTeXなどを電子書籍のEPUBだとかに変換できますし、Markdownなども変換できるので(vimpagerのドキュメントはMarkdownでそれを変換するのに必要)いろいろと使えるのではないかと思います。
PDFに変換するには、LaTeXが必要みたいです。TeXも論文書くわけじゃないから使わなくなったなぁ。

で、Haskell(ハスケル)って関数型言語じゃねかと思い出し、かつて20年以上前(たしか1989年頃)に知ってから、
おざなりになっていたままだったことを思い出してちょ、ちょっと使ってみようかしらとも思ったりもして・・・

いつのまにかvimpagerが主じゃなくてpandocがメインとなっているようですが・・
そこで、まずはHaskellを入れなければならない。
で、Haskell Platformというのがあるのでそれをソースから入れようとしました・・・・やめましたw
どつぼりましたw (多分、缶詰の中の缶切り状態だからうまくいかなかったのだと思われw
コンパイラにありがちな自身の言語で作られているのだろうからね、先にbinarie入れないとだめだったんだろうと思う)
binarieからインストールして、Haskell Platformのパッケージマネージャのcabalからpandocを入れました。

そもそもvimpagerのパッケージがなかったからこうなったんだけど、誰か作ってたと思う。CentOS7のリポジトリにはなかった。




さて、インストールメモですw

まず、Haskell Platformをインストール
Download Haskell
から、プラットフォーム別にダウンロードがあります。Win,Mac,Linux
今回は、LinuxなのでLinuxを選んで対象のディストリビューションがあればそれをダウンロード、
なければGeneric Linux Binariesで。
CentOSに入れたのでGenericで(黒柳徹子が出てくるなぁ)。
そのページに書かれている通りにインストール

# cd /
# tar xzf ...downloaded-tarfile...
# /usr/local/haskell/ghc-7.8.3-x86-64/bin/activate-hs

次は、Pandocを入れる
その前にパッケージをアップデート
Haskellのパッケージマネージャcabalを使用

# cabal update
バージョンが古いとcabal-installを入れろと出るので
# cabal install --global cabal-install
Configuring Cabal-1.20.0.2...
Building Cabal-1.20.0.2...

ここで、--globalオプションを付加しないと、自分のホームディレクトリ下に.cabalが作られてそこにインストールされちゃいますのでグローバルに使用するなら必要なオプションです。特定ユーザだけ使うなら別ですがそうそうないと思うけど。

次にcabalでpandocをインストール
# cabal install --global pandoc
.....
沢山のパッケージが必要らしくかなり時間がかかります。
で、インストールできたら、vimpagerをmake(これが本題だったのにな)

これでvim pagerをmake installしてLESSOPENをvimpagerにすればってここ肝心だけどw

pandocのリファレンスは
Pandoc User’s Guide

例 markdownをHTMLに変換
$ pandoc README.md -s -o README.html


pagerの件は、また今度

コメント

このブログの人気の投稿

DNSampにやられたようだ

以前からときどきルータのCPU使用率が98%の状態で高負荷が続くことがあった。 アクセス数が多い為とも思っていたのだが今までルータが悲鳴をあげることはなかった。 問題の切り分けが難しく、何が原因なのかわからなかったが原因をつきとめることができた。 DNSのDDoS攻撃だったようだ。いわゆるDNSampというやつで数年前から猛威をふるっているやつです。 しかし、DNSampは、オープンリゾルバなDNSに対して小さなDNS要求パケットを送ってその何倍ものサイズのパケットを生成させるからDNSamp(アンプつまり増幅)といわれるわけなのだが、DNSサーバがオープンリゾルバになっていなければ大丈夫だと思っていたし、さらにファイヤーウォールでフィルタかけたり制限したりとやっておいたにもかかわらずだったのだが、実はそれだけではすまないということだった。 ログみてもRefusedしているのにぃ・・・ 使用しているルータはRTX1200でヤマハのサイトに オープンリゾルバー(Open Resolver)に対する注意喚起について のページがあったので対策することにした。 これは、ルータ自体がDNSの機能を持っている場合の対処だったのでオフにした。 いろいろ調べてるうちに QoSをかけるとか出てくるのでやってはみた。帯域制限とかであるが。 しかし、変わらない。というか効いてない。 ヤマハのルータの場合、Dynamic Class Controlというのがあってそれを使えみたいなことがよく出てくる。 そこでそれも設定してみた。だが、効かない。 根本的なところで間違っているような気がしたのだ。 設定したのは、LAN2(WAN)側だったのだが、それをLAN1(LAN)側にかけたらうまくいった。 普通に考えてppに対してDCCかけるんじゃないのかと思ったのだがどうもこのファームウェアでは、サポートされていないらしい。つまり、入り口のところで制限することはできないということらしい。 でも、これはこれで一度中に入ったものを処理するわけだからそれなりに負荷がかかるような気もするのだけど、とりあえず20%から30%くらいで落ち着いている。 最近だとRTX1210という機種が出ている、これはCPUがPowerPCになっていてRTX1200のMIPS 300M

SABLE エックリアの影【ゲーム日記】

SABLEというオープンワールドのアドベンチャーゲームで2021年9月にSteamでリリースされてから最近日本語対応されたのでやっています。 その中で初期のクエストに「エックリアの影」というのがあったのですがなかなかクリアできなかったところ終盤で再度挑戦したら解決したのでその部分だけ解説したいと思います。 つまりネタバレですのでご注意ください。 本当は最初からVLOGにしたかったのですが途中から録画したので部分的に公開したいと思います。 公式サイト SABLE — SHEDWORKS クエストは、マズという男が世話をしている子供の一人が水を盗もうとして捕まって収監されているのを助けるのが目的。助けるには「影のマスク」を被って牢獄前にいる衛兵を脅して牢から出す。「影のマスク」は町の門にある「影のしるし」を探せばたどり着けるのだが探せとしか言われておらずその後どうするのかを説く必要がある。 門には2種類の印があり一つはマスクの場所、一つはマスク自体の印でマスクが見つかった後に繋がるものである。 まずは、門の側面にしるされたものがその先にも同じものがあるのでたどっていく。すると壺があるのでその中にマスクが入っている。 手に入れたらマズのところに行き、夜になるのを待ってマスクを付けてマズに再度話しかけるとイベント発生して助けにいく。助けた後は再度マズのところにいくのだが牢の近くの町の壁に門にしるされたもう一つのしるしと同じものがあるのでそこに行くとバイクのパーツが買える。ただし、夜でないとそれは出てこないようである。

MR.ROBOTシーズン1に出てくるastuとastsuコマンド

たまたまアマゾンプライムで見られたので1話を見てみたのだが ミスターロボットってタイトルから想像してたのと違って 若きプログラマー、エリオット。昼はサイバーセキュリティ技術者として働き、夜はハッカーとして正義を守る。そんなエリオットに謎のハッカー集団のリーダーが参加を求めてくる。目的は、エリオットが仕事で守る大企業の壊滅だ。 という内容だ。細かい内容を知りたければ観てみることをおすすめする。 このドラマの中で出てくるコンピュータ用語は専門的で、知らない人が観てもわからないのではないかと思うほどである。 攻撃されているサーバに対処している場面などで ルートキットやDDoS攻撃、DNSの再起動、GNOME、KDEとかなどの言葉がいろいろ出てくるし、 端末の画面は、Linuxのターミナルでコマンド打ってたり表示されてたり状況がわかったりと内容的にはかなり本格的でその言葉を理解出来る人には面白いと思う。 ただ、主人公がハッキングしているのはただののぞき趣味じゃねーかと思うところはあるのだけど。 そこで出てくるコマンドで気になるものを見つけた。 しきりにastuとかastsuというコマンドが出てくる場面がある。データセンターがある場所に行って攻撃に対処しているところで出てくるのだが astsuでポート開いてたり、ifconfigしてたり astuでlsしてたりrmしてたりとまるでsudoのように使っている。 で、これなんだろと思って調べてみたらどうも独自のコマンドのようである。 このセキュリティ会社の名前がAllSafeという名前、つまり AllSafe Toolkit Super Userの頭文字を取ってastsuなのではないかということらしい。 astuはなんだろうね。 AllSafe Toolkit Userなだけかな。 このあたりのLinuxのコマンドラインスクリーンも面白いので見入ってしまった。 まだ、1話しか観ていないのだがどうもこれ以降こういった場面はさほどでないようで7話あたりから展開が変わってくるようなことがレビューとかに書かれていた。 主人公のラミ・マレックは、PS4の「Until Dawn・惨劇の山荘」に出ているらしい そのゲーム買ってもっているのに、まだやってないから知らなかったw