SourceTreeとGitLabとGitHubのssh連携

 

つい先日までSourceTreeとGitLabでもろもろ管理していたのですが、なぜだかエラーが出ました。
キーを作り直せどpermisson deniedみたいなエラー。

以下のサイトなどをきっかけにうまく動作しました。

こちらとても参考になった。
http://blog.sigoo.jp/?p=424
https://qiita.com/isaoshimizu/items/84ac5a0b1d42b9d355cf
https://qiita.com/yudoufu/items/82f752807893c63f06db

※ちなみにMacで .ssh などの . (dot)は隠しフォルダを意味しています。これをFinder上で表示させるには、[ cmd + shift + . (dot)] のショートカットキーで表示できます。
知っておくと時々便利!




はじめに、sshキーを作ります。
コマンドラインで

$ ssh-keygen -t rsa -C コメント(メールアドレスが通例)

オプションでいろいろあるけど、大事そうなのは、タイプとコメント。なくても大丈夫だったけど。

すると

Generating public/private rsa key pair.
Enter file in which to save the key (/home/.ssh/id_rsa):

保存先と名前を聞かれている。ので、適当な名前で保存する。(たとえば /home/.ssh/github_rsa とか )

パスワード設定(2回入力)してOK

そしたら /home/.ssh/のフォルダに 公開鍵(github_rsa.pub)と秘密鍵(github_rsa)ができる。pubは公開publicの略ね。

つづいて、.pubの公開鍵をgitlabのSettingsに入れる。
コピペすればいいけれど、コピペをミスったりすることもあるので、以下のコマンドのほうが確実にコピーできる。さっき作った.sshフォルダにある.pubのファイル(ここではgithub_rsa.pub)を指定してます。

$ pbcopy < ~/.ssh/github_rsa.pub
$ pbcopy < ~/.ssh/gitlab_rsa.pub

これをgitlabの右上のアイコンクリック→Settings→タブの中のSSH Keys→Key にペースト!
Titleはわかりやすけりゃ何でもいいみたい。

合わせて秘密鍵をssh-agentに追加(ここでは秘密鍵なので語尾の.pubいらない)

$ ssh-add ~/.ssh/github_rsa
$ ssh-add ~/.ssh/gitlab_rsa

そんでからconfigファイルも編集しておく。
configファイルはたとえばこんな感じになります(私の場合)。

$ nano  ~/.ssh/config

Host github.com
User shugohirao
HostName github.com
TCPKeepAlive yes
identitiesonly yes
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/github-rsa
ForwardAgent yes
Host gitlab.アカウント名.jp
User shugohirao
TCPKeepAlive yes
identitiesonly yes
UseKeychain yes
AddKeysToAgent yes
identityFile ~/.ssh/gitlab_rsa
IdentityFile ~/.ssh/gitlab_rsa

key-Cでアドレスを入れておくといいらしい。gitlabとかに追加した際に自動でコメントつくし、わかりやすいのかも。

私の場合以上で、SourceTreeからプッシュできるようになりました。
なんかわかったことあったら、また追記メモします。

※追記20180427
configにFowardAgent yesをつけているとSourceTreeでエラー出てプッシュできなかった。→消したらプッシュできた。

※追記20180703
ときどきgitlabに接続できなくなることがありました。こちら見ると、再起動するたびに ssh-add ~/.ssh/github_rsa ってする必要があるみたいでした。
なので、ターミナルログイン時に実行される.bahs_profileに ssh-add ~/.ssh/github_rsa  のコマンドを追加してみました。
そんで更に、こちらをみるとconfig内で AddKeysToAgent yes という文言追加すると良さげなことも書いてあったので、試してみました。
(どれが効いてるのかぜんぜん検証になってない)
とりあえず今の所、ssh切れる問題は回避できています。

※追記20181109
参考:
brew install keychainでkeychainを入れました。
https://qiita.com/yyamamot/items/1bc1dd93692bf9379f3e
https://h2ham.net/macos-sierra-use-keychain

iTerm2・ターミナルの見た目をカスタマイズした

書くことを続けるための備忘録小ネタ。

terminal使うこと増えてきて、ふと調べた時にiTerm2がいい感じとのことだったので、とりあえずで使っていたのだけど、タブくらいの機能しか使ってなかった。

で、以下の記事をみた。
https://qiita.com/kinchiki/items/57e9391128d07819c321

めっちゃダサいらしい。たしかに。

 

とにかく変えたいなと思ったのは、ユーザー名的なところ(ターミナルでコマンド打つ前に出ている$前の部分)
ここの色を変えて、コマンド振り返る時にパット見てすぐわかるようにしたいと思いました。

はじめこの$前の名称がわからず調べ方よくわからなかったけど、良さげな記事が見つかった。
http://www.yoheim.net/blog.php?q=20140309

$ nano ~/.bashrc

で.bashrcを開いて、上の記事を参考に以下のPS1=”ゴニョゴニョ”の行を追加した。

ちなみに私の.bashrc さっぱりしてた。これからどんどん汚れていくのかも。

# Alias
alias raspi='ssh pi@raspberrypi.local'
# Terminal Style
PS1="\[\033[34m\]\h:\W\[\033[0m\]$ "
CONDA_PS1_BACKUP="\[\033[34m\]\h:\W\[\033[0m\]$ "

alias ゴニョゴニョは、ラズパイはいる時のコマンド省略バージョン(今回の話では無関係なのでスルー)

2つめ、ここでターミナルの $前の文章をカスタマイズしている。
PS1=”ゴニョゴニョ”を書くことで文法に沿っていれば変更できるはず。

