読者です 読者をやめる 読者になる 読者になる

gl5_progのメモ

自分のためのメモとかまとめとか

iOS開発でやってみたいこと

iOS

1個iOSアプリを作ってみて思った試してみたいこと Storyboard不使用 テキストの国際化 Swiftで開発 ObjectiveC++(.mm)で開発 クラッシュ解析サービス(Crashlytics)を使ってみる 自作コントロールの作成 CALayerとだけでゲームを作ってみる ログを実機上に表…

iOSアプリ配信までのメモ

iOS

iOSアプリの審査が無事通ったので忘れないうちにメモ 1/16 18時 提出を完了し、ステータスが「Waiting For Review」になる 1/23 8時 ステータスが「In Review」になる 1/24 7:57 ステータスが「Processing for App Store」になる 1/24 8:12 ステータスが「Re…

iOSアプリ提出時の参考リンク

iOS

iOSアプリを提出したので、参考にしたサイトをメモ。審査通りますように…。 アプリケーションの配布に関するガイド 基本的にここを参考に よく分かる!iOS アプリのリリース手順のまとめ | Developers.IO 「アプリケーションの配布に関するガイド」と合わせ…

Macセットアップメモ

Mac

諸事情によりYosemiteが必要->Yosemite評判悪すぎ->現作業環境(MacBookAir)がダメになると致命的->新しいMacMiniを買ってしまえ">*1新しくMacMiniを購入したので、セットアップのために行ったことをメモっておきます。 システム環境設定 Dock Dockを左に Doc…

iOS CoreDataメモ

iOS

公式 iOS Core Dataチュートリアル [45p, 2012-12-13] Core Dataプログラミングガイド [180p, 2014-07-15] Core Data Framework Reference CoreData全般 サルでもわかる Core Data 入門【概念編】 - A Day In The Life サルでもわかる Core Data 入門【実装…

Objective-Cで見やすいメソッドチェインの書き方

メソッドチェイン( 名前付きパラメータイディオム ) a().b().c().d()などのようにメソッドの戻り値に連続してメソッド呼び出しを行うことをメソッドチェインと呼ぶそうです。More C++ idiomsでは名前付きパラメータイディオムと呼ばれています。 More C++ Id…

Auto Layoutメモ

iOS

用語 Content Hugging Priority : Content Hugging Priority は、推奨サイズを持つコンポーネントがその推奨サイズと他の制約との間で設定が矛盾してしまった場合の制約適用の優先順位を決定します。簡単に言えば、他の制約との関係によって推奨サイズより大…

iPodライブラリプログラミングメモ

iOS

まとめ iPodライブラリの曲を再生するには MPMusicPlayerController クラスを使う MPMusicPlayerControllerは2つの種類が存在 アプリケーション音楽プレイヤー : 組み込みのiPodアプリと状態が共有されない音楽プレイヤー iPod音楽プレイヤー : 組み込みのiP…

iOSプログラミング逆引きメモ

iOS

φ(..)メモメモ シーン遷移 プログラムからsegueを実行する performSegueWithIdentifier:sender:を使う。 [self performSegueWithIdentifier:@"doneSegue" sender:self]; シーン終了時に処理を行う シーン終了時(親ViewControllerから取り除かれるとき)、UIVi…

iOSプログラミングリンク集

iOS

公式リンク iOS Developer Library 公式ドキュメント 日本語ドキュメント - Apple Developer Objective-C Objective-Cによるプログラミング(ProgrammingWithObjectiveC.pdf) [132p, 2012-12-13] この資料は、プログラミング言語Objective-Cを紹介し、さまざ…

iOSアプリ開発リンク集

iOS

有用そうなものを集めてみた。 全般 iPhone | Developers.IO 【大幅追加】すごい参考になるiOS開発関連の良記事まとめ、ライブラリ、プログラミング、UI/UX、プロモーションのメモ - showrtpath - iPhone,iPadウェブブラウザアプリ開発ブログ 【厳選】これ…

オーディオプログラミング言語SuperCollider始めてみた。

サウンドプログラミングがしたい! ならば良さげなものがある。 SuperColliderだ! というわけでSuperColliderの情報を集めてみました。 ( ChucK?はて、なんのことかな。 ) SuperCollider » About supercollider/supercollider · GitHub SuperCollider Japa…

(ideoneメモ)基底クラスと同じ名前のメンバ変数は定義可能

