git 全体構造と使い方とコマンドの図解。
※2019.08.02追記
独習Git読みました。下記の記事には正しくない内容が多分に含まれていますので気をつけてください。
全然まとまってないけど。
全体的な使い方
各リポジトリ等の関係の図解
- https://qiita.com/kyoyyy/items/161b6905f45bee2efe21
- Gitではじめるバージョン管理 〜ローカルリポジトリでファイルを管理してみよう〜 | Hivelocity (ハイベロシティ) デジタルでビジネスを最適化
- Git入門 - Gitの仕組みを速攻で理解する
・コマンドの説明とか。順番適当。
git初期化
git init
remoteのURLをoriginという名前で設定
git remote add origin hogehogeURL
remoteのoriginのURLを変更
git remote set-url origin hogehogeURL
hogeファイルを「コミットするリスト」に追加する。git add -i で対話で「コミットするリスト」を編集できる。
hogeを「.」にすればカレントディレクトリの中身すべて追加できる。
git add hoge
「コミットするリスト」の内容をhogehogeというコメントを付けてローカルの今いるブランチにコミットする。
git commit -m "hogehoge"
ローカルのmasterブランチをリモートリポジトリにマージする。
git push origin master
ここでの「origin master」は「origin/master」とは別物。origin/masterはローカルにあるリモート追跡用リポジトリのこと。
「git push origin master」はどういうことをしているかというと、origin(=リモートリポジトリ)に「ローカルのmasterブランチ」をpushするということ。
ここで大事なのはこの「git push origin master」のmasterはソース元(この場合はローカルのmasterブランチ)を指していること。
つまり、「git push origin hoge」としたときにリモートリポジトリにhogeブランチが存在しない場合、リモートリポジトリに新しくhogeブランチが作られる。
ほんとにぃ?じゃあ現在のブランチがmasterブランチの時に、「git push origin hoge」したらリモートにはローカルのhogeブランチがmergeされるの?⇒されたわ。
- Git超入門:"git push origin master"の"push"と"origin"と"master"の意味がわからないあなたへ · DQNEO起業日記
- 【Git基礎】git push origin masterのmasterはローカル/リモートどっちのこと? - Qiita
ブランチの一覧を表示して今どのブランチなのかを確認する。
git branch
現在のブランチからhogeという名前でブランチを切る(ブランチの切り替えはされない。)
git branch hoge
hogeブランチに切り換える。ワーキングディレクトリの内容がhogeブランチの内容に更新されます。
git checkout hoge
現在のブランチにhogeのブランチを取り込みます。
git merge hoge
hogeブランチを削除する。mergeした後に必要なくなったブランチを削除するなどに。
git branch -d hoge
あるコミットまで状態を戻す。あるコミット以降のコミットはなかったことになる。(コミットが削除される)
gitでは空のディレクトリは無視されてしまう。.gitignoreか.gitkeepを使おう。
- .gitignore の書き方 - Qiita
- 空のディレクトリを維持するための、 .gitkeep と .gitignore の使い分け - Qiita
- [Git] .gitignoreの仕様詳解 - Qiita
pull = fech + merge ?
- 【古い情報です】 pull は本当に fetch + merge なの? - Qiita
- git fetchの理解からgit mergeとpullの役割 - Qiita
- 【Git】fetch / merge / pull の違いと強制的にmergeする方法について - haruakinosuke's blog
- gitの管理対象から特定のファイル、ディレクトリを削除する - Qiita
- gitの管理下にあるディレクトリ一覧を取得する - Qiita
- Gitのリモートブランチを削除するまとめ - Qiita
- リモートリポジトリの確認・編集・削除 - Qiita
エラー
- 初めてGitHubリポジトリにpushしたらrejectedエラーになったときの対応メモ - Qiita
- 【開発環境】GitHubへのpushが「fetch first」と表示されてrejectedとなったときの対処 - 映画と旅行とエンジニア
- https://blog.otsukasatoshi.com/entry/2017/07/18/070000
以前のコミットに戻したい時
gitの設定色々
submoduleとsubtree
- git submodule の使い方まとめ - u16suzuの blog
- git submodule と git subtree から見る外部リポジトリの取り扱い - tech.guitarrapc.cóm
- git-submodule と git-subtree - Qiita
- Gitのサブモジュール機能を使ってプロジェクトを管理してみよう | vdeep
- gitで外部moduleを扱う方法(subtree) - Qiita
- git-subtree移行メモ - Qiita
適切なコミットの粒度
コミットメッセージ
Arduinoで赤外線通信
使ったもの
・受信モジュールは Pl-IRM0101-3
・送信用の赤外線LEDはこれ OSI5LA5113A
・バイポーラトランジスタ 2SC1815L-GR
参考
- IR Remoteで赤外線通信 – jumbleat
- Arduinoで赤外線受信(NECフォーマット) - 適当のごった煮
- Arduinoでパーツやセンサーを使ってみよう~赤外線リモコン(前編) | Device Plus - デバプラ
- Arduino に赤外線受信モジュールをつなげてみた(2):息子と一緒に Makers:So-netブログ
- マイコンの実験:赤外線通信実験2
赤外線使ってシリアル通信
Arduino-IRremoteのライブラリを使いました。
・はまったところ
Arduino-IRremoteの送信サンプルには送信用のピンを指定するところがありません。
デフォルトで3番ピンが出力に設定されるようです。
RaspberryPiでサーボモーターをPWM制御する。
RaspberryPi3 でハードウェアPWM出力できるピンは12, 13, 18,19の4つ
そのうち、独立して制御できるのは「12と13」か「18と19」。「12と18」、「13と19」は同じ制御しかできない。
あらかじめこんな感じでピンをセットアップしておく
wiringPiSetupGpio();
pinMode(18, PWM_OUTPU);
pwmSetMode(PWM_MODE_MS);
主に使う関数はこの三つ
pwmSetMode(int mode); pwmSetRange(unsigned int range); pwmSetClock(int divisor);
pwmSetMode(int mode)でPWMをバランスモードかマークスペースモードか選択する。
デフォルトはバランスモードになっているらしい。
PWMの周波数はpwmSetRange(unsigned int range)とpwmSetClock(int divisor)で決める。
最後にpwmWrite(18, num)で出力。
計算方法はここを参照しました。
ちなみに、pwmSetClock()は(pwmSetRange()も?)は2つの出力ピンで共通なため注意。
たとえば、2つのプログラムを同時に動かしてPWMを同時に制御しようとして、
それぞれのプログラムでpwmSetClock()を呼ぶと、後から実行された方で上書きされてしまう。
pythonで書く場合
他参考
Raspberry Piのセットアップ
ここら辺を参考に
- Raspbianのインストールと最強の初期設定 | 純規の暇人趣味ブログ
- Raspberry Pi 3 Model B をインストールしてSSH接続できるようにしてみる – CLARA ONLINE techblog
・DDwinをダウンロード
・OSイメージをダウンロード。
デスクトップとLITEの違いはデスクトップ環境が込みでインストールするかどうか。
コンソール操作だけでいい人はLITEでOK。
・DDwinでSDカードにイメージを書き込み。
管理者権限で実行すること。書き込み先を間違えないように超要注意。
・いきなりWi-Fi経由でSSH接続したい場合はSDカードのルートにsshという名前の空ファイルとwpa_supplicant.confというファイルを置いておく。
dhcpcd.confも同じようにファイルを置いて設定できた気がする。
ちなみにNOOBSを使ったインストール方法はここを参照
NOOBS無印とNOOBSLITEの違いはOSをダウンロードするタイミング
デスクトップ環境を最初からダウンロードするか、インストール時にダウンロードするか。
NOOBSはOSではなくOSのインストーラ
RaspberryPiをWi-fiのアクセスポイントにする。
RaspberryPiにルーターの機能を付ける場合はここら辺
- Raspberry Piの無線LANアクセスポイント化 - DesignAssembler
- Pi 3をWifi AccessPoint化(Raspbian stretch Lite 2018): new_western_elec
- How to Set up a Raspberry Pi as a Wireless Access Point
- Raspberry Pi3 無線LAN AP化 ~ 偉大なるノッポとプリン
RaspberryPiに中継(ブリッジ)機能を付ける場合はここら辺
今回は単純なアクセスポイント化(インターネット接続なし、DHCP機能なし)をやりたかったので、hostapd周辺だけの設定だったので簡単でした。
ざっくりやったこと。
・wlan0のIPを固定
・hostapdをインストール
・hostapd.confを編集
・wlan0をUP
・hostapd実行
ちなみに今回と逆のパターンで
RaspberryPiで無線を受けて、それを有線にながすのはイーサネットコンバータというらしい。
Raspberry Pi3を無線LANコンバータにする -blog SkyofFantasy-
マウスキーボード共有ソフトSynergyのインストール
一つのマウスキーボードをネットワーク越しに複数PCで使いまわすソフトSynergyのインストール方法
ビルド済みのものはここらへんから
- GitHub - brahma-dev/synergy-stable-builds: Downloads : https://brahma-dev.github.io/synergy-stable-builds/
- Releases · brahma-dev/synergy-stable-builds · GitHub
- Npackd
ソースはここらへんから
- GitHub - symless/synergy-core: Open source core of Synergy, the keyboard and mouse sharing tool
- https://github.com/symless/synergy
githubのwikiにコンパイル方法が書いてあります。
古いソースのビルド方法はもうgithubに載っていないのでここを参照
※2019/01/08追記
いつの間にかリポジトリのあった
sudo apt install synergy quicksynergy