2019年1月26日土曜日

WD 外付けHDD 8TBの高温対策

2018.12のサイバーマンデーセールで、8TBを19,800円にて購入。
「WD HDD 外付けハードディスク 8TB
 Elements Desktop USB3.0 WDBBKG0080HBK-JESN」

内蔵HDDは「WD80EMAZ-00WJTA0」。

何ヶ月か使用してきて、アイドリング時の温度でも50度近辺になり。
CrystalDiskInfoで警告音が鳴るので、精神衛生上良くありませんでした。

そのため、外装を引っ剥がして温度の低減を図りました。

作業自体はマイナスドライバを差し込んで、ケースを外すだけですが。
内部基盤へドライバで傷を付けないように、気を付ける必要があります。

結果としては、外装を引っ剥がしで大正解でした。
温度はガッツリ下がって、40度位。
これなら普通に使用できそうです。


2018年10月8日月曜日

Radeon rx480でVCEEncを使って、H265で高速一括エンコード

Photo by Jakob Owens on Unsplash
どうでもいい動画だけど、消すのも勿体無いな、という動画が結構あったので。
どうにか圧縮出来ないかな?とGPUを使ったHWエンコードを以前から使っていた。

ただffmpegからの hevc_amfオプション指定だと、ビットレートが10MBに固定されているっぽい挙動だったので、VCEEncを試してみました。
結果としては、VBRかつ2048KBなどの低めのビットレートで、ちょっとノイズは乗るけどH265へ変換できました。
ソフトウェアでのエンコードよりは相当早いので、画質は妥協出来る動画で、サイズを小さくして取り回しを良くするには便利です。


rigayaの日記兼メモ帳 VCEEnc 3.06
使ったVCEEncは上のページよりダウンロードいたしました。

バッチ処理でドラッグされたファイルを一括変換出来るようにしたので、下記します。

REM ----------------------------------------------------------------
REM 動画一括変換 by Radeon GPU
REM ----------------------------------------------------------------

REM @ECHO OFF

set RUN_PATH=%~dp0
cd /d %RUN_PATH%

set FFMPEG="C:\APP\_動画処理\ffmpeg-4.0.2-win64-static\ffmpeg-4.0.2-win64-static\bin\ffmpeg.exe"
set VCEENC="C:\APP\_動画処理\VCEEnc_3.06\VCEEncC\x64\VCEEncC64.exe"

set OUTPUT=%RUN_PATH%


for %%f in (%*) do (
  echo %%f
  REM %FFMPEG% -i "%%f" -vcodec "hevc_amf" -vbr 4096k "%OUTPUT%%%~nf.mp4"
  %VCEENC% -i "%%f" --codec hevc --vbr 2048 --audio-copy 1 -o "%OUTPUT%%%~nf.mp4"
)

pause
REM shutdown /s /t 30

2018年9月17日月曜日

Fusion360をインストールしました!

趣味利用の範囲なら無料で使える、Fusion360をインストールしました。

wimax環境はチョット前に無くしているので、UQ mobileのテザリングでダウンロードしました。
 インストーラが12MB位で、その後のインストール時のダウンロードは大体600MB位に収まってる感じでした。
通信回線の容量が限られてる人でも、問題なくダウンロード出来ますね。

で、fsion360は現在、プロユースのUltimate版がありますが。
2018.10.8からラインナップが統合されて、Ultimate版の機能が使えるらしいです。

これで4軸、5軸でのCNC加工が、個人でも使える環境になりますね。
仕事で使ってる、百万超えの業務CADより凄い部分もわりとあります。

これからfusion360覚えて、色々設計してみたいです。



2018年9月16日日曜日

Xperia Z2 Tablet SO-05Fを12800円で購入

ちょっと前まで、初代Nexusタブレット『Nexus72012)』を使用していた。
ただ使えるようになるまで大分モタツイて、ネットを見るのでさえ面倒くさいレベルになっていた。

なので家族に譲ってしまっていたが、やっぱりスマホだと画面が小さすぎる。

ネットで情報を調べると、「snapdragon 801」世代のものは1万円前半で購入出来そう。
近所のゲオやブックオフを見て回ると、結構色々なタブレットが置いてある。
しかもネット価格とあまり差はないみたいだ。

てなことで、近所のブックオフで「Xperia Z2 Tablet SO-05F」を購入。
12800円でした。
AnTuTuベンチマークスコア」は「59748」で、価格性能費は悪くない。

検討していた、「ASUS ZenPad 8.0 Z380M」よりは、値段も安くついた。
タブレットは家で使うためか、状態もいい感じだ。

防水で、フルセグ対応、WUXGA:1920×1200、RAM 3GB。
ベンチのスコアも新品2~2.5万クラスの物よりは上なので、上々。

