ICTについて使える情報を発信していきます. 遠回りしたり, 自分のペースで...

このブログを検索

Blogger テンプレート 公式ドキュメント リンク

Bloggerのテンプレートですが, めっちゃいじりたかったのです. 時間がなかったので後回しにしてましたw

幸い, 少し時間が抽出できたのでドキュメントをあさってきたのですが, 英語だと何故かエディタをすすめられて, だいぶ遠回りしましたw Adobe Dreamweaverとか, Template Toasterとか.

Bloggerのテンプレートの属性値がいまいちわからなかったので 「いや, タグの意味とか…」とか思ったのですが, ちゃんと公式のDocumentがあったんですね. Bloggerのヘルプから見れました

これを見ながら, 少しずつ変えていこうと思います.

Read More

2018年9月の面白いと思った記事7選

2018年9月の面白い, 興味深い記事7個ぐらい紹介したいと思います. ちなみに順位付けはしてないので, あしからず.

今回は以下のサイトから記事を選びました.

GoogleやFacebookなどの巨大な管理者なしで個人同士がつながりを作り出す新しいウェブの世界「Dweb」とは?

検索といえばgoogle(もしくはyahoo), SNSといえばTwitter, Facebookなどのように, これらは巨大な企業がユーザーの情報などを管理しています. 1つの企業がユーザーの情報などを持ち, それを管理, 保守しているわけです. 中央集権的ですが, これをなくして個人ごとにつながろうというのがDWebです.

そのメリットとしては

  • 個人データを提供する必要がない.

    • 企業のせいで個人情報が流出することはない.
    • システムが壊れても被害が少ない. データは個人が持っているから.
    • 個人情報が利用されることがない.
  • 保守コストが下がる.

    • 一人一人のパソコン, スマホが機能を提供するため, 良い.
  • 管理者による情報規制が行われない

    • なんでも好きなことを書ける.
    • 規制に時間が取られないため. だが, 今のweb上でも規制は後からかける物が多いので, 実はそんなに変わらないかもしれない.

があります. 一方でデメリットは

  • 個人データは自分で管理しなければいけない.

    • バックアップは相手が保存してくれない.
  • 情報規制が行われないので, ダークな部分も規制できない.

    • みんな同じ権力なので, 削除ができない.
    • えっちぃのとかグロがあふれるかも.
    • ユーザーが見ないようにすれば良さそうだけど.

って感じです. もっとありそうですが, 気になる方は中央集権と地方分権のメリット, デメリットを考えるといいと思います. 中央集権が今の形で, 地方分権がDwebの世界です. メリットがいまいち少ないと思うので, 私はあまり賛成ではないですが, 発想が面白いと思いました.

Google Chrome70からブラウザ上での顔認識や指紋認証が可能になる見込み

Chromium Development Calendar and Release Info Estimated* Stable Dates, Chrome Platform Statusより, リリース日は2018年10月16日の予定らしいです. 記事によると

Chrome 70から対応する形状検出APIは、顔検出API・バーコード検出API・テキスト検出APIという3種のAPIで構成されています。

となるらしいです. いやぁ, どうやってパソコンで指紋認証するのか. 指紋認証対応のキーボードとか出そうだなと思ったりしました. それにしても, ブラウザで質の高いAPIが増えると, Developerもやりたいこと増えていいと思います.

脳波で3機の航空機と通信して操縦が可能な技術が実現、まさに「ファンネル」の実現まであと少しか

これ興奮しませんか? ファンネルができるらしいです.

3機のドローンを操ることができる段階に居るらしく, 更に重要なのは航空機の位置などもわかるらしいです. 国防高等研究計画局(DARPA)が開発したものなので, 一般公開されるかはわかりませんが, かなり未来が近づいている気がしませんか? 最近一番胸熱なトピックです.

「この感じ……ニュータイプか!」と一般人が言える日も近そうですな.

CHIIZ: Toothbrush 4.0

なんと口にあてがうだけで歯磨きできちゃう商品です.
唐突な商品紹介ですがこれとっても欲しくないですか?w

子供の時からずっと歯磨きがめんどくさかったんですよね. あと正しい歯磨きの方法もよくわからないし. これだと, 少し口につけるだけで簡単です. ながら作業もできますし.

ただ, 形状的に歯並びが悪い人には向かなそうです. 個人によって歯並びが違いそうなのが大変そうですね.

Early Bird Pro Kitが安いので, 興味のある方はそちらを購入してみるといいと思います. どうぞご検討ください.

過去のあらゆるマシン&ソフトを実行でき科学の再現性を守る仮想システム「Olive」とは?

