指定文字列を含む行を削除してファイル出力する(windows)

わすれたときコピペでピャッとできるようにメモ。
logファイルを作ったときに、不要な行がいっぱいあって解析しにくいときに便利だったので。

windowsでの話
コマンドラインで cdでディレクトリ移動して、

 type log.txt | find /V "test" > logNew.txt 

こうすればtestを含む行を削除したlogNew.txtができる。
※出力ファイル名をもとのファイル名と同じにすると空っぽになってしまったので注意かも。

参考:http://fpcu.on.coocan.jp/dosvcmd/find.htm

oFでBase64変換する

openFrameworksでBase64というstringに変換する方法

Base64てのは画像ファイルとか音声ファイルとかいろんなデータを64種類の文字列に変換する方式のことで、これすることでデータサイズはちょい増えるけどたいていのファイルを簡単にテキスト化して受け渡しできるというもの。みたい。
https://ja.m.wikipedia.org/wiki/Base64

ターミナルとかなら簡単で、ofSystemなどでコマンド実行して〜みたいなやり方もあると思いますが、oF上でスマートに変換したかったので、いろいろ調べてまとめました。

base64のエンコードとかデコードはC++のネットワーク系ライブラリPocoの中にも実装されていて、今回のやり方ではそれを利用しています。

※of0.10.0からはPocoがアドオン化されているので、ProjectGeneratorなどからofxPocoを追加する必要があります。

ofImageにおける変換については探してみたらもろ答えがあった。ありがたみ🙏
https://gist.github.com/kidapu/0b9c2cbe98191a394c80

 




 

あと、変換したstringに改行コードが含まれている場合があって、それが邪魔してデコード失敗するときなどがありました。
というわけで、変換後のstringから改行コードを削除する関数(removeCRLF)も用意しています。
参考にしたのはこちら、そのままだけど。
https://teratail.com/questions/34367

他にも音声ファイルを変換したかったので、やりました。
※音声ファイルはofSoundBufferをwavとしてofBufferに直しています。こちらは後日ついきします。

とりあえず画像や音声データ→Base64に変換(エンコード)がしたかったのでそれのみ。

確認の時に使ったブラウザ上で画像↔Base64の変換確認できるサイト
https://lab.syncer.jp/Tool/Base64-encode/

最近よくoFからAPIを叩くのですが、その時にファイルを送るときは大抵Base64に変換したものを送るので、こうやってまとめておくと便利かも☺︎

使い方としては、ofApp.hなどで #include “ofBase64.h” ってしといて

string imageData = ofBase64::base64_encode(fbo);

という感じで。

classを作る代わりにnamespaceを作って、static関数を定義すれば、グローバルな関数(厳密には違う?)を作れるんですね。地味に結構便利そう。

 

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・ターミナルの見た目をカスタマイズした” 続きを読む