SlideShare a Scribd company logo
Sapporo.cpp 第8回勉強会(2014.12.27)
その文字列検索、
std::string::findだけで
大丈夫ですか?
H.Hiro
Twitter: @h_hiro_
http://hhiro.net/about/
自己紹介
H.Hiro
●
情報系の研究員
やってます
●
趣味でもプログラム書いてます
●
でも最近は趣味ではあまり
プログラム書けてないのです
告知
第35回 北海道開発オフ
●
みんなで集まって、だけど
思い思いに開発したり勉強したり
●
でもはかどるんです
●
1月17日(土) 9:00~16:00
http://devdo.doorkeeper.jp/
よろしく
お願いします
今回話す内容
文字列を
検索する
C++ Advent Calendar 2014に
書いた記事の拡大版です
http://qiita.com/h_hiro_/
items/dcad2e2eddcb42671d9d
具体的には
BANNANABANANAN
BANANApattern:
text:
"テキスト"から"パターン"が
出現する場所を見つけたい
具体的には
BANNANABANANAN
BANANApattern:
text:
今の場合だとここが出現位置。
(0起点での)7文字目から
始まる場所
文字列データに
対する
最も基本的な
処理の一つ
今回のテーマ
●
C++には、標準で
std::stringにfind関数があって
文字列検索が行える
●
ただ、それは非常に素朴な方法
●
文字数が増えても、(ある程度)
高速に検索したい
実際、
文字数が増えると
「高速に検索できる」
ことの価値が上がる
Web検索エンジンは
その最たる例
今回は、そんな
バリバリの実装の話は
しませんが
何に注目して
高速化を図って
いるのかという
アイデアを紹介します
予告しておくと
(1) パターン前処理型
(2) 索引型
では、最初に
基本となる検索
基本的な
文字列検索
std::string::find
std::string::findの使い方
std::string text =
"BANNANABANANAN";
std::string pattern =
"BANANA";
text.find(pattern);
// "7"を返す
std::string::findの検索手順
BANNANABANANAN
BANANApattern:
text:
まず、パターンを左端に合わせて
std::string::findの検索手順
BANNANABANANAN
BANANApattern:
text:
まず、パターンを左端に合わせて
パターンの末尾まで一致して
いるか調べる
std::string::findの検索手順
BANNANABANANAN
BANANApattern:
text:
一致していない文字が一つでも
あれば、左端を一つずらし
std::string::findの検索手順
BANNANABANANAN
BANANApattern:
text:
一致していない文字が一つでも
あれば、左端を一つずらし
同様に調べていく
std::string::findの検索手順
BANNANABANANAN
BANANApattern:
text:
全部一致している箇所が
見つかったら、それを結果として
出力する
まとめるとこんな具合になる
text BANNANABANANAN
pattern BANA
B
B ※赤文字:
B 間違っていた文字
B
B
B
BANANA
まとめるとこんな具合になる
text BANNANABANANAN
pattern BANA
B
B
B
B
B
B
BANANA
判定する起点(左端)が
1文字ずつ動いている
まとめるとこんな具合になる
text BANNANABANANAN
pattern BANA
B
B
B
B
B
B
BANANA
→もっと多い文字数
動かせるか?
判定する起点(左端)が
1文字ずつ動いている
高速化の手段(1)
パターンを前処理する
代表的なものが
二つあるので
うち一つを紹介します
前処理つきの検索(Knuth-Morris-Pratt)
text BANNANABANANAN
pattern BANANA
まず、パターンを全部見て、
パターンの先頭から■文字が
パターンの他の位置にも出現するか調べる
●
BANANA → ■にかかわらず出現しない
●
CACAO
→ ■が1か2なら、3文字目に出現する
→ ■が3以上なら、出現しない
前処理つきの検索(Knuth-Morris-Pratt)
text BANNANABANANAN
pattern BANA
さて、さっきと同様
“A”が違っていたことが
わかったときに
前処理つきの検索(Knuth-Morris-Pratt)
text BANNANABANANAN
pattern BANA
B
さっきの例では
左端を一つずらして
検索を再開していたのだが
前処理つきの検索(Knuth-Morris-Pratt)
text BANNANABANANAN
pattern BANA
B
パターン中に“B”が先頭以外には
ないことを事前に調べていれば、
次に調べ始める場所は、ここまで動かせる。
→左端を1文字よりも大きく動かせた!
前処理つきの検索(Knuth-Morris-Pratt)
text BANNANABANANAN
pattern BANA
B
B
B
B
BANANA
パターンを前処理する検索
Knuth-Morris-Pratt
●
パターンの先頭と同じ文字列が、パターンの
別の位置に出現するかを利用
例:BANBAABAN
●
最悪時間計算量は低いが、実用上はBMがより高速
Boyer-Moore
●
パターンとテキストの文字が一致していなかった
とき、パターンをテキスト側の文字に合わせる
●
詳しくはQiitaの記事を
使ってみる
これらの検索アルゴリズムは
Boostに入っている
●
boost::algorithm::knuth_morris_pratt
(パターンを前処理した結果のクラス)とか
boost::algorithm::knuth_morris_pratt_search
(単に検索を1回行うための関数)とか
●
ここにコード貼っても長くなりすぎるので
Qiitaの記事中のサンプルをご覧ください
注意点(1)
パターンを
時間をかけて
前処理するのだから
パターンがある程度
長いときに効果を発揮する
●
逆に、短いときは逆効果だったり
●
パターンの長さが100くらいだと
単にfindしたほうが速かった
http://qiita.com/h_hiro_/items/
dcad2e2eddcb42671d9d
#%E5%AE%9F%E9%A8%93
注意点(2)
ここまで
パターンを前処理して
がんばって
きたわけだけど
どちらにせよ
計算時間を決める
最大の要素が
どちらにせよ
計算時間を決める
最大の要素が
テキストの大きさ
どちらにせよ
計算時間を決める
最大の要素が
テキストの大きさ
→大規模DBには厳しい
それなら、
前処理が必要なのは
それなら、
前処理が必要なのは
パターンよりもむしろ
テキストだ!
高速化の手段(2)
索引を付与する
(テキストを前処理)
索引の方式1:
単語ごとに保存して候補を絞り込む
1.C++11がようやく出た。
2.C++11が出たと思ったらもうC++14が出る。
3.C++17はすぐ出るんだろうか。
単語 出現した文章のID
C++ 1, 2, 3
出た 1, 2
出る 2, 3
単語 出現した文章のID
11 1, 2
14 2
17 3
“inverted index” (転置インデックス)と呼ばれる
索引の方式1:
単語ごとに保存して候補を絞り込む
1.C++11がようやく出た。
2.C++11が出たと思ったらもうC++14が出る。
3.C++17はすぐ出るんだろうか。
単語 出現した文章のID
C++ 1, 2, 3
出た 1, 2
出る 2, 3
単語 出現した文章のID
11 1, 2
14 2
17 3
「C++11が出た」を検索する場合、
索引の方式1:
単語ごとに保存して候補を絞り込む
1.C++11がようやく出た。
2.C++11が出たと思ったらもうC++14が出る。
3.C++17はすぐ出るんだろうか。
単語 出現した文章のID
C++ 1, 2, 3
出た 1, 2
出る 2, 3
単語 出現した文章のID
11 1, 2
14 2
17 3
IDだけに注目すると、3は候補から外れることがわかる!
索引の方式1:
単語ごとに保存する
利点:
単語単位に区切っているので
意図した結果が出やすい
欠点:
単語の区切りに沿わないものを
抽出できない
欠点:
単語の区切りに沿わないものを
抽出できない
→対応したければ
 「すべての部分文字列」を
 索引に格納するようにする
