Windows10からRaspberry Pi 3 にリモートデスクトップ接続
前回の続きです。
ossyaritoori.hatenablog.com
リモートデスクトップ接続
平たく言うとPCから他のPCの画面を操作するといったところでしょうか。
左下のメニューから「リモートデスクトップ接続」と検索することで以下のウィンドウを出現させましょう。
ここに前の記事で設定したIPアドレスを打ち込むことでリモート接続が可能です。
ラズパイ側の設定
リモートデスクトップ接続では基本的に操作される側で許可を出す必要があります。
どうも僕はこれを設定した覚えがないのでどこかの段階でパスしたか,ラズパイでは必要ないかのどちらかかと思われます。
とにかく,次に必要なのはリモート接続用のソフトのインストールです。
xrdpのインストール
Debian環境で用いられるxrdpというソフトをインストールします。
$ sudo apt-get install xrdp
はい,これで終了です。
記事を別にしなくても良い気がしてきた。
デフォルトではUSキーボードらしいので変更するには以下のサイト等を参照すると良いでしょう。
Raspberry Pi でリモートデスクトップ - Qiita
Windows10からRaspberry Pi 3 にSSH接続
奨学金関連で記事を書いたので勢いづいてラズパイの記事も書くことにします。
今回はWindows10からラズパイに接続して遠隔操作する為のセットアップ等について書きます。
SSH接続によるターミナル操作
SSH接続とは遠隔でデバイスを操作する際の一手法です。
qiita.com
今回は特別なことはせず,ラズパイ側のIDとPassを使ってラズパイを制御することにします。
ラズパイ側の設定
raspberry pi 3 で raspbian jessieを使っている方は,
左上のメニューから
「設定」→「Raspberry Piの設定」と進んでいき,
このように「インターフェイス」の欄からSSHを有効にしてください。
この作業は終わった後再起動をすることを推奨します。
DHCPの設定と固定アドレスの割り振り
次にサーバから振られるIPアドレスを固定化します。
ネットワークインターフェイス の変更
以下の過去記事を前提にしていますので,ここを触ったことのある人はスルーして構いません。
Raspberry Pi をutroamにつなぐ (WPA2-EnterprizeのIDとpassを必要とするwifiネットワークにつなぐ) - 粗大メモ置き場
/etc/network/interfacesのファイルを編集します。
当然スーパーユーザーで行ってください。
$ sudo emacs /etc/network/interfaces
なお,emacsの代わりにgeditやviなどを用いても構いません。
参考文献3 にならって以下の様に変更を加えてください
iface eth0 inet manual
↓変更
iface eth0 inet dhcp
(以下は不要ですが念のため)
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
↓変更
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
追加
iface default inet dhcp
/etc/dhcpdc.confの書き換え
次にetcの下に存在するファイルを編集します。
$ sudo emacs /etc/dhcpdc.conf
このファイルの最後尾に次の4行を追加します。
interface eth0 static ip_address=X.X.X.X/24 static routers=X.X.X.1 static domain_name_servers=X.X.X.1
なお,X.X.X.Xに入るのはイーサネットのIPアドレスで,
$ ifconfig eth0
等を打ってInetアドレスとある所を見てください。
詳しくは他のサイトを当たってください。
本章は以下の記事の手法に倣っています。
hattotech.hatenablog.com
Bash for Windowsから接続
WindowsからSSH接続を行うにはTeraTermなどのSSH接続用のソフトを使うか,Windows10から追加になったBash for Windowsという機能を用います。
コマンドプロンプトを開いて
$ bash
と打つことで起動可能です。初回設定時には結構な容量のダウンロードと再起動が必要になるので予め準備をしておくことをおすすめします。
bashの画面では通常のLinuxのターミナルと同様に操作が可能です。(なおたまにバグるのでCtrl+Cは乱発しない方が良さげ)
$ ssh X.X.X.X(先程設定したIPアドレス) -l pi
とすることでpiユーザとしてログインできます。
他のユーザ名を設定している場合は,
$ ssh (IPアドレス) -l (ユーザ名)
という風に入力します。
成功であれば,初回接続の確認とパスワードの入力を求められます。
プロセスを終了させたい場合は,
$ exit
で終了できます。
ここまでできれば,ラズベリーパイをディスプレイに繋がずとも他のPCからプログラムを実行させることが可能です。
次の記事では,リモートデスクトップ接続について書きます。
追記:無線ネットワークの固定化
無線ネットワークも同様に固定化できるかと思いきや,別のやり方が必要のようでした.
/etc/network/interface の一部を以下のような感じで編集するそうです.
事前にifconfigをうって現在取得しているアドレスを割り振るのが無難と思われます.
(他の人が使っていたらどうなるか知らないので)
allow-hotplug wlan0 iface wlan0 inet static # "manual"もしくは"dhcp"となっていれば"static"に変更 address 192.168.1.130 #2~254までの使いたい固定IPアドレスを書く(ここでは130とした) netmask 255.255.255.0 #接続するネットワークの設定に合わせる。 gateway 192.168.1.1 #接続するネットワークの設定に合わせる。 wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf #ここは以前変えたところ
・参考サイト
http://ysdyt.github.io/blog/2015/06/28/raspi-wifi-static-ipaddress/
怠惰な学生がJASSOの第一種奨学金の取得のために準備するべきこと(気をつけるべきこと)
結論から言うと保証人が立たなかった関係で私は奨学金はやめました。
腹いせに,事務作業の苦手な学生を想定して注意点とかつらつら書いて置くことにします。
なお,学校によって必要書類が若干違うという噂も聞いているのでそこんところは臨機応変に。
- Q:奨学金って私でも貰えるの?
- 奨学金の書類を受け取りに行こう
- 収入に関する証明書で親からハンコとサインをもらう
- 先生に推薦書をいただく
- 収入に関する証書はめんどくさいぞ!
- 保証人を2人立てたか?
- 申請窓口には早く並べ
- おわりに
Q:奨学金って私でも貰えるの?
A:一人暮らしの大学院生なら大体もらえます。
奨学金には本来所得制限があり,マジモンに困ってる人以外は受けられないのですが,
大学院生になると実家の所得状況に関わらず,一人暮らしの世帯の収入と支出で判断してもらうことが可能です。
従って,「実家はそこそこお金あるけど一人暮らしきついのでお金ください」という事が可能です。
奨学金の書類を受け取りに行こう
大学の事務に行って,奨学金の書類を受け取りましょう。話はそれからだ。
複数のキャンパスにまたがっている場合は中心的な1キャンパスでしか配ってないとか受け付けないとかザラです。
殺意が湧きますね。
後は,分厚い冊子をよく読んで必要書類を準備すればいいです(記事終了)。
このやる気を削ぐ書類を見るより身近な人に聞いたほうが良いです。
友達や頼れる先輩の居ない人のために
以下幾つかの注意点についてまとめてみました。
収入に関する証明書で親からハンコとサインをもらう
月々の親の仕送り額を親に書いてもらってハンコとサインを貰う必要があります。
この書類は大事な上,親元を離れて一人暮らししている君達には非常に面倒くさいと思うので最優先でやってもらいましょう。
なお,最低限名前とハンコだけ貰えば仕送り額は自分で書いても良いようです。
まぁうまく調整してください。
先生に推薦書をいただく
必要書類の中で早めにやったほうが良いものとして,推薦書があります。
この推薦書には先生のハンコとサインが必要なので締め切りギリギリにいきなり手に入る人は少ないでしょう。
早めに動くんだよ。(なお,うちの大学は事情を説明して待ってもらうことが可能。)
なお,推薦所見は基本的には自分で草案を書いて先生の負担を減らすのが普通です。
大学院生たるもの自分のアピールポイントくらい自分で用意できるようにしましょう。
奨学金申請のための推薦状/推薦文の例文
収入に関する証書はめんどくさいぞ!
もし貴方がバイトをしていたなら面倒な事が起きます。
貴方の前年度の収入と今年度の収入がどんなものになるのか,きちんと雇用主に証明して貰う必要があります。
それに加えて源泉徴収票もきちんと添えなければ行けません。捨てるなよ。
なくしたらバイトはしていなかったことにしとけ
通帳のコピーも要求される
収入の欄に貯金の取り崩しなどの項があり,それに当てはまる人は直近三ヶ月の通帳コピーも要求されます。
普段通帳に記帳しない諸君は銀行に行く必要があります。
また,通帳の1ページ目も要求されるので忘れずにコピーを。
ていうか通帳なんか複数持ってて当たり前だしこんなのみても何の意味もないぞ。
保証人を2人立てたか?
返済の仕方において,保証人を立てる方法と機関保証に頼る方法があります。
後者は他の機関に返済時の保証を頼む代わりに毎月奨学金のいくらかを天引きされるシステムになります。
つまり貰った額より多く返さなければいけないので,なるべく前者の方が良いです。
保証人の条件
保証人の条件はざっくりいうと「逃げない」かつ「十分返済能力のある」親族です。
そして,「父母」に加えてもう1人選出する必要があります。
おじやおばに頼るのがよくあるパティーンですが,親族が海外にいる場合は厄介です。(実際断られました。)
親族以外にもこれをお願いすることが出来ますが,収入の証明書や誓約書を出させるなんて,
今時儀父母くらいにしか頼めないのではないだろうか。(嫁はダメだそうな)
申請窓口には早く並べ
当然ですが申し込み当日にはたくさんの人々が奨学金を申請しに来ます。
窓口の狭いこと人の多いこと。早めに書類を仕上げて並んで提出するのが精神衛生上最も良いかと思われます。
そしてこういう手続は漏れがあるのが前提なので多少書類が足りなくてもとにかく期日までに行ってみること!
おわりに
お金周りはめんどくさい!
パワポのお洒落テンプレートを作ろう
ご無沙汰しております。
最近ずっと堅い内容についてばかり記事を書いてきたので
たまには女子力を発揮してお洒落なPPTのテンプレートを作ってみようかなと思います。
自作テンプレートの作り方
PPTのテンプレはネット上にたくさん落ちていますが,一手間かけることで自分だけの書式を作ることが可能です☆
具体的には「表示」タブの中の「スライドマスター」という項目からこれを編集できます。
support.office.com
スライドマスターの中で図や写真を挿入することによって,
このように全てのスライドに変更を適用できます。
こうやってテンプレートが出来るってわけ。
デザインセンス0でも出来る ♡ お洒落テンプレートの作り方
ぶっちゃけオシャレなスライドを作るにはセンスが必要です。
でもセンスが皆無な我々にもそれっぽいものを作ることは可能です。
その方法は…「お洒落な画像を使う」ことです。
お洒落は結局イケメン(良い素材)を選ぶところが大きいってことです。
残酷ですね!!!
それにしても誰だこんな画像作ったやつは。
つまりこういうことです。
おしゃれな画像探し
おしゃれな検索ワードで画像検索しましょう。
その際「壁紙」とつけることで良い画像にめぐり逢う確率が上がります。
何故なら,壁紙はその時点である程度デザイン性を考えられているものがほとんどだからです。
すでに厳選済みのイケメンをスカウトすることができるというわけです。
ただ,できるだけシンプルな画像をチョイスすることをおすすめします。
最重要キーワードは「シンプル」です。
スライドへの加工
加工もなるべく簡単にすべきです。
四角いオブジェクトを被せて透過するのが最も素材を活かせて簡単かと思います。
端っこのほうを少しだけ露出することで透過している感を出すテクとかは結構使えます。
最も難しいのはタイトルだと思っています。
正直全然うまく作れませんでしたが,お洒落画像+透過+影 くらいのシンプルさでそれなりに見れるものには仕上がりました。
まとめ
イケメンはシンプルに清潔な格好をするだけでお洒落。
中国に来た時の連絡手段をどうするか
TexStudioの機能集/Extention
先日TexStudioを布教したものです。
布教活動の一環として便利機能を幾つか紹介したいと思います。
TexStudio入れてない方は以下のページ等参考にどうぞ。
ossyaritoori.hatenablog.com
ドラッグアンドドロップによる図の貼り付け
TexStudioニキはドラッグアンドドロップ(D&D)で図を張れます。
実際にエクスプローラーからD&Dすると次のような画面が出ます。
何もいじらないでも図は出せますが,黄色マーカを引いたサイズの指定と
Captionの設定,後は論文の場合はtopに配置するように記述するようにしましょう。
今気づいたのですが左下で設定を保存できますね。
- 良いところ:ファイルを全て相対pathの形で貼るため何処からでも貼れる。
- 注意点:ディレクトリ名が日本語だとghostscriptが場所を読めない時がある。
基本的には使い得な機能です。
簡単行列or表作成
[ウィザード]→[簡単行列作成]で簡単に行列を作れます。
意外とbegin{array}と&書くの面倒ですからね。
これも重宝している機能の1つです。
英文スペルチェック
英語で文章を書く際にリアルタイムでスペルチェックを行ってくれるのはとても便利な機能です。
専門用語等は教える必要がありますが…
「エディタ」で以下のインラインチェックという箇所を「有効」にします。
なお,日本語文書ではスペルチェックが超うるさくなるので適宜ここを開いてON/OFFしてください。
次に,「言語チェック」あるいは「Language Checking」を参照して使用する辞書の言語を設定します。
デフォルトではde_DE(ドイツ語)ですので変えないと悲惨なことになります。
追加の辞書の入手
なお,デフォルトでも辞書は入っているようですが上手く動かない場合もあります。
英語版の辞書ファイルはオンラインで入手可能です。以下のoxtファイルをダウンロード後解凍します。
US English Spell Checking Dictionary | Apache OpenOffice Extensions
解凍して出来たフォルダをtexstudio\dictionary以下に移動してその位置を「スペルチェック辞書のディレクトリ」へとコピーします。
最終的な見た目はこんな感じ。
文法も見てくれるらしいですがどの程度かは不明です。
赤線で表示されない時
「構文の強調表示」の「言語の確認」において,「スペル間違い」で赤下線を引くように設定しないと何も起こりません。
一度ハマったのでメモとして残しておきます。
簡単?数式作成(ネタ)
数式補助のところを押すとこんなのも出ます。
お絵かきで数式を書けるのは初心者に優しいですね。
ペンタブがある環境などでは比較的活躍の余地があるかもしれません。
ちょっと使い慣れない感じの記号を入れてもきちんと出来るようです。
案外有能な機能な気がしてきた。
こんな形式でコードを生成してくれるようです。
$\left\{\begin{array}{c}\stackrel{.}{x}=Ax+Bu\\ y=Cx+Du\end{array}\right\$
すごーい!
lとかiとかの識別は苦手っぽいです。
背景色変更
TexStudioの欠点として背景色で暗い色を選べないという問題があります。
これは目に悪い…
tex.stackexchange.com
ここの記述を参考にして以下の
1.darktheme.txprofileというファイルを
AppData/Roaming/texstudio以下に作る。
2.中身はこんなん
3.Texstudioのオプションから上記ファイルを選択し,再起動
MatlabでLevenberg-Marquardt法
過去記事が地味に反応あったので調子乗って続きをば。
ossyaritoori.hatenablog.com
前回のGauss-Newton法に引き続き,
Levenberg-Marquardt法についてです。
フィッティングの手法としてはGauss-Newtonより多用される王道中の王道ですね。
概要
前回のGauss-Newton法を前提にしているのでそっちを先に参照してくださいな。
matlabはstudentバージョンで2015aで動作します。
symbolic math Toolboxを使っております。
アルゴリズムについて私的見解
以下の記述は私の持ってるイメージですのであしからず。
間違ってたらコメントにて教えてください,
Gauss-Newton法は2次収束するNewton法において,ヘッセ行列をヤコビ行列の二乗で近似した手法ですが,
勢いが良すぎてぶっ飛んでしまうことがあります。
そこで,適切なダンピングファクターλを下のように導入します。
適度にダンピングをかけることで吹っ飛ぶのを回避できるってわけ。
なお,ダンピング項のIは最も簡単には単位行列,もう少し賢く行くにはヤコビアンの二乗の対角項を使うようです。
減衰最小二乗法とも言うようですね。
matlabで書くならダンピング項はこんな感じか,簡単すな。
I = diag(diag(J.'*J))
知恵袋の秀逸な解答
なお,以下の知恵袋の解答も秀逸です。
Levenberg-Marquardt法(LM法)は非線形最小二乗問題を解く有力な... - Yahoo!知恵袋
「最急降下法とGaussNewton法の組み合わせ」という言はたしかにしっくり来ます。
以下の式は数学的には超間違い!!ですが,
感覚としてこんな感じってことなのはなんとなくわかります。
この式は怖い人がなんか言ってきたら消します()
Gauss-Newton法との比較
λをいじった場合どのように収束速度が変わるかを示す図が以下の通り。
Legendが適当なのはごめんなさい。ダンピングと言う通り,λを大きくすると収束速度は鈍ります。
補足:パラメータ空間でのアルゴリズムの様子
変更するパラメータa,bを0~1の範囲で変えて残差の二乗和の関数の様子を見ました。
残差の二乗和:
なるほど今回の例では傾きの急な所から1方向にガツンと降りていくだけなのでそれほど差がないのも頷けます。
向かい側にも山があるお椀型の場合,GN法だと行ったり来たりする時がある印象です。
降りた時の軌跡はこんな感じ。我ながら結構わかりやすくなって満足。
Levenberg-Marquardt法:コード
基本的な解説はGaussNewton法の所を読んで下さい。
ダンピング項を加えただけです。
%% https://ja.wikipedia.org/wiki/%E3%82%AC%E3%82%A6%E3%82%B9%E3%83%BB%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%88%E3%83%B3%E6%B3%95 % http://org-technology.com/posts/gauss-newton-method.html %% get data clear all; % data for fitting xhat = [0.038, 0.194, 0.425, 0.626, 1.253, 2.500, 3.740].'; yhat = [0.050, 0.127, 0.094, 0.2122, 0.2729, 0.2665, 0.3317].'; %% making evaluate funciton syms a b x y % evaluate fuction func = a*x/(x+b); R = y - func; S = R^2; % partial derivative Ra = diff(R,a); Rb = diff(R,b); % make jacobian matrix Ja = subs(Ra,{x,y},{xhat,yhat}); % subs(fa,[x,y],[xhat,yhat]); ではダメ Jb = subs(Rb,{x,y},{xhat,yhat}); Jacob = [Ja,Jb]; % jacobian %% initial value vinit = [0.9;0.2]; v = vinit; iteration = 10; % lambda lambda = 1; I = eye(size(Jacob,2)); % evaluate function SumOfError = zeros(iteration,1); SEF = subs(S,{x,y},{xhat,yhat}); %% iterative optimization % error function r = subs(R,{x,y},{xhat,yhat}); for i = 1:iteration J = double(subs(Jacob,[a,b],v')); df = double(subs(r,[a,b],v')); delta = - ( J.' * J + lambda * I)\J.' * df; v = v + delta; SOE = double(subs(SEF,[a,b],v')); SumOfError(i) = SOE.' * SOE; end %% showing fit = subs(func,x,xhat); yfit = double( subs(fit,[a,b],v') ); figure(3); plot(xhat,yhat,'+',xhat,yfit); xlabel('x'); ylabel('y'); legend('data','fitted value','Location','Best'); grid on; figure(4); plot(SumOfError); xlabel('iteration'); ylabel('Sum Of Squared Error'); legend('Squared Error value') grid on;
マッピングのコード
ndgridを初めて有効に使った気がします。
及第点。
%% mapping Ms = 20; Map = zeros(Ms); % evaluate function SEF = subs(S,{x,y},{xhat,yhat}); A = ndgrid(1:Ms,1:Ms)/Ms; B = A.'; for i = 1:Ms for j = 1:Ms v = [i/Ms;j/Ms]; SOE = double(subs(SEF,[a,b],v')); Map(i,j) = SOE.' * SOE; end end %% showing figure(5); mesh(A,B,Map); xlabel('a'); ylabel('b'); grid on;