ifstreamを使って複数のファイルを読み込みたい

投稿者: | 2020年1月27日

めんどくさいファイル入出力です。毎回忘れるので、いつも調べています。

さて、問題は複数のファイルを読み込みたい場合です。私の場合は連番のファイルを順番に読み込みたいというものでした。

続きを読む

stoiを使うとコンパイルエラーが出る

投稿者: | 2020年1月27日

卒研で文字列から数値に変換する時にstoi()を使っています。しかし、これが曲者で、毎回コンパイルエラーを出してしまいます。

terminate called after throwing an instance of 'std::invalid_argument'
  what():  stoi

環境によってメッセージは異なりますが、だいたいこんな感じです。

さて、これはなんだと言われたら、例外処理を書いてねーぞっていうメッセージらしいです。

ということで、例外処理を書いてあげればOK。

参考:

invalid_argumentは「これ数値じゃねえぞ」って感じで、out_of_rangeは「型の最大値超えたんだが?」という感じだと思います。

ただ、ちゃんと文字列が数値だけだと例外処理書いてなくても動くんですよね。

このへん、コンパイラの気持ちがよくわからない。

MinGW環境でmultiple definition of `vsnprintf’;というエラーが出る

投稿者: | 2020年1月26日

エラーメッセージは以下の通り。

c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../libmingwex.a(vsnprintf.o):(.text+0x0): multiple definition of `vsnprintf'; C:\Users\ATERUI~1\AppData\Local\Temp\cc94Zci2.o:analyze_key_stream.cpp:(.tex
t$vsnprintf[_vsnprintf]+0x0): first defined here

解決方法は、MinGW Installation Managerを起動します。

その後、All Packagesからmingw32-libmigwexを探し、チェックボックスにチェックを入れます。

最後に、Installtion→Apply Changeで終わりです。これでコンパイルエラーは消えたはずです。

卒研中、Windows機2台(家のメインPC,研究室のPC),Ubuntu機(サブ機),Mac(MBA)と環境をいったり来たりしていますが、MinGWはやけにコンパイルエラーが多い気がします。

windowsもbrewでgccをinstallできればいいんだけどなあ・・・。

windows上で改行コードを一括で変換する

投稿者: | 2020年1月20日

めんどくさいとか言ってましたが、PowerShellで改行コードの変換ができるらしい。というか、できた。

・改行コードをLF(linux,Mac,Unix)→CR+LF(windows)に変換する方法

変換したいファイルをすべて同じフォルダにぶち込みます。

powershellを起動して、そのディレクトリまで移動します。

※フォルダ名に空白(スペース)があるときは、フォルダ名をシングルクォーテーションで囲みます。

ディレクトリを移動したら、以下のコマンドを実行します。

ls | foreach{ (cat -encoding UTF8  $_ ) -join "`r`n" | set-content -encoding UTF8 $_ }

コマンドは上のサイトのままです。powersehllはコピペができるので、Ctrl+C,Ctrl+Vで楽しましょう。

あとは終わるまで待てば終わりです。楽やな?

Linux側でやっておく場合は、nkfコマンドと使えば行けるっぽいです。

powershell便利やな?

Googleドライブにアップロードしたテキストファイルの改行が無視される

投稿者: | 2020年1月20日

卒研末期ですが未だに結果が出ていなくてやばいです。

さて、現在、研究室のwindows機ではコードを書いていて、家から持ってきたubuntu機で書いたコードを実行しています。そのため、結果のファイルを共有する必要があります。

同一LAN内なので、共有フォルダでできそうですが、家でもやっているため、やはりインターネット上に置くのが一番だと思いました。そして、特に理由はなくGoogleドライブを使いました。

続きを読む

C++での並列化

投稿者: | 2020年1月13日

また卒研の話です。論文にある手法を別の暗号に当てはめるということをやっているので、論文の手法をそのままやってみています。

そのなかで、2^40個のkey streamを調べてみる必要があるらしいので、そのとおりにやってみようとしました。

しかし、2^40個は約100兆個。普通に計算させていたら終わらない。

ということで、並列化をやってみました。

続きを読む

卒研で考えていることと、OSごとの実行ファイルの実行速度の差

投稿者: | 2020年1月9日

卒研で2周間以内には成果を出さないといけないので、色々やっているところです。

とりあえず、正月に書いてたchachaのコードを変えて、2^32個のkey streamのリストを256個作成するようにしました。

これは、RC4への平文回復攻撃で使われていた手法を真似るためです。

そうやって書いたコードが以下の通りになっています。

続きを読む

chachaのkeyの作成

投稿者: | 2020年1月3日

コードをいじっていますが、keyの作成方法を変えました。

key streamの出力の偏りを調べることをやっているので、keyとnonceをランダムに決定して、そこからkey streamを作っています。

前のゼミで「key streamから次のkeyを決めてはどうか?」と言われたので、色々考えてやっています。

続きを読む

“uncaught typeerror: cannot read property ‘binary’ of undefined”が出た

投稿者: | 2020年1月2日

新幹線内で卒研のためにコードを書き換えようとしていたらでたエラーです。

GitHub周りのエラーも出ていたので、最初は「Gitわかんねー」って頭抱えていましたが、linter-gccのエラーも出ていたので、linter絡みのエラーであることをすぐに分かるべきでした。

linter-gccのgccを実行するpathが変なのでちゃんとしたものにしろというものです。

解決方法は、linter-gccのsetting内のGCC Excutable Pathに正しいpathを通すだけです。

これぐらいは新幹線内で解決すべきだったなと反省しています。