今日はjapan Innovation Leaders Summitに参加してきた。
講師として各企業のトップエンジニアのおはなしが聞けました!
技術的な話というよりは考え方について、色々勉強になりました。
また各企業の技術レベルが知れたのが、今回の大きなプラスでした!
また、ディスカッションでは、今回の参加した目的でもあるGREEの田中社長のお話には、
エンジニアとしてだけではなく、そもそもの考え方に共感しました、今後の動向に注目したいと思います。
今日はjapan Innovation Leaders Summitに参加してきた。
講師として各企業のトップエンジニアのおはなしが聞けました!
技術的な話というよりは考え方について、色々勉強になりました。
また各企業の技術レベルが知れたのが、今回の大きなプラスでした!
また、ディスカッションでは、今回の参加した目的でもあるGREEの田中社長のお話には、
エンジニアとしてだけではなく、そもそもの考え方に共感しました、今後の動向に注目したいと思います。
取得したデータの判定
●十字キーのデータ
dwXpos ・・・十字キーの左右を表す。
左 ⇒ 10000以下
中央⇒ 30000前後 の数が入る。
右 ⇒ 50000以上
dwYpos ・・・十字キーの上下を表す。
上 ⇒ 10000以下
中央⇒ 30000前後 の数が入る。
下 ⇒ 50000以上
●ボタンのデータ
各ビットが、「ボタンが押されているかどうか」を表す。
………0000_0000
・・・・ ・・BA
0ビット目・・・Aが押されていたら1
離されていたら0
1ビット目・・・Bが押されていたら1
離されていたら0
ボタンを調べる時は、ビット操作を使って
調べたいビットのみを調べる。
Aボタン・・・JoyData.dwButtons & 1
が0でなければ(押) …0001
Bボタン・・・JoyData.dwButtons & (1<<1)
が0でなければ(押) …0010
サンプル
・GameMain()の文字表示部分
//十字キー左右
if(JoyData.dwXposos <= 10000)
{
※「X軸 = 左」と表示
}else if(JoyData.dwXpos >= 50000)
{
※「X軸 = 右」と表示
}else
{
※「X軸 = 中央」と表示
}
//十字キー上下
if(JoyData.dwYpos <= 10000)
{
※「Y軸 = 上」と表示
}else if(JoyData.dwYpos >= 50000)
{
※「Y軸 = 下」と表示
}else
{
※「Y軸 = 中央」と表示
}
//Aボタン(ボタン0)
if(JoyData.dwButtons & 1)
{
※「A = 押」と表示
}else
{
※「A = 離」と表示
}
//Bボタン(ボタン1)
if(JoyData.dwButtons & (1<<1))
{
※「B = 押」と表示
}else
{
※「B = 離」と表示
}
ジョイスティックの使用
※「マイコンピュータ」→「コントロールパネル」→「ゲームコントローラ」で、
「2軸 2ボタンのジョイスティック」があるかどうか確認
無い場合は、追加しておく。
また各自で調整しておくこと。
1、ジョイスティックデータの取得
・winmm.libが必要なので、追加していない場合は
#pragma commentなどで追加しておく。
・joyGetPosEx関数で、
JOYINFOEX型の構造体の中に、データをうけとる。
●JOYINFOEX型構造体
主なメンバ
long dwSize ・・・構造体事態の大きさを代入しておく。
long dwFlags ・・・どんなデータを取得するか。
JOY_RETURNBUTTONS(ボタンのデータ)
JOY_RETURNX(十字キー左右)
JOY_RETURNY(十字キー上下)
の3つを「|」(OR)でつなげて指定。
long dwXpos ・・・十字キー左右のデータをうけとる。
long dwYpos ・・・十字キー上下のデータをうけとる。
long dwButtons ・・・ボタンのデータをうけとる。
例、
JOYINFOEX JoyData;
JoyData.dwSizeize = sizeof(JOYINFOEX)
JoyData.dwFlags = JOY_RETURNBUTTONS | JOY_RETURNX | JOY_RETURNY;
●joyGetPosEx関数
定義 : MMRESULT joyGetPosEx(ジョイスティックID,JOYINFOEX*);
引数 : ジョイスティックID・・・JOYSTICKID1 か
JOYSTICKID2 を使う。
今回は、JOYSTICKID1。
JOYINFOEX * ・・・・・データをうけとるJOYINFOEX構造体のアドレス
戻値 : MMRESULT ・・・・・・ JOYERR_NOERRORで成功。
例、
MMRESULT ret;
ret = joyGetPosEx(JOYSTICK1,&JoyData);
※JoyDataの中にジョイスティックのデータが入る。
ret == JOYERR_NOERRORなら成功
サンプル
・winmm.libを追加していない場合、
WinMain()にあるファイルに
#pragma comment(lib,”winmm.lib”)
を追加
・JOYINFOEX JoyData; を外部変数で宣言
GameCreate()など、ゲームの準備をする所で
JoyData.dwsize = sizeof(JOYINFOEX);
JoyData.dwFlags = JOY_RETURNBUTTONS | JOY_RETURNX | JOY_RETURNY;
を代入しておく。
・GameMain()で、
MMRESULT ret;
ret = joyGetPosEx(JOYSTICKID1,&JoyData);
を実行
JoyData.dwXpos,JoyData.dwYpos,JoyData.dwButtons
の3つを、wsprintf(),TextOut()で表示して確認。
メールキューが大量にたまった際に、特定のアドレスのメールを削除するコマンドを下記にメモします。
まずメールキューの確認
[root@testhost~]# mailq -Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient------- 41D33101C0DC 305 Thu Dec 23 00:39:22 sousinmoto@example.com sousinsaki@example.com A2388101C0DD 305 Thu Dec 23 00:40:37 ssousinmoto@example.com sousinsaki@example.com -- 1 Kbytes in 2 Requests.
※41D33101C0DCの部分がキューID
メールキューが多すぎる場合は、mailq > hogehoge.txt などして確認する。
対象のメールキューの削除は、
# postsuper -d キューID
全部のメールキュー削除は、
# postsuper -d ALL
★実際に特定の送信元メールアドレスのキューID削除
※注意!ちゃんと理解して使わないと危険!自己責任で触ってね
mailq | tail -n '+2' | grep -v '^ *(' | awk 'BEGIN { RS = "" } { if ( $7 == "sousinmoto@example.com" ) print $1 }'| tr -d '*!' | postsuper -d -
awkコマンドを利用するとすきなように文字列を扱えるので、色々な方法で特定のメールを指定することができます。