2015年3月15日日曜日

levelDBを使う。

はじめは、C++11のハッシュテーブル(unordered_map)を使おうと思ったのだが、
永続化の処理を書いたりする必要があるなど、大変にプログラムを書くのに時間が掛かる事が判明したので、
先人の書いた素晴らしいコードを利用させてもらおうと思う。(しかも自分で書くより処理が速い。はず。)

環境:
win7x64にインストールしたVirtualBox上の
CentOS7

LevelDBをつかってみた
を大いに参考にした……のに つまずいた。



geditのショートカットキーからbuildできなかった。

[致命的エラー: /usr/local/include/leveldb/db.h: 許可がありません]
→権限が足りないらしいので、スーパーユーザーになる必要がある。
→[makefile]を作成したディレクトリ上で、右クリック→[端末の中に開く(E)]
→[su]コマンドでsuper userになる。
→[make]コマンドでbuild

あるいは、始めからrootでログインしておけばいけるかもしれない。
今度試してみる。
→できた。(当然ではあるが)


参考にしたサイトで、一部
int main(int argc, char *argv) {
となっているが、たぶん
int main(int argc, char *argv[]) {
かな?


[`leveldb::Options::Options()' に対する定義されていない参照です]
[`leveldb::DB::Open(leveldb::Options const&, std::string const&, leveldb::DB**)' に対する定義されていない参照です]
→コンパイルオプションを付けるのを忘れていた。
[ /usr/local/lib/libleveldb.a -lpthread -I /usr/local/include/leveldb/ ]
を追加。

2015年2月25日水曜日

bloggerで一日の間にメール投稿できる限度数

C++ による socket通信 でBloggerにメールで投稿するテストをしていたら、
何故か投稿できない代わりに、メールボックスに以下のメッセージが返信された。


Delivery to the following recipient failed permanently:

     XXXXXXXXXXXXXXXXX.XXXXXXXXXXXXXXXXX@blogger.com

Technical details of permanent failure:
You have exceeded the the allowable number of posts without solving a captcha.

----- Original message -----

~省略~

----- End of message -----


要するに、
「 (人間である事を証明するための) 画像認証無しに許されている投稿の数の限度を超過しました。」
と言っており、投稿でき無くなった。

実際の所、Bloggerの管理ページを開いて、投稿しようとすると、
画像認証ができ来て、それをパスすると上手く行く。

(ただ、残念ながら、メールでの投稿はこの後も失敗したので、
どうやら制限が解除されるまで待つしか無さそうだ。)

何処かのページの1日あたり50投稿が限度と書いてあったので、
今度試す時に実際に数えてみようと思う。(送信履歴を消してしまった。)
→50でした。

2015年2月18日水曜日

Unicode処理②::UTF16(Unicode)をUTF8に変換する。

Unicode : 文字コードの一種。

UTF16 , UTF8 : Unicodeをファイルに保存する場合の保存方法(バイナリ値)。


[例]=================================================

あ : Unicode値 : 0x3042

は、UTF16なら、
   big endian : 0x30 , 0x42
little endian : 0x42 , 0x30

↓変換……したい。

あ : UTF8なら、0xE3  81  82
(UTF8では、仕様上big endian も little endianも関係無い。)

====================================================

(14) UTF-16からUTF-8への文字コード変換
を参考にして変換してみる。(変換表はwikiのUTF-8にもある。)