マスタリング バベル Boost.勉強会 #2 ( 2010-09-11 ).

Slides:



Advertisements
Similar presentations
Item 1:View C++ as a federation of languages. C++ はただの ”C のクラスがあるバージョン ” ではない → 例外安全 (29 項 ) 、テンプレート (41 項 ) 、オーバーロード等の導入によりデザインや目指すコードが 変化している プログラミング言語はあくまで言語.
Advertisements

知能情報工学演習 I 第 12 回( C 言語第6 回) 課題の回答 岩村雅一
1 全体の流れ 画像ファイルを開き,画像データをメモリ上にロード メモリ上にロードした画像データに処理を加える 処理後のデータを出力ファイルに書き出す 画像データ用に確保したメモリを解放.
Tt_clown ( 津川 知朗) 俺 Tokenizer を作る ~ Boost.Tokenizer のカスタマイズ~ 2009/12/121 Boost 勉強会.
画像情報処理 1 プログラミング課題 知的画像処理研究室 M2 大村 瑞穂. 目次 プログラミング課題の準備 – ファイルのダウンロード・解凍・コンパイル サンプルプログラムの説明 画像処理の方法 レポートに載せる画像について 例題と第 1 回レポート課題.
中小企業診断士 野田 幸紀 2010 年 2 月 10 日(水) データ分析をする前に知っておきたいノウハウ (ACCESS初級編)
1 第5回 配列. 2 今回の目標 マクロ定義の効果を理解する。 1次元配列を理解する。 2次元配列を理解する。 ☆2 × 2の行列の行列式を求めるプログラ ムを作成する.
画像情報処理1 ~画像処理プログラミング~ 2015/05/01 知的画像処理研究室 M1 吉原寛樹
Boost. 勉強会 #6 札幌 ( ). 概要  主に cppll ML でご紹介してきた tips を C++ の仕様をより掘り下げた形でまとめ直し てみました。  今回は #include にフォーカスした内容です。 C++ Tips 1 #include 編 Boost.
Flash SWF ファイル書き換え PHP extension 2008 年 7 月 21 日 よや.
TeX で数式を書くための PowerPoint アドイン Ver (2011/06/26) Ver. 0.1 (2007/5/30)
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
HG/PscanServシリーズ Acrobatとなにが違うのか?
文字列検出ツール "istrings" の使い方
A B x y z 復習 構造体変数 普通の変数 x y z 構造体変数 x y z 箱のイメージ 引き出しのイメージ
クローズドソースアプリから、GPLソフトを使うには
ML 演習 第 8 回 2007/07/17 飯塚 大輔, 後藤 哲志, 前田 俊行
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
データ構造とアルゴリズム 第10回 mallocとfree
アプレット (Applet)について.
プログラミング演習Ⅱ 第12回 文字列とポインタ(1)
OSとコマンド OS:コンピュータを使うための基本プログラム コマンド:OS上で使用できる命令 OS本体であるカーネルの内部コマンド
第4章 Impulse C の導入 安達ほのか シグナルやストリーム 、メモリーは型だからそのまま訳す.
Boost.勉強会 #8 大阪 ( ) C++ Tips 3 カンマ演算子編.
釘宮病患者に贈る 萌えぷち4連オートプッシャー
の まとめ 2007/04/02 (Mon) / d;id:hzkr
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
発表者 2011/01/08 楽しい256バイトイントロの 世界 発表者 2011/01/08.
ファイル操作と文字列の利用.
TA 高田正法 B10 CPUを作る 2日目 SPIMのコンパイル TA 高田正法
2014/05/02 知的画像処理研究室 M1 中津美冴 画像情報処理1 ~画像処理プログラミング~ 2014/05/02 知的画像処理研究室 M1 中津美冴
メールの利用1 Webメールの利用方法.
関数の定義.
プログラミング演習I 2003年6月25日(第10回) 木村巌.
画像処理プログラムの説明.
プログラミング演習I 2003年5月7日(第4回) 木村巌.
知能情報工学演習I 第12回(後半第6回) 課題の回答
実行時情報に基づく OSカーネルのコンフィグ最小化
メモリの準備 メモリには、その準備の方法で2種類ある。 静的変数: コンパイル時にすでにメモリのサイズがわかっているもの。 普通の変数宣言
デジタル画像とC言語.
フロントエンドとバックエンドのインターフェース
岩村雅一 知能情報工学演習I 第12回(C言語第6回) 岩村雅一
画像処理プログラミング 知的画像処理研究室 M2 小林 佳奈美.
コードクローンの理解支援を目的としたコードクローン周辺コードの解析
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
B演習(言語処理系演習)第2回 田浦.
復習 2次元配列 4列 j = 0 j = 1 j = 2 j = 3 i = 0 i = 1 i = 2 3行
2013年度 プログラミングⅠ ~ はじめてのプログラミング ~.
参照されないリテラル 長谷川啓
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
日本語独特のL10N問題とは? 各社仕様の拡張文字 複数の符号化 規格の混乱など Unicodeとのマッピング
統合開発環境のための プログラミング言語拡張 フレームワーク
Make の使い方.
コンパイラ 2012年10月11日
情報工学科 3年生対象 専門科目 システムプログラミング 第3回 makeコマンド 動的リンクライブラリ 情報工学科 篠埜 功.
岩村雅一 知能情報工学演習I 第12回(後半第6回) 岩村雅一
情報工学科 3年生対象 専門科目 システムプログラミング 第3回 makeコマンド 動的リンクライブラリ 情報工学科 篠埜 功.
知能情報工学演習I 第12回( C言語第6回) 課題の回答
全体の流れ 画像ファイルを開き,画像データをメモリ上にロード メモリ上にロードした画像データに処理を加える
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
第12章 乱数という業の深い存在 ~ランダムな値・他~
関数の変更履歴と呼び出し関係に 基づいた開発履歴理解支援システム
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
情報処理Ⅱ 2005年11月25日(金).
1.2 言語処理の諸観点 (1)言語処理の利用分野
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
俺 Tokenizer を作る ~Boost.Tokenizer のカスタマイズ~
Presentation transcript:

