堕天使の煉獄
2017-03
04
06:41:49
おあずけ三昧
ぬううう。
なんかいろいろとストレス溜まる展開ばかりな最近。
まず先日のHDD売り切れ。
んで、麻雀PGやろうと思ったものの。
namespaceのネストがQTだと上手く動かない。QTでもVCビルドを使っているのですが、vc++2015のupdate3ではamespaceのネストは機能として入ったはずなんだけどなぁ。とおもったら/std:c++latestフラグ必要なのね。
で、.proにフラグ追加してみたけど、やっぱ使えない??
いやビルドは通るようになったんだけどQt creator上でインテリセンスきかなーい。赤下線もついてるし。
むーん。vc++2017来てからにするか……。
で、VisualStudio2017のc++1z対応を再確認。
optional, string_viewあたりはうれしい追加。てかoptonalも随分待たされたぽ。
以下は今のところまだRC版からなにか追加あるのかわからないのですけども。発売直前だというのにあんまし情報出て来てないですね。c++1zで注目の機能いくつか覚え書きも兼ねてちょっと書いてみる。
「basic_string::data()メンバ関数の非const版」
なにげに一寸前にガリガリやってたzip書庫の編集ツール作ってたときに、ByteArrayのバイナリ参照なんかを受け渡しするときなんかで、QByteArrayのdata()メソッドもそいやconstしか無かったなと。なので非constにするために助長なコード書く必要出てきたりで。stringも生データ使う時にはそういうのでちょっと遠回りするコードを何かで書いたような。なので非const版確かに欲しいなとおもた記憶が。
「インライン変数」
今ではすっかり.cppファイルを使わないでみんな.hに書く癖ついたのだけども、クラスの定数とかstaticメンバ変数なんか使う時にいちいちクラスの定義の外に__declspec(selectany)で書いたりするのが面倒っちゃ面倒だったのが、これでstaticメンバ変数もそのままヘッダのクラス内の定義の部分に一度書くだけで済む用になって便利~。
「if constexpr文」
お、ついに来たかとおもったら違ったの巻。
そのあとで別のc++関係のブログで
if(constexpr()){
// コンパイル時評価時
}else{
// 実行時
}
みたいなのが、まだ「提案」という形で上がってるのみて、なんかコレすごく欲しいけど、とっくにあるんだろうな。検索の仕方が悪くて、こういう機能の書き方が見つけられてないだけなんだと思ったら……まだ「提案」があがった所なのか……。
これが出来ると、constexpr化されてないmath関数なんかをconstexpr関数のなかで、コンパイル時は適当に自前で書いたコードにして(どうせコンパイル時に計算されるから実行コストは無視出来るので適当な実装でも問題無いぽ)、実行時は標準の関数を呼ぶみたいなのが出来るのですよね。
オレオレライブラリ的なものを作るのに、この辺も含めconstexpr関係の対応が遅れまくってた所為で一旦撤退した部分もあるので、この機能がまだ提案レベルてのはちょっとがっくり。
ちなみに元の「if constexpr文」はifの評価式がコンパイル時に行われるというもの。これはこれで便利そうだけど。
「if文とswitch文の条件式と初期化を分離 if (init; condition)」
if(int size=list.size(); size < 100){ ... }
みたいなの。
以前でも似たようなことできたけど、結構結果がたまに予期せぬバグの温床になりそうな無理くり感あるかんじだったので、こうしてきちんと初期化部と分かれてくれるのはよいですね。
これの何が良いと言えば、余計な変数をスコープの外で宣言しなくて良くなるのがよいですね。
int size = list.size();
if(sizeze < 100){ ... }
と以前なら書くけど、sizeがif文の後でも残り続けるのが気持ち悪い。
{
int size = list.size();
if(sizeze < 100){ ... }
}
なので仕方なくブロックでスコープを切り分ける感じに~とかは良くやるけど、これで一段下がるのでなんだかなーという所もあったりで。
そゆのが無くなるのはいいですね。
地味にうれしい機能です。
「emplace_frontとemplace_backで追加された要素を返す」
pop_frontとpop_backの返値voidじゃないやつが欲しいなぁ……。
削除じゃなくて取り出して除去てパターンの機能がほすぃ。
まあemplace_frontとemplace_backで追加された要素を返すってのもコレも冗長なコードが減って短く書けるってだけのアレだけど。
ttp://faithandbrave.hateblo.jp/entry/2016/08/23/181620
最大公約数と最小公倍数
std::gcd(m, n);
std::lcm(m, n);
範囲内に納める
std::clamp(value, min, max);
この辺はまあ、普通にみんな自前でフリー関数とかクラスとかで作ってたりする物だったりするので標準化ってもの今更感あるけど。
でもこれまだc++1z(c++17)なんだよなぁ。
vc++のc++17対応はなんかいまいち新しい情報入ってきてないのでほぼ白紙に近い感じなのでこれがvc++で使える用になるのはいつの日か……それともvc++2017で意外にどーんと追加……無いか……(遠い目)
んでもってまだ3/7発売予定なのでまだどうなるかもおあずけ。まあ多分現状と大して変わらずな感じで今後のupdateでまたちまちま対応していくパターンかなぁ。
しかし……
ttps://cpplover.blogspot.jp/2017/02/c-p0550r0-p0601r0.html
下の方にあるC++20の計画っていうネタっぽい奴。
コンセプトはまだまだ先か……SFINAEでやってるやつはなんかごてごてしてる感じになっちゃうので、はやくコンセプトですっきり書ける様になりたいなー。
そしてモジュール……ヘッダの依存関係に悩むのはもうとっとと終わりにして欲しい。
でもネタとはいえc++20て三年後かよと思うと、うわぁって感じだなぁ。
まだまだそんなにおあずけ続くのかとおもうとぐんにょり。
んで、ちょっとweb向けになにかミニゲームっぽい物をってのほうはというと。これもhtml5はVisualStudioでTypeScriptな感じで~とかおもうとこれまたVS2017待ちな状況。
んでもって、やっぱjavascriptはどうにも言語的に酷いのでやっぱ触りたくないなーって気持ちもむくむくと。
ちょっと界隈調べてみたけど、TypeScriptとかgoogleのなんとかとかにしても、結局アレですよね。
みんななんだかんだ言って、素のjavascriptなんかそのまま組んでられねぇ。
て本音というか、結局糞言語扱いしてんじゃねぇか。てのが良く現れてますよね。静的型付けしたスーパーセット的拡張言語を別で用意するあたり。なんでこんなの流行っちゃったのか……エディタでぺろっとかいたのがブラウザで即動く。ってのは確かに魅力的ではあるんですが。
あとはjavascript界隈は定番と呼ばれるものでさえいくつものライブラリがあって、なにがなんやらな状況になってるぽ。
で、unityも微妙に次の5.6に追加される2D関係の機能ほしいなーってのがあって、もうちょっと待つか……って気分になっちゃったし。
ここはレトロにflashか。
と久々にparaflaとかのぞいてみる。なんかサイト閉鎖してる? が、いまだに脱出ゲーム界隈ではまだまだ使われてるツールだったりして。
が、ちょっと作り方講座みたいなの見てみると、あ、やっぱコレ無理~って感じに。
フラグ管理とかデータ構造回りが見通し悪すぎてやってられない感じだなーと。
んで、FlashDevelop+ActionScript3.0なんかにも手を出してみる。
ActionScript3.0は、かなりC#に近い感じで、組みやすいですねこれ。
enumが無いのと、コンストラクタや関数の引数違いのオーバーライドが無いってところがちょっとキツイですけど。
あとは型や関数の返値を基本後ろに記述するのが未だに慣れない。(つーてもまださわりだして二日目だけど)
でもまあ、オブジェクト指向でもりもりデータ管理とかオブジェクト管理出来るのでparaflaよりは馴染むかなといったところ。そしてFlashDevelopが軽くていいですね。情報集めてるときにみた前評判高かったんですけど、実際に使ってみて確かにこれはいい開発環境だなと。
でもちょっと致命的というか、ガッカリなところが一つ。
FlashDevelopはタイムラインとかなくて、コードオンリーで作っていく感じなんですけど、時にはタイムライン制御なかんじのが作りやすい物もあったりするので、その辺はparaflaでつくったswfを読み込む感じでやっていけばいいかなーと思ってたのですが。
paraflaで出力できるswfの形式がAVM1形式までで、ActionScript3.0ではAVM1形式は再生制御が出来ず、ただ垂れ流しの動画としてしか利用できないとか……。
フレーム制御でたとえばボタン押したら何フレーム目にジャンプとかがActionScript3.0側から操作出来ないぽ。(AVM1形式swf内部のボタンでの自分自身のフレーム移動は出来るみたいだけど)
うへぇ。
で、AVM1からAVM2以降にコンバートする方法とかないのかなとググってみたところ、変換するツールに変換しながら読み込むloaderスクリプトまでいくつか出てきたけど、どれも全滅。酷いのはバイナリで見てみたらヘッダのバージョンの所の1バイト書き換えてるだけというこれってジョーク? みたいなしょーもないのまであったりw
で、結局どれもうまくいかない。
変換出来ても再生がおかしくなるうえ、結局フレーム制御は出来ないままってのが一番マシというかんじで。
どうも元のswfの出力オプションまわりの問題らしいのだけど、paraflaで書き出したswfではその問題は解決出来なさそう(そこで書かれてた出力オプションの項目がparaflaには存在しない)
結局、タイムラインでの編集したswfをActionScriptでフレーム制御しながら扱いたければ有料のAdobeのflash開発ソフト買えよというオチ。
まあ、タイムライン無いけどフレーム制御に近い感じのアニメーション動作とかできるTweenerライブラリとかでなんとかまあ埋め合わせ出来るかなぁ。
とりあえずそんな複雑なものを作るわけでもなく、とりあえず脱出ゲームあたりでも作ってみようかなとか、VisuarStudio2017待つ間のつなぎでちょっとやるだけなので。
でもここでも結局、思ったようにいかない感じぽ。
ほんと最近なんかどっちを向いても壁にぶち当たるかんじでいやん。
なんかいろいろとストレス溜まる展開ばかりな最近。
まず先日のHDD売り切れ。
んで、麻雀PGやろうと思ったものの。
namespaceのネストがQTだと上手く動かない。QTでもVCビルドを使っているのですが、vc++2015のupdate3ではamespaceのネストは機能として入ったはずなんだけどなぁ。とおもったら/std:c++latestフラグ必要なのね。
で、.proにフラグ追加してみたけど、やっぱ使えない??
いやビルドは通るようになったんだけどQt creator上でインテリセンスきかなーい。赤下線もついてるし。
むーん。vc++2017来てからにするか……。
で、VisualStudio2017のc++1z対応を再確認。
optional, string_viewあたりはうれしい追加。てかoptonalも随分待たされたぽ。
以下は今のところまだRC版からなにか追加あるのかわからないのですけども。発売直前だというのにあんまし情報出て来てないですね。c++1zで注目の機能いくつか覚え書きも兼ねてちょっと書いてみる。
「basic_string::data()メンバ関数の非const版」
なにげに一寸前にガリガリやってたzip書庫の編集ツール作ってたときに、ByteArrayのバイナリ参照なんかを受け渡しするときなんかで、QByteArrayのdata()メソッドもそいやconstしか無かったなと。なので非constにするために助長なコード書く必要出てきたりで。stringも生データ使う時にはそういうのでちょっと遠回りするコードを何かで書いたような。なので非const版確かに欲しいなとおもた記憶が。
「インライン変数」
今ではすっかり.cppファイルを使わないでみんな.hに書く癖ついたのだけども、クラスの定数とかstaticメンバ変数なんか使う時にいちいちクラスの定義の外に__declspec(selectany)で書いたりするのが面倒っちゃ面倒だったのが、これでstaticメンバ変数もそのままヘッダのクラス内の定義の部分に一度書くだけで済む用になって便利~。
「if constexpr文」
お、ついに来たかとおもったら違ったの巻。
そのあとで別のc++関係のブログで
if(constexpr()){
// コンパイル時評価時
}else{
// 実行時
}
みたいなのが、まだ「提案」という形で上がってるのみて、なんかコレすごく欲しいけど、とっくにあるんだろうな。検索の仕方が悪くて、こういう機能の書き方が見つけられてないだけなんだと思ったら……まだ「提案」があがった所なのか……。
これが出来ると、constexpr化されてないmath関数なんかをconstexpr関数のなかで、コンパイル時は適当に自前で書いたコードにして(どうせコンパイル時に計算されるから実行コストは無視出来るので適当な実装でも問題無いぽ)、実行時は標準の関数を呼ぶみたいなのが出来るのですよね。
オレオレライブラリ的なものを作るのに、この辺も含めconstexpr関係の対応が遅れまくってた所為で一旦撤退した部分もあるので、この機能がまだ提案レベルてのはちょっとがっくり。
ちなみに元の「if constexpr文」はifの評価式がコンパイル時に行われるというもの。これはこれで便利そうだけど。
「if文とswitch文の条件式と初期化を分離 if (init; condition)」
if(int size=list.size(); size < 100){ ... }
みたいなの。
以前でも似たようなことできたけど、結構結果がたまに予期せぬバグの温床になりそうな無理くり感あるかんじだったので、こうしてきちんと初期化部と分かれてくれるのはよいですね。
これの何が良いと言えば、余計な変数をスコープの外で宣言しなくて良くなるのがよいですね。
int size = list.size();
if(sizeze < 100){ ... }
と以前なら書くけど、sizeがif文の後でも残り続けるのが気持ち悪い。
{
int size = list.size();
if(sizeze < 100){ ... }
}
なので仕方なくブロックでスコープを切り分ける感じに~とかは良くやるけど、これで一段下がるのでなんだかなーという所もあったりで。
そゆのが無くなるのはいいですね。
地味にうれしい機能です。
「emplace_frontとemplace_backで追加された要素を返す」
pop_frontとpop_backの返値voidじゃないやつが欲しいなぁ……。
削除じゃなくて取り出して除去てパターンの機能がほすぃ。
まあemplace_frontとemplace_backで追加された要素を返すってのもコレも冗長なコードが減って短く書けるってだけのアレだけど。
ttp://faithandbrave.hateblo.jp/entry/2016/08/23/181620
最大公約数と最小公倍数
std::gcd(m, n);
std::lcm(m, n);
範囲内に納める
std::clamp(value, min, max);
この辺はまあ、普通にみんな自前でフリー関数とかクラスとかで作ってたりする物だったりするので標準化ってもの今更感あるけど。
でもこれまだc++1z(c++17)なんだよなぁ。
vc++のc++17対応はなんかいまいち新しい情報入ってきてないのでほぼ白紙に近い感じなのでこれがvc++で使える用になるのはいつの日か……それともvc++2017で意外にどーんと追加……無いか……(遠い目)
んでもってまだ3/7発売予定なのでまだどうなるかもおあずけ。まあ多分現状と大して変わらずな感じで今後のupdateでまたちまちま対応していくパターンかなぁ。
しかし……
ttps://cpplover.blogspot.jp/2017/02/c-p0550r0-p0601r0.html
下の方にあるC++20の計画っていうネタっぽい奴。
コンセプトはまだまだ先か……SFINAEでやってるやつはなんかごてごてしてる感じになっちゃうので、はやくコンセプトですっきり書ける様になりたいなー。
そしてモジュール……ヘッダの依存関係に悩むのはもうとっとと終わりにして欲しい。
でもネタとはいえc++20て三年後かよと思うと、うわぁって感じだなぁ。
まだまだそんなにおあずけ続くのかとおもうとぐんにょり。
んで、ちょっとweb向けになにかミニゲームっぽい物をってのほうはというと。これもhtml5はVisualStudioでTypeScriptな感じで~とかおもうとこれまたVS2017待ちな状況。
んでもって、やっぱjavascriptはどうにも言語的に酷いのでやっぱ触りたくないなーって気持ちもむくむくと。
ちょっと界隈調べてみたけど、TypeScriptとかgoogleのなんとかとかにしても、結局アレですよね。
みんななんだかんだ言って、素のjavascriptなんかそのまま組んでられねぇ。
て本音というか、結局糞言語扱いしてんじゃねぇか。てのが良く現れてますよね。静的型付けしたスーパーセット的拡張言語を別で用意するあたり。なんでこんなの流行っちゃったのか……エディタでぺろっとかいたのがブラウザで即動く。ってのは確かに魅力的ではあるんですが。
あとはjavascript界隈は定番と呼ばれるものでさえいくつものライブラリがあって、なにがなんやらな状況になってるぽ。
で、unityも微妙に次の5.6に追加される2D関係の機能ほしいなーってのがあって、もうちょっと待つか……って気分になっちゃったし。
ここはレトロにflashか。
と久々にparaflaとかのぞいてみる。なんかサイト閉鎖してる? が、いまだに脱出ゲーム界隈ではまだまだ使われてるツールだったりして。
が、ちょっと作り方講座みたいなの見てみると、あ、やっぱコレ無理~って感じに。
フラグ管理とかデータ構造回りが見通し悪すぎてやってられない感じだなーと。
んで、FlashDevelop+ActionScript3.0なんかにも手を出してみる。
ActionScript3.0は、かなりC#に近い感じで、組みやすいですねこれ。
enumが無いのと、コンストラクタや関数の引数違いのオーバーライドが無いってところがちょっとキツイですけど。
あとは型や関数の返値を基本後ろに記述するのが未だに慣れない。(つーてもまださわりだして二日目だけど)
でもまあ、オブジェクト指向でもりもりデータ管理とかオブジェクト管理出来るのでparaflaよりは馴染むかなといったところ。そしてFlashDevelopが軽くていいですね。情報集めてるときにみた前評判高かったんですけど、実際に使ってみて確かにこれはいい開発環境だなと。
でもちょっと致命的というか、ガッカリなところが一つ。
FlashDevelopはタイムラインとかなくて、コードオンリーで作っていく感じなんですけど、時にはタイムライン制御なかんじのが作りやすい物もあったりするので、その辺はparaflaでつくったswfを読み込む感じでやっていけばいいかなーと思ってたのですが。
paraflaで出力できるswfの形式がAVM1形式までで、ActionScript3.0ではAVM1形式は再生制御が出来ず、ただ垂れ流しの動画としてしか利用できないとか……。
フレーム制御でたとえばボタン押したら何フレーム目にジャンプとかがActionScript3.0側から操作出来ないぽ。(AVM1形式swf内部のボタンでの自分自身のフレーム移動は出来るみたいだけど)
うへぇ。
で、AVM1からAVM2以降にコンバートする方法とかないのかなとググってみたところ、変換するツールに変換しながら読み込むloaderスクリプトまでいくつか出てきたけど、どれも全滅。酷いのはバイナリで見てみたらヘッダのバージョンの所の1バイト書き換えてるだけというこれってジョーク? みたいなしょーもないのまであったりw
で、結局どれもうまくいかない。
変換出来ても再生がおかしくなるうえ、結局フレーム制御は出来ないままってのが一番マシというかんじで。
どうも元のswfの出力オプションまわりの問題らしいのだけど、paraflaで書き出したswfではその問題は解決出来なさそう(そこで書かれてた出力オプションの項目がparaflaには存在しない)
結局、タイムラインでの編集したswfをActionScriptでフレーム制御しながら扱いたければ有料のAdobeのflash開発ソフト買えよというオチ。
まあ、タイムライン無いけどフレーム制御に近い感じのアニメーション動作とかできるTweenerライブラリとかでなんとかまあ埋め合わせ出来るかなぁ。
とりあえずそんな複雑なものを作るわけでもなく、とりあえず脱出ゲームあたりでも作ってみようかなとか、VisuarStudio2017待つ間のつなぎでちょっとやるだけなので。
でもここでも結局、思ったようにいかない感じぽ。
ほんと最近なんかどっちを向いても壁にぶち当たるかんじでいやん。
Sun
Mon
Tue
Wed
Thu
Fri
Sat
01
02
03
04
■
■
おあずけ三昧
05
■
■
これってやっぱ嫌がらせ的なものなのかな
06
07
08
09
■
■
やっぱついてないわ
10
11
12
■
■
かふーん
13
14
15
16
17
18
19
20
[春分の日]
21
22
23
24
25
26
27
28
29
30
31
■
■
ベーコンのアスパラ巻
total:2083383 t:52 y:81
■記事タイトル■
■年度別リスト■
2024年
2024年12月(0)2024年11月(2)
2024年10月(1)
2024年09月(2)
2024年08月(1)
2024年07月(1)
2024年06月(5)
2024年05月(2)
2024年04月(1)
2024年03月(6)
2024年02月(4)
2024年01月(3)
2023年
2023年12月(3)2023年11月(1)
2023年10月(2)
2023年09月(3)
2023年08月(3)
2023年07月(3)
2023年06月(7)
2023年05月(8)
2023年04月(2)
2023年03月(1)
2023年02月(2)
2023年01月(3)
2022年
2022年12月(4)2022年11月(3)
2022年10月(1)
2022年09月(3)
2022年08月(3)
2022年07月(2)
2022年06月(1)
2022年05月(3)
2022年04月(2)
2022年03月(2)
2022年02月(1)
2022年01月(6)
2021年
2021年12月(8)2021年11月(3)
2021年10月(4)
2021年09月(6)
2021年08月(2)
2021年07月(1)
2021年06月(3)
2021年05月(2)
2021年04月(2)
2021年03月(3)
2021年02月(1)
2021年01月(4)
2020年
2020年12月(3)2020年11月(7)
2020年10月(2)
2020年09月(3)
2020年08月(1)
2020年07月(3)
2020年06月(7)
2020年05月(5)
2020年04月(8)
2020年03月(4)
2020年02月(2)
2020年01月(4)
2019年
2019年12月(1)2019年11月(1)
2019年10月(2)
2019年09月(1)
2019年08月(3)
2019年07月(2)
2019年06月(2)
2019年05月(2)
2019年04月(4)
2019年03月(1)
2019年02月(7)
2019年01月(1)
2018年
2018年12月(1)2018年11月(1)
2018年10月(5)
2018年09月(1)
2018年08月(5)
2018年07月(1)
2018年06月(1)
2018年05月(1)
2018年04月(2)
2018年03月(2)
2018年02月(1)
2018年01月(1)
2017年
2017年12月(2)2017年11月(1)
2017年10月(2)
2017年09月(5)
2017年08月(8)
2017年07月(2)
2017年06月(1)
2017年05月(1)
2017年04月(3)
2017年03月(5)
2017年02月(7)
2017年01月(8)
2016年
2016年12月(7)2016年11月(2)
2016年10月(3)
2016年09月(7)
2016年08月(8)
2016年07月(10)
2016年06月(17)
2016年05月(6)
2016年04月(8)
2016年03月(10)
2016年02月(5)
2016年01月(10)
2015年
2015年12月(7)2015年11月(7)
2015年10月(13)
2015年09月(7)
2015年08月(7)
2015年07月(5)
2015年06月(4)
2015年05月(5)
2015年04月(2)
2015年03月(4)
2015年02月(1)
2015年01月(7)
2014年
2014年12月(12)2014年11月(8)
2014年10月(4)
2014年09月(6)
2014年08月(7)
2014年07月(4)
2014年06月(2)
2014年05月(5)
2014年04月(4)
2014年03月(8)
2014年02月(4)
2014年01月(8)
2013年
2013年12月(15)2013年11月(8)
2013年10月(3)
2013年09月(3)
2013年08月(8)
2013年07月(0)
2013年06月(0)
2013年05月(0)
2013年04月(0)
2013年03月(0)
2013年02月(0)
2013年01月(0)
■レス履歴■
■ファイル抽出■
■ワード検索■
堕天使の煉獄
https://rengoku.sakura.ne.jp
管理人
織田霧さくら(oda-x)
E-mail (■を@に)
oda-x■rengoku.sakura.ne.jp