できないと思ってた。 http://ideone.com/mvfwSh #include <stdio.h> class Base { public: Base() : m(1){} int m; }; class Derived : public Base { public: Derived() : m(2){} int m; }; int main( void ) { Derived d; printf( "%d\n", d.m ); printf( "%d\n", </stdio.h>…

プログラミング言語まとめ

個人的に気になるorよく名前を聞くプログラミング言語をまとめてみた。 ネイティブ系 C C言語 - Wikipedia C++ C++ - Wikipedia D D言語 - Wikipedia Objective-C Objective-C - Wikipedia Delphi(Object Pascal) Object Pascal - Wikipedia Go Go (プログラ…

QWidgetのWindowModifiedの怪しい挙動について

Qt

Qt4.7、Mac 10.8での話。 QWidgetのWindowModifiedとは QWidgetにはユーザーによるデータ変更を表すフラグWindowModifiedがあり、これを使うとWindowsならタイトルバーに"*"がついたり、Macなら閉じるボタンの中に黒丸がついたりする。つまりテキストエディ…

テンプレート引数を無視したフレンドクラス宣言

C++

template<class> friend class A; こう書くことでテンプレート引数の型に関係なくクラスAに対してフレンド宣言ができるそうです。 参考: http://d.hatena.ne.jp/Cryolite/20040602 おまけコード例 http://ideone.com/PSNuxi #include <stdio.h> class Madoka; class Homura; </stdio.h></class>…

C++でトレイトみたいなもの

http://ideone.com/6O3GTF #include <stdio.h> #define TRAIT_DEF( trait_name ) \ class Trait_##trait_name \ { \ public: \ virtual void trait_name( void ) = 0; \ } #define TRAIT_USE( trait_name, class_name ) \ Trait_##trait_name##_##class_name m_Trait_</stdio.h>…

テンプレートコンストラクタの落とし穴

C++

http://ideone.com/qyfPdT #include <stdio.h> template<class T> class Wrap { public: Wrap(){printf("Wrap()\n");} ~Wrap(){printf("~Wrap()\n");} template<class U> Wrap(const Wrap<U>&){ printf("Wrap(Wrap<U>)\n"); } }; int main( void ) { Wrap<int> wrapInt; printf( "--------------\n"</int></u></u></class></class></stdio.h>…

constの抜け道

C++

http://ideone.com/bXfoUv #include <stdio.h> class A { A* p; int m_Value; public: A():p(this),m_Value(0){} int GetValue( void ) const { return m_Value; } // const member function void SetValue( int value ) const { p->m_Value = value; } }; int main( </stdio.h>…

C++で簡易タプルを実装してみる

http://ideone.com/FWKkVv #include <stdio.h> #define tempClassDef( num ) template<class T##num> struct tempClass##num { T##num m##num; }; \ template<> struct tempClass##num<void> { } tempClassDef( 0 ); tempClassDef( 1 ); tempClassDef( 2 ); template<class T0, class T1=void, class T2=void> struct MyTup…</class></void></class></stdio.h>

C++で前方宣言したクラスの内部クラスへのポインタを引数にとる関数を作成するアイデア

はじめに C++では前方宣言したクラスの内部クラスをさらに前方宣言することはできません。 class A; class A::Inner; // error class B { public: void Func( A::Inner* p ); // error }; なので、内部クラスへのポインタを引数にとる関数を宣言するには、外…

C++で自由な順番でメンバの初期化(相当)を行うアイデア

はじめに C++で正しくメンバ変数の初期化を行おうとすると、コンストラクタでメンバイニシャライザを使って行わなければなりません。このメンバイニシャライザは、「メンバ変数の宣言順に記述する必要がある」「コンストラクタの最初に記述する必要がある」…

QMakeでClang使用の場合のみ処理を行う

Qt

clang* { message( "Clang" ) } else { message( "GCC?" ) } clang*なんて書き方思いつかんわ。 参考:How to suppress warnings in qmake for clang++ | Qt Project forums | Qt Project

C++03ではテンプレート引数としてローカル型を渡すことができない

C++

http://ideone.com/ULCO6F #include <stdio.h> #define INNER_STRUCT class A { public: template<class T> void Func( T& ){} }; #ifndef INNER_STRUCT struct Visitor {}; #endif int main( void ) { A a; #ifdef INNER_STRUCT struct Visitor {}; #endif Visitor v; a.Func<Visitor>(</visitor></class></stdio.h>…

C++でオーバーライド時に戻り値の違いは許されるのかどうか。あるいは共変の戻り値について。

C++

C++は共変の戻り値である場合、戻り値が違っていてもオーバーライドが許されるらしい。 共変の戻り値とは、オーバーライド時に基底クラスで置き換えができる戻り値のことらしい。 ちなみにC#は、この共変の戻り値でもオーバーライドは許されてないらしい。 …

3種類のsemantic predicate

ANTLRのsemantic predicateの説明でStackOverflowに良い説明があったので訳してみる。 antlr - What is a 'semantic predicate' in ANTLR3? - Stack Overflow A semantic predicate is a way to enforce extra (semantic) rules upon grammar actions using …

(ideoneメモ)配列の参照

http://ideone.com/RJd1WV #include <stdio.h> #define COUNT 5 typedef int(&DEF_ARRAY)[COUNT]; class A { public: int m_Array[COUNT]; /* error int(&)[COUNT] GetArray( void ) { return m_Array; } */ A() { for( int i=0; i</stdio.h>

ANTLR C Targetでlexer/parseにメンバ変数を追加する方法。

@header, @includes, @membersどれを使っても構造体の中には展開されません。そこでこのテクニックを使います。 外からメンバ変数を定義する方法 - gl5_progのメモ まともなやり方がありました! @lexer::context、@lexer::apifuncs でメンバ変数の定義と、…

外からメンバ変数を定義する方法

C++

問題 とあるクラス/構造体にメンバ変数を定義したいとします。しかし、様々な事情によりクラス定義内の書き換えができない場合どうしたらよいでしょうか。状況的には以下のようになります。 http://ideone.com/jHqwio prog.cpp #ifndef HEADER_H #define HEA…

(ideoneメモ)プリミティブ型みたいな挙動をさせる

http://ideone.com/IL1t5i float + double の演算結果はdoubleになる。 こういうのをユーザー定義クラスでどうやればいいのか試してみた。 格下であるFloatにのみDouble operator+(Double)を持たせることで、 Float + Double の結果をDoubleにした。 Double …

(ideoneメモ)2項演算の左オペランドに暗黙の型変換が発生しないことの確認

Ideone.com | Online C++ Compiler & Debugging Tool #include <stdio.h> class Double { public: Double operator +( Double other ){ printf( "Double::operator+(Double)\n" ); return *this; } }; class Float { public: operator Double(){ printf( "Float to Do</stdio.h>…

トレイトについてのメモ

トレイト - Wikipedia Scalaのトレイトは実はトレイトじゃなくただのミクスイン - Smalltalkのtは小文字です SmalltalkとScalaのトレイトの違い - Togetter Traits トレイトのフラッティング - みねこあ トレイトについてのモヤモヤのメモ - みねこあ Traits…

(ideoneメモ)関数内クラスのスコープ

http://ideone.com/B3XdFk #include <stdio.h> int main( void ) { class A{}; if ( true ) { class B{}; } { class C{}; } A a; /* error B b; C c; */ return 0; } 関数内クラスについて さらに深いスコープ(if文内など)でも宣言できる そのスコープ外からは見えな</stdio.h>…

(ideoneメモ)if文などのスコープについて

http://ideone.com/GJO3u6 #include <stdio.h> int main( void ) { if ( int a = 1 ) { /* error int a = 2; */ printf( "a = %d\n", a ); } /* error printf( "a = %d\n", a ); */ for ( int i=0; i<1; ++i ) { /* error int i = 10; */ printf( "i = %d\n", i ); } </stdio.h>…

(ideoneメモ)内部クラスから見える型名の範囲

http://ideone.com/TmzG0l #include <stdio.h> class A { public: class A1; class A2; class A1 { public: A2* pA2; class A11 { public: A2* pA2; }; }; class A2 { public: }; }; int main( void ) { return 0; } 内部クラスから見えるのは直近の外部クラスだけで</stdio.h>…

argparseの使い方

argparse公式ドキュメント add_argument argparseを使うとコマンドライン引数によるオプションを楽に処理できます。 optparseというのもありますが、これは廃止予定だそうです。 使用手順 ※動作確認してません。 --debugというオプションで処理を変えたい場…

ANTLR3メモ

メモ C言語ターゲットの作者は「Jim Idle」さん バックトラック(backtrack)を効率よく行うのがパックラット(Packrat) ANTLRworksのデバッグ中のParseTreeの色の意味は、「青=判定中」「赤=不一致」「緑=確定」だと思われる。 用語 用語 説明 左括りだし( Lef…

ANTLR3 C Target導入記

ANTLR C Targetがとりあえず動くようになるまでが大変だったのでここにその記録を残しておきます。ただ苦労したことをだらだら書いただけなので実用性はないです。 言葉の定義 言葉 定義 C Target ANTLRからC言語ソースを吐き出すためのモジュールを指す。AN…

ANTLR3 C Runtimeメモ

ANTLR C Runtime 3.4に関するメモ。 ANTLR3_BASE_TREE ASTノード。この構造体はクラスで言うところの抽象クラスであり、実装するクラスが必要。共通メンバ変数と仮想関数的な役割の関数ポインタを持つ。 メンバ変数 型 名前 備考 void* super 基底クラスへの…

QStringをconst char*に変換するときの罠

Qt

QStringをconst char*に変換する処理で罠に引っかかってしまったので紹介。 いや、悪いのは自分なのですが。 ちなみにQt4.7です。 まず、最初に書いたコード。 PlainTextEditに入力された文字列をUTF8のconst char*(厳密にはconst uint8_t*)に変換しようとし…

ANTLR3の機能まとめ

統語的述語( Syntactic predicate ) 意味的述語( Semantic Predicate ) アクション AST構築 TreeParser

文法規則の組み立て方と命名について

BNFあるいはyacc、ANTLRなどで文法を定義する際に初心者として困るのが、文法規則の組み立て方と命名。そこで、いくつかの言語での文法表記を比べてみた。 C言語 Python Lua 日本語訳は適当です。 式 基本的に各式は1つ下の段の式を含んでいます。 (C言語) …

構文解析用語集

説明は乱暴だしいろいろ間違っている思う。 用語 説明 BNF 文脈自由文法を定義するための記述法。 PEG 形式文法を定義するための文法(言語)。BNFとは違い、定義する文法には曖昧性が存在しないようになっている。また、PEGが定義する文法は文脈自由文法では…

グローバルバックトラッキングをやめる方法( 適当訳 )

How to remove global backtracking from your grammar - ANTLR 3 - ANTLR Project を適当に訳してみます。 誤訳いっぱいあると思います。 より複雑な文法、特にLR文法をANTLRへ移植した場合、このようなエラー文を出す。 "[fatal] rule compilation_unit ha…

よく忘れる英単語

毎回意味を調べてる気がする単語たち。 あるいは覚えられなさそうな単語たち。 単語 意味 distinction 区別、差異 invocation (invokeの名詞形)。発動 further もっと先に furthermore そのうえ、さらに conform 一致する whether (名詞節で)…かどうか。(副…

ANTLR3のリンク集

公式 http://www.antlr3.org/ 本家です。 http://www.antlr.org/wiki/display/ANTLR3/ANTLR+3+Wiki+Home 本家wikiです。 http://www.antlr3.org/works/index.html ANTLRWorksの公式ページ。 http://www.antlr3.org/download.html 各種ダウンロード The Pragm…

イラスト技術リンク集

プログラマだって絵がうまくなりたいんです。 随時更新。 まとめ 底辺スレの豆知識 @ ウィキ - トップページ 萌える絵のかきかた教えてくれ ぷちまとめ 技術系まとめブログ 萌えイラスト上達法! お絵かき初心者の学習部屋 イラスト上達法! お絵かき初心者…

クラス外での定義方法まとめ

C++

内部クラス 宣言 class A { public: class AA; }; 定義 class A::AA { public: }; テンプレートクラスのメンバ関数 宣言 template< typename T > class A { public: void Func( void ); }; 定義 template< typename T > void A<T>::Func( void ){} テンプレート</t>…

std::list内の要素を移動させる方法

C++

こことか ここ見てもうまい方法が分からなかったので、とりあえず自分がやった方法をメモ。 移動させる要素を指すイテレータをa 移動先を指すイテレータをb として、こんなふうにします。 list.insert( b, *a ); list.erase( a ); つまり、普通に新規要素と…

メンバ関数ポインタのアップキャスト

C++

クラスAのメンバ関数ポインタを受け取るところにクラスAを継承したクラスBのメンバ関数ポインタを渡したい場合、つまり、メンバ関数ポインタをアップキャストしたい場合はstatic_castを使えばいいらしいです。 http://ideone.com/dm8iQ9 #include <stdio.h> class A {</stdio.h>…