Core i7-860で32GBのメモリを使う

結論からいうと、GA-P55A-UD3RとCore i7-860で、メモリ32GB(DDR3-1600 8GBx4)が動作しています。CPUのスペック表にも、マザーボードの仕様にも、上限は16GBと書いてありますが。

海外の掲示板や2chのログによると、認識したりしなかったり起動したりしなかったり、動きが怪しかったり、様々な事例があるようで、それこそ相性問題で、運が良ければ動くようです。

i7-860の発売は2009年で、マザーボードの最新BIOSも2011年で止まっており、まだそのころは DDR3 8GB DIMMなんてな出回ってなかったはずですので、CPUやマザーボードが設計された時点では8GB DIMMなんて想定されていなかったのかもしれません。

うちの場合、定格で動かすとmemtest86がエラーを出します。メモリがかなり熱くなっていたので、熱暴走だと思い、CPUとメモリの電圧を下げてみました。Vcoreの電圧を1.24Vから1.1Vへ、メモリの電圧を1.5Vから1.3Vへ変更すると安定して動作するようになりました。

bios

このような設定で、memtest86一週とprime95一時間の動作を確認しました。コアの温度は78℃前後で安定します。CPUの仕様によれば、T-CASE値が72.7℃とあるので、かなりやばい温度ではありますが、通常はprime95の様にCPUを酷使することはないと思いますし、それでも一時間の連続稼働の確認ができたので、普通の用途では大丈夫そうです。

hwmon

低電圧メモリというとDDR3Lですが、うちのはLがつかないDDR3なのに、なぜか1.3Vで動作しているようです。HW-MONITORが報告してくる電圧は、Vcoreが1.07V、メモリが1.34Vくらいなので、電源回路か測定回路、またはその両方で多少の誤差が出ている思われます。まあ、100分の1の位の電圧の誤差は仕方ないともいえます。ですが、DDR3なのにDDR3L並の低電圧で動作するとは、なかなかやります。

使用したメモリは、PatriotとCrucialです。

dimm

消費電力は、Windowsのアイドル時は90W、prime95実行中は160Wくらいでした。

カテゴリー: 未分類 | コメントをどうぞ

Raspberry Pi のカメラで撮影するプログラム

Raspberry Pi 公式カメラモジュールで撮影するには raspistill か raspivid いうコマンドを使うことになっていますが、どういうわけだか、自作アプリでプログラム的に画像を取り込む情報が非常に少なくて困ります。

USBカメラであれば、OpenCVを使ったプログラムで、比較的簡単に画像を取り込むことができます。筆者が作成したプログラムを参考にしてください。

これと同じ事を、公式カメラモジュールで行いたいというわけです。

その方法を紹介します。

※紹介するといっても、偉大なる先人の成果を紹介するだけですが。
参考:Raspberry Pi3でカメラモジュールをOpenCVで使う

前述の筆者が作成したプログラムは、C++とQtで使ったもので、これをコンパイルするには、 qt-sdk を初めとした開発環境をインストールしておきます。それに加え libopencv-dev も必要です。

apt-get install libv4l-dev qt-sdk libopencv-dev

libv4l-devにはbcm2835-v4l2というモジュールが含まれています。これをmodprobeコマンドで読み込むか、/etc/modulesに記述して再起動します。

モジュールが正しく読み込まれると、USBカメラ用に作成したOpenCVを使ったプログラムが、変更なしにそのまま実行できます。

カテゴリー: 未分類 | コメントをどうぞ

Windowsで日本語フォント名から英語フォント名を取得する方法

GDI+の機能を使用する。

#include <windows.h>
#include <gdiplus.h>
#include <stdio.h>

#pragma comment(lib, "gdiplus.lib")

int main(int ac, char **av)
{
    if (ac > 1) {
        Gdiplus::GdiplusStartupInput gdiplusStartupInput;
        ULONG_PTR gdiplusToken;
        Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, nullptr);
        WCHAR name[100];
        MultiByteToWideChar(CP_ACP, 0, av[1], strlen(av[1]), name, LF_FACESIZE);
        Gdiplus::FontFamily f(name);
        int r = f.GetFamilyName(name, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
        if (r == 0) {
            char tmp[100];
            WideCharToMultiByte(CP_ACP, 0, name, wcslen(name), tmp, sizeof(tmp), 0, 0);
            puts(tmp);
        }
    }
}

出典:http://ja.stackoverflow.com/questions/17741/

