昔の最近の出来事(2016.11)

2016/11/30

早くも無く遅くも無く。

ちょろり調べ事。

2016/11/29

早くも無く遅くも無く。

Wings3Dの開発版 2.1.3が 出ているのに気づいたり。いつもの如く 64bit版で1500万ポリゴンのAsianDragon(WavefrontOBJファイル)を インポートしてみるのですが、Windowsがハング。ダメか。 でも、アイコンが描き変えられていたり、ウインドウのタイリングが やり易くなってたり、細かい所の改良が加えられているようです。

2016/11/28

早くも無く遅くも無く。

ちょろり調べ事。

2016/11/27

AM中に起床。

洗濯したり掃除したり。

攻殻機動隊で、清掃員が嘘の記憶を刷り込まれるって話がありますが、 そういやゴミ収集作業自体はアンドロイドではなく人が行っているのに 理由あったっけ?と読み直してみたり。特に理由は無さげな模様。

ちょろりコーディング。

「舟を編む」のアニメを大分遅れて録画視聴してますが、 作中にブラウン管TVが出てきて あれ?そういう時代設定なんだっけ? と思ったり。Wikipedia によると映画では1995年という設定らしい。原作やアニメでの設定は よく判りませんが、先のブラウン管TVから察するとそれくらいの 設定なのかな?と思ったりも。