索引の方式2:
すべての部分文字列を保存する
C++11が出たと思ったらもうC++14が出る。
(1文字目が起点の部分文字列)
“C”, “C+”, “C++”, “C++1”, “C++11”, ...
(2文字目が起点の部分文字列)
“+”, “++”, “++1”, “++11”, “++11が”, ...
:
メモリ
使いすぎない?
実際は
かなり節約
できます。
索引の方式2:
すべての部分文字列を保存する
1 2 3 4 5 6
P E O P L E
P
E
O
P
L
E
E
L
E
O
P
L
O
P
L
Suffix tree:
●
完全に木構造ですべての
部分文字列を格納
●
検索は超高速(木を順に
辿るだけ)
●
ただしメモリはものすごく
食う(ポインタを
文字数×5以上は使う)
E
E
索引の方式2:
すべての部分文字列を保存する
1 2 3 4 5 6
P E O P L E Suffix array:
●
辞書順で並べて
左端の配列だけ保存
●
容量は小さめ(文字列長×
ポインタサイズ)
●
ただし、suffix treeに
比べると検索のオーバー
ヘッドが大きい
6 E
2 E O P L E
5 L E
3 O P L E
1 P E O P L E
4 P L E
注意点
前半(パターンの前処理)の
ときに言ったこと
パターンを時間をかけて
前処理するのだから
●
パターンがある程度長いときに
効果を発揮する
●
逆に、短いときは逆効果だったり
テキストの前処理だと
テキストを時間をかけて
前処理するのだから
●
テキストがある程度長いときに
効果を発揮する
●
逆に、短いときは逆効果だったり
テキストは、パターンに比べると
とてつもなく長いことも多い
(データベース使って
文書を格納してるとか)
↓
前処理の時間が
ばかにならない!
●
テキストが頻繁に更新される
場合にはあまり向かない
(テキストエディタ内の検索など)
●
索引を作るとすれば、相応の
計算量が必要
●
それ以上に検索の高速化の
意義がある応用に使われる
(文書DB検索など)
おわりに
普段はstd::string::findのように
シンプルに検索してもいいけど
●
パターンを前処理
●
テキストを前処理
も必要に応じて使おう!

