Translate

BTemplates.com

Powered by Blogger.

2018年8月17日金曜日

2018-08-07、17 到達点メモ


Rails

rails routesのusersリソースだけ調べたいという時は以下のように
コマンドすればよい

rails routes | grep /users

参考サイト:grepでこういう時はどうする?

原因がいまいちよくわかっていないのだが
rails consoleで
!!(user && user.authenticate(’nononaga’))
と書くと以下のようなエラーが出た
NameError: undefined local variable or method `’nononaga’' for main:Object
        from (irb):12
!!(user && user.authenticate("nononaga"))
上記だと、普通にfalseと出力されるのだが
今一理由が分からない
シングルクォーテーションだと文字列がそのまま表示されるが
ダブルクォーテーションの場合だと、式展開されるのが原因なのだろうか?
単にコピペしたシングルクオーテーションが全角になっていただけでした。
そりゃあ、無理に決まっている

参考サイト:Ruby 2.4.0 リファレンスマニュアル  リテラル 文字列リテラル



次は8.2 ログインからやる

javascript

  btn.onclick = function(e) {
   console.log(e);
 }
これのeって何だろうと思って調べてみたのだが
Eventのことらしい。
参考サイト:function(e)を使ってみる
参考サイト:function(e)のeってなんだ?

console.logで見た場合以下の内容が見ることができる
なお、下のデータは一部省略されている。
マウスのイベントデータだけではなく、
タグのクラス名とかも見ることができる
例:className

MouseEvent {isTrusted: true, screenX: 916, screenY: 670, clientX: 216, clientY: 585, …}altKey: falsebubbles: truebutton: 0buttons: 0cancelBubble: falsecancelable: trueclientX: 216clientY: 585composed: truectrlKey: falsecurrentTarget: nulldefaultPrevented: falsedetail: 1eventPhase: 0fromElement: nullisTrusted: truelayerX: 216layerY: 585metaKey: falsemovementX: 0movementY: 0offsetX: 88offsetY: 25pageX: 216pageY: 585path: (6) [img, div.thumb-bar, body, html, document, Window]relatedTarget: nullreturnValue: truescreenX: 916screenY: 670shiftKey: falsesourceCapabilities: InputDeviceCapabilities {firesTouchEvents: false}srcElement: imgtarget: imgtimeStamp: 1123.2999999992899toElement: imgtype: "click"view: Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, frames: Window, …}which: 1x: 216y: 585__proto__: MouseEvent


なお、このeは慣習的に使っているだけで予約語ではないため
まったくもって意味はないが以下のような書き方もできる。

  btn.onclick = function(nononaga) {
   console.log(nononaga);
 }

*下記は、Chromeのデベロッパーツールで検証している
あと、MDN web docでのJavaScript オブジェクトの基本で
オブジェクトの呼び出し方で遊んでいたら、
余り使い道のない呼び出し方を見つけてしまった。

        var person = {
              name: ['Bob', 'Smith'],
              age: 32,
              gender: 'male',
              interests: ['music', 'skiing'],
              bio: function() {
                alert(this.name[0] + ' ' + this.name[1] + ' is ' + this.age + ' years old. He likes ' + this.interests[0] + ' and ' + this.interests[1] + '.');
              },
              greeting: function() {
                alert('Hi! I\'m ' + this.name[0] + '.');
              }
        };
上記のようなオブジェクトがあるのだが、
通常、呼び出す際は
person.greeting()やperson.name
のような形で呼び出す。
しかし、一方で以下のような呼び出し方もできる
person["name"]
変数は上記の通りでよいのだが
関数で上記のような呼び方をすると文字列が出る

呼び出し命令
person["greeting"]

結果
ƒ () {
                alert('Hi! I\'m ' + this.name[0] + '.');
              }

きちんと関数そのものを呼び出したい場合は以下のようにすればよい
person["greeting"]()

参考サイト:JavaScript オブジェクトの基本  by Mozilla Contributors is licensed under CC-BY-SA 2.5.

functionってなんか関数じゃなくてオブジェクトなんですね。
というかまるでクラスのように扱っているようにも見える
迂闊に使うと事故りそうだなぁこれ・・・。

IDBDatabaseを使ってデータの保存処理を行った場合の時に
下記のようなエラーが出たときがあった。

Uncaught DOMException: Failed to execute 'transaction' on 'IDBDatabase': One of the specified object stores was not found.

まず試してみることとして
他のブラウザでも同様のことが起きるのか、もしくはシークレットタブで開いたときも
同じ現象が起こるのか確認する必要がある。
今回は課題を修正しながらやったので、間違ったデータを保存したらから
起きたのではないかと思っている


Node.js

色々あってNode.jsのアップデートをしようと思ったのだが
表記されているバージョンとコマンドプロンプトで調べたバージョンが一致しなかった。
具体的には8.11.4 LTSを入れたはずなのだが
コマンドプロンプトでnode -vとコマンドを打つと
v7.2.1と表示される

公式ホームページのリリース一覧を見た感じだとNode.jsを動かすには
バージョンにあったnpmが必要で有るように見える。
npmのバージョンが低いとインストールされないみたいである。
*この時点ではnpmのバージョンは4.0.5だった
そこで、npm update npmとかnpm update -g npmとかしたのだが
これも結果が変わらなかった。
最終的には nodist npm 6.xとやったところ
無事6.1.0にアップデートすることができた
参考サイト:nodistでnpmをUpdate

ただし、相変わらず一度 msiを通じて
アンインストールしたうえで入れなおしてみたが
v7.2.1にしかならなかった。

どうやらnodebrewはmacで使うものらしい・・・
参考サイト:Windowsでnode.jsをバージョン管理する

そういう訳でちょっとnodistのgithubを見て
コマンドを試してみた

$ nodist
  (x64)
> 7.2.1  (global: v7.2.1)
  10.9.0

$  nodist + 8
 8.11.4 [===============] 22244/22244 KiB 100% 0.0s
8.11.4

$  nodist global 8
8
Default global pacakge update dsuccessful.

$  nodist
  (x64)
  7.2.1
> 8.11.4  (global: 8)
  10.9.0

$  node -v
v8.11.4

できちゃったよ・・・。
載っている話がmacの話か、Linuxの話かは気をつけろと
あれほど痛い目にあって学んだはずなのに・・・orz
というか、nodistを入れていると
msiのインストールでは変更できないっぽい?
正直、疲れたから細かく検証する予定はないが。

その他

chmodはunix、linuxで使うコマンド
コマンドプロンプトでコピペできなかったっけ?
と思ったときに参考にしたサイト
参考サイト:あれっ?コピー&ペーストができないよ!?コマンドプロンプト画面でテキストをコピー&ペーストする方法

疲れたんで今日はここまで。

0 コメント:

コメントを投稿