かわろぐ

技術、セキュリティ、その他もろもろ

MENU

Sphinx で PDF ファイルを生成する

前回の記事で Shinx のセットアップと Markdown を扱えるように設定変更をしました。今回はPDFファイルに出力できる環境を整えた時の備忘録です。

Mac に TeX 環境を作る

公式のドキュメントによると、Sphinx は LaTeXを利用したPDF出力が可能なようです。ということでまずは、TeXの環境を構築します。

私の環境(Mac)ではインストールの完了までに30分程度時間がかかりました。途中でパスワードの入力も求められるのが注意点ですね。

$ brew cask install mactex-no-gui

インストールが終わったら以下のコマンドで環境をアップデートします。これも結構時間かかります。

$ sudo tlmgr update --self --all

Shpinx の設定ファイルを更新しPDF出力する

Conf.py に以下の2行を追加する

# LaTeX の docclass 設定
latex_docclass = {'manual': 'jsbook'}

アップデートが終わったら、前回の記事事で作成した index.md のあるディレクトリに移動し、以下のコマンドでPDFが作成できます。

$ make latexpdf

生成されたPDFファイルを開くと、表紙やら目次やらが自動生成されています。肝心の index.md の内容のページはこんな感じでした。

f:id:kawa_xxx:20200815220456p:plain

ん?ヘッダーはどこ行った?とかデザインがダサいなとかいろいろ問題がありますね。少しずつ調べてきれいなドキュメントをPDFでも出力できるようにしていきたいと思います。

参考文献

https://sphinx-users.jp/cookbook/pdf/index.html?highlight=pdfhttps://qiita.com/t-shmp/items/3588161b92a9a26a351b

Sphinx で Markdown を使えるようにする

前回前々回とエンジニア向けのドキュメントを作る話をしていて、gitbook を使ってみましたが、なんとメンテナンスされていないという自体が発覚しました。最初からちゃんと調べろよという感じですが。。。

そこで Python 界隈でよく使われている Sphinx に狙いを定めました。最初は markdown でないマークアップ言語しか使えないと思っており、敬遠していましたが、プラグインを入れることでMarkdownでもドキュメントがかけるようになっているとのことで改めて調査しました。

今回は Sphinx の環境セットアップとMarkdownでサンプルドキュメントを作るところまでをやってみたいと思います。

環境

  • MacOSX
  • Homebrew

Sphinx をインストールする

Python は Homebrew を使って pyenv をインストールしてあるものと仮定します。 

pip install -U Shinx

クイックスタートでひな形を作る

Sphinx には初期に必要なファイルを自動で生成してくれるツールがあります。 専用に作ったディレクトリの中で、 sphinx-quickstart と打ってみると、設定項目をいくつか聞かれた後に、いくつかのファイルやディレクトリが作成されます。

$ sphinx-quickstart
Sphinx 2.2.1 クイックスタートユーティリティへようこそ。

以下の設定値を入力してください(Enter キーのみ押した場合、
かっこで囲まれた値をデフォルト値として受け入れます)。

選択されたルートパス: .

Sphinx 出力用のビルドディレクトリを配置する方法は2つあります。
ルートパス内にある "_build" ディレクトリを使うか、
ルートパス内に "source" と "build" ディレクトリを分ける方法です。
> ソースディレクトリとビルドディレクトリを分ける(y / n) [n]:

プロジェクト名は、ビルドされたドキュメントのいくつかの場所にあります。
> プロジェクト名: test
> 著者名(複数可): kawa
> プロジェクトのリリース []:

If the documents are to be written in a language other than English,
you can select a language here by its language code. Sphinx will then
translate text that it generates into that language.

For a list of supported codes, see
https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language.
> プロジェクトの言語 [en]: ja

ファイル ./conf.py を作成しています。
ファイル ./index.rst を作成しています。
ファイル ./Makefile を作成しています。
ファイル ./make.bat を作成しています。

終了:初期ディレクトリ構造が作成されました。

マスターファイル ./index.rst を作成して
他のドキュメントソースファイルを作成します。次のように Makefile を使ってドキュメントを作成します。
 make builder
"builder" はサポートされているビルダーの 1 つです。 例: html, latex, または linkcheck。

Markdown 用のプラグインをインストールし、使えるようにする

次に Sphinx で Markdown を使えるようにプラグインを一つインストールします。

pip install recommonmark

インストールが完了したら、先程のquickstart で作った conf.py に以下のように追記します。 Extention 自体は記載があるはずなので、 recommonmark の部分を追記すればOKです。

extensions = [
    'recommonmark'
]

Markdownファイルを Sphinx に認識させるために拡張子と、使うパーサーを同じ設定ファイルに書きます。

source_suffix = ['.rst', '.md']
source_parsers = {
   '.md': 'recommonmark.parser.CommonMarkParser',
}

Recommonmark は table に対応していないようなので sphinx-markdown-tables をインストールします。

pip install sphinx-markdown-tables

Recommonmark と同じく、 extentions に名前を書きます。

Markdown ファイルを作って html で表示してみる

プロジェクトのルートディレクトリにある、 index.rst ファイルは削除してください。このファイルが残っていると、markdown ファイルを指定してもこちらが優先されてしまいます。

今回はサンプルとして以下のようなドキュメントを用意しました。

index.md

# hello sphinx!
スフィンクスで書く最初のドキュメントです。

ビルドし、HTMLファイルを生成するのは以下のコマンドです。

$ sphinx-build . out index.md 

これで out ディレクトリの中に html ファイルが生成されているので、適当なブラウザで表示してみてください。

