プログラミング
Bashblog – ブログを作成するための単一のBashスクリプト
Bashblog – a single bash script to create blogs (github.com)
要約
Bashblogは、特別な要件や依存関係なしに、サーバー上の公開フォルダを使用してブログエントリを投稿するための非常にシンプルなBashスクリプトです。GNU/Linux、OSX、BSDで動作し、MarkdownやDisqusコメント、Twitter連携などの機能をサポートしています。すべてのコンテンツは静的で、単一のBashスクリプトファイルで管理されます。
全文翻訳
bashblogは、ブログを作成するための単一のBashスクリプトです。特別な要件や依存関係なしに、サーバー上の公開フォルダを使用してブログエントリを投稿するための非常にシンプルな方法を望んでいたため、これを作成しました。
GNU/Linux、OSX、BSDで動作します。どのくらいシンプルか?
単に`./bb.sh post`と入力して、ブログ投稿を書き始めるだけです。サンプルはこちらで確認できます:最初のブログ投稿を読む。このページは100%bashblogを使用して生成されており、追加の調整は一切行われていません。他のbashblogユーザーもチェックしてください。
### 使い方
コードをダウンロードし、`bb.sh`を公開フォルダ(例えば`$HOME/public_html/blog`)にコピーして`./bb.sh`を実行します。これにより、利用可能なコマンドが表示されます。ファイルが実行可能でない場合は、`chmod +x bb.sh`と入力して再試行してください。
最初の投稿を作成する前に、ブログの設定(タイトル、著者など)を構成したいと思うかもしれません。詳細については、以下の「設定」セクションをお読みください。
最初の投稿を作成するには、単に以下を実行します。
`./bb.sh post`
インストールされていればMarkdownを使用しようとします。HTMLを強制するには:
`./bb.sh post -html`
スクリプトが残りの処理を行います。完了したら、そのフォルダの公開URL(例:http://server.com/~username/blog)にアクセスすると、インデックスファイルとその投稿の新しいページが表示されるはずです!
### 方法...
ヘッダーとフッター、静的ページなど、Bashblogの高度な機能の使用方法については、wikiをお読みください。
### 機能
* **超シンプルな使い方:** お気に入りのエディタで投稿を入力するだけで、スクリプトが残りの処理を行います。テンプレートは不要です。
* **インストール不要:** `bb.sh`をダウンロードしてブログを開始します。
* **ゼロ依存:** ベースユーティリティ(date, basename, grep, sed, headなど)のみで実行されます。
* **GNU/Linux, BSD, OSX対応:** 箱から出してすぐに使え、MacでGNU coreutilsは不要です。システムに応じて実行する必要があるコマンドスイッチを自動検出するためのいくつかの魔法が組み込まれています。
* **すべてのコンテンツは静的:** 公開Webフォルダを持つマシンへのシェルアクセスのみが必要です。
* ヒント:上級ユーザーはftpfsを介してリモート公開フォルダをマウントし、このスクリプトをローカルで実行できます。
* ドラフトを許可し、シンプルでクリーンなスタイルシートを含み、RSSファイルを自動的に生成します。
* タグ/カテゴリのサポート
* Markdown、Disqusコメント、Twitter、Feedburner、Google Analyticsのサポート
* プロジェクトは2016年現在もメンテナンスされています。バグは修正され、新機能も検討されています(「貢献」を参照)。
* すべてが単一の約1000行のBashスクリプトに格納されています。すごいでしょう?! ;)
### 設定
試用運転には設定は不要ですが、bashblogでブログを運営する予定がある場合は、デフォルトのタイトル、著者名などを自分のものに変更したいと思うでしょう。ブログの文字列を設定する方法は2つあります。
1. `bb.sh`を編集し、`global_variables()`関数内の変数を変更する
2. 設定値を含む`.config`ファイルを作成する -- スクリプトに手を加えず、gitで定期的に更新したい場合に便利です。
ソフトウェアはまずスクリプト内の値を読み込み、その後`.config`ファイル内の値で上書きします。これは、すべての変数をconfigファイルで定義する必要はなく、デフォルトから上書きする必要があるものだけを定義すればよいことを意味します。`.config`ファイルの形式は、`global_variables()`関数と同じように、各行に`variablename="value"`を記述するだけです。注意:値を引用符で囲み、ドル記号で変数を宣言せず、イコール記号の周りにスペースを使用しないでください。
bashblogは、テキストエディタを開くために`$EDITOR`環境値を使用します。
### 詳細な機能
* シンプルだが素敵で読みやすいデザインで、ブログ投稿のみが表示されます。
* **NEW on 2.0** サードパーティライブラリを介したMarkdownサポート。最も簡単な方法はGruber's Markdown.plをダウンロードすることです。
* 投稿プレビュー
* 投稿をドラフトとして保存し、後で編集を再開できます。
* 各投稿のHTMLページ。タイトルをURLとして使用します。
* フロントページに表示する投稿数を設定可能。
* RSSファイルの自動生成、Feedburnerサポート。
* すべての投稿のインデックスを含む追加ページ。
* 各タグのページを自動生成。
* 元のデータを保持しながらすべてのファイルを再構築。
* コメントはTwitterに委任され、Disqusサポートも追加。
* EUクッキー法に準拠するための、クッキーを使用しないTwitter共有オプション。
* Google Analyticsコードサポート。
* すべてがデフォルトで適切にスタイル設定されるように、独自のCSSを含みます。
* ヘッダー、フッター、その他一般的に適切に構造化されたHTMLファイルが必要とするすべてのもの。
* すべてのページの上部に追加コンテンツ(例:バナー、画像など)を追加するサポート。
* w3cによるxhtml検証、CSS検証、RSS検証。
* 投稿するたびにサイトの自動バックアップ(`.backup.tar.gz`として保存されます)。
詳細な更新については、変更履歴セクションを読むか、私のブログのニュースをチェックしてください。
### 貢献
Bashblogは500 SLOCで始まり、現在では1000 SLOCの壁を越えました。コードを最小限に抑え、理解しやすい状態を保つためには、あまりにも多くの機能を追加しないようにする困難な努力が必要です。すべてのバグ修正は歓迎されますが、真新しい機能は、メインツリーに組み込まれるために強く正当化される必要があります。すべての新しいリクエストは、コメントで正直かつ丁寧に議論されます。ガイドラインとして、プルリクエストは次の条件を満たす必要があります。
* 特定の人々のユースケースを修正する(例:国際化)
* 非常に一般的であると主張できるユースケースを追加する(例:コメントのdisqus統合)
* 可能な限り非常に小さい(数行のコード)
* コードの大幅な書き換えを必要としない(`create_html_file()`や`write_entry()`などを壊さない)
* Linux、BSD、Macで動作すること。非POSIXフラグを持つGNU coreutils(例:dateやgrep)の使用には注意してください。
* UNIX哲学に従う:一つのことをうまくやる、外部機能はサードパーティソフトウェアに依存するなど。
* デフォルト設定を使用する場合は常に後方互換性を維持する。
### 変更履歴
* **2.10** `global_twitter_card_image`を追加
* **2.9** `body_begin_file_index`を追加
* **2.8** バグ修正。Tomasz Jadowski氏によるスラブ語サポート。現在は機能していないTwitter JSON APIの共有カウントを削除。bashblogで管理されない静的HTMLファイルのサポート。
* **2.7** 投稿日をHTMLファイルのコメントとして保存(#96)。再構築時に、コメントの日付とファイルの日付が同期され、コメントの日付が優先されます。
* **2.6** 複数著者のサポート。それぞれに異なる`.config`を使用。
* **2.5** Martijn Dekker氏による大規模なコードクリーンアップ。`tags`コマンド。タグリスト(ウェブサイトとコマンドの両方)の「posts」という単語が単数形になりました。`template_tags_posts_singular`をチェックしてください。
* **2.4** 投稿用のTwitterサマリーメタデータ(#36)を追加。
* **2.3.3** 大きなコメントヘッダーを削除。インデックスページでカット記事のタグを表示するオプションを追加(#61)。「すべての投稿」ページをクリーンアップ(#57)。
* **2.3.2** 参照にTwitterの代わりにtopsyを使用するオプション。
* **2.3.1** クッキーなしのTwitterオプション。
* **2.3** インテリジェントなタグの再構築とデフォルトでMarkdownを有効化。
* **2.2** 柔軟な投稿タイトルからファイル名への変換。
* **2.1** タグ/カテゴリのサポート。`delete`コマンド。
* **2.0.3** 外部ファイルを介した他のアナリティクスコードのサポート。
* **2.0.2** `$body_begin_file`が空の場合のバグを修正。GitHubプロジェクトへのリンクを含むフッターに余分な行を追加。
* **2.0.1** パーソナライズされたヘッダー/フッターファイルを許可。
* **2.0** Markdownサポートを追加。BSD dateを完全にサポート。
* **1.6.4** ローカライズされた日付のバグを修正。
* **1.6.3** 現在、BSD dateをサポート。
* **1.6.2** 重複情報を避けるために一部の関数と変数を簡素化。
* **1.6.1** 時間が1桁の場合の`date`修正。
* **1.6.0** Disqusコメント。外部設定ファイル。`date`コマンドのバージョンチェック。
* **1.5.1** その他のバグ修正とパラメータチェック。
* **1.5** Đurađ Radojičić (djura-san) が一部のコードをリファクタリングし、柔軟性とi18nを追加。
* **1.4.2** 現在、イシューはGithubで処理されます。
* **1.4.1** いくつかのコードリファクタリング。
* **1.4** コメントにTwitterを使用し、`rebuild`コマンドを改善。
* **1.3** `edit`コマンド。
* **1.2.2** Feedburnerサポート。
* **1.2.1** タイムスタンプのバグを修正。
* **1.2** `list`コマンド。
* **1.1** ドラフトとプレビューのサポート。
* **1.0** http://is.gd/Bkdoruを読む。
### ライセンス
このプログラムはフリーソフトウェアです。フリーソフトウェア財団が発行したGNU General Public Licenseのバージョン3または(ご希望により)それ以降のバージョンの条件に基づいて、これを再頒布および/または変更することができます。このプログラムは、それが有用であることを期待して配布されますが、いかなる保証もありません。商品性または特定目的への適合性の黙示の保証さえもありません。