From 0831697099307a012d9d3e315e0023431c9d6c28 Mon Sep 17 00:00:00 2001 From: thomasabishop Date: Sun, 23 Jun 2024 19:15:05 +0100 Subject: [PATCH] Autosave: 2024-06-23 19:15:05 --- .zk/notebook.db | Bin 3829760 -> 3829760 bytes zk/DynamoDB CLI commands.md | 72 ------------------------------------ zk/DynamoDB SDK commands.md | 64 -------------------------------- zk/DynamoDB_CLI_commands.md | 32 ++++++++++++++-- zk/DynamoDB_SDK_commands.md | 63 ++++++++++++++++++++++++++++++- zk/Integrated_circuits.md | 8 ++-- zk/LEDs.md | 2 +- 7 files changed, 94 insertions(+), 147 deletions(-) delete mode 100644 zk/DynamoDB CLI commands.md delete mode 100644 zk/DynamoDB SDK commands.md diff --git a/.zk/notebook.db b/.zk/notebook.db index 521b1e9168c4f01ae12f87432403537345b104ec..4273189d25973d995ca33dc27fa0699bb7653a12 100644 GIT binary patch delta 22577 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 SIOm0M3ci7w5FY&f`u`1RpLnYP diff --git a/zk/DynamoDB CLI commands.md b/zk/DynamoDB CLI commands.md deleted file mode 100644 index 0232764..0000000 --- a/zk/DynamoDB CLI commands.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -id: l045 -title: DynamoDB CLI commands -tags: [AWS, databases, dynamodb] -created: Saturday, June 22, 2024 ---- - -# DynamoDB CLI commands - -## Connecting to a local (Docker)/prod (AWS) DynamoDB instance - -In order to distinguish between local and production accounts you should keep -seperate profiles for each (via `.aws/config` and `.aws/credentials`). - -When connecting to a local DB use the local profile and the local URL. Without -the `--profile` flag, AWS will default to the `default` profile which will -typically be your credentials for accessing AWS on the remote. - -It also sometimes required to add the endpoint-url when working locally: - -``` ---endpoint-url http://localhost:800 - -> When using the commans below locally, assume `--endpoint-url` and `--profile` -> have been appended - -``` - -For example: - -```sh -aws dynamodb list-tables \ ---profile timetracking_dev \ ---endpoint-url http://localhost:800 -``` - -## Delete a table - -```sh -aws dynamodb delete-table \ ---table-name TableName -``` - -## Create table from JSON schema - -```sh -aws dynamodb create-table \ ---cli-input-json file://create-timeentries-table.json \ - -``` - -## Describe the table - -View the table schema: - -```sh - -aws dynamodb describe-table \ ---table-name TimeEntries -``` - -## Scan the table - -```sh -aws dynamodb scan \ ---table-name TimeEntries \ ---output table - - -``` - -## Related notes diff --git a/zk/DynamoDB SDK commands.md b/zk/DynamoDB SDK commands.md deleted file mode 100644 index 4f4b0ae..0000000 --- a/zk/DynamoDB SDK commands.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -id: 8b6h -title: DynamoDB SDK commands -tags: [AWS, databases, dynamodb] -created: Sunday, June 23, 2024 ---- - -# DynamoDB SDK commands - -The following commands are for using `@aws-sdk/client-dynamodb` (the JS SDK). - -## Create client - -```js -import DynamoDBClient from "@aws-sdk/client-dynamodb"; - -const client = new DynamoDBClient({ - region: "eu-west-2", - accessKeyId: process.env.ACCESS_KEY_ID, - secretAccessKey: process.env.ACCESS_KEY_ID, -}); -``` - -### DynamoDB Document Client - -The Document Client returns the data as a standard JSON document in the manner -of a document-based NoSQL database. Without it, DynamoDB will return the data -with type data which is unwieldy and hard to parse. - -To transform into a document structure: - -```js -import DynamoDBClient from "@aws-sdk/client-dynamodb"; -import DynamoDBDocumentClient from "@aws-sdk/lib-dynamodb"; - -const client = new DynamoDBClient({ - region: "eu-west-2", - accessKeyId: process.env.ACCESS_KEY_ID, - secretAccessKey: process.env.ACCESS_KEY_ID, -}); - -const dynamoDbDocumentClient = DynamoDBDocumentClient.from(client); -``` - -## Query a table - -Querying is the most performant and cost-effective method since it is an O(1) -lookup against a partition key or secondary index. - -```js -const params = { - TableName: "YourTableName", - KeyConditionExpression: "#pk = :pk", - ExpressionAttributeNames: { "#pk": "PrimaryKeyAttributeName" }, - ExpressionAttributeValues: { ":pk": "PrimaryKeyValue" }, -}; -``` - -## Scan a table - -Scanning is less performant (O(n)) and most expensive since it requires checking -every item in the database. - -## Related notes diff --git a/zk/DynamoDB_CLI_commands.md b/zk/DynamoDB_CLI_commands.md index d837e97..160e650 100644 --- a/zk/DynamoDB_CLI_commands.md +++ b/zk/DynamoDB_CLI_commands.md @@ -16,6 +16,16 @@ When connecting to a local DB use the local profile and the local URL. Without the `--profile` flag, AWS will default to the `default` profile which will typically be your credentials for accessing AWS on the remote. +It also sometimes required to add the endpoint-url when working locally: + +``` +--endpoint-url http://localhost:800 + +> When using the commans below locally, assume `--endpoint-url` and `--profile` +> have been appended + +``` + For example: ```sh @@ -28,8 +38,6 @@ aws dynamodb list-tables \ ```sh aws dynamodb delete-table \ ---profile timetracking_dev \ ---endpoint-url http://localhost:8000 \ --table-name TableName ``` @@ -38,9 +46,25 @@ aws dynamodb delete-table \ ```sh aws dynamodb create-table \ --cli-input-json file://create-timeentries-table.json \ ---profile timetracking_dev \ ---endpoint-url http://localhost:8000 ``` +## Describe the table + +View the table schema: + +```sh + +aws dynamodb describe-table \ +--table-name TimeEntries +``` + +## Scan the table + +```sh +aws dynamodb scan \ +--table-name TimeEntries \ +--output table +``` + ## Related notes diff --git a/zk/DynamoDB_SDK_commands.md b/zk/DynamoDB_SDK_commands.md index 3871e00..11ae5c4 100644 --- a/zk/DynamoDB_SDK_commands.md +++ b/zk/DynamoDB_SDK_commands.md @@ -7,16 +7,75 @@ created: Sunday, June 23, 2024 # DynamoDB SDK commands -The following commands are for using `$aws-sdk/client-dynamodb` (the JS SDK). +The following commands are for using `@aws-sdk/client-dynamodb` (the JS SDK). ## Create client ```js -const params = { +import DynamoDBClient from "@aws-sdk/client-dynamodb"; + +const client = new DynamoDBClient({ region: "eu-west-2", accessKeyId: process.env.ACCESS_KEY_ID, secretAccessKey: process.env.ACCESS_KEY_ID, +}); +``` + +### DynamoDB Document Client + +The Document Client returns the data as a standard JSON document in the manner +of a document-based NoSQL database. Without it, DynamoDB will return the data +with type data which is unwieldy and hard to parse. + +To transform into a document structure: + +```js +import { DynamoDBClient } from "@aws-sdk/client-dynamodb"; +import { DynamoDBDocumentClient } from "@aws-sdk/lib-dynamodb"; + +const client = new DynamoDBClient({ + region: "eu-west-2", + accessKeyId: process.env.ACCESS_KEY_ID, + secretAccessKey: process.env.ACCESS_KEY_ID, +}); + +const dynamoDbDocumentClient = DynamoDBDocumentClient.from(client); +``` + +## Query a table + +Querying is the most performant and cost-effective method since it is an O(1) +lookup against a partition key or secondary index. + +```js +import { DynamoDBDocumentClient, QueryCommand } from "@aws-sdk/lib-dynamodb"; + +const params = { + TableName: "YourTableName", + KeyConditionExpression: "#pk = :pk", + ExpressionAttributeNames: { "#pk": "PrimaryKeyAttributeName" }, + ExpressionAttributeValues: { ":pk": "PrimaryKeyValue" }, }; + +const dynamoDbDocumentClient = DynamoDBDocumentClient.from(client); +const data = await dynamoDbDocumentClient.send(new QueryCommand(params)); +console.log(data); +``` + +## Scan a table + +Scanning is less performant (O(n)) and most expensive since it requires checking +every item in the database. + +```js +import { DynamoDBDocumentClient, ScanCommand } from "@aws-sdk/lib-dynamodb"; + +const params = { + TableName: "YourTableName", +}; + +const dynamoDbDocumentClient = DynamoDBDocumentClient.from(client); +const data = await dynamoDbDocumentClient.send(new ScanCommand(params)); ``` ## Related notes diff --git a/zk/Integrated_circuits.md b/zk/Integrated_circuits.md index fec4953..d9717b6 100644 --- a/zk/Integrated_circuits.md +++ b/zk/Integrated_circuits.md @@ -7,8 +7,7 @@ tags: # Integrated circuits An integrated circuit (IC) is a single unit that comprises several logic gates -designed for the easy construction of -[digital circuits](Digital_circuits.md). +designed for the easy construction of [digital circuits](Digital_circuits.md). The terms "integrated circuit" and "chip" are often used interchangeably. An IC puts the gates on a single piece of silicon that has electrical contact @@ -24,5 +23,6 @@ to a breadboard. _An integrated circuit and its use on a breadboard:_ - - +![](../img/integrated-circuit.jpeg) + +![](../img/breadboard-DIP.jpg) diff --git a/zk/LEDs.md b/zk/LEDs.md index c1e1dd7..36d7750 100644 --- a/zk/LEDs.md +++ b/zk/LEDs.md @@ -21,5 +21,5 @@ generic diode circuit symbol: An LED diode lights up when the right amount of current flows through it. A standard LED has a maximum current of 20mA. An appropriate [resistor](Resistance.md#resistors) -must therefore be added to the circuit to ensure the current doesn't exeedd this +must therefore be added to the circuit to ensure the current doesn't exceed this amount.