カテゴリー: 備忘録 | コメントをどうぞ

Xfce4で音量変更通知のポップアップがウザい件

LinuxとXfce4の組み合わせで使用しているとき、オーディオ出力のボリュームを変更すると、画面の右上にポップアップが表示されることがあります。

speaker

これが目障りな場合、xfce4-notifydというパッケージを削除します。

http://unix.stackexchange.com/questions/98525/how-to-remove-popup-window-when-changing-volume-in-xfce

これで解決しない場合、xfce4-volumedというのもちょっと怪しいので確認してみます。

http://xfce.10915.n7.nabble.com/How-to-disable-notification-popups-td43164.html

カテゴリー: 未分類 | コメントをどうぞ

X99-AにUSB2.0機器をつなぐとWindows7が起動しない問題

ASUSのマザーボードX99-AのUSB2.0ポートに何かつないでいると、Windows7の起動途中でフリーズすることがあります。

EHCI Legacy Support の設定を Disabled にすると、不具合が解消することがあります。

x99a

カテゴリー: 不具合対策, 備忘録 | コメントをどうぞ

Windows 10 のどこがダメか

http://dualsocketworld.blog134.fc2.com/blog-entry-453.html

Win10 では基本的には Windows Update に対する拒否権が無い
(Windows Update サービスを停止する事は出来ますが全ての更新が停止されます)

win10LZPUDs
※画像は上記サイトから拝借

「追加通知なくこのような種類の自動更新プログラムを受け取ることに同意するものとします」だって。こんなライセンス条項はお断りです。

下図はWindows 7です。

win7

ユーザーが選択することができました。

ユーザーの意思を尊重しないコンピューター。Windows 10 、もう、致命的にダメですね。

カテゴリー: 未分類 | コメントをどうぞ

Windowsで名前解決がおかしい問題

名前とIPアドレスのキャッシュにおかしな値が残っている場合があります。Windowsにはインターネットで使うDNSとWindowsネットワークで使うNetBIOS名があるので、両方のキャッシュをクリアする必要があるかもしれません。

DNSキャッシュをクリアする

C:\>ipconfig /flushdns

NetBIOS名キャッシュをクリアする

C:\>nbtstat -R

カテゴリー: 未分類 | コメントをどうぞ

QPlainTextEditでドラッグアンドドロップ編集を無効化する方法

マウスボタンが押されたら、基底クラスが処理するより前に、選択を解除します。

void MyPlainTextEdit::mousePressEvent(QMouseEvent *e)
{
    QTextCursor c = textCursor();
    c.setPosition(c.selectionEnd());
    setTextCursor(c);
    QPlainTextEdit::mousePressEvent(e);
}
カテゴリー: 未分類 | コメントをどうぞ

クラス内宣言時初期化のバグ

Visual Studio 2013 で以下のようなコードを実行すると、おかしな値が表示されます。

#include <stdio.h>

struct Hoge {
    struct {
        double value = 123;
    } data;
};

int main(int argc, char **argv)
{
    Hoge hoge;
    printf("%f\n", hoge.data.value);
    return 0;
}

構造体の中に無名構造体があって、その中で宣言時初期化を記述しています。

内側の構造体が、無名ではなく、名前を付けると、期待通りに動作します。

Visual Studio 2015 では修正されているようです。

 

カテゴリー: 未分類 | コメントをどうぞ

Qt5.6 static がコンパイルできない

Debian GNU/Linux 8 (jessie) で、Qt5.6 SDK(スタティックリンク版)を作ろうとしています。

最初にXCB関係のパッケージをインストールしておきます。

apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libx11-xcb-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-xinerama0-dev

qt-everywhere-opensource-src-5.6.0.tar.gz を展開してから、下記のようにconfigureします。

./configure -static -nomake examples -prefix /opt/Qt5.6.0-static

終わったらmakeします。同じ手順で、Qt5.5.1なら成功するのですが、Qt5.6.0だと次のようなエラーが出ます。