マスタリング バベル Boost.勉強会 #2 ( 2010-09-11 )

概要 バベルってなに? 使い方 オプション 今後の課題

バベルってなに? マスタリング バベル

バベルってなに? 文字エンコーディング変換モジュールです!

バベルってなに? 文字エンコーディング変換モジュールです! シフトJIS,JIS,EUC,UNICODE(UTF-8,UTF-16,UTF-32)に対応していずれの組み合わせであろうと相互変換できます。

バベルってなに? 文字エンコーディング変換モジュールです! シフトJIS,JIS,EUC,UNICODE(UTF-8,UTF-16,UTF-32)に対応していずれの組み合わせであろうと相互変換できます。 ×国際化対応の為のものではありません! 国際化対応を前提とする場合、MLang, iconv, ICU あたりを推奨します。 

バベルってなに? 真にフリーなライセンス

バベルってなに? 真にフリーなライセンス GPLみたいにうだうだ言いません!

バベルってなに? 真にフリーなライセンス GPLみたいにうだうだ言いません! 商用だろうが断りなく好き勝手に使って構いません!

バベルってなに? 真にフリーなライセンス GPLみたいにうだうだ言いません! 商用だろうが断りなく好き勝手に使って構いません! オープンソースソフトウェアの一部としてソースファイル毎再配布しても構いません!

バベルってなに? 強いて制限を挙げるなら…

バベルってなに? 強いて制限を挙げるなら… 「バベルはワシが作った」とか言い出さないで。 第三者から俺が盗人呼ばわりされるのはさすがに勘弁!

バベルってなに? 強いて制限を挙げるなら… 「バベルはワシが作った」とか言い出さないで。 万が一なにか問題があっても「自己責任」で。 第三者から俺が盗人呼ばわりされるのはさすがに勘弁! 万が一なにか問題があっても「自己責任」で。 俺に責任追及されてもそんなの知らん!

バベルってなに? 高い文字エンコーディング判別精度

バベルってなに? 高い文字エンコーディング判別精度 日本語限定だし、日本語文中に含まれる文字コードの出現率データを使っているので非常に高い文字エンコーディング判別精度を誇ります!

バベルってなに? 高い移植性

バベルってなに? 高い移植性 あの AIX 上ですらちゃんと動きます! ※ここ苦笑する所

バベルってなに? 利用実績

