開発備忘録

備忘録

Gitに日本語が書けないのでこちらで

2/7 イコラブアプリ

 

以前から完成間近だったが、あとひとつ

『画像を表示されるのと同時にtxtファイルの存在を確認する必要』があった。

 

画像とboolとかを一緒にしたいので、改めてClassを生成。

それに伴って色々書き換えているうちに大きな壁が立ちはだかる。

 

ひとまずRectを赤太枠にするところまでは手直ししたが、

・次の画像に進めない

・treeViewの値がおかしい。(マイナスになっていることもある)

 

ので、その辺りもう一度よく確認すべし。

 

●まずは次の画像に行けない所を手直し。

 →ログを見ながら要修正。

Git使い方備忘録

Git Bashの使い方を学び始めたのでメモ

 

---------Local---------

リポジトリを作成したいディレクトリに移動する。

「cd~」

 

「git init」

指定ディレクトリにリポジトリを作成する。

一番初めだけで大丈夫な気がする。

 

「git add .」

dir内のファイル全てをステージへadd

(特定のファイルだけaddしたい場合は「git add example.txt」)

 

「git commit -m "comment"」

ステージにaddされたファイルをリポジトリに保存。

 

「git log」

コミット履歴を確認

 

⑥diff、status ※未

「git diff」

リポジトリとワークツリーの差分をチェック

 ※ワークツリー=指定したディレクト

「git diff --staged」

リポジトリとステージの差分をチェック

「git status」

…変更ファイルを確認

 

⑦restore ※未

「git restore <ファイル名>」

…ワークツリーの変更を取り消す

「git restore --staged <ファイル名>」

…ステージに挙げた変更をワークツリーに戻す

---------Remote---------

➀「git branch feature」

ブランチを作成

 ※ブランチの一覧を表示

  「git branch」

  「git branch --a」Githubを含めたブランチの確認

 

②「git switch feature」

 ※HEAD…今自分がいるブランチ

 「git switch --c feature」

 …feature というブランチを作って、HEADをfeatureに一瞬で切り替える

 

③「git merge feature」

ブランチをマージ(合併)

変更したブランチをメインのものに統合させる。

 「git merge origin(リモート名)/main(ブランチ名)」

  ※リモート名ってなんだ?よくこのコマンドの意味を理解していない。

   Githubでマージする場合?

※コンフリクトに注意!!!

 

---前回のコミット内容まで元に戻したいとき---------------------------------

「git reset --hard HEAD」

 

例えばUnityで色々変更をしてよくわからないバグが生じて、

1からやり直したいってときはこのコマンドを使う。

 

--hardオプションでインデックス、ワーキングツリー全てを戻す。
HEADは最新のcommit idのエイリアス。前回のcommitまで戻したいのだから、HEADを指定する。

(参考URL:【Git】ローカルの修正を前回のcommitまで戻す方法 - Qiita)

 

※特定のコミットの状態に戻すとき

「git reset --hard (ハッシュ値)」

ハッシュ値…「git log」で調べる。

commit 0f91e00a7f1a7c0a09420c2f2d68256956660e25 (HEAD -> feature)

 

ただ、ある特定のコミットに戻ると、戻った時点以降にコミットした内容は消えてしまうので注意!

 

「git revert  (ハッシュ値)」

でコミット履歴を残したまま過去に戻れるらしいが、

反映されていない変更履歴が残ってしまい、混乱を招く恐れがあるので非推奨とのこと。

(参考URL:[git] 戻したい時よく使っているコマンドまとめ - Qiita)

----------------------------------------------------------------------

 

④「git remote add origin http://~

リモートリポジトリの情報をローカルリポジトリに登録。

例)リモートに保存したいGithubアドレスを入力。

  ※それ専用のフォルダも作っておくといいのではないか。

今後「origin(リモート名)」という名前を使ってGithubにアクセスできる

string origin = "http://~~"  //みたいなイメージ

 

⑤「git push origin master」

指定したリモートリポジトリに保存!push

「origin」は指定のURLを格納した名前

 

⑥「git pull origin main」

リモートリポジトリから情報を取得

「git pull」※省略可能

*fetch + merge

 fetch…リモートリポジトリからローカルリポジトリ

 

⑦プルリクエスト…コードレビューしてーってやつ。

コードに誤りがないかチェック。

 

 

●プルリクエストを利用した基本的な開発の流れ

1,今のHEADを確認「git branch」mainを最新に更新「git pull origin main」

2,ブランチを作成「git switch -c feature」

3,ファイル修正・コミット「git add .」「git commit -m ”comment”」

4,プッシュ「git push origin feature」

---Githubへ移動

5,プルリクエス

 「New pull request」

 「main」←「feature」みたいに変更

 「create pull request」

 「title:簡単な変更内容 comment:変更内容の詳細」

 クリック「create pull request」

6,コードレビュー

 チームで開発する場合、レビューしてもらいたいReviewerを選ぶ、追加するなどして、レビューしてもらう。

 全員問題ないようだったら次の段階へ

7,マージ

 「merge pull request」

 「Delete branch」ブランチは消しておく

Unity便利なショートカット(21/12/27)

●Ctrl + r + r

同じ変数や文字列を全部変える。

 

●Ctrl + h

文字列置換。

「現在のドキュメント」を「現在のブロック」に書き換えるとより安全。

×の下の一斉置換(Alt+a)で完了

 

●(VS)なんかメソッドや変数が書かれている行数の左側を左クリック

赤い丸がつく

Unityにアタッチ(F5)

なんかオレンジになる。

Unityにproject画面でPlayをする。

 

するとなんかその行にかかわっている引数やらいろいろ出てくるのか。

