Translate

BTemplates.com

Powered by Blogger.

2018年6月29日金曜日

2018-06-28、29 到達点メモ


Gitにコミットしたら、ユーザー名が実名だったので
よく使っているハンドルネームに変えたい場合の手法
*コミットしたデータを変えるわけではないことに注意

以下の内容をシェルスクリプトではなく
きちんと入力する必要がある

git config --global user.name "yourname"
git config --global user.email yourname@yourname.yourname

参考サイト
Gitでユーザを確認・変更する手順

コミットしたすぐのものを見たい
git diff HEAD^

参考サイト
忘れやすい人のための git diff チートシート

rails db:migrateでDBファイルを作るとのことだが
rake db:migrateじゃなかったけ?
と思ったら、案の定Rails5以降はrails db:migrateになったとのこと
微妙にrakeって何なんだろうなと思っていたが、
どうやらUnixのmakeのruby版から来ているらしい
ナルホドナー

参考サイト
コラム 2.1. Rake

UserIDを設定する際に
Users must exist
というエラー文が出るので何が原因なんだろうと調べていたら
単にbelongs_to :users
と複数形にしていただけだった。
正しくは、belongs_to :userである

リスト 2.17: Userモデルに存在性のバリデーションを追加する
に挑戦したら以下のようなエラーが出た

