wrongwrongな開発日記

情報系大学生が挑戦したことや日常を書いていきます

リンクスサポートセンターへの、Corsair製各種DDR4メモリーのヒートシンク高に関する問い合わせ

リンクス様のサポートセンターへ、Corsair製各種DDR4メモリーヒートシンク高に関して問い合わせを行いました。

問い合わせ内容の公開に関しては許可を頂いたため、記事として残します。

リンクス様、回答、並びに内容の公開をご承諾頂き、誠にありがとうございます。

頂いた情報に関しては、別記事に追記を行っています。

wrongwrong163377.hatenablog.com

wrongwrong163377.hatenablog.com

回答内容

以下、回答の内容です。

実測値にて最も高い部分でおおよそ

Dominator Platinum 55mm
Vengeance LED 49mm
Vengeance RGB 49mm
Vengeance LPX 34mm

となってります。ソースとしては
「代理店による実測値」
程度の記載でお願い致します。

Vengeance LPXは上部に突起がいくつもあり、また平らでなく外側にいくほど少し低くなっています。
もっとも高い部分を計測すると34mmですが、計測する箇所によって数字はばらつくと思われます。

各社で公開している数字につきましても、ヒートシンクがでこぼこしている場合、
もっとも高い部分を計っていない可能性もあり、また、ヒートシンク取り付け時の
わずかなズレ等もありますので、数字はあくまで目安であると考えます。

よろしくお願い致します。

 

累計1,000アクセス達成!

3月にブログを始めてからの累計アクセスが1,000を超えました!

f:id:wrongwrongwrongwrong163377:20170803190454p:plain

まずは安定して1日20アクセス位稼ぐのを目標に頑張っていきたいと思います。

MSI Fan Day開催記念企画、MSI Dragon-G Mini Seriesフィギュア、当たりました!

こちらのキャンペーンに応募していましたが、まさかの当選!開封しました!

何が届くか知らないまま待ってましたが、思ってたより大きな箱……。

f:id:wrongwrongwrongwrong163377:20170801132805j:plain

お?

f:id:wrongwrongwrongwrong163377:20170801132934j:plain

おおーっ!

f:id:wrongwrongwrongwrong163377:20170801132814j:plain

すごい!かっこいい!

f:id:wrongwrongwrongwrong163377:20170801132811j:plain

このページのドラゴンのフィギュア4種類でした!エフェクト付き!

jp.msi.com

なんかもう、かっこよすぎて中身取り出せなかったです^^;

MSI Dragon-G Mini Seriesというそうです。というかコレ、国内では手に入らないやつですよね。

しばらく自分だけで愛でたら、研究室に持っていって守護龍になってもらう予定です。

 MSIさん!本当にありがとうございました、こっちもワクワクしながら待ってます!

Androidで、JavaのActivityからc++のNativeActivityを呼び出す

Androidでは、c++のみで書かれるNativeActivityがあります。
github.com
これは通常のActivityと同じように、別のActivityから遷移させることが可能です。
今回は、この遷移についてやった内容を記事にしました。

サンプルプロジェクト

上のGoogleのサンプルのnative-activityサンプルを利用し、タッチイベントでNativeActivityに遷移を行うサンプルプロジェクトをGitHubに上げました。
github.com
これについて解説を行います。

プロジェクト作成

Include C++ supportにチェックを付けてプロジェクトを開始します。
NDKのインストールなどは、メッセージに従ってやって下さい。

NativeActivityを動かすための準備

今回は、先程貼ったGoogleのサンプルコードを、遷移先で動かそうと思います。
そのための準備を行っていきます。

main.cpp

Include C++ supportで自動生成されるnative-lib.cppは使わないので消します。
次に、プロジェクトのapp/src/main/cppフォルダに、サンプルプロジェクトのandroid-ndk/native-activity/app/src/main/cpp/main.cppを置きます。

CMakeLists.txtの編集

app/CMakeLists.txtの内容を、以下で置き換えます。

cmake_minimum_required(VERSION 3.4.1)

# build native_app_glue as a static lib
set(${CMAKE_C_FLAGS}, "${CMAKE_C_FLAGS}")
add_library(native_app_glue STATIC
    ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c)

# now build app's shared lib
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -Wall -Werror")

# Export ANativeActivity_onCreate(),
# Refer to: https://github.com/android-ndk/ndk/issues/381.
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -u ANativeActivity_onCreate")

add_library( native-activity SHARED src/main/cpp/main.cpp )

target_include_directories(native-activity PRIVATE ${ANDROID_NDK}/sources/android/native_app_glue)

find_library( log-lib log )

target_link_libraries( native-activity
                       android
                       native_app_glue
                       EGL
                       GLESv1_CM
                       ${log-lib} )

大概がサンプルからのコピペで、ソースのパス位しか変えていません。
注意点としては、ビルド後のコードはnative-activityとなっている点でしょうか。
後述するAndroidManifest.xmlと、MainActivityでのloadLibraryでは、この名前を指定します。

build.gradleの編集

