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
で直るという記事を読んで試してみたがうまくいかない。色々調べてみるもダメそうなので、明日再度試してやっぱりダメなら質問してみる。