ITあれこれ弄り道

IT系のあれこれを適当に弄ってみよう的な

【書籍】サーバーレスシングルページアプリケーション ハマりそうな箇所をまとめてみた

まだ読んでる途中だけど、知らない人はハマりそうな部分がちらほらあったので、まとめてみた。

読み進めて他にもありそうなら追記しようと思う。

なお、当方Macを使っているので、Windows環境での操作についても、時間がある時に追記しようと思う。

 

P.11 githubからソースをクローンするところ

githubへの登録は問題なくできると思う。

その後、ソースのフォーク・フォークしたソースのクローンについて説明したい。

ただ、設定をしていない場合、クローンしようとすると弾かれてしまう。

1. https://github.com/benrady/learnjs を開き、右上にある「Fork」を押すと、自分のアカウントにリポジトリがコピーされる。

2.  ローカルでターミナルを起動し、ホームディレクトリ(/Users/ユーザー名)下の「.ssh」に移動する。

3. $ ssh-keygen -t rsa -C "登録したメールアドレス"

4. $ pbcopy rsa.pub(rsa.pubの内容をクリップボードにコピー)

5. githubのsettings - SSH and GPG keysで「New SSH key」を押し、ペースト

6. /Users/ユーザー名/.ssh に config ファイルを作成(内容は以下)

Host github github.com

  HostName github.com

  IdentityFile ~/.ssh/rsa

  User git

これでイケるはず

 

次、P.31のJasmineについて

index.htmlのヘッダに以下を追加

<link rel="stylesheet" href="/tests/lib/jasmine-2.3.4/jasmine.css">
<script src="/tests/lib/jasmine-2.3.4/jasmine.js"></script>
<script src="/tests/lib/jasmine-2.3.4/jasmine-html.js"></script>
<script src="/tests/lib/jasmine-2.3.4/boot.js"></script>
<script src="/tests/app_spec.js"></script>

 

P.36テストコード

describe('LearnJS', function() {
it('shows the landing page view when there is no hash', function() {
learnjs.showView('');
expect($('.view-container .landing-view').length).toEqual(1);
});
it('can show a problem view', function() {
learnjs.showView('#problem-1');
expect($('.view-container .problem-view').length).toEqual(1);
});
});

テストの順番を入れ替えてる。

なぜかというと、先にハッシュ入りのコードを実行すると「.landing-view」クラスの入っているdivが消されてテストが通らないから。

 

ひとまず以上!

 

DynamoDBでちょっとハマった話

Bluemixのドキュメント更新の遅さに辟易して浮気してます。

んで、AWSでNode.js使ってあれこれしようとしてる訳ですが・・・

 

ローカルでDynamoDBを動かしてて、まずテーブル作成だなとこんなコード書いてみた。

const AWS = require('aws-sdk');

 

AWS.config.update({

    region: 'ap-eastwest-1',

    endpoint: 'http://localhost:8000'

});

const db = new AWS.DynamoDB();

 

const params = {

    TableName: 'Users',

    KeySchema: [

        { AttributeName: 'email', KeyType: 'HASH' },

        { AttributeName: 'name', KeyType: 'RANGE' },

    ],

    AttributeDefinitions: [

        { AttributeName: 'email', AttributeType: 'S' },

        { AttributeName: 'name', AttributeType: 'S' },

        { AttributeName: 'password', AttributeType: 'S' }

    ],

    ProvisionedThroughput: {

        ReadCapacityUnits: 10,

        WriteCapacityUnits: 10

    },

};

 

db.createTable(params, function(err, data) {

    if (err) {

        console.error('Unable to create table. Error JSON: ' + JSON.stringify(err, null, 2));

    } else {

        console.log('Created table. Table description JSON: ' + JSON.stringify(data, null, 2));

    }

});

 

で、結果がコレ

The number of attributes in key schema must match the number of attributesdefined in attribute definitions.

 

つまり、キースキーマと属性は一対一じゃないとダメよって事で。

んで、「は?全部の属性にソートキーつけろって事かよ」って考えたSQL脳。

 

よくよくドキュメント読んでみると、

AttributeDefinitions – キースキーマ属性のデータ型。

直訳して「属性の定義」だから、カラムを全部定義するんだと勘違いしてたが、要はプライマリキーとソートキー以外はテーブル作成時に定義する必要ないよ、と。

 

コードからpasswordの行を削除すると、無事通りました。ヤレヤレ

 

Bluemix本買ったどー!

いや、最近Bluemixいじくりまわしてたんですけどね、色々よく分からんので買いました「IBM Bluemix クラウド開発入門」。

そもそも何故分かんなかったかってーと、Bluemixのドキュメント自体が古くて、マニュアル通りに進めようとしても進められんのですよ、これが。

んで、Bluemix Users Groupに入ったついでに、本も買って一気にやっちまおうと。

今考えてんのは、バックエンドでNode.jsを動かして、フロントエンドはiPhone(swift)を使おうかなと。

まぁ、AWSの方が色んな本が出てて覚えやすいんだろうなーとは思いつつ、何となくBluemixにそそられたわけで。

 

そんな訳で、これからやっていく事を書き起こして行こうと思って、今更ブログを始めたのだ!

これからの成長を見守っておくれ。(誰に言うでもなく)

 

あ、因みに今まで何もしてなかったわけじゃないよ(汗)

 

カタログから「MobileFirst Services Starter」を選んでだな

f:id:nyakkys:20170914170809p:plain

 

ツールチェーンを作成、と

f:id:nyakkys:20170914170826p:plain

 

んで、「Eclipse Orion Web IDE」を開くと・・・はい、サンプルが出来てますよっと

f:id:nyakkys:20170914170958p:plain

 

んで、Mac使ってNode.jsのアプリ作ってんだ。

プッシュ通知とかCloudantDBの使い方とか色々覚えることあるから、また覚えたら続きを書くぜ!

 

まぁ、Bluemixじゃないとヤダって訳じゃないし、今は評価期間だから、他のクラウドとかも手を出したりするかもね。かもね。