読者です 読者をやめる 読者になる 読者になる

gggggraziegrazie

graizegrazieさんのやったこと、学んだことを記録する雑記帳です

RTAB-Mapについてのメモ

最近3DSLAMに興味があり、ROSにも対応したRTAB-Mapをいじってみました。その過程でわかったことなどをメモします。ある程度纏まった量が出てくるまでは箇条書きになりますのでご容赦を(笑)

・Eigen3.3.3には対応せず。3.2.0はOK(RTAB-Map 0.12.5で)

Huawei P9 Liteでアプリによる通知を有効化する方法

先日Huawei P9 Liteに機種変しました。その後Wuderlist等のアプリをインストール・使ったところ、リマインダーの通知が一向に上がってこないという事態に陥りました。調べたところ、P9 Liteのバッテリーマネージャが原因だということがわかりました。本記事では、どうやって通知を有効化すればよいか、設定方法を記載します。

(少なくともP9 Liteでは)、一部のアプリを除き、画面オフ状態やそのアプリが表示されていない時(バックグラウンドでの実行状態)になるとアプリの動作が無効化されるみたいです。そのため、通知を有効化するためには、アプリの動作有効化が必要となります。有効化の方法は単純で、
  「設定」→「詳細設定」→「バッテリーマネージャ」→「保護されたアプリ」
で有効/無効を、タップで切り替えるだけです。

上記「保護されたアプリ」の一覧でwunderlistを有効化することで、リマインダの通知が上がってくるようになりました。参考になれば幸いです。

apt-getとaptitude

Linux

はじめに

 Linuxでは、コンパイラやエディタ、ライブラリ等のパッケージのインストールを、コマンドを使ってできます。そのコマンドは、apt-getとaptitudeというコマンドがあります。下記ではそれぞれの違いについて簡単に説明します。

apt-getとaptitudeの違い

 2つのコマンドの違いは、簡単に言えば推奨パッケージを自動的にインストールするかどうかです。推奨パッケージとは、あるパッケージをインストールした時に、必ずしもインストールする必要はないものの、同時にインストールすることを推奨されるパッケージのことです。

apt-get

 apt-getはパッケージのインストールをするためのコマンドです。インストール可能なパッケージの検索はできません。別のコマンドapt-cacheを使います。推奨パッケージは手動でインストール必要があります。

aptitude

 aptitudeはパッケージのインストールと検索(インストール済みかも同時に表示される)などが出来ます。Ubuntuには標準的には入っていません。なのでUbuntu Community的には推奨してないのかもしれません。なお、aptitude自体は内部でapt-getやapt-cacheを使っています。

update-alternativesの使い方

Linux

update-alternativesとは

 Linuxを使う時、シンボリックリンクを使う時があります。例えばgccでは、生成したバイナリを動かす環境に応じて、バージョンを使い分ける必要があります。この時、毎回必要なバージョン以外のgccを削除することもできますが、シンボリックリンクを使ってバージョン管理をするのが便利です。lnコマンドを使ってシンボリックリンクを張ることもできますが、管理対象が別のパッケージに依存しており、かつそのパッケージのバージョンも変更しないといけないときは面倒です。update-alternativesコマンドはそうした時に使う、目的とするパッケージとそれに従属するパッケージのシンボリックリンクを、一括で切り替えることができるコマンドです。

f:id:graziegrazie:20151112051352p:plain
Fig.1 update-alternativesコマンドのイメージ

update-alternativesコマンドの使い方

 update-alternativesの主要なオプションは、
・--install
 シンボリックリンクの作成・登録
・--slave
 installオプションで作成したシンボリックリンクに従属するシンボリックリンクの作成・登録
・--set
 使用するシンボリックリンクの設定(コマンド)
・--config
 使用するシンボリックリンクの設定(一覧から選択)
・--display
 現在選択されているシンボリックリンクの内容を表示
の5つがあります。下記ではそれぞれのオプションについて説明します。

--install

 installオプションを使う時は下記の様に記載します。

 sudo update-alternatives --install <作成するシンボリックのパス> <グループ名> <実体へのパス> <優先度>