app/build.gradleのexternNativeBuild内、cmakeの項目に、abiFiltersとargumentsの追記を行い、以下のようにします。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    defaultConfig {
        applicationId "com.wrongrong.changetonativeactivitysample"
        minSdkVersion 9
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
            cmake {
                abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips', 'mips64'
                arguments '-DANDROID_PLATFORM=android-9',
                        '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=gnustl_static'
            }
        }
    }
︙

自動生成されるcmakeの項目にはcmakeのフラグについて記述(c++11を指定した場合、c++11に関する記述)がありますが、これは先程CMakeLists.txt内に記載を行ったので、消してしまって構いません。

AndroidManifest.xmlの編集

AndroidManifest.xmlの、application部に、activityに関して追記を行い、以下のようにします。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.wrongrong.changetonativeactivitysample">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- Our activity is the built-in NativeActivity framework class.
     This will take care of integrating with our NDK code. -->
        <activity android:name="android.app.NativeActivity"
            android:label="@string/app_name"
            android:configChanges="orientation|keyboardHidden">
            <!-- Tell NativeActivity the name of our .so -->
            <meta-data android:name="android.app.lib_name"
                android:value="native-activity" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
MainActivity.java

ここまで行った変更に合わせ、MainActivity.javaの内容を変更します。

public class MainActivity extends AppCompatActivity {
    static {
        System.loadLibrary("native-activity");
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView tv = (TextView) findViewById(R.id.sample_text);
    }

    //タップイベントで、nativeactivityに遷移する
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        Intent intent[] = new Intent[1];
        intent[0] = new Intent(MainActivity.this, NativeActivity.class);
        startActivities(intent);

        return true;
    }
}

ここまで紹介した手順によって、NativeActivityに遷移することができます。

アクティビティの遷移は、以下のサイトを参考にさせていただきました。
akira-watson.com

終わりに

今回はNativeActivityへの遷移まで実践しました。
このような場合のActivity間のデータのやり取りはどのようにするのかはまだ検証していないので、検証したらいつか記事にするかもしれません。

javaで、if文と%(剰余)のどちらが速いかを少しだけ比較

以前c++で実験してみたif文と%(剰余)の比較をjavaでもやってみました。
wrongwrong163377.hatenablog.com

実行環境

実行環境は以下の通りです。

OS Windows10 Pro
CPU Core i7 6700
MEM DDR4 2133CL13 8GBx2
JDK 1.8.0_131

実行したコード

プロジェクト全体はGitHubに上げました。
github.com

public class Main {
    public static int MAX = 1000000000;

    public static int If(){
        int i = 0;
        int j = 0;

        long start = System.nanoTime();
        while(i < MAX) {
            if((j+=1) == 100) j = 0;
            i++;
        }
        long end = System.nanoTime();

        System.out.println("If  Time:" + (end - start) / 1000000f + "ms");

        return i + j;
    }

    public static int Mod(){
        int i = 0;
        int j = 0;

        long start = System.nanoTime();
        while(i < MAX){
            j = (j+1)%100;
            i++;
        }
        long end = System.nanoTime();

        System.out.println("Mod Time:" + (end - start) / 1000000f + "ms");

        return i + j;
    }

    public static void main(String[] args) {
        int Ifres = If();
        int Modres = Mod();

        System.out.println("If :" + Ifres + "\nMod:" + Modres);
    }
}

実行結果

実行結果は以下の通りです。
10回ほど実行して最速だったものを選びました。

Mod If
3383[ms] 249[ms]

感想

前回の結果からどちらが速いかという結果については予想できていましたが、c++に比べてjavaのifの結果が滅茶苦茶速いですね。
何回やっても結果はかなり安定していたので、計測ミスではないと思います。
Modに関しても、言うほど遅くはありません。
こうなってくると、以前やったAndroid上でのc++javaの速度比較の結果が何だったのか気になります。
wrongwrong163377.hatenablog.com
気になるけど検証する時間が……。

参考にしたサイト

時間計測はこちらのサイトを参考にさせて頂きました。
qiita.com

Thermaltake Tt eSports VENTUS Z MO-VEZ-WDLOBK-01 リフトオフディスタンス(LOD)を少しだけ検証

wrongwrong163377.hatenablog.com

Thermaltake Tt eSports VENTUS Z MO-VEZ-WDLOBK-01のリフトオフディスタンス(LOD)について少しだけ検証してみました。

計測方法

計測は、ARTISAN 飛燕 Value Edition M ジャパンブラック HI-VE-JB-Mの上で、10円玉(厚さ1.5mm程度)を重ねた上にマウスを置いて行います。

ARTISAN 飛燕 Value Edition M ジャパンブラック HI-VE-JB-M

ARTISAN 飛燕 Value Edition M ジャパンブラック HI-VE-JB-M

 

また、設定項目としてリフトオフコントロールがあったので、これについても検証します。

f:id:wrongwrongwrongwrong163377:20170714232511p:plain

計測結果

上のデフォルトの状態では、10円玉1枚でも反応しない=LOD1.5mm以下でした。

ここから一目盛右の「高」側に設定したところ、ギリギリ反応するかしないかというような反応を見せました。

反対に「低」側に寄せた所、やはり反応しなかったので、LOD1.5mm以下で動かせると見て間違い無いでしょう。