Dockerが流行ってから仮想化がトレンドになっている気がします. やはり「再現性」, つまり, ある手順を踏むとやりたいことが達成できるのは大事だと思うのですよ. 塩が無いからって, 砂糖を入れても, 料理は美味しくなるとは限らないんです. 「あのパソコンで使えるソフトがこのパソコンで使えない」とか悲しいですよね. (特にMacのSteam対応ゲームの少なさはやばかった.

IT技術の発達は早いため, 簡単に昔の技術, パソコンが対応できなくなり, 実験ができなくなる. よって, 再現性を守るためにカーネギーメロン大学の研究者が「Open Library of Images for Virtualized Execution(Olive)」というのを作ったそうです. これによって, 昔の再現をして実験するなりできるわけですな.

今はまだ制限ありのプロジェクトらしいですが, これクラウドとかに乗せそうですよね. そのときにいっぱいいじれそうなのが楽しみです.

アップル、自動車のシート位置やミラー角度などの設定をスマホで再現–特許取得

これ発想がいいと思うんですよ. ものの設定って結局めんどくさいじゃないですか. ゲーム然り, スマホ然り, 家電然り. 今回アップルが取り組んだのは自動車系だけですが, 設定を個人に最適化していくのって未来必要だと思うんですよ. みんなが便利になる取り組みだと思ってます.

しかも, スマホに記録するだけでいいのでお手軽です. どうやって設定を反映させるかはまだわかりませんが, レンタカーを使う人などは, たしかに便利だろうなと思っています. もしかしてシェアリングエコノミーも活性化させる?

未来ではIoTとAIを連携して設定をやってくれそうではあるんですが, 結局微調整は人間の手がいると思います. AIの発達段階の今だからこそ, この技術によってデータが蓄積され, 生かされていくのではないでしょうか.

IPアドレスなしで通信 IoT向け新技術「NIDD」、ソフトバンクが試験サービスへ

これ最初見たとき「え, IPなしでどうやってスマホやパソコンを識別できるの?」と思ったのですが, まぁsimで本体ごと識別するからいいよーって話らしいです. IMSI, APNで識別して, 基地局が送る感じですね. つまり, スマホ - 基地局間がIP必要なくなっただけっぽいです.

今まではsimとIPの両方で誰のスマホか識別してたんだけど, IPで識別しなくてもいんじゃない?という発想ですね. まぁそりゃね.

それでもいろいろメリットはあったらしく,

  • IPを使わない分, 通信サイズが少なくなる
    • 通信を解析する箇所が少なくなるので, 使う電力が少なくなる.
    • 電波を送る量も少なくなるので, 通信エリアも広くなる?(これはよくわかんない.

と言ったところです. 技術の進化によって無駄が削ぎ落とされていく…

まとめ

いかがでしょうか. 本当はもっと面白い記事あるんですが, 私が力尽きましたw

今月はGigazineさんが多かったですね. やっぱり面白い記事多いんですよ. (今月のお気に入りの80%ぐらいがGigazineの記事でした)

10月の中盤で9月を振り返るのも中々に面白かったです. これらの技術は未来でも発展していきそうなので, 楽しみですね. それでは, ありがとうございました~.

参考文献

Read More

apt, ファームウェアのアップデートと自動アップデート設定 [RaspberryPi3]

私がしたRaspberryPiの設定は, 「RaspberryPiの設定 まとめリスト」にまとめてあります.

  • 今回の設定のメリット
    • パッケージの最新版を利用できる.
    • セキュリティ的にアップデートは随時しておいたほうが良い.
    • というか必須な感じ.
  • 今回の設定のデメリット
    • 不具合発生しそうとか? でもやったほうが良いよね.

sshしていることを前提にします.

aptのアップデート

aptのアップデートをします. ちまたではapt-getが多いですが, apt-getの上位互換がaptなので, aptを使うほうがよろしいらしい.
ソースはこちら「Is ‘apt-get’ deprecated? [duplicate]

まぁ, aptもapt-getもパッケージツールなので, 必要なものがaptに無ければapt-getを使うというぐらいで良いのかも.

ではssh先でaptのアップデート.

$ sudo apt update 
$ sudo apt upgrade 

aptのみで良いですが, apt-getもやりたい方はこちららしいです.

$ sudo apt-get update 
$ sudo apt-get upgrade 
$ apt-get dist-upgrade 

ファームウェアのアップデート

ssh先で次のコマンドを打ちます.

$ sudo rpi-update

その後, 再起動すれば終わりです.

$ sudo reboot

自動アップデート

いちいち手動でアップデートをするのもめんどくさく, 忘れることも多いと思うので自動アップデートも設定します. 次のコマンドを打ちましょう.

$ # 設定ファイルの作成, aptの自動アップデート設定
$ sudo sh -c 'echo "59 23 * * * /usr/bin/apt update ; /usr/bin/apt -y upgrade  ; /usr/bin/apt -y autoremove ; /usr/bin/apt clean" > /root/crontab_root_file'

$ # ファームウェアのアップデート自動化
$ sudo sh -c 'echo "59 23 * * * /usr/bin/rpi-update" >> /root/crontab_root_file'

$ # 自動アップデートの登録
$ sudo crontab -u root /root/crontab_root_file

ちょっとややこしいと思いますが, コマンドを追加している部分は

「echo “59 23 * * * /usr/bin/apt update ; /usr/bin/apt -y upgrade ; /usr/bin/apt -y autoremove ; /usr/bin/apt clean”」

などです.

数字の部分「59 23 * * *」は順に「分 時 日 月 曜日」となります.
毎日23時59分に

「apt update ; apt -y upgrade ; apt -y autoremove ; apt autoclean"」

というコマンドを実行します. 自動アップデートや, アップデートした後に不要なものの削除などの設定です. ファームウェアのアップデートも同じです.

実際に登録されたかは, 次のコマンドを打てば良いです.

$ # 登録されたリストを表示
$ sudo crontab -u root -l
59 23 * * * /usr/bin/apt update ; /usr/bin/apt -y upgrade  ; /usr/bin/apt -y autoremove ; /usr/bin/apt clean
59 23 * * * /usr/bin/rpi-update

「/usr/bin/apt update ; /usr/bin/apt -y upgrade ; /usr/bin/apt -y autoremove ; /usr/bin/apt clean」などが登録されているのがわかります.

おまけ

ワンライナーみたいにするなら,

$ (sudo crontab -u root -l ; echo "59 23 * * * /usr/bin/apt update ; /usr/bin/apt -y upgrade  ; /usr/bin/apt -y autoremove ; /usr/bin/apt clean" | sort | uniq) | sudo crontab -u root -

$ (sudo crontab -u root -l ; echo "59 23 * * * /usr/bin/rpi-update" | sort | uniq) | sudo crontab -u root -

こんな感じ.

自動再起動

こういうアップデートは再起動しないと設定が反映されない場合もあるので, 時々再起動しなければいけない場合があります.
自分はそれがめんどくさいので, 定期的に再起動してくれるようにこれも設定しました.

$ # 設定ファイルに追記
$ sudo sh -c 'echo "0 4 * * 1 /sbin/reboot" >> /root/crontab_root_file'

$ # 自動アップデートの登録
$ sudo crontab -u root /root/crontab_root_file

これは任意でやって下さい.

参考文献

Read More

NVIDIA DLI(DIGITSによる画像分類入門)をやってみた.

NVIDIA DLI(DEEP LEARNING INSTITUTE) の 「DIGITSによる画像分類入門」をやってみました.

NVIDIA DLIとは.

NVIDIA Deep Learning Institute (DLI) では、人工知能 (AI) とアクセラレーテッド コンピューティングに関するハンズオン トレーニングを提供することで、実世界の問題の解決に貢献しています。都合のよい時間に自分のペースで進めることができるオンライン コースを受けたり、インストラクターによるワークショップに参加していただけます 引用元 : NVIDIA DEEP LEARNING INSTITUTE

つまり, オンラインで機械学習やそれに関連したコースをオンラインで受けられるということです. 殆どが有料ですが, 無料なのもいくつかあります. また, GPUなどを使ってやるらしいので, 学習時間も速いです.

実際にDLIをやってみよう

NVIDIAの人が実際にやり方を公開しています.
https://qiita.com/ksasaki/items/65cd2a9e6b5f370bed0e

詳細な説明はそちらに任せて, こちらは大雑把な説明のみを書いていきます.

ハンズオンサイトに登録

実はDLIはQwiklabsという他のサイトを使う必要があります. これはNVIDIAのホームページでは見つかりにくくなっています.
QwiklabsにNVIDIAの提供しているラボ(演習)があります.

Joinが登録となりますので, 登録しましょう.

出典: Qwiklabs Home Page

言語設定

そのままだと英語で勉強します. 英語が読める人は良いですが, 読めない人はこの設定をしましょう.

ログインできたら
「My account」 -> 「Profile info」 -> 「Language」からJapaneseを選択し, 「UPDATE USER」を押しましょう. これで言語設定はできました.

出典: Qwiklabs My Account Page

「DIGITSによる画像分類入門」を試す.

では「DIGITSによる画像分類入門」を試してみましょう.

「Catalog」から「ラボ」を選んで下さい. 結構たくさんあります. この中で無料のものもいくつかありますので, 好きなものを試して下さい. 私は「DIGITSによる画像分類入門」を実際にやってみました.


出典: Qwiklabs Catalog Page

「ラボを開始」を押すと, しばらくセットアップが始まるので待ちましょう. セットアップが終わると「LAUNCH LAB」がでてくるので, それを押します. すると, タブでjupyter notebookが開きます.

出典: Qwiklabs DIGITSによる画像分類入門 Page

あとはjupyter notebookに従って自習しましょう.

まとめ

実際にNVIDIA DLIをやってみました.
NVIDIAのホームページから, 無料のものをたどるのが難しかったため記事にしました.

参考文献

Read More

IPアドレス固定(DHCP固定割当設定) [Oculus Go]

今日はoculus goのIP固定について.

※ 重要 (2018-06-01追記)
Oculus GoのWifi設定から, 自分のWifiネットワークを長押しで, Wifiの詳細設定ができるということが分かりました…こちらが圧倒的に楽ですね.

Wifiルーターには「DHCP固定割当」という機能があります.
これは, 特定のMACアドレスに特定のIPアドレスを割り振るという方式です.

MACアドレスとは, コンピュータ1つ1つで違う値が設定されています(指紋みたいなもの).
これさえわかれば, ルーターからパソコンを簡単に調べることができるので, このパソコンにはこのIPと割り振る設定ができます.

では, 早速固定していきましょう.

環境 & 必要なもの

  • Oculus Go
  • ルーターとその管理者権限
  • Mac(PC)

Oculus Go MACアドレスを調べる

MACアドレスを調べるには3つ方法があります.

  1. adb接続して確認する.

  2. LAN内で使われているIPアドレスを調べる6つの方法(Linux/Windows)」から, arp or arp-scanコマンドを使って, 怪しいものを片っ端から調べる.

  3. 「MAC Address for Oculus Go Wi-fi access?」より, mobile hotspotを使う.

3つ以外もあるかもしれませんが, 私が知っているのはこれで終わりです.

今回は1について解説していきます.
ちなみに, 1番楽にできるのは2の方法だと思います1

Oculus Go 開発者モード設定

このサイトを見るとできます.
UE4 Oculus GoでVRアプリの開発を開始するまでの方法

すみません. 手を抜きましたw

adbインストール

Macなら, ターミナルで次のコマンドを打ちましょう.

$ brew tap homebrew/cask
$ brew cask install android-platform-tools

これでMacではadbのインストールできます.

Windowsの方なら「もっと簡単!adbコマンドを使えるようにする方法-ダウンロードして解凍してパスを通すだけでOK」を見れば設定できると思います.

adbで接続し, MACアドレスを取得する.

まず, MacとOculus GoをUSBで接続します.

そうしてOculus Goを見てみると, 「パソコンを信頼しますか?」みたいなのが出てくるので許可します.

その後, Macのターミナルで次のコマンドを打ちましょう.

$ adb devices
List of devices attached
adb server version (32) doesn't match this client (39); killing...
* daemon started successfully
xxxxxxxxxxxxxx device

「xxxxxxxxxxxxxx device」と出てくるはずです.

もし, 上のコマンドで下のようなエラーになった場合はOculus Goがスリープ状態?なため, コントローラーのホームボタンを長押しして, もう一度上のコマンドを打って下さい.

$ adb devices
List of devices attached
* daemon not running; starting now at tcp:5037
ADB server didn't ACK
Full server startup log: /var/folders/zl/m1myvbps58sby5zzvrbvwrf40000gn/T//adb.501.log
Server had pid: 93474
--- adb starting (pid 93474) ---
adb I 05-30 15:44:40 93474 6217004 main.cpp:57] Android Debug Bridge version 1.0.39

~~ 省略 ~~

* failed to start daemon
error: cannot connect to daemon

$ # Oculus Goのスリープ状態を解除してもう一度
$ adb devices
List of devices attached
adb server version (32) doesn't match this client (39); killing...
* daemon started successfully
xxxxxxxxxxxxxx device

それでも出ない場合はUSBを接続し直したり, もう一度コマンドを打ったりしましょう.

Oculus Goが認識されたら次のコマンドを打ちます.

$ adb shell ip addr show wlan0
5: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 3000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet xxx.xxx.xxx.xxx brd xxx.xxx.xxx.xxx scope global wlan0
       valid_lft forever preferred_lft forever
    inet6 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx scope link 
       valid_lft forever preferred_lft forever

この3行目の「link/ether xx:xx:xx:xx:xx:xx」の「xx:xx:xx:xx:xx:xx」の部分がMACアドレスです. こちらを取得すればadbは終わりです. MACアドレスはどこかにメモをしておいて下さい.

ルーターでDHCP固定割当を設定し, IPを固定する.

MACアドレスもわかったので, ルーターでDHCP固定割当を設定します. そうすることで必ずそのIPアドレスが割り振られるので, 固定したことになると思います.

ルーターにログインする.

今回は「Macで自分のゲートウェイを確認する方法」より, 「route -n get 0.0.0.0」コマンドを使います.

$ route -n get 0.0.0.0
   route to: default
destination: default
       mask: default
    gateway: xxx.xxx.xxx.xxx
  interface: en0
      flags: <UP,GATEWAY,DONE,STATIC,PRCLONING>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
       0         0         0         0         0         0      1500         0 

これで, Gatewayが取得できました. 5行目の「gateway: xxx.xxx.xxx.xxx」のxxx:xxx:xxx:xxxの部分をブラウザに入れましょう. 今回は「192.168.11.1」と仮定します.

すると, ポップアップなどでユーザー名とパスワードの入力を促されるので入力しましょう.

「ルーター ログイン」で検索し, 同じメーカーのルーターを見つけると, 初期ユーザー名と初期パスワードぐらいは出てくると思います. 設定した覚えのない方はそちらを見てみるのも良いと思います. もしくは初期化して, 初期ユーザー名と初期パスワードを打つ…という手もあります.

あとは, ルーターによって操作が違います.
私のwifi機器のメーカーはaterm(型番は忘れました)なので, それに沿った解説をします. aterm以外のメーカーの方は「<メーカー名> DHCP固定割当」で検索すると方法が出てくると思います.

atermルーターでのDHCP固定割当

まず, LAN設定を開きます. そして, 割当数を確認します.

Gatewayの4番目をその割当数以下のIPアドレスに設定しないと固定割当してくれないです.
例 Gatewayが「192.168.11.1」で, 割当数が「64」なら, 固定できるIPアドレスは「192.168.11.2 ~ 192.168.11.64」までです.

確認したら, 「DHCP固定割当設定」をクリックして, 追加を押しましょう.

そうすると, MACアドレスとIPアドレスを入力する画面になるので,

  • MACアドレスはメモしていた値をそのまま「xx:xx:xx:xx:xx:xx」
  • IPアドレスは, 上のGatewayの4番目をその割当数以下のIPアドレス「xxx.xxx.xxx.xxx

を設定して保存しましょう.

念の為, もう一度「DHCP固定割当設定」をクリックして, 設定されていることを確認して下さい.

これで固定割当は終わりです.

Oculus Go の再起動

Oculus Goを再起動します. USBをつなげたままなら, 次のコマンドを打てば再起動します.

$ adb reboot

その後, Oculus Goのコントローラーのホームボタンを長押しして, また「adb devices」を打ちましょう.

$ adb devices

最後に, 「adb shell ip addr show wlan0」を打ちましょう.

$ adb shell ip addr show wlan0
5: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 3000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet xxx.xxx.xxx.xxx brd xxx.xxx.xxx.xxx scope global wlan0
       valid_lft forever preferred_lft forever
    inet6 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx scope link 
       valid_lft forever preferred_lft forever

7行目の「inet xxx.xxx.xxx.xxx」が自分で設定したIPアドレスと同じになっていれば固定されています. おつかれまでした.

adbを無線で使えるようにする

IPアドレスを固定化した利点として, 簡単にadbを無線で使えるようになります. まず, ポートを開きましょう. 今回は「Oculus Document ADB」のexampleより, 5555を開きます. ほんとは4桁以上なら何でもいいです(多分)

$ adb tcpip 5555

コマンドを打ったあと, USBを抜いて下さい.
そして次のコマンドを打って下さい.

$ adb connect xxx.xxx.xxx.xxx:5555 
connected to xxx.xxx.xxx.xxx:5555

自分はなかなかできなくて, 一旦待ってもう一度やってみるとできました. なので, 少し待ってもう一度コマンド打ったらできるとかあるかも…できた原因が不明です.

まとめ

以上でIPの固定ができました. やってて思ったんですがsleep止めたいのに, sleepを止める手段がセンサーを塞ぐという物理的な手しか無いというのが…これからに期待ですね.

参考文献


  1. 2については「河童星人@kappaseijin」という方が既にツイートしていたので, 1の手順でやってみました. ↩︎

Read More

IPアドレス固定, hostname変更 [RaspberryPi3]

私がしたRaspberryPiの設定は, 「RaspberryPiの設定 まとめリスト」にまとめてあります.

  • 今回の設定のメリット
    • 遠隔操作系が楽にできるようになる.
    • サーバーに繋がるのが楽になる.
    • 2台目のRassberyPi買ってつなげても, hostnameが被らない.
  • 今回の設定のデメリット
    • 設定を間違うとsshができなくなるので, その場合自前でkeyboardを用意する必要がある.
    • ネットに繋がらなくなったりする.

IPアドレスとはパソコンの住所のことです. 残念ながらパソコンさんはDHCPという仕組みがあり, 繋がるたびに住所が変わるため, IPアドレスは固定ではありません. ホテルに泊まるような感じですかね. 一度ホテルをチェックアウトしてもう一度泊まると, 部屋が変わってしまう感じです.

だから, 「お前の住所は絶対ここだからな」って決めるのがIPアドレスの固定です. 住所を決めることで, 遠隔操作をする時は「こっちに行けばいんだね」というのがわかります.

…うまく説明できてない感があるので, ここの解説サイトを見て下されば概念がわかると思います.「IPアドレス

ちなみに, IPアドレスという数字で管理しているものを, 人間がわかるように文字にしたものがhostnameです.

IP固定

IPアドレスを固定する」を参考にして, inet, netmask, ゲートウェイ(Gateway)を調べます.

$ # wlan0がwifiのこと. inetとnetmaskが分かる.
$ ifconfig
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.90  netmask 255.255.255.0  broadcast 192.168.0.255

~~省略~~

$ # ゲートウェイを調べる.
$ route
カーネルIP経路テーブル
受信先サイト    ゲートウェイ    ネットマスク   フラグ Metric Ref 使用数 インタフェース
default         192.168.0.1     0.0.0.0         UG    303    0        0 wlan0
~~ 省略 ~~

上の結果から,

  • inet 192.168.0.90
  • netmask 255.255.255.0
  • ゲートウェイ(Gateway) 192.168.0.1

ということがわかりました.
netmaskの255.255.255.0の4番目の数字が0なのは, inetの192.168.0.90の4番目の数字「90」は「2~254」までで好きにしていいよ―ってことです.

次のコマンドを打ちます.
「static ip_address=192.168.0.90」の「90」は, 「2~254」の間の好きな数字にして下さい. あとはinetの4番目の数字を1にして下さい.

echo "
interface wlan0
static ip_address=192.168.0.90
static routers=192.168.0.1
static domain_name_servers=192.168.0.1" >> /etc/dhcpcd.conf

その後再起動します. 間違っていないところがないかしっかり確認して下さい.

$ sudo reboot

30秒ぐらい待って, sshしてみます.
「ssh ユーザー名@固定IPアドレス」でコマンドを打ってみましょう. これででき…ないw

$ ssh hoge@192.168.0.90
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:2V2gPFgBzJKoVhE09mEer3kvIO1OenyfvGwppkNhwDs.
Please contact your system administrator.
Add correct host key in /Users/${USER}/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/${USER}/.ssh/known_hosts:23
ECDSA host key for 192.168.0.90 has changed and you have requested strict checking.
Host key verification failed.

なんか「接続先のパソコン, 前のと似ているけど何かが変わったパソコンだから危ないよ!」って言っています. どうせOSのアップデートかIPの固定のどちらかで変わったので, 古い情報の入ったファイルを捨てます.

$ rm ~/.ssh/known_hosts

これでもう一度sshすると…

$ ssh hoge@192.168.0.90
The authenticity of host '192.168.0.90 (192.168.0.90)' can't be established.
ECDSA key fingerprint is SHA256:2V2gPFgBzJKoVhE09mEer3kvIO1OenyfvGwppkNhwDs.
Are you sure you want to continue connecting (yes/no)? yes # yesと入力

Warning: Permanently added '192.168.0.90' (ECDSA) to the list of known hosts.
Linux raspberrypi 4.14.42-v7+ #1114 SMP Mon May 21 16:39:21 BST 2018 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu May 24 19:49:27 2018 from xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
hoge@raspberrypi:~ $ 

これでできた!

これでもできなかった場合は, hostnameは変わっていないので, hostnameでsshして何が間違っているか調べましょう. もう一度上の手順を繰り返してみたり, 他のサイトを参考にするのもあり.

$ ssh hoge@raspberrypi.local

~~原因を調べる~~

hostnameの変更

hostnameは「raspberrypi.local」です. 次のコマンドを打ちましょう.

今回は, 例としてhostnameを「hogepi.local」にしたいと思います.

$ ssh hoge@raspberrypi.local

$ # hogepi.localに変更
$ sudo raspi-config nonint do_hostname hogepi.local
[sudo] password for hoge: #hogeのパスワードを打つ
$ sudo reboot

30秒ぐらい待って, sshしてみましょう.

$ ssh hoge@hogepi.local
hoge@hogepi:~ $ 

これで「hoge@」以降の表示が変わったことがわかると思います. 以上でhostnameの変更は終了です.

参考文献

Read More

ユーザー名, パスワード変更 [RaspberryPi3]

私がしたRaspberryPiの設定は, 「RaspberryPiの設定 まとめリスト」にまとめてあります.

  • 今回の設定のメリット
    • セキュリティ的に安心できる.
    • というかパスワード変更ぐらいは必須.
  • 今回の設定のデメリット
    • 設定がめんどくさい

まず, ユーザーの変更をしなければいけません.
sshを導入したと思いますが, 遠隔操作ができるというメリットは, 他の人もアクセスできる可能性があるというデメリットを生みます.
実際, 「Raspbian install on Raspberry Pi 3」では, 私の手順をなぞればsshができましたよね. 他の人が同じ場所で真似をすれば, 同じことができるということです.

ということで, ユーザー名とパスワードを変更するのはセキュリティ的に大切です. やりましょう.

手順としては,

  1. 新しいユーザーtempを作る.
  2. ユーザーtempにsshし, piの名前を変更する.
  3. ユーザーtempを削除する.
  4. 変更したユーザーのパスワードを変える.

という感じです.

ちなみに, ユーザーtempを使うのはユーザーpiが使われている場合, 名前の変更ができないからです.

pi@raspberrypi:~ $ sudo usermod -l hoge pi 
usermod: user pi is currently used by process 551

piの中で作業しているので, piを使っていると見なされています.

新しいユーザーtempを作る.

次のコマンドを打ちましょう. $から後ろがコマンドです.

$ # ユーザーpiにsshする.
$ ssh pi@raspberrypi.local
Linux raspberrypi 4.14.42-v7+ #1114 SMP Mon May 21 16:39:21 BST 2018 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun May 27 14:53:10 2018 from xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx

$ # tempユーザーの作成
$ sudo useradd -M temp

$ # sudoをtempユーザーでも使えるようにする.
$ sudo gpasswd -a temp sudo
Adding user temp to group sudo

$ # tempユーザーのパスワードを設定
$ sudo passwd temp
Changing the password for group temp
New Password: 
Re-enter new password: 

$ # logoutする.
$ exit
logout
Connection to raspberrypi.local closed.

ユーザー名は適当で良いです. 今回はtempというユーザー名にしています. tempという名前は, すぐ削除する一時的なものにつける事が多い, 慣習的な名前です.

「New Password:」は適当なパスワードを設定して下さい. どうせすぐ削除するので.

ユーザーtempにsshし, piの名前を変更する.

先程と同様の手順で, ユーザーtempにsshします. その後,
piの名前を変更します. 好きな名前に変更して良いですが, 今回は例としてhogeというユーザー名にします.

次のコマンドを打ちましょう.

$ # ユーザーtempにsshする.
$ ssh temp@raspberrypi.local
temp@raspberrypi.local's password: # 1で設定したtempのパスワードを入れる
Linux raspberrypi 4.14.42-v7+ #1114 SMP Mon May 21 16:39:21 BST 2018 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun May 27 15:24:36 2018 from xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
Could not chdir to home directory /home/temp: No such file or directory

SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.

$ # エラーが出ないように, 一応piのprocessをkillする.
$ sudo pkill -u pi
[sudo] password for temp: # 1で設定したtempのパスワードを入れる

$ # 好きなユーザー名に変更. 今回はhoge.
sudo usermod -l hoge -d /home/hoge -m pi

$ # groupを変更する.
$ sudo groupmod -n hoge pi
$ exit
Connection to raspberrypi.local closed.

確認のため, hogeにsshします.

$ ssh hoge@raspberrypi.local
Linux raspberrypi 4.14.42-v7+ #1114 SMP Mon May 21 16:39:21 BST 2018 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun May 27 14:57:06 2018 from xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
hoge@raspberrypi:~ $ 

sshでき, 「hoge@raspberrypi:~ $ 」になっていると思います. これで, ユーザー名の変更は終わりです.

ユーザーtempを削除する.

ユーザーtempを削除します. パスワードを聞かれますが, 「raspberry」にして下さい.

$ ssh hoge@raspberrypi.local
Linux raspberrypi 4.14.34-v7+ #1110 SMP Mon Apr 16 15:18:51 BST 2018 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed May 23 12:25:05 2018 from xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx

$ # ユーザーtempを削除. passwordは「raspberry」にする.
$ sudo userdel temp

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for hoge: # raspberryと入力
hoge@raspberrypi:~ $ 

これでtempが削除されました.

おまけ

ワンライナーみたいな感じで, 新しいユーザーを作らなくてもユーザーが変更できるコマンドを作りました. 上の1~3までこれでできます. sudo suができなければダメですが…

$ ssh pi@raspberrypi.local
$ sudo su ; exit
$ /bin/bash -c 'NEWNAME=hoge; OLDNAME=pi; nohup sleep 3; pkill -u ${OLDNAME}; usermod -l ${NEWNAME} -d /home/${NEWNAME} -m ${OLDNAME}; groupmod -n ${NEWNAME} ${OLDNAME} &' & exit

NEWNAME=新しい名前, OLDNAME=古い名前を入れれば, すぐに変更できると思います.

でも複雑さが増してしまったので, 上の手順を素直にやったほうが良いかと.

変更したユーザーのパスワードを変える.

変更したユーザーのパスワードを変えていきます.
「[sudo] password for hoge:」のパスワードは「raspberry」にして下さい.
その後, 新しいパスワードを打っていきます.

$ ssh hoge@raspberrypi.local
Linux raspberrypi 4.14.34-v7+ #1110 SMP Mon Apr 16 15:18:51 BST 2018 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed May 23 13:24:35 2018 from xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx

$ # hogeのパスワードを変更
hoge@raspberrypi:~ $ sudo passwd hoge
[sudo] password for hoge: # raspberryと入力
Enter new UNIX password: # 新しいパスワードを入力
Retype new UNIX password: # もう一度新しいパスワードを入力
passwd: password updated successfully
hoge@raspberrypi:~ $ 

これで, パスワードの変更は終了です.
以上で, ユーザー名, パスワードの変更は終了になります.

piユーザーの残骸を削除.

最後に, あまり詳しく説明しません(他の方が色々説明なさってます)が, piの残り物を消します.
ssh先で次のコマンドを打ちます.

$ sudo rm /etc/sudoers.d/010_pi-nopasswd

これでpiユーザーの残骸もなくなりました.

これで終了です. 滅多なことがない限り復元しないほうが良いですが, 復元したい場合は以下のコマンドを打って下さい.

sudo sh -c 'echo "pi ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/010_pi-nopasswd'

まとめ

ちょっとめんどくさいですが, やっていたほうが良い設定です. 是非とも頑張って設定してみて下さい.

参考文献

Read More

時間, 言語, Keyboardの設定 [RaspberryPi3]

私がしたRaspberryPiの設定は, 「RaspberryPiの設定 まとめリスト」にまとめてあります.

  • 今回の設定のメリット

    • 時間感覚が狂わなくて済む…ぐらい?
    • 日本語わかる. 日本語すごい. 日本語安心するみたいな感じ.
  • 今回の設定のデメリット

    • 特に難しいわけでもないので無し.

時間と場所の設定を行います.
デフォルトが何かはわかりませんが, 日本と違うので.

sshしていることを前提にします.

時間の設定

ssh先で次のコマンドを打ちます.

$ # timezoneを日本(Japan)に設定
$ sudo raspi-config nonint do_change_timezone Japan
[sudo] password for hoge: 
Current default time zone: 'Asia/Tokyo'
Local time is now:      Thu May 24 00:24:35 JST 2018.
Universal Time is now:  Wed May 23 15:24:35 UTC 2018.

これで終了です. なお, 次のコマンドを打つことで, どの国を選べるかわかるそうです.

$ ls /usr/share/zoneinfo/ 
Africa      Chile    Factory    Iceland            localtime  Portugal    Turkey
America     CST6CDT  GB         Indian             MET        posix       UCT
Antarctica  Cuba     GB-Eire    Iran               Mexico     posixrules  Universal
Arctic      EET      GMT        iso3166.tab        MST        PRC         US
Asia        Egypt    GMT0       Israel             MST7MDT    PST8PDT     UTC
Atlantic    Eire     GMT-0      Jamaica            Navajo     right       WET
Australia   EST      GMT+0      Japan              NZ         ROC         W-SU
Brazil      EST5EDT  Greenwich  Kwajalein          NZ-CHAT    ROK         zone1970.tab
Canada      Etc      Hongkong   leap-seconds.list  Pacific    Singapore   zone.tab
CET         Europe   HST        Libya              Poland     SystemV     Zulu

locale, 日本語の設定

localeとは文字コードのことです. 文字コードとは, コンピューターさんが文字画像をちゃんと表示できるように対応付けするものです.

デフォルトの文字コードでは日本語は対応されていないので, 対応できるようにしましょう.

$ sudo raspi-config nonint do_change_locale ja_JP.UTF-8
$ sudo locale-gen

これでたぶん出来てる…と思ったのですが, 文字のフォントがそもそも用意されていないので, フォントを用意します.

$ sudo apt install -y jfbterm

これで日本語化は終了です.

wifi countryの設定

何故この設定をやるのかはいまいちわかっていないが…別に簡単なので.

$ sudo raspi-config nonint do_wifi_country JP
[sudo] password for hoge: 
OK

終わり.

KeyBoardの設定

RaspberryPiにssh以外でキーボードを使う際には必要です. US(アメリカ用)のキーボードになっているので, 日本のキーボードとは違います. なので, 例えば「;」を打ったら「:」が打たれたりします. ほかにも配置が違うので, 変えておきましょう.
次のコマンドを打てば終わりです.

$ sudo raspi-config nonint do_configure_keyboard jp

これで, 「;」を打ったのに「:」が入力されるとかはなくなります.

参考文献

Read More

Raspbian install on Raspberry Pi 3

色々設定していたRasberry Pi3のシステムがぶっ壊れたので, OSの再インストールをする羽目に…
どうせなら最初からSDカード使ってインストールするまでを備考録として残していきます.
OSのダウンロードからSSH設定まで書きます.

ちなみに, ちまたにたくさん備考録が転がっているので, 自分にあったものを選んで下さい. これ大事.
さらにちなみに, 公式のドキュメントは「Raspberry Pi Software Guide」です.

環境 & 必要な物

絶対必要なもの

  • macOS (PC)
  • TOSHIBA EXCERIA 32GB (SDカード32GB以下を推奨. 1 )
  • Raspberry Pi3 Model B
  • やる気

あったら良いもの

  • SDカードリーダー(SDカード読み取れないパソコンの場合, 必要)
  • キーボード
  • マウス
  • 有線LAN

今回は, SSH設定をOSインストール前にするので, キーボードとかマウスとかは準備しません. もちろん, あった方が良いではありますが…保険になるし.
文字だけの画面(ターミナル)が怖くない方はできます.

Raspbian インストール (CUI使用)

CUI(Command User Interface)は, Terminalというアプリ使いますって話.

OSのダウンロード

OSのダウンロードを行います.
Raspbian 公式 ダウンロードページ」からRaspbianのダウンロードが行なえます.
下に行くほどぞろぞろありますが, 基本は, ページの上の方にある, NOOBSかRASPBIANのどちらかを選びます.
どちらも機能的に変わりはないのですが, 今回はRASPBIANを使います. (ggったらNOOBSのやり方は「Raspberry PiのOSをインストールしてみた(NOOBS篇)」にあります.)

出典: Raspbian 公式 ダウンロードページ

次に, 「RASPBIAN STRETCH WITH DESKTOP」か「RASPBIAN STRETCH LITE」か選べます. 「RASPBIAN STRETCH LITE」はアプリが色々入っていないので, 今回は「RASPBIAN STRETCH WITH DESKTOP」を選びます.
「RASPBIAN STRETCH WITH DESKTOP」の横の「Download ZIP」を選んで下さい. (というかTorrentあったのかよ懐いな)

出典: Raspbian 公式 Raspbian ダウンロードページ

1.7Gあるので少し時間がかかります.
お茶でもして待ちま…この空き時間にSDカードの初期化をしましょう.

SDカードの初期化

次に, SDカードの初期化をやります.
SDカードを挿して, Terminalを開きましょう. TerminalはFinderを開いて,
アプリケーション(Application) -> ユーティリティ -> ターミナル.app(terminal.app)
をダブルクリックすれば開けます.

アプリの画面が出ればOKです.
次のようにコマンドを打ちます. $の後ろがコマンドです. 下からコピペする時は, $のところの後ろをコピペして下さい.

$ diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *251.0 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            250.1 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3

/dev/disk1 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *31.0 GB    disk1
   1:                        EFI EFI                     209.7 MB   disk1s1
   2:       Microsoft Basic Data RASBIAN                 30.8 GB    disk1s2

$ # 今回は/dev/disk1のSizeが32GBなので, これじゃろと当たりをつけてやる. ちなみにこれ失敗したらひどいことになる場合もあるので慎重に.
$ diskutil unMountDisk /dev/disk1 
Unmount of all volumes on disk1 was successful

$ # RASBIANのところは任意の「英大文字」にして下さい. 英小文字はダメです. 
$ diskutil eraseDisk FAT32 RASBIAN /dev/disk1
Started erase on disk1
Unmounting disk
Creating the partition map
Waiting for partitions to activate
Formatting disk1s2 as MS-DOS (FAT32) with name RASBIAN
512 bytes per physical sector
/dev/rdisk1s2: 60194048 sectors in 1881064 FAT32 clusters (16384 bytes/cluster)
bps=512 spc=32 res=32 nft=2 mid=0xf8 spt=32 hds=255 hid=411648 drv=0x80 bsec=60223488 bspf=14696 rdcl=2 infs=1 bkbs=6
Mounting disk
Finished erase on disk1

怖い方はGUIを使っても良いかと.
やり方は「Mac で「SD カード」をフォーマット(初期化)する方法」の「SDカードを初期化する.」の章に書いてあります.

これでSDカードの初期化は終わりです.
自分はここで苦戦しました. 2

SDカードにimgをコピーする.

SDカードを初期化している間に, ダウンロードが済んだと思います. ...済んだよね?
「XXXX-YY-DD-raspbian-stretch.zip」
みたいなのがダウンロードされたと思うので, それを解凍します.

解凍したら, またTerminalでコマンドを打っていきます.

$ diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *251.0 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            250.1 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3

/dev/disk1 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *31.0 GB    disk1
   1:                        EFI EFI                     209.7 MB   disk1s1
   2:       Microsoft Basic Data RASBIAN                 30.8 GB    disk1s2

$ # 念のため, もう一度diskutil listで調べてから, /dev/diskを指定する.
$ diskutil unMountDisk /dev/disk1

$ # 「if=」まで書いたら, finderからドラッグ・アンド・ドロップしてくる.
$ # もちろん, パスについて知っているならパスを書く.
$ sudo dd bs=1m of=/dev/disk1 if=<imgのpath>
Password:

~~~しばらく待つ~~~

4724+0 records in
4724+0 records out
4953473024 bytes transferred in 2701.965241 secs (1833285 bytes/sec)

Passwordは, パソコンのパスワードを入れます. 見た目は何も変わらないが, ちゃんと入力されているので, パスワードを入力したらEnterを押して下さい.

Passwordがしっかり入力されると, しばらく止まっているように見えますが, SDカードに書き込んでいます. なのでSDカードに何もしない, ターミナルはそのままでゆっくり待ちましょう.

~ transferred ~とか出てきたら終了です.
Finderのデバイス欄にbootというのができていると思います.

これでimgができました.

SSHの準備

SSHとは, アバウトに言うとパソコンを遠隔操作できるようなものです.

SSHの準備をする方法は簡単で, このできたbootの中に「ssh」という何も書いていないファイルを追加するだけです.

実際にTerminalで次のコマンドを打てば終わりです.

$ touch /Volumes/boot/ssh

Wifiの準備.

sshで遠隔操作すると言っても, パソコンがどうにかしてRaspberry Piに「インターネット的に」接続していなきゃダメです. なので

  1. PCとRaspberry Piを有線LANでつなぐ.
  2. Raspberry Piとルーターを有線LANで繋いで, PCからルーター経由でアクセスする.
  3. Raspberry Piとルーターを無線LAN(Wifi)で繋いで, PCからルーター経由でアクセスする.

のいずれかの方法を取る必要があります.

今回は3の「Raspberry Piとルーターを無線LAN(Wifi)で繋いで, PCからルーター経由でアクセスする.」をやります.

ルーターにパスワードがある場合を想定しています. パスワードがある場合, Wifiに繋ぐ時にパスワードを要求されるはずです. 無い場合は, 「Wifiの準備.」をスキップして構いません.

また, WifiはRaspberry Pi3 Model Bの場合, 5GHz帯域では認識しないので注意して下さい.3

次のようなものを先程のbootの中に作ります.

  • 「wpa_supplicant.conf」というファイル.
  • 「wpa_supplicant.conf」の中身はこんな感じ.
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
 ssid=<SSID>
 psk=<Password>
 key_mgmt=WPA-PSK
}        

