Translate

BTemplates.com

Powered by Blogger.

ラベル git の投稿を表示しています。 すべての投稿を表示
ラベル git の投稿を表示しています。 すべての投稿を表示

2019年11月2日土曜日

2019-10-19 到達点メモ


草をはやしたい

草が生えないのは、コミットしているメールアドレスと
githubのほうのメールアドレスが一致していないと
草が生えない。

手段はいろいろあるが、今回は過去のコミットを全部変更する手段をとった

git filter-branch -f --env-filter "GIT_AUTHOR_NAME='test_name'; GIT_AUTHOR_EMAIL='test@example.com'; GIT_COMMITTER_NAME='test_name'; GIT_COMMITTER_EMAIL='test@example.com';" HEAD

GIT_AUTHOR_NAMEはコード自体の作者名
GIT_COMMITTER_EMAILはコミットした人(複数人で作業すれば、コミットが違うことはあり得る)
という解釈している。
AUTHORとCOMMITTERは、一人で開発しているのであれば
同じと考えてよい。なので、どちらも同じものにしてやるとよい。

ただ、この手法でやると過去のデータまで書き換わるのでこのままでは
pushできない。そこで強制的に書き換えるforce pushが必要

git push --force-with-lease origin master

参考サイト
【草はやしてる?】意外と知らないGitHubで草を生やす条件とは | Findy Engineer Lab - ファインディエンジニアラボ
Git の Commit Author と Commiter を変更する - Qiita
GitのCommitユーザを修正する方法 - Qiita
git push -f をやめて --force-with-lease を使おう - Qiita

2019年9月3日火曜日

2019-09-03 到達点メモ


◆jQuery話

今回、URLから取得したデータに以下のように単語検索をかけていた。
data.match('検索したい文字')
しかし、何故かnullで結果が返ってきていた。

dataの中身を改めてconsole.logで調べたところ、
dataはhtmlデータで、特に問題が無いと思っていたのだが実際は違った。

検索したい文字はブラウザ上だと以下のように表示されていた。

検索したい文字

しかし、HTMLだと以下のようになっている

<b><span style="color: red;">検索</span></b>したい文字

で、今回はHTMLデータを取得していたので、data.match('検索したい文字')
のやり方で出てくるわけがなかった・・・。
なので、もしやるなら、$ (data).text ()のようにしてタグを消す必要がある。


◆Gitもしくは開発方法の話

最近、Chrome拡張を開発しているのだが、ちょっとうーんと思う出来事が起きた。
現状Chrome拡張を開発しながら、作業をする際にそれを使っている。
作成中もしくは修正中にバグると作業が止まってしまう上に
修正中のデータ時に消したくない時があったりする。

developを作るとかstashを使うとか解決できるかと思ったが、
考え直したところ適切な解決策ではないように思える。
というかそもそも作業の進め方を間違っているような気がする。
何を作るかを決めてから作業をするべきで、
場当たり的に進めているのが問題の様な気がする
つまり、
問題が起こる。もしくは作りたいところができる。
→ branchを作る。
→ 作業を進める。
(→ もし、何らかの理由で一時保存したい場合にstashを使って元のブランチに戻す)
→ 統合する

こんな感じが理想なのではないだろうか?

参考サイト
Git - ブランチとマージの基本
Gitのブランチモデルについて - Qiita
Gitのdevelopでの作業について - Qiita
変更を一時的に退避!キメろgit stash - Qiita

ブランチ名を変更したり、そもそもブランチを作ったりするのに
以下のサイトを参考にさせてもらった。
git コマンド branchの作り方 - Qiita
gitのローカルのブランチ名を変更したい - Qiita


もう今日はこれでよい気がするので、ここまで。



2019年1月28日月曜日

2019-01-19、20、24、26、28 到達点メモ


AtCoderで、B-1 21の問題(コンテストが終了した問題)に関するRubyで解いた
ネタバレがあるので嫌な人は見ないようにしてください。


git logをコマンドプロンプトで使っていたら、日本語が文字化けしていた。
正直なところ、恒久的な対処方法が分からなかったので
git bashを使うことにした。
これなら文字化けしない。

参考サイト:Windowsでgit log見た時日本語が<E6><97>~みたいに化けた時の対処方法
参考サイト:git log、git diff、git showでの日本語の文字化けをまとめて対策