ただ、これだけだと anaconda, minicondaで作った環境に移動した時、PS1って設定が反映されていないっぽいので、別途用意する必要がありました。そのため CONDA_PS1_BACKUPって行を追加しました。
これないと、普段どおりの表示だった。

これについてはこちらが参考になった
https://qiita.com/meshidenn/items/100c7375e96458cc46ea

PS1というのはbashにおいての環境変数のようなものらしい。

続きを読む “iTerm2・ターミナルの見た目をカスタマイズした”

ofColor::red みたいな書き方のwarningを消す

めちゃ些細なこと。openframeworksネタ。

他人の環境でどうなってるのかわからないのですが、ofSetColor(ofColor::red)みたいな書き方をするとXcodeでwarningが出てました。

Instantiation of variable ‘ofColor_<unsigned char>::red’ required here, but no definition is available

別にビルドする分には問題なかったのですが、warning消すことできたのでメモ。

参考にしたのはこちら
https://github.com/openframeworks/openFrameworks/issues/5546

で実際にしたのはこんな感じ

ofGraphics.hで以下を追加。

//### ADD ######################
// reffered from https://github.com/openframeworks/openFrameworks/issues/5546
extern template struct ofColor_<unsigned char>;
//##############################

これでwarning出なくなったので、気兼ねなくofColor::redとか使える!

たまたまつい最近参考にしたフォーラムが更新されてました。githubのoF0.9.8なら解消されているのかも。

ArtHackDay2018に参加しました

終了して1ヶ月ほど経っちゃったけど、ひょんなことからArtHackDay2018に参加させていただいてました。
個人的にはめちゃくちゃ勉強になったのと、またいつか参加したいなと思うので、感想書いときます。書かないよりはマシ程度で。思い出したら追記もします。
(別の場所で書いたものをより個人的なメモとして書いています。)

ArtHackDayは前々から参加してみたいと思ってたのですが、仕事の関係で日程的に微妙でエントリー忘れてました。

が、幸い、職場の人が参加されていて、Day1Day2が終わった時点で人数少ないからサポートで、ということで急遽参加させていただきました。

一応、Art Hack Day (アートハックデイ)とは、

アートに特化したハッカソン。参加申し込みから選出されたアーティストや技術者、そして研究者が一堂に会し、その場で結成したチームで、短期間でアート作品を制作する。

作ったもの

2台のディスプレイが向き合い、にらめっこや会話をしているような Apophenicという作品。

お互いが、お互いのディスプレイに映る木漏れ日のような映像の中から顔認識をしています。

ここでいう顔認識は、人間が木漏れ日や、シミ、木目などに見つける「顔っぽい」ものを認識することを意味しています。

心霊写真なども同じような現象ですが、これをアポフェニアというそうで、今回の作品ではその現象を利用して、ディスプレイというモノ同士がコミュニケーションしている様を表現しました。

Dlibってライブラリを使った機械学習を利用した顔認識なども試したのですが精度が高くちゃんと顔じゃないと顔と認識しなかった。

今回は「顔っぽい」を見つけることに注力するため、そういう精度のいいものではなく、丸が3つあって、その位置や大きさの関係性から顔っぽさを検出しました。アルゴリズムは取り急ぎ自分で考えたものを実装しています。
個人的には「曖昧な顔認識(ghost)」って呼んでいて、今後アート的な使いみちがありそうな可能性を感じていたりします。

アルゴリズムの話については、
openCvで取ったblobs(輪郭)ひとつひとつに対して、以下の処理を行います。

①まず一旦、仮にRightEye(仮)として登録
②他のblobsとのサイズ、距離を見て、LeftEye(仮)を設定する。該当するのがなければ①へ戻って次のblobに処理を移す。
③他のblobs(仮設定した右目左目を除く)とのサイズ、距離を見てMouthを設定する。なければ①へ戻る
④設定していた右目、左目、口を1つの顔っぽいオブジェクト(ghostFace)として設定する。

みたいな感じ。(すげー漏れありそう)

これをスレッド分けて計算させている感じです。雰囲気が伝われば嬉しい。
各blobsに対して上記の処理を行っていたので別スレッドで計算させる恩恵は大きかったっぽい。

 

そんで作品の話に戻ると、
顔っぽさを認識することで、映像に変化が起こり、その変化によってまた新たな部分に顔っぽさが見出されて映像が変化し…といった具合にディスプレイ同士が勝手にやりとりをし、その相乗効果によって、想像を超えた映像が生み出されるのではないか?的なところまで考えていたのですが、展示までにはどうもそこまでうまくは行かなかった。

パラメータの調整次第ではそんなことも実現できるかも。。
審査員の方からも似たようなご指摘いただいて、たしかにそのとおりなんだよなーと。分かる人にはわかるのかもしれないけど、それだけじゃさみしい。

 

個人的には、曖昧な顔認識っていうような(簡素な)アルゴリズムから自分で考えて実装して作品に組み込むということがたぶん初めてで、しかも2日くらいでなんとかできたというのは我ながら よく頑張りました◎です。半年くらい前の私には想像つかないようなことだったので、一応レベルアップしてたんだなと。
あと作る前に、ある程度頭で設計のイメージしてコーディングに移るという流れが取れたのもよかったです。ちゃんと設計できてないのについつい手を動かして試してみがち〜ってあるあるを払拭できた。

と言ってもできなかったことがあったり、お粗末なコードが多々あったりなので、、精進します…

この作品を作るに至るまで、メンバーの方とオンラインで1,2時間会議したりして、あーでもないこーでもないを繰り返しました。個人的にはそういう時間が貴重に感じるので楽しかったです。

反省点はたくさんありますが、参加できてとてもいい経験ができました。何よりいろんな方と知り合えたのが嬉しい。あとみんなやさしい。

今後、できればこの作品をアップデートもしたいです。