Dynamic Programmingについて

動的計画法(DP, Dynamic Programming)について

最近やたらと動的計画法という単語を聞くので、基本をまとめておく。

動的計画法とは?

動的計画法(どうてきけいかくほう、英: Dynamic Programming, DP)は、計算機科学の分野において、アルゴリズムの分類の1つである。対象となる問題を複数の部分問題に分割し、部分問題の計算結果を記録しながら解いていく手法を総称してこう呼ぶ。
引用:Wikipedia

え?それって分割統治法じゃない?
同じものなのかな?

分割統治法と動的計画法の違いについて

アルゴリズムを設計する際には、まず全体をいくつかの小問題に分解して、その一つ一つを解いていくことにより全体の解を得る方法があります。このような手法を、分割統治法(divid and rule)と言います。

この方法は、ある程度複雑な問題を解く際には妥当な方法であるような感じがします。しかし、現実問題として、この方法には大きな欠点があります。なぜなら、実際に運用してみると、同じ問題を何回も解かなくてはならないようなケースに遭遇するからです。

そこで、「実際に必要とされるかどうかはわからないが、必要になりそうな小問題をあらかじめ解いておいて保存しておき、必要なときに取り出して使う、というアプローチも存在します。これが動的計画法(dynamic programming)の考え方です。

 

引用:

sevendays-study.com

納得。したつもり。
また分からなくなるかもだけどそのときはまた調べよう。

SSH認証における公開鍵の設定

qiita.com

↑これ見てやれば楽勝(だと思う。)

注意点は、公開鍵と、sshディレクトリのpermissionだろうか。

基本的な流れは

1.ローカルで公開鍵と秘密鍵のペアを作成。

2.公開鍵を対象サーバーの ~/.ssh/authorized_keys に追記。(permissionに気をつけて)

$ cat id_rsa.pub >> authorized_keys

とすればおk

3.後は

$ ssh user@host

でアクセスすれば自動的にパスワード無しでログインできる。

 

続き!

一人で複数サーバーにアクセスするような人は、

方法1 : 先ほど作った公開鍵を使い回す。(この公開鍵を異なるサーバーにも追記)

方法2 : 複数の秘密鍵/公開鍵ペアを作成。使用する秘密鍵は、

$ ssh -i ~/.ssh/秘密鍵1 user@host1

$ ssh -i ~/.ssh/秘密鍵2 user@host2

ってすることで使い分け可能。(だけどめんどい)

 

そこで、これ↓

www.ellinikonblue.com

~/.ssh/config に適当なホスト名と秘密鍵の対応を記載しておくことで解決できる!

 

ちなみに自分はshellスクリプト使ってsshをラップしたシンプルなコマンド作ってる。

コマンド作ると、

1. よく使うホスト一覧を表示できる。(物忘れ激しい人には良いよね。)

2. よく使うホストに簡単にアクセス(当然、IPアドレス打ち込んだりする必要全く無い。)

等のメリットがある。数行でかけるからオススメ。

 

UbuntuでのVPN構築

自宅から学内LANに入るため、さぁ〜てUbuntuVPN接続を設定しますか。

と、ものの数分で終わらせる予定だったのですが…

結果的に1時間くらいもがく羽目になりました。

ちなみに Ubuntu 16.04 LTS 64bit です。

 

まず、学内ではCiscoVPNを使っているので、CiscoVPN接続ができる環境を整えなければなりません。

 

まずはTerminalで

$ sudo apt-get install vpnc network-manager-vpnc

と入力します。

他のwebサイト等を見た限りではこれだけで、

システム設定→ネットワーク→左下の+ボタン→VPN作成

を押してやることでVPNの種類選択

f:id:physickelback:20161112193710p:plain

がでてくるからCisco VPNを選択して設定すればええんやで〜

ってかいてあったりするんですが、実際やってみると・・・

標準のPPTPしかないんやけど・・??

さらに、再ログイン、再起動してみても状況は変わらず、ここでかなりハマりました。

いろいろ試行錯誤しつつ、やっとたどり着いたページがこれですね↓

bugs.launchpad.net

僕の場合、まだ

$ sudo apt-get install vpnc network-manager-vpnc-gnome

を試してなかったんで、これを実行してやると…

f:id:physickelback:20161112194209p:plain

ふぉぉぉぉぉ!!
良かったぁ。

これでもうまく行かなかった方は上に記したページにあるように、

$ sudo apt-get install network-manager-gnome network-manager-pptp network-manager-pptp-gnome network-manager-iodine network-manager-iodine-gnome network-manager-openconnect network-manager-openconnect-gnome network-manager-openvpn network-manager-openvpn-gnome network-manager-strongswan network-manager-vpnc network-manager-vpnc-gnome 

を実行して、network-manager関連のソフトウェアをまるごと全部インストールしちゃってみるとうまくいくかもしれません。

 

また、所属機関から指定されているpcfファイルがある場合は、Cisco VPNではなく、"保存したVPN設定をインポートする"を選択します。

pcfファイルのdescriptionに日本語とか入ってるとerrorが出てしまうことがあるので、エディタ等で修正しておくことをオススメします。