persistent_C
の編集
http://khfdpl.osask.jp/wiki/?persistent_C
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
2016_10
2016_11
2016_12
BracketName
Essen
Essen0
Essen1
Essen2
Essen3
Essen4
EssenMemo0001
EssenMemo0002
EssenMemo0003
EssenMemo0004
EssenMemo0005
EssenMemo0006
EssenMemo0007
EssenMemo0008
EssenMemo0009
EssenMemo0010
EssenMemo0011
EssenR2
EssenR2_ess03f
EssenR2_ess03h
EssenR2_ess03i
EssenR2_ideas
EssenR2_jit00
EssenR2_jit01
FormattingRules
FrontPage
Help
IP
InterWiki
InterWikiName
InterWikiSandBox
K
KHPC
KHPC_v000doc01
KHPC_v001doc01
KHPC_v002doc01
KHPC_v003doc01
MenuBar
OSC
OSC20181027
OSC20190222
OSC20191123
OSC20230401
OSC20230528
OSC20231021
OSC20240310
OSC20241026
PHP
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RecentDeleted
SandBox
SltVA
VariableArray
WikiEngines
WikiName
YukiWiki
advcal20161205
advcal20161206
advcal20161209
advcal20161210
advcal20161215
eoml0001
eoml0002
essen_ex01_0001
impressions
kcl_malloc
khfdpl_result1
members
memo0001
memo0002
note0001
note0002
note0003
note0004
note0005
note0006
oldworks
oldworks00
oldworks06
oldworks12
oldworks13
osaskjp_index
persistent_C
populars
pr20161105
pr20161105b
scsc
seccamp2017
spam_test
uxf
uxf_01
uxf_02
uxp
* persistent-C のページ -(by [[K]], 2016.02.17) ** 基本的なアイデア -(1) C言語を少しだけ拡張し、以下の構文を使えるようにします。 persistent int a; // こうすると、変数aは「永続変数」になる。 --永続変数は、persistent_save(0); や persistent_load(0); という命令によって、外部ファイルに書きだされたり読み戻されたりする。それ以外のタイミングでは同期されない。 --基本的にはこれだけ。 -(2) この拡張によって、以下のことができるようになります。 --(2-1) ゲームにおけるhigh-scoreなどの処理が非常に簡単になる。初心者がfopenとかで悩まずに済む。 --(2-2) 処理を一度中断しても再開できるようなプログラミングが可能になる。 [例] persistent int sum = 0, i = 0; persistent_load(0); for (; i <= 100; i++) { sum += i; persistent_save(0); } --(2-3) データ書き換えのundoができる。 ---つまり、変数に値を代入している途中で、「あ、やっぱり元に戻そう」と思ったら persistent_load(0); してしまえばいい。そうすれば直前のpersistent_save()時点に戻る。 ---ただし永続変数以外は戻らないけど。 --(2-4) 永続変数を後から参照できる。 ---簡単な外部ツールを使うことで、永続変数の値をいつでも確認できる。 ---プログラムが実行中でも変数を参照できる。 ---なんなら値を書き換えることもできる。 ---デバッグには非常に有効。 --(2-5) 他のプログラムの永続変数にアクセスできる。 ---これでプログラム間の通信をすることができる。 ---高度なデバックにも使えるかも。 -(3) この拡張は便利な反面、バグの温床やセキュリティホールもたくさんありそうです。 --それを片っ端から列挙して、一緒に考えましょう。 --どうすれば、便利と安全が共存できますか? --さらに拡張するとしたら、どんな機能を加えますか? --(このセクションはセキュリティキャンプ2016を想定しています) -(4) このpersistentを使って、適当なプログラムを作って遊びましょう。 --blikeライブラリも提供するので、C言語からグラフィックやキー入力も簡単に扱えますよー。 ---blikeライブラリは、BASICのグラフィック命令やINKEY的なことを、C言語でやるための簡易ライブラリ。 --(このセクションはセキュリティキャンプ2016を想定しています) -(5) 補足 int persistent_save(double sec); // sec秒以上の間隔をあけて保存する。 // あまり高い頻度で保存するとさすがに遅くなるので、クリティカルでないのなら30秒とかのほうがいいかも。 // 戻り値が-1なら保存を実行した。0なら高頻度だったので今回は保存しなかった。という意味。 int persistent_load(double sec); // 読み込む。secや戻り値についてはsaveと同様。 --ポイントとしては、こんな簡単な拡張で、こんなにできることが広がるということを分かってほしい。 --だから柔軟な発想を! --・・・そして課題も増える。しかし課題があっても簡単にはあきらめないで。 ** 仕様と実装 -persistent-C は仕様というかコンセプトなので、様々な実装があってよい。細部は処理系ごとに違っていてもいい。 -さまざま実装が試みられて、良いものが生き残ればよい。 -[[K]]もひとまず簡易な実装を作るけれど、それはKHPCと名乗らせることにする。→[[KHPC]] * こめんと欄 #comment
タイムスタンプを変更しない
* persistent-C のページ -(by [[K]], 2016.02.17) ** 基本的なアイデア -(1) C言語を少しだけ拡張し、以下の構文を使えるようにします。 persistent int a; // こうすると、変数aは「永続変数」になる。 --永続変数は、persistent_save(0); や persistent_load(0); という命令によって、外部ファイルに書きだされたり読み戻されたりする。それ以外のタイミングでは同期されない。 --基本的にはこれだけ。 -(2) この拡張によって、以下のことができるようになります。 --(2-1) ゲームにおけるhigh-scoreなどの処理が非常に簡単になる。初心者がfopenとかで悩まずに済む。 --(2-2) 処理を一度中断しても再開できるようなプログラミングが可能になる。 [例] persistent int sum = 0, i = 0; persistent_load(0); for (; i <= 100; i++) { sum += i; persistent_save(0); } --(2-3) データ書き換えのundoができる。 ---つまり、変数に値を代入している途中で、「あ、やっぱり元に戻そう」と思ったら persistent_load(0); してしまえばいい。そうすれば直前のpersistent_save()時点に戻る。 ---ただし永続変数以外は戻らないけど。 --(2-4) 永続変数を後から参照できる。 ---簡単な外部ツールを使うことで、永続変数の値をいつでも確認できる。 ---プログラムが実行中でも変数を参照できる。 ---なんなら値を書き換えることもできる。 ---デバッグには非常に有効。 --(2-5) 他のプログラムの永続変数にアクセスできる。 ---これでプログラム間の通信をすることができる。 ---高度なデバックにも使えるかも。 -(3) この拡張は便利な反面、バグの温床やセキュリティホールもたくさんありそうです。 --それを片っ端から列挙して、一緒に考えましょう。 --どうすれば、便利と安全が共存できますか? --さらに拡張するとしたら、どんな機能を加えますか? --(このセクションはセキュリティキャンプ2016を想定しています) -(4) このpersistentを使って、適当なプログラムを作って遊びましょう。 --blikeライブラリも提供するので、C言語からグラフィックやキー入力も簡単に扱えますよー。 ---blikeライブラリは、BASICのグラフィック命令やINKEY的なことを、C言語でやるための簡易ライブラリ。 --(このセクションはセキュリティキャンプ2016を想定しています) -(5) 補足 int persistent_save(double sec); // sec秒以上の間隔をあけて保存する。 // あまり高い頻度で保存するとさすがに遅くなるので、クリティカルでないのなら30秒とかのほうがいいかも。 // 戻り値が-1なら保存を実行した。0なら高頻度だったので今回は保存しなかった。という意味。 int persistent_load(double sec); // 読み込む。secや戻り値についてはsaveと同様。 --ポイントとしては、こんな簡単な拡張で、こんなにできることが広がるということを分かってほしい。 --だから柔軟な発想を! --・・・そして課題も増える。しかし課題があっても簡単にはあきらめないで。 ** 仕様と実装 -persistent-C は仕様というかコンセプトなので、様々な実装があってよい。細部は処理系ごとに違っていてもいい。 -さまざま実装が試みられて、良いものが生き残ればよい。 -[[K]]もひとまず簡易な実装を作るけれど、それはKHPCと名乗らせることにする。→[[KHPC]] * こめんと欄 #comment
テキスト整形のルールを表示する