More Related Content

What's hot

オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
 
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだconstexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Genya Murakami
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
 
Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。
Yuya Yamaki
 

What's hot (20)

モナドをつくろう
モナドをつくろうモナドをつくろう
モナドをつくろう
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
C++でできる!OS自作入門
C++でできる!OS自作入門C++でできる!OS自作入門
C++でできる!OS自作入門
 
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだconstexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
 
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードプログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。
 
C++20 モジュールの概要 / Introduction to C++ modules (part 1)
C++20 モジュールの概要 / Introduction to C++ modules (part 1)C++20 モジュールの概要 / Introduction to C++ modules (part 1)
C++20 モジュールの概要 / Introduction to C++ modules (part 1)
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
 
katagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Cryptokatagaitai CTF勉強会 #5 Crypto
katagaitai CTF勉強会 #5 Crypto
 
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
 
ELFの動的リンク
ELFの動的リンクELFの動的リンク
ELFの動的リンク
 
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
 
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺Xbyakの紹介とその周辺
Xbyakの紹介とその周辺
 

Viewers also liked

超音波通信という怪しい技術 In html5minutes 7 #tritonjs
超音波通信という怪しい技術 In html5minutes 7 #tritonjs超音波通信という怪しい技術 In html5minutes 7 #tritonjs
超音波通信という怪しい技術 In html5minutes 7 #tritonjs
K Kinzal
 
通信プロトコルから見る艦隊これくしょん on 第十回 カーネル/VM探検隊
通信プロトコルから見る艦隊これくしょん on 第十回 カーネル/VM探検隊通信プロトコルから見る艦隊これくしょん on 第十回 カーネル/VM探検隊
通信プロトコルから見る艦隊これくしょん on 第十回 カーネル/VM探検隊
Kazuhiro Fujieda
 

Viewers also liked (15)

upload test slide
upload test slideupload test slide
upload test slide
 
アルゴリズムのお勉強 ダイクストラ
アルゴリズムのお勉強 ダイクストラアルゴリズムのお勉強 ダイクストラ
アルゴリズムのお勉強 ダイクストラ
 
アルゴリズムのお勉強 マージソート 試験対策
アルゴリズムのお勉強 マージソート 試験対策アルゴリズムのお勉強 マージソート 試験対策
アルゴリズムのお勉強 マージソート 試験対策
 
角錐や円錐が、角柱や円柱の体積の3分の1であることを積分・極限抜きで証明してみる
角錐や円錐が、角柱や円柱の体積の3分の1であることを積分・極限抜きで証明してみる角錐や円錐が、角柱や円柱の体積の3分の1であることを積分・極限抜きで証明してみる
角錐や円錐が、角柱や円柱の体積の3分の1であることを積分・極限抜きで証明してみる
 
Kancolle
KancolleKancolle
Kancolle
 
超音波通信という怪しい技術 In html5minutes 7 #tritonjs
超音波通信という怪しい技術 In html5minutes 7 #tritonjs超音波通信という怪しい技術 In html5minutes 7 #tritonjs
超音波通信という怪しい技術 In html5minutes 7 #tritonjs
 
二分探索をはじめからていねいに
二分探索をはじめからていねいに二分探索をはじめからていねいに
二分探索をはじめからていねいに
 
rsyncで差分バックアップしようぜ!
rsyncで差分バックアップしようぜ!rsyncで差分バックアップしようぜ!
rsyncで差分バックアップしようぜ!
 
