IT

楽天BB-LTE解約

昨年10月に加入した楽天ブロードバンド LTE。

楽天ブロードバンド カスタマーセンター

楽天ブロードバンド カスタマーセンター

ここまで大きな不満は無かったのだが、先日調達したOCN モバイル エントリー d LTE 980が3GなHW-01Cにも対応。しかも規制通信速度を200kbpsに増速ときた。

IIJmioにも毎月500MBのバンドルクーポンがセットされた事から、もはや楽天ブロードバンド LTEのお得感は一掃されてしまったので、さっさと解約してしまう事に。

解約手続きは24時間営業のお手軽Webではなく、少しだけ思い切りが必要な「カスタマーセンター」の電話受付のみ。業者側の思惑から「入るは易し、止めるは難し」となるのは当然の事だ。

しかし、一般的になかなか繋がらないとされる「カスタマーセンター」だが、18時台に数callであっさり繋がた。男性の担当者は少し不慣れなようだったが、5分ほどで特に問題無く手続き完了。PHSでもOKなフリーダイヤルで年中無休:9時~21時という間口の広さを踏まえると、十分に良心的だと思うよ。

10日〆で月末解約なので、6月末付けの解約完了となる。

参照

ケータイ Watch http://k-tai.impress.co.jp/

楽天ブロードバンド LTE http://broadband.rakuten.co.jp/lte/

児童ポルノ禁止法改悪案

先月お知らせした消費税還元セール禁止法案。中小企業の保護を名目に価格競争を妨げるという目的と手段が全く噛み合っていないというマヌケな法案だが、与党提出だけあって衆院で可決されてしまったようだ。

それで気を良くしたわけでも無いだろうが、今度は「児童ポルノ禁止法案」の改正案を提出。現行法の「実在する児童」という縛りを意図的に排除する事で、「架空の児童(マンガなどのキャラクタ)」にも適用範囲を拡げるつもりらしい。「単純所持」まで禁止なんて何を考えているんだか。何一つとして納得がいかない。

というわけで「しずかちゃんのお風呂のシーン」や「となりのトトロの入浴シーン」も「児童ポルノ」の括りで立件される可能性が出てくる、と騒ぎになるわけだ。もちろん、自民党や政府の役人は「それは極論でそこまで極端な運用はしない」と言うはずで、実際ほとんどのケースではその通りだろうが、結局そのような曖昧な部分を警察当局に委ねてしまうから恣意的に運用されて大変な事になってしまう。

つい先日、遠隔操作ウィルス事件で何人もの誤認逮捕の被害者を出してしまった事を忘れたのだろうか。

自公に日本維新の会も加わった3党共同提案だそうだが、何を考えているんだか。怖すぎる改正案だな。

参照

GIGAZINE http://gigazine.net/

ITmedia ニュース http://www.itmedia.co.jp/news/

J-CASTニュース http://www.j-cast.com/

参議院議員 山田太郎 http://taroyamada.jp/

日経ビジネスオンライン http://business.nikkeibp.co.jp/

Sleipnir

不要なサジェスト候補を削除できるようになった「Google 日本語入力」v1.10の安定版というニュース。

スレイプニル

Web ブラウザ Sleipnir 4 for Windowsより

早速弄ってみようと思ったのだが、メインはATOKなのでいちいち切り替えるのが面倒。特にGoogle ChromeのGoogle 検索ではATOKが使いづらい事この上なく、堪忍袋の緒が切れた時にはGoogle 日本語入力に切り替えて使っているのだが、アプリケーションごとに利用するIMEを自動で切り替える「あいち」を入れてみた。仕掛けとしては各アプリにIME切替のホットキーを送りつけるだけ…という単純な仕組みだ。対象にウィンドウクラス名を選択できたり、フィルタに正規表現が使えるので、設定の手間が少なくて済むのがいいね。

新レンダリングエンジン“Blink”を搭載した「Google Chrome 28」ベータ版とか、Operaが“Chromium”ベースに生まれ変わったとか、Webブラウザやレンダリングエンジンの話題も最近ホットだ。

Google Chromeも何となく重くなってきたので、Sleipnir 4 for Windows (Blink Engine Preview Build)を試してみる事に。公式版のSleipnirにはフリーなAndroid版やiOS版があり、ブックマークや拡張機能も端末間でオンライン同期できるのが◎ですね。

