2014-03-30

Photoshop(CC): スクリプト経由でPNG保存

画像を大量にPNG保存する必要があったのでスクリプト(ExtendScript)経由で保存してみたんですけどファイルサイズが普段よりちょっと大きいことに気付きました。

いろいろ調べたり試したりしたところ、最初に使っていたDocument#saveAs(file, options)よりPhotoshopの「Web用に保存」にあたるDocument#exportDocument(file, ExportType.SAVEFORWEB, options)の方がサイズを抑えて保存できるようです。

手元の画像だとsaveAsだと50KBくらいだったのがexportDocumentだと5KBくらいになっていました。

2014-03-09

PostgreSQL: テーブルの主キーを列順に取得する

以前Postgresで複合主キーのテーブル群から主キー一覧を取ってくる必要があったので、また必要になった時のために残しておきます(あまりないかも…)。

    SELECT c.table_name       -- テーブル名
         , c.column_name      -- 列名
         , c.data_type        -- データ型
         , c.ordinal_position -- 列順

      FROM information_schema.columns c

INNER JOIN information_schema.constraint_column_usage ccu
        ON c.table_name       = ccu.table_name
       AND c.column_name      = ccu.column_name 

INNER JOIN information_schema.table_constraints tc
        ON tc.table_catalog   = c.table_catalog
       AND tc.table_schema    = c.table_schema
       AND tc.table_name      = c.table_name
       AND tc.constraint_name = ccu.constraint_name

     WHERE tc.constraint_type = 'PRIMARY KEY'
     --AND c.table_name       = '' -- 必要ならテーブル名で絞込み

  ORDER BY c.table_name
         , c.ordinal_position

今までinformation_schemaから値を取ってくることがなかったのであまり知識がないんですけど、columns → constraint_column_usage → table_constraints まで辿らないと「列に紐付く制約名が何で」(constraint_name)、「その制約名が主キーか」(constarint_type = ‘PRIMARY KEY’)が判断できないみたいです。