次回はPDFファイルに出力できる用にしてみたいと思います。

参考文献

https://sphinx-users.jp/gettingstarted/index.htmlhttps://qiita.com/it__ssei/items/2a1205cfd3ac3ee61a57https://qiita.com/unhurried/items/f0372688e8a8485718b5

Anker Soundcore 2 が想像以上にいい音だった話

4、5月の長引くコロナの在宅のなか、子どもたちをあやすためにテレビを見たり、様々な遊びを試みたり。結構なストレスが親にもかかっているなぁと感じていました。

無音の中子どもを相手にするのは割としんどい。なにかBGMを!と思って最初の頃は iPhone から直接音楽を流していましたが、音質も音量もいまいち。そこで思い切って、取り回しやすいコンパクトなスピーカーを買おうと調べてみました。

私はこれまで、スピーカーやイヤホンはBoseと決めていましたが、 Bose SoundLink Mini Bluetooth speaker II は 2万円以上してしまう…。流石に金額的に子どもに壊されたらショックだよなぁ…と思っていました。

更に少し調べてみるとAnkerから同じようなものがでていました。

Anker SoundCore2ですね。

音が上下するようなレビューがありちょっと不安でしたが、5000円を切る価格でBose に近しい音が出るということでダメ元で買ってみました。

が、結果として大正解だったと思っています。

モノラルではありますが、音質もとてもいいし、何よりずんずんくる低音がいい。

そして持ち運びにも苦にならないサイズ感ですし、子どもが持ち歩いて落としてもそんなに危なくない重さです。 肌触りもマットな感じでいいですが、手で触ったあとが多少目立つのが残念ポイントですね。

Bluetoothも切れることなく快適に聞けます。

AUXケーブルも使えるので、使わなくなったらPC用のスピーカかな。

tmux に powerline-status が反映されなかったので調べてみた

これまでは powerline-status を使っていたのですが、 tmux を3.0に更新したあたりから、 powerline-staus を認識してくれなくなってしまいました。

結論から言うと、私のMacは上記の更新をしたタイミングでメインの言語を日本語から英語に変更していました。加えて、環境変数の LC_ALL が定義されていなかったことが原因のようでした。

export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8’  #これが書いてなかった!

どうやって特定したか?

tmux の設定ファイルを変更して、リロードコマンド

$ tmux source-file path/to/.tmux.conf

を打ったら poworline xxx returned 1 という文字列が表示された。これはおそらく何らかのエラーが起きている証だと思いました。

そこで、シェルから直接 powerline-damon を起動させてみると、locale 周りでエラーが出ていました。 Shell の設定ファイルを確認してみると LANG は設定しているけど LC_ALL を設定していないことに気づいたので、LANG 同様に追記して Shell を再起動してtmux を起動してみるときれいなステータスラインが表示されました。

エラーコードとかしっかり書かなくては。とおもって LC_ALL を削除してすべて再起動しても powerline-status はきれいに表示されたままでエラーが再現せず。。。内部でキャッシュしてるのかなぁ。。。?

tmux 2: Productive Mouse-Free Development

tmux 2: Productive Mouse-Free Development

  • 作者:Hogan, Brian P.
  • 発売日: 2016/11/27
  • メディア: ペーパーバック

Metasploitable3 をローカルで立ち上げるまで

環境

  • MacBookPro
  • VirtualBox 6.1.6
  • Vagrant 2.2.7

事前準備

まずは必要なものをインストールして行きましょう。

Metasploitable3を起動する

Githubのクイックスタートの通り以下のコマンドを入力します。

mkdir metasploitable3-workspace
cd metasploitable3-workspace
curl -O https://raw.githubusercontent.com/rapid7/metasploitable3/master/Vagrantfile && vagrant up

結構ダウンロードに時間がかかります。Ubuntu の方だけで私の自宅の回線では30分くらいかかりました。WindowsServer の方も合わせるとダウンロードだけで1時間以上かかっている計算ですかね。Ubuntu の仮想マシンが立ち上がると、次はWindowsServer2008の仮想マシンをダウンロードが始まります。

WindowsServer が起動するのかと思ったら仮想マシンの作成が完了したら以下のようなインターフェイス周りのエラーが発生しました。

A host only network interface you're attempting to configure via DHCP
already has a conflicting host only adapter with DHCP enabled. The
DHCP on this adapter is incompatible with the DHCP settings. Two
host only network interfaces are not allowed to overlap, and each
host only network interface can have only one DHCP server. Please
reconfigure your host only network or remove the virtual machine
using the other host only network.

検索してみると、既知の問題の様子でした。しかもMetasploitable3 の問題ではなく Vagrant の問題の様子。

解決方法はというと、Adapter2を手動追加してみてもだめでした。同じエラーが出たあとにAdapter2がけされている。そりゃそうですね。Vagrant の問題なので。

f:id:kawa_xxx:20200509152035p:plain:w400

上記の Issue の中にあったモンキーパッチを Metasploitable3 の Vagrant ファイルに適用して起動してみます。

class VagrantPlugins::ProviderVirtualBox::Action::Network
  def dhcp_server_matches_config?(dhcp_server, config)
    true
  end
end

すると動いた!!WindowsServer が起動すると、PowerShellスクリプトを動かしたり結構セットアップに時間がかかる様子です。起動が終わるとこんな感じ。

f:id:kawa_xxx:20200509152040p:plain:w400

次回は、Kali Linuxからスキャンをしてみたいと思います。

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習

  • 作者:IPUSIRON
  • 発売日: 2018/12/07
  • メディア: 単行本(ソフトカバー)