参照

INTERNET Watch http://internet.watch.impress.co.jp/

GIGAZINE http://gigazine.net/

窓の杜 http://www.forest.impress.co.jp/

プログラミング研究所 http://www.program-lab.jp/

4Kテレビ元年

先月のソニーのBRAVIA X9200Aに続いて、シャープのAQUOS UD1、東芝のREGZA Z8Xと、各社から「普及に弾みが付く」と言われている「1インチ1万円」の価格帯を実現した4Kテレビが発表された。

Z8Xシリーズ

REGZA Z8Xシリーズより

CEATEC JAPAN 2011で発表、2011年の暮れに発売された世界初の家庭用4KテレビREGZA 55X3が90万円近くした事を考えると1年半でこの価格帯まで下げてきたのは努力の賜だろう。

しかし、何と言っても足を引っ張るのが「4Kコンテンツもほとんどない」という状況だ。4Kテレビのコンテンツ問題は解消したという意見もあったが、AV Watchの記事によると放送メディアのスケジュールは2014年に4Kスーパーハイビジョンの、2016年に8Kスーパーハイビジョンの実用化試験放送が始まり、本格放送は2020年というロードマップになっているそうな。つまり、結局は暫くBlu-rayビデオのアップコンバートが中心という事になるので、訴求力についてはあくまでも限定されそうな印象。

各社ともボーダーラインを意識した戦略的な価格設定をしているものの、「エコポイント特需」で需要を先食いした後で、フルHDの50インチが実売15~20万円程度で調達できる事を考えるとちょっと今までのようにすんなりとはいかないんじゃないかという気がするが、本格放送が始まる2020年までのんびり構えているわけにもいかないメーカーの事情もわからないでは無い。何とか日本製テレビの意地を見せて欲しいところだ。

早いもので我が家の37Z3500も5年が経過し、ヨドバシの延長補償も期限切れ。“なっちゃん"が容赦なくバンバン叩くので、そろそろ壊れるんじゃ無いかとヒヤヒヤしているのだが、かと言って叩かれるのを覚悟で50万円のテレビなんてとても買えないですな。

参照

AV Watch http://av.watch.impress.co.jp/

ITmedia LifeStyle http://www.itmedia.co.jp/lifestyle/

AV&ホームシアター Phile-web http://www.phileweb.com/

Wikipedia http://ja.wikipedia.org/wiki/

Battery Mix

5月13日のトライにおいてiPhone用カーエアコン・マウントと上海問屋「DN-69151」のホルダーで決まったnexus7の車載アダプタ。

赤色のAC給電状態でもバッテリー残量は下降

5/12,13 USBカーチャージャー

取り回しのしやすさを優先して2mの小径マイクロUSBケーブルで接続していたのだが、先日の広島遠征では往復8時間ほどのナビゲーションでバッテリーが底をついて自動シャットダウンとなった。

Battery Mixではちゃんと赤色のAC給電状態と認識されている事からUSBケーブル自体は問題無さそうなので、小石原往復ではモバイルバッテリーの出力に変えてみたところ、ナビ停止(スリープ中)は容量が増えていくものの、ナビ実行中はやはりバッテリー容量が減っていく事が確認できた。

家庭電源用のACアダプターやパソコンのUSB給電では問題無いので、給電される電流が不足しているような印象だが、Hanwha USB2連シガーソケット分配器 UMA-2CS2USBのパワー不足か?

2.1A出力ポートでiPad2も問題無く充電できていたのでそれもちょっと考えづらいのだけれどなぁ。

参照

Google Play の Android アプリ https://play.google.com/store/apps

Amazon.co.jp https://www.amazon.co.jp/

epgrec一式改修

予てより/var/log/messagesに時々現れていた

epgdump[5897]: segfault at 7fff3b687000 ip 0000000000403c55 sp 00007fff3b680cb0 error 4 in epgdump[400000+9000]

の頻度が高くなってきた気がした。

結果的には2時間間隔で実行する番組表の取得に失敗しているわけだが、何回かに1回でもきちんと取得できていれば大筋で問題無い仕組みなのでスルーしていたのだが、epgrec プロジェクト - SourceForge.JPでは特にアップデートされた形跡は無いものの、いろいろと有志が改修を試みているようなので、ひとつまじめに取り組んでみた。