iPhoneのBluetoothについての知見まとめ
iPhoneのBluetoothについての知見まとめiPhoneのBluetoothについての知見まとめ
iPhoneのBluetoothについての知見まとめ
 
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
アルゴリズムのお勉強 アルゴリズムとデータ構造 [素数・文字列探索・簡単なソート]
 
名古屋市営地下鉄最小距離完乗
名古屋市営地下鉄最小距離完乗名古屋市営地下鉄最小距離完乗
名古屋市営地下鉄最小距離完乗
 
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
 
通信プロトコルから見る艦隊これくしょん on 第十回 カーネル/VM探検隊
通信プロトコルから見る艦隊これくしょん on 第十回 カーネル/VM探検隊通信プロトコルから見る艦隊これくしょん on 第十回 カーネル/VM探検隊
通信プロトコルから見る艦隊これくしょん on 第十回 カーネル/VM探検隊
 
シェーダー伝道師 第一回
シェーダー伝道師 第一回シェーダー伝道師 第一回
シェーダー伝道師 第一回
 
Build Features, Not Apps
Build Features, Not AppsBuild Features, Not Apps
Build Features, Not Apps
 

Similar to その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】

Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」
Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」
Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」
Hiro H.
 

Similar to その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】 (11)

C++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみようC++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみよう
 
C++用将棋ライブラリ "OpenShogiLib"の紹介
C++用将棋ライブラリ"OpenShogiLib"の紹介C++用将棋ライブラリ"OpenShogiLib"の紹介
C++用将棋ライブラリ "OpenShogiLib"の紹介
 
札幌C++勉強会 #13「最近、仕事でC++11以降の新規格が役に立ったシーン紹介」
札幌C++勉強会 #13「最近、仕事でC++11以降の新規格が役に立ったシーン紹介」札幌C++勉強会 #13「最近、仕事でC++11以降の新規格が役に立ったシーン紹介」
札幌C++勉強会 #13「最近、仕事でC++11以降の新規格が役に立ったシーン紹介」
 
カーネル読書会の作り方@ライブドア
カーネル読書会の作り方@ライブドアカーネル読書会の作り方@ライブドア
カーネル読書会の作り方@ライブドア
 
Multi paradigm design
Multi paradigm designMulti paradigm design
Multi paradigm design
 
Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」
Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」
Boost.勉強会 #15 札幌 LT「8年間の研究生活でC++書いてて大変だったことベスト3」
 
Hubsでアカペラ
HubsでアカペラHubsでアカペラ
Hubsでアカペラ
 
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
 
式を書くだけで最適化計算してほしい!~CVXPY編~
式を書くだけで最適化計算してほしい!~CVXPY編~式を書くだけで最適化計算してほしい!~CVXPY編~
式を書くだけで最適化計算してほしい!~CVXPY編~
 
コンピュータに「最長しりとり」「最短距離でのJR線全線乗り尽くし」を解いてもらった方法
コンピュータに「最長しりとり」「最短距離でのJR線全線乗り尽くし」を解いてもらった方法コンピュータに「最長しりとり」「最短距離でのJR線全線乗り尽くし」を解いてもらった方法
コンピュータに「最長しりとり」「最短距離でのJR線全線乗り尽くし」を解いてもらった方法
 
Rでを作る
Rでを作るRでを作る
Rでを作る
 

More from Hiro H.

わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
Hiro H.
 
Boost.GraphでJR全線乗り尽くしプランを立てる - プログラミング生放送+CLR/H+Sapporo.cpp 勉強会@札幌 (2014.7.12)
Boost.GraphでJR全線乗り尽くしプランを立てる - プログラミング生放送+CLR/H+Sapporo.cpp 勉強会@札幌 (2014.7.12)Boost.GraphでJR全線乗り尽くしプランを立てる - プログラミング生放送+CLR/H+Sapporo.cpp 勉強会@札幌 (2014.7.12)
Boost.GraphでJR全線乗り尽くしプランを立てる - プログラミング生放送+CLR/H+Sapporo.cpp 勉強会@札幌 (2014.7.12)
Hiro H.
 
2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を 効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」
2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」
2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を 効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」
Hiro H.
 

More from Hiro H. (20)

pandas便利だけどデフォルトパラメータでファイルを読み込むな!
pandas便利だけどデフォルトパラメータでファイルを読み込むな!pandas便利だけどデフォルトパラメータでファイルを読み込むな!
pandas便利だけどデフォルトパラメータでファイルを読み込むな!
 