6行目の<SSID>にはwifiのネットワーク名(SSID)を, 7行目の<Password>は, Wifiにつなげる時に打つパスワードを入れて下さい.
ネットワーク名は上のWifiのマークで調べられます.

例えば, SSIDがhogeで, Passwordがhugaなら,

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
 ssid="hoge"
 psk="fuga"
 key_mgmt=WPA-PSK
}    

になります.
後はこれを, 次のコマンドを使ってファイルを作るだけです.

$ echo 'ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
 ssid="hoge"
 psk="fuga"
 key_mgmt=WPA-PSK
}' > /Volumes/boot/wpa_supplicant.conf

もしどこか間違えても, 修正してもう一度コマンドを打てば良いです.
ファイルが次のように作成されているのを確認して下さい.

これで, Raspbianをインストールする準備は整いました.

Raspbian インストール

それではようやく, Raspbianのインストールです.
SDカードを「安全に」取り外して, RasberryPi3にSDカードを挿入します. そして電源を入れると終わりです!

ここで, hdmiを持っている人はテレビとRasberryPiをつなげると, インストールされてる画面が出ます. ワクワクしますよね. 面白い.

しばらく待つと, インストールが完了します. 大体1分~5分くらいです.
これでRaspbianのインストールは終了です.

SSH設定