yano@GT110b:~/software/tv$ diff -bc epgdumpr2_20111001/ epgdumpr2/
diff -bc epgdumpr2_20111001/Makefile epgdumpr2/Makefile
*** epgdumpr2_20111001/Makefile 2009-03-15 21:33:35.000000000 +0900
--- epgdumpr2/Makefile  2013-05-17 12:00:24.366854210 +0900
***************
*** 1,10 ****
  TARGETS               = epgdump
  OBJ_TARGETS   = epgdump.o aribstr.o eit.o ts.o util.o sdt.o
  HEDDERDEPEND  = eit.h sdt.h aribstr.h ts.h util.h
  LANG=C
  CC            = gcc
! CFLAGS                =  -std=c99 -O2 -Wall -g
  #LDFLAGS              = -pthread
  LIBS          =
--- 1,12 ----
+ PREFIX          = /usr/local
  TARGETS               = epgdump
  OBJ_TARGETS   = epgdump.o aribstr.o eit.o ts.o util.o sdt.o
  HEDDERDEPEND  = eit.h sdt.h aribstr.h ts.h util.h
  LANG=C
  CC            = gcc
! #CFLAGS               =  -std=c99 -O2 -Wall -g
! CFLAGS          =  -std=c99 -O2 -Wall -g -Werror -Wno-return-type
  #LDFLAGS              = -pthread
  LIBS          =
***************
*** 21,23 ****
--- 23,28 ----
  clean:
                rm -f core ${TARGETS} *.o
+
+ install:
+       install -m 755 ${TARGETS} ${PREFIX}/bin
diff -bc epgdumpr2_20111001/aribstr.c epgdumpr2/aribstr.c
*** epgdumpr2_20111001/aribstr.c        2009-11-18 12:35:20.000000000 +0900
--- epgdumpr2/aribstr.c 2013-05-17 11:27:45.868259545 +0900
***************
*** 318,324 ****
        fptr = code;
        tptr = xcode;
!       iconv(cd, &fptr, &inbyte, &tptr, &outbyte);
        iconv_close(cd);
--- 318,324 ----
        fptr = code;
        tptr = xcode;
!       iconv(cd, (char **)&fptr, &inbyte, &tptr, &outbyte);
        iconv_close(cd);
***************
*** 622,644 ****
  void LockingShiftGL(const BYTE byIndexG)
  {
        // LSx
!       m_pLockingGL = &m_CodeG[byIndexG];
  }
  void LockingShiftGR(const BYTE byIndexG)
  {
        // LSxR
!       m_pLockingGR = &m_CodeG[byIndexG];
  }
  void SingleShiftGL(const BYTE byIndexG)
  {
        // SSx
!       m_pSingleGL  = &m_CodeG[byIndexG];
  }
