text:
---
layout: rom
title: TWRP 3.4.0-1
subtitle: for Raspberry Pi 3
date: 2020-11-08
tags: [rpi3, TWRP]
social-share: true
comments: true
---

This is my build of Dees-Troy's [Team Win Recovery Project](https://twrp.me) (TWRP) for Raspberry Pi 3 Model B and Model B+. It's included in my [Android](/devices/rpi3) images. Please read the FAQ on how to boot to recovery.

**Sources:**

- [lineage-rpi](https://github.com/lineage-rpi/android_local_manifest/tree/lineage-16.0-twrp)

----

**8.11. changelog:**

- TWRP 3.4.0-1
- automatically reboot to system
- USB boot support

**27.7. changelog:**

- TWRP 3.4.0-0

**13.7. 2020 changelog:**

- TWRP 3.3.1-1
- add support for encrypted data partition

**27.6. 2019 changelog:**

- TWRP 3.3.1-0

**17.8. changelog:**

- TWRP 3.2.3-0

**6.7. changelog:**

- initial release
- TWRP 3.2.2-0

----

gha_language: HTML


text:
# Scala

WebSocket client sample of Scala for [Qoosky API](https://www.qoosky.io/help/api).

- [Akka 2.5.31](https://doc.akka.io//docs/akka/2.5.31/?language=scala)
- [Akka HTTP 10.1.11](https://doc.akka.io//docs/akka-http/10.1.11/scala/http/)

# How to build and run

```
sbt run
```

Response from the API server:

```
Successfully connected to the API server.
received: {"notification":"Invalid Qoosky API token.

license: MIT

repository: qoosky/websocket-clients

branch_name: refs/heads/master

extension: md

license_type: permissive

repo_name: qoosky/websocket-clients


text:
---
external help file: myreminder-help.xml
Module Name: myreminder
online version:
schema: 2.0.0
---

# Remove-ScheduledReminderJob

## SYNOPSIS

Remove a scheduled reminder job.

## SYNTAX

### Name

```yaml
Remove-ScheduledReminderJob [-Name] <String> [-WhatIf] [-Confirm] [<CommonParameters>]
```

### ID

```yaml
Remove-ScheduledReminderJob [-ID <Int32>] [-WhatIf] [-Confirm] [<CommonParameters>]
```

## DESCRIPTION

User this command to remove a scheduled reminder job. Although you could also use Unregister-Scheduledjob.

## EXAMPLES

### Example 1

```powershell
PS C:\>  remove-scheduledreminderjob -name standup
```

### Example 2

```powershell
PS C:\> Get-ScheduledReminderJob | Remove-ScheduledReminderJob
```

Remove all reminder jobs.

## PARAMETERS

### -Confirm

Prompts you for confirmation before running the cmdlet.

```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases: cf

Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```

### -ID

The scheduled reminder job ID.

```yaml
Type: Int32
Parameter Sets: ID
Aliases:

Required: False
Position: Named
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False
```

### -Name

The name of a scheduled reminder job.

```yaml
Type: String
Parameter Sets: Name
Aliases:

Required: True
Position: 0
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```

### -WhatIf

Shows what would happen if the cmdlet runs. The cmdlet is not run.

```yaml
Type: SwitchParameter
Parameter Sets: (All)
Aliases: wi

Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```

### CommonParameters

This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters (http://go.microsoft.com/fwlink/?LinkID=113216).

## INPUTS

### System.Int32

## OUTPUTS

### None

## NOTES

Learn more about PowerShell: http://jdhitsolutions.com/blog/essential-powershell-resources/

## RELATED LINKS

[Get-ScheduledReminderJob]()

[New-ScheduledReminderJob]()

repository: jdhitsolutions/MyReminder

repo_name: jdhitsolutions/MyReminder


text:
---
title: Final Fantasy VII Remake is bad
subtitle: And fans deserve it
immagine: https://miro.medium.com/max/875/0*JDN3FqDwaQLzjyXy.jpg
date: 2021-12-28
sommario: "If Stairway to Heaven were to be released tomorrow, would it still be the Stairway to Heaven we know?"
medium: https://xab.medium.com/final-fantasy-vii-remake-is-bad-b9d63497540a
---

If _Stairway to Heaven_ were to be released tomorrow, would it still be the _Stairway to Heaven_ we know?

Don’t think so.

It would certainly be welcome as a wonderful ballad, sure, but it will not be the quintessential rock ballad, the one forbidden in music stores because is played way too much.

![stairway-to-heaven](https://miro.medium.com/max/753/0*w5VDVV18zVg5BBdc)

_Stairway to Heaven_ was released in 1971, the gem of the fourth album that marks the full artistic maturity of Led Zeppelin, when the progressive hard rock is exploding, leaving behind the hippie psychedelia from the 60s.

_Stairway to Heaven_ is a monument, even if Jimmy Page is not your average guitar hero (at least, not in a Ritchie Blackmore/Joe Satriani meaning) and if we are going to dissect it with more or less technical criteria we can find reasons why it is not a perfect song (but believing in perfection would make us horrible people).

Point is, it was the right song at the right time, and that’s why it became a game-changer.

Since I guess that the Google algorithm is pretty confused at the moment, let’s clarify that yes, the title is right and this post is about _Final Fantasy VII Remake_.

## Recap

The original Final Fantasy VII represented a devastating economic effort, something no longer replicable:

[**Final Fantasy VII remains among the most expensive productions in gaming history**](https://en.wikipedia.org/wiki/List_of_most_expensive_video_games_to_develop) despite being released in 1997, well before the gaming industry outclassed every other entertainment sector.

A production worth more than forty million dollars spent by a Japanese company that, although wealthy, was still focused on its internal market.

With Final Fantasy VII, Square was preparing to challenge the world:

It was real _all-in_, a bet that could very well have gone wrong leading to a company failure, the creative challenge of a lifetime for all those who worked there.

## Era

![PlayStation](https://miro.medium.com/max/875/0*DKaFr9FB-DxDw6wa.jpg)

In ’97, the Videogame world was at the dawn of the PlayStation phenomenon and the discovery of 3D gaming which, returning to my musical metaphors, we can very well relate to the advent of the Fender Stratocaster in 1954.

As if all this were not enough, **Final Fantasy VII was revolutionary in how it intercepted cyberpunk, environmentalism, and the futuristic atmospheres of Japan of the 90s**, leaving behind the medieval fantasy that represented the standard for Squaresoft and JRPG production.

If we think about it, the very idea that Avalanche was a group of eco-terrorists fighting for the salvation of the planet leads us to understand how much Final Fantasy VII was ahead of its time:

Feet planted firmly on the present, with a gaze projected towards the future we are now living.

## Final Fantasy VII Remake assumptions

Now: in fact, the Remake isn’t even the same song, but a nice cover.

Visually stunning?

![Tifa](https://miro.medium.com/max/875/0*eiLjzyiTETDpz01S.jpg)

Yeah, ok: but to be honest it represents a virginity we already lost many years ago with the movie _Advent Children_.

While Advent Children was showing off the top of the technology of its time (just like the original Final Fantasy VII back in ‘97), the same thing isn’t true for the Remake.

Even if the graphics are cool and all, the Final Fantasy VII: Remake standards are from a few years ago and the gameplay (which is cool and all) brings nothing revolutionary to the table:

The technology behind this remake is old and, by the time its last part will come out in an unspecified future, it will be outdated.

**Final Fantasy VII was released at the dawn of the first PlayStation, its remake was born within the PS4 sunset.**

But let’s be clear: it is an inevitable condition.

Even if Square Enix were willing to take the crazy risks of Squaresoft in 1997 (and therefore put practically all its human capital, even before economic, to the destinies of a single title) it would never have managed to create such an immense video game in time. useful with the ambition to revolutionize the videogame.
Everyone went crazy with this tech demo (remember: it was 2005!)

Let’s be honest here: the only reason we have a remake in the first place is that fans wanted it so badly that the opportunity was too tempting for the company.

Due to this, Final Fantasy VII: Remake doesn’t bring anything new or shocking into the industry.

It is not, and never will be, _Stairway to Heaven_.

It can only hope not to become Greta Van Fleet.

## New Players

![mako](https://miro.medium.com/max/375/0*NVZFMVGoLp_HC_v6.jpg)

Without spoiling anything, let’s just say that the ending of Remake “Part 1” shows the cards on the table, clarifying where we are going to end up in future installments and the concept itself behind the term “Remake” (which should also be seen as a sort of “Rewritten”).

Parallel universes, alternative realities, what if? and all that narratively very dangerous stuff that sounds way more like Kingdom Hearts than Final Fantasy VII (with the important difference that Kingdom Hearts was born with this spirit in the first place).

I understand the reasons behind the ending mind you, and I honestly don’t know if something better could have been done:

As I have always reiterated, it would make no sense to tell me a story I know by heart pretending to seek suspense and catalyze interest after the end of what remains merely a “First Part”.

The trouble is, if you don’t know the original story, you can’t understand much of this metanarrative stuff since you never crossed the tracks from where we are now deviating.

**So, if you never played the original Final Fantasy VII, the remake will make very little sense to you (at least for now).**

Conversely, those who have played the game over and over can take this detour as a derailment:

> “Final Fantasy VII is a goofy game with serious moments, the remake is a serious game with goofy moments”

As the excellent [Dunkview video review](https://youtu.be/8Qlf3b9wa4s) shows us, another problem with the remake can be found within the “rhythm” of the narrative:

it’s like having a 10+ episodes TV series telling a story that could have been portrayed in a two-hour movie.

## Do we need a remake of Final Fantasy VII?

Or rather, I don’t think Square Enix could have done better:

We are talking about a different company with different people that, most of all, are working in a completely different videogame industry.

I mean, what Square Enix could have done better?

Tell us the same story using a modern graphic engine?

Maybe.

![Final Fantasy VII](https://miro.medium.com/max/800/0*0SkcAeS5FgdqY-UZ.jpg)

But Final Fantasy VII was a huge game, and if its story has meant so much for so many players is also because it was told inside a vast and credible world, crafted with the idea of making the most of all the technological potential of its time.

And Square Enix does not have the means, the ways, or the time to be able to deliver something like this anymore.

license: ISC

gha_language: Nunjucks

gha_license_id: ISC


text:
# Pathfinder
[![Build Status](https://travis-ci.org/AIRTucha/pathfinder.svg?branch=master)](https://travis-ci.org/AIRTucha/pathfinder)

PROJECT IS DEPRECATED SINCE NEW VERSIONS OF ELM DOES NOT SUPPORT INFIX
which is heavily used by the DSL.

An embedded DSL for a typesafe parsing of URL. It is designed for processing URLs of any complexity.

The library can parse single value, multiple values with the strict or arbitrary order and queries. It also allows writing typesafe parser for a query.

The library contains two main parts:

* A DSL for building parsing tree
* Function which performs parsing of a string in according to provided parsing tree

# Examples

Parsing of a string form a simple path.
```elm
parseName: String -> Maybe String
parseName url =
    case parse (p "someUrl" </> str) url of
        Str name ->
            Just name

        _ ->
            Nothing

parseName "someUrl/userName"  -- Just "userName"
```
Parsing of an integer from a path which contains a query.
```elm
parseQuery: String -> Maybe Int
parseQuery url =
    case parse (p "someUrl" <?> (p "age" <=> int)) url of
        Integer age ->
            Just age

        _ ->
            Nothing

parseQuery "someUrl?age=10"  -- Just 10
```
Parsing of multiple values.
```elm
parseNameAndId: String -> Just ( String, Int )
parseNameAndId url =
    case parse (p "someUrl" </> str </> int </> any ) url of
        MultiValue [ Str name, Integer id] ->
                    Just (name, id)

        _ ->
            Nothing

parseNameAndId "someUrl/userName/1/someRandomStuff"  -- Just ("userName", 1)
```
Error handling in case of unsuccesful parsing.
```elm
getDevider: String -> Result String Float
getDevider url =
    case (parse any </> float) url of
        Floating value->
            Ok value

        Failure err ->
            Err err

        _ ->
            Err "Unexpected path."

getDevider "10*3.1415"  -- Err "10*3.1415 does not contain /"
```

# Contributing

Feedback and contributions are very welcome.

For installation of local npm dependencies run:
```
npm install
```

For installation of local elm dependencies run:
```
npm run install
```

Repeat the same actions for tests folder.

Run tests from root folder by:
```
npm test
```

Any Elm CLI commands can be called by:
```
npm run elm [comands]
```

repository: AIRTucha/pathfinder

repo_name: AIRTucha/pathfinder


text:
---
id: artist_hosts_photoshop
title: Photoshop
sidebar_label: Photoshop
---

## Available Tools

-   [Work Files](artist_tools.md#workfiles)
-   [Create](artist_tools.md#creator)
-   [Load](artist_tools.md#loader)
-   [Publish](artist_tools.md#publisher)
-   [Manage](artist_tools.md#inventory)

## Setup

To install the extension, download, install [Anastasyi's Extention Manager](https://install.anastasiy.com/). Open Anastasyi's Extension Manager and select Photoshop in menu. Then go to `{path to pype}/repos/avalon-core/avalon/photoshop/extension.zxp`. Drag extension.zxp and drop it to Anastasyi's Extension Manager. The extension will install itself.

## Usage

When you launch Photoshop you will be met with the Workfiles app. If dont have any previous workfiles, you can just close this window.

In Photoshop you can find the tools in the `OpenPype` extension:

![Extension](assets/photoshop_extension.PNG) <!-- picture needs to be changed -->

You can show the extension panel by going to `Window` > `Extensions` > `OpenPype`.

### Create

When you have created an image you want to publish, you will need to create special groups or tag existing groups. To do this open the `Creator` through the extensions `Create` button.

![Creator](assets/photoshop_creator.PNG)

With the `Creator` you have a variety of options to create:

- Check `Use selection` (A dialog will ask whether you want to create one image per selected layer).
    - Yes.
        - No selection.
            - This will create a single group named after the `Subset` in the `Creator`.
        - Single selected layer.
            - The selected layer will be grouped under a single group named after the selected layer.
        - Single selected group.
            - The selected group will be tagged for publishing.
        - Multiple selected items.
            - Each selected group will be tagged for publishing and each layer will be grouped individually.
    - No.
        - All selected layers will be grouped under a single group named after the `Subset` in the `Creator`.
- Uncheck `Use selection`.
    - This will create a single group named after the `Subset` in the `Creator`.

### Publish

When you are ready to share some work, you will need to publish. This is done by opening the `Pyblish` through the extensions `Publish` button.

![Publish](assets/photoshop_publish.PNG) <!-- picture needs to be changed -->

This tool will run through checks to make sure the contents you are publishing is correct. Hit the "Play" button to start publishing.

You may encounter issues with publishing which will be indicated with red squares. If these issues are within the validation section, then you can fix the issue. If there are issues outside of validation section, please let the OpenPype team know.

#### Repair Validation Issues

All validators will give some description about what the issue is. You can inspect this by going into the validator through the arrow:

![Inspect](assets/photoshop_publish_inspect.PNG) <!-- picture needs to be changed -->

You can expand the errors by clicking on them for more details:

![Expand](assets/photoshop_publish_expand.PNG) <!-- picture needs to be changed -->

Some validator have repair actions, which will fix the issue. If you can identify validators with actions by the circle icon with an "A":

![Actions](assets/photoshop_publish_actions.PNG) <!-- picture needs to be changed -->

To access the actions, you right click on the validator. If an action runs successfully, the actions icon will turn green. Once all issues are fixed, you can just hit the "Refresh" button and try to publish again.

![Repair](assets/photoshop_publish_repair.gif) <!-- picture needs to be changed -->

### Load

When you want to load existing published work, you can load in smart layers through the `Loader`. You can reach the `Loader` through the extension's `Load` button.

![Loader](assets/photoshop_loader.PNG) <!-- picture needs to be changed -->

The supported families for Photoshop are:

- `image`

To load an image, right-click on the subset you want and choose a representation:

![Loader](assets/photoshop_loader_load.gif)

### Manage

Now that we have some images loaded, we can manage which version is loaded. This is done through the `Scene Inventory`. You can reach it through the extension's `Manage` button.

:::note
Loaded images has to stay as smart layers in order to be updated. If you rasterize the layer, you cannot update it to a different version.
:::

![Loader](assets/photoshop_manage.PNG)

You can switch to a previous version of the image or update to the latest.

![Loader](assets/photoshop_manage_switch.gif)
![Loader](assets/photoshop_manage_update.gif)

repository: josephkirk/OpenPype

branch_name: refs/heads/main

gha_license_id: MIT

repo_name: josephkirk/OpenPype


text:
---
layout: default
---

# 1998-06-07 - PGP International Accused

## Header Data

From: John Young<EMAIL_ADDRESS>To<EMAIL_ADDRESS>Message Hash: 70c8bcb6a869ef6f52916c422799a6dedeef3cf873ece1272d3380b21e8f6163

Message ID<EMAIL_ADDRESS>Reply To: _N/A_

UTC Datetime: 1998-06-07 19:46:03 UTC

Raw Date: Sun, 7 Jun 1998 12:46:03 -0700 (PDT)

## Raw message

```
{% raw  %}From: John Young<EMAIL_ADDRESS>Date: Sun, 7 Jun 1998 12:46:03 -0700 (PDT)
To<EMAIL_ADDRESS>Subject: PGP International Accused
Message-ID<EMAIL_ADDRESS>MIME-Version: 1.0
Content-Type: text/plain

There are accusations from Russia and France that
PGP International and Network Associates are
improperly and probably illegally refusing downloads
of PGP to legitimate users.

   http://jya.com/pgpi-x-ru.htm

   http://jya.com/nai-x-fr.htm

Phil Zimmermann and the companies have been asked
by the plaintiffs to explain why public affirmations of open
access are contradicted by illegal restrictions.

Could this be due to pressure from US agencies or
legal counsel to comply with covert directives of the
nations to restrict access or pay the price of being
denied markets?

Maybe this is the way the Stewart Baker policy of encryption
duplicity is being spread from NSA to the marketeers: Public
assurances of concern and covert arrangements with authority
to assure perpetuation of national security lockdown.

{% endraw %}
```

## Thread

+ Return to [June 1998](/archive/1998/06)

+ Return to "[John Young <jya@pipeline.com>](/authors/john_young_jya_at_pipeline_com_)"

+ 1998-06-07 (Sun, 7 Jun 1998 12:46:03 -0700 (PDT)) - PGP International Accused - _John Young<EMAIL_ADDRESS>


text:
## AAS - ASCII Adjust AL After Subtraction
> Operation

``` slim
IF 64-bit mode
    THEN
        #UD;
    ELSE
        IF ((AL AND 0FH) > 9) or (AF = 1)
            THEN
                AX <- AX – 6;
                AH <- AH – 1;
                AF <- 1;
                CF <- 1;
                AL <- AL AND 0FH;
            ELSE
                CF <- 0;
                AF <- 0;
                AL <- AL AND 0FH;
        FI;
FI;
```

Opcode | Instruction | Op/En | 64-bit Mode | Compat/Leg Mode | Description
-------| ----------- | ----- | ----------- | --------------- | -----------
3F     | AAS | NP | Invalid | Valid | ASCII adjust AL after subtraction.

### Instruction Operand Encoding
Op/En  | Operand 1  | Operand 2  | Operand 3  | Operand 4
------ | ---------- | ---------- | ---------- | ---------
NP  | N/A  | N/A  | N/A  | N/A

### Description
Adjusts the result of the subtraction of two unpacked BCD values to create a unpacked BCD result. The AL register
is the implied source and destination operand for this instruction. The AAS instruction is only useful when it follows
a SUB instruction that subtracts (binary subtraction) one unpacked BCD value from another and stores a byte
result in the AL register. The AAA instruction then adjusts the contents of the AL register to contain the correct 1-
digit unpacked BCD result.

If the subtraction produced a decimal carry, the AH register decrements by 1, and the CF and AF flags are set. If no
decimal carry occurred, the CF and AF flags are cleared, and the AH register is unchanged. In either case, the AL
register is left with its top four bits set to 0.

<aside class="notice">
This instruction executes as described in compatibility mode and legacy mode. It is not valid in 64-bit mode
</aside>

### Flags Affected
The AF and CF flags are set to 1 if there is a decimal borrow; otherwise, they are cleared to 0. The OF, SF, ZF, and
PF flags are undefined.

### Protected Mode Exceptions
  ||
--------- | ------
**`#UD`**         |            If the LOCK prefix is used.

### Real-Address Mode Exceptions
Same exceptions as protected mode.

### Virtual-8086 Mode Exceptions
Same exceptions as protected mode.

### Compatibility Mode Exceptions
Same exceptions as protected mode.

### 64-Bit Mode Exceptions
  ||
--------- | ------
**`#UD`**         |            If in 64-bit mode.


text:
# Changelog

## 1.11.6 (2023-07-18)

* Fixes
  * Use `sha256` instead of `sha` when validating RSA signing supportability, thanks to [@pavledjo](https://github.com/pavledjo); see [#142](https://github.com/potatosalad/erlang-jose/pull/142).

## 1.11.5 (2022-12-16)

* Fixes
  * Remove dependency on `parse_transform` for `jose_base64` and `jose_base64url`.

## 1.11.4 (2022-12-15)

* Enhancements
  * Add support for native `crypto` operations for Ed25519 and Ed448, thanks to [@brettbeatty](https://github.com/brettbeatty); see [#123](https://github.com/potatosalad/erlang-jose/pull/123).
  * Add support for native `crypto` operations for ChaCha20-Poly1305 and XChaCha20-Poly1305, when available.
  * Add support for `libsodium` operations for XChaCha20-Poly1305, when available.
  * Add support for [`thoas`](https://github.com/lpil/thoas) JSON encode/decode, thanks to [@michaelklishin](https://github.com/michaelklishin); see [#126](https://github.com/potatosalad/erlang-jose/pull/126).
  * Add support for `ES256K` which uses the `secp256k1` curve and `RS1` signatures (see [291dbb8](https://github.com/potatosalad/erlang-jose/commit/291dbb86fb5e5c71a8395b3f68c16f31f8bd06db)).
  * Add support for ECDH-1PU `JOSE.JWK.box_encrypt_ecdh_1pu` and ECDH-ES `JOSE.JWK.box_encrypt_ecdh_es` and document the deprecated `JOSE.JWK.box_encrypt`.
  * Add support for ECDH-SS `JOSE.JWK.box_encrypt_ecdh_ss`.
  * Hide `kty` field when inspecting `%JOSE.JWK{}` strict, thanks to [@spencerdcarlson](https://github.com/spencerdcarlson); see [#139](https://github.com/potatosalad/erlang-jose/pull/139)
* Fixes
  * Version mismatch causing `rebar3` to constantly try to update; see [#122](https://github.com/potatosalad/erlang-jose/pull/122).
  * Fix Ed25519 and Ed448 key DER/PEM encode/decode for OTP 25.
  * Fix Ed25519ctx, Ed25519ph, Ed448, and Ed448ph when dealing with contexts so the implementation matches [IETF RFC 8032](https://datatracker.ietf.org/doc/html/rfc8032).
  * Drop direct usage of `crypto:hmac/4`, thanks to [@thalesmg](https://github.com/thalesmg); see [#136](https://github.com/potatosalad/erlang-jose/pull/136)
  * Replace incorrect usage of `-include_lib` with `-include`, thanks to [@Richiban](https://github.com/Richiban); see [#140](https://github.com/potatosalad/erlang-jose/pull/140)
  * Update the CI jobs so they actually run the Elixir tests, thanks to [@moogle19](https://github.com/moogle19); see [#137](https://github.com/potatosalad/erlang-jose/pull/137)
  * Change the `master` branch to `main`.

## 1.11.3 (2022-08-28) - unreleased

* This version was never actually released, but was referenced for a while on the `master` branch (see [43d3db4](https://github.com/potatosalad/erlang-jose/commit/43d3db467f909bbc932bd663ddcb1af93180dfd3)).

## 1.11.2 (2021-08-06)

* Fixes
  * Add compatability with OTP 24

## 1.11.1 (2020-12-23)

* Fixes
  * Fix compatibility with older OTP versions
  * Fix AES detection on OTP 23
  * Fix AES GCM bugs on OTP 23

## 1.11.0 (2020-11-24)

* Fixes
  * Add compatability layer to fix deprecated `crypto` functions.
  * Use `:extra_applications` instead of `:applications` (bumps Elixir requirement to `~> 1.4`).
  * Conditionally compile `Poison` modules used for testing.

## 1.10.1 (2020-01-08)

* Fixes
  * Add PEM/DER compatibility layer for PKCS-8 incompatibilities with various versions of OTP, `crypto`, and `public_key`; see [#82](https://github.com/potatosalad/erlang-jose/issues/82)

## 1.10.0 (2020-01-03)

* Enhancements
  * Remove [base64url](https://github.com/dvv/base64url) dependency and include embedded version.
  * Add support for `C20P` and `XC20P` encryption based on [draft-amringer-jose-chacha](https://tools.ietf.org/html/draft-amringer-jose-chacha-01) (ChaCha20/Poly1305 and XChaCha20/Poly1305).
  * Add support for ECDH-ES keywrapping for AES-GCM, ChaCha20/Poly1305, and XChaCha20/Poly1305.
  * Add support for PBES2 keywrapping for AES-GCM, ChaCha20/Poly1305, and XChaCha20/Poly1305.
  * Add support for `ECDH-1PU` encryption based on [draft-madden-jose-ecdh-1pu](https://tools.ietf.org/html/draft-madden-jose-ecdh-1pu-02).
  * Add support for reading/writing DER format (or PKCS8 format).

* Fixes
  * Fix PSS salt length (thanks to [@ntrepid8](https://github.com/ntrepid8), see [#65](https://github.com/potatosalad/erlang-jose/pull/65))
  * Speed up and stabilize tests on CI environment.

## 1.9.0 (2018-12-31)

* Enhancements
  * Add support for [Jason](https://github.com/michalmuskala/jason) JSON encoding and decoding.
  * Add support for Poison 4.x and lexical ordering.
  * Use `public_key` over `cutkey` for RSA key generation if available.
  * Drop support for older versions of OTP (19+ now required).
  * Relicense library under MIT license.

* Fixes
  * Add macro so the application compiles without warnings after `erlang:get_stacktrace/0` has been deprecated.
  * Extra sanity check for RSA padding modes when falling back.

## 1.8.4 (2017-05-18)

* Enhancements
  * Add support for reading and writing PEM files for Ed25519, Ed448, X25519, and X448 keys based on [draft-ietf-curdle-pkix](https://tools.ietf.org/html/draft-ietf-curdle-pkix).
  * Add support for [ojson](https://github.com/potatosalad/erlang-json) adapter for encoding/decoding JSON.

## 1.8.3 (2017-03-30)

* Fixes
  * Regression fix from 1.8.2 for OTP-17 (thanks to [@alexandrejbr](https://github.com/alexandrejbr), see [#35](https://github.com/potatosalad/erlang-jose/issues/35) and [#36](https://github.com/potatosalad/erlang-jose/pull/36))

## 1.8.2 (2017-03-15)

* Enhancements
  * Add support for decoding firebase certificate public keys (thanks to [@noizu](https://github.com/noizu), see [#30](https://github.com/potatosalad/erlang-jose/issues/30))

* Fixes
  * Fix cross-platform issues with EC signatures (specifically S and R sizes, thanks to [@alexandrejbr](https://github.com/alexandrejbr), see [#32](https://github.com/potatosalad/erlang-jose/pull/32))
  * Typo in documentation for `JOSE.encode/1` (thanks to [@DaveLampton](https://github.com/DaveLampton), see [#31](https://github.com/potatosalad/erlang-jose/issues/31))

* Tests
  * Tested against OTP 19.3, Elixir 1.4.x, and Poison 3.x

## 1.8.1 (2017-02-02)

* Fixes
  * Parentheses to remove ambiguity on Elixir 1.4 [#26](https://github.com/potatosalad/erlang-jose/pull/26), thanks [@alexandrubagu](https://github.com/alexandrubagu)

## 1.8.0 (2016-08-08)

* Enhancements
  * ChaCha20/Poly1305 encryption and one-time message authentication functions are experimentally supported based on [RFC 7539](https://tools.ietf.org/html/rfc7539).

* Fixes
  * Handling invalid token without raising Exception [#22](https://github.com/potatosalad/erlang-jose/issues/22)
  * `JOSE.JWT.verify` uses CPU intensively when signed is nil [#23](https://github.com/potatosalad/erlang-jose/issues/23)

Examples of new functionality:

```elixir
iex> # Encrypt
iex> jwe = %{"alg" => "dir", "enc" => "ChaCha20/Poly1305"}
iex> jwk = JOSE.JWE.generate_key(jwe) |> JOSE.JWK.to_map |> elem(1)
%{"alg" => "dir", "enc" => "ChaCha20/Poly1305", "k" => "EffEuY2nbShIVtizmek8AuR7ftSuY2e8XRxGjMc8QAc", "kty" => "oct", "use" => "enc"}
iex> plain_text = "message to encrypt"
iex> encrypted = JOSE.JWK.block_encrypt(plain_text, jwk) |> JOSE.JWE.compact |> elem(1)
"eyJhbGciOiJkaXIiLCJlbmMiOiJDaGFDaGEyMC9Qb2x5MTMwNSJ9..lbsERynEgQS8CRXZ.D_kt8ChsaYWX9gL9tJlJ2n0E.y0o_TYjGlaB9sEEcA9o12A"

iex> # Decrypt
iex> plain_text == JOSE.JWK.block_decrypt(encrypted, jwk) |> elem(0)
true

iex> # Sign
iex> jws = %{"alg" => "Poly1305"}
iex> jwk = JOSE.JWS.generate_key(jws) |> JOSE.JWK.to_map |> elem(1)
%{"alg" => "Poly1305", "k" => "2X-OZVLA41Wy7mAjqWRaZyOw8FLyL3O3_f8d16D_-tQ", "kty" => "oct", "use" => "sig"}
iex> message = "message to sign"
iex> signed = JOSE.JWK.sign(message, jwk) |> JOSE.JWS.compact |> elem(1)
"eyJhbGciOiJQb2x5MTMwNSIsIm5vbmNlIjoicGExU1dlQzJVQzhwZlQ1NCJ9.bWVzc2FnZSB0byBzaWdu.IUI-PvN5bh_9jX-MeDtetw"

iex> # Verify
iex> JOSE.JWK.verify_strict(signed, ["Poly1305"], jwk) |> elem(0)
true
```

## 1.7.9 (2016-07-13)

* Fixes
  * Fixed JSON encoding bug in `jose_json_poison_compat_encoder` for projects using Poison as the JSON encoder where Erlang loads Elixir as a dependency.

## 1.7.8 (2016-07-08)

* Enhancements
  * Updated EdDSA tests to comply with draft 04 of [draft-ietf-jose-cfrg-curves-04](https://tools.ietf.org/html/draft-ietf-jose-cfrg-curves-04).

* Fixes
  * Fixed compression encoding bug for `{"zip":"DEF"}` operations (thanks to [@amadden734](https://github.com/amadden734) see [potatosalad/ruby-jose#3](https://github.com/potatosalad/ruby-jose/pull/3))

## 1.7.7 (2016-06-30)

* Enhancements
  * Improved handling of RSA private keys in SMF (Straightforward Method) form to CRT (Chinese Remainder Theorem) form, see [#19](https://github.com/potatosalad/erlang-jose/issues/19)  This is especially useful for keys produced by Java programs using the `RSAPrivateKeySpec` API as mentioned in [Section 9.3 of RFC 7517](https://tools.ietf.org/html/rfc7517#section-9.3).
  * Updated EdDSA operations to comply with draft 02 of [draft-ietf-jose-cfrg-curves-02](https://tools.ietf.org/html/draft-ietf-jose-cfrg-curves-02).

Example RSA SMF to CRT usage:

```erlang
%% The following map of an RSA secret key is in SMF (Straightforward Method) form.
%% Notice that we only have d, e, and n for this secret key.
JWK = jose_jwk:from(#{
  <<"d">> => <<"WSAGFGM7fSyYn5NyBL0dp3kjHjQ3djjhQoOAFasoyeE">>,
  <<"e">> => <<"AQAB">>,
  <<"kty">> => <<"RSA">>,
  <<"n">> => <<"0PM6Aooi_KYkDA1r-S24SauFpfTRc5kiPLF3a1EhuY8">>
}).

%% If we convert it back to a map, it is now in CRT (Chinese Remainder Theorem) form.
%% Notice that the dp, dq, p, q, and qi have been restored.
element(2, jose_jwk:to_map(JWK)) =:= #{
  <<"d">> => <<"WSAGFGM7fSyYn5NyBL0dp3kjHjQ3djjhQoOAFasoyeE">>,
  <<"dp">> => <<"G00J545ym1bqC9hnFDo3aQ">>,
  <<"dq">> => <<"tt0FvEZgKli6IL4rVKx3cw">>,
  <<"e">> => <<"AQAB">>,
  <<"kty">> => <<"RSA">>,
  <<"n">> => <<"0PM6Aooi_KYkDA1r-S24SauFpfTRc5kiPLF3a1EhuY8">>,
  <<"p">> => <<"9O5YQ0w6PIpDl6c6yqwyKQ">>,
  <<"q">> => <<"2mScgy86M3q6b301UAU09w">>,
  <<"qi">> => <<"Wrp0SgcGgTT5WmeuHD6Sqw">>
}.
```

## 1.7.6 (2016-06-29)

* Fixes
  * Compatibility fixes for OTP 19 and Elixir 1.3

## 1.7.5 (2016-05-13)

* Fixes
  * Removed leftover development file accidentally included in last release.

## 1.7.4 (2016-05-13)

* Enhancements
  * More detailed documentation on [key generation](https://hexdocs.pm/jose/key-generation.html).

* Fixes
  * Replaced usage of `crypto:rand_bytes/1` with `crypto:strong_rand_bytes/1` in preparation for Elixir 1.3 and OTP 19 (thanks to [@asonge](https://github.com/asonge) for [#17](https://github.com/potatosalad/erlang-jose/pull/17)).

## 1.7.3 (2016-03-17)

* Fixes
  * `JOSE.JWT.encrypt/2` now uses `JOSE.JWK.block_encryptor/1` properly.

## 1.7.2 (2016-03-16)

* Enhancements
  * Better support for lists of terms.
  * Added merge functions:
    * `JOSE.JWE.merge/2`
    * `JOSE.JWK.merge/2`
    * `JOSE.JWS.merge/2`
    * `JOSE.JWT.merge/2`
  * Added signer, verifier, and block_encryptor functions:
    * `JOSE.JWK.signer/1`
    * `JOSE.JWK.verifier/1`
    * `JOSE.JWK.block_encryptor/1`
  * Support for `"alg"`, `"enc"`, and `"use"` on keys.

Examples of new functionality:

```elixir
iex> # Let's generate a 64 byte octet key
iex> jwk = JOSE.JWK.generate_key({:oct, 64}) |> JOSE.JWK.to_map |> elem(1)
%{"k" => "FXSy7PufOayusvfyKQzdxCegm7yWIMp1b0LD13v57Nq2wF_B-fcr7LDOkufDikmFFsVYWLgrA2zEB--_qqDn3g", "kty" => "oct"}

iex> # Based on the key's size and type, a default signer (JWS) can be determined
iex> JOSE.JWK.signer(jwk)
%{"alg" => "HS512"}

iex> # A list of algorithms for which this key type can be verified against can also be determined
iex> JOSE.JWK.verifier(jwk)
["HS256", "HS384", "HS512"]

iex> # Based on the key's size and type, a default enctypro (JWE) can be determined
iex> JOSE.JWK.block_encryptor(jwk)
%{"alg" => "dir", "enc" => "A256CBC-HS512"}

iex> # Keys can be generated based on the signing algorithm (JWS)
iex> JOSE.JWS.generate_key(%{"alg" => "HS256"}) |> JOSE.JWK.to_map |> elem(1)
%{"alg" => "HS256", "k" => "UuP3Tw2xbGV5N3BGh34cJNzzC2R1zU7i4rOnF9A8nqY", "kty" => "oct", "use" => "sig"}

iex> # Keys can be generated based on the encryption algorithm (JWE)
iex> JOSE.JWE.generate_key(%{"alg" => "dir", "enc" => "A128GCM"}) |> JOSE.JWK.to_map |> elem(1)
%{"alg" => "dir", "enc" => "A128GCM", "k" => "8WNdBjXXwg6QTwrrOnvEPw", "kty" => "oct", "use" => "enc"}

iex> # Example of merging a map into an existing JWS (also works with JWE, JWK, and JWT)
iex> jws = JOSE.JWS.from(%{"alg" => "HS256"})
iex> JOSE.JWS.merge(jws, %{"typ" => "JWT"}) |> JOSE.JWS.to_map |> elem(1)
%{"alg" => "HS256", "typ" => "JWT"}
```

## 1.7.1 (2016-03-08)

* Enhancements
  * New [Edwards-curve Digital Signature Algorithm (EdDSA) version 04](https://tools.ietf.org/html/draft-irtf-cfrg-eddsa-04) is out, update test vectors and remove support for 32 byte secrets for Ed448 and Ed448ph.

## 1.7.0 (2016-03-01)

* Enhancements
  * Add support for [libdecaf](https://github.com/potatosalad/erlang-libdecaf) NIF which provides support for;
    * `Ed25519`
    * `Ed25519ph`
    * `Ed448`
    * `Ed448ph`
    * `X25519`
    * `X448`

* Fixes
  * Return 56 bytes instead of 57 bytes when converting between edwards448 and curve448.
  * EdDSA related refactoring/cleanup.

## 1.6.1 (2016-02-05)

* Enhancements
  * Add support for NIF version of [keccakf1600](https://github.com/potatosalad/erlang-keccakf1600) library with `jose_sha3_keccakf1600_nif` (version 2 and up) for even faster SHA-3 operations.

## 1.6.0 (2016-01-20)

* Enhancements
  * Add `Ed448` and `Ed448ph` standards from [draft-irtf-cfrg-eddsa](https://tools.ietf.org/html/draft-irtf-cfrg-eddsa).
  * Add support for [keccakf1600](https://github.com/potatosalad/erlang-keccakf1600) library with `jose_sha3_keccakf1600` for faster SHA-3 operations.
  * Many, many more tests.

* Fixes
  * Fix pure Erlang implementation of SHA-3 algorithms.

## 1.5.2 (2016-01-19)

* Enhancements
  * Documentation of the encryption algorithms, specifically [`JOSE.JWE`](https://hexdocs.pm/jose/JOSE.JWE.html).

* Fixes
  * Corrected optional callbacks issue for Elixir.
  * More consistent behavior for ECDH related encryption and decryption.

## 1.5.1 (2016-01-16)

* Fixes
  * Corrected formatting on some of the documentation.
  * Fixed optional callbacks for `jose_jwk_kty:sign/3`

## 1.5.0 (2016-01-16)

* Enhancements
  * Support [OKP](https://tools.ietf.org/html/draft-ietf-jose-cfrg-curves) key type with the following curves:
    * `Ed25519` (external [libsodium](https://github.com/potatosalad/erlang-libsodium) or fallback supported)
    * `Ed25519ph` (external [libsodium](https://github.com/potatosalad/erlang-libsodium) or fallback supported)
    * `X25519` (external [libsodium](https://github.com/potatosalad/erlang-libsodium) or fallback supported)
    * `Ed448` (no external, no fallback)
    * `Ed448ph` (no external, no fallback)
    * `X448` (no external, but fallback supported)
  * Support [SHA-3](https://en.wikipedia.org/wiki/SHA-3) functions for future use with `Ed448` and `Ed448ph`.
  * Add `jose_jwk:shared_secret/2` for computing the shared secret between two `EC` or `OKP` keys.

## 1.4.2 (2015-11-30)

* Enhancements
  * Support [PKCS#8](https://www.openssl.org/docs/manmaster/apps/pkcs8.html) formatted private key PEM files. See #13

* Fixes
  * Add missing guards in `jose_jws:sign/4` #11
  * Add missing guards in `jose_jwe:block_encrypt/5`

## 1.4.1 (2015-11-18)

* Enhancements
  * Added `JOSE.JWS.peek_signature/1` for inspecting the signature parts of a signed binary.
  * `JOSE.JWS.compact/1` and `JOSE.JWS.expand/1` now work with signed lists.
  * First pass at documenting all of the major `JOSE` modules. `JOSE.JWE` still needs more examples. Closes #7

* Fixes
  * Fix infinite loop on `JOSE.JWE.key_decrypt/3` when no `"enc"` has been specified.
  * Fix various functions on `JOSE.JWE` that would fail due to `JOSE.JWE.from_record/1` on wrong terms.

## 1.4.0 (2015-11-17)

* Enhancements
  * Added `JOSE.unsecured_signing/0` and `JOSE.unsecured_signing/1` for disabling the `"none"` algorithm due to the [unsecured signing vulnerability](https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/) and in relation to #10
  * Added `JOSE.JWK.verify_strict/3`, `JOSE.JWS.verify_strict/3`, and `JOSE.JWT.verify_strict/3` for whitelisting which signing algorithms are allowed for verification.
  * Added `JOSE.JWT.peek_payload/1` and `JOSE.JWT.peek_protected/1` for inspecting the payload and protected parts of a signature.

## 1.3.0 (2015-09-22)

* Enhancements
  * `oct` key management (see `JOSE.JWK.from_oct/1,2`)
  * Key generation functions for `EC`, `RSA`, and `oct` keys (see `JOSE.JWK.generate_key/1`)
  * Add `JOSE.JWK.box_encrypt/2` which generates an ephemeral private key based on the given key curve.
  * Add support for detecting OTP version 18 and up with optional_callbacks.
  * Document key generation under `examples/KEY-GENERATION.md`
  * jiffy and jsone JSON support
  * Begin documenting the Elixir API (thanks to #8)
  * Add support for `jose_jws:peek/1` and `jose_jwt:peek/1`
  * Preparations for future upstream OTP crypto changes.
    * Improved detection of AES CBC, ECB, and GCM support.
    * Improved detection of RSAES-OAEP, RSAES-PKCS1-v1_5, RSASSA-PKCS1-v1_5, and RSASSA-PSS support.
    * Implemented fallback RSAES-PKCS1-v1_5 and RSASSA-PKCS1-v1_5 algorithms.
    * Improved selection of encryptor for oct keys.
    * Improved algorithm support detection for jose_jwa.

* Fixes
  * Remove "sph" from jose_jws (removed from [JWS Unencoded Payload Option](https://tools.ietf.org/html/draft-ietf-jose-jws-signing-input-options-02)).

* Tests
  * Only run 1 in 10 for AES GCM and 1 in 5 for AES KW CAVP test vectors to speed up tests.
  * Additional tests for RSAES-PKCS1-v1_5 and RSASSA-PKCS1-v1_5 algorithms.

## 1.2.0 (2015-08-14)

* Enhancements
  * Add RSA PKCS-1 algorithms to support detection.
  * Add support for `crypto_fallback` option to enable/disable non-native cryptographic algorithms.
  * Add support for `json_module` option for encoding/decoding of JSON.

* Fixes
  * Fix AES GCM algorithm for non 96-bit IV values.
  * Allow RSA OAEP to specify Seed on encrypt.

* Tests
  * NIST and EMC test vectors for AES, PKCS-1, and PKCS-5.
  * Concat KDF, PBKDF1, and PKCS-7 Padding informal verification.
  * AES Key Wrap informal verification with NIST test vectors.

## 1.1.3 (2015-08-10)

* Fixes
  * Missed a case where jose was not starting automatically (see 1.1.2).

## 1.1.2 (2015-08-10)

* Enhancements
  * Automatically start jose if one of the fallback algorithms is required.

## 1.1.1 (2015-08-07)

* Fixes
  * Fix bit sizes for A128CBC-HS256, A192CBC-HS384, and A256CBC-HS512 algorithms.
  * Don't precompute the GHASH table (speeds up AES GCM fallback on OTP 17).
  * Use case statement instead of map pattern matching for block_decrypt (fixes map pattern matching bug on OTP 17).
  * Allow mostly empty EC keys to be converted back to JSON.
  * Add jose_jwk_props property test for full algorithm range of encryption and decryption.

## 1.1.0 (2015-08-06)

* Enhancements
  * Detect supported `crypto` AES ciphers and use fallbacks when necessary.
  * Detect EC key mode (to support OTP 17.5).
  * Mostly pure Erlang implementation of AES GCM and GHASH functions.
  * Add `JOSE.JWA` module for Elixir.

* Fixes
  * All tests now pass on OTP 17.5 and OTP 18.
  * Fallback to non-native crypto implementations for OTP 17.5.

## 1.0.1 (2015-08-05)

* Dependencies
  * Use [`base64url`](https://hex.pm/packages/base64url) package from hex.pm

## 1.0.0 (2015-08-05)

* Initial Release

* Algorithm Support
  * JSON Web Encryption (JWE) [RFC 7516](https://tools.ietf.org/html/rfc7516)
    * `"alg"` [RFC 7518 Section 4](https://tools.ietf.org/html/rfc7518#section-4)
      * `RSA1_5`
      * `RSA-OAEP`
      * `RSA-OAEP-256`
      * `A128KW`
      * `A192KW`
      * `A256KW`
      * `dir`
      * `ECDH-ES`
      * `ECDH-ES+A128KW`
      * `ECDH-ES+A192KW`
      * `ECDH-ES+A256KW`
      * `A128GCMKW`
      * `A192GCMKW`
      * `A256GCMKW`
      * `PBES2-HS256+A128KW`
      * `PBES2-HS384+A192KW`
      * `PBES2-HS512+A256KW`
    * `"enc"` [RFC 7518 Section 5](https://tools.ietf.org/html/rfc7518#section-5)
      * `A128CBC-HS256`
      * `A192CBC-HS384`
      * `A256CBC-HS512`
      * `A128GCM`
      * `A192GCM`
      * `A256GCM`
    * `"zip"` [RFC 7518 Section 7.3](https://tools.ietf.org/html/rfc7518#section-7.3)
      * `DEF`
  * JSON Web Key (JWK) [RFC 7517](https://tools.ietf.org/html/rfc7517)
    * `"alg"` [RFC 7518 Section 6](https://tools.ietf.org/html/rfc7518#section-6)
      * `EC`
      * `RSA`
      * `oct`
  * JSON Web Signature (JWS) [RFC 7515](https://tools.ietf.org/html/rfc7515)
    * `"alg"` [RFC 7518 Section 3](https://tools.ietf.org/html/rfc7518#section-3)
      * `HS256`
      * `HS384`
      * `HS512`
      * `RS256`
      * `RS384`
      * `RS512`
      * `ES256`
      * `ES384`
      * `ES512`
      * `PS256`
      * `PS384`
      * `PS512`
      * `none`

repository: potatosalad/erlang-jose

gha_language: Erlang

repo_name: potatosalad/erlang-jose


text:
<!-- id: 53674279 -->

You can launch containers through the ordinary XNAT UI.

First, a command must be added to your XNAT, and its wrapper must be enabled in your project.

SCREENSHOT Page with Run containers menu

Inside the Run Containers menu are all the different command wrappers that can be used to launch a container with the object you are viewing.

SCREENSHOT Open Run containers menu, show some wrappers inside

Click on one of those command wrappers, and you will be presented with a Launch Container dialog. Here you can provide or customize the values of various arguments that will be used to launch the container.

SCREENSHOT Launch container dialog

After you submit, the container will be launched.

## A note on scan-level launching

Some command wrappers are configured to launch on a particular scan. There is no User Interface in any existing XNAT version to launch containers from these command wrappers, because there are no buttons on the scan listings that can be customized in this way.

However, there is an XNAT plugin that can provide this function: the [selectable table plugin](https://bitbucket.org/xnatdev/selectable-table-plugin). You can download this plugin jar (from the [downloads page](https://bitbucket.org/xnatdev/selectable-table-plugin/downloads/) in the repo) and install it into your XNAT. It will customize the scan tables and enable you to launch any command wrappers that are defined to launch on scans. You can even launch in bulk on multiple scans at once.

SCREENSHOT Scan table with selectable table installed

repository: NrgXnat/container-service

gha_language: Java

gha_license_id: NOASSERTION

repo_name: NrgXnat/container-service


text:
## Fun Day at Googs LA!

## I left at 5am

- Took a train and two buses to Googs LA.
  However, I was early, and met up with a guy who works for LA city
  as an Applications developer. We had breakfast together and he gave
  me some good information about opportunities coming up, and about
  his experience working for the city.

## Then we went over to Googs.

- Their curriculum improved 1000%. It was more technical,
  more focused, and definitely more for engineers, which was great.

## I got there early...

- so I got a present! A collectible. Probably goes to my parents or my brother.

- I'm trying to keep the amount of "stuff" I have to a minimum. But boy is he cute! :)

## Look who I ran into!!

- It's Freddy!!! Wut? Yes, the lovable dog at Googs!
  If you ever see him, be sure to say hi!
  He was so happy to see me, he licked my face! :)

## A Whack a Mole-demo

- Engineer Anthony showed us an application he made to show Kubernetes
  and a whack a mole scenario.

- The cluster goes down...and then an entire node goes down

- The node that is running distributes the clusters that were on the failed node.

## Break and treats!

- Cupcakes!

## Also, Scaling using App Engine.

- Anthony's application where we logged on and watched it scale dynamically,
  as we hit the server. This happened in a space of a few seconds.

## Still scaling

## This is neat..machine learning for video

- Anthony showed us a demo of a video that was created for Googs Home.
  Basically, this API was able to detect images in the video and
  what they were (so Computer Vision) and the time stamp at which they
  occurred during the video. Very useful for batch video editing and archiving.

## Afterwards

- I made two friends, one of whom is from JPL. We went out afterwards for
  Ramen! It was wonderful! I had a really great day today!

## Things to work on

- Pretty much finish up my game and submit. I'm almost there.
  One more function and test test test. Submit, clean up any things
  they desire, etc. Hard deadline is next Thursday.

## Katas

- If number is odd, return num, else return 2 * num

```
function pocketMoney(number){
  if (number % 2 == 0){
    return 2 * number
  }
  else{
    return number
  }
}
```
- Remove the item completely if it occurs more than once in a list.
  Then sum the items in the list. Solved in Python using count.

```
def sum_no_duplicates(l):
    arr = []
    total = 0
    for i in l:
     g = l.count(i)
     if g == 1:
       arr.append(i)

    for i in arr:
      total = total + i
    return total
```

- Take all lowercase vowels in a string and uppercase them

```
def swap(st):
    arr = []
    s = list(st)
    for i in s:
      if i == 'a':
        arr.append('A')
      elif i == 'e':
        arr.append('E')
      elif i == 'i':
        arr.append('I')
      elif i == 'o':
        arr.append('O')
      elif i == 'u':
        arr.append('U')
      else:
        arr.append(i)
    return ''.join(arr)
```
- Round result to two places.
  Actually was failing one input, but
  when I refreshed the random cases, it passed.
  Also, randomly, it was available in C sharp, Java,
  and Python, and by the time I passed the kata,
  it was only available to be solved in Java and C sharp :)
  Even stranger is that it says I solved it in Java.
  This is not Java...

```
def round_to_2_decimal_places(n):
    from decimal import Decimal
    return float(round(Decimal(n), 2))
```
- This was a really badly written one, but I passed the tests

```
def reverse_sentence(sentence):
    arr = []
    a = sentence.split(" ")
    b = a[::-1]
    return ' '.join(b)
```
- Hamming Distance (binary).
  Say you have a string '110' and another '101'.
  The changes if you walked from the first digit
  to the last of each when compared would be
  2. One to change the second 1 to zero and the third
  0 to 1 (or vice versa). Devise a formula for this.

```
def hamming_distance(a, b):
    # Your code here
  total = 0
  for i, j in zip(a, b):
                if i != j:
                        total += 1
  return total
```


text:
# ${MementoSection}

Replace [`Section`][1] with `${MementoSection}` and [`SectionEnd`][2] with [`${MementoSectionEnd}`][3]
for sections that whose state should be remembered by Memento.

For sections that should be unselected by default, use `${MementoSection}`'s
brother - [`${MementoUnselectedSection}`][4].

Sections that don't already have an identifier must be assigned one.

Section identifiers must stay the same across

## Syntax

    ${MementoSection} [section_name] [section_index_output]

## Example

    !include Memento.nsh

    !define MEMENTO_REGISTRY_ROOT HKLM
    !define MEMENTO_REGISTRY_KEY Software\Microsoft\Windows\CurrentVersion\Uninstall\MyProgram

    Function .onInit
        ${MementoSectionRestore}
    FunctionEnd

    Function .onInstSuccess
        ${MementoSectionSave}
    FunctionEnd

    ${MementoSection} "name" "some_id"
        ; some code...
    ${MementoSectionEnd}

    SectionGroup /e group

        ${MementoSection} croc sec_croc
            ; some code...
        ${MementoSectionEnd}

        ${MementoSection} cow sec_cow
            ; some code...
        ${MementoSectionEnd}

    SectionGroupEnd

    ${MementoUnselectedSection} dinosaur sec_dinosaur
        ; some code...
    ${MementoSectionEnd}

    ${MementoSectionDone}

## Credits

Written by [kichik][5]

[1]: ../../Commands/Section.md
[2]: ../../Commands/SectionEnd.md
[3]: MementoSectionEnd.md
[4]: MementoUnselectedSection.md
[5]: http://nsis.sourceforge.net/User:Kichik

license: Zlib

repository: NSIS-Dev/Documentation

gha_language: JavaScript

repo_name: NSIS-Dev/Documentation


text:
# nullc
[![Build Status](https://travis-ci.org/WheretIB/nullc.svg)](https://travis-ci.org/WheretIB/nullc)
[![Build status](https://ci.appveyor.com/api/projects/status/3xt4fr4s8pja2chn?svg=true)](https://ci.appveyor.com/project/WheretIB/nullc)
[![codecov.io](http://codecov.io/github/WheretIB/nullc/coverage.svg?branch=master)](http://codecov.io/github/WheretIB/nullc?branch=master)
[![Coverity Scan](https://scan.coverity.com/projects/6629/badge.svg)](https://scan.coverity.com/projects/wheretib-nullc)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/ee1882a970074461847d999ed6fd642f)](https://app.codacy.com/project/WheretIB/nullc/dashboard)
[![Language grade](https://img.shields.io/lgtm/grade/cpp/g/WheretIB/nullc.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/WheretIB/nullc/context:cpp)

---
nullc is a C-like embeddable programming language with advanced features such as function overloading, operator overloading, class member functions and properties, automatic garbage collection, closures, coroutines, local functions, type inference, runtime type information, modules, list comprehension, enums, namespaces, generic functions and classes.

Language is type-safe and memory-safe.

nullc library can execute code on a VM or translate it to x86 code for fast execution. It can also translate nullc files into C source files.

This repository builds multiple additional tools:
* nullcl - a tool to compile nullc source files into a binary module, C source files or an executable (using gcc).
* nullcexec - a tool to execute nullc source files.
* nullc_ide - a simple text editor with code colorizing and simple debug compatibilities (including remote debugging for applications that execute nullc scripts).
* nullc_lang_server - a language server implementation for integration with IDEs
* nullc_lang_debugger - a debug adapter that also includes language runtime for execution of nullc programs
* nullc_lang_client - a Visual Studio Code extension adapter that includes nullc_lang_server and nullc_lang_debugger

## March 2019 Update ##

Core:
 * New two-phase (parse/analyze) compiler
 * Improved syntax and expression trees
 * Parse error recovery with multiple error reports
 * Partial analyzer error recovery
 * Extended constant evaluation
 * Additional SSA intermediate representation with optimization passes
 * Improved source location tracking
 * Language improvements:
   * Member functions defined inside class body have access to complete class definition
   * Local function external variables are captures the same way in global code, functions and coroutines: when they go out of scope
   * Support for partial type inference when only parts of target type are marked as generic
   * Support for explicit type casts
   * Variable can be defined inside an 'if' condition
   * Class accessors can be used in modify-assignment expressions
   * enum constants can reference previous constants
   * Conditional expression will find common type between arrays of different explicit size
 * Compiler fixes:
   * Numerical unary operations can no longer be performed on 'auto ref' pointers
   * Read-only array size and type members can't be changed using member functions
   * Local classes can't be used after owning scope has ended
   * Fixed missing class constructor calls
   * Fixed alignment of function pointers
   * Fixed type inference for for-each iterator values
   * Fixed lookup of names inside a namespace
   * Fixed variable visibility after shadowing of said variable has ended
   * Fixed integer literal value overflow
 * Runtime fixes:
   * Fixed crash on external function calls with non-zero terminated character arrays

Misc:
 * Fixed translation to C++
 * VS Code extension with language server and debugger
 * arm and arm64 support
 * External function calls are handled by dyncall library on all supported platforms (x86, x64, arm, arm64, powerpc)

Interface:
 * Support for multiple module search paths
 * Log file output control
 * Optimization level control

## Changes in 2015 ##

Core:
  * Improved type inference in short inline functions

Misc:
  * Fixed bugs, crashes and hangs in the compiler found by extensive fuzz-testing
  * Fixed compilation with gcc and clang on x86/x64
  * dyncall library can be used to perform external function calls

## Changes in 2013 ##

Core:
  * 'explicit' function argument types to opt-out from implicit conversions in overload resolution
  * function overload resolution based on function return type

Misc:
  * std.string module for string operations
  * std.event module for C#-style event handlers
  * Android support (armeabi, armeabi-v7a and x86 targets)

Interface:
  * nullcGetGlobalType to get nullc type id by name

## Changes in 2012 ##
Changes from 0.9 tag

Core:
  * Type inheritance
  * Generic function specialization
  * Generic functions with explicit type specification
  * Generic type specializations for a different number of template parameters
  * Static 'if' in class body
  * Named function arguments
  * Extended typeof expression improvements
  * Allocation of any type using 'new' expression
  * Nested comments
  * Numerous bug fixes

Misc:
  * Run-time type introspection improvements
  * Wrapper for binding class member functions and class members from C++.

## November 19, 2010 ##
Changes from 0.8b to 0.9

Core:
  * [Short inline function definition syntax with extended type inference](http://svn.assembla.com/svn/SuperCalc/LanguageEN.html#funcshort)
  * [Generic functions](http://svn.assembla.com/svn/SuperCalc/LanguageEN.html#generic)
  * [Extended typeof syntax](http://svn.assembla.com/svn/SuperCalc/LanguageEN.html#typeof_ext)
  * [Static if](http://svn.assembla.com/svn/SuperCalc/LanguageEN.html#static_if)
  * [Improved type inference](http://svn.assembla.com/svn/SuperCalc/LanguageEN.html#typeauto)
  * [Pointers to overloaded operators](http://svn.assembla.com/svn/SuperCalc/LanguageEN.html#funcoperators)
  * [Generic types](http://svn.assembla.com/svn/SuperCalc/LanguageEN.html#classgeneric)
  * [Object finalization](http://svn.assembla.com/svn/SuperCalc/LanguageEN.html#finalize)
  * [Automatic class constructor call](http://svn.assembla.com/svn/SuperCalc/LanguageEN.html#classconstructor)
  * [Array index operator can have any number of arguments](http://svn.assembla.com/svn/SuperCalc/LanguageEN.html#funcoperators)
  * [Additional object construction code](http://svn.assembla.com/svn/SuperCalc/LanguageEN.html#constructor)
  * Modify-assign operators %= <<= >>= &= |= ^=
  * [|| or && operator overloads with short-circuiting support](http://svn.assembla.com/svn/SuperCalc/LanguageEN.html#funcoperators)
  * [Numeric constants inside a class](http://svn.assembla.com/svn/SuperCalc/LanguageEN.html#classes)
  * bool type
  * ["in" binary operator](http://svn.assembla.com/svn/SuperCalc/LanguageEN.html#funcoperators)
  * [Non-generic class forward declaration](http://svn.assembla.com/svn/SuperCalc/LanguageEN.html#classforward)
  * [enum](http://svn.assembla.com/svn/SuperCalc/LanguageEN.html#enum)
  * User class usage as conditions in if/for/while/do while/switch expressions
  * [namespaces](http://svn.assembla.com/svn/SuperCalc/LanguageEN.html#namespace)

Misc:
  * [Updated std.vector](http://svn.assembla.com/svn/SuperCalc/LanguageEN.html#std_vector)
  * [Updated std.list](http://svn.assembla.com/svn/SuperCalc/LanguageEN.html#std_list)
  * [Added std.hashmap](http://svn.assembla.com/svn/SuperCalc/LanguageEN.html#std_hashmap)

SuperCalc:
  * Redo support
  * Persistent undo

**Translation to C doesn't work in this version, use 0.8**

## September 18, 2010 ##
Changes from 0.7 to 0.8b

Core:
  * List comprehension
  * Coroutine can be used as a generator in for each expression.
  * JiT executor supports dynamic code linking and evaluation

Misc:
  * Automatic function binding under gcc and msvs.

Interface:
  * Added nullcIsStackPointer and nullcIsManagedPointer.
  * Added nullcGetFunction and nullcSetFunction.

## June 18, 2010 ##
Changes from 0.6b to 0.7:

Core:
  * Coroutines
  * Compile-time function evaluation
  * Better structure compatibility with C
  * Type constructor can be called in new expression.
  * added auto`[``]` type - an array with implicit size and element type. Helps GC when pointer contains objects of unspecified type.
  * nullptr can be assigned to type`[``]`
  * Various GC fixes and performance improvements
  * VM speedup

Misc:
  * Linux x86/x64 support
  * PS3 support
  * Documentation update

Interface:
  * Debug break actions: step over, step into, step out.
  * Global memory limit can be set
  * Further translation to C improvements

SuperCalc:
  * Added watch
  * Debug improvements: step over, step into, step out, module source code load

## May 14, 2010 ##
Changes from 0.5 to 0.6b:

Core:
  * Stack overflow exception handling in JiT
  * x86 asm optimization
  * Function override
  * eval() (VM-only)
  * Translation of NULLC code into C++ code
  * Support for unary operator +, -, ! and ~ overloading.
  * NULLC function call when executor is running
  * NULLC function call by pointer
  * NULLC function call with parameters
  * Functions with variable argument count
  * Function call of auto ref type redirection to target type
  * Ability to define arrays of non-stack types char, short and float
  * Default function argument values are exported and imported
  * Operators can be defined and overloaded in functions and classes

Misc:
  * x64 support
  * Digitalmars C++ compiler support
  * NULLC can compile code containing characters with codes over 0x7f

Interface:
  * Debugging features (call stack, stack frame contents, breakpoints (VM-only))
  * Functions for fast execution result retrieval as numeric values
  * nullcSetGlobal and nullcGetGlobal functions.
  * JiT executor parameter stack placement can be specified
  * NULLC\_NO\_EXECUTOR define that compiles NULLC without executors

SuperCalc:
  * Remote debugging

repository: WheretIB/nullc

repo_name: WheretIB/nullc


text:
## UnitOfWorkPatternDotNet.EntityFramework

Two (extremely) lightweight UoW implementations for Entity Framework.

### License

*UnitOfWorkPatternDotNet.EntityFramework* is licensed under the [*Microsoft Public License (MS-PL)*](http://www.microsoft.com/en-us/openness/licenses.aspx).

### Getting Started

[*UnitOfWorkPatternDotNet.EntityFramework* is available on NuGet](https://www.nuget.org/packages/UnitOfWorkPatternDotNet.EntityFramework).

You'll probably want [*RepositoryPatternDotNet.EntityFramework*](https://github.com/taspeotis/RepositoryPatternDotNet.EntityFramework) as well. Among other things, it can help with unit testing. Read about it below.

### Usage

*UnitOfWorkPatternDotNet.EntityFramework* implements *UnitOfWorkPatternDotNet* for Entity Framework.

You can use either `EntityFrameworkUnitOfWork` (which implements `IUnitOfWork`) or `EntityFrameworkAsyncUnitOfWork` (which implements `IAsyncUnitOfWork`).

    public class IApplicationContext : IAsyncUnitOfWork
    {
        DbSet<Cat> Cats { get; }
        DbSet<Dog> Dogs { get; }
    }

    public class ApplicationContext : EntityFrameworkAsyncUnitOfWork, IApplicationContext
    {
        public DbSet<Cat> Cats { get; set; }
        public DbSet<Dog> Dogs { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            // ...
        }
    }

Simply use `IApplicationContext` wherever you need to perform data access:

    using (IApplicationContext applicationContext = GetApplicationContext())
    {
        Console.WriteLine("I have {0} animals",
            applicationContext.Cats.Count() + applicationContext.Dogs.Count());

        // ... insert/update/delete animals

        await applicationContext.CommitAsync();
    }

### Unit Testing

Come time for unit testing, you may have difficulty faking `DbSet<T>`. Instead of using `DbSet<T>` on your context's interface, you can add a layer of abstraction. A generic repository pattern works well in these circumstances.

[*RepositoryPatternDotNet*](https://github.com/taspeotis/RepositoryPatternDotNet) provides this abstraction, and [*RepositoryPatternDotNet.EntityFramework*](https://github.com/taspeotis/RepositoryPatternDotNet.EntityFramework) provides an implementation for Entity Framework.

You can also use your own abstractions and implementations with *UnitOfWorkPatternDotNet.EntityFramework*.

license: MS-PL


text:
# E-Commerce-Back-End

## Description
This is a project to display knowledge of creating tables and relationships through sequelize

## Usage
use various API routes to ad, remove, and get data on products, tags, and categories.

API calls work as follows:
    GET all ``/api/{data}``,
    GET by id ``api/{data}/:id``,
    POST data ``api/{data}``,
    DELETE data ``api/{data}/:id``

Videos:
[Postman_Routes](https://github.com/Trhines/E-Commerce-Back-End/blob/main/videos/

## License
MIT License

Copyright (c) 2021 Trenton Rhines

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

 IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

repository: Trhines/E-Commerce-Back-End

repo_name: Trhines/E-Commerce-Back-End


text:
# MissingNonLocalizedDrawableCrash
Demo project showing what happens when you don't provide non-localized fall-back drawables (crashes!)

Neither Android Studio nor Lint will flag this. As a result, it's easy to end up with production error reports like this:

android.content.res.Resources$NotFoundException: Resource ID #0x7f02005d
	at android.content.res.Resources.getValue(Resources.java:1343)
	at android.content.res.Resources.getDrawable(Resources.java:819)
	at android.content.res.Resources.getDrawable(Resources.java:799)
	at android.content.Context.getDrawable(Context.java:403)

This happens because some users can have a device language which does not match an apps localized drawables. The algorithm for resource selection falls back to using non-localized resources so Android Studio or Lint really should try to catch this problem up-front.

This demo application includes a drawable for Danish so everything compiles, with no Lint warnings and no Google Play deployment warnings - yet it crashes horrible on anything but a Danish device.


text:
# What does this do?

This script downloads every image it can find from an imagefap gallery, simply specify a gallery and itll begin its download

( ͡° ͜ʖ ͡°)

# Disclaimer

I do not own nor am i afiliated with imagefap, this is just a script to help people get way too much porn

# How do i get this?

[Download Python](https://www.python.org/downloads/release/python-352/)


text:
# `v0.3.20210220`

- module updates:

  - 3023ddc7a88fe228d4662e7fcc274ce154ac2a23: code: add Quoted helper for easier escaping
    Use it in:

    - instapaper
    - reddit2org
    - reddit_all
    - stackexchange
    - vkfavs

  - 4fdb0a815e3fea187cd715e1277711f3807024ad: stackexchange/github: adapt to newer HPI

  - 2fbe94fc43f4c5cc83e827f88a972250d7be7867: vk: reflect HPI updates

- misc

  - CI updates & tox config cleanup, use `hpi module install`

# before `v0.2.20200608`

I used to keep it in [Github releases](https://github.com/karlicoss/orger/releases).
However I realized it's means promoting a silo, so now it's reflected in this file (and only copied to github releases page).

repository: karlicoss/orger

gha_language: Python

repo_name: karlicoss/orger


text:
If you are coming by car, you will need to get a parking permit. To do so, follow the instructions below:

- Go to [cuboulder.pmreserve.com](https://cuboulder.pmreserve.com/).
- Select **HackCU** event
- Add permit to cart. It will say that cost is $10, don't panic though. We got you!
- Enter promo code **HACK4207**. Total should go down to $0.
- Press **Continue to checkout**.
- Fill all the details asked (including vehicle details).
- Print permit and remember to bring it with you during the event! Don't worry if you forget to do so, we can print the permit at the venue itself as well.

Be sure to follow directions on the signs indicating where you can park. **Parking outside of green areas on the map are not valid for the issued permit!!**

![SEEC Parking](/assets/img/res/parking.png)

repository: HackCU/pages

repo_name: HackCU/pages


text:
---
layout: post
title: Dates in Stata
---

Change annual data into monthly:

```
use population.dta
keep if statename=="Michigan"
expand 12
by year, sort: gen month = _n
gen monthly_date = mofd(mdy(month, 1, year))
format monthly_date %tm
* Each year's population is recorded for month 7
replace population = . if inlist(month, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12)
* Interpolate/extrapolate
ipolate population monthly_date, epolate generate(population_ep)
```


text:
## Installation

Copy the file `localization.swift` into your project and you should be good to go.

## Usage

Once added, make sure that you have the `lproj` files ready and all the translations in the place.

You can use it in the following manner.

```
aTextLabel.text = "The string to be localized".aLocalized
```

## Contributing

1. [Fork it](https://github.com/niennonno/Swifty-Localisation/fork)
2. Create your feature branch `git checkout -b my-new-feature`
3. Commit your changes `git commit -am 'Add some feature'`
4. Push to the branch `git push origin my-new-feature`
5. Create a new Pull Request

repository: niennonno/Swifty-Localisation

repo_name: niennonno/Swifty-Localisation


text:
Cloudera Manager => Slack integration

This script needs to be placed at the server who has CM installed, maybe /opt/slack/cm2slack.py is a good choice. Permissions have to be executable for the CM user (mostly cloudera-scm).

CM integration:
https://www.cloudera.com/documentation/enterprise/5-6-x/topics/cm_ag_alert_script.html


text:
---
title: Hoisting in javascript
date: 2021-08-17
published: true
tags: ['js','hoisting']
description: "what is hoisting in javascriipt"
layout: layouts/post.njk
---

Hoisting means to be able to access variables and call a function that is declared down below without any error.

When javascript program is executed a execution context is created. There are two components in execution context, the variable environment and thread of execution.

The function execution happens in two phases,
  1. Memory creation phase.
  2. Code execution phase.

In the memory creation phase as soon as it encounters the varialbe assignment "undefined" is assigned to the variable. When the javascript engine encounters the function declaration, it literally assigns the function code to it. This happens even before the code execution phase and it explains hoisting.

``` js
console.log(abc); // undefined
var abc = 10;
```

``` js
console.log(def); // undefined
var def = function() {
  alert("def");
}
```

``` js
console.log(ghi); // f ghi() { console.log("ghi") }
function ghi() {
  console.log("ghi");
}
```
In the first and second code examples, variables `abc` and `def` are assigned `undefined` in the memory creation phase, which is why it logs undefined in the code execution phase and doesn't error out. In the third code example `ghi` is assigned the literal function code in the memory creation phase, which is why during the code execution phase the literal function code is logged to the console.

`const` and `let` declarations are also hoisted but they are not hoisted like `var` declarations. `const` and `let` declarations are hoisted but they are in the temporal dead zone. `const` and `let` are also allocated memory in the memory creation phase  but they are present in different memory space.

Temporal Dead Zone is the time between the let and const declarations being assined undefined and being assigned a value.

Accessing let and const before initialization is a Reference error
``` js
console.log(a); //  Reference error
let a;
a = 10;
```

Redeclaration is a syntax error
``` js
let a = 10;
let a = 100;
```

repository: RakshithNM/rbsblog

repo_name: RakshithNM/rbsblog


text:
# ES-Query

Lets you run queries against ElasticSearch in the same format they show up in the
ElasticSearch documentation.

## Please note this extention has been abandoned in favor of a new extention that has been authored by ria.
```
ext install elastic
```

## Features
> Simply select text in your current document and either right-click "Execute ElasticSearch Query"
or use the hotkey `ctrl/cmd + shift + e`

```
GET _cat/indices
```

```
POST /messages/inbox
{
  "from": "bob",
  "message": "Hello World!"
}
```

![Demo](images/demo.gif)

## Extension Settings

This extension contributes the following settings:

* `esQuery.execute`: Execute selected text as query
* `esQuery.setHost`: Set/Change ElasticSearch host (workspace setting)

## Known Issues

## Release Notes

### 0.0.6

* fixed query string bug
* error message handling enhancement by ([YusukeHosonuma] (https://github.com/jitcoder/es-query/pull/7))

### 0.0.5

* Added query information to results pane  ([Reported Issue](https://github.com/jitcoder/es-query/issues/1))

### 0.0.1

Initial Release

## Upcoming Features

* Multi-line selected text
* Autocomplete/Intellisense
* Query validation

repository: jitcoder/es-query

gha_language: TypeScript

repo_name: jitcoder/es-query


text:
Welcome to Movie Finder

<!-- @import "[TOC]" {cmd="toc" depthFrom=1 depthTo=6 orderedList=false} -->

<!-- code_chunk_output -->

- [**Aim**](#aim)
- [**UX**](#ux)
- [**Target Audience**](#target-audience)
- [**Features**](#features)
- [**Technologies Used**](#technologies-used)
- [**Testing**](#testing)
  - [Responsiveness](#responsiveness)
  - [Page Load Time](#page-load-time)
  - [Code Validation](#code-validation)
- [**Deployment**](#deployment)
- [**Credits**](#credits)
  - [Media](#media)
  - [Fonts](#fonts)

<!-- /code_chunk_output -->

## **Aim**

The look for the Movie Finder website

![Website](.../../images/Website%20preview.jpg)

## **UX**

* The site is designed for users to find movie video trailers by searching for the movie title.
* The Movie Database API was used to fetch the information from their extensive database of movies.
* Corresponding movies with their trailer videos are retrieved from Youtube

## **Target Audience**

1. Movie lovers who want to search for movie trailers or reviews published on Youtube

## **Features**

* Search for movie title to get videos on the movie like trailers, reviews
* Get updates on top-rated, popular and upcoming movies

## **Technologies Used**
* HTML, CSS, Javascript, jQuery
* [Bootstrap](https://getbootstrap.com/)
* [VS Code IDE](https://code.visualstudio.com/)
* [The Movie Database API](https://developers.themoviedb.org/3/getting-started/introduction)
* Embedded [Youtube](https://www.youtube.com) videos

## **Testing**

### Responsiveness
* Website was tested for responsiveness using a Chrome extension: [Viewport Resizer - Responsive Testing Tool](https://chrome.google.com/webstore/detail/viewport-resizer-%E2%80%93-respon/kapnjjcfcncngkadhpmijlkblpibdcgm)

### Page Load Time
* Website was tested using [Pingdom Website Speed Test](https://tools.pingdom.com/) and achieved a **B** rating with a score of **87/100**, load time was fast at **470ms**

![Website Speed Test](.../../images/website%20speed%20test.jpg)

### Code Validation

* Website passed the series of code validation from [W3C Developer Tools](https://w3c.github.io/developers/tools/).

* Nu Html Checker
![Nu Html Checker](images/Nu%20Html%20Checker.png)

* Link Checker
![Link Checker](images/Link%20Checker.png)

* W3C Internationalization Checker
![W3C Internationalization Checker](images/W3C%20Internationalization%20Checker.png)

* CSS Validator
![CSS Validator](images/Css%20Validator.png)

## **Deployment**

Using Git and Github for version control and commits under [Github](https://github.com/mrjohnchen/movie-app)

* Local download using [Zip](https://github.com/mrjohnchen/movie-app/archive/master.zip) file
* Linking to local IDE via cloning of [respository](https://github.com/mrjohnchen/movie-app.git)

## **Credits**

### Media
* Background image from [Unsplash](https://unsplash.com/photos/jLRIsfkWRGo) by @karenzhaocn

### Fonts
* Fonts from [FontLibrary](https://fontlibrary.org/)

repository: mrjohnchen/movie-app

repo_name: mrjohnchen/movie-app