2022年3月15日火曜日

逆引きLinuxコマンド ダンプが見たい

xxdを使う。

例: ファイルのダンプが見たい

$ xxd ./file.bin

00000000:  6162 6364 650a

例:ダンプを連結した文字列にしたい(ヘキサストリング) 

$ xxd -ps ./file.bin

61626364650a

例:ヘキサストリングをでコードしたい

$ echo 61626364650a | xxd -r -p

abcde




2022年2月24日木曜日

バトルテックBV計算機をつくりました

 バトルテックでBVを調整するときに、いちいち電卓で計算するの面倒ですよね。

ということで、BVを入力して、Gunnary/Pilittingを選ぶだけで計算するブラウザアプリを作ってみました。

バトルテックBV計算機

「Your BV」にベースとなるのBV(Gunnary=4、Pilotting=5がベース)を入力。表の「2.42」とか「2.11」の数字を押してください。「Caliculated」に計算結果が表示されます。数字が選択状態で「Your BV」の入力を変更すると、計算しなおす新設設計です。

計算結果は切り上げです。

スマホでも使えますが、表がはみ出るのはご容赦を。



2020年2月21日金曜日

goto滅ぼすべし(1)

VisualStudio2019になって、C++Coreガイドラインのチェックが標準になったおかげで、C++でC言語的な書き方をしている箇所や、古いC++の書き方をしてる箇所に軒並み警告が出るようになってしまった。
その中でもC26438の「gotoは使わない」が厄介だ。
最近の人は教育が行き届いていて、gotoのような劇薬から遠ざけられているおかげでどう修正していいのか見当がつかない。ということを雑談しているときに気づいた。
自分の忘備録と他にも困った人のために、修正方法をメモる。

今回はエラーがあったらgoto先に飛ばして終わらせるパターン。

void AruClass::someFunction(uint8_t param) {
  if( sendFunction( param) < 0) {
    goto errorExit;
  }
  if( recvFunction() < 0) {
    goto errorExit;
  }
  parseRecvData();
errorExit:
  cleanupBuffer();
  return;
}

こんなケースだ。
一番わかりやすいケースで、exceptionにしてやればいいだけだ。

void AruClass::someFunction(uint8_t param){
  try{
    if( sendFuntion( param) < 0) {
        throw std::exception();
    }
    if( recvFunction() < 0) {
        throw std::exception();
    }
    parseRecvData();
  }
  catch(...){
      // error case
  }
  cleanupBuffer();
  return;
}

2019年2月16日土曜日

バトルテック射撃テンプレートの使い方

バトルテック射撃テンプレート、作り方だけ載せて使い方を説明していなかったな、ということで、使い方の説明です。

1)先ずは磁石15個を左側に置きます。(画像が間違えています。そのうちなおします…)

2)Gunnery Skillが「3」なので、磁石を3つ動かします。 

3)攻撃側の移動手段が「歩行」なので、磁石を1つ動かして、

4)目標の移動が「4」「ジャンプ」なので、それぞれ1つづつ磁石を動かして、

5)目標がLv2の森林にいて、間にLv1の森林、それぞれ磁石を動かします。

6)あとは武器の射程に合わせて磁石を動かします。
 この場合、ミドルからは当たり目無しとなります。
11!?当たり目があるなら、撃たない理由はない!敵機めがけて発射!

2018年12月8日土曜日

バトルテック射撃テンプレート

バトルテック射撃テンプレートの作り方。

材料
1)このファイルをA4で印刷したもの
2)ダイソー等で売っているA5のホワイトボード


作り方
1)ホワイトボードの上下左右に接着剤がはみ出ているので、その場所を調べます。

2)印刷したテンプレートをこんな具合にカットします。
上下のボンドはみだし箇所は、ホワイトボードに差し込むときにスライドさせるので
広めにカットしておきます。

3)上下を差し込み、スライドさせて
もう片方を差し込めば、完成!

デザインが気に入らない!って人はこちらのファイル(odf形式)を編集してください。

2018年1月22日月曜日

GCCのビルトインプリフェッチ

sse->neonの移植でmm_prefetch()に相当するものがないのでいろいろ調べた。
Clangでも使える。
GCCのビルトインプリフェッチ命令

__builtin_prefetch(const void *addr, int rw, int locality)

 const void *addr プリフェッチするアドレス
int rw 0:デフォルト 読み込み
        1:書き込み
int locality 0:キャッシュにアクセス後、データを残さない
              1:0と3の間。0寄り
              2:0と3の間。3寄り
              3:可能な限りキャッシュにデータを残す

2018年1月14日日曜日

[メモ]Tinker Board でのOpenCLのビルド

apt-get install opencl-headers

gcc main.c -I/usr/include -L/usr/lib /usr/lib/arm-linux-gnueabihf/libOpenCL.so


CL_PLATFORM_xxxxをとってみた結果はこんな感じ

CL_PLATFORM_PROFILE   : FULL_PROFILE
CL_PLATFORM_VERSION   : OpenCL 1.2 v1.r9p0-05rel0-git(f980191).e4ba9e4c6ff8005348d0332aae160089
CL_PLATFORM_NAME      : ARM Platform
CL_PLATFORM_VENDOR    : ARM
CL_PLATFORM_EXTENSIONS: cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_3d_image_writes cl_khr_fp64 cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_fp16 cl_khr_gl_sharing cl_khr_icd cl_khr_egl_event cl_khr_egl_image cl_arm_core_id cl_arm_printf cl_arm_thread_limit_hint cl_arm_non_uniform_work_group_size cl_arm_import_memory