はかせだけど博士じゃない

無職が就活しないでプログラミングとかする

N予備校のプログラミング入門メモ3

はじめに

以前の記事参照。基本的にN予備校のプログラミング入門講座をやってみた時の脳内をそのまんま出すみたいなやつです。

3章 サーバサイドプログラミング入門

03.アルゴリズムの改善

VSCode

内容関係ないけどRLoginからcode filenameみたいにしてホスト側のVSCode開きたい。開きたくない?

プロファイル

プロファイルという方法を使って処理時間などを調べるらしい。プロファイルツールとしてnodegrindをインストールするとあるがnpmが急に出てきた。使ったことあるからいいけどnpmの説明ってどこかでしたっけ。いいけど。

nodegrindを使って出力したファイルはGoogle ChromeのDeveloper ToolsのJavaScript Profilerタブから開ける。すごい。

アルゴリズム改善後のプロファイル

計算結果を保存して改善したあとのプログラムで再びプロファイルを実行したところ、講座のテキストでは「最も時間のかかっている処理が、writeUtf8Stringという文字出力の関数になっている」とあるが、すべて0msになっていて結果が異なっていた。なんだろこれ。スルーしてもいいのかな。

04.ライブラリ

暇なときに見るサイト

関係ないけど頭が悪いのでMarkdownのリンクの記法になかなか慣れない。[]()どっちがどっちだっけ、ってなる。

npm

上で「説明あったっけ?」みたいなこと書いたけどここにあった。

npmを使ったライブラリのインストール

ここではrequestというライブラリをローカルインストールしているが、npm install requestを実行するとエラーが出てインストールできなかった。

npm WARN enoent ENOENT: no such file or directory, open '/home/vagrant/workspace/npm-training/package.json'
npm WARN npm-training No description
npm WARN npm-training No repository field.
npm WARN npm-training No README data
npm WARN npm-training No license field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: bcrypt-pbkdf@1.0.1 (node_modules/bcrypt-pbkdf):
npm WARN enoent SKIPPING OPTIONAL DEPENDENCY: ENOENT: no such file or directory, rename '/home/vagrant/workspace/npm-training/node_modules/bcrypt-pbkdf' -> '/home/vagrant/workspace/npm-training/node_modules/.bcrypt-pbkdf.DELETE'

npm ERR! path /home/vagrant/workspace/npm-training/node_modules/oauth-sign
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall rename
npm ERR! enoent ENOENT: no such file or directory, rename '/home/vagrant/workspace/npm-training/node_modules/oauth-sign' -> '/home/vagrant/workspace/npm-training/node_modules/.oauth-sign.DELETE'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent 

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/vagrant/.npm/_logs/2018-02-05T09_31_26_582Z-debug.log

関連ライブラリが見つからないみたいなエラーに見える。知らんのでもう一度npm install requestする。

npm WARN enoent ENOENT: no such file or directory, open '/home/vagrant/workspace/npm-training/package.json'
npm WARN npm-training No description
npm WARN npm-training No repository field.
npm WARN npm-training No README data
npm WARN npm-training No license field.

npm ERR! path /home/vagrant/workspace/npm-training/node_modules/request/node_modules/assert-plus
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall rename
npm ERR! enoent ENOENT: no such file or directory, rename '/home/vagrant/workspace/npm-training/node_modules/request/node_modules/assert-plus' -> '/home/vagrant/workspace/npm-training/node_modules/request/node_modules/.assert-plus.DELETE'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent 

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/vagrant/.npm/_logs/2018-02-05T09_33_00_663Z-debug.log

今度は別のライブラリっぽい。これ何度も続けてたら通るのでは? と思ってもう一度。

npm WARN saveError ENOENT: no such file or directory, open '/home/vagrant/workspace/npm-training/package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open '/home/vagrant/workspace/npm-training/package.json'
npm WARN npm-training No description
npm WARN npm-training No repository field.
npm WARN npm-training No README data
npm WARN npm-training No license field.

+ request@2.83.0
added 51 packages, removed 3 packages and updated 1 package in 8.692s

通ったっぽい。よかった。こういうのよくあるのだろうか。

npmライブラリの作成

  • module.exportsオブジェクトのプロパティとして関数を登録

今までで一番どうでもいいこと言うけど、「numbers」って打つつもりで「numbeers」とtypoしていてビールクズ感極まってる。

練習問題

すべての数を掛け合わせる関数を定義するという問題、脳死状態で書いてほぼ常に0が返るクソ関数を書いてしまい反省した。

05.Slack のボット開発

SlackのWorkspaceへ招待してもらうために用意されたフォームにメールアドレスを記入して送ったけどなかなか招待が届かない。メールアドレス間違えたかな。

……やっぱり届かないので今日はここまでにする。

と思ったけど同じように招待が届かないという旨の質問がフォーラムにたくさんあって、自分でWorkspaceを作っても同じように進められるとのことだったので作って再開する。

06.Hubot と Slack アダプタ

Yeomanを使ってHubotのプロジェクトを作るところでエラー。

npm ERR! path /home/vagrant/workspace/hubot-study/node_modules/.staging/@slack/client-b3849b78
npm ERR! code EPERM
npm ERR! errno -1
npm ERR! syscall rename
npm ERR! Error: EPERM: operation not permitted, rename '/home/vagrant/workspace/hubot-study/node_modules/.staging/@slack/client-b3849b78' -> '/home/vagrant/workspace/hubot-study/node_modules/@slack/client'
npm ERR!     at Error (native)
npm ERR!  { Error: EPERM: operation not permitted, rename '/home/vagrant/workspace/hubot-study/node_modules/.staging/@slack/client-b3849b78' -> '/home/vagrant/workspace/hubot-study/node_modules/@slack/client'
npm ERR!     at Error (native)
npm ERR!   cause: 
npm ERR!    { Error: EPERM: operation not permitted, rename '/home/vagrant/workspace/hubot-study/node_modules/.staging/@slack/client-b3849b78' -> '/home/vagrant/workspace/hubot-study/node_modules/@slack/client'
npm ERR!        at Error (native)
npm ERR!      errno: -1,
npm ERR!      code: 'EPERM',
npm ERR!      syscall: 'rename',
npm ERR!      path: '/home/vagrant/workspace/hubot-study/node_modules/.staging/@slack/client-b3849b78',
npm ERR!      dest: '/home/vagrant/workspace/hubot-study/node_modules/@slack/client' },
npm ERR!   stack: 'Error: EPERM: operation not permitted, rename \'/home/vagrant/workspace/hubot-study/node_modules/.staging/@slack/client-b3849b78\' -> \'/home/vagrant/workspace/hubot-study/node_modules/@slack/client\'\n    at Error (native)',
npm ERR!   errno: -1,
npm ERR!   code: 'EPERM',
npm ERR!   syscall: 'rename',
npm ERR!   path: '/home/vagrant/workspace/hubot-study/node_modules/.staging/@slack/client-b3849b78',
npm ERR!   dest: '/home/vagrant/workspace/hubot-study/node_modules/@slack/client',
npm ERR!   parent: 'hubot-study' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! A complete log of this run can be found in:

管理者権限で実行してって言われてる。キャッシュクリアnpm cache cleanで直るという記事を読んで試してみたがうまくいかない。色々調べてみるもダメそうなので、明日再度試してやっぱりダメなら質問してみる。