というか、コミットはVisualStudioCodeを使えば割とどうでもなることが良く分かった。
ついで話をもう一つするとshift-jsで開くと文字化けするので、utf8で保存しよう。

正規表現について

以下のような文字列があったとする

Word Adobe PhotoShop (フォトショップ)

これを以下のようにしたい
Word,Adobe PhotoShop (フォトショップ)

その場合は以下のようにすればよい(EmEditorの場合)

検索(分かりにくいが、一番最初の方に半角スペースが入っている)
『 ([^(|^P])』

置換
『,\1』

()でくくったところは置換時に変更しないという意味で
^は否定の意味
[]は[]の中の任意の文字。複数の文字とかを使いたい時に使う?

参考サイト:正規表現
参考サイト:正規表現:文字列を「含まない」否定の表現まとめ
参考サイト:文字列の一部だけを変更したい
参考サイト:特定の文字列を含まないという正規表現


ruby(AtCoderで、B-1 21の問題(コンテストが終了した問題)に関するネタバレ注意)

AtCoderで、B-1 21の問題(コンテストが終了した問題)を解いた際にコードのバイト数が少ない回答を見たのだがその回答に感動しました。
平方数はそうやってもとめるのかと

puts number==(number**0.5).to_i**2 ? :Yes : :No

他の言語はわかりませんが、rubyだと小数の階乗ができるので
そこをInt型に変えて小数を落として、更に二乗すれば
元々平方数が出せる値なら一致するので
大体どの値でも出せて便利だなと思いました。

200.to_s.split("")の処理よりは、200.to_s.charsの処理の方が軽い

あと、よくあるa>bのときは、aが大きい、a=bの時は等しい、a<bの時はbが大きい
とやりたい場合は、以下のような方法もある

judgment = ["等しい","aが大きい","bが大きい"]
puts judgment[a<=>b]

見やすいかどうかはともかくとして、圧縮したい場合は便利。

x |= yを見つけたのでなんじゃこりゃ?
と思って調べてみたらどうやらビット単位のOR代入の省略形らしい。
x=x|y
で、何に使うかというと配列で一意の合成をやりたい場合に便利なんだそうだ。

例えば、以下のようなコードを書いたとする
x = [1,2,3,4,9]
y = [3,4,5]
x |= y
puts x.to_s
x2 = ["aa","bb","abb"]
y2 = ["a","bb","ccc"]
x2 |= y2
puts x2.to_s

結果は以下のようになる
[1, 2, 3, 4, 9, 5]
["aa", "bb", "abb", "a", "ccc"]

uniqの処理って重そうだったし
一々合成するならこれの方が処理が速そう?
きちんと計っていないので何とも言えないが。

参考サイト:Ruby |= assignment operator

2019年1月17日木曜日

2019-01-04、07、08 、17 到達点メモ


あけおめ。ことよろ(激遅)

Kotlinの話
やってないと、基本的な操作を度忘れする
.toInt()で型変換ができる

参考サイト:kotlinの型と変換

ミリ秒の計算をしたいときはCalendarクラスを使わずに
dateクラスで計算したほうがいいらしい。
Calendarクラスの生成はコストがかかるとの事
なお、引き算をしたい場合はtime型に直す必要がある

参考サイト:DateのgetTime(公式ドキュメント)
参考サイト:時分秒の加算/減算にCalendarクラスを使うのはもったいない?


・・・というかちょっと待て。
別にdate型に直す必要すらないような・・・。
System.currentTimeMillis()でミリ秒を取得しているから
これを毎回使いまわせばよいのでは???

うん。必要なかった。
メモとして残しておくが
System.currentTimeMillis()はlong型

xxdpi=420dpi

文字の調整をしているのだがマジ面倒くさい!!!
正直、今度作る時があれば、中央から配置を決めていって
相対的に調整したほうがいいかも
後何でもかんでも共通化するのは考え物。
あとで個別に調整入れたときに、新たに作る必要があって面倒くさい!!!

あと、今微妙に困っているのだが、エミュレーターで動かしたら
割と結構文字が小さく見えたので大きくしたところ
Preferenceの文字だけ大きくならなかった。
何でだろうと思ったら、そこだけライブラリで管理していた。
……文字を大きくする方法を調べないと
何でもかんでもライブラリを採用するのは考え物。

めも
AlarmManagerを使う場合の注意点
Androidでアラームアプリを作る
[Android] AlarmManagerをBroadcastRecieverと使う
ALARMMANAGERで指定した時間に処理させる
AlarmManager(公式ドキュメント)

Youtubeの表示はJavaScriptによる表示のようである。
なので一度全部表示してからじゃないと正しく値が取れない。

今、node.jsを使ってクロージングができないかを調べてみる
で、今のところnpmのcrawlerSpookyJSの候補が二つ上がっている
crawlerで試しにyahooの検索ページから情報を取得してみようと思ったが
検索結果が取得できなかった。
おそらく検索結果はJavaScriptの結果を表示している為
データが取れていないと今はそう仮説を立てている。
*知識不足過ぎて何が正しくて間違っているのかよくわからない状態

参考サイト:SpookyJS(GitHub)

ひとまず、SpookyJSの更新日時が4年前くらいにとまっているのが凄く気になるが
どうやらJavaScriptの結果自体を取れるらしい(未検証)

コマンドメモ
npm i phantomjs casperjs spooky

参考サイト:SpookyJSでJavaScript有効状態のページをスクレイピング

というかnpm auditでやるとmoderateが10、highが1それぞれ出てくる(白目)

おかしい・・・。なんで俺は修正作業をしてるんだ・・・?

package.jsonをnpm-check-updatesで一括でやろうと思ったが
なんか指定のバージョンまで上がらないし
これもしかすると手作業で直して
対象のフォルダでnpm updateかけた方がが早い気がする・・・

参考サイト:脆弱性の警告を受けたnpmパッケージの依存関係を力技で直す
参考サイト:npm installしたパッケージの更新確認とアップデート(npm-check-updates)

エラーを出さなくする方法
1.npm auditに従ってそこのフォルダに移動してpackage.jsonのバージョンを修正をする
2.node_modelusに入ったデータを上の方でコピペする
3.package-lock.jsonを消し、npm i --package-lock-onlyで新しく生成する
npm auditを使ってエラーが減ったかを確認する

なお、まともに動くかどうかは知らん!!!

というか大本のPhantomJSの開発が終了しているらしい
参考サイト:PhantomJSの開発が終了しリポジトリがアーカイブ化された

代替としてHeadless ChromeがあるらしいがなんかもうUWSCを引っ張りなおした方がいい気がしてきた・・・。

javascript

取得系は、puppeteerがなんだかんだでようやくできた。

参考サイト:Puppeteerを使ったスクレイピング
参考サイト:Chrome操作ライブラリ chromy と puppeteer を比較
参考サイト:puppeteerでスクレイピング

凄く苦しんだところとして、タグのリンクを取る方法が分からなかった

例えば、h3タグのリンクアドレスを取りたい場合は以下のようにした。
 var h3Document =node.querySelector ('h3 a[href]');
h3Document.getAttribute ('href');
これでアドレスを取ることができる。

また、ちゃんとページ遷移を待ちたい場合は以下のように書けばよい
await page.goto (linkAdders, {waitUntil: 'domcontentloaded'});

単純にWaitをかけたい場合は以下のようにすればよい
await page.waitFor (1500);

参考サイト:puppeteerでよく使うであろう処理の書き方

awitとか使っている場合は
forEachより、for..inとかfor..ofの方がよい
forEachは関数内に処理を書くので
非同期系の処理だとエラーになる

参考サイト:for..in  by Mozilla Contributors is licensed under CC-BY-SA 2.5.
参考サイト:for...of   by Mozilla Contributors is licensed under CC-BY-SA 2.5.

関数内で関数を呼び出す方法が分からん。

あ、そういえば、Sourcetreeを立ち上げていると何度もログインを求めてくる現象について調べないとあかん。


GithubでPrivateレポジトリが使えるようになったと聞いたので
実際に使ってみた。
今のところは特に変わらない感じ。
ウミガメのスープの問題をどうやって管理しようかと悩んでいたところだったので
とてもちょうどよい。
GitGUIとか使ってみたのだが
正直、コマンド打った方が早いし確実
文字化けの対策については、.gitフォルダがある場所でマウスを右クリックをして
Git Bushを出させる。
それをクリックして起動した後に、以下のコマンドを入力する
git config --global gui.encoding utf-8

GitGUIを立ち上げなおすと文字化けが治るはず

参考サイト:Git for Windows の Git GUIで文字化けする場合
参考サイト:Git for Windows で日本語を使いたい

なお、Wordファイルだとどれくらい変化したかが分からないので
基本的にMarkDownでやることにあった。

今のところは、エディタに関してはVisual Studio Codeという凄く便利なエディターがあるので基本をそれを使っている。
というか割と真面目にEmEditorと要らんかもしれん・・・。

メモとして参考になりそうなのを張っておく
脱GitHub初心者を目指す人のREADMEマークダウン使いこなし術
Markdown記法一覧




2018年10月12日金曜日

2018-09-06、21 到達点メモ


JavaScript

ループ処理でconsole.logが表示されない問題

下記のサイトのように対処してコンソール表示設定が問題ないのに
表示がされない場合の話
参考サイト:【2017お盆明け】Chromeのコンソールログが表示されない時の対処法

対処方法を先に述べますとdo whileとかではなくて
setIntervalを使うと表示されます

参考サイト:chromeのConsoleで処理を停止するほうほう

どうやらChrome DevToolsでは
console.logはファイルを全部読み込まないと表示されないようで
whileなどでループ処理が終わっていない場合、console.logでは表示されないです。

ただ、読み込んだ後ならwhile中でも表示は出来るので例えば最初に空のファイルを作り一度表示させた後にファイルの中身を更新するとconsole.logの中身が表示されます。

無論、新しくファイルを開きなおすと、console.logが表示されなくなるので
もし、前は表示されたのに今日開きなおしたら表示されない!!
ということがあったら、それが原因です。

hashについて

hashに存在しないキーを与えるとundefinedという値が返ってくる
これは、true/falseだとfalseに相当する
なので、存在しないキーを弾くという事をしたい場合は以下のようにすればよい

if (!hash[key]) {
    console.log ('不正な値です。');
  }

参考サイト:JavaScriptでfalseになるもの

良く忘れるのでメモ

gitのremoteのURLの設定を間違えたので直したい
git remote set-url origin fix_url

*別にhttpsでも問題は無い。
参考サイト:gitのremote urlを変更する(レポジトリ移行時)
参考サイト:gitでpushしようとしたら403された話
参考サイト:GitHubにPushしようとしたらCould not read from remote repository と怒られた

httpsで指定するときは以下のように指定する
*Bitbucketの場合
https://<repo_owner>@bitbucket.org/<accountname>/<reponame>.git

repo_ownerは、アップロードする人のユーザー名。大抵はアカウント名=アップロードする人のユーザー名のはず
accountnameは、bitbucketのアカウント名
reponameは、レポジトリの名前

参考サイト:SSHキー(Bitbuketの公式ドキュメントより)

正規表現

数字のみを使いたい
\d

数字以外
^\d もしくは \D

参考サイト:正規表現の基本

公開日と日付は気にしない事

2018年9月1日土曜日

2018-08-19、24、29、30、31、09-01 到達点メモ


VRChatでテストアップロードした際に、
何故かテストアップロードしたWorldにログインできない場合

VRCWorldの設定でSpawns→Element 0の設定がNone(Transform)になっていないかを確認すること。
下の画像は修正後のものです



デフォルト設定を変えて間違って設定したオブジェクトを消した場合に起こります。
対策は、普通に設定しなおせば治ります。

万華鏡を以下の通りな感じにして作りました。
https://twitter.com/nononaga_fhoto/status/1031176640661925888

個人的な所感を述べますと
・カメラ三つ並べてやるのは暗くなるので難しい
・水面の反射がミラーの代わりでできないか試してみたがあんまり意味が無い
・Unityでの反射の設定は正直めんどくさい。
・反射そのものが画像を荒くするというかぼやける。

最終的な結論としては、
ミラーの代わり用のカメラは、映る範囲とカメラの向きや位置をうまく調整して
カメラで写している内容の代用ミラーを増やすという形にした方が簡単だし、
それなりにきれいに映ります。
なお、カメラは増やさなくて大丈夫です。


aviutlで動画出力のやり方

ファイル→プラグイン出力→拡張x264出力→ビデオ圧縮の順にクリック
そのあとビデオ圧縮で表示された画面を閉じて名前を付けて保存すれば
出力できるはず。

ツイッターの動画はmp4じゃないと受け付けない


npmコマンド

npm install -Dは、npm install --save-dev と同じ意味
なお、npm install -dもあるが、こちらは npm install --loglevel  info の意味になる

参考サイト:npm install -d と -D

npm install -Dの意味は、依存関係のパッケージをインストールしたくない時に使うらしい?開発時に利用する時に使うらしい

参考サイト:npmの--save, --save-dev, --save-optionalの違い
参考サイト:npm installの–saveと–save-devの違いと-g

--loglevel  info調べてみたが、これというのが見つからなかった。
少なくともnpm install -hで調べた限りでは
install独自のオプションではないようなので
何処でも使えるものと考えてよいかもしれない
logを出力する的な意味として受け取ったほうがいいのだろうか?

GUI画面でファイル名をクリックしてファイル変更から.eslintignoreを作成しようとしたがファイル名を入力してくださいと表示されて作成できなかった
対処方法としては、テキストファイルを開くソフトウェアで開き
ファイルの種類を全てのファイルに変更して名前を付けて保存で、
保存することができる。
EmEditerとメモ帳で確認できた


eslint --fix app.js
というコマンドを打って以下のようなエラーが出た場合
Cannot find module 'eslint-plugin-prettier'
eslint-plugin-prettierが入っていて上記のエラーがある場合は
.eslintrc.jsonのファイルがある確認するのを確認したほうが良い。
今回に限っていえばインストールしても上記のエラーが出ていて
上記の設定ファイルを入れたところ表示されなくなった。

その他メモ
SAKURAエディタは、拡張子なしで保存可能
EmEditerは拡張子なしでの保存は不可
GUIでは、拡張子なしでの保存は不可

sshで複数のユーザーを使い分ける

基本的な手順としては

1.公開キーの確認

gitbashを立ち上げる
cd ~/.ssh
ls
で公開キーがあるかを確認する
.pubがあるかとか


2.鍵を作成する
ssh-keygen -t rsa -f [file name] -C 'used_e_mail'
ここでのfile nameが
例えばhogehogeとしたら
hogehoge.pub hogehogeができたりする
名前は[運用するサイト名]_[ユーザー名]_rsa当たりが
分かりやすくて無難だと思う


3.公開カギの内容をコピー
clip < ~/.ssh/[file name].pub


4.公開鍵をGitHubに登録する

GithubのSSH Keysに登録する

手順的には右上のアイコンをクリックし
Settings → SSH and GPG keysの順にクリックするとたどり着ける


5.sshのコンフィグの設定をする

vim ~/.ssh/config

以下の内容を付け加えてください

Host hogehoge.github.com
  User git
  Port 22
  HostName github.com
  IdentityFile ~/.ssh/hogehoge_rsa
  TCPKeepAlive yes
  IdentitiesOnly yes


6.接続テストをする

ssh -T hogehoge.github.com

この際に以下のような文が出れば成功です
Hi hogehoge! You've successfully authenticated, but GitHub does not provide shell access.


参考サイト:GitHubのアカウントを複数SSH接続する
参考サイト:git SSH 複数 鍵で 運用


7.ユーザー別けしたいプロジェクトのgitのコンフィグの設定をする

*事前にgit initをしてある前提です。

cd [ユーザー別けしたいプロジェクトのrootディレクトリ]
git remote add origin git@github.com/username/hogehoge.git
git config user.name [使用したいユーザー名]
git config user.email [使用したいメールアドレス]

また、.git/configがあるのでそこで修正しても適応させることができます。

参考サイト:1台のPCで複数のGitHubアカウントを使う(SSHとhttps)


Ex.コミットだと正しいユーザー名なのに、プッシュでのアイコンが別のユーザーになってしまっている場合

結論から言うと.git/configに登録してあるメールアドレスが間違っています。
どうやらcommitはuser.nameで登録するようなのですが
pushだとuser.emailを基準に見るようです。
その為、commit logで調べた場合、正しいユーザー名で登録されますが
pushだとemailを基準とするため違うユーザー名が表示されます。
なんかおかしいなと思ったらEmailがあっているかどうかを確かめましょう。

gitで間違ったファイルを登録してしまった場合のやり方

git rm --cached ファイル名
--cachedをつけないとファイルそのものを消してしまうので
注意すること

上げたくないファイルを指定する場合
.gitignoreを作成するとよい。
何故か機能しないと思ったら
大抵スペルをよく間違えているので注意すること
例:.gitginore等

参考サイト:[Git] .gitignoreの仕様詳解

現在のaddした状況を見たい場合は
git status
をすればよい

参考サイト:git statusで変更されたファイルを確認する方法【初心者向け】



javascript

find…特定条件を満たす最初の値を返す
filter…特定条件を満たす全ての値を返す
上記二つは条件を満たした値を
変更したりすることは出来ないようである
飽くまで要素を見つけることのみ
forEach…配列の要素を受け取って何かしたい場合に使えるようである
map…要素がキーと値の二つセットになっている配列。個人的な印象を言えば
Rubyのハッシュが近い印象を受ける

JavaScriptで1から100までの配列のループを作る

for (const value of Array.from ({length: 100}, (v, k) => k + 1)) {
  console.log (value);
}

参考サイト: Array.from() の 例  by Mozilla Contributors is licensed under CC-BY-SA 2.5.

[for (i of Array(100).keys()) i]もあるらしいのだが
ちょっと自分にはうまく使えなかった

参考サイト:指定した範囲の整数配列の作り方 in JavaScript ES6

文字列を全部置換する方法

"a_v_ss_s_w".replace(/_/g, "-")
とやればよい

"a_v_ss_s_w".replace("_", "-")
だと、一つしか変わらない

参考サイト:【JavaScript】検索文字列を全置換する方法【replaceAll】


連想配列によるループの方法

let hash = {
  key0: 'aaa0',
  key1: 'aaa1',
  key2: 'aaa2',
};

for (let key in hash) {
  console.log ('key:' + key + ' value:' + hash[key]);
}

でいける。
なお、連想配列はイテレーターではないようで
この際にfor (let key of hash) とするとエラーになる

上記の書き方は間違えではないが
参考サイトのコメントの方により良い書き方があった。
こっちのほうが最新である事や
わかりやすいのでこっちのほうがよいだろう

let hash = {
  key0: 'aaa0',
  key1: 'aaa1',
  key2: 'aaa2',
};

for (let [key, value] of Object.entries (hash)) {
  console.log ('key:' + key + ' value:' + value);
}



2017年9月4日月曜日

2017-09-03 到達点メモ



remoteurlを調べたい場合は
git remote -vをする
割とよく忘れるので注意

参考サイト


git addすることをインデックスに登録するという
git add . しても予め含まれないようにするには
.gitignoreに設定を書けばよい。

既に過去にコミットしたファイルを含めないようにするには
以下のようにコマンドを打てばよい
git rm --cached ファイル名

なお --cached を付けないと
ファイルごと削除されるらしい。
なんかこのコマンドを試したとき
いつの間にかこれを指定したファイルが消えていたが
抜けたたんだろうか?もしくは操作ミス?
もしかするとコミット後にやったコマンドだから
コミットから削除するために消えたのかも。

git add . した後にきちんとインデックスに登録した内容が
除外されているか確認するには
git status とコマンドを打てばよい

自分はよくシェルコマンドを使って入力するので
do*.shって.gitigoneに書いておくと
良く使うコマンドを別けて書きたい時
に自動的にインデックスに含まれないようになるので便利

参考サイト


チュートリアルにherokuのコマンドでログを表示するコマンドを調べなさい
という演習があったので(正解はおそらくlogs)
調べてみたらdrainsというコマンドがあったので
ちょっと調べてみる。
どうも外部のサーバーにログを転送する機能らしい。
メイン処理はherokuにやらせるけど、監視だけは別のサーバーでやりたい時とかに
つかうんだろうか?

参考サイト


新しくアプリケーションを作るところから始めるのはちょっと面倒だったので
一からつくりなおして、今まで使っているgitのurlにpushしたら
コンフリクトを起こした。
本来ならきちんと調べたほうがいいんだろうが、そこは主題じゃないので
コンフリクトを起こしたフォルダを全部消し、git cloneでデータを持ってきなおした。
複数のpush先を持っている場合、データ内容が同じでも
remoteのurlは保持していないので、それぞれからremoteのurlを持ってくる必要がある
なお、クローンした場合は、クローンした先のremoteのurlは登録される
herokuに関しては以下のようにとってきた
heroku git:remote --app heroku_app_name
なお、remote_urlは特にインデックスに加えたり、コミットする必要はない

参考サイト

postgresの設定で躓いた。
調べてみたらMySQLでもクレジットカード登録すれば
5MBまでは無料で作れるらしい。

Railsに疲れたので後は別なことをやった。
というか本来の目的は、仕様書を比較的に楽に管理するためのツールづくりだから
あんましRailsそのものをやりたいわけじゃないんだよなぁ。
具体的にはVoiceTimerのGooglePlay用のスクリーンショットの作成をやった。
割と何書けばいいか迷ったが、いつの間にかアプリの一覧表示でも
スクリーンショットが表示されるようになったので結構馬鹿にできないと思う。

あと、今のアイコンって時計というのはわかるんだけど
声との関連性がわかりにくいのでそこをどうしようか考え中
最初は、Inkscape(SVG作成ソフト)のテキストで
VoiceTimerって入れるつもりだったのですが
AndroidStudioでSVG取り込む際に、
エラーになってテキストの部分が取り込めず
どうにもならなかった。

しょうがないので以下のように文字を使わない方向で試行錯誤した結果がこれです。

拡大してみる分にはあまり気にはならないのだけど
縮小すると何の画像かわかりにくくなるので
まだ調整がいりそう。

あと、ちょっとapkファイルを小さくできないかと思って調べてみたのですが
軽く調べた感じだと、zipalign、ProGuard、shrinkResources、IconFont
あたりでしょうか。
zipalignは使ってみたのですが、容量に差はありませんでした。
また、ProGuardは既に書かれていました。
shrinkResourcesは使ってみたらエラーが出まして
ザっとしか調べていないのですが、stackoverflowerの回答によると
gradleのバージョンを2.1.3に下げると動くらしい?
そして、今回のアプリに限って言えば、画像は全部ベクター画像なので
IconFontを使う必要がありませんでした。

とりあえず、今日はこんな感じでした。



参考サイト
年末の大掃除、アプリの容量を削減するためのチェックリスト
\build\intermediates\res\resources-anzhi-debug-stripped.ap_' specified for property 'resourceFile' does not exist

2017年9月2日土曜日

Railsチュートリアル(第四版)に基づいたRails5.0.3+Cloud9でのHerokuへの接続方法


*2017/9/3追記
飽くまで、herokuにデプロイするのが目的です。
その為、databese.ymlの設定は
SQLite3のままになっております。
静的表示をするぐらいなら問題ありませんが、
この状態のままではサーバーを使った動作を行うことは出来ませんので
適切にコードを書き換えてください

Ruby on Rails チュートリアル(第四版)の1.5.2 Herokuにデプロイする (1)
ができなくて、色々試してネットの情報を色々見ました。
見た感想としては私と同じようにHerokuにデプロイできなかった人は
多かったように見えました。

色々試してみたところ、rails new で作ったフォルダの中で
git init や heroku createなどをしてgit push heroku masterをすれば
herokuにプッシュできることを確認しました。

これが本来の手順として正しいのかはわかりませんが
探したときにあまりもこれといった解決方法が見つからなかったので
のせておきます。


以下が作業手順となります

gem install rails -v 5.0.3
rails new hello_app
cd hello_app

gemfileの内容をリンク先のリスト1.4.4の内容に書き換え

application_controller.rbに以下のメソッドを追加
  def hello
    render html: "hello"
  end

config/routes.rbに以下の内容を追加

root "application#hello"

bundle install
この際に以下のようなエラーが出るかもしれませんが
私は面倒だったので、Gemfile.lockを消して解決しました。
Bundler could not find compatible versions for gem "activesupport":

gitの処理をする前に、

rails server -b $IP -p $PORT

を入力してきちんと起動するか確かめてください。
此処でエラーが出ると、この後pushしてもリジェクトされます。


あとは以下のコマンドを入力して
適切な処理をしてください。
なお、:~/workspace/hello_app の場所で
コマンドを入力するようにしてください

git init
git add .
git commit -m "init"
heroku login
heroku keys:add
heroku create
git push heroku master

これで恐らく通るはずです。
上手くいけば、以下のようなメッセージが出るはずです
remote: -----> Launching...
remote:        Released v5
remote:        https://□□□-△△△-××××.herokuapp.com/ deployed to Heroku
remote: 
remote: Verifying deploy... done.
To https://git.heroku.com/□□□-△△△-××××.git
 * [new branch]      master -> master

では、早速開いてみてください。
具体的にはReleased v5の下にあるURLです

ページを開いた際に画面に
Method Not Allowed
と表示される人はおそらく開いているURLが間違っています
間違っているURLはおそらく最後に.gitが付いているはずです。

正しいURLを開けば
hello
と表示されるはずです。

以上となります。
構築お疲れさまでした。

参考サイト
Ruby on Rails チュートリアル(第四版)
[Railsチュートリアル第1章] Herokuにデプロイ出来ない(一番下の回答)
HerokuにデプロイするとMethod Not Allowedが出力される


2017-09-02 到達点メモ


相変わらず、Evernoteの初回起動が重い。
ソフトウェアの方を試してみるべきか?

Railsチュートリアルをやっていてcloud9→bitbuketの接続に関するメモ
cloud9のユーザー画面に移動して、歯車アイコンをクリック。
SSH Keysという項目をクリックしてその中身をコピーする
bitbuketの人物アイコンのBitbuket Labsをクリック。
セキュリティの項目にSSH鍵があるので、そこで先程コピーした内容を
貼り付ける。

あと、remoteのアドレスが、httpのままだったので
それをgit remote set-url origin ssh_urlで変更する

参考サイト
オンラインIDE Cloud9を使ってみる その3
GitHubとBitbucketへの公開鍵の登録方法+SSHで複数鍵の使い分け
gitのリモートリポジトリoriginのURLを変更する

後で纏めてメモするよりは、少しづつやったほうが
無駄に開いているchromeのタブも消せて便利かもしれない。

Railsチュートリアルをやっていて初めてbranchの意味を理解できたかもしれない。
元々、git自体無計画に実装することを想定していなくて、
前もってこれを作ると決めてから、branchを作成してそこの中だけでうまくいくかどうかを調べる。で、問題が無ければ、masterにマージしてやればよい。
これなら、やってみて無理だと思ったらbranchを削除すればいいし、
branchを使っていて更にバグが発生するようになってもmasterには影響を与えない。
便利だこれ。前にAndroidで開発していて、前に戻りたい時とかバグが頻発しそうな微妙な実装をする際にこれをやればリスクが低くなりそう。

rails g が動かない時は spring stop をコマンド入力すること
参考サイトだと、bin/spring(多分アプリケーションの中のフォルダ内でコマンドを撃たないと意味が無い)を入力していたけど、みた感じだと中身を表示しているだけっぽい?

参考サイト
【Ruby On Rails】 「rails generate」が動かない

cloud9+Railsでherokuにpush出来ない問題。
workspaceの中にあるアプリ名のフォルダに
git init、git add,git commit,heroku create
とかしたうえで、git commit、git push heroku masterをやったら動いた
いろいろ重ねたうえでの行いなのでこれは流石にきちんと検証しないとまずい。
多分だが、DBの有無やbuildpack系のコマンドはこの件に限って言えば関係なさそう。


参考サイト
[Railsチュートリアル第1章] Herokuにデプロイ出来ない(一番下の回答)


あと、ページを開いたらMethod Not Allowedと表示されているときは
URLが.gitになっていないか確認をする。
要するに開いているページが間違っている

参考サイト
HerokuにデプロイするとMethod Not Allowedが出力される

検証中に、また変なエラーが出た
具体的にはrails gをしたら、
method_missing': undefined method `load_defaults' というエラー。
面倒だから、バージョン指定して作りなおしたけど
軽く調べた感じだと、自動生成の時点で発生しそう。

参考サイト
rails gしたら`method_missing': undefined method `load_defaults' ってエラー出た

検証したら、かなり凡ミスが多くててこずった。
rootをroutesと打ち間違えたり、
#と/を打ち間違えたりしてた。
というか、チュートリアル自体を進めたかったんだけど
結局一日がつぶれてしまった……。