カンナダ文字 という文字を知ったり。言語から知ったのではなく顔文字から知ったのですが(^^; で、こんな感じってのを示したかったのですが、今の日記HTMLファイルを UTF-8にすると半角罫線でレンダリングされて表示が死ぬので画像に屈してみたり。 因みにSAI2の20161119-64bit-jaの文字レンダリング機能で作成してみました。

カンナダ顔文字

訝しげな表情限定ですが。因みに「Nirmala UI」というフォントはWindows8以降 で標準インストールされているようです。以前 Emacsのview-hello-fileを表示するのに、特にフォントのインストールはしなくて 大丈夫な区画だったと記憶しています。

2016/11/26

起きたら午後もいい時間。寝過ぎ。

そういや以前知った 「Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo.」 という英語の文言。今のGoogle翻訳だとどうなる?と思って試してみたり。 以下結果。

Translate from English to Japanese:

Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo.

Buffalo buffaloバッファローバッファローバッファローバッファローバッファ
ローバッファロー。

まぁ、こういう感じなのでしょう。最初、全て小文字で入れてみたのですが、 その結果は以下。

Translate from English to Japanese:

buffalo buffalo buffalo buffalo buffalo buffalo buffalo buffalo.

バッファローバッファローバッファローバッファローバッファローバッファロー
バッファローバッファローバッファローバッファローバッファローバッファロー
バッファローバッファローバッファローバッファロー。

何故か二倍になってます(^^;

気づくと本棚の容量が埋まりつつあったり。物置き棚になっている段を整理 して容積を空ける必要が出てきたかも。1段稼げればコミック本で70冊は入る のでもうしばらくは大丈夫な気も。

2016/11/25

遅めに帰着。

MinGWのクロスgdcだとファイル読み込みが遅い?件。 どうも調べてみると読み込みではなく書き込みが遅いっぽい。 csvフォーマットの読み込みテストで、

    string line ;
    while( (line=infile.readln()) !is null ){
      auto flist = split( chomp(line), sep) ;
      foreach( f ; flist ){
        write( f ~ ":" ) ;
      }
      write("\n");
    }

てな感じにしていたのを、

    string line ;
    while( (line=infile.readln()) !is null ){
      auto flist = split( chomp(line), sep) ;
      string oline="" ;
      foreach( f ; flist ){
        oline ~= f ~ ":" ;
      }
      write( oline ~ "\n" ) ;
    }

てな感じにしてみたところ、7倍くらい高速になりました。 とは言え、Fedoraでは上のコードでも特に遅いという事はなく、 MinGWの write()が何かしらの理由で特に遅いという感じのようです。

ただ、VMware上のFedoraで動かすより圧倒的に遅いです。 perlのコードをCygwinで試してみると、

$ time ./csv_test.pl testdata1000000.csv > /dev/null

real    1m27.046s
user    1m26.030s
sys 0m0.686s

てな感じで、2.5倍かかります。VMwareはWindows上で動いている訳 なので、Windowsネイティブだと同等かそれ以上の速度で動くのを期待 するところなのですが、どうにかならないものかと思います。

2016/11/24

早くも無く遅くも無く。

ちょろり調べ事。

2016/11/23

起きたら午後もいい時間。寝過ぎ。

csvフォーマットのファイルを読み込むコードをperlで書いてみたの ですが、D言語で同じものを書くと速くなるのか?というのを試して ました。結果は微妙(^^;

D言語とperlはそれぞれ以下のような感じ。','区切りの行を読み込んで splitで配列にバラしたあと、繋いでSTDOUTに出力するという、 ベンチマーク目的の役に立たないコードです。

$ cat csv_test.d            #D言語コード
import std.stdio;
import std.string;
import std.regex;

int main(string[] args)
{

  if( args.length==1 ) args ~= "-" ;

  auto sep = regex(",") ;
  foreach( fname ; args[1..$] ){
    File infile ;
    if( fname != "-" ){
      infile = File(fname) ;
    }else{
      infile = stdin ;
    }

    string line ;
    while( (line=infile.readln()) !is null ){
      auto flist = split( chomp(line), sep) ;
      foreach( f ; flist ){
        write( f ~ ":" ) ;
      }
      write("\n");
    }
  }

  return(0) ;
}

$ cat csv_test.pl           #perlコード
#!/bin/perl

use strict;

if( $#ARGV<0 ){
    push(@ARGV,"-") ;
}

foreach my $fname (@ARGV){
    open(INFILE, $fname);
    while(<INFILE>){
        chomp;
        my @flist = split(/,/,$_) ;
        foreach my $f (@flist){
            print "$f",':' ;
        }
        print "\n" ;
    }
    close(INFILE) ;
}

テストデータは以下のような感じで生成したものを使用してみました。

gawk 'BEGIN{l="";for(i=0;i<200;i++){l=sprintf("%s%d,",l,i);}for(i=0;i<1000000;i++){printf("%d,%s\n",i,l);}}' > testdata1000000.csv

D言語コードのコンパイルには野良ビルドした以下のgdcを使用。

$ gdc -v
Using built-in specs.
COLLECT_GCC=gdc
COLLECT_LTO_WRAPPER=/usr/local/gdc_2068_620/libexec/gcc/x86_64-pc-linux-gnu/6.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-6.2.0/configure --with-pkgversion='gdc-6 521be11f82(DMD2.068)' --enable-languages=c,c++,d --prefix=/usr/local/gdc_2068_620 --disable-bootstrap --disable-nls --with-bugurl=http://bugzilla.gdcproject.org --enable-checking=yes --disable-libgomp --disable-libmudflap --disable-libsanitizer
Thread model: posix
gcc version 6.2.0 (gdc-6 521be11f82(DMD2.068))

そして結果。

$ gdc -O2 csv_test.d -o csv_test_nofrelease

$ gdc -O2 -frelease csv_test.d -o csv_test_frelease

$ time ./csv_test.pl testdata1000000.csv >/dev/null

real    0m39.621s
user    0m38.532s
sys     0m0.191s

$ time ./csv_test_nofrelease testdata1000000.csv >/dev/null

real    0m39.746s
user    0m38.732s
sys     0m0.320s

$ time ./csv_test_frelease testdata1000000.csv >/dev/null

real    0m34.256s
user    0m33.424s
sys     0m0.256s

D言語版は -freleaseを付けないとギリギリ負けてます(^^; -freleaseを付けて どうにか1割ほど速いという感じ。D言語での速度には少々ガッカリ な所はあるのですが、perlが思ったよりも遅くないのには 改めて感心したりも。同等の記述が可能なプログラム言語で1桁以上高速に 処理できるようなものってあるのかしら?

javaでも書いてみました。コードは以下のような感じ。

$ cat csv_test.java
import java.io.*;

class CsvTest {
    public static void main( String[] args ) {
        for( String fname : args ){
            try{
                BufferedReader infile
                    = new BufferedReader( new FileReader( fname ) );
                String line;
                while( (line = infile.readLine()) != null ) {
                    String flist[] = line.split( "," );
                    for( String f : flist){
                        System.out.print( f + ":" ) ;
                    }
                    System.out.print("\n") ;
                }
                infile.close() ;
            } catch( IOException e )  {
                System.out.println( "in/out error" );
            }
        }
    }
}

javacのバージョンやら実行結果は以下。

$ javac -version
javac 1.8.0_111

$ java -version
openjdk version "1.8.0_111"
OpenJDK Runtime Environment (build 1.8.0_111-b16)
OpenJDK 64-Bit Server VM (build 25.111-b16, mixed mode)

$ javac csv_test.java

$ time java CsvTest testdata1000000.csv > /dev/null

real    1m33.623s
user    1m6.838s
sys     0m25.528s

速くはない模様。てか、sys時間が多すぎる気が。

当初このテストはMinGWのクロスgdcとCygwinのperlで行っていたのですが、 どちらも妙に遅かったので、ファイルシステムの問題か?と思ってFedoraで 試した次第です。で、MinGWクロスの方で改めて試したのですが、 なんかファイルの読み込みが遅すぎる気がしたりも。

2016/11/22

早くも無く遅くも無く。今朝は津波警報の報道しかしてなくて何がなんだかでした。

そういやFedora24にしてからgdcのビルドを行っていなかったのですが、 行ってみたら何故かconfigureが通らなくなっていたり。 gccとglibcのインストールが何やらうまくいってないようだったのですが、 それでも何故かダメで、最後にi686向けのlibstdc++を入れ直してやっと 通るようになったり。てか、g++がインストールされている時点でlibstdc++ も入るんじゃないのか?と思ったのですが違うみたい。

ひとまず実績のあるバージョンでgdcのビルドに成功。

2016/11/21

早くも無く遅くも無く。

ちょろり調べ事。納得いかない結果に。

2016/11/20

AM中に起床。

掃除したり洗濯したり。

先日知ったD言語でのソートの仕方を使って、練習も兼ねて試しにcoreutilsの sortコマンドっぽいものを作ってみたのですが、出来上がったものの結果とcoreutilsの sortの結果とを比べると何やら違いがあったり。よく見てみると coreutilsのsortって大文字小文字を区別していないようで、あれ?そうだっけ? と思ったり。

$ (echo "bbb" ; echo "AAA" ; echo "aaa" ) | sort
aaa
AAA
bbb

$ (echo "bbb" ; echo "AAA" ; echo "aaa" ) | sort -f
aaa
AAA
bbb

$ sort --version
sort (GNU coreutils) 8.25
パッケージ作成者: Cygwin (8.25-3)
Copyright (C) 2016 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

作者 Mike Haertel および Paul Eggert。

$ (echo "bbb" ; echo "AAA" ; echo "aaa" ) | ./a.exe  #D言語で作成したsortっぽいもの. 大文字小文字は区別する
AAA
aaa
bbb

「sort -f」で大文字小文字を区別しないというスイッチがあるのですが、 スイッチ有無に結果が左右されていない気が。もしかしてCygwinのsortコマンドが バグってる?それともそういう仕様?

Fedora24でも確認してみました。

$ (echo "bbb" ; echo "AAA" ; echo "aaa" ) | sort
AAA
aaa
bbb

$ (echo "bbb" ; echo "AAA" ; echo "aaa" ) | sort -f
AAA
aaa
bbb

$ sort --version
sort (GNU coreutils) 8.25
Copyright (C) 2016 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

作者 Mike Haertel および Paul Eggert。

あれぇ?Cygwinのsortと結果が違います。でも-fが効いていないのはCygwinのsortと 同じです。coreutilsのバージョンはほんのちょっと違うようですがベースは8.25で 同じなのに。どゆこと?

2016/11/19

昼前起床。寝過ぎ。

そういえば、TVの生中継で ラグ(レイテンシの遅延)の為にスタジオと中継先とで会話が ぶつかったり、会話に隙間が生じたりする場合があります。 例えば 音と映像が向こう側に届くのに3秒かかるとすれば、会話の間に3秒の隙間が 生じるのは、まぁ仕方の無い事かもしれません。 で、テレビ東京の WBS(ワールドビジネスサテライト)を見ていると、海外のスタジオと 中継会話する場合があるのですが、ほぼラグが無く普通に会話できているのに驚きます。 専用回線だからか?と思ったりも。

先日観たNスぺの中でしていた「CGでやる」という言い方。 どうやらキャラクター含めて全編3DCGで制作する事を「CGでやる」と言い、 2D含めてデジタル化する事は「デジタルで....」と使い分けているなぁ?と 思ったり。

Web巡回していて見つけた動画 ( 【爆笑】ネットで買った商品と服の理想と現実の違いがおもしろすぎ 通販の失敗写真比較が面白いwww 【違い過ぎだろwww】)。 大分詐欺まがいなのもあるのだなぁと思ったりも。

D言語で構造体配列の、とあるメンバー変数をソートキーにしてソートを 行いたいと思ったのですが、イマイチ方法がよく判らなかったり。 opCmp()というメンバー関数を定義しておけば、C言語のqsort()の 様にソート関数を指定できるというイメージだと思われるのですが、 何故か説明が雑で且つコードの例もありません。実際にopCmp() を定義してコンパイル&実行すると

object.Error@(0): TypeInfo.compare is not implemented
----------------
0x71016550 in StackWalk64
0x70f4cbf0 in SymGetOptions
0x70f4c7e0 in SymSetOptions
0x71003d20 in SymFunctionTableAccess64
0x71003fb0 in SymGetLineFromAddr64
0x710041f0 in SymGetModuleBase64
0x71004290 in SymGetModuleInfo64
0x71004cf0 in SymGetSymFromAddr64

のようなメッセージが出たので、opCmp()をcompare()に名前を変えてみても 今度は実行している気配がありません。

     1  import std.stdio;
     2  import std.string ;
     3
     4  struct lineinfo {
     5    string str ;
     6    int n ;
     7
     8    int compare(ref const lineinfo li){
     9      writef("li.n=%d this.n=%d\n",li.n,this.n) ;
    10      return(this.n - li.n) ;
    11    }
    12  } ;
    13
    14  int main()
    15  {
    16    lineinfo[3] li = [ {str:"bbb",n:2}, {str:"aaa",n:3}, {str:"ccc",n:1} ] ;
    17
    18    writef("%s\n",li) ;
    19
    20    li.sort ;
    21
    22    writef("%s\n",li) ;
    23
    24    return(0) ;
    25  }

$ i686-pc-mingw32-gdc -O2 key_sort.d

$ ./a.exe
[lineinfo("bbb", 2), lineinfo("aaa", 3), lineinfo("ccc", 1)]
[lineinfo("bbb", 2), lineinfo("aaa", 3), lineinfo("ccc", 1)]

int型の配列をソートする例はそこらじゅうに書かれているのですが、 単純なint型配列のソートを実用で使う事なんて皆無だと思います。

もう少しよく調べてみると、std.algorithm.sortingを使えば良いっぽい事が判ったり。

     1  import std.stdio;
     2  import std.string ;
     3  import std.algorithm.sorting;
     4
     5  struct lineinfo {
     6    string str ;
     7    int n ;
     8  } ;
     9
    10  int main()
    11  {
    12    lineinfo[] li = [ {str:"bbb",n:2}, {str:"aaa",n:3}, {str:"ccc",n:1} ] ;
    13
    14    writef("%s\n",li) ;
    15
    16    li.sort!("a.n<b.n") ;
    17
    18    writef("%s\n",li) ;
    19
    20    return(0) ;
    21  }

$ i686-pc-mingw32-gdc -O2 key_sort.d

$ ./a.exe
[lineinfo("bbb", 2), lineinfo("aaa", 3), lineinfo("ccc", 1)]
[lineinfo("ccc", 1), lineinfo("bbb", 2), lineinfo("aaa", 3)]

一点ハマリ所があって、「lineinfo[] li = ....」のように動的配列にする必要が あるようです。「lineinfo[3] li = ....」のように静的配列にすると、

$ i686-pc-mingw32-gdc -O2 key_sort.d
key_sort.d:16:5: error: template std.algorithm.sorting.sort cannot deduce function from argument types !("a.n<b.n")(lineinfo[3]), candidates are:
   li.sort!("a.n<b.n") ;
     ^
/usr/local/gdc_2068_620_mingwcross/lib/gcc/i686-pc-mingw32/6.2.0/include/d/std/algorithm/sorting.d:951:1: note: std.algorithm.sorting.sort(alias less = "a < b", SwapStrategy ss = SwapStrategy.unstable, Range)(Range r) if ((ss == SwapStrategy.unstable && (hasSwappableElements!Range || hasAssignableElements!Range) || ss != SwapStrategy.unstable && hasAssignableElements!Range) && isRandomAccessRange!Range && hasSlicing!Range && hasLength!Range)
 sort(alias less = "a < b", SwapStrategy ss = SwapStrategy.unstable,

てなエラーメッセージが出てくるのですが、なんのこっちゃ意味が判りません(^^;
それにしても、このsortの比較関数の記述は説明が判りにくいです。 aって何?bって何? 物の例えで使っているのかと思いきや、意味のある記述なので え〜?ってなります(因みに c.n とかa,b以外のものを使うとコンパイル時にエラー になります。ただ、エラーの意味がやっぱり良く判りません(^^;)。 まぁ、多くのプログラム言語で採用されているデファクトスタンダードな記述 のようなのでなんとも。

2016/11/18

早くも無く遅くも無く。

昨日付けでSAI2の新しいのが来ていたり。お疲れ様です。

あまりの眠さに急速停止。

2016/11/17

遅めに帰着。

ちょろり調べ事。

2016/11/16

遅めに帰着。

ちょろり調べ事。

2016/11/15

遅めに帰着。

たまたまザッピングした時に NHKスペシャル「終わらない人 宮崎駿」 てのを放送してたり。面白かったです。 最初のカットで上手く行かないと全てが終わるくらいの感じって え?そんなに?!と思いましたが、そういうものなのかも。

2016/11/14

遅めに帰着。

Web巡回して終了。

2016/11/13

昼過ぎ起床。

掃除したり洗濯したり。

以前、SayaというCGキャラクター を知ったのですが、その後も改良が行われていて、最近では動くようにもなっていたらしい (公式 ,関連記事)。 関連記事の方に示される動画の方はほんのちょっと、しかも CEATEC(Combined Exhibition of Advanced Technologies;IT技術の国際展示会) で展示されていたものをビデオ撮影したものなので、 絵的にどれほどのものか(止め絵は大丈夫だけど動くとダメとか)までは判らず。

近所に何かしら建設中の建物があるのですが、どうやらセブンイレブンの 新店舗ができる模様。家から一番近いコンビニになりそう。

2016/11/12

起きたら午後もいい時間。寝過ぎ。

SAI2の新しいのが来ていたのに気づいたり。お疲れ様です。

アオイホノオのドラマが放送されていた時に 「アオイホノオ 11のひみつ」 という岡田斗司夫氏の番組連動ブログが掲載されていたのを今頃知ったり。 その中の第7話に対応するエントリ で、 「紙の上に大きな丸を描いて、中央に十字を描く。これは「昭和の時代のマンガ描き方」であり、 現代のマンガ家なら、まずこういう描き方はしない。」 という一文があったのですが、え?そうなの?と思ったり。

以前、WiFiルータの転送速度を調べたとき、 CC2とPS3を2.5GHz帯で接続して両方でDLNA経由の動画を再生すると帯域が折半されて 転送速度が下がり、再生が途切れるという状況になりました。 その後、WiFi接続のBlu-rayドライブとCC2を5GHz帯での接続に移行した のですが、そういや同時に2.5GHz帯での接続も行うとどうなるのだろう? と思ったり。結果から言うと、2.5GHz帯を折半していた時のような 速度低下は起こりませんでした。

┌────┐      ┌───┐            ┌───┐          ┌────┐
│Blu-ray │      │ CC2  │            │PS3   │          │DESKTOP │
│ドライブ│      └─┬─┘            └─┬─┘          │DLNA-svr│
└─┬──┘          ↑(WiFi:5GHz;11ac)    ↑(WiFi:2.5GHz) └─┬──┘
    ↓(USB)           └───────┐    │                  ↓
┌─┴───┐                      ┌┴──┴┐                │
│ワイヤレス│                      │↑    ↑│                │
│ドック    ├─→(WiFi:5GHz;11n) →┼┘    └┼←(有線LAN:Gbit)┘
└─────┘                      └────┘
                                     WiFiルータ

当たり前かも知れませんが、2.5GHz接続が5GHz接続の邪魔になったり しないよう、ちゃんとルーティングされているようです。

2016/11/11

遅めに帰着。

そういやPS3発売から丁度10年か。

Google英日翻訳がニューラルネット機械翻訳になって翻訳精度が 上がったらしい。以前、Google翻訳だけ 誤訳している一文があったのですが、前のような間違いはしなくなってます。

                原文 : I only sold ten cars, not fifteen.
2014年 5月Google翻訳 : 私は10の車ではなく、15を販売した。
2016年11月Google翻訳 : 私は15台ではなく、10台しか販売していませんでした。

ただ、「車」の文言が省略されてて何を10台しか売れなかったのかが 判らなくなってます。この英語の文言って そんなに翻訳が難しいのかしら?

でも、英語のinfoファイルを翻訳してみると、心なしか普通に判る日本語になっている ように思えます。なんかすげぇ。

2016/11/10

遅めに帰着。

アメリカ大統領選。トランプに決まった訳ですが、その後アメリカ 国内でもゴタゴタしてるのが不思議な気も。 だって、決めたのはアメリカ国民なのじゃないんだっけ?

2016/11/09

遅めに帰着。

先日のCC2のスリープ復帰の件。もしかしてこういう事かも。 電源オプションに「スリープ解除タイマーの許可」という設定があります。 デスクトップPCでは一つしか設定が無いのですが、 CC2ではバッテリー駆動時と電源駆動時のそれぞれで有効/無効が設定可能に なっています。実際の設定は「バッテリー駆動時は無効」、「電源駆動時は重要な場合のみ有効」 という設定になってました。で、ここからが推測するメカニズム。 電源駆動状態でスリープに入り、その後でアダプタケーブルを外して バッテリー駆動にしてました。つまり、スリープに入った時には 電源駆動なので復帰が許可されています。その状態でバッテリー駆動に 切り替えても、CPUは寝ているのでフラグは電源駆動のままなのでしょう。 この為、バッテリー駆動にしているつもりにもかかわらずスリープ 復帰したという流れなのかなと推測しました。 バッテリー駆動にしてからスリープに入れば「バッテリー駆動時は無効」が 活きる事になるのだろうと思われます。

てか、稼働中は電源駆動で、スリープ中はバッテリー駆動にするって、 普通の使い方と逆じゃね?と今思った(^^;

2016/11/08

遅めに帰着。

朝起きるとCC2がスリープ復帰していたり。今までこんな事無かったのですが イベントログを見てもスリープの解除元が不明で原因判らず。

2016/11/07

遅めに帰着。

アオイホノオ(16)。そういやあのサインのシーンって原作の方が後追い になるのか。

2016/11/06

夜更かしが過ぎて起きたら午後もいい時間。

掃除したり洗濯したり。

拙作のELISPであるところのwindow-plus ですが、除外ウインドウを一つだけ表示していると補完候補バッファなど のウインドウが開かないという問題があったので直してみたり。 途中激しく壊したりしてすったもんだしましたが、なんとなく 着地できた気が。そんな感じで 「Emacsでアクセサリを表示してみたくなった」 を更新してみました。御参考まで。

2016/11/05

AM中に起床。

まだWiFi子機の話。通信が無い状態でほっとくといつの間にか接続が切れていたり。 手動でまた繋いだ後、ちょっと目を離すとまた切れるという状況。 再度接続する際にデバイス自体が見えてない状態だったので、 もしかしてデバイスの電源が切れているのか?と思ったり。 これについてもWeb検索したところ こちらのような ページが見つかったのですが、更に切り分けていくと 我が家のはどうやら USBの省電力制御が原因でした。 「USBのセレクティブサスペンドの設定」 (参考) をバッテリ駆動時も電源接続時も両方とも有効になっていたのを無効に 変更する事で切れる事は無くなりました。 でもこれ、USB電源をOFFにされるとUSB充電とかできないのでは?とは思ったりも。

それにしても、ハマるもの全てにハマった感じです。WiFi敷居高ぇ.....

2016/11/04

早くも無く遅くも無く。

WiFi子機の5GHz接続でスピードが出ない件。Webを検索してみると こちらのぺージ に同じ現象が起こった話があり、ドライバのアップデートで改善した というのを知ったり。そもそもドライバのインストールから始めて いるので、古いなんてこと無いハズなのだが?と思いながらも、 「コンピュータの管理→デバイスマネージャ内のネットワークアダプタ」 から件のWI-U3-866Dを探し、ドライバの更新を試してみたところ、 新しいドライバが見つかってインストールされました。えぇぇ〜〜〜〜?
再起動後、11acで接続してデスクトップPCからファイル転送を行って みたところ、250Mbps出たのでOK。なんてこった。

で、Blu-rayドライブのワイヤレス接続は以下のような感じに。 因みにデスクトップPCの位置も以下。

┌────┐
│Blu-ray │                        ┌───┐              ┌────┐
│ドライブ│                        │ CC2  │              │DESKTOP │
└─┬──┘                        └─┬─┘              └─┬──┘
    ↓(USB)                             ↑(WiFi:5GHz;11ac)      ↓
┌─┴───┐                      ┌─┴──┐                │
│ワイヤレス├─→(WiFi:5GHz;11n) →┤WiFi    ├←(有線LAN:Gbit)┘
│ドック    │                      │ルータ  │
└─────┘                      └────┘

Blu-ray再生中は WiFiルータとCC2間は平均35Mbpsですが、特に へこたれる様子は無く。Blu-ray再生しながら、デスクトップPCの メディアサーバの4K動画再生してみたところ、合計最大で80Mbps程度 出ましたがこちらもへこたれる様子は無く。また、Bluetoothデバイスを使っても 特に転送速度が下がる事も無い感じに。そんな訳で所望の要件が 満たされました。やったね(^^)v

あと一つ、Blu-ray再生途中でドライブが反応しなくなる件。 どうやら、ある特定のシーンで突っかかるのが再現する事が判り、 メディアを確認してみたところ、傷かと思うような割と大きな 汚れが付いていたり。拭いたら取れたので再度突っかかるシーンを 再生してみたところ大丈夫になったり。メディアが汚れていると こうなるのか.....初めて経験しました(^^;

2016/11/03

ゴミ捨ての為にAM中に起床。

ちょろりお出かけ。そして散財。

CC2ではBlu-rayドライブが無いので欲しいかもと思っていたのですが、 USB接続はなんかウザいのでネットワーク経由でBlu-rayドライブを使えない ものかと考えました。デスクトップPCのBlu-rayドライブをWindowsの ファイル共有機能で見せただけではファイルシステムとしか認識されず、 物理ドライブとして見えないのでダメでした。そんな訳で 気になったのがPioneerの BDR-WFS05Jという製品。ネットワーク越しにドライブを接続 できるというものだったので買ってみた次第です。
ついでにUSB接続可能な 5GHz対応のWi-Fi子機アダプタを使えば 5GHz帯の様子も見られるんじゃね?という事でBUFFALOの WI-U3-866D てのを買ってみました。てか、11acイケる製品ってあんま無いのね。 そんな感じなので、ちょっと高めの散財になったかも。

早速試したり。まずはBlu-rayドライブの方から。ドライブ自体は USB接続も可能なので、ドライバ類はCD-ROMからインストール。 で、もにゃもにゃと接続設定を行って完了。専用の接続アプリが 必要ですが、繋いでしまうと USBにBlu-rayドライブを接続 したのと同じように見えます。 接続は以下のような感じです。

┌────┐
│Blu-ray │                    ┌───┐
│ドライブ│                    │ CC2  │
└─┬──┘                    └─┬─┘
    ↓(USB)                         ↑(WiFi:2.4GHz)
┌─┴───┐                  ┌─┴──┐
│ワイヤレス├─→(WiFi:5GHz) →┤WiFi    │
│ドック    │                  │ルータ  │
└─────┘                  └────┘

で、速度的なものについて。Blu-ray再生すると WiFiルータ→CC2間は 平均で約35Mbpsくらいの転送速度が出ているので、 ワイヤレスドックとWiFiルータ間もそのくらいのスピード なのだろうと思います。

じゃぁ、全部5GHzにするとどうなるか?という事で、WiFi子機を セッティング。一応5GHz帯でCC2に繋がっているようなのですが、 全然スピードが出ません。ファイル転送してみると7Mbpsくらいしか 出てないようでした。2.4GHz対応製品だったので、2.4GHzだとどうなるか も試したところ、こちらも7Mbpsしか出ないようで、どうも電波が不安定 とかそういう話では無く、製品の問題(ハード?ドライバ?親機との相性?その他?) なのでは?という気がしたり。いずれにしても全く用事にならなかった ので使用は保留。

で、Blu-rayドライブの方。概ね突っかかる事無くBlu-rayを再生できる のですが、何故か1時間程度でドライブが反応しなくなりました。 ネットから最新のドライバ類を入手して再インストールしてみたのですが、 それでもなんかダメ。うーむ。

そんな感じで、なんか微妙な買い物になってしまった気も。 まぁ、先にも述べましたようにBlu-rayドライブは単体でUSB接続可能なので どうしても我慢ならない時は諦めて有線接続するという方向で。

2016/11/02

遅めに帰着。

ちょっこりWi-Fiルーターの転送速度を調べたり。CC2を買った当初はWindows10 へのアップデートで100Mbpsくらい出るのを確認していたのですが、 今日試してみると全然スピードが出なかったので何故だろう?と思ったり。 どうやらBluetoothのマウスとキーボードを使うようになったのですが、 BluetoothがONだとかなり激しく電波干渉するようで、ファイル転送が 途中で完全に止まる状態にまで悪化するケースがあるようです。 Bluetoothを一時的にOFFにするとそれを契機に100Mbps前後まで 回復&維持できる模様。
CC2とPS3で同時に動画を再生させてみたり。CC2では4K動画、PS3ではFull-HD動画 を再生してみたのですが、この場合も転送速度が下がります。 2.4GHzの周波数を折半するので当たり前ですが。5GHz帯だと どうなるのか興味のある所ですが、対応デバイスが無いのでなんとも。

2016/11/01

遅めに帰着。

PS4ソフトの発売予定を眺めていたら 「ボコスカウォーズ2」が並んでいて、 はぁ?!と思ったり。もう少しWebで調べてみると、2015年5月頃にアナウンスは あったっぽい。それにしても、以前、 「燃えプロ」が発売されたのですが、ちょいちょい来る 変化球は何?と思ったりも。いいけど。

perlの正規表現を最適化する Regexp-Assembleというperlモジュールの存在を知ったり。 perlで複数の単語にマッチする正規表現を 「foo|bar|hoge|fuga」てな感じで「|」で繋ぐと、見た目は 判りやすいですが、非常に遅いとされています。 で、Regexp-Assembleを使用するとそれを良い感じに展開して くれるという事らしいです。 試しに以下のようなコードを書いてみました。

#!/bin/perl

use strict;
use Getopt::Std;
use Regexp::Assemble;

my $ra_mode=0 ;

my %opts ;
getopts('a'=>\%opts);
if( $opts{"a"} ne "" ){ $ra_mode=1 ; }

my $regstr="" ;
my $regasm=Regexp::Assemble->new;

my $fname = $ARGV[0] ;

open(INFILE, $fname);
while(<INFILE>){
    chomp ;
    $regstr=$regstr . sprintf("|^%s",$_) ;
    $regasm->add(sprintf("^%s",$_)) ;
}
close(INFILE) ;
$regstr =~ s/^\|// ;

if( $ra_mode==0 ){
    my $match_count=0 ;
    open(INFILE, $fname);
    while(<INFILE>){
        if( /$regstr/ ){
            $match_count++;
        }
    }
    close(INFILE) ;
    printf("Normal match count = %d\n",$match_count) ;
}else{
    my $match_count=0 ;
    open(INFILE, $fname);
    while(<INFILE>){
        if( $_ =~ $regasm->re ){
            $match_count++;
        }
    }
    close(INFILE) ;
    printf("RegexAssemble match count = %d\n",$match_count) ;
}

exit(0) ;

その結果が以下。

$ time ./regasm_test.pl /usr/share/dict/words
Normal match count = 479832

real    42m38.904s
user    42m33.453s
sys     0m0.202s

$ time ./regasm_test.pl -a /usr/share/dict/words
RegexAssemble match count = 479832

real    0m30.625s
user    0m30.421s
sys     0m0.155s

1行1単語で 479832個の英単語が書かれたテキストファイル内の 単語を全て「|」で繋いだ正規表現を生成して、それで マッチを試みるという、実用性は全く無いプログラムです。 85倍くらい高速になってます(^^; スゲェ。


TOP PREV