Covia CP-F03aにAndroid 4.4アップデータ正式版を入れた

Covia CP-F03a用のAndroid 4.4(KitKat)アップデータが正式リリースされたので、早速導入した。

2014.6.23 CP-F03a Android 4.4 (KitKat)対応ファームウェアリリース開始のお知らせ

firmwareの日付を見ると、事前にFacebookページにて公開されていたAndroid 4.4(KitKat)アップデータ 試用版3、相当である模様。

Android 4.2から4.4へのアップデート時に、初期化が必須、という点は変わらないようです。
(Android 4.4試用版からはデータそのままのアップデートが可能)

とりあえず、いつも使うソフトウェア群に関しては特に問題なく動いてる感じです。
電波感度に関しては、以前より、マシになっている・・・ような気がします。

電池消費量に関しては、相変わらず、良くはない、ですね。
8:10に充電器から外して、そこから大して使ってないのに、13:00には16%に到達していましたから・・・
(ちなみに、ほぼ同一条件でJIAYU F1を使っていて、14:30の時点で83%です)

ここ、なんとかなんないですかねぇ・・・・

携帯電話700MHz/900MHz帯の現状について(メモ

携帯電話の700MHz/900MHzを使うために、同じ周波数を使っているユーザを追い出すための支援策が、どこまで進んでいるのか、現状がないかなーと総務省のページを見に行ったら、2014年3月末の状況が発表されていた。

700MHz帯における終了促進措置に関する実施状況の概要と確認の結果(平成25年度第4四半期)(平成26年6月17日)
900MHz帯における終了促進措置に関する実施状況の概要と確認の結果(平成25年度第4四半期)(平成26年6月17日)

まぁ、どこも遅延中、といったところ。
果たしてサービス開始はどうなることやら・・・

<700MHz>
どうやら3社(イーアクセス/ドコモ/au)で、費用を共同負担して実施しているようで、各社資料を比較しても、実施状況の現状が全く一緒だった。

・番組素材中継用無線局
平成26年度末(2015/03)の移行完了を予定していたが。
一部で機器開発が必要になるため、全ての移行完了には1年程度の遅延が見込まれる。

・ラジオマイク
平成26年度末(2015/03)の移行完了を計画しているが、
合意が取れたところが全体の1/4程度(7406/27905)しかないし、
実際に移行完了したところは10しかない。

<900MHz>
ソフトバンクの単独使用なので、報告書はソフトバンクのみ。

認定時の「平成25年度末(2014/03)までに移行完了する」は達成できませんでした。

・免許が必要なRFIDについて
免許が必要なRFIDの以降が完了しなかった理由は以下のものだそうです。

終了促進措置の実施(廃局を含む)については、全体の99%に合意していた
だきましたが、 例えば、(1)後継機種の開発・製造の遅延、(2)業務停止不可等
によるスケジュール調整の難航、(3)免許人都合による協議中断(組織体制変更、
人的リソース等の理由)、(4)後継機種がないことによる他後継機種選定の難航、
(5)免許人による継続利用希望、(6)RFIDに関連する他システム改修の遅延
等の事情により、本四半期までに終了促進措置の実施が完了しなかった無線局
があります。

・免許が不要なRFIDなどについて
免許不要だから、いまも使われてるかどうかわかんない機器多すぎ。
メーカ出荷台数を元に数をカウントしてたんだけど、いままで、使用者や使用場所が不明なやつを「協議中」に含めてたんだけど、注意されたので今回の集計からは「協議開始前」に分類します。
(なので、協議開始前の台数が平成25年12月末「2058台」から平成26年3月末「89559台」と大幅増)
rfid免許不要

・MCA無線(タクシー無線など)
端末(各タクシーなどに置く方)についてはだいたい終わった(98%)。
残り2%は、顧客都合とか、納入機器都合(バグや納期)などで遅延している。

基地局側は、上記の2%が終了次第停止できる予定。

V-Lowの現状がよくわからない(メモ

アナログTVがあった周波数は、以下の用途に使われることになっている。

・「UHF」(13ch~62ch)
13ch~52ch: 地デジ
53,54ch: ITS(自動車のコントロールシステム等)
55ch~62ch(730MHz~770MHz): 移動通信=携帯

・「VHF」(1ch~12ch)
1ch~3ch(V-Low): テレビ以外の放送
4ch~12ch(V-High): 移動通信またはテレビ以外の放送

で・・・V-Highについては、「移動体向けのマルチメディア放送」ということになり、「モバキャス/NOTTV」が始まった。

ただ、「V-Highのマルチメディア放送」=「モバキャス」=「NOTTV」というわけではない。

「V-Highのマルチメディア放送」=「V-Highの周波数を使用したISDB-Tmmを採用した放送」であり、この周波数帯を使用することができる業者枠は複数用意されている。
具体的には、大規模枠:1枠、中規模枠:1枠,小規模枠:複数枠、ワンセグのみ:7枠、がある。

ただ、現段階で参入し、放送を開始しているのは「株式会社mmbi」だけである。
mmbiが運営する送信所を含むインフラサービスと言えるものが「モバキャス」で、このインフラを使って番組を放送しているのが「NOTTV」となっている。

V-Highの方は、サービスがとりあえずは、立ち上がっている。

それに対して、V-Lowの方が不透明すぎる。

FM放送局とかがマルチメディアサービスを行う、というのがありましたが、先日解散。

じゃぁ、今後、どうするのかなぁ?と総務省のページを確認しにいくも、総務省のやる気がよく分からない・・・
放送政策の推進」のページからリンクされている「V-Lowマルチメディア放送実証実験の進捗状況」での最新情報は、2011/12/27付けの「V-Lowマルチメディア放送の実証実験計画の取りまとめ結果」。

しかし検索すると、2013/10/29付けの「V-Lowマルチメディア放送の放送設備に係る 安全・信頼性に関する技術的条件」とかも出てくるので、更新がないわけでもないようだ。

ちなみに、上記で公開されている「別紙2 情報通信審議会 情報通信技術分科会 放送システム委員会報告 概要」が、V-Lowマルチメディア放送が何を目指しているのか解説されていてわかりやすい。

ただ・・・ですね。その別紙2には
「平成26年2月3月頃 ハード事業者募集・審査」
「平成26年4月5月頃 ソフト事業者募集・審査」
とか書かれているんですが、どうなってるんですかね・・・

V-Low,V-Highを含めた資料としては「携帯端末向けマルチメディア放送に関する調査検討 報告書」というものを発見

いままでFM放送とVHFテレビで使用されていた周波数帯V-Lowの利用方針は以下。

76~90MHz
 FM放送(コミュニティ放送を含む)
 中波放送の難聴(地理的・地形的難聴、海外波混信)対策にかかるFM方式の中継局
90~95MHz
 民間放送事業者の中波放送の難聴(地理的・地形的難聴、海外波混信)対策、津波などの災害への対策にかかるFM方式の中継局
 コミュニティ放送局
95~99MHz
 ガードバンド
99~108MHz
 地方ブロック向けマルチメディア放送(ISDB-TSB方式)
 デジタルコミュニティ放送

先日、話題になったFM局のマルチメディア放送は、「地方ブロック向けマルチメディア放送(ISDB-TSB方式)」のことであろうと想定されるんだけど、「地方ブロック」という謎の単語が・・・

地方ブロック向けマルチメディア放送では、チェンネルを2つ用意し、全国を7ブロックに分割し、各隣接ブロックが同じチャンネルを使わないようにする、という方針であるとのこと。

つまりは、現状の放送範囲より広いけど、ある程度の地域放送をおこなうための枠、という感じのようだ。

ただ、全国でチャンネルが2つしか用意していないようなので、他の地域の放送を見る、というのは、難しそうな仕組みです。

が・・・そもそも参入してくれそうなところがないので、結局どうするんでしょうかねぇ・・・

MySQLとpostgresqlでのレプリケーション動作検証時使用perlスクリプト

MySQLのレプリケーション機能を使うとどのような動きをするのかを確認中。

テストデータのインサートと確認を行うためのスクリプトを作成した。

標準で用意されているデータベース「test」内にテーブル「testtable」を作成して、そこにデータを投入することにした。

# mysql -u root
mysql> use test;
mysql> create table testtable (
	id int(20) not null auto_increment,
	name char(100) default '' not null,
	text char(255) default '',
	primary key (id)
);
mysql> grant all on test.* to テストユーザ名@ホスト名 identified by 'パスワード';
mysql>

スクリプトはperl。
perl-DBD-MySQLパッケージをインストールしておくこと。

#!/usr/bin/perl

use DBI;

my $mysqluser="MySQL内のユーザ名";
my $mysqlpassword="パスワード";
my $masterserver="マスタサーバ名";
my $slaveserver="スレーブサーバ名";
my $dbname="test";
my $tablename="testtable";
$max=5;

sub getselect{
	my($server,$user,$password,$dbname,$tablename)=@_;
	my $db=DBI->connect("DBI:mysql:$dbname:$server",$user,$password);
	my $sth=$db->prepare("select id,name,text from $tablename order by id desc");
	$sth->execute;
	print "\tname\ttext\n";
	my $count=$max;
	for(my $i=0; $i<$sth->rows; $i++){
		my @tmp=$sth->fetchrow_array;
		if($count>0){
			print $tmp[0] ."\t". $tmp[1] ."\t". $tmp[2] ."\n";
			$count--;
		}
	}
	$sth->finish;
	$db->disconnect;
}

sub insertvalue{
	my($server,$user,$password,$dbname,$tablename)=@_;
	my $db=DBI->connect("DBI:mysql:$dbname:$server",$user,$password);
	my $str1=substr("00".rand(100),-3);
	my $str2=localtime();
	my $sth=$db->prepare("insert into $tablename values (NULL,'name$str1','$str2')");
	$sth->execute;
	$sth->finish;
	$db->disconnect;
}

if($ARGV[0] =~ /ins/){
	print "=== insert ===\n";
	insertvalue($masterserver,$mysqluser,$mysqlpassword,$dbname,$tablename);
}

print "=== master:$masterserver ===\n";
getselect($masterserver,$mysqluser,$mysqlpassword,$dbname,$tablename);

print "=== slave:$slaveserver ===\n";
getselect($slaveserver,$mysqluser,$mysqlpassword,$dbname,$tablename);

使い方
情報確認のみ「mysqltest.pl」
データ追加と情報確認「mysqltest.pl ins」

オプションとして「ins」(insert)を指定すると、データを追加する、というもの。

実行すると以下の様な形となる。

# mysqltest.pl ins
=== insert ===
=== マスタサーバ ===
name    text
248     name284 Fri Jun 20 11:42:01 2014
247     name563 Fri Jun 20 11:35:01 2014
246     name934 Fri Jun 20 11:28:01 2014
245     name769 Fri Jun 20 11:21:01 2014
244     name227 Fri Jun 20 11:14:01 2014
=== スレーブサーバ ===
name    text
248     name284 Fri Jun 20 11:42:01 2014
247     name563 Fri Jun 20 11:35:01 2014
246     name934 Fri Jun 20 11:28:01 2014
245     name769 Fri Jun 20 11:21:01 2014
244     name227 Fri Jun 20 11:14:01 2014
#

「単純増加する数字 name+ランダム数字 日付」という出力内容のうち、最新の5件のみ表示する、というものになっている。

マスタサーバの出力内容と、スレーブサーバの出力内容を比べる、というもの。


2021/05/19

postgresql環境でのバックアップ試験のためにこのスクリプトを流用しようとしたところ、作り直しが必要なポイントがあった。

まずはテーブル作成時の違い

create table testtable (
	id int(20) not null auto_increment,
	name char(100) default '' not null,
	text char(255) default '',
	primary key (id) 
);

これをそのまま実行すると下記エラーになる

ERROR:  syntax error at or near "("
LINE 2: id int(20) not null auto_increment,

int型auto_increment属性というのはMySQL特有で、postgresqlではserial型で置き換える。
「int(20) auto_increment」→「serial」に変更すると、以下のようになる。

create table testtable (
	id serial not null,
	name char(100) default '' not null,
	text char(255) default '',
	primary key (id) 
);

また、perlモジュールは DBD:mysqlではなくDBD:Pgに変更になり、データベースとホスト指定手法が変わった。

パッケージとしては perl-DBD-Pg をインストールする。

#!/usr/bin/perl

use DBI;

my $mysqluser="postgresql内のユーザ名";
my $mysqlpassword="パスワード";
my $masterserver="マスタサーバ名";
my $slaveserver="スレーブサーバ名";
my $dbname="test";
my $tablename="testtable";
$max=5;

sub getselect{
        my($server,$user,$password,$dbname,$tablename)=@_;
        my $db=DBI->connect("DBI:Pg:dbname=$dbname;host=$server",$user,$password);
        my $sth=$db->prepare("select id,name,text from $tablename order by id desc");
        $sth->execute;
        print "\tname\ttext\n";
        my $count=$max;
        for(my $i=0; $i<$sth->rows; $i++){
                my @tmp=$sth->fetchrow_array;
                if($count>0){
                        print $tmp[0] ."\t". $tmp[1] ."\t". $tmp[2] ."\n";
                        $count--;
                }
        }
        $sth->finish;
        $db->disconnect;
}

sub insertvalue{
        my($server,$user,$password,$dbname,$tablename)=@_;
        my $db=DBI->connect("DBI:Pg:dbname=$dbname;host=$server",$user,$password);
        my $str1=substr("00".rand(100),-3);
        my $str2=localtime();
        my $sth=$db->prepare("insert into $tablename (name, text) values ('name$str1','$str2')");
        $sth->execute;
        $sth->finish;
        $db->disconnect;
}

if($ARGV[0] =~ /ins/){
        print "=== insert ===\n";
        insertvalue($masterserver,$mysqluser,$mysqlpassword,$dbname,$tablename);
}

print "=== postgresql:$masterserver ===\n";
getselect($masterserver,$mysqluser,$mysqlpassword,$dbname,$tablename);

print "=== slave:$slaveserver ===\n";
getselect($slaveserver,$mysqluser,$mysqlpassword,$dbname,$tablename);

CentOS5でFedora20やRHEL6のrpmがrpm2cpioで展開できない

CentOS5環境で、Fedora20のRPMファイルを展開しようとした。

# wget http://archives.fedoraproject.org/pub/fedora/linux/updates/20/i386/nss-3.16.1-1.fc20.i686.rpm
# rpm2cpio nss-3.16.1-1.fc20.i686.rpm |cpio -ivd
cpio: warning: skipped 6151 bytes of junk
cpio: warning: archive header has reverse byte-order
cpio: g イaォ7・
             z,a1m俿イフJcレ[}\&・dDDシFンWロ [&;Y(・・クJ.疱:: unknown file type
cpio: premature end of file
#

エラー・・・

調べてみると、この展開の問題はRHEL5での問題らしい。
Bug 602423 – rpm2cpio fails on rhel-6 rpms
Bug 837945 – Can’t extract rpms from RHEL6 on RHEL5

Bug 602423の方に、この問題に対処するための、rpm2cpio.shというのがアップロードされている。(patched parmezan, works for me on rhel5 (1.48 KB, application/x-sh) というやつ)

このrpm2cpio.shを使ってみると、期待通りの動作をした。

# ./rpm2cpio.sh nss-3.16.1-1.fc20.i686.rpm|cpio -ivd
./etc/pki/nssdb
./etc/pki/nssdb/cert8.db
./etc/pki/nssdb/cert9.db
./etc/pki/nssdb/key3.db
./etc/pki/nssdb/key4.db
./etc/pki/nssdb/pkcs11.txt
./etc/pki/nssdb/secmod.db
./usr/lib/libnss3.so
./usr/lib/libnsspem.so
./usr/lib/libsmime3.so
./usr/lib/libssl3.so
./usr/lib/nss/libnssckbi.so
./usr/share/man/man5/cert8.db.5.gz
./usr/share/man/man5/cert9.db.5.gz
./usr/share/man/man5/key3.db.5.gz
./usr/share/man/man5/key4.db.5.gz
./usr/share/man/man5/pkcs11.txt.5.gz
./usr/share/man/man5/secmod.db.5.gz
5146 blocks
#

rpm2cpio.shの中を確認してみる。

#!/bin/sh

pkg=$1
if [ "$pkg" = "" -o ! -e "$pkg" ]; then
    echo "no package supplied" 1>&2
   exit 1
fi

leadsize=96
o=`expr $leadsize + 8`
set `od -j $o -N 8 -t u1 $pkg`
il=`expr 256 \* \( 256 \* \( 256 \* $2 + $3 \) + $4 \) + $5`
dl=`expr 256 \* \( 256 \* \( 256 \* $6 + $7 \) + $8 \) + $9`
echo `od -j $o -N 8 -t u1 $pkg`
 echo "sig il: $il dl: $dl"

sigsize=`expr 8 + 16 \* $il + $dl`
o=`expr $o + $sigsize + \( 8 - \( $sigsize \% 8 \) \) \% 8 + 8`
set `od -j $o -N 8 -t u1 $pkg`
il=`expr 256 \* \( 256 \* \( 256 \* $2 + $3 \) + $4 \) + $5`
dl=`expr 256 \* \( 256 \* \( 256 \* $6 + $7 \) + $8 \) + $9`
 echo "hdr il: $il dl: $dl"
exit

hdrsize=`expr 8 + 16 \* $il + $dl`
o=`expr $o + $hdrsize`
EXTRACTOR="dd if=$pkg ibs=$o skip=1"

COMPRESSION=`($EXTRACTOR |file -) 2>/dev/null`
if echo $COMPRESSION |grep -q gzip; then
        DECOMPRESSOR=gunzip
elif echo $COMPRESSION |grep -q bzip2; then
        DECOMPRESSOR=bunzip2
elif echo $COMPRESSION |grep -q xz; then
        DECOMPRESSOR=unxz
elif echo $COMPRESSION |grep -q cpio; then
        DECOMPRESSOR=cat
elif $EXTRACTOR | od -x | head -1 | grep -q '37fd 587a '; then
        DECOMPRESSOR=unxz
else
        # Most versions of file don't support LZMA, therefore we assume
        # anything not detected is LZMA
        DECOMPRESSOR=`which unlzma 2>/dev/null`
        case "$DECOMPRESSOR" in
            /* ) ;;
            *  ) DECOMPRESSOR=`which lzmash 2>/dev/null`
                 case "$DECOMPRESSOR" in
                     /* ) DECOMPRESSOR="lzmash -d -c" ;;
                     *  ) DECOMPRESSOR=cat ;;
                 esac
                 ;;
        esac
fi

$EXTRACTOR 2>/dev/null | $DECOMPRESSOR

CentOS5ではサポートされていないヘッダと署名部分を削除してから、個別で展開しているような感じですかね。