約 7,945 件
https://w.atwiki.jp/bonze2/pages/19.html
ファイルの入力 ファイルからレコードを読むなら、TSOのEXECIOを利用。 "EXECIO 1 DISKR INDD (STEM LINE.)" /* INDD というDDから1レコード読んで、配列 LINE に入れる SAY LINE.1 使用メモリを気にしないなら、いっぺんに全レコードを読んでしまうこともできる。 "EXECIO * DISKR INDD (STEM LINE.)" /* INDD というDDから全レコードを読んで、配列 LINE に入れる DO I=1 TO LINE.0 /* 配列の添字 0 の要素はレコード数 SAY LINE.I /* 1レコードずつ順に表示 END ファイルを1レコードずつ読んで処理をする典型的なコード DO WHILE 1 "EXECIO 1 DISKR INDD (STEM LINE.)" IF RC 0 THEN LEAVE /* ファイルの終わりに達したら DO WHILE ループから抜ける (do something) END /* DO WHILE 1 の終わり ファイルの出力 LINE.1= HELLO,WORLD "EXECIO 1 DISKW OUTDD (STEM LINE.)" /* OUTDD というDDに LINE.1 の内容を1レコード書き込む 複数レコードをいっぺんに出力する場合 LINE.1= //JOBNAME JOB CLASS=A,MSGCLASS=A LINE.2= //IEFBR14 EXEC PGM=IEFBR14 LINE.3= //DD1 DD DSN=DATASET,DISP=(MOD,DELETE),SPACE=(TRK,1),UNIT=SYSDA "EXECIO 3 DISKW OUTDD (STEM LINE.)" /* OUTDD というDDに LINE.1〜LINE.3 の内容を書き込む レコード数を変数で指定する場合 LINE.1= //JOBNAME JOB CLASS=A,MSGCLASS=A LINE.2= //IEFBR14 EXEC PGM=IEFBR14 LINE.3= //DD1 DD DSN=DATASET1,DISP=(MOD,DELETE),SPACE=(TRK,1),UNIT=SYSDA (略) LINE.9= //DD7 DD DSN=DATASET7,DISP=(MOD,DELETE),SPACE=(TRK,1),UNIT=SYSDA LINE.0=9 /* 出力するレコード数 "EXECIO * DISKW OUTDD (STEM LINE.)" TSOコマンドを発行し、その結果を受け取る OUTTRAP() で、TSOコマンドのレスポンスを配列に受け取るようにする。 X=OUTTRAP( LINE. ) "LISTDS ( dataset name ) MEMBERS" /* 配列 LINE. にLISTDSコマンドのレスポンスが入る DO I=1 TO LINE.0 /* LINE.0 はコマンドレスポンスの行数 (do something) END X=OUTTRAP( OFF )
https://w.atwiki.jp/tech_memo/pages/16.html
byte配列変換byte[] → string(16進数) byte[] → string(文字列) byte配列に変換 16進数、8進数、2進数の文字列を整数に変換 string作成+を使わないで固定の文字列を作成 int型の数字を16進数で表示 byte配列のコピー Array.Copy()Array.Copy メソッド (Array1, Array2, Int32) Array.Copy メソッド (Array1, Int32_1, Array2, Int32_2, Int32_3) コマンドライン実行コマンドラインの引数を取得1番目の方法と2番目の方法の違い 他のアプリケーションの実行 変換 byte配列変換 byte[] → string(16進数) string data = BitConverter.ToString(byte[]); ToString以外にもToIntなどもあるので変換にはこれを使う byte[] → string(文字列) Encoding.[変換したい文字形式(ASCⅡなど)].GetString(byte配列) byte配列に変換 byte[] data = BitConverter.GetBytes(); カッコ内には全ての変数を入れることができる 16進数、8進数、2進数の文字列を整数に変換 int data2 = Convert.ToInt32("01010101010", 2); int data8 = Convert.ToInt32("1750", 8); int data16 = Convert.ToInt32("1f50", 16); 文字整形 string作成 +を使わないで固定の文字列を作成 string data = string.Format( "作成したいフォーマット。Console.Writeと同じように作成できる", 入れ込みたいデータを順番通りに並べる ) int型の数字を16進数で表示 in data = 256; string dataMessage = data.Tostring("x4"); - 0100と表示される コピー byte配列のコピー Array.Copy() Array.Copy メソッド (Array1, Array2, Int32) Array1 コピー元 Array2 コピー先 Int32 コピーの個数 Array.Copy メソッド (Array1, Int32_1, Array2, Int32_2, Int32_3) Array1 コピー元 Int32_1 コピー開始位置_Array1 Array2 コピー先 Int32_2 コピー開始位置_Array2 Int32_3 コピーの個数 その他 コマンドライン実行 コマンドラインの引数を取得 static void Main(string[] args) { int i = 1; foreach (string cmds in args) { Console.WriteLine("{0}番目の引数 {1}", i, cmds); i++; } Console.WriteLine("2番目の方法"); string[] cmdsl = System.Environment.GetCommandLineArgs(); i = 1; foreach (string cmds in cmdsl) { Console.WriteLine("{0}番目の引数 {1}", i, cmds); i++; } Console.ReadLine(); } 1番目の方法と2番目の方法の違い 1番目の方法は、実行プログラムが先頭のstring配列に入らないのに対し、2番目の方法で入る >CommandLine.exe test1 test2 test3 1番目の引数 test1 2番目の引数 test2 3番目の引数 test3 2番目の方法 1番目の引数 CommandLine.exe 2番目の引数 test1 3番目の引数 test2 4番目の引数 test3 他のアプリケーションの実行 using System.Diagnostics; public class ProcessStart { static void Main() { // 実行ファイルを指定して実行 Process.Start(@"C \Program Files\Windows Media Player\mplayer2.exe"); // パラメータを指定して実行 Process.Start("notepad.exe", @"C \boot.ini"); // 拡張子が登録されているファイルを指定 Process.Start(@"C \boot.ini"); // URLを開く Process.Start("http //www.atmarkit.co.jp/fdotnet/"); // フォルダを開く Process.Start(@"C \"); } } このページを編集 上へ
https://w.atwiki.jp/bokuyo/pages/118.html
structハック(struct hack) - Flexible array member "hack"という単語に弱いあなたへ。 ここのページ書き加えたい。 C++03 でstruxt ハックを使う場面が思い浮かばない。アロケータを自前で作るときとかに使いそう? struct hack "Flexible array member(柔軟な配列のメンバ)"と呼ばれることが公の場では多いみたい。 でも、ちょっと長いから"struct hack"の愛称で親しまれてる。以降の文章は"structハック"と書こうかな。 structハックって? 通常、要素数を定義しない配列の宣言は不完全な宣言とみなされコンパイルエラーとなります。 int eureka[7];//おっけー int renton[];//コンパイルエラー しかし、構造体の宣言の最後の行に要素数を定義しない配列を宣言することができます。 struct EurekaSeven { int eureka[7]; int renton[];//定義できちゃう! } これがstructハックです。 ここでの「renton」をflexible array member(柔軟な配列のメンバ)と言います。 構造体だけでなく、共用体やclassでも同様のことができます。 サイズと確保のされ方 std cout sizeof(EurekaSeven) std endl; // "28"と表示されるよん EurekaSeven構造体のサイズは"28"Byte。int型は"4"Byteなので、「4 Byte * eureka[7] = 28 Byte」。 つまり、コンパイラは「int renton[];」をサイズ0の配列とみなしているのです。 EurekaSeven es; for(int i=0; i 7; ++i){ std cout es.eureka+i std endl; } std cout es.renton std endl; 上のプログラムを行うと、それぞれどこに確保されているかアドレスを見ることができます。 //出力結果 002FFB94//es.eureka[0]; 002FFB98//es.eureka[1]; 002FFB9C//es.eureka[2]; 002FFBA0//es.eureka[3]; 002FFBA4//es.eureka[4]; 002FFBA8//es.eureka[5]; 002FFBAC//es.eureka[6]; 002FFBB0//es.renton[]; こんなのどこで使うの? int const elements= 156; void *esMemoryPool= std malloc( sizeof(struct EurekaSeven) + sizeof(int[elements]) ); struct EurekaSeven *es= new(esMemoryPool) EurekaSeven; このようにして使うことが多いみたいです。 何をしているのかというと、次と同じようなことをしています。 struct EurekaSeven { int eureka[7]; int renton[elements]; }; int renton[]を使うことで、renton[0]~renton[155]へ簡単にアクセスすることができるようになります。 es- renton[155] = 777; std cout *((es- renton)+155) std endl; //"777"が表示される。 templateを使って同様のことができます。 template unsigned int N struct EurekaSeven { int eureka[7]; int renton[T]; }; ただし、templateを使って要素数を定義する場合、要素数の違いで型が変わってしまいます。 int const elements= 156; EurekaSeven elements *es = new EurekaSeven elements ; delete (es); EurekaSeven 156 型とEurekaSeven 256 型は違う型なので代入したりできません。 使い方 #include new #include iostream struct EurekaSeven { int eureka[7]; int renton[]; }; int main() { int const elements= 156; void *esMemoryPool= std malloc( sizeof(struct EurekaSeven) + sizeof(int[elements]) ); struct EurekaSeven *es= new(esMemoryPool) EurekaSeven; es- renton[155]= 777; std cout *((es- renton)+155) std endl; delete (es, esMemoryPool); return 0; } placement newしているので、 new をincludeしてあげてください。 structハックをVisual C++2010で使うと以下のような警告がでます。 warning C4200 非標準の拡張機能が使用されています 構造体または共用体中にサイズが 0 の配列があります。 UDT にサイズが 0 の配列が含まれているときに、copy-ctor または copy-assignment オペレーターを生成することはできません。 参考文献 Sun Studio 12 C ユーザーズガイド - D.1.8 柔軟な配列のメンバー http //www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf(p.103 - §6.7.2.1 17のEXAMPLE)
https://w.atwiki.jp/elona_valiant/pages/18.html
skill_data ステータス、スキル関連 メモリ改造はあんまりやらないから詳しいことは言えないけど。 HSPで扱える数値型変数は4バイト符号付整数と8バイト倍精度浮動小数点のみ。リトルエンディアン。 配列変数は必ず連続した領域が使用され、2次元以上の場合は array(0,0), array(1,0)....array(n,0), array(0,1), array(1,1)...の順で参照される。 elonaではごく一部の計算の途中経過に浮動小数点が使われる他は全て整数で保存、計算されている。 各キャラクタのデータは2つの配列変数に格納されている。 (フィートとかエーテル病とか呪文のストックとかプレイヤー専用の状態は別変数) 定義はこんな感じ。 dim cdata, 500, 245 dim sdata, 1200, 245 そんでcdata(38,0)がプレイヤーのレベルでsdata(10, 0)がプレイヤーの現在の筋力だったりする。 skillの方はsdata(0~599,ユニットNo)が現在値、sdata(600~1199,ユニットNo)が基本値と経験値と成長値を表している。 (プレイヤーのユニットNoは0) 現在値の方は何かの理由で変動するたびに基本値から再計算されるので書き換えても意味が無い。 基本値のほうは例えば窃盗スキル(識別番号303)を[c]コマンドでスキルを見たときに23.456(123%)となっていたらsdata(303 + 600, 0)には23456123(16進 165E97B)が入ってる。 この形式は筋力等の能力値もスキルも魔法も同じ。 上で書いたように配列変数は必ず連続してるので適当なスキルを元に検索して識別番号の差*4のアドレスを探せばどんなスキルも変えられるはず。 skillで書き換える価値があるのは 解析/魔法スキルリストで書いたのが全部。 statusの方は17 好感度、21 生年、30 金、31 プラチナ、34 名声、35 EXP、36 NextEXP、38 レベル、41 スキルボーナス、49 カルマ、61 信仰する神、62 信仰ポイント、くらいかな。 cdata(85, キャラNo)=雇用回数。雇用するたびに+1。 cdata(100~129, キャラNo)が装備箇所。 無し, "頭", "首", "背中", "胴体", "手", "指", "腕", "腰", "足", "遠隔", "矢弾" がそれぞれ0、10000、20000……110000に対応。 装備箇所を16個以上にすると装備画面が2ページに。 アイテムを装備している時、その装備箇所の値が+アイテムNoされる。 ユニット別スキル値格納様配列 sdata.s1 ユニットNo. 0 ~ 56の領域 sdata_???_???.s1 ユニットNo. 57 ~ 244の領域 dim sdata, 1200, 245 配列の要素サイズは4バイト(=符号付32ビット整数) 魔法ストック関連 魔法ストックはこんな感じ spell.s1 dim spell, 200 spell(魔法の識別番号-400)がその魔法のストック数。[v]で表示されるのと同じ値。 識別番号は 解析/魔法スキルリストのやつ。 レシピ関連情報格納配列 krecipe.s1 dim krecipe, 3, 800 各アイテムに対するレシピ習得済みフラグ等が格納される krecipe(0, アイテムID) レシピ習得済みフラグ krecipe(1, アイテムID) 未使用 krecipe(2, アイテムID) 未使用
https://w.atwiki.jp/ranha-icfp/pages/12.html
Backgroundの訳はここですよ! 遠藤はふーん星の生き物で、つまり地球外生命体。 地球の環境は遠藤に宜しいとは言えない。 遠藤は運悪くなんか変なのから地球におっこちてしまった\(^o^)/ 遠藤と安心の宇宙船Arrowは落っこちた時に痛い目をみて、 さらに遠藤は追加ダメージまで食らって泣きっ面に蜂。 遠藤は今はヤバい状況で、この形のままで地球に存在出来ないしArrowも死んでまう。 Arrow(我々と連絡を取ったのは都合よくも船でしたよ!)によると、 遠藤を生き残らせる為に、地球向けにDNAを変更するしかないという事。 我々のお仕事は72時間以内に適切なDNA配列を見つけるのを手助けする事。 失敗したら遠藤は死にます。 ICFPに参加する様な変態ならきっとなんとかしてくれるよね! 我々のここまでの取り組みでふーん星人のDNA配列生成プロセスに関する 情報が分かっています。 このドキュメントの以下の文では、この配列生成に関するアルゴリズムについて述べています。
https://w.atwiki.jp/swfspec/pages/107.html
シェイプの概要 シェイプは次のような要素により合成されます。 キャラクタID (CharacterId) 16 ビットの一意な識別子で、ディクショナリ中のキャラクタを指します。 CharacterId は制御タグの PlaceObject を参照します。 キャラクタは再使用することができます。 他のキャラクタと合成することにより複雑なシェイプを作ることができます。 バウンディングボックス (Bounding box) シェイプを囲む矩形領域を指します。 塗りスタイルの配列 (Fill style array) シェイプで使われる、塗りのスタイルのリストを指します。 線スタイルの配列 (Line style array) シェイプで使われる、線のスタイルのリストを指します。 シェイプレコード配列 (Shape record array) シェイプレコードのリストを指します。 シェイプレコードは、直線または曲線、スタイルの変更、描画位置の移動を定義します。 (注) 線と塗りのスタイルは各シェイプにつき1度だけ定義され、 辺ごとに利用・再利用されます。 移動 前のページ シェイプ 次のページ シェイプのサンプル
https://w.atwiki.jp/comcatet/pages/32.html
内包表記 ループ処理を簡単簡潔に記述する方法。 検索するとPythonの記事が多いから、そちらから取り込んだ? 元々ECMAScript6の機能として提案されていたが、ECMAScript7に先送りされている。 現時点ではFirefoxのみの実装? 配列内包とジェネレータ内包の表記がある。FirefoxではJavaScript1.7(Firefox2)で配列内包が実装されているが、今のとは表記が違う実装だった。ECMAScript7互換表記の配列内包とジェネレータ内包はFirefox30から実装された。今後も表記が変わる可能性がある。 [for (x of iterable) x*x] [for (x of iterable) if (x foo) x] [for (x of iterable) for (y of iterable) x + y] Array comprehensions - JavaScript | MDN es6 generator and array comprehensions in spidermonkey -- wingolog
https://w.atwiki.jp/kajuaru/pages/36.html
別名:えいぐはっ 紹介文:稲配列作者で通称稲さん。農家ではない。 十数枚のキーボードを所有していて最適化、運指表マニア。 最近のお気に入りはメカニカルキーボードのようである。 アキバで定期的にTODをやっている。スタッフロールが得意。 スコアアタックも得意で歴代3位の記録(9512点)を出している。 AC版TODを所有している。 酔鍵の使い手でよく飲酒しながらタイピングしている。 タイプウェルの大半の記録は飲酒時に出したもの。 出現場所:twitter 使用配列:qwerty、JISかな、稲配列 名言:飲酒するタイパーと飲酒タイピングやる人は違う 目立った記録: TW-殿堂group τ 記録 【TW】 JR ZJ(ZI/ZJ/ZJ/XX) 13/01/19 JK XG(XD/XJ/XG/XI) EW XA(XS/XD/XA/XC) OR XG(XF/XF/XD/SA) 憲法R XA(XS/ZI/XD/XC) 【TOD】 9512点(NORMAL台) 運指表 twitterID:@eigh8_t
https://w.atwiki.jp/funnyjs/pages/21.html
forEachの短縮形メソッドです。 但し、eachは、複数データを持つ循環可能な形式のものであれば、共通してeachを使うことができます。 特におすすめは、連想配列(Object)または、配列(Array)、一意のHTMLElementの配列のような形式(NodeList)で使うことを推奨します。 Usage1 ({ foo 0, bar 1 }) .each((v, k) = $b.in(k + + v).in($d.ship( br ))) .each((v, k) = console.log(k + + v)); Result 1 foo 0 bar 1 と表示します。 Usage 2 [ foo , bar ] .each((v, k) = $b.in(v).in($d.ship( br ))) .each((v, k) = console.log(v)); Result 2 foo bar と表示します。 Return this ポインタで指定されているオブジェクトを返答します。 メソッドチェインにご活用ください。
https://w.atwiki.jp/atachi/pages/76.html
型情報の取得 [#d47d1f87] 文字列で任意のクラスの型情報を取得 型情報の使い方 型情報を使ってインスタンスを作成 [#x27b8e68] 型情報からの配列型作成 [#b4058749] 配列を初期化 [#h93d524f] 型情報による操作 [#dbce2237] ジェネリクスとリフレクション 型情報の取得 System Typeクラス に型情報に関するアクセスができます。 Typeクラスの作成は次のように行います。 Type t = Type.GetType("MyClass"); // クラス名による取得 文字列で任意のクラスの型情報を取得 アプリケーションがアクセス可能な型情報の一覧を作成できるので、その中から取得したい型名を探し出す事で、 文字列から型情報を取得できる。 using System.Reflection; class ObjectUtil{ public static System.Type GetTypeFromName(string name) { foreach(System.Type type in GetCurrendDomainAssemblyTypes()) { if (String.Equals(type.FullName, name) || String.Equals(type.AssemblyQualifiedName, name)) return type; } } public static IList System.Type GetCurrendDomainAssemblyTypes() { Assembly[] assemblies = System.AppDomain.CurrentDomain.GetAssemblies(); List System.Type types = new List System.Type (); foreach (System.Reflection.Assembly assembly in assemblies) { types.AddRange(assembly.GetTypes()); } return types; } } 上記のようなクラスを用意しておけば、完全なクラス名を与えることでそのクラスの型情報を取得できる。 Type type = GetTypeFromName("System.String"); 型情報の使い方 型情報を使ってインスタンスを作成 Activatorを使う方法が最も簡単。 ただし、対象のクラス宣言でデフォルトコンストラクタにアクセスできる場合に限られる。 引数を伴うコンストラクタを呼び出したりするには、コンストラクタ情報(ConstructorInfo)を取得して呼び出す必要がある。 System.Type type = typeof(String); object instance = Activator.CreateInstance(type); 型情報からの配列型作成 System.Type type = typeof(String); object instance = Activator.CreateInstance(type); このように作り出した場合のinstance変数はString型であることが型推論によりわかるため、問題はありません。 しかし、型情報から動的に配列型を作成するには、工夫が必要で必ず配列のサイズをコンストラクタを使って指定します。 System.Type type = typeof(String); System.Type typeStrings = type.MakeArrayType(); // String[]のような型。 // 配列型をインスタンス化 // - コンストラクタを取得する ConstructorInfo[] Constructors = t.GetConstructors(); // - コンストラクタをInvokeする。 // パラメータは1つで、作成したい配列のサイズが入る。 var instance = Constructors[0].Invoke(new object[]{1}); // "new String[1]" と同じ 配列を初期化 上記のように動的に作成した配列型に初期値を与えることはできません。 よって、作成したインスタンスにArray.Copyを使って要素をコピーします。 Array.Copy(new String[]{"埼玉"}, (System.Array)instance, 1); foreach(object element in (System.Array)instance) { System.Console.WriteLine(element.ToString()); // echo "埼玉" } 型情報による操作 Type t = Type.GetType("MyClass"); // クラス名による取得 // 型情報からインスタンスの生成 MyClass obj = Activator.CreateInstance(t); t.GetField("width").SetValue(obj, 19); // objインスタンスのwidthフィールドへ値を設定 int width = (int)t.GetField("width").GetValue(obj); // objインスタンスのwidthフィールドの取得 ジェネリクスとリフレクション ジェネリックの型情報をリフレクションで取得します。 class Program { static void Main(string[] args) { Collection Student students = new Collection Student (); Type clazz = students.GetType(); Console.WriteLine("ジェネリクスであるか " + clazz.IsGenericType); Type genClazz = clazz.GetGenericArguments()[0]; Console.WriteLine("ジェネリック型 " + genClazz.Name); } } class Student { public string name; }