2013年9月26日木曜日

アワビに合う焼酎を見つけたい

子供のころから捕獲しすぎたアワビが、大人になってだいぶ飽きてきた。
ビールではなく、いいちこで飲みたいが、どのいいちこが合うのだろうか?

「いいちこ20度」

「いいちこ25度」

選択肢は2つしかない、選びようがあまり無いような感じがします。

@ando_ando_ando先生、どうかほっといてください。



2013年9月16日月曜日

gentooでwebサイトのキャプチャをとりまくる

webサイトのURLからそのままキャプチャする


webサイトとかのキャプチャをブラウザなどで取得することが多いとは思いますが、そのままコマンドで取得できれば便利ですよね。

そんな僕達の悩みを叶えてくれるライブラリがありましたのでご紹介します。

wkhtmltopdf、wkhtmltoimageを使ってみる


これはwebkitのレンダを利用してURLやhtmlファイルからPDFや画像ファイルへ変換してしまうアプリケーションです。
X Serverを利用するためチョットインストールが面倒なのですが頑張って入れれば何とかなるでしょう。

wkhtmltopdfをインストール


gentooでしたらmaskを外してこれだけです
karky7 ~ # emerge -pv media-gfx/wkhtmltopdf
これでコマンドとライブラリがはいります

wkhtmltopdfを使ってみる


インストールされるコマンドは2つで
  • wkhtmltopdf
  • wkhtmltoimage
使い方はすごく簡単

WebサイトをPDF化する


PDFにする場合は、wkhtmltopdfを利用する
karky7 ~ # wkhtmltopdf https://www.google.co.jp/ /tmp/google.pdf
Loading page (1/2)
Printing pages (2/2)
Done
karky7 ~ #
ローカルのhtmlファイルもPDF化できる、画像が外部ですとしっかり表示できませんでした。
karky7 ~ # wkhtmltopdf gentoo.html /tmp/gentoo.pdf
Loading page (1/2)
Printing pages (2/2)                                               
Done                                                           
karky7 ~ #
これは便利、その他にもgrayscaleや色々オプションがありますので試してください

Webサイトを画像で取得する


画像で取得する場合は、wkhtmltoimageを利用する
karky7 ~ # wkhtmltoimage http://news.livedoor.com/article/detail/7052329/ /tmp/kyaba.png
Loading page (1/2)
Rendering (2/2)                                                    
Done                                                               
karky7 ~ #
こんな感じです


webページ全体が取得できます、画質やサイズなどはオプションで指定できますので--helpで確認してください。

Pythonからご利用する


コマンドでけでも結構便利なのですが、Pythonなんかから使えればなお便利と言うことで探しました、で、ありました。
Gentooでしたらebuildを作っておきましたのでよかったら使ってください。
karky7 ~ # layman -a karky7
karky7 ~ # emerge dev-python/py-wkhtmltox
使い方、公開されているリポジトリをcloneすればサンプルが入っていますのでそれを実行してください、画像が取得できるはずです。
その他のOSの方は、setup.pyを実行すれば入ると思います
import wkhtmltox

img = wkhtmltox.Image()
img.set_global_setting('out', 'test.jpg')
img.set_global_setting('in', 'http://www.google.com')
img.convert()

PHPからご利用する


これは外せない言語ですよね、みんなのPHPが使えないってありえない、で、インストール

Gentooでしたらebuildを作っておきましたのでよかったら使ってください。
その他の、OSの方は、phpizeからのconfigure、makeでインストールできると思います。
karky7 ~ # layman -a karky7
karky7 ~ # emerge dev-php/php-wkhtmltox
使い方はほぼ一緒
<?php

wkhtmltox_convert('image', 
    array('out' => '/tmp/test.jpg', 
          'in' => 'http://www.google.com/')
); // global settings

?>
LWLな言語から使えるとお手軽に実装が出きると思います、gdとかimagemagickでいじればwebサイトのモールとかリスト表示にサムネイルとか表示できて、かっこいいかも。
ちなみに、かわいいおねぇさんの画像をとるためのものではありません。

参考サイト


こちらのサイトを参考にさせていただきました。

2013年9月15日日曜日

EvernoteのLinuxクライアントNixNoteのebuildを作りました