! const bool DesignationGSET(const BYTE byIndexG, const BYTE byCode)
  {
        // Gのグラフィックセットを割り当てる
        switch(byCode){
        case 0x42U      : m_CodeG[byIndexG] = CODE_KANJI;                               return true;    // Kanji
--- 622,646 ----
  void LockingShiftGL(const BYTE byIndexG)
  {
        // LSx
!       m_pLockingGL = &m_CodeG[(int)byIndexG];
  }
  void LockingShiftGR(const BYTE byIndexG)
  {
        // LSxR
!       m_pLockingGR = &m_CodeG[(int)byIndexG];
  }
  void SingleShiftGL(const BYTE byIndexG)
  {
        // SSx
!       m_pSingleGL  = &m_CodeG[(int)byIndexG];
  }
! const bool DesignationGSET(const BYTE byIndexG_arg, const BYTE byCode)
  {
+       int byIndexG = (int)byIndexG_arg;
+
        // Gのグラフィックセットを割り当てる
        switch(byCode){
        case 0x42U      : m_CodeG[byIndexG] = CODE_KANJI;                               return true;    // Kanji
***************
*** 660,667 ****
        }
  }
! const bool DesignationDRCS(const BYTE byIndexG, const BYTE byCode)
  {
        // DRCSのグラフィックセットを割り当てる
        switch(byCode){
        case 0x40U      : m_CodeG[byIndexG] = CODE_UNKNOWN;                             return true;    // DRCS-0
--- 662,671 ----
        }
  }
! const bool DesignationDRCS(const BYTE byIndexG_arg, const BYTE byCode)
  {
+       int byIndexG = (int)byIndexG_arg;
+
        // DRCSのグラフィックセットを割り当てる
        switch(byCode){
        case 0x40U      : m_CodeG[byIndexG] = CODE_UNKNOWN;                             return true;    // DRCS-0
diff -bc epgdumpr2_20111001/eit.h epgdumpr2/eit.h
*** epgdumpr2_20111001/eit.h    2009-11-18 12:23:01.000000000 +0900
--- epgdumpr2/eit.h     2013-05-17 11:27:45.868259545 +0900
***************
*** 28,34 ****
  typedef struct _EITbody {
        int event_id;
        char start_time[5];
!       char duration[3];
        int running_status;
        int free_CA_mode;
        int descriptors_loop_length;
--- 28,34 ----
  typedef struct _EITbody {
        int event_id;
        char start_time[5];
!       unsigned char duration[3];
        int running_status;
        int free_CA_mode;
        int descriptors_loop_length;
diff -bc epgdumpr2_20111001/ts.c epgdumpr2/ts.c
*** epgdumpr2_20111001/ts.c     2010-02-27 16:45:15.000000000 +0900
--- epgdumpr2/ts.c      2013-05-21 13:30:28.732126582 +0900
***************
*** 40,52 ****
        /* 戻すべき残りがあるか? */
        if(ridx >= 0 && secs[ridx].cont) {
                /* バッファチェック */
                if((secs[ridx].cur.payload[secs[ridx].curlen] & 0xFF) == 0xFF) {
                        secs[ridx].cont = 0;
                        secs[ridx].seclen = 0;
                        secs[ridx].setlen = 0;
                        secs[ridx].curlen = 0;
!               } else {
                        len = secs[ridx].cur.payloadlen - secs[ridx].curlen;
                        /* 全部設定済みチェック */
                        if(len == 0) {
--- 40,56 ----
        /* 戻すべき残りがあるか? */
        if(ridx >= 0 && secs[ridx].cont) {
+ /*
+ printf("secs[%d].cur.cont=%d, secs[%d].cur.payloadlen=%d, secs[%d].curlen=%d, secs[%d].seclen=%d, len=%d\n",
+ ridx, secs[ridx].cur.cont, ridx, secs[ridx].cur.payloadlen, ridx, secs[ridx].curlen, ridx, secs[ridx].seclen, len);
+ */
                /* バッファチェック */
                if((secs[ridx].cur.payload[secs[ridx].curlen] & 0xFF) == 0xFF) {
                        secs[ridx].cont = 0;
                        secs[ridx].seclen = 0;
                        secs[ridx].setlen = 0;
                        secs[ridx].curlen = 0;
!               } else if ( secs[ridx].curlen <= secs[ridx].cur.payloadlen ){
                        len = secs[ridx].cur.payloadlen - secs[ridx].curlen;
                        /* 全部設定済みチェック */
                        if(len == 0) {
***************
*** 68,73 ****
--- 72,82 ----
                                boff = 12;
                                secs[ridx].seclen = getBit(&secs[ridx].cur.payload[secs[ridx].curlen], &boff, 12) + 3; // ヘッダ
+                               if(secs[ridx].seclen > MAXSECLEN){
+                                       // セクションが MAXSECLEN より大きい時はこのセクションをスキップ
+                                       secs[ridx].cont = 0;
+                                       goto retry;
+                               }
                                /*
                                  if(secs[ridx].seclen == 2334) {
***************
*** 96,101 ****
--- 105,116 ----
                                        goto retry; /* もう一回 */
                                }
                        }
+               } else {
+ /*
+ printf("secs[%d].cont=%d, secs[%d].cur.payloadlen=%d, secs[%d].curlen=%d, secs[%d].seclen=%d\n",
+ ridx, secs[ridx].cont, ridx, secs[ridx].cur.payloadlen, ridx, secs[ridx].curlen, ridx, secs[ridx].seclen);
+ */
+                       secs[ridx].cont = 0;
                }
        }
***************
*** 203,209 ****
                }
                memset(pk.payload, 0xFF, sizeof(pk.payload));
!               if(pk.payloadlen <= 0){
                        continue;
                }
                memcpy(pk.payload, payptr, pk.payloadlen);
--- 218,224 ----
                }
                memset(pk.payload, 0xFF, sizeof(pk.payload));
!               if( !(0 < pk.payloadlen && pk.payloadlen <= sizeof(pk.payload)) ){
                        continue;
                }
                memcpy(pk.payload, payptr, pk.payloadlen);
***************
*** 227,232 ****
--- 242,252 ----
                                        /* 最初 セクション長を調べる */
                                        boff = 12;
                                        secs[i].seclen = getBit(secs[i].cur.payload, &boff, 12) + 3; // ヘッダ;
+                                       if(secs[i].seclen > MAXSECLEN){
+                                               /* セクション長が MAXSECLEN より長いときはこのセクションをスキップ */
+                                               secs[i].cont = 0;
+                                               goto retry;
+                                       }
                                        /*
                                          if(secs[i].seclen == 2334) {
                                          printf("aa");
***************
*** 274,280 ****
                }
        }
!       //return NULL;
  }
  /* BonTest/TsStream.cppからのパクリ */
--- 294,300 ----
                }
        }
!       return NULL;
  }
  /* BonTest/TsStream.cppからのパクリ */
***************
*** 311,316 ****
--- 331,342 ----
  int checkcrc(SECcache *secs) {
+       /* regard a section with more than MAXSECLEN data as an error. */
+       if(secs->seclen > MAXSECLEN) {
+               fprintf(stderr, "SECcache overrun secs->seclen=%d\n", secs->seclen);
+               return 0;
+       }
+
        /* セクションの終りに置かれる4バイトのCRC32は、
           CRC計算の結果0になるように設定される。
           値が発生した場合は、エラーなので対象外にする */
***************
*** 320,323 ****
        }
        return 1;
  }
-
--- 346,348 ----
diff -bc epgdumpr2_20111001/util.h epgdumpr2/util.h
*** epgdumpr2_20111001/util.h   2009-03-08 16:53:42.000000000 +0900
--- epgdumpr2/util.h    2013-05-17 11:46:37.356293005 +0900
***************
*** 1,12 ****
--- 1,15 ----
  #ifndef UTIL_H
  #define UTILH 1
+ // try for segfault at 7fff77650000 ip 0000000000403c55 sp 00007fff7764ae30 error 4 in epgdump[400000+9000]
+ // #define MAXSECLEN (4096*4)
  #define MAXSECLEN 4096
  #ifdef __cplusplus
  extern "C"{
  #endif /* __cplusplus */
+       int   strrep(char *buf, char *mae, char *ato);
        int   getBit(unsigned char *byte, int *pbit, int gbit);
        void  getStr(char *tostr, unsigned char *byte, int *pbit, int len);
        int   parseOTHERdesc(unsigned char *data);

しかし、この改修を行っても日テレNEWS24の番組表が空っぽのままだったので更に調べてみたところ、日テレNEWS24のチャンネルがCS24:350からCS8:349に移っていた。ついでにディズニージュニアがCS8:339でスタートしたのも思い出したので、そのへんも追加。差分は「BS新チャンネル対応公式版」のepgdumpr2_20111001.tar.gzに対する差分なので、2011年11月版のCSチャンネル対応も含む。

OCNの3G端末対応

5月23日(木)より3G端末でも利用可能という話だったOCN モバイル エントリー d LTE 980。

OCN モバイル エントリー d LTE 980

OCN モバイル エントリー d LTE 980

規制通信速度を増速という朗報とともに3G端末にも対応。

設定方法を確認しなかった自分の落ち度と言われれば甘んじて受け入れるしか無いのだが、LTE端末では lte-d.ocn.ne.jp だった接続先(APN)を3G端末では 3g-d-2.ocn.ne.jp に設定しなくてはならないという罠に躓いたものの、無事にモバイルWi-Fiルーター HW-01Cで接続確認OK。

8796.jp管理日誌のように誤ってOCN モバイル エントリー d用のAPN 3g-d.ocn.ne.jp を設定するよう指示されてしまった可哀想なケースもあるようなので記しておきたい。

【追記】OCN モバイル エントリー d LTE 980ではなく3G専用で速度規制が無い代わりに「お手軽価格の月額2,670.15円」なOCN モバイル エントリー d用のAPNという事らしい。自分の手元に届いていた会員証にも同じように書かれていて、SO-03Dを再初期化した時にハマった。どうして使えもしない別サービスのAPNを一緒に書いとくかな…

参照

ケータイ Watch http://k-tai.impress.co.jp/

NTTコミュニケーションズ オフィシャルサイト http://www.ntt.com/

OCN モバイル エントリー d LTE 980 http://www.ocn.ne.jp/mobile/entry-d-lte980/

Amazon.co.jp https://www.amazon.co.jp/

サイバー防衛隊?

自衛隊に「サイバー防衛隊」新設との事。

イメージ画像

flickr.comより

昨年9月の防衛省が「サイバー空間防衛隊」創設などに212億円を要求から続く流れで、陸・海・空に続く第4のフィールドという事ですかね。

住民票などのコンビニ交付が始まり、マイナンバー制度も始まろうとしている現代。多種多様なニーズに応える為のサービス提供や情報化の流れは止められない事から、好むと好まざるとに関わらず国家的なセキュリティ制作や組織が必要なのは言わずもがなだが、「外国政府の関与が疑われる国家レベルのサイバー攻撃対処では、自衛隊の能力や態勢の強化を掲げた」というのも今更感が激しく漂う。

内閣官房情報セキュリティセンターも27年度をめどに「サイバーセキュリティセンター」に改組という事だが、こちらで防衛省をコントロールするというお話でしょうか?

参照

INTERNET Watch http://internet.watch.impress.co.jp/

ITpro http://itpro.nikkeibp.co.jp/

財団法人 地方自治情報センター(LASDEC) https://www.lasdec.or.jp/

内閣官房情報セキュリティセンター http://www.nisc.go.jp/

Wikipedia http://ja.wikipedia.org/wiki/

QZSSみちびき

2010年秋に打ち上げられた日本の衛星測位システム、準天頂衛星初号機「みちびき」。

天頂近くにいるはずなのに…

QZレーダー

GPSレシーバとしてBloadcomのBCM4751を搭載する「Nexus 7」が「みちびき」に対応済みという事なので「Xperia acro HD」も含めて試してみたところ、QZレーダー(QZ-radar)調べでは天頂付近にいるはずなのだが、残念ながら「Nexus 7」も「Xperia acro HD」もGPS Testで何も表示されなかった。

「Nexus 10」ではPRN番号193番として表示されるのだが、「Nexus 7」では1番と表記される為に1番のGPS衛星が検出されるとそちらが優先され「みちびき」が表示されないという事情があるらしい。ロットで対応が違うというのも考えにくいので、「Nexus 7」で表示されないのはその為と思われる。

「Xperia acro HD」のGPSレシーバは不明だが、ロシアの衛星測位システムであるGLONASSの対応はアナウンスされていて実際に表示される事も確認できたものの、QZSSの位置には何も表示されなかったのでこちらも「みちびき」対応の是非は確認できていない。Xperia arcでは見えていないという報告もあるので、「Xperia acro HD」も期待薄かなぁ。

…結局、1番のGPS衛星が隠れた午前1時半過ぎに確認したところ、「Xperia acro HD」のGPS Testでは特に変わりなく、「みちびき」を表示できたのはNexus 7だけだった。

参照

INTERNET Watch http://internet.watch.impress.co.jp/

Developer World http://developer.sonymobile.com/

KamoLand http://kamoland.com/wiki/

準天頂衛星システム(QZSS)みちびきデータ公開サイト[QZ-vision] http://qz-vision.jaxa.jp/

Wikipedia http://ja.wikipedia.org/wiki/

知り合いかも?

Kiriko Takemura (きゃりーぱみゅぱみゅ)

facebookより

きゃりーぱみゅぱみゅが「知り合い」なわけがない。

そういえばまねだ聖子や、シドニー五輪のメダリスト日下部基栄、ギンギラ太陽’Sの「コガキョ」とかもサジェストされた事あったけれど、最近の「知り合いかも?」はどうも裏がありそうな気がしてならない。

参照

ITmedia ニュース http://www.itmedia.co.jp/news/

Wikipedia http://ja.wikipedia.org/wiki/