SSHが繋がるかの確認

インストールが完了したらSSHをしてみましょう. 2つの方法があります.

  1. IPアドレスからsshする
  2. ホスト名からsshする

1はちょっと知識がないとめんどくさいので, 2を推奨します. 1はあまり詳しく解説しません.

1. IPアドレスからsshする

LAN内で使われているIPアドレスを調べる6つの方法(Linux/Windows)」で紹介されている, arp-scanというコマンドを使います.

ターミナルで, 次のようにコマンドを打って下さい.

$ brew install arp-scan
$ sudo arp-scan -I en0 -l #en0は無線LANのこと. 
Password:
Interface: en0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.9 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
xxx.xxx.xxx.xxx xx:xx:xx:xx:xx:xx (Unknown)
192.168.0.x     xx:xx:xx:xx:xx:xx Raspberry Pi Foundation
192.168.0.x     xx:xx:xx:xx:xx:xx Raspberry Pi Foundation (DUP: 2)
xxx.xxx.xxx.xxx xx:xx:xx:xx:xx:xx Hon Hai Precision Ind. Co.,Ltd.
xxx.xxx.xxx.xxx xx:xx:xx:xx:xx:xx (Unknown)

521 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9: 256 hosts scanned in 1.862 seconds (137.49 hosts/sec). 5 responded