g++ -c -pipe -O2 -std=c++1y -fno-exceptions -Wall -W -D_REENTRANT -fPIC -DQT_NO_MTDEV -DQT_NO_LIBUDEV -DQT_NO_TSLIB -DQT_NO_LIBINPUT -DQT_NO_XKB -DQT_QML_DEBUG_NO_WARNING -DQT_USE_QSTRINGBUILDER -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. -I../../include -I../../include/QtQml -I/home/soramimi/a/qt-everywhere-opensource-src-5.6.0/qtbase/include -I/home/soramimi/a/qt-everywhere-opensource-src-5.6.0/qtbase/include/QtNetwork -I/home/soramimi/a/qt-everywhere-opensource-src-5.6.0/qtbase/include/QtCore/5.6.0 -I/home/soramimi/a/qt-everywhere-opensource-src-5.6.0/qtbase/include/QtCore/5.6.0/QtCore -I/home/soramimi/a/qt-everywhere-opensource-src-5.6.0/qtbase/include/QtWidgets -I/home/soramimi/a/qt-everywhere-opensource-src-5.6.0/qtbase/include/QtGui -I/home/soramimi/a/qt-everywhere-opensource-src-5.6.0/qtbase/include/QtCore -I.moc -I/home/soramimi/a/qt-everywhere-opensource-src-5.6.0/qtbase/mkspecs/linux-g++ -o .obj/moc_conf.o .moc/moc_conf.cpp
g++ -Wl,--gc-sections -Wl,-O1 -fuse-ld=gold -Wl,--enable-new-dtags -o ../../bin/qml .obj/main.o .obj/qml_qml_plugin_import.o .obj/qml_plugin_import.o .obj/qrc_qml.o .obj/moc_conf.o   -L/home/soramimi/a/qt-everywhere-opensource-src-5.6.0/qtdeclarative/lib -L/home/soramimi/a/qt-everywhere-opensource-src-5.6.0/qtbase/lib -lQt5Widgets -L/home/soramimi/a/qt-everywhere-opensource-src-5.6.0/qtdeclarative/plugins/qmltooling -lqmldbg_debugger -lqmldbg_local -lqmldbg_native -lqmldbg_profiler -lqmldbg_server -lqmldbg_tcp -lQt5Qml -L/home/soramimi/a/qt-everywhere-opensource-src-5.6.0/qtbase/plugins/bearer -lqconnmanbearer -lqgenericbearer -lqnmbearer -lQt5Network -L/home/soramimi/a/qt-everywhere-opensource-src-5.6.0/qtbase/plugins/platforms -lqxcb -lQt5XcbQpa -lX11 -lX11-xcb -lXi -lxcb-render-util -lxcb-render -lxcb -lxcb-image -lxcb-icccm -lxcb-sync -lxcb-xfixes -lxcb-shm -lxcb-randr -lxcb-shape -lxcb-keysyms -lxcb-xinerama -lQt5PlatformSupport -lfontconfig -lfreetype -lQt5DBus -L/home/soramimi/a/qt-everywhere-opensource-src-5.6.0/qtimageformats/plugins/imageformats -lqdds -lqicns -lqtga -lqtiff -lqwbmp -lqwebp -L/home/soramimi/a/qt-everywhere-opensource-src-5.6.0/qtbase/plugins/imageformats -lqico -lQt5Gui -lpng -lqtharfbuzzng -lQt5Core -lz -lqtpcre -lm -ldl -lrt -lpthread
/home/soramimi/a/qt-everywhere-opensource-src-5.6.0/qtdeclarative/lib/libQt5Qml.a(qqmldebugconnector.o):qqmldebugconnector.cpp:function _GLOBAL__sub_I_qqmldebugconnector.cpp: error: undefined reference to 'qt_static_plugin_QQmlInspectorServiceFactory()'
collect2: error: ld returned 1 exit status
Makefile:93: recipe for target '../../bin/qml' failed
make[3]: *** [../../bin/qml] Error 1
make[3]: Leaving directory '/home/soramimi/a/qt-everywhere-opensource-src-5.6.0/qtdeclarative/tools/qml'
Makefile:96: recipe for target 'sub-qml-make_first' failed
make[2]: *** [sub-qml-make_first] Error 2
make[2]: Leaving directory '/home/soramimi/a/qt-everywhere-opensource-src-5.6.0/qtdeclarative/tools'
Makefile:70: recipe for target 'sub-tools-make_first' failed
make[1]: *** [sub-tools-make_first] Error 2
make[1]: Leaving directory '/home/soramimi/a/qt-everywhere-opensource-src-5.6.0/qtdeclarative'
Makefile:324: recipe for target 'module-qtdeclarative-make_first' failed
make: *** [module-qtdeclarative-make_first] Error 2

qqmldebugconnector.cpp が参照している qt_static_plugin_QQmlInspectorServiceFactory() が定義されていない、ということのようですが、この対策方法はあるでしょうか?

カテゴリー: 未分類 | 3件のコメント