旅行「#重複乗車禁止で名鉄完乗」とその数学的な解説
旅行「#重複乗車禁止で名鉄完乗」とその数学的な解説旅行「#重複乗車禁止で名鉄完乗」とその数学的な解説
旅行「#重複乗車禁止で名鉄完乗」とその数学的な解説
 
シンデレラガール総選挙の「50位圏内の難しさ」はいかほどか?(23:20更新)
シンデレラガール総選挙の「50位圏内の難しさ」はいかほどか?(23:20更新)シンデレラガール総選挙の「50位圏内の難しさ」はいかほどか?(23:20更新)
シンデレラガール総選挙の「50位圏内の難しさ」はいかほどか?(23:20更新)
 
「MVが3人な曲の一覧」って取得できます?(デレステ・ミリシタ・エムステ)
「MVが3人な曲の一覧」って取得できます?(デレステ・ミリシタ・エムステ)「MVが3人な曲の一覧」って取得できます?(デレステ・ミリシタ・エムステ)
「MVが3人な曲の一覧」って取得できます?(デレステ・ミリシタ・エムステ)
 
配列の要素挿入・削除もランダムアクセスも両方高速にできる?
配列の要素挿入・削除もランダムアクセスも両方高速にできる?配列の要素挿入・削除もランダムアクセスも両方高速にできる?
配列の要素挿入・削除もランダムアクセスも両方高速にできる?
 
PCSじゃないよ、PCAだよ
PCSじゃないよ、PCAだよPCSじゃないよ、PCAだよ
PCSじゃないよ、PCAだよ
 
声優やぞ!~シンデレラガールズにおける配役の歴史のRDFデータ化~
声優やぞ!~シンデレラガールズにおける配役の歴史のRDFデータ化~声優やぞ!~シンデレラガールズにおける配役の歴史のRDFデータ化~
声優やぞ!~シンデレラガールズにおける配役の歴史のRDFデータ化~
 
スマホ音楽ゲームの動画から譜面をデータ化したかった
スマホ音楽ゲームの動画から譜面をデータ化したかったスマホ音楽ゲームの動画から譜面をデータ化したかった
スマホ音楽ゲームの動画から譜面をデータ化したかった
 
シンデレラガールズ声優の増え方まとめ
シンデレラガールズ声優の増え方まとめシンデレラガールズ声優の増え方まとめ
シンデレラガールズ声優の増え方まとめ
 
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
わんくま同盟 名古屋勉強会 #43 ライトニングトーク「Firefoxがver.57~(Quantum)にアップグレードされて困ったこと・やったこと」
 
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
 
最近デレステ創作譜面作ってるので技術的な見地から話します
最近デレステ創作譜面作ってるので技術的な見地から話します最近デレステ創作譜面作ってるので技術的な見地から話します
最近デレステ創作譜面作ってるので技術的な見地から話します
 
デレステの劇場で登場したアイドルの回数の統計取ってます
デレステの劇場で登場したアイドルの回数の統計取ってますデレステの劇場で登場したアイドルの回数の統計取ってます
デレステの劇場で登場したアイドルの回数の統計取ってます
 
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
 
MSYS2使いはじめました
MSYS2使いはじめましたMSYS2使いはじめました
MSYS2使いはじめました
 
関数の最小値を求めることから機械学習へ
関数の最小値を求めることから機械学習へ関数の最小値を求めることから機械学習へ
関数の最小値を求めることから機械学習へ
 
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
 
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
 
Boost.GraphでJR全線乗り尽くしプランを立てる - プログラミング生放送+CLR/H+Sapporo.cpp 勉強会@札幌 (2014.7.12)
Boost.GraphでJR全線乗り尽くしプランを立てる - プログラミング生放送+CLR/H+Sapporo.cpp 勉強会@札幌 (2014.7.12)Boost.GraphでJR全線乗り尽くしプランを立てる - プログラミング生放送+CLR/H+Sapporo.cpp 勉強会@札幌 (2014.7.12)
Boost.GraphでJR全線乗り尽くしプランを立てる - プログラミング生放送+CLR/H+Sapporo.cpp 勉強会@札幌 (2014.7.12)
 
2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を 効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」
2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」
2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を 効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」
 

Recently uploaded

2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
ssuserbefd24
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 

Recently uploaded (14)

論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 

その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】