右側に「Raspberry Pi Foundation」と書かれてあるものの左の数字「192.168.0.x」に注目します. 今回は7行目です.

もし, 「Raspberry Pi Foundation」が見つからない場合は, 準備の段階で失敗しているので, やり直すか他のサイトを参考にして下さい. 4

「ssh pi@<先程注目した数字>」みたいなコマンドを打てば良いです.
今回なら「ssh pi@192.168.0.x」ですね.
途中で(yes/no)問われるので, yesと打ちます.
次にpasswordを要求されますが, 「raspberry」と打って下さい.

$ ssh pi@192.168.0.x
The authenticity of host 'raspberrypi.local (xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxx...
Are you sure you want to continue connecting (yes/no)? yes <- yesと打つ.
Warning: Permanently added 'raspberrypi.local,xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx' (ECDSA) to the list of known hosts.
pi@raspberrypi.local's password: #raspberryと打つ 

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Apr 18 01:24:38 2018

SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.

pi@raspberrypi:~ $ 

「pi@raspberrypi:~ $ 」が出ればsshができてます. つまりRaspberryPiを遠隔操作できます. 確認は以上で終わりです.

sshしたのが確認できたら, exitしましょう.

pi@raspberrypi:~ $ exit

2. ホスト名からsshする

「ssh pi@raspberrypi.local」というコマンドを打ちます.