例えばgccの管理を行う時は、
 作成するシンボリックのパス = /usr/bin/gcc
 グループ名 = gcc
 実体へのパス = /usr/bin/gcc-4.8(管理したいバージョンのパスを設定)
 優先度 = 10(任意の数字)
とします。

--slave

 slaveオプションを使う時は、下記の様にinstallオプションを登録する時に、関連するシンボリックリンクを全て記載して使います。

 sudo update-alternatives --install <作成するシンボリックのパス> <グループ名> <実体へのパス> <優先度>\
--slave <作成するシンボリックのパス> <グループ名> <実体へのパス>\
            ・・・・・・・・
--slave <作成するシンボリックのパス> <グループ名> <実体へのパス>

例えばgccと連動してg++のバージョンを変更したい場合は、
 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 10\
--slave /usr/bin/gcc g++ /usr/bin/g++-4.8
として実行する。

--set

 コマンドライン上でグループ名をタイプした時、呼び出される実体が、グループの中のどれを指すか、下記の様にコマンドラインで指定する。

 sudo update-alternatives --install <グループ名> <実体へのパス>

例えばgccとタイプした時、gccの4.8を使いたい場合、
 sudo update-alternatives --install gcc /usr/bin/gcc-4.8
として実行する。

--config

 --setと同じことを、下記の様に対話形式で行います。
 sudo update-alternatives --install <グループ名>

例えばgccとして4.8, 4.9を登録している場合、

There are 2 programs which provide 'gcc'.

Selection Command
-----------------------------------------------
*+ 1 /usr/bin/gcc-4.8
2 /usr/bin/gcc-4.9

として、選択したいバージョンの番号を入力します。

--display