「snapdragon 801」はプロセスルールが28 nmなので、電力消費はどうかと思ったが、予想以上に電池持ちがいいので、問題ない。

ただDocomoの回線が無いと、OSのバージョンアップが出来ないので。
今度ドコモショップのwi-fiでアップデートを試してみる予定です。

以上

2018年9月15日土曜日

AVHD-AUT3.0が偶然5980円だったので購入

フラっと立ち寄ったハードオフで3TBのHDDを発見。
5980円だったので、価格.comで調べると、これの後継機が2万越えの価格の「AVHD-AUT3.0B」。
物自体は一個前の型番の「AVHD-AUT3.0」。

なんか不具合が有るかも?とチョット心配でしたが、安さに負けて購入。

帰ってからCrystalDiskInfoで調べると、中身は「WDC WD30EURX-14T0FY0」でした。
使用時間は結構行ってましたが、動作に問題はなさそう。
前のHDDから2TB位の移動に、20時間位かかりましたが。
前のディスクがヘッタってたので、データ移行にちょうど助かりました。

高信頼・静音ハードディスクなので、大変お買い得でした。
中古ですが、データロストしないように、長持ちして欲しいものです。

そろそろ内蔵HDDがヤバそうなので、そっちはSSDに換装してみたいこの頃です。

2012年2月1日水曜日

#JAVA - 文字列を元にシャーディングする際に便利なクラスを書いてみた

GAEでアクセス先をシャーディングする際に、IDなどから振り分けを行えるクラスを書いてみた。
入力文字列に基づいて指定したビット範囲の数値を返すので、それを利用してアクセス先を振り分けることが出来る。

使い方としては、以下の用に接頭語を付けてキーを作成する。

private static Key createShardKey(String inPrefix, String inKeyName) {
    int bitSize = 8;
    long hashNum = Digest.getHashNum(inKeyName, bitSize);
    String key = inPrefix + String.format("_%05x", hashNum);

    return Datastore.createKey(Hoge.class, key);
}

データの読み込みはキーの名前を文字列に格納し、クエリで取得する。

(ここでは検索用にキーとは別に文字列型のフィールドを用意していますが、キーに対して前方一致はが出来ればな良いのにな~、と思いました。
少しでも不要なインデックスを減らしたいので。)

Datastore.query(META)
            .filter(META.keyName.startsWith("Prefix"))
            .asList();


処理の内容としては、文字列をハッシュ変換し、その先頭から数値を取り出しています。
取り出す数値の範囲は出来るだけ偏りが無いように、ビットで指定します。
なので2, 4, 6, ...と2の倍数までの値となります。

package auction.service.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;


public class Digest {


    /**
     * 指定したビット範囲内のハッシュを取得
     *
     */
    public static long getHashNum(String str, int bit) {

        byte[] hash = digest(str);
        long num = 0;

        /* ハッシュ値の先頭8byteをLongへ変換 */
        for (int cnt_i = 0; cnt_i < 8; cnt_i++) {
            num = (num << 8) | (hash[cnt_i] & 0xff);
        }

        /* 指定ビットでマスク */
        long mask = getMask(bit);

        num = num & mask;

        return num;
    }

    /**
     * ハッシュ文字列を取得
     *
     */
    public static String getHash(String str) {

        byte[] hash = digest(str);

        return hexToString(hash);
    }


    /**
    * 文字列をハッシュ化した結果を表示
    *
    */
   public static void printDigest(String str) {

       byte[] hash = digest(str);

       System.out.println("文字列:" + str);
       System.out.println(hash.length);
       System.out.println(hexToString(hash));
   }

   /**
    * メッセージダイジェスト (固定長のハッシュ値) を取得
    *
    */
   private static byte[] digest( String inText ) {

       MessageDigest dig = null;

       try {
           dig = MessageDigest.getInstance("SHA-256");

       } catch (NoSuchAlgorithmException e) {
           e.printStackTrace();
           return null;
       }

       dig.update(inText.getBytes());

       return dig.digest();
   }

   /**
    * ビットマスクを取得
    *
    */
   private static long getMask(int bit) {

       long mask = 0L;

       for (int cnt_i = 0; cnt_i < bit; cnt_i++) {
           mask = (mask << 1) + 1L;
       }

       return mask;
   }

   /**
    * バイト列を文字列へ変換
    *
    */
    private static String hexToString(byte[] bin) {

        StringBuilder sb = new StringBuilder();
        int size = bin.length;

        for (int i = 0; i < size; i++) {
            String hex = String.format("%02x", bin[i]);

            sb.append(hex);
        }

        return sb.toString();
    }

}