http://qiita.com/nilesflow/items/9eb63817c7195058320b
https://github.com/nilesflow/zundoko-socket.io
160.16.117.208:3050
http://qiita.com/nilesflow/items/9eb63817c7195058320b
https://github.com/nilesflow/zundoko-socket.io
160.16.117.208:3050
wget http://download.gna.org/wkhtmltopdf/0.12/0.12.3/wkhtmltox-0.12.3_linux-generic-amd64.tar.xz
tar Jxvf wkhtmltox-0.12.3_linux-generic-amd64.tar.xz
cp bin/wkhtmlto* /usr/local/bin/.
作ってみたが、文字が重なる・・・
http://dev.furoom.net/jsdoc3/jsdoc3/index.pdf
letter-spacingの問題っぽい。
オプションでも回避できなさそうな・・。残念。。
最新版入れてみる
1024 wget https://bitbucket.org/wkhtmltopdf/wkhtmltopdf/downloads/wkhtmltox-0.13.0-alpha-7b36694_linux-centos6-amd64.rpm
1026 tar Jxvf wkhtmltox-0.13.0-alpha-7b36694_linux-centos6-amd64.rpm
1027 rpm -ivh wkhtmltox-0.13.0-alpha-7b36694_linux-centos6-amd64.rpm
1028 yum install icu
1029 yum install xorg-x11-fonts-Type1
1030 yum install xorg-x11-fonts-75dpi
1031 rpm -ivh wkhtmltox-0.13.0-alpha-7b36694_linux-centos6-amd64.rpm
動かない。
wkhtmltopdf index.html index.pdf
QXcbConnection: Could not connect to display
アボートしました
yum install xorg-x11-server-Xvfb
xvfb-run wkhtmltopdf index.html index.pdf
できれいに表示された!
でも複数表示できない。
export QT_XKB_CONFIG_ROOT=/usr/share/X11/xkb; xvfb-run wkhtmltopdf DomainSync.html DomainSync.js.ht
ml index.pdf
Error: This version of wkhtmltopdf is build against an unpatched version of QT, and does not support more then one input document.
Exit with code 1, due to unknown error.
stable 0.12.3 を使って、
letter-spacing を何とかするしかないのかも
–dpi 75 を着けると綺麗に表示された!
wkhtmltopdf –dpi 75 index.html index.pdf
複数ファイル一気にかけようとするとエラーが発生する
wkhtmltopdf –dpi 75 *.html index.pdf
Loading pages (1/6)
Warning: Received createRequest signal on a disposed ResourceObject’s NetworkAccessManager. This might be an indication of an iframe taking too long to load.
–javascript-delay を付けると良いようだ
wkhtmltopdf –dpi 75 –javascript-delay 1000 *.html index.pdf
用紙幅が少なく感じるのは、
–page-size で調整すればよいのかな
http://stackoverflow.com/questions/6394905/wkhtmltopdf-what-paper-sizes-are-valid
A3 B3くらいがおさまりいい気がする
wkhtmltopdf –dpi 75 –javascript-delay 1000 –page-size B3 module-*.html index.pdf
–minimum-font-size
もあるけど、maxがない。文字大きくしたいのはそんなになさそう
jsdocの出力に対してかけたい。
.js.html はソースコードなのでとりあえず省く
index.htmlは最初におきたい
moduleは、moduleとclassで分けたい
wkhtmltopdf –dpi 75 –javascript-delay 1000 –page-size B3 index.html module*[^\.][^j][^s].html global.html index.pdf
classとmoduleがごちゃまぜなのでもう一息・・。
20000DIR
$ php glob.php
13.52773 ms
$ php opendir.php
5.3176 ms
php.ini
session.save_path = “tcp://127.0.0.1:6379,tcp://127.0.0.1:6380”
これだと、ラウンドロビンっぽく順にアクセスするので、障害対応にはならない。
アプリ側で指定するか、redis sentinel 使うか、仮想IP使うか・・。
CURLOPT_RESOLVE
動的ドメイン解決したかったが、5.6でも7.0betaでも使えない。
PHP Notice: Use of undefined constant CURLOPT_RESOLVE – assumed ‘CURLOPT_RESOLVE’ in /home/nilesflow/php/dynamic-host-curl/request.php on line 9
Notice: Use of undefined constant CURLOPT_RESOLVE – assumed ‘CURLOPT_RESOLVE’ in /home/nilesflow/php/dynamic-host-curl/request.php on line 9
PHP Warning: curl_setopt() expects parameter 2 to be long, string given in /home/nilesflow/php/dynamic-host-curl/request.php on line 9
Warning: curl_setopt() expects parameter 2 to be long, string given in /home/nilesflow/php/dynamic-host-curl/request.php on line 9
追加されてない?と思ったが、
http://stackoverflow.com/questions/24351152/how-to-manually-resolve-hosts-in-https-connections-in-php
https://bugs.php.net/bug.php?id=63488&edit=3
ChangeLogはある。
http://www.php.net/ChangeLog-5.php#5.5.0
ソースを見ると、libcurlのバージョンに
#if LIBCURL_VERSION_NUM >= 0x071503 /* Available since 7.21.3 */
REGISTER_CURL_CONSTANT(CURLAUTH_ONLY);
REGISTER_CURL_CONSTANT(CURLOPT_RESOLVE);
#endif
yuminstallだと、7.19までしか入らない
libcurl-7.19.7-46.el6-x86_64
libcurlを更新
wget http://www.execve.net/curl/curl-7.46.0.tar.bz2
tar xf curl-7.46.0.tar.bz2
cd curl-7.46.0
./configure –enable-libcurl-option
make
make install
phpをリビルド
cd /usr/local/src/php-5.6.12
./configure 前と同じオプション
make
make install
new Error().stack
jsdoc3、yuidoc, esdocを試した三田
jsdoc3がシンプル。UIが貧弱
yuidocは、UIはいいけど、@method の追加とかが手間
esdocはエラーになったので、ちゃんと確認していない。
ひとまず、jsdocのままとしている
UIテンプレートで変えられると思い、探したけど、意外となかった。
生成されたHTML
http://dev.furoom.net/jsdoc3/jsdoc3/index.html
以下を参考に
http://usejsdoc.org/
http://www38.atwiki.jp/aias-jsstyleguide2/pages/14.html
つけとくものは、以下
ファイル
@fileoverview
モジュール
@exports or @module
クラス
@constructor
@extends
→リンクにならない・・。
@interface
@implements
あたりも
メソッド
@public
@protected
@private
@abstract ※googleに無し
@override
@param
@return
@callback {RedisClient~onSubscribe} ※googleに無し
定数
@const
ちょっと試したもの
@see
@link
@fires ※googleに無し
@fileoverviewと@exportsは別のコメントブロックにしないと正しく表示されない
@callback の後は、クラス名を入れないと正しく表示されない
@linkは、反映されない。ul li の書き方は試してない。
@seeも、リンクは貼られない。。
https://github.com/nilesflow/prototype-node.js-jsdoc
のソースをgithubに
https://github.com/nilesflow/prototype-node.js-websocket-wss
foreverをサービスとして起動
CentOS6.6、CentOS7.1
init.dの起動スクリプト+logrotate設定
https://github.com/nilesflow/centosetc
ログは、/var/log/foreverd.log
Node.jsログは、指定の場所に。
start の2重起動防止。
注意点は、foreverのHOMEディレクトリ。
HOME=xxxxxx
daemonの場合、ログインユーザでないため、/var/forever/.forever
ログインユーザの場合、/home/xxxxx/.forever
となる。
コマンドラインからの場合は、以下で参照可能。
HOME=xxxxxx forever list
※通常ユーザの場合、不要。
起動ユーザは、ログインユーザとdaemonに対応
forever-service はログ出力が制御できなかった。
initd-forever は、少し不足
以下のスクリプトを流用させてもらった
http://multix.jp/daemon-nodejs/
サーバ側
var https = require(‘https’);
var fs = require(‘fs’);
var ssl_server_crt = ‘/etc/pki/CA/certs/せrヴぇr-ca.crt’;
var ssl_server_key = ‘/etc/pki/CA/private/せrヴぇr.key’;
var ssl_ca_crt = ‘/etc/pki/CA/cacert.pem’;
var port = 443;var options = {
key: fs.readFileSync(ssl_server_key),
cert: fs.readFileSync(ssl_server_crt),
ca: [fs.readFileSync(ssl_ca_crt)],
requestCert: true,
rejectUnauthorized : true,
};var servers = https.createServer(options, function (req,res) {
fs.createReadStream(“index.html”).pipe(res);
}).listen(port);var wss = new WebSocketServer({server:servers});
クライアント側
var fs = require(‘fs’);
var https = require(‘https’);
var WebSocket = require(‘ws’);
var ssl_client_crt = ‘/etc/pki/CA/client/certs/client.crt’;
var ssl_client_key = ‘/etc/pki/CA/client/private/client.key’;
var ssl_ca_crt = ‘/etc/pki/CA/cacert.pem’;
var ssl_client_pfx = ‘/etc/pki/CA/client/private/client.pfx’;
var options = {
ca : fs.readFileSync(ssl_ca_crt),
agent: false,
// key&certの指定
key : fs.readFileSync(ssl_client_key),
cert : fs.readFileSync(ssl_client_crt),
passphrase : ‘xxxxx’,
// 又は、pfxの指定
// passphrase : ‘xxxx’,
// pfx : fs.readFileSync(ssl_client_pfx),
};
var ws = new WebSocket(‘wss://xxxxx:443/’, null, options);