undefined local variable or method `email' for User

当時の回答
user.rb
class User < ApplicationRecord
    has_many :microposts
    validates name, presence: true
    validates email, presence: true
end

emailは定義されているし
validates email, presence: trueを消すと
通るし、validates name, presence: trueを消すと逆に通らないけど
何でなんだろうなと調べたところ

user.rb
class User < ApplicationRecord
    has_many :microposts
    validates :name, presence: true
    validates :email, presence: true
end

この部分が無かったのが原因でした。
これがないと変数あつかいになるとのこと
言われてみれば確かにそうでしたね……

しかし、nameが通った理由はいまいちわからない……
参考サイト
Railsチュートリアル exerciseに関して

しかし、我ながらまずいなこれは……。

第二章終了。

……なんか普通にHerokuで動いたんですがそれは
いや、いい事なんですが前回は何で動かなかったんだろうか?
考えられる理由は二つ
本命:heroku run rails db:migrate を使わなかったため。
理由は、これをやる前usersのページにアクセスしたら
エラーになったため。
対抗:bundle install --without production を使わなかったため
理由は、このコマンドが本番に関係するコマンドの為
 --without production を省いてコマンド打った可能性がある為

以前の記事を見る限りだと、どっちもやっていないように見える。
追記と書き直しが必要そうですね……

次回は第三章から

Udemyでnode.jsの勉強しているのだが
Syncって日本語に訳すと同期という意味になる
非同期処理とかでSyncがやたらでてくるのはそれか……。

以下はkotlinでの話

classの取得する方法を良く忘れるので再度メモ
HogehogeActivity::class.java

参考サイト
KotlinでIntentを用いた画面遷移


class HogehogePreferenceActivity : PreferenceActivity {
//(以下略)

上記のように書くとPreferenceActivityの部分で下記のようなエラー文が出ます

This type has a constructor and this must be initialized here

対処方法を簡単に述べると以下のようにします
class HogehogePreferenceActivity : PreferenceActivity() {
//(以下略)

参考サイト
This type has a constructor and must be initialized here - Kotlin

プリファレンスの書き方を忘れたので
以下のサイトを参考にして書いた

参考サイト

今日はここまで

プログラミングをする上でよく出て来そうな英単語日本語訳


*良さげなものを見つけたら随時更新する
単語のチョイスは比較的ruby寄り

sync     …… 同期
require   ……   要求する
include   ……   含める
store      ……   格納
function  ……   関数、機能
resolve   ……   解決する
call back ……   呼び返す、呼び戻す、折り返し電話
each      ……   各、それぞれ
done      ……   完了

2018年6月28日木曜日

Skype面談でメッセージ送信できなかった時に確かめたこと


結論
Skype面談をする際には、ブラウザ版も立ち上げておくと
事故る確率が減りそう。
それでも不安な人は、他の連絡(例:スマホなど)も使えるようにしておくと

いざ事故った時に対処が楽になります。

1.再度メッセージを送った→意味をなさず

2.アプリ(恐らくWindowsストアにあるSkype)を×ボタンで一度終了し、再度立ち上げる→同じく意味をなさず
3.Windowsを再起動→同じく意味をなさず
4.調べてみたところ、どうもブラウザ版のSkypeで動くのか確かめたのかという言葉があったので起動してみて、メッセージを送信する→届いた!
*調べたところ相手側がオフラインだと届かないらしいが、送信した時はオフラインだった気がする
*あと、自分がつかっているパソコンのSkypeは何故か連絡帳の登録が表示されない。ブラウザ版だと表示されていたのでそれを登録してようやくオンラインの状態が分かるようになった。

2018年6月27日水曜日

2018-06-27 到達点メモ


久しぶりにRailsTutorialをやる
いつの間にかRails5.1が出ていて
あまりの浦島太郎状態でワガハイ恐怖に震える

早速最初からやっていたらサーバーの立ち上げ方法が
分からなくて行き成り躓く

色々手法はあるみたいだが、Cloud9の右上のShareをクリック→Applicationをクリック→Openが一番手軽だったのでその手法を採用
参考サイト:cloud9 サーバーが起動しない(Rails チュートリアル)

なお、コマンドは rails s -b $IP -p $PORT と打たないとアクセスできません
$IPとか$PORTって何だろうと思って調べたら
サイトから以下の内容を抜粋
『Cloud9 では特殊な環境変数「$IP」と「$PORT」を使ってIPアドレスとポート番号を動的に割り当てます。コマンドラインでecho $IPまたはecho $PORTと入力すると値を確認できます』

つまり、$IPとか$PORTはCloud9の独自仕様なのでそれに基づいて設定する必要がある。

今度はなぜかroutesが更新されないので
何でかなーと思っていたら
cd で一度workspaceの外に移動し、そこでeveromentフォルダを作成しました。
そして、everomentフォルダの中でhello_appを作ったため
cloud9の左側に表示されているworkspaceタブに表示されている内容と違かった。
その上で、サーバーを立ち上げるコマンドはeveromentフォルダの中で
hello_appでおこなった事が原因です。

cloud9の良い所は ls -lとコマンドを打つと
ファイルの一覧が表示され、ファイルをクリックするとOpenという項目が表示される事

おかしいなぁ、前やった時はこんなに手間取らなかったはずなんだけど……
他にもやることがあるので今日はここまで

追記
1.3 最初のアプリケーションにて抜粋
【1.2.1で推奨しているCloud9 IDEを利用しない場合は、Railsプロジェクトで使うためのenvironmentディレクトリを作成しておいてください (リスト 1.2)。】

つまり、everomentフォルダを作成する必要なんてどこにもなかったという訳でした。

2018-06-02、19 到達点メモ


なんかいつの間にかまたエミュレータがすごく重くなってる…。
とりあえず、AndroidStudio更新しておこう

Genymotionを試してみたがピンポイントで
Android8.0だけ動かないんですけど・・・
7.0と7.1は動くのに・・・。
此処のサイトの一番下の方に、どうも8.0だけ動かないっぽいなことが書かれてる。
一応、メールを投げてみたがどうなるんだろうか?

参考サイト
Genymotionのインストール方法と使い方・設定方法まとめ。
GenymotionでUnable to start the virtual deviceと出て端末を起動できない場合の対処法

そして、手持ちのスマホだと8.0にできないっぽい


AVD(Android Emulator on Windows)がとても遅い件について

AVGにも仮想化の設定があったのでこれをオフにすると
まだ重いが一先ず動くようにはなった。
再起動するとよいらしい

Admobの広告の修正をしようと思って初期設定を忘れたので
探したらFireBaseとごっちゃになって混乱した

Admobの広告の設定方法はこちら
Android Studio スタートガイド



結局、振動とかの処理は実機じゃないと確認できないので
中古を買いました

通知の設定は以下のようにした
val mId = mConstRParams.notificationID

val mBuilder = Notification.Builder(applicationContext)
       .setSmallIcon(com.aaa.nononaga.voicetimerr.R.drawable.ic_notification_clock)
        .setVisibility(Notification.VISIBILITY_PUBLIC)
        .setAutoCancel(true)

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
    var channel: NotificationChannel =  NotificationChannel("channel_1",
                        getString(R.string.app_name),
                        NotificationManager.IMPORTANCE_LOW)
// ロック画面で通知を表示するかどうか
    channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
    mNotificationManager.createNotificationChannel(channel)

}
//中略
//これを宣言しないと現在の値に更新できない
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
    mBuilder.setChannelId("channel_1")
}

他で通知を作成する処理を入れる場合は以下の処理を入れる
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
       l_notification.setChannelId("channel_1")
}

チャンネルIDが一致すれば、通知内容を更新することができる

パッケージ名からアイコンを取得する場合は以下のサイトの内容をやる
パッケージ名からIconを取得


Fragmentでアイコンを渡したい場合は、パッケージ名を送って
Fragmentの方でパッケージを基にアイコンを取得したほうが良い
画像を送る方法はない様である

画像をセットする際にnullといわれる場合は
取得したデータがnullなのではなく
反映させる先がそもそも存在しない場合もあるので
オブジェクトがnullのとき取得しないという設定になっている場合は
xmlファイルを見て存在するIDか確認する必要がある




2018年6月1日金曜日

AndroidでほかのVector画像は読み込めるのに特定のVector画像だけ読み込んだら落ちる場合は、消し忘れのステルスデータが無いかを確認しないといけない


対処方法を先に書きますと

・Inkscapeで新たな画像を作成する場合は、基本は新規画像で作成すること
・諸事情で元々あるファイルを基に作成する場合は、画像に表示されていない使わないデータがないか、AndroidStudioで取り込んだxmlファイルと見比べて確認すること
・実際の対処方法の一つとしては、必要なファイルを選択してそれをコピーする。その後全部選択して削除。コピーしたファイルを張り付け。という手もある


昨日から、何故か作ったデータがAndroidで読み込むたび以下のようなエラーが発生しました

06-01 22:27:23.312 3334-3334/? E/AndroidRuntime: FATAL EXCEPTION: main
 Process: com.nononagainfo.www.admobtest, PID: 3334
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nononagainfo.www.admobtest/com.nononagainfo.www.admobtest.MainActivity}: android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class ImageView at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2713)

(以下略)

Binary XML file line #0: Binary XML file line #0:でグーグル検索をしても
app:srcCompatを使って読み込めとかぐらいしか出なくて途方に暮れていました。

で、画像ファイルのデータが一部おかしいのかと思い、ちょっとずつ消していったところ
途中で謎のデータがある事を発見しました

まず、使用した画像が以下の画像となります

次に、下が上記のVector画像をAndroidStudioでxmlファイルとして取り込んだ書式です



赤線で囲んでいる部分の左側との四角形の色と画像の色を見比べてみると分かると思うのですが、画像に存在しない色があります。これが、エラーを起こしていた原因です
このVector画像を作成した際に、ドラッグして存在するデータは全部削除したはずなのですが、どうも見えないデータがあるようでそれはCtrl+Aして全部選択して削除しないと消えませんでした。

そういう訳で恐らくVectorファイルが悪いんだろうが、対象方法が分からないという人がいれば参考にしてみて下さい。