JavaScriptの難読化ツール JavaScript::Packer

JavaScriptを難読化、圧縮するツール

/packer/
http://dean.edwards.name/packer/

Javascript::Packer

オフラインで利用できるPerlバージョンはこちら。

GitHub – leejo/javascript-packer-perl: CPAN Module Javascript::Packer
https://github.com/leejo/javascript-packer-perl

使い方

#!/usr/bin/perl

use JavaScript::Packer;

my $packer = JavaScript::Packer->init();
my $uncompressed = 'console.log("JavaScript::Packer");';
my $compressed = $packer->minify( \$uncompressed, { compress => 'obfuscate' } );

print $compressed;

出力結果

eval(function(p,a,c,k,e,r){e=String;if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'[0-3]'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('2.3("0::1");',[],4,'JavaScript|Packer|console|log'.split('|'),0,{}))

圧縮用途で使う場合はcompressbestとするのが良いと思います。
(このサンプルでは元のスクリプトよりもサイズが大きくなっていますが。)

PILを使わないでpngファイルの作成

Pythonを使って画像ファイルを扱いたい場合、PILかPillowを使うのがほとんどだと思いますが、レンタルサーバーなど、ライブラリを自由にインストールできない環境で使えなくて困ることが稀にあります。

そういう場合に便利なのがPyPNGというライブラリです。

GitHub – drj11/pypng: Pure Python library for PNG image encoding/decoding
https://github.com/drj11/pypng

pure Pythonで書かれていて、他のライブラリにも依存していないのでファイル1個をコピーするだけで使えます。

pngファイルの作成

>>> import png
>>> width, height = 21, 7
>>> writer = png.Writer(width, height, greyscale=True, bitdepth=1)
>>> f = open('abc.png', 'wb')
>>> writer.write(f, [
... '001110001111000011100',
... '010001001000100100010',
... '010001001000100100000',
... '011111001111000100000',
... '010001001000100100000',
... '010001001000100100010',
... '010001001111000011100' ])
>>> f.close()

作成したファイル

abc.png

HTS541010A9E680

使っていたノートPCのHDDの調子が悪くなってきたので、新しいHDDに買い換えてみました。

今回購入したのは、HGSTの2.5インチHDDです。

  • HTS541010A9E680
  • 1TB
  • 5400 rpm
  • 8MBキャッシュ

スペックを気にして購入した訳ではありませんが、ベンチマークを実行してみました。

ディスク

# hdparm -t /dev/sda2

/dev/sda2:
 Timing buffered disk reads: 306 MB in  3.00 seconds = 101.95 MB/sec

キャッシュ

# hdparm -T /dev/sda2

/dev/sda2:
 Timing cached reads:   9246 MB in  2.00 seconds = 4625.82 MB/sec

速度を求める人はSSDの方を買っていると思いますので、ベンチマークは参考程度かなと思います。壊れることなく長期間使えたらうれしいです。