例えばgccを管理する場合、

 sudo update-alternatives --display gcc
 ruby - auto mode
  リンクは現在 /usr/bin/gcc-4.8 を指しています
 /usr/bin/gcc-4.8 - 優先度 20
 /usr/bin/gcc-4.9 - 優先度 10
 現在の `最適' バージョンはgcc-4.8です。

となります。

メモリバンクとメモリインターリーブ

計算機 メモリ

 メモリにアクセスする時、メモリはRead / Writeされるための準備時間が必要になります。準備時間中はメモリへのアクセスが止まっている状況なので、処理時間においてこの時間は無駄な時間です。この無駄時間を短縮し、プロセッサのメモリアクセス時間を高速化する技術がメモリインターリーブです。
 メモリインターリーブでは、アドレスマッピングとメモリアクセスの方法に、それぞれ下記の様な特徴があります。
 ・アドレスマッピング複数のメモリバンクにまたがってアドレスをマッピングする。
 ・メモリアクセス  :複数のメモリバンクに対して連続してアクセス要求を出す。

メモリインターリーブでのアドレスマッピング[1]

 メモリインターリーブを使うとき、複数のバンクを1つのバンクのようにして扱います。下図のように、通常1つのバンクにおいてマッピングされる番地は連続です。しかし、メモリインターリーブを使うときは下図の様に、複数のバンクを使うことで連続にマッピングします(1バンクだけみると不連続)。
f:id:graziegrazie:20151003144221j:plain
図1. メモリインターリーブでのメモリアドレスマッピング方法

メモリインターリーブでのメモリアクセス

 複数のバンクに連続してアクセス要求を出すことで、メモリアクセスにかかるオーバーヘッドを減らします。具体的には、パイプライン処理のようにして、バンク1へのアクセス要求が完了し、データをRead / Writeしている間に、バンク2へアクセス要求を出します。これにより、メモリアクセス時に必要となる準備時間を見かけ上減らします。
f:id:graziegrazie:20151003150049g:plain
図2. メモリインターリーブでのメモリアクセス方法(出展:[2])

 上記の様にデータをマッピングし、アクセスすることで、メモリインターリーブではメモリアクセス時間を短縮しています。

最尤推定とベイズ推定とMAP推定

最尤推定

 最尤推定とは、ある確率モデルが最も尤もらしい時のパラメータを推定する手法です。例えばコインの表・裏が出る確率を推定するモデルがある時、その確率はコインの状態 θに左右されます。よってコインの表・裏の出る確率を示すモデルは、
{ \displaystyle
確率モデル : P(x|θ)\\
        x: コインの表か裏かを示す確率変数\\
        θ: コインの状態。θ=\{θ_{1}, θ_{2}, ... , θ_{N}\}
}
として表されます。
 ここで、試行を繰り返して得たxの集合 X=\{x_{1}, x_{2}, ... , x_{M}\}があるがパラメータ θの値が不明である時、パラメータ θがどのような値か推定することを考えます。確率モデル中のxは試行で得た固定の値とするため、確率モデルはパラメータ θを変数に持つ関数とみなせます。つまり確率モデルは、データXを取る時のパラメータ θの確率分布とみなせます。この確率分布の中で確率が最大となる θが、データXを得た時のパラメータとなります。この操作を、確率モデルに対する最大尤度の算出、すなわち最尤推定と呼びます。

ベイズ推定

 追々書きます

MAP推定

 追々書きます

厚生年金について調べてみた

生活

 厚生年金という言葉は知っているものの、制度について全然理解していないことに最近気づきました。今回は厚生年金について調べた結果を纏めます。ただし、会社勤めをしている1980年以降生まれの方を対象として記載したので、一部省略した記述となっています。自分のケースは下記を参考にご自身で調べていただければと思います。

厚生年金とは

 厚生年金とは、公的年金の1つです。公的年金の1つである国民年金は誰でも加入できるのに対し、厚生年金は会社勤めをする人しか加入することが出来ません(*1)。

厚生年金の納付額

 厚生年金加入者は、国民年金と厚生年金の両年金分を納付する必要があります。納付する額は、

  1. 毎年4月~6月の間の報酬(基本給+各種手当)の平均
  2. 国の定める標準報酬月額表[1]
  3. その時の保険料率

から算出されます。

 例えば平成26年9月分からの保険料額表を見ると、1.の平均報酬額が30万だと、標準報酬月額表では18等級になります。この時の保険料率は17.474%であることから、保険料は月額約5.24万円とわかります。ただし厚生年金は、会社と個人が50%:50%の折半で保険料を納付します。そのため上記例では、個人で納付する額は月額約2.62万円となります。

 この額は同年9月~次年の8月まで適用されます。ただし、7月以降に平均報酬が4~6月の平均報酬から大きく変化した場合、適宜保険料は改定される模様です[2]。

 なお、厚生年金受給資格に満たない人は、個人での任意加入も可能です。

休職中の取り扱い

 出産前後休業や育児休業中は、会社分・本人分の両方が免除となります(育児休業については子供が3歳になるまで)[3]。その他休業中の厚生年金料負担は、会社の決まり次第で変化する模様です(本人はその時納めないにしても、会社が負担してくれたり、会社が一時的に肩代わりして別途支払いするときがあります)[2]。

厚生年金の受給額

 年金機構のサイト[4]を見ると、

   年金額 = 定額部分(1)+報酬比例部分(2)+加給年金額(3)

   (1)1,626円 × 定額部分の単価[5] × 被保険者期間の月数
(2)平均標準報酬月額(*2) × 報酬比例部分の乗率[5] × 被保険者期間の月数
(3)厚生年金保険の被保険者期間が、20年以上または40歳(女性は35歳)以降15年の人で、定額部分支給開始年齢に達した時点で、その人に生計を維持されている対象者がいる場合に支給[4]。
(*2)被保険者期間の各月の標準報酬月額と標準賞与額の総額を、被保険者期間の月数で除して得た額。

として算出されます。

 例えば昭和59年9月8日に生まれた人が下記の条件を満たす時、

  • 定額部分の単価 : 1.000([4]より)
  • 報酬比例部分の乗率 : 5.481([4]より)
  • 厚生年金加入期間 : 40年 = 40×12 = 480月
  • 平均標準報酬月額 : 70万(生涯平均年収840万)
  • 加給年金の対象となる家族はいない

   年金額 = (1,626×1.000×480) + (70×5.481×480) + 0
= (780,480) + (184,162)
       = 964,642(月額約8万円)
となります。
 うーん。厚生年金だけの額とはいえ、少ない気がしますねぇ。。。