検討!目論見委員会Z

サーバインフラ屋10年余りやってる人

最近気づいたこと(php.iniの位置について)

php.iniが /usr/local/lib/php.ini にあってなんでこんな中途半端なところにあるんだろうと思っていた

なにげなくphp -iの結果を読んでいたりした。

% php -i | grep php.ini
Configuration File (php.ini) Path => /usr/local/lib
Loaded Configuration File => /usr/local/lib/php.ini

ああ、そういうことかーと思ったりした。etcじゃないんだlibなんだ。なんでだろう。

おしまい

md2inaoを使ってみるの巻

md2inao?

md2inaoというmarkdownから技術評論社の雑誌や書籍のInDesignのタグ付きテキストに変換するツールがあったので使ってみよう。夏コミの本に間に合えば使う感じで一つ(げーって言いたそうな人がいるけど無視

環境はさくらのVPS CentOS5.7(やや古い、が安定しているのに越したことはない)

結論

はい、いきなり結論です。

  • InDesign職人カモーン
    • InDesignのタグ付きテキストに変換するだけなので、タグに対応するスタイルをInDesignで作っておかないといけません[要出典][やってないだけです。はいすいません]
    • InDesignスクリプト処理できんのやろか・・・ ・・・・ ・・・・・・(頭を抱える)
  • CentOS 5.7という古い環境で実行してはいけません
    • perl 5.10以上の環境で実行しましょう。あと依存するcpanのライブラリでコケます[解決済み]

じゃあ早速、動かしてみよう!(てさぐれ!部活ものっぽいアレ

$ git clone git@github.com:naoya/md2inao.git

CPANでモジュールをインストールしておかないといけないのでやってやります。数分かかります。

$ curl -L http://cpanmin.us | perl - --sudo Text::Md2Inao
<snip>
--> Working on Text::Md2Inao
Fetching http://www.cpan.org/authors/id/G/GF/GFUJI/Text-Md2Inao-0.11.tar.gz ... OK
Configuring Text-Md2Inao-0.11 ... OK
Needs perl 5.010_000, you have 5.008008
! Installing the dependencies failed: Installed version (5.008008) of perl is not in range '5.010_000'
! Bailing out the installation for Text-Md2Inao-0.11.

で、案の定失敗します。

原因と対策

perlのバージョンが古い

  • CentOS5のperlは5.8なのでアップデートしないといけないのです
  • perl 5.10.1のソースを持ってきてビルドしてインストール。/usr/local/binに入るので $ rehashすればあら不思議[適当]

FindBin-libs-1.9のビルドで落ちる

  • perlのバージョンをアップデートして再度モジュールをインストール
  • テストでコケる
#   Failed test 'use FindBin::libs;'
#   at t/01-use-ok.t line 7.
#     Tried to use 'FindBin::libs'.
#     Error:  syntax error at /home/chiba/.cpanm/work/1401640234.28022/FindBin-libs-1.9/blib/lib/FindBin/libs.pm line 185, near "abs_path
#             catpath "
# syntax error at /home/chiba/.cpanm/work/1401640234.28022/FindBin-libs-1.9/blib/lib/FindBin/libs.pm line 322, near "abs_path catdir "
# Compilation failed in require at t/01-use-ok.t line 7.
# BEGIN failed--compilation aborted at t/01-use-ok.t line 7.
# Looks like you failed 1 test of 1.
  • 1.9って数日前にでてたのね

  • 最後に念のため

$ curl -L http://cpanmin.us | perl - --sudo Text::Md2Inao

実行してみよう

うさげを見よう

$ cd md2inao/bin
$ ./md2inao.pl
Usage:
        md2inao.pl [--format=in_design|html|inao] your_markdown_text.md > inao_format.txt
  • うさげですね

mdファイルを食わせてやろう

./md2inao.pl ../old_files/00_sample.md > taggedtext.txt
[warn] リストは63文字まで!(現在71使用):
●リスト1.1::キャプション(コードのタイトル)
function **foo**(a) { // コード内強調
    alert(a); (注:こんな風にコメントがつけられます)
}

___foo('bar');___ // コード内___イタリック___★本文と記法を変えています★
**foo('baz');**   // コード内**強調**



[warn] 本文埋め込みリストは55文字まで!(現在74使用):
$ command  **foo** // コマンド内強調
___foo('bar');___  // コマンド内___イタリック___★本文と記法を変えています★
bar (注:こんな風にコメントがつけられます)

(注:見出し的にも使えます)
function bar(b) {
    alert(b);
}



Use of uninitialized value $1 in length at /home/user/repo/md2inao/lib/Text/Md2Inao/Builder/InDesign.pm line 203.
Use of uninitialized value $1 in length at /home/user/repo/md2inao/lib/Text/Md2Inao/Builder/InDesign.pm line 203.
Use of uninitialized value $1 in length at /home/user/repo/md2inao/lib/Text/Md2Inao/Builder/InDesign.pm line 203.
Use of uninitialized value $1 in length at /home/user/repo/md2inao/lib/Text/Md2Inao/Builder/InDesign.pm line 203.
Use of uninitialized value $1 in length at /home/user/repo/md2inao/lib/Text/Md2Inao/Builder/InDesign.pm line 203.
  • 出てきたファイルを見てみよう
% head taggedtext.txt
<SJIS-MAC>
<ParaStyle:本文>章番号:3章(書籍や特集の場合)
<ParaStyle:本文>連載回数:第5回(連載の場合)
<ParaStyle:本文>タイトル:章のタイトルや連載の各回タイトル
<ParaStyle:本文>キャッチ:章のキャッチや記事の各回キャッチ
<ParaStyle:大見出し>見出し1(大見出し、節)
<ParaStyle:中見出し>見出し2(中見出し、項)
<ParaStyle:小見出し>見出し3(小見出し、目)
<ParaStyle:本文> 段落冒頭の字下げは、このように手動でお願いします。改行は、(改行)このように自動で取り除かれます。
<ParaStyle:本文> 通常の本文<CharStyle:太字>強調(ボールド)<CharStyle:>通常の本文<CharStyle:イタリック(変形斜体)>斜体(イタリック)<CharStyle:>通常の本文<CharStyle:コマンド>インラインのコー ド<CharStyle:>通常の本文<cstyle:上付き><fnStart:><pstyle:注釈>注釈ですよ。<fnEnd:><cstyle:>通常の本文<cFont:Key Mother><00A9><cFont:>(←キーボードフォント)<CharStyle:赤字>赤文字<CharStyle:>通 常の本文<cr:1><crstr:ほかむら><cmojir:0>外村<cr:><crstr:><cmojir:>(←ルビ)。
  • よし、あとは任せた[誰]
  • お疲れ様でした
  • 解散!!!

同人誌用のsphinxテンプレートをつくった

Sphinx+翻訳 Hack-a-thon 2014.5に参加しました。

同人誌用のsphinxテンプレートを作りました。sphinxと、dvipdfmxがインストールされている環境であれば、お手軽に評論系同人誌の入稿用PDFを作ることが出来ます。

nanaka-inside/sphinx-template · GitHub

シュークリームおいしかったです。

nginxのupstreamのserverの記述が効かない

発端

  • apacheをnginxにするから設定ファイルを移植してよ」という寝言が聞こえてきた
  • ムニャムニャしながらapacheの設定を見たところ、mod_proxy_balancerを使っていたので、nginxではproxy_passに書き換えないとなーと思いつつ二度寝した
  • 夢の中の出来事なんじゃないかな?

環境

構成

  • クライアントのリクエストをnginxがプロキシして、backend serverに流す流れ
  • apache(backend server)はバーチャルホストがいくつかある
client request ==(HTTP:80)==> [ nginx (proxy) ] ==(HTTP:80)==> [ apache(backend server) ] 
response to clinet <==(HTTP:80)== [ nginx (proxy) ] <==(HTTP:80)== [ apache(backend server) ]

問題

  • nginxの設定ファイルのupstreamのserverにbackend serverのFQDNを書いた
  • proxy_passにupstreamの名前を指定したけど、backendのFQDNにアクセスしてくれない
  • proxy_passに直接backend serverのFQDNを書くとプロキシしてくれる

原因と対策

*追記:2014/5/21 * Host header追加するだけで良いことがわかった

  • backend serverのFQDNDNSが引けないのが原因だった
    • FQDNはhostsファイルに書かれていた
    • FQDNDNSに登録されていなかった
  • upstream内のserver に書かれたFQDNは、nginx起動時に名前解決されてIPで保持されるらしい
    • resolverという設定ができるがここでは触れない
    • 引けなかったらエラーにしてくれよ感あるが、まあhostsファイルで解決しちゃってるらしいから仕方なし
  • DNS登録するのが面倒だったのでserverにIPを書いてHost headerを書き換える流れ

    設定例

  • nginxの設定ファイルのhttpの中身を抜粋
  • 何となくset $host_headerとした
  • 何をやりたかったかは察して欲しい
  • これだけだと全てのアクセスをbackend serverに投げつけるので、proxy_cache_pathとproxy_temp_pathとか使ってキャッシュしてあげたほうが良い
    server {
        listen       80;
        server_name  _;
 
        access_log  logs/access.log  main;
  
        location / {
            root   html;
            index  index.html index.htm;
        }
    }
    
    upstream backends {
        server 192.168.1.1;
    }
    
    server {
        listen 80;
        server_name hoge.example.com;
        access_log logs/hoge.log main;
        set $host_header "backend.example.com";

        location / { 
            root /www/public;
        }
        location /data { 
            proxy_pass http://backends/resouce/;
            # proxy_pass http://backend.example.com/resouce/; # これだとうまくいく
            proxy_set_header Host $host_header;
            proxy_redirect default;
        }
    }

なお、hostsファイルを抜粋するとこんな感じだったが、今回の設定では使わないので消して良い

192.168.1.1 backend.example.com

参考

オライリ◯っぽい印刷をするには

表紙のフォントについてはO'Reillyの表紙をパロディしたい人向けのあれこれ - びびび新書を参照してください。 解説CoreUtilsという本を作った時にどのような仕様で作ったか書き残しておきます。

f:id:tboffice:20140502221312j:plain

オライ◯ーの本の仕様は、B5変型、カバー付き、カバーと表紙は墨と特色の二色刷りです。特色についてはDICナンバーカラーを探してください。今回はDIC147(紫)をチョイス。

  • サイズ
    • 182mm x 233mm
  • カバー
    • コート135kg PP加工
    • 表1,表4を超えた部分のサイズは90mm。つまり横のサイズは550mm(90+182(表4)+背表紙分今回10+182(表1)+90)
  • 表紙(表1,背表紙,表4)
    • サンカード 19.5kg
  • 見返し
    • 表紙の裏側に張り付く紙のこと
    • 今回金額と相談して見送り
    • なお、やるなら淡クリームラフ書籍62.5kg
  • 本文
    • ラフ書籍用紙(クリーム) 62.0kg
    • ぴったり同じ紙がなくて若干黄色い紙だけどまあ気づかないのでおk
  • その他
    • 二色刷りのデータの作成に苦労したような気がする
    • psdのモードは、墨とM(マゼンダ)C(シアン)(訂正)で作成

今回イニュニックさんに印刷をお願いしました。 刷り上がったものを見たところ、想像以上にオラ◯リーでした。もろもろ相談に乗っていただきありがとうございました。