ページ

2014年12月29日月曜日

ATHLETA ジュニアウォームブレーカーSET購入

GALLERY・2のオンラインショップで2割引きになっていたウォームブレーカーが結構恰好良かったのでようたのために購入。(発見者は奥さん)

室内撮影の関係で若干色味が変わって見えてますが前と後ろから撮影。後ろ側はなぜかクラブワールドカップ決勝のセルヒオ・ラモスの真似らしい。

 

でもちょっとサイズが大きかったかな。まー、早く大きくなってもらおう。

JNAは楽チン♪

Javaのプログラムで部分的にC/C++で実装したいということはよくあるかと思います。でもJNIって何か面倒なイメージが・・・。
(慣れてしまえば、って感じなのかもしれませんが。)

そこで便利なのがJNA。JNIで実装しなければいけない面倒なコードをだいぶ省略できるようです。
ただ、超簡単なサンプルはよく見かけるのですが、ほんのちょっとインタフェースを複雑にしたりすると意外とサンプルって見かけないものですよね。(検索の仕方が下手なのかもしれませんが・・・
なものでちょこっとC/C++側とJava側のサンプルを作ってみました。

コメント等はそのうち気が向いたら補足するとして、とりあえずコードだけ載せておきます。
構造体やコールバック関数が使えればだいたいのことはできるんじゃないかな?というレベルのものです。日本語扱うときだと環境によっては注意が必要でしょうね。

ちなみに私が使ったJNAのバージョンは4.1.0です。コードを見ていただくと分かりますがWindows上で試してました。

なお、あくまでサンプルコードなので当方では一切の責任を持ちません。皆様の責任の範囲でご参照ください。

--------------------------------------------------
<C/C++側>

#include
#include

struct SampleContext {
  int member;
};
typedef SampleContext* SampleHandle;

struct SampleStruct {
  char member[1024];
};

extern "C" {

__declspec(dllexport) SampleHandle function_open(SampleStruct *arg)
{
  SampleContext *context = (SampleHandle)new SampleContext;
  context->member = atoi(arg->member);
  return (SampleHandle)context;
}

__declspec(dllexport) void function_run(SampleHandle arg, void(*callback)(SampleHandle))
{
  SampleContext *context = (SampleContext *)arg;
  std::cout << "   start: " << context->member << std::endl;
  (*callback)(arg);
  std::cout << "     end: " << context->member << std::endl;
}

__declspec(dllexport) int function_get(SampleHandle arg)
{
  SampleContext *context = (SampleContext *)arg;
  return context->member;
}

__declspec(dllexport) void function_close(SampleHandle arg)
{
  SampleContext *context = (SampleContext *)arg;
  delete context;
}

}
--------------------------------------------------
<Java側>

package sample_jna;

import java.util.Arrays;
import java.util.List;

import com.sun.jna.Callback;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.PointerType;
import com.sun.jna.Structure;

public class SampleJna {
  public static class SampleStruct extends Structure {
    public byte [] member = "12345".getBytes();
      @Override
      protected List getFieldOrder() {
          return Arrays.asList ("member");
      }
      public SampleStruct() {
        super();
      }
  }

  public static class SampleHandle extends PointerType {
    public SampleHandle() {
      super();
    }
    public SampleHandle(Pointer address) {
      super(address);
    }
  }

  public interface SampleCallback extends Callback {
    public void invoke(SampleHandle arg);
  }

  public interface SampleLibrary extends Library {
    SampleLibrary INSTANCE = (SampleLibrary)Native.loadLibrary("sample_library", SampleLibrary.class);
    SampleHandle function_open(SampleStruct arg);
    void function_run(SampleHandle arg, SampleCallback callback);
    int function_get(SampleHandle arg);
    void function_close(SampleHandle arg);
  }

  public static class UserCallback implements SampleCallback {
    public void invoke(SampleHandle arg) {
      String message = "callback: " + SampleLibrary.INSTANCE.function_get(arg);
      System.out.println(message);
    }
  }

  public static void main(String[] args) {
    SampleStruct struct = new SampleStruct();
    UserCallback callback = new UserCallback();

    SampleHandle handle = SampleLibrary.INSTANCE.function_open(struct);
    SampleLibrary.INSTANCE.function_run(handle, callback);
    SampleLibrary.INSTANCE.function_close(handle);
  }
}
--------------------------------------------------

実行結果はこんな感じ。

   start: 12345
callback: 12345
     end: 12345

ちゃんとコールバック関数内でもコンテキスト内部の情報が取れてますね。

2014年12月23日火曜日

ジュニオールとの練習試合

今日は午後からジュニオールSCとの練習試合がありました。午前中は塾の冬期講習でストレスたまってるだろうから、張り切ってボールを蹴ってもらいましょう。

それにしても今年は春も秋も市大会でそこそこの成績を残しているので強豪から練習試合のお誘いが増えているみたいですね。ありがたやありがたや。

さて今日の試合結果です。全部は記録してなかったのでようたの出た試合だけで・・・。

美晴SC 1-1 ジュニオールSC
美晴SC 1-0 ジュニオールSC ようた1得点
美晴SC 1-2 ジュニオールSC
美晴SC 2-0 ジュニオールSC
美晴SC 3-0 ジュニオールSC

三試合目だけ負けちゃいました。この試合はようたが左サイドで出場しましたが、慣れないフォーメーションでバランスを崩しちゃった感じですね。

今日の対戦相手は市内屈指の個人技主義の強豪チームのようです。ただようた自身の感想としては1対1で負ける気はしなかったとのこと。頼もしいのかポジティブシンキングなんだか。
あと春過ぎまでは一年生のときにスクールで同じクラスだったお友達がいたはずなのですが、この日はいませんでしたね。どうしちゃったんだろう??

なお、この日の試合ではいつものようにほとんどのコーナーキックを蹴りましたが、ピンポイントで頭に合わせて点を取ったシーンもありました。ヘディングが強い選手が中にいるとようたも蹴りがいがあるようです。
タイプの違うFWが二人いるおかげで、チームとしても得点パターンが増えてきたのは非常に良いことですね。

さて、この日で今年の対外試合は最後になりました。上記のように勝ち越して(※)一日を終われたので、気持ちよく来年が迎えられますね。

※ようたが出たAチームは勝ち越しましたが、ジュニオールさんのホームページを見ると、この日の試合全部だと負け越してるみたいですね。

来年は県大会に港南区選手権と公式戦が続きます。県大会は強豪ぞろいのブロックとなりましたが、腕試しとしてはちょうどいいでしょう。(夏のチャンピオンシップの優勝チーム、準優勝チームと一緒です。)また港南区選手権ではリーグ戦優勝後なので二冠がかかっています。こちらも気を引き締めて頑張りましょう!

2014年12月5日金曜日

二度目の入れ替え戦

今日はボカスクールLa Escuelaの品川校で入れ替え戦がありました。
ようたにとっては二度目の入れ替え戦です。

前回の入れ替え戦は3・4年生チームで参加してましたが、今回は5・6年生チームでの参加となりました。大丈夫か?

そして顔ぶれを見ると何となくSELECTIVOとADVANCEしか見当たらない気がする。BASEも合わせた入れ替え戦じゃないのかな?実際のところどうなんだろう??

時間になるとまずは練習モード。全員同じコートに入りドリブル練習です。自分のボールをキープして他の選手のボールを外に蹴りだすというよくあるやつですね。
ようたはこういうとき攻めには出ないんですよね。端っこで攻められないようにひっそりと・・・それじゃ練習にならんだろ。
で、普段一緒でないSELECTIVOの子の中にはやっぱり足元が上手な子がいますね。あと体の使い方もうまい。来年あたりはようたもあれくらいできるといいのですが。

試合がはじまると・・・ん?ADVANCE同士でやってる?結局この日は入れ替え戦といいつつSELECTIVOとの対戦はなかったようです。
でも紅白戦を何試合か行い、得点も決めることができて、楽しくサッカーできたことが何よりですね。そして少しはスクールに入ったころに比べると逞しくなったかな?
耳を澄ますと小さな声でボールを呼ぶ声も・・・?
もっと大きな声でボールを要求できるようになる日がいつか来るんだろうか??(合宿のときは単に味方が戻ってきてくれずにキレてただけだしね。

さて次は三月ですかね。それまでまた練習に励んでもっともっとレベルアップしましょう。

ボカスクールに入った理由

今日はボカらしく体を使った基礎練習をやってます。
ポストに入ってディフェンダーを体と腕で押さえつけ、足下に入ったボールを足裏でコントロールし反転してシュート。基礎でありつつもよくあるシチュエーションなので実戦的で良いですね。

やっぱりこういったフィジカルを前面に出したトレーニングこそ、ようたに足りなかったところでボカに入った理由でもあります。
この間の試合でも「aguanto出来るようになってきた!何かいい感じ!」とようたも嬉しそうに話していたので、ボカに入って7ヵ月経とうとしているところでやっと成果が出てきつつあるようです。

前回のボカの校別MVPをもらったときも、正直私としてはモチベーションあげるためにいいタイミングでニンジンぶら下げるな~と思ってたのですが、実際のところ変わりつつあるところにコーチも気づいていてくれてるのかな?とこれまたポジティブシンンキングしてみました。

あとはパスばかりでなく自ら仕掛けるプレーが増やしていけると、もっともっと良い選手になれると思ってます。

¡Vamos, Yota!