Programming」カテゴリーアーカイブ

プログラミング全般に関するカテゴリーです。

SQLiteでdateやdatetimeの扱い方

PythonのSQLiteモジュールを使ってdate型やdatetime型を扱う方法

テーブルの作成

$ sqlite3 data.db
sqlite> CREATE TABLE sample(d date, t timestamp);
sqlite> .quit

Pythonでdate型やdatetime型の読み書き

>>> import sqlite3, datetime, time
>>> con = sqlite3.connect('data.db', detect_types = sqlite3.PARSE_DECLTYPES|sqlite3.PARSE_COLNAMES)

データの追加

>>> today = datetime.date.today()
>>> now = datetime.datetime.now()
>>> con.execute('INSERT INTO sample(d, t) values (?,?)', (today, now))

データの読み出し

>>> con.execute('SELECT * FROM sample').fetchall()
[(datetime.date(2016, 5, 17), datetime.datetime(2016, 5, 17, 11, 45, 20, 153520))]

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