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

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

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

はじめに

以前の記事参照

15.テンプレートエンジン

Jadeのインストール時にエラー

npm WARN deprecated jade@1.11.0: Jade has been renamed to pug, please install the latest version of pug instead of jade
npm WARN deprecated transformers@2.1.0: Deprecated, use jstransformer
npm WARN node-js-http@1.0.0 No description
npm WARN node-js-http@1.0.0 No repository field.

npm ERR! path ../acorn/bin/acorn
npm ERR! code EPROTO
npm ERR! errno -71
npm ERR! syscall symlink
npm ERR! EPROTO: protocol error, symlink '../acorn/bin/acorn' -> '/home/vagrant/workspace/node-js-http-3015/node_modules/.bin/acorn'

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

npm cache clear --forceしたりnpm install--no-bin-linksオプション付けたりしてたらインストールできた。

と思ったらコマンドプロンプトが管理者権限じゃなかったのが原因かもしれないのでVagrantを起動しなおしてインストールを試したらうまくいった。忘れてはならない。

Jadeの記法

  • 要素名、値を記述する
  • 属性は要素名のあとに()で書く
    • 複数各場合は,で区切る
  • インデントで入れ子
  • #{変数名}で変数の値を呼び出せる
doctype html
html(lang="ja")
  head
    meta(charset="UTF-8")
    title アンケート
  body
    h1 どちらが食べたいですか?
    form(method="post", action="#{path}")
      span 名前:
      input(type="text", name="name")
      input(type="radio", name="favorite", value="#{firstItem}")
      span #{firstItem}
      input(type="radio", name="favorite", value="#{secondItem}")
      span #{secondItem}
      button(type="submit") 投稿

URLで条件分岐して動的にHTMLを生成して返すみたいなコードを書いた。

16.Heroku で Web サービスを公開

  • Herokuに登録
  • Heroku CLIをインストール
heroku --version
heroku-cli/6.15.24-e5de04c (linux-x64) node-v9.5.0

npm installが失敗する

GitHubからcloneしたプロジェクトのnpm installが失敗することがある。別の場所(ホームディレクトリとか)でnpm installすると成功する場合があるので一旦インストールして、生成されたnode_modulesディレクトリをコピーすると動く。

heroku

  • heroku create
  • 他のサブコマンド
    • logs
    • info
    • destroy --confirm サーバー名

heroku createしてリモートリポジトリherokuにpushしたらデプロイできた。面白い。

Hubotで作ったbotもHerokuにデプロイできるみたいなので後でやってみる。(やってみるとは言ってない)

destroy --confirm サーバー名のサーバー名ってなんだってなったけど、https://<server-name>.herokuapp.com/の<server-name>で合ってた。

練習問題

練習問題でgit checkout -b master-2017 origin/master-2017というのが出てきた。master-2017 origin/master-2017はリモートのブランチをローカルに持ってくる書き方、-bオプションは新しいブランチを作成してチェックアウト。なのでリモートoriginmaster-2017をローカルに持ってきて新しいmaster-2017ブランチとしてチェックアウトする、という感じか。

masterにmergeしてpull requestしたらpackage-lock.jsonというやつも一緒にプルリクされたんだけどこれでいいんだろうか。