すると, (yes/no)と言われるのでyesと打ちます.
「pi@raspberrypi.local’s password」は, 「raspberry」と入力して下さい.

$ ssh pi@raspberrypi.local
The authenticity of host 'raspberrypi.local (xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxx...
Are you sure you want to continue connecting (yes/no)? yes <- yesと打つ.
Warning: Permanently added 'raspberrypi.local,xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx' (ECDSA) to the list of known hosts.
pi@raspberrypi.local's password: <raspberryと入力>

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Apr 18 01:24:38 2018

SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.

pi@raspberrypi:~ $ 

「pi@raspberrypi:~ $ 」が出ればsshができてます. つまりRaspberryPiを遠隔操作できます. 確認は以上で終わりです.

sshしたのが確認できたら, exitしましょう.

pi@raspberrypi:~ $ exit

SSH公開鍵認証設定

SSHで毎回パスワードを打つのは少しめんどくさいと思います. しかし, sshでの公開鍵認証設定をすると, 毎回パスワードを打たずに済みます. ということで設定していきましょう.

HomeBrewさえインストールされていたら, 「ssh-copy-id」というコマンドが使えるようになるので, それを使っていきます.
ターミナルで, 次のコマンドを打って下さい.
password はRaspberryPi3のパスワードを打ちます. パスワードを変えていないなら, 「raspberry」です.