詳細はよく知らん。今後学べ

↓デバックの停止

 

●F12参照

変数やメソッドのおおもとを辿る時に使う。

 

 

 

★クラスの特徴

・クラスは書き換えられない。

クラスをインスタンス化させたらメモリに展開される。(メモリに一つだけ)

参照したい場合はそこから取ってくる。

変数に格納したい場合はclone()を使えばいいのかな。

 

★UnityのGetComponentは時間がかかる。

 

 

 

 

最後にひとこと。

やっぱ画像認識はやっていてワクワクするし、(俺の場合その前からでもワクワクしてしまう)楽しい。

将来はどんなことやってみたいかなーとか夢が膨らんでくる。

AIスキルは手に付けたいと思うので、今後もやっていきたいです。

構造も勿論のこと、今後学んでいかなくては。

 

なにより、画像認識が最高に楽しいってことを忘れないことが大切なのではないか

 

画像認識

久しぶりの更新。

プログラミング記事ははてなブログに書くのではなくてQjitaとかに書くのがいいのではないかと思いながらも備忘録をはてなブログに残している。

あくまでもこちらは日記ですので

 

 

Webカメラで顔認識をして、一瞬外れたMATを保存する機能を付ける

 

まず、Webカメラ画像をメモリに格納して、それらの画像をAIに通して顔があるか判定する。

ただ、AI処理には時間がかかるので、全画像を認識できず、3枚に1回とかしか識別できないというイメージ。

 

例えば「1」画像をAIに通して顔を識別する。

識別している間でもWebカメラからは画像がメモリに格納され続けて、

識別している最中にも「2」「3」と画像が溜まる。

「1」の識別が終わった時には画像は「4」になっているので次は「4」を識別する。

 

「2」「3」にはAIが通されていないが、ハイスピードで画像が切り替わっているので

「2」「3」のフレームには「1」で認識した顔の枠が引き継がれる。

「1」の使いまわしって感じ。

 

【1】「2」「3」【4】「5」「6」【7】「8」「9」【10】「11」「12」

 

【】…AIを直接通されたフレーム

「」…処理時間の都合上AIを通されなかったフレーム

 

➀【1】以前の【】は5回連続して顔を認識していたとする。

(顔はそこにある前提)

②【4】では顔認識が外れ、枠も外れた

(なんらかの問題で【4】だけ認識されなかった)

③【7】以降5回連続して顔を認識していた

④【4】の画像を保存

⑤「2,3,5,6」とは区別するために「AIを通したかbool」を組み込む

 

●直前直後にAIを通した画像は認識したけどそこだけ認識が外れてしまったbool

●AI認識を直接したかbool

 

 

 

----組み込み方----

➀リングバッファ100

Mat[100]  mat = new Mat[100]

(start で 「i=1」と宣言)

mat[i]=Webカメラから拾ってきたMAT

if(bool 顔あるか && bool AI通ってるか)

 mat[i]をどこかにpngとして画像保存。(ディレクトリ指定必要か)

 

Classを使った方がいいといわれたがどう組み込んだらいいかわからない。

(MATのメモリ指定とbool同じ場所なんだからclassでやったほうがいい?)

 

メンターとのお話

くいっぱぐれないエンジニアスキルは

VR,AR,人工知能

 

VRは本当に簡単らしく、UnityでドロップしたらVR空間ができるんだって。

 

人工知能も意外と簡単らしい。

人工知能のある程度の仕組みは知る必要はあるけど、

複雑な計算式とかは別に知らなくて大丈夫。

できているライブラリを使っていけばおk

 

とにかくでかいものを作るには、でかい部品を使えばいい(ライブラリ)

 

スクレイピングとかAPI系は金になるかもしれないけど、

実際ググる時間が多くて、プログラミングというよりかはリサーチ。

APIの使い方をいかに探るか。

 

プログラミングの真骨頂はそこではないと思う。

というのが今回のアプリを作って分かった。

 

本当にプログラミングをしている時は楽しい。

対人で仕事をするよりも画面と長時間にらめっこをしていた方が楽。

 

本当に仕事を辞めたいので是非俺にはプログラマーの道を進んでほしい。

 

まずは今週末までにアプリを完成させて、、残る点は

Twitter取得できるのは1週間だが、8日前も1日指定なら取得できる?

  →ボタンの設定変更。

 今)1週間以内しか取得できない。

   sinceの最小値を8日前とかに設定して、

   もし8日前を取得するにはuntilとの差が“1”ではなかったらエラーを返すか。

    ※そもそも本当に何日前なら取得できるのか

 

・日付指定をするかしないかのトグルボタンの実装。10分

 

 

それらが終わったらUnity本格入門のゲームを作ってみよう。

TPSのゲームが出来上がる。

あわよくば通信機能も付けたいな。サーバーいじりたい。

 

ってことでがんばろ

 

8/2 承認までの道のり、、

【課題】

・それぞれのアクセス許可の用途を忠実に捉える。

(Instagram_basic、Page_show_list、Page_read_engagement)

・承認までの道のりを明確にする。

 

Instagram_basic

→ログイン時に必須。あとハッシュタグ検索

※申請にPage_read_engagementも必須

 

●Page_read_engagement

  • 貴社のページから投稿されたコンテンツを取得する。
  • 貴社のページフォロワーの名前、PSID、プロフィール写真を取得する。
  • 貴社のページについてのメタデータを取得する

※申請にPage_show_listも必須

 

●Page_show_list

FacebookとInstaのアカウントを紐づけるとか...?

 

Facebook側にログイン画面を突破してもらう

→テスターにもInstagramのアカウントを紐づける必要?