バベルってなに? 利用実績 具体的な数は残念ながらろくに把握できていませんが、フリーなライセンス、文字エンコーディング判別精度、高い移植性なんかのおかげで、かなり規模でご採用頂けているようです。

使い方 マスタリング バベル

使い方 まずバベルをここからダウンロードします! http://tricklib.com/cxx/ex/babel/#download ※一番下の[バベル全ファイルZIPパック]がオススメ

使い方 次にダウンロードした各ファイルをバベルを利用するプログラムのソースファイルを置いているディレクトリにコピーします。 ※babel.h と babel.cpp だけでなく*.csv, *.dat も同じディレクトリに一緒にコピーしてください。

使い方 babel.h を #include します。 #include "babel.h"

使い方 最初に初期化関数を呼び出します。 int main(...) { ... babel::init_babel(); }

使い方 文字エンコーディング変換関数を呼び出します。 void f() { std::string source, destination; ... // 全自動変換 destination = babel::auto_translate<>(source); // ShiftJIS→EUC変換 destination = babel::sjis_to_euc(source); } 変換関数の一覧: http://tricklib.com/cxx/ex/babel/#functions

使い方 あとは babel.cpp も他のソースコードと一緒にコンパイル・リンクもするだけ。 ※具体的な方法はご使用のIDEやmakeなどの環境次第ですのでここでは説明しません。

使い方 ストリーム using namespace babel; void execute_translater(std::istream &input, std::ostream &output, bbl_translater<bbl_binary, bbl_binary> translater) { bbl_binary buffer; bbl_binary buffer2; while(!input.eof()) bbl_binary::value_type buffer3[1024]; input.read(buffer3, 1024); unsigned int size = input.gcount(); buffer.assign(buffer3, size); translater << buffer; translater >> buffer2; output << buffer2; } void f() … execute_translater(std::ifstream(“src.txt”), std::cout, auto_translate_engine<bbl_string>::create());

オプション マスタリング バベル

オプション 大半のマクロ定義によるオプションは指定なしでもだいたいよしなに処理しますが多少効率の悪いコードになることもあるので面倒でなければ指定をしたほうがいいです。

オプション wchar_t のサイズ __UNICODE_CHAR_SIZE_2__ __UNICODE_CHAR_SIZE_4__ × __UNICODE_CHAR_SIZE_UNKNOWN__

オプション エンディアン __LITTLE_ENDIAN_COMPUTER__ __BIG_ENDIAN_COMPUTER__ × __UNKNOWN_ENDIAN_COMPUTER__

オプション 処理系(コンパイラ)の文字エンコーディング __USING_ANSI__ __USING_SJIS__ __USING_EUC__ __USING_UTF8__ × __USING_UNKNOWN__

オプション テーブルの形式 __BBL_USING_STATIC_TABLE__ ( default ) 静的なテーブルを使用し、 babel::init_babel() の処理時間も非常に短くなります。 コンパイラに負荷をかける為、コンパイルできないことがあります。 ※コンパイラのオプションで問題を回避できる場合もあり。 __BBL_USING_STDMAP_TABLE__ 静的なテーブルの代りに std::map を使用し、 babel::init_babel() の処理時間も長くなり、メモリ消費量も増大します。

オプション SJIS⇔UNICODE変換で使用するマッピング __BBL_USE_UNICODE_MAP_CP932__ ( default ) __BBL_USE_UNICODE_MAP_UTC__ __BBL_USE_UNICODE_MAP_APPLE__

オプション 使用しないコードとデータの除去 __BBL_DISABLE_UNICODE__ __BBL_DISABLE_BINARY__ __BBL_DISABLE_UTF32__ ※この指定だけは babel.h で始めから固定で定義されています。 UTF-32 の実装が必要な場合にこのマクロの #define を babel.h から削除してください。 __BBL_DISABLE_SELECTORS__

今後の課題 マスタリング バベル

今後の課題 マクロ名から連続したアンダースコアの除去 UTF-8 で本来無効なバイト列の無効化 絵文字対応 例: __BABEL_BABEL_H__ → BABEL_BABEL_H UTF-8 で本来無効なバイト列の無効化 絵文字対応

質疑応答 マスタリング バベル

ご静聴 ありがとうございました。 マスタリング バベル