パン屑の轍

ボドゲとかプログラミングとかゲームとか

Docker ブリッジ接続

 

- VirtualBoxのブリッジ接続と同じようにホストと同じセグメントにDockerコンテナを作成する

 

- ホストのデフォルトゲートウェイとサブネットを確認

```bash

$ def_gw=$(ip route | egrep "^default" | awk '{print $3}')

$ netdev=$(ip route | egrep "^default" | awk '{print $5}')

$ subnet=$(ip route | egret "^[0-9].*$netdev" | awk '{print $1}')

$ docker network create -d bridge --subnet $subnet --gateway $def_gw br0

```

 

- Dockerコンテナ作成時にIPアドレスと使用するネットワークを指定して作成

```bash

$ ping 192.168.0.36

: IPアドレスが存在しないことを確認

$ docker create -it --net br0 --ip 192.168.0.36 debian

```

 

- ネットワーク環境によっては--dnsオプションを使用する必要があるかもしれない

- 既に手動でブリッジネットワークを作成していた場合、IPアドレス範囲が重複するとかなんとかいうエラーが出るので既存のブリッジネットワークを削除する必要があるかもしれない

Linux Kernel Document Build方法

概要

linux/Documentation/配下にLinux カーネルのドキュメントが存在する。

ドキュメントはrStで書かれており、sphinxでビルドできる。

ビルドされたものは、https://www.kernel.org/doc/html/v4.11/doc-guide/sphinx.htmlとかで公開されている。(これはv4.11当時のドキュメント)

ここでは、Macでドキュメントをビルドする方法を紹介する。

手順

  • sphinxをインストール

    pip3 install sphinx
    
  • automakeをインストール(Makefileの実行に必要)

    brew install automake
    
  • [Option] sphinx_rtd_theme, graphviz, ImageMagickをインストール(ドキュメントがかっこよくなるらしい)

    pip3 install sphinx_rtd_theme
    
    brew install graphviz ImageMagick
    
    # ubuntuの場合はImageMagickではなく、imagemagick
    
  • ビルド

    cd linux/  
    
    make htmldocs
    

    Documentation/outputにドキュメントが生成される。 WSLの場合はsudo apt install attrしてからsetfattr -n system.wsl_case_sensitive -v 1 <dir>linuxカーネルリポジトリ内の全フォルダで大文字小文字を区別するように設定する必要がある。

おまけ

  • html以外の形式でもビルドできる。
    • Latex: make latexdocs
    • PDF: make pdfdocs
    • EPUB: make epubdocs
    • XML: make xmldocs
  • cscope.outのビルド make cscope
  • Dashに取り込む。
    • Sphinxドキュメントからdocsetを作成するツールdoc2dashをインストール

      pip3 intall doc2dash
      
    • docsetを生成&Dashに追加

      cd linux/Documentation
      doc2dash -n linux -j -a output/
      

      linux.docsetが生成されてDashに追加される。 かなり快適にAPIとかを探せていい感じ。 Windowsの場合はZealを使うことになるので-aを抜いてドキュメントを生成してZealにインストールしてやればいい。 Zealへのインストール方法は割愛。

Linuxへの参加のきっかけとしてDocument書いてみるのもアリなのかも。 日本語翻訳記事もちらほらあるので需要はありそう。


Yoga book meets Remote Desktop

Yoga book meets Remote Desktop

 

I bought Yoga book Android 3 days ago.

It is a very prety device.

It is light, smoose, and powerful.

Halo keyboard is better than I think.

However, I was disappointed a bit to use Typora, my favorite Markdown editer.

But, I think ... with using Remote Desktop to my Linux, I can use Typora on my Yoga book.

I tried it.

 

Preparation of Linux host

 

install and run xrdp

sudo apt install xrdp
sudo systemctl enable xrdp
sudo systemctl start xrdp

Connection from Yoga book to Linux

 

install aRDP on Yoga book( I cannot use Microsoft RDP client for this purpose.)

run aRDP and configure it.

Then you can connect to your Linux.

f:id:souljacker-cannot-get-mysoul:20180518214141j:plain


(on aRDP, i cannot input in Japanese, so this article was wrriten in English)

Arduino Nanoと人感センサHC-SR501

外出/帰宅時に玄関が真っ暗になるので靴を探すのがつらかったので、Arduinoと人感センサで足元を照らす装置を作ってみました。 材料さえあればハンダ付け含めて一時間ちょいで作れるのでおすすめです。

部品

使った部品は全てWishで購入しました。 おそらく、パチもんですが、特に回路に違いなどはなかったので問題無いと思います。

実装

回路

回路ってほどのもんではないですが・・・・・・

HC-SR501の

接続します。

LEDを

接続します。

コード

#define LED PD3
#define HumanSensor PD2

void setup() {
  Serial.begin(9600);
  pinMode(LED, OUTPUT);
  pinMode(HumanSensor, INPUT);
}

void loop() {
  int isHuman = digitalRead(HumanSensor);
  
  if(isHuman == HIGH)
  {
    digitalWrite(LED,HIGH);
    Serial.println("There are some human.\n");
  }
  else
  {
    Serial.println("There are no human.\n");
    digitalWrite(LED,LOW);
  }
  
  delay(300);
}

非常に単純なコードです。
HC-SR501は人間を感知した際に、HIGHを出力するため、上のようにif文を使わずに

void loop() {
  int isHuman = digitalRead(HumanSensor);
  digitalWrite(LED, isHuman);
  
  delay(300);
}

としてもよいですが、全ての人感センサがHIGHを出してくれるとも限らないので、 if文で分岐したほうが後々別の人感センサを使いたくなったときに変更が楽でしょう。
delayが300msなのは、人感センサの反応時間が最小でも0.3s(らしい)からです。

実装してしまうと大変楽なのですが、最初は人感センサがHIGHを出すのかLOWを出すのか わからなかったので、そこが面倒でした。
デバッグ中は人間(自分)が近くにいるので、自分に反応しないように人感センサを箱に入れたりしないといけないのも面倒でした・・・・・・

以上、GWのミニ工作でした。