$ brew install ssh-copy-id
$ ssh-copy-id pi@raspberrypi.local
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/${UserName}/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
pi@raspberrypi.local's password: パスワードを入力.

Number of key(s) added:        1

Now try logging into the machine, with:   "ssh 'pi@raspberrypi.local'"
and check to make sure that only the key(s) you wanted were added.

これでおkです. では, sshしてみましょう.

$ ssh pi@raspberrypi.local
Linux raspberrypi 4.14.34-v7+ #1110 SMP Mon Apr 16 15:18:51 BST 2018 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon May 21 00:32:37 2018 from 192.168.0.5

SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.

pi@raspberrypi:~ $ 

パスワード無しで入れましたね.
これで, OSのダウンロードからSSH設定まで終了です. お疲れ様でした.

まとめ

今回はOSのダウンロードからSSH設定までしました. よくここまで頑張りました. 偉いw

後半, 画像撮影やHomeBrewの説明など, とっても省略したので, 疑問が多く残ると思います. わからないことがあれば質問下さい.

次は細かいRasberry piの設定を行います.

参考文献


  1. 32GB以上だと, インストールはややこしいです. やっている人は結構いるみたいなので, 「raspbian 64gb sd」で検索してみて下さい. ↩︎

  2. 自分はeraseDiskで書き込み禁止状態になっていて苦労しました. ずっと「error: -69877: couldn’t open device」と出ました. 調べてみるとカードリーダの調子が悪かった. こちらのatottoさんの「ちょっと甘めにさして認識させてから奥までさせばちゃんと書き込みできる」に助けられました.
    他の解決方法も色々あるので, 「sd 書き込み禁止 mac」で調べると良いかも. ↩︎

  3. Macから周囲のWi-Fi電波状況をカンタンに確認する方法:Mac Tips」から帯域を調べる方法が確認できるので, こちらからWifiの帯域を確認することができます. ↩︎

  4. Raspberry Pi 3を初回起動してからSSH接続まで」が良い感じ. ↩︎

Read More

ブログ(blogger)でhighlight.jsを使ってコードを綺麗に表示してみた話

自分はブログごとに, 「Syntax Highlighter」とか使って, コードを綺麗にしてました . だけどこれは設定がとても大変.
(しかも, その時cdnjsという, サービスを知らなかったので, アップロードで入れてました. 知っていたらそれでいいやって妥協してたのに.)

めんどくさくない方法無いかなと探していたら, 「highlight.js」を導入している方が多かったので, それをblogに導入してみた話.

highlight.js とは

もうとっくに色んな人が解説しているので, 一言で.

  • 速い

自分はこれだけの理由で導入しました. もっと利点を知りたいなら「コードのハイライト表示 JS ライブラリ 3種」など見ればいいかと

highlight.jsの導入(cdnjs経由)

まぁ, cdnjs経由の方法しか書かないんですが…(他の方法はめんどくさい. )

公式のGetting Startを見るのが良いかも.

やり方は簡単で, headタグ( <head> ~ </head>)の中(~の部分)に以下のコードを貼り付ければ良いだけです.

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>

私の場合はこんな感じ.

<head>

~~~~ 色々あって ~~~~

<link href='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css' rel='stylesheet'/>
<script src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js'/>
<script>hljs.initHighlightingOnLoad();</script>
</head>

ちなみに, bloggerのテンプレートに記述する場合は, xmlにするので上のやつと若干違います(閉じタグがない)

テーマの変え方.

「これ以外のテーマ無いのぉ?..テーマ変えたいんだけど.」って思う方多いと思います. 実はテーマ多いです.

highlight.js demo」の左側のStylesの下がテーマになっているので, クリックして気に入ったテーマを探して下さい.


気に入ったテーマがあれば,

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css">

の一番後ろのdefault.min.cssを<テーマ名>.min.cssに変えてみると, テーマが変わります.

テーマ名は全部小文字にして, 空白(" “)はマイナス(”-")に書き換える必要があります.
例えば「Arduino Light」を選ぶ場合は,

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/arduino-light.min.css">

と書きます.

まぁもちろん, こっちから探すべきなんだろうが.

ちなみに, 私はgithubにしてます. github大好き.

defaultの言語以外をhighlightしたい場合.

やりたいならこっちから言語を検索して, scriptタグを追記する形ではなかろうか. たぶん.

例えばapple scriptを入れたいなら, こっちから"applescript"を検索して, "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/applescript.min.js"が見つかるので,

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css"><script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
<!--ここから-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/applescript.min.js"></script> 
<!--ここまで追加-->
<script>hljs.initHighlightingOnLoad();</script>

かな.

バージョンについて

今回は, highlight.jsは9.12.0を使っています. これは指定できて, urlが書いてある場所の数字を変えるか, またはcdnjsでバージョンを指定してあげれば変えられます.

本当は最新版が良いのですが, latestとかない(updateでページが動かなくなったりしたら困るかららしい)ので, バージョンは手動で選択する必要がありますね.
自動アップデートは諦めるべきか…

ちなみに

めんどくさがりでない方は, highlight.jsの導入はcdn経由でなく, アップロードで設定したほうが良いです.

なぜなら, このcdnというサービスは, ブログを開くたびにインターネットを通じて, 他のパソコン様からデータを貰っているからです. つまり,

  • その偉いパソコン様が故障してしまったり,
  • みんなが一気にデータがほしいと言ったら, 自分が後回しになったり

などの理由で, 見た目が変わらなかったりします.
まぁ, cdnのようなサービスは, そういうのも見越してある程度対策していたりするので, 自分は結局cdnを使いますが…
そんなの事になっても大丈夫という方のみ使って下さい.

参考文献

Read More

Bloggerの記事の横幅を動的に変更する.

テンプレートでは, ウィンドウがどれだけ伸縮しようと, Bloggerの横幅のサイズは固定でした.
それが嫌だったので, 横幅を見ているウィンドウサイズに合わせて動的に(可変的に?)変更するようにしました.
ちなみに, その用語をfluid/liquidレイアウトというらしいです.

BloggerをFluid/Liquidレイアウトにする方法

こちら


.content-outer, .content-fauxcolumn-outer, .region-inner {
        min-width: 1000px; /*$(content.width)*/
        max-width: 1280px; /*$(content.width)*/
        _width: 100%; /*$(content.width)*/
      }
引用元 : Blogger: make your blog fluid (fit any screen resolution)

と書いてあったので, ちょっと変更して,