NixNoteのGentoo用のebuildを作りました

元々scrillというlaymanリポジトリでnervernoteというEvernoteのクライアントがあったのですが、そろそろ古くなったので新しいバージョンのNixNoteを入れてみました(名前も変わっていましたね)

インストール


いつのもようにemergeしてください
karky7 ~ # emerge -pv x11-misc/nixnote

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N     ] dev-java/icedtea-bin-6.1.12.6:6  USE="X alsa doc -cjk -cups -examples -nsplugin -source" 0 kB
[ebuild  N     ] virtual/jdk-1.6.0-r2:1.6  0 kB
[ebuild  N    ~] x11-misc/nixnote-1.6::karky7  0 kB

Total: 3 packages (3 new), Size of downloads: 0 kB

 * IMPORTANT: 1 news items need reading for repository 'hacking-gentoo'.
 * IMPORTANT: 16 news items need reading for repository 'gentoo'.
 * Use eselect news to read news items.

karky7 ~ #

使ってみる


起動してからアカウント設定をすればご利用を開始できます



  「Syncronize」辺りを押すと認証ダイアログが出力されるのでEvernoteのアカウントを入力してください


こんな感の画面です



ネットワークが利用できないような時にローカルで見れるのでチョットしたときに重宝します。
よかったらご利用ください。


2013年9月6日金曜日

PHPとPythonでAES暗号化、復号化

キャバクラに行ったことを女房にバレないように暗号化する


非SSL環境などで他人に見られたくない情報をURLなどで渡したいがそのまま丸見えで渡したくはないという時ってありますよね?

ない?、いやありました。
そんなことがあったので、こんな感じでやってやりました。
AES暗号の詳しい事は専門の方にお願いするとして、簡単に説明しますと、共通鍵ブロック暗号と言うことです。

これはたまんない、秘密にしたいですよね。
 

PHPで暗号化する


ECBモードを利用するのでIV(初期化ベクトル)パラメータは利用しない、そのためキーのみを利用した暗号化になってしまうのでキーがバレればそれまで。
<?php
/* keyは32文字 256bit */
$key = '12345678901234567890123456789012';

/* python側へ0x00の制御文字が入る*/
$text = '私は妻に内緒で昨日キャバクラに行ってしまいました';

$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_ECB);
$encstr = base64_encode($encrypted);
print($encstr);
print("\n");
?>
実行してみる
cuomo@karky7 ~/Code/lwl/php/aes $ php aes3.php 
hiPI4JYACRvv16+WVuJf0BcooUjHFJ7kkLFg+ZYxW0wxFBmeGL3CmPpJM++/VKFs/tVeiC2ZDb+2i77Yke6pg4xNgBrD6sKDcRc4JDAWzY4=
cuomo@karky7 ~/Code/lwl/php/aes $

これでキャバクラに行ったことは解らない。

残念ですがPythonで複合化される


秘密の文字を複合化してみる、ブロック暗号なのでブロック境界に満たない場合\x00の(多分NULL)が埋められて復号化されるのでその分を削除する。enc_messageにPHPで出力された文字をコピーしてください。
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from Crypto.Cipher import AES
import base64

'''鍵 16、32で指定しなければならない'''
key = '12345678901234567890123456789012'

'''暗号化情報'''
cipher = AES.new(key)

'''秘密の文字'''
enc_message = 'hiPI4JYACRvv16+WVuJf0BcooUjHFJ7kkLFg+ZYxW0wxFBmeGL3CmPpJM++/VKFs/tVeiC2ZDb+2i77Yke6pg4xNgBrD6sKDcRc4JDAWzY4='
data = base64.b64decode(enc_message)

''' 復号化'''
message = cipher.decrypt(data)
message = unicode(message, 'utf-8')

''' \x00の削除 '''
message = message.rstrip(unichr(0))
print("元メッセージ: " + message.encode('utf-8'))
実行してみる
cuomo@karky7 ~/Code/lwl/Python/aes $ python aes2.py 
元メッセージ: 私は妻に内緒で昨日キャバクラに行ってしまいました

これはヤバい、これをやられてしまうと、キャバクラに行ったことがバレますね。

普段の何気ない生活の中でも、少し暗号化すればセキュリティが上がるのでは無いでしょうか?