Thermaltake Tt eSports VENTUS Z MO-VEZ-WDLOBK-01 買ってすぐレビュー

Thermaltake Tt eSports VENTUS Zを購入したので、(酷い)写真付きでレビューしたいと思います。

www.ttesports.com

とても持ちやすく使いやすい印象を持っています。

 目次

 外観

パッケージの外観はこんな感じでした。

意外と小さな印象です。

f:id:wrongwrongwrongwrong163377:20170714214512j:plain

内容はマウスと説明書とステッカーでした。

f:id:wrongwrongwrongwrong163377:20170714214506j:plain

USBの端子にはThermaltakeのロゴが刻印されています。 

f:id:wrongwrongwrongwrong163377:20170714214529j:plain

 重りは4.5gx3個が、マウスに装備された状態で同封されていました。

f:id:wrongwrongwrongwrong163377:20170714224529j:plain

持った感じ

持った感じは、「軽くてコンパクト」でした。

また、自分の自然な持ち方では、とても持ちやすく感じました。

f:id:wrongwrongwrongwrong163377:20170714225649j:plain

手は大きくない方だと思いますが、十分持ちやすかったです。

ボタン配置に関しても、押し辛そうなボタンは無く、誤爆しそうに感じたのは左上の2ボタンについてのみで、押し間違いはそこまで気にせずに済みそうかなと感じました。

とりあえず第一印象はここまでとして、これ以上の感想は使い込んでからしようと思います。

ドライバからの設定

ドライバのインストー

ここで一度コケました。

公式サイトからインストールファイルを落としてこなければならないのですが、このリンクがわかりにくいです。

正しいリンクは↓の、通り、COMMAND CENTERのようです。

 TT ESPORTS COMMAND CENTER V2.0000 2017/03/09 GAMING SOFTWARE V2.0

ちなみに一番上のTT ESPORTS PLUS+は、インストールするとMSのIMEが英語入力のみ&キーボードを英字キーとして認識するというトラブルを起こした上、内容はドライバではなく意味の分からないゲーム的な何かでした。(これを期にGoogle IMEユーザーになったよ!)

正しいリンクから落とした.rarファイルを解凍し、実行(セキュリティーソフトで止められる場合がありますが、そのままインストール)して下さい。

起動後は、すぐにマウスのファームウェアアップデートの通知が来るかと思います。

設定画面トップ

機能性は十分ですが、とりあえず日本語翻訳はゴミです。

また注意点として、表示されている画像にはライトオプション(イルミネーション)の設定が反映されません。

デフォルトでは以下のように設定されています。

f:id:wrongwrongwrongwrong163377:20170714231001p:plain

センサー設定

センサー設定はパフォーマンスの項目から行います。

f:id:wrongwrongwrongwrong163377:20170714232511p:plain

軸別の解像度や、XY軸の回転、リフトオフディスタンス、ポーリングレートなど、基本的な機能の設定がすべて揃っていました。

また、この項目はプロファイル毎に設定可能です。

キー設定

左右クリックやスクロールクリック含めすべてのキーのカスタマイズが可能です。

f:id:wrongwrongwrongwrong163377:20170714231350p:plain

設定の翻訳がちょっとアレなので、分かりにくそうな部分を書きます。

  • Tキー:予め設定しておいたマクロを割り当て
  • シングルキー机能:マウスのクリックや、音量調整、キーボードの矢印キーや、コピー&ペーストなどの機能
  • プログラム起動:外部プログラムの呼び出し
  • 失効:ボタンの無効化

正直この部分は、項目内にも翻訳がおかしいのか何なのか気になる項目がありますが、この辺りを把握していれば基本的な設定は全部できます。

ただ、シングルキー機能の中でコンボキーの設定が見つけられなかったので、自分はマクロとしてコンボキーを登録し、割り当てました。

マクロ設定

マクロ設定には興味が無いので画像だけとします。

ここではNewMacroという名前でCtrl+fを設定しています。

f:id:wrongwrongwrongwrong163377:20170714233542p:plain

イルミネーション設定

イルミネーションは。ライトオプションから設定します。

こちらも興味が無いので画像のみとします。

f:id:wrongwrongwrongwrong163377:20170714233430p:plain

その他

OSD表示に対応しており、プロファイル切り替えなど、様々な場面で画面に表示が行われます。

起動時のプログラム自動起動や、OSDの有効/無効化は、デスクトップ右下のプログラム一覧に表示されるアイコンを右クリックすると設定できます。

CPU使用率が何だか高いので、基本的な設定が済んだら切っておくのが良いと思います。

f:id:wrongwrongwrongwrong163377:20170801173402p:plain

別記事

別記事で検証した内容を記載します。

リフトオフディスタンスについて

wrongwrong163377.hatenablog.com

第一印象まとめ

買ってからすぐのレビューなので、使っていくうちに印象が変わるかもしれませんが、第一印象は非常に良いものでした。

個人的には、軽量さ、持ちやすくて誤爆し辛い形状、多彩な設定項目と機能の3点が非常に気に入りました。

この辺りに常に不満を抱えながらマウスを利用していたので、買って大正解という印象です。