レイアウト -> カスタム -> 上級者向け -> CSSの追加

で, その中に追加した.


 .content-outer, .content-fauxcolumn-outer, .region-inner {
     min-width: 900px !important;;/*$(content.width)*/
     max-width: $(content.width);
     _width: 100% !important; ;/*$(content.width)*/
 }

テンプレートによっては, cssのクラスやタグが違うので, これが100%正しいコードとは言えないが, 最低でも自分はできました.

参考文献

Read More

Bloggerにアップロードした画像がぼやけてるわけ

今回は, Bloggerにアップロードした画像がぼやけたりしたので, 何故ぼやけるのだろうかと調べたお話です.

bloggerにアップした画像がぼやけるわけ 結論

簡単に言えば解像度の問題でした. (当たり前だろってツッコミはなしで.
bloggerから画像をimportする際には, こんな感じのコードが出る.

<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaTL8vIuvvWAP1tD0uhU6sTmr5ukROvTcNqcoim1RKvvVHQqCI-ERRitqjCERnJA_AHD2gvn5Ie4IgKij0xl7DYcwPUGqw2WLQft6wrbJRNpy1xsTZUAu2res1v2GjuLz0EAOsKEfFXK8d/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2018-04-28+23.20.01.jpg" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaTL8vIuvvWAP1tD0uhU6sTmr5ukROvTcNqcoim1RKvvVHQqCI-ERRitqjCERnJA_AHD2gvn5Ie4IgKij0xl7DYcwPUGqw2WLQft6wrbJRNpy1xsTZUAu2res1v2GjuLz0EAOsKEfFXK8d/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2018-04-28+23.20.01.jpg" width="640" height="316" data-original-width="1600" data-original-height="790" /></a>

実際の画像はこちら.

これ, クリックしないで見ていると分かるが, 相当ぼやけてる.

元の画像はこんなにぼやけてないのに…

なので, ggってみたらこちらの方より

The s320 is your resolution and it determines the quality depending on the size of the image. Notice how the link has a value of s1600, so when you click on the image it appears bigger and in better quality. An image with the width of 320px will look fine with s320. An image with the width of 800px will look awful with s320.

引用元 : HOW TO FIX BLURRY IMAGES ON BLOGGER

と書いてあった.
これだけ引用しただけじゃわからないと思うけど, 要はURLの中にs320とか書いてあるからそこで解像度が分かるらしい.
※ 赤色の部分

<img border=“0” src=“https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaTL8vIuvvWAP1tD0uhU6sTmr5ukROvTcNqcoim1RKvvVHQqCI-ERRitqjCERnJA_AHD2gvn5Ie4IgKij0xl7DYcwPUGqw2WLQft6wrbJRNpy1xsTZUAu2res1v2GjuLz0EAOsKEfFXK8d/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%2B2018-04-28%2B23.20.01.jpg” width=“640” height=“316” data-original-width=“1600” data-original-height=“790” />

赤色の部分の値を高くすれば, 解像度が上がる. ちなみにs<数字>であればなんでも表示されるので, s700なり指定すれば良い.
ちなみに, 自分はs1000にしている.

<a href=“https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaTL8vIuvvWAP1tD0uhU6sTmr5ukROvTcNqcoim1RKvvVHQqCI-ERRitqjCERnJA_AHD2gvn5Ie4IgKij0xl7DYcwPUGqw2WLQft6wrbJRNpy1xsTZUAu2res1v2GjuLz0EAOsKEfFXK8d/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2018-04-28+23.20.01.jpg” imageanchor=“1” ><img border=“0” src=“https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaTL8vIuvvWAP1tD0uhU6sTmr5ukROvTcNqcoim1RKvvVHQqCI-ERRitqjCERnJA_AHD2gvn5Ie4IgKij0xl7DYcwPUGqw2WLQft6wrbJRNpy1xsTZUAu2res1v2GjuLz0EAOsKEfFXK8d/s1000/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%2B2018-04-28%2B23.20.01.jpg” width=“640” height=“316” data-original-width=“1600” data-original-height=“790” /></a>

圧倒的に文字が見やすくなった.

参考文献

Read More

オーディナルとカーディナルを調べた話

オーディナルナンバーとカーディナルナンバーを調べてみたので, そのメモを書いていきます.

っ数学抜きで行きます. (筆者は数学が得意でないので.

もっと厳密に知りたい方は, こちらを見ればいいかもしれません
更に言えば, 英語のwikiほうがすごい書かれてます.

オーディナルナンバーとカーディナルナンバーの違い.

オーディナルナンバーは, 英語ではordinal number といいます. ordinal なので順序(position)が関係しています.
カーディナルナンバーは, 英語ではcardinal number といいます. 濃度とも言われるらしいです. つまり, 何個(size)あるかが重要です.
英語で例えると, 「first」と「one」は全然違いますよね. 日本語にしても, 「1番目」と「1つ」という意味でだいぶ違ってくると思います. それぞれ「3人の中の1位」と, 「3個の中の1つ」とも言えますね.
まぁ, 言葉遊びみたいな感じです.

続き

・無限の時を考える(順序や実数)
・Nominal Numbers について書く

参考文献

Read More

Jupyterをブラウザで手軽に試してみる.

こんにちは. akaです.
今回は, ちょっと紹介したいものの足がかりとして, Jupyterをブラウザで手軽に使ってみる記事を書きます.
「え, Jupyterって何?」
「Jupyterって聞いたことあるけど試せていないんだよね.」
という方々. 是非, 私と一緒に試してみましょう!

jupyterとは

プログラミングノートエディタの先駆けとなるエディタです.
私がプログラミングノートエディタと定義しているのは, 以下の機能があるエディタのことです.
  • セル単位でプログラムを実行できる.
  • セルで使用される言語に, 1つ以上のプログラミング言語 + markdown, textとして記述できる機能がある.
jupyterはPython + Markdownをサポートしており, なんとセル単位で文章を書いたり, コードを実行できる凄まじいやつです.
その便利さを実感していただくには, 実際に使ってみるほうが速いと思うので, 試してみましょう.

Jupyterをブラウザで試してみる

まずJupyterのホームページにアクセスします.
下にスクロールしていくと, 「Try it in your browser」とあるので, それをクリックします.

好きな言語を選べるのですが, 今回はPythonを選択します.

buildするので少し待ちましょう.
すると, jupyter notebookが起動します.

もうこれがエディタです!
例えば, 1番下のセルを選択して, Shift + Enterを押すと, セルが追加されます.

試しに, print(“hello world!”)と打ってShift + Enterを打つと...

なんと, プログラムが実行され, “Hello world!”が表示されました!
今度は同じセルを, print(“Hello Jupyter!”)に書き換えて, Shift + Enterを押すと...

上書きで実行して, 出力が変わっていますね. 素晴らしい.
さて, ここでMarkdownモードも使ってみましょう.
セルにテキストを入力して, 上の”Code”と書いてあるのを”Markdown”に書き換えて, Shift + Enterを押します.


テキストの挿入ができました!!

まとめ

今回は, ある記事を書きたいがために, まずJupyterを試してみるという記事を書いてみました.
自分の手元で, なんやかんやあって動かなかったり試せなかったりする人は, 是非ブラウザから試してみて便利さを実感してみて下さい!!
Read More

ブログの運用方法を考えてみる

今ブログの運用方法を考えています.



bloggerではmarkdownが使えないの初めて知りました.
とてもめんどくさい面白いですね.

とりあえず, 私はmarkdown使いたい派なので,
「htmlをサーバー(クラウド)から呼び出して, それを読み込む方式にしちゃってもいいんじゃないか説」
を唱えます.

だけどこれって,

  • markdownで記事を書く
  • クラウドに上げる
  • htmlに変換する
  • ブログに読み込みのスクリプトを書く
とかいう訳ワカメな構成になってしまうので, 

  • markdownで記事を書く
  • htmlに変換する
  • コピペ
でいいんじゃないかってなりました.

追記 3/10
https://hawaiisukiweb.net/web/198で, blogoというブログエディタなるものが紹介されていたので, 使ってみようと思います.
Read More

Popular Posts