text:
# Agones Allocator Service

If you are not familiar with the GameServerAllocation concept, check the documentation from the official Agones website.

- https://agones.dev/site/docs/reference/gameserverallocation/

>A GameServerAllocation is used to atomically allocate a GameServer out of a set of GameServers. This could be a single Fleet, multiple Fleets, or a self managed group of GameServers.

- https://agones.dev/site/docs/advanced/allocator-service/

> Agones provides an mTLS based allocator service that is accessible from outside the cluster using a load balancer. The service is deployed and scales independent to Agones controller.
  To allocate a game server, Agones in addition to GameServerAllocations , provides a gRPC service with mTLS authentication, called agones-allocator.

## Allocation Rules using the Agones Allocator Service

If you are running the director using `mode=agones`, the allocation rules will be slightly different.
The criteria used for allocation will be based on the labels `region` and `world`. Whenever a gameserver is `Ready` it is eligible for allocation. Therefore, the player capacity is going to be ignored.

## Certificates

The most important part of the setup when using the Agones Allocator service is the correct configuration of the certificates.

There is a very detailed explanation of how this can be setup on the Agones website https://agones.dev/site/docs/advanced/allocator-service/.

Check the [hack/get_certificates.sh](/hack/get_certificates.sh) script if you have installed Agones using Helm

## Update Manifests

Update the [/deploy/install.yaml](/deploy/install.yaml) to reflect the role you want the director to assume. By default the Director will use the Octops Discover service. You will find a commented block with proper instructions.

Running the Director and using the Agones Allocator service require the following manifest modifications:

Set the proper container arguments
```yaml
# Adjust the indentation if required for your manifest
  - image: octops/agones-openmatch:latest
    name: director
    args:
    - --mode=agones
    - --interval=1s
    - --key=/tls/crt/tls.key
    - --cert=/tls/crt/tls.crt
    - --cacert=/tls/ca/tls-ca.crt
    - --allocator-host=<IP_ADDRESS> # IP of the exposed Agones Allocator Service
    - --allocator-port=30304 # PORT of the exposed Agones Allocator Service
    - --verbose
```

Mount the volumes storing the TLS information. Check the [hack/get_certificates.sh](/hack/get_certificates.sh) script if you have installed Agones using Helm.

```yaml
# Adjust the indentation if required for your manifest
      volumeMounts:
        - name: tls-crt
          mountPath: /tls/crt
        - name: tls-ca
          mountPath: /tls/ca
  volumes:
    - name: tls-crt
      secret:
        secretName: allocator-tls-crt
    - name: tls-ca
      secret:
        secretName: allocator-tls-ca
```

## Fleet Autoscaling

If you have enough capacity on the environment you are running your game servers, you may consider [Fleet Autoscaling](https://agones.dev/site/docs/reference/fleetautoscaler/).

## Demo

This is a five minutes demo that shows all the matchmaking components interacting together and matches allocated to game servers using the [Agones Allocator Service](https://agones.dev/site/docs/advanced/allocator-service/).

Video: https://youtu.be/UkUP44QgfFE


text:
A framework for building optimization modules to boost the performances of your AI systems

---

**Documentation**:  docs.nebuly.com/

---

`Nebullvm` is a framework for building the optimization modules needed to optimize the performances of your AI systems. The optimization modules are stack-agnostic and work with any library. They are designed to be easily integrated into your system, providing a quick and seamless boost to its performance. Simply plug and play to start realizing the benefits of optimized performance right away.

If you like the idea, give us a star to show your support for the project ⭐

## **What can this help with?**

There are multiple modules we actually provide built on top of the framework:

✅ [Speedster](https://github.com/nebuly-ai/nebuly/blob/main/optimization/speedster): Automatically apply the best set of SOTA optimization techniques to achieve the maximum inference speed-up on your hardware.

✅ [OpenAlphaTensor](https://github.com/nebuly-ai/nebuly/tree/main/optimization/open_alpha_tensor): Increase the computational performances of an AI model with custom-generated matrix multiplication algorithm fine-tuned for your specific hardware.

✅ [Forward-Forward](https://github.com/nebuly-ai/nebuly/tree/main/optimization/forward_forward): The Forward Forward algorithm is a method for training deep neural networks that replaces the backpropagation forward and backward passes with two forward passes.

## Next modules and roadmap
We are actively working on incorporating the following modules, as requested by members of our community, in upcoming releases:

- [ ]  [CloudSurfer](https://github.com/nebuly-ai/nebuly/blob/main/optimization/cloud_surfer): Automatically discover the optimal cloud configuration and hardware on AWS, GCP and Azure to run your AI models.
- [ ]  [OptiMate](https://github.com/nebuly-ai/nebuly/blob/main/optimizatione/optimate): Interactive tool guiding savvy users in achieving the best inference performance out of a given model / hardware setup.

## Contributing
As an open source project in a rapidly evolving field, we welcome contributions of all kinds, including new features, improved infrastructure, and better documentation. If you're interested in contributing, please see the [linked](https://docs.nebuly.com/contributions) page for more information on how to get involved.

---

  Join the community |
  Contribute to the library

repository: nebuly-ai/nebuly

branch_name: refs/heads/main

extension: md

gha_language: Python

license_type: permissive

repo_name: nebuly-ai/nebuly


text:
# Read:01 Summary
## Shay Howe’s intro to RWD (Summary)
> RWD : refers to Responsive Web Design
* The growth of mobile Internet usage is also far out pacing that of general Internet usage growth .

***With the growth in mobile Internet usage comes the question of how to build websites suitable for all users ??? .***

* The industry response to this question has become responsive web design, also known as RWD.
> Responsive web design is the practice of building a website suitable to work on every device and every screen size, no matter how large or small, mobile or desktop.
* Responsive generally means to react quickly and positively to any change, while adaptive means to be easily modified for a new purpose or situation, such as change.
* With responsive design websites continually and fluidly change based on different factors, such as viewport width, while adaptive websites are built to a group of preset factors
* Mobile websites can be extremely light but they do come with the dependencies of a new code base and browser sniffing, all of which can become an obstacle for both developers and users.

***Responsive web design is broken down into three main components, including flexible layouts, media queries, and flexible media.***

> The formula is based around taking the target width of an element and dividing it by the width of it’s parent element. The result is the relative width of the target element.

> target ÷ context = result

* Flexible Grid : we can take all of the fixed units of length and turn them into relative units.
* Taking the flexible layout concept, and formula, and reapplying it to all parts of a grid will create a completely dynamic website, scaling to every viewport size
* The flexible layout approach alone isn’t enough .Specifically, when the layout gets too small, or too large, text may become illegible and the layout may begin to break.
* In this event, media queries can be used to help build a better experience.
* Media Queries : provide the ability to specify different styles for individual browser and device circumstances, the width of the viewport or device orientation for example. Being able to apply uniquely targeted styles opens up a world of opportunity and leverage to responsive web design.
* There are a couple different ways to use media queries, using the `@media` rule inside of an existing style sheet, importing a new style sheet using the `@import` rule, or by linking to a separate style sheet from within the HTML document.
* Logical operators in media queries help build powerful expressions. There are three different logical operators available for use within media queries, including `and`, `not`, and `only`.
* Knowing the media query syntax and how logical operators work is a great introduction to media queries but the true work comes with media features. Media features identify what attributes or properties will be targeted within the media query expression.
* One popular technique with using media queries is called `mobile first`. The `mobile first` approach includes using styles targeted at smaller viewports as the default styles for a website, then use media queries to add styles as the viewport grows.
* Using the `viewport` meta tag with either the `height` or `width` values will define the height or width of the viewport respectively.
* Viewport Scale : To control how a website is scaled on a mobile device, and how users can continue to scale a website.
* Flexible Media : The final, equally important aspect to responsive web design involves flexible media. As viewports begin to change size media doesn’t always follow suit. Images, videos, and other media types need to be scalable, changing their size as the size of the viewport changes.

## All About Floats (summary)
> Float: is a CSS positioning property so that images may be set into the page such that text wraps around them as needed.

***There are four valid values for the `float` property.*** ` Left` and `Right` float elements those directions respectively.`None` (the default) ensures the element will not float and `Inherit` which will assume the float value from that elements parent element.

> floats can be used to create entire web layouts.

* Float's sister property is `clear`. An element that has the clear property set on it will not move up adjacent to the float like the float desires, but will move itself down past the float.
* `Clear` ***has four valid values as well.*** `Both` is most commonly used, which clears floats coming from either direction. `Left ` and `Right` can be used to only clear the float from one direction respectively.` None` is the default, which is typically unnecessary unless removing a clear value from a cascade. `Inherit` would be the fifth, but is strangely not supported in Internet Explorer. Clearing only the left or right float, while less commonly seen in the wild, definitely has its uses.

## Don’t Overthink It Grids (summary)

> The vast majority of websites out there use a grid.

> If a more complex layout presents itself, people often reach for a grid framework.

* A block level element is as wide as the parent it's inside `(width: auto;)`.
* The hardest part about grids is `gutters`. So far we've made our grid flexible by using percentages for widths. We could make the math all complicated and use percentages for gutters as well.

## CSS Floats Explained By Riding An Escalator (summary)
* Your `<div>` is almost perfect. You decide to introduce some floats to fix the relationship between a few elements.
* There is a left flow and a right flow, and the elements that are not floated can easily fill the space that is not taken by the floated elements.
* the `float` property also gives an indication of an element’s relationship to surrounding elements.
* `Clear` :  allows elements to specify where they should align in comparison to the floated elements.
* One of the most frequent uses of the clear property is ` “clear:both” `. This allows you to reset the flow of elements, as opposed to continuing to maintain a right, left and normal flow.

## SMACSS Official Documentation (summary)
> SMACSS refers to scalable and modular architecture for css

> SMACSS is becoming one of the most useful contributions to front-end discussions in years

***It is a flexible guide for developing sites***

* SMACSS is more style guide than rigid framework. There is no library within here for you to download or install. There is no git repository for you to clone. SMACSS is a way to examine your design process and as a way to fit those rigid frameworks into a flexible thought process. It is an attempt to document a consistent approach to site development when using CSS.

license: MIT

branch_name: refs/heads/master


text:
[![](https://images.microbadger.com/badges/image/robertdebock/rundeck.svg)](http://microbadger.com/images/robertdebock/rundeck "Get your own image badge on microbadger.com")

# About this container.

[RUNDECK](http://rundeck.org/) is a (web) application to run commands on other hosts. It can be used to manage other (Linux) hosts.

RUNDECK about RUNDECK: Go Fast. Be Secure. Turn your operations procedures into self-service jobs. Safely give others the control and visibility they need.

This container will start an "empty" RUNDECK, but data can be saved, making the application persistent.

# Running this container.

This are the meaning of the different options:

|option|default value|usage|
|---|---|---|
|-p|4440|Any (TCP) port, you may want to map an external port to this local port using: "external:internal". (i.e. "8080:4440")|
|-e HOST|localhost|A host where the API can be found.|
|-e URL|http://localhost:4440|A URL where RUNDECK will be presented.|
|-e MYSQL_HOST|mysql|A host where MySQL can be found, the hostname or IP-address.|
|-e MYSQL_DATABASE|rundeck|The name of the MySQL database.|
|-e MYSQL_USER|rundeck|A user to connect to the database.|
|-e MYSQL_PASSWORD|rundeck|A password for the user to connect to the database.|
|-d|n.a.|Detach to the background.|
|robertdebock/docker-rundeck|n.a.|Refers to this container.|

This container works well with docker-compose: https://github.com/robertdebock/docker-compose-rundeck

# Persistent data.
Data in rundeck is saved to two locations:

- MySQL - The jobs and job history
- /var/log/rundeck - The logs for RUNDECK. Not required to be able to stop/start this container without loosing jobs.
- /var/rundeck - The projects and it's configurations are stored here, so required to stop/start this container without losing project details.
- /var/lib/rundeck/var/storage - The keystore is stored here.
- /var/lib/rundeck/logs - The logs are stored.

# Bastion hosts in RUNDECK.
RUNDECK has no built-in facility to manage hosts available behind a bastion-host. This Docker container contains an SSH client for this. Here is a way to work with these kind of hosts, be sure to modify these lines.

## Change the project.properties.
The file /var/rundeck/projects/${project}/etc/project.properties needs a few changes:

    resources.source.1.config.format=resourceyaml
    resources.source.1.config.file=/var/rundeck/projects/${project}/etc/resources.yaml
    project.ssh-keypath=/var/rundeck/projects/${project}/.ssh/id_rsa

## Create a resources.yaml.

    ${destinationhost}:
      description: The server you'd like to manage in RUNDECK
      tags: ''
      hostname: ${destinationhost}
      osArch: x86_64
      osFamily: unix
      osName: Linux
      osVersion: ''
      username: someusername
      node-executor: script-exec
      script-exec: /usr/bin/ssh -q -F /var/rundeck/projects/${project}/etc/ssh_config ${node.hostname} -- ${exec.command}

## Add ssh_config.

    Host *
      StrictHostKeyChecking no
      Port 1234
      User someusername
      ProxyCommand ssh -q -i /var/rundeck/projects/${project}/.ssh/id_rsa ${bastionhost} nc -w 180 %h %p
      IdentityFile /var/rundeck/projects/${project}/.ssh/id_dsa

repository: robertdebock/rundeck

gha_language: Shell

repo_name: robertdebock/rundeck


text:
# Celios

This project was developed during hatchlondon 2017.

Celios is a soil focused initative. Combining alerts to farmers, access to the knowledge to help them and implementation of smart contracts to assist funding of where soil needs recovery time.

## Team

Include all members of your team for the hack here:

* WizardOfAus

## Problem and Solution

*We specifically address Sustainable Development Goal #15 "Protect, restore and promote sustainable use of terrestrial ecosystems, sustainably manage forests, combat desertification, and halt and reverse land degradation and halt biodiversity loss". Although our solution is able to address other goals such as #2 also.*

In the past fourty years, the Earth has lost a third of arable land. Celios attempts to tackle this problem by giving information on soil degradation to farmers who are unable to afford to access the latest technology innovations such as satellites and microbes to combat pests. Celios gives farmers the opportunity to access information and help from 'citizen' (i.e. voluntary) farmers and scientists. A smart contract has also been included for further development of a staking and reward system for funding land use purposes (such as rent or future yields).

![alt text](http://www.fao.org/fileadmin/user_upload/soils/imgs/degradation_map/soil_compaction.jpg)

## Install and run this project

For the smart contract: install Ethereum Wallet and test it on Rinkeby Test Net. Refer to the Test net documentation for information on how to get test gas. Otherwise open on geth.

For the data cleaning aspect: install R and R studio to run the code. For more web interface, refer to the source of where the data is sourced: ftp://ftp.soilgrids.org/data/ and for a web interface with soilgrids: https://soilgrids.org/#!/?lon=114.25031657346551&lat=-21.788983024641396&zoom=5&layer=PHIHOX_M_sl5_250m&vector=1

For the web landing page and web app, open with HTML as a normal file.

repository: WizardOfAus/hatch-template-project

repo_name: WizardOfAus/hatch-template-project


text:
+++
# A Skills section created with the Featurette widget.
widget = "featurette"  # See https://sourcethemes.com/academic/docs/page-builder/
headless = true  # This file represents a page section.
active = true  # Activate this widget? true/false
weight = 30  # Order that this section will appear.

title = "Research topics"
# subtitle = "Our research interests"

# Showcase personal skills or business features.
#
# Add/remove as many `[[feature]]` blocks below as you like.
#
# For available icons, see: https://sourcethemes.com/academic/docs/page-builder/#icons

[[feature]]
  icon = "production_system"
  icon_pack = "custom"
  name = "Production systems & supply chain management"
  description = """
  - Energy system planning
  - Healthcare and humanitarian logistics
  - Process scheduling/ routing
  """

[[feature]]
  icon = "decision_making"
  icon_pack = "custom"
  name = "Decision making under uncertainty"
  description = """
  - Decision programming
  - Stochastic programming
  - Robust optimisation
  """

[[feature]]
  icon = "decomposition"
  icon_pack = "custom"
  name = "Efficient formulations and solution methods"
  description = """
  - Lagrangian-based decomposition methods
  - Cutting planes-based methods
  - Convexification techniques
  - Column Generation
  """

# Uncomment to use emoji icons.
# [[feature]]
#  icon = ":smile:"
#  icon_pack = "emoji"
#  name = "Emojiness"
#  description = "100%"

# Uncomment to use custom SVG icons.
# Place custom SVG icon in `assets/images/icon-pack/`, creating folders if necessary.
# [[feature]]
#  icon = "beach-sunset"
#  icon_pack = "custom"
#  name = "Surfing"
#  description = "90%"

+++

repository: Nikita-Belyak/Website

repo_name: Nikita-Belyak/Website


text:
# Security Policy

## Supported Versions

Moving forward, we will only be supporting version `1.x.x`, the new API of Gunrock.
All applications will be ported from version `0.5.x` to `1.x.x`. Please also see the build
status in the README.md file for important build information.

| Version | Supported          |
| ------- | ------------------ |
| 1.x.x   | :white_check_mark: |
| 0.5.x   | :x:                |

## Reporting a Vulnerability

If you have found a vulnerability, please use the GitHub issues to report it.

You may also file a fix for it using GitHub's pull requests. We will perform a code review,
and if everything is good, the fix will be merged into the repository.

repository: neoblizz/gunrock

gha_language: Cuda

repo_name: neoblizz/gunrock


text:
---
name: \U0001F680 Feature request
about: Suggest an idea for this project
labels: enhancement
---

<!--
To accelerate issue processing please search open and closed issues before submitting a new one.
Existing issues often contain information about workarounds, resolution, or progress updates.
-->

## Description
A clear and concise description of the problem or missing capability...

* What is missing?
* What is it useful for?
* Does this change impact existing behaviors? If so how?

## Relevant Package
This feature request is for [@dlr-eoc/....](https://github.com/dlr-eoc/ukis-frontend-libraries/packages)
Or if it is not fitting anywhere then a new @dlr-eoc/<name>

## Examples
Are there any examples in other projects that demonstrate this feature or enhancement?

### Describe alternatives you've considered
Have you considered any alternative solutions or workarounds?

repository: dlr-eoc/ukis-frontend-libraries

gha_language: TypeScript

repo_name: dlr-eoc/ukis-frontend-libraries


text:
# Declarative UI

## Overview

The purpose of the XVIZ Declarative UI is to enable developers to create interactive visuals using
configuration from a backend. The declarative UI system is designed to provide a simple and
extensible UI description system so that application developers can control what data is created and
independent of understanding the intricacies of a specific XVIZ client application.

## Data Model

Declarative UI data is a hierarchical structure of layout elements and components. Components make
up the majority of visuals with layout elements primarily providing information about how to
organize their contents and supplemental information about the contents.

![Data Model](./images/declarative-ui-data-model.png)

_UML diagram of the UI data model_

![Full UI Skeleton](./images/full-ui-skeleton.png)

_Example skeleton UI showing how the pieces fit together_

repository: hookex/xviz

gha_language: JavaScript

repo_name: hookex/xviz


text:
# Voting DApp Using Blockchain

Simple DApp that helps us conduct basic elections in afair manner using the blockchain technology. In early phases yet.

### What Does It Do?

* Ensures that each voter is verified before casting the vote and votes only once.
* All voters need to be connected to the Ethereum blockchain.
* A transaction fee is levied as casting of the vote which itself marks the vote being casted.

### Tech Stack:
* Node Package Manager(NPM)
* Truffle Suite
* Ganache
* Metamask extension
* Web3.js

### Usage:
* Clone the repository
* Install truffle suite globally

    `npm install -g truffle`

* Traverse to the cloned directory and run following commands

     `truffle develop`

     `compile`

     `migrate`

* Install Metamask browser extension
* Install and run Ganache and configure it to the ganache blockchain, which talks to the metamask at

 `localhost:7545`

* Go to the home of the cloned directory and run:

 `npm run dev`

### Future Goals:
* Implementing it on a real blockchain.
* Implementing an user authentication.

### Resources
* http://solidity.readthedocs.io/en/develop/index.html
* https://github.com/trufflesuite/truffle-contract
* https://github.com/ethereum/wiki/wiki/JavaScript-API
* https://github.com/ethereum/wiki/wiki/Ethereum-introduction


text:
# 1.3.3

* chore(npm): Upgrade outdated dev dependencies

# 1.3.2

* Upgrade `apidox` and dependents.

# 1.3.1

* Remove NPM shrinkwrapping.

# 1.3.0

* Fix NPM compatibility.

# 1.2.1

* Update repo of `batch` component.

# 1.2.0

* Remove `setMulti/getMulti/delMulti` in favor of multi-key-only support through `set/get/del`. Storage handlers will always receive multi-key input types.

# 1.1.1

* Upgrade `codeactual/is` to 0.1.3

# 1.1.0

* Rename `put*` to `set*`, `remove*` to `del*`.
* Replace LRUList() configuration object with [configurable.js](https://github.com/visionmedia/configurable.js/).
* Replace Default 100 entry limit with no limit.
* Add `setMulti`,  `getMulti`, `delMulti`, `has`, `delAll`.
* Add Serialization of list to the storage backend and keymap regeneration via `saveStruct` and `restoreStruct`.
* Fix shift() did not wait for storage deletion success before updating list.

# 1.0.0

* Add initial API and tests for `set`, `shift`, `get`, `del`, `keys`.

repository: npmcomponent/codeactual-lru-list

repo_name: npmcomponent/codeactual-lru-list


text:
# irc-helpers

[![Gem Version](https://badge.fury.io/rb/irc-helpers.png)](latest-version)

A collection of Modules and Classes to parse, generate and represent IRC
messages.

[latest-version]: http://badge.fury.io/rb/irc-helpers

## Description

First off, irc-helpers doesn't do any networking whatsoever. Instead it
implements the re-usable parts of an IRC framework or library. It parses,
generates and represents IRC messages (and parts of IRC messages).

irc-helpers is nicely namespaced so it can support various specifications of the
IRC protocol. At the moment only the standard desribed in [RFC2812](rfc2812) is
implemented.

[rfc2812]: https://tools.ietf.org/html/rfc2812

## Usage

Parsing IRC messages:

```ruby
message = IRC::RFC2812::Message.new ":britishtea PRIVMSG #ruby :Hi #ruby!"
message.command # => :privmsg
message.trail # => "Hi #ruby!"
message == "Hi #ruby!" # => true
```

Parsing parts of IRC messages

```ruby
prefix = IRC::RFC2812::Prefix.new<EMAIL_ADDRESS>prefix.nick # => "nick"

mask = IRC::RFC2812::Prefix.new "n?ck!user@*"
mask =~<EMAIL_ADDRESS># => true
```

Generating IRC messages:

```ruby
class Handler
  include IRC::RFC2812::Commands

  # ...

  def handle_ping(message)
    pong message.trail
  end

  # Always implement a #raw when including IRC::*::Commands.
  def raw(string)
    connection.write string
  end
end
```

Looking up numeric replies

```ruby
class Handler
  include IRC::RFC2812::Constants

  # ...

  def handle_message(message)
    if message.command == RPL_WELCOME
      "..."
    end
  end
end
```

Convenient!

## Installation

`gem install irc-helpers`

## Documentation

API documentation can be found here:
[http://britishtea.github.io/irc-helpers](documentation).

[documentation]: http://britishtea.github.io/irc-helpers/

## Contributing

- Write tests (using [cutest](cutest)).
- Write an implementation that passes the tests.
- Send a pull request.

[cutest]: https://github.com/djanowski/cutest

## LICENSE

See the LICENSE file.

repository: britishtea/irc-helpers

repo_name: britishtea/irc-helpers


text:
# bimodal

`bimodal` is an experiment in replacing `try`/`catch` boilerplate with an `[err, result]` array, inspired by [error return values in Go](https://gobyexample.com/errors).

## Installation
```bash
# npm
npm i --save bimodal

# yarn
yarn add bimodal
```

## Usage
```js
const bimodal = require('bimodal')

const [err, result] = await bimodal (fnThatMayThrowError, arg1, arg2, ...)
```

## Rationale

This is annoying:

```js
let result

try {
  result = await fnThatMayThrowError()
}
catch (err) {
  // ...
}

// use result
```

This is nicer:
```js
let [err, result] = await bimodal (fnThatMayThrowError)

if (err) {
  // ...
}

// use result
```

## What's it doing?

Not much:

```js
module.exports = async (fn, ...args) => {
  const channels = [undefined, undefined]

  try {
    channels[1] = await fn.apply(null, args)
  }
  catch (err) {
    channels[0] = err
  }
  finally {
    return channels
  }
}
```

repository: aiwebb/bimodal

repo_name: aiwebb/bimodal


text:
# Kotlin/JS Talk - React

Uses three custom React components with shared state to select a named color from [tailwind CSS](https://tailwindcss.com/).

## Run

```shell
./gradlew run
```

## Build

```shell
./gradlew build
```

repository: hpehl/kotlinjs-talk

repo_name: hpehl/kotlinjs-talk


text:
---
layout:     post
title:      "OpenMVS"
date:       2020-3-14
author:     Tong
catalog: true
tags:
    - Reconstruction
---

> [OpenMVS](https://github.com/cdcseacave/openMVS/wiki/Modules)

### [Accurate Multiple View 3D Reconstruction Using Patch-Based Stereo for Large-Scale Scenes](http://islab.ulsan.ac.kr/files/announcement/433/Accurate%20Multiple%20View%203D%20Reconstruction%20Using%20Pathch-Based%20Stereo%20for%20Large-Scale%20Scenes.pdf)

#### Stereo Pair Selection

- Given a reference image, we need to find out neighboring images to update the depth map of reference image.
  - The angle between principal view diretions of camera $$i$$ and $$j$$. ($$5^{\circ} < \theta_{ij} < 60^{\circ}$$)
  - The distance between optical centers.
    - We compute multiple $$d_{ij}$$ and their median $$\bar{d}$$. Then, we discard images whose $$d_{ij}>2\bar{d}$$ and $$d_{ij}<0.05\bar{d}$$.
    - At last, we choose the top $$10$$ images whose $$\theta_{ij}d_{ij}$$ are smallest.

#### Depth-Map Computation

- The __core idea__ is that for each pixel in the input image, we try to find a good support plane that has minimal aggregated matching cost (NCC) with the reference image.
- How do we initialize a plane for a pixel?
  - If neighboring images have already depth maps, their dpeth maps could be warped into the reference image and used to help initialize plane.
  - Otherwise, we firstly select a random depth for a pixel. Then, we assign the normal of the plane randomly in camera's spherical coordinate.
- Why do we initialize a plane for each pixel?
  - Once the plane is determined, we can compute the homography for the plane. The homography will be used to project pixels from one image into another. By that, we can compute NCC in a sqaure window ($$7\times7$$).
- Plane refinement (3 iterations)
  - At odd iterations, we start from the top-left pixel and travers in row wise order until we reach the bottom-right pixel.
  - At even iterations, we reverse the order to visit the pixel from the bottom-right to the top left pixel, also in row wise order.
  - At each iteration, each pixel has two operations, called _spatial propagation_ and _random assignment_.
- Spatial propagation
  - Purpose: Compare and propagate the planes of neighboring pixels to that of the current pixel.
  - Assumption: Neighboring pixels are very likely to have similar 3D planes especially for high resolution images.
  - In odd iterations,check left, upper, and upper-left neighbors.
  - In even iterations, check right, lower, and lower-right neighbors.
  - If neighbor's plane parameters lead to a lower NCC, replace the current ones with them.
- Random assignment
  - Purpose: Reduce the matching cost by testing several random plane parameters.
- We remove unreliable points in the depth-map whose aggregated matching costs are above a certain threshold (0.3).

#### Depth-Map Refinement

- Purpose: Enforce consistency over neighboring views.
- Project each pixel into neighbor images, then check if their depth values are close. We must find at least 2 consistent neighbors to retain the depth, otherwise discard it.

#### Depth-Map Merging

- Purpose: Remove redundant points and potential occluded points.
- If a viewray of pixel 1 is blocked by pixel 2's ray from another image, pixel 1 is potentially occluded.
- If the viewrays' end points (3D points) are close enough, they probably represent the same 3D point. Thus, we need to remove one of them from their depth map.
- All depth-maps are back projected into 3D, and merged into a single point cloud.


text:
# Multi Master kubernetes setup playbook

## Prerequisites | Important

Modify inventory/mycluster based on your needs. Definition/usages written at `usage` part.
## Installation

Guide to use this playbook in below sequence once `inventory/mycluster` is changed per need.

```bash
cd multi-master-kubernetes-ansible/
ansible-playbook -i inventory/mycluster etc-hosts-entry.yaml
ansible-playbook -i inventory/mycluster add-repository.yaml
ansible-playbook -i inventory/mycluster docker-setup.yaml
ansible-playbook -i inventory/mycluster pre-requisities-kubeadm.yaml
ansible-playbook -i inventory/mycluster kubernetes-setup.yaml
ansible-playbook -i inventory/mycluster firewall-setup.yaml
ansible-playbook -i inventory/mycluster cfssl-setup.yaml
ansible-playbook -i inventory/mycluster generate-etcd-certs.yaml
ansible-playbook -i inventory/mycluster etcd-prerequisite.yaml
ansible-playbook -i inventory/mycluster etcd-setup.yaml
ansible-playbook -i inventory/mycluster keepalived.yaml
ansible-playbook -i inventory/mycluster kubeadm-init-prep.yaml
ansible-playbook -i inventory/mycluster kubeadm-init-first-master.yaml
ansible-playbook -i inventory/mycluster kubeadm-init-other-master.yaml
ansible-playbook -i inventory/mycluster insecure-registry.yaml
ansible-playbook -i inventory/mycluster calico.yaml
ansible-playbook -i inventory/mycluster metallb-setup.yaml
ansible-playbook -i inventory/mycluster contour-setup.yaml

```

## Usage of inventory/mycluster file defined variables

```bash

[all:vars]

# Here shall go docker version which is planned for installation
docker_version=

impact at roles/docker-setup/tasks/main.yaml file.

# Here shall go kubernetes version which is planned for installation
kubernetes_version=

impact at roles/kubernetes-setup/tasks/main.yaml file.

# Here shall go kubernetes components version which is planned for installation
kubelet_version=
kubeadm_version=
kubectl_version=

impact at roles/kubernetes-setup/tasks/main.yaml file.

# Here shall go virtual_ip mentioned at check_apiserver.sh file  and control_plane_endpoint at config.yaml which is planned for installation
virtual_ip=

impact at roles/keepalived/templates/check_apiserver.sh file.
impact at roles/keepalived/templates/keepalived.conf file.

# Here shall go first master, second master, third master hostname which is planned for installation
first_master=
second_master=
third_master=

# Here shall go metallb system IP pool which is planned for installation
metallb_ip=

impact at roles/metallb-setup/templates/configmap.yaml file.

# Here shall go POD Network CIDR which is planned for installation
pod_network=

impact at roles/kubeadm-init-prep/templates/kubeadm-config.yaml file.

# Here shall go first master, second master, third master IP Address which is planned for installation
first_master_ip=
second_master_ip=
third_master_ip=

# Here shall go network interface card name of the platform which is planned for installation
network_interface=

impact at roles/keepalived/templates/keepalived.conf file.

# Here shall go first worker, second worker, third worker hostname which is planned for installation
first_worker=
first_worker_ip=
second_worker=
second_worker_ip=
third_worker=
third_worker_ip=

# Here shall go control_plane_endpoint at config.yaml which is planned for installation
kube_api_server=

impact at roles/keepalived/templates/check_apiserver.sh file.
```

## Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

## License
[MIT](https://choosealicense.com/licenses/mit/)


text:
---
layout: page
title: SoConnect User Guide
---

SoConnect is a **desktop app for SoC students to manage contacts of Professors and Teaching Assistants,
as well as to keep track of noteworthy events, optimized for use via a _Command Line Interface (CLI)_** while still having
the benefits of a _Graphical User Interface (GUI)_. If you can type fast, SoConnect can get your contact management tasks
done faster than traditional GUI apps.

This User Guide will help you to familiarise yourself with your SoConnect quickly and teach you the
full range of features it offers.

* Table of Contents
{:toc}

--------------------------------------------------------------------------------------------------------------------

## How to use SoConnect User Guide

* You can click on the titles in the Table of Contents to jump the section that you are interested in.
* You will find these icons in this user guide:
    * **:bulb: Tip** provides additional information that might be useful to you.
    * **:information_source: Note** provides supplementary information that helps you to understand this User Guide.
    * **:exclamation: Caution** cautions you against certain actions that will lead to undesirable consequences.
* You can find explanations of _italicised_ words in the [Glossary](#glossary).
* You can refer to the [Command Summary](#command-summary) for a complete overview of all SoConnect features and commands.

**:information_source: About the _Command Syntax_ format:**

* Words in `UPPER_CASE` are the _parameters_ that you will provide.

  e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.

* _Fields_ in square brackets are optional.

  e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.

* Fields with `…` after them can be used multiple times including zero times.

  e.g. `[t/TAG]…` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family`, etc.

* Parameters can be in any order.

  e.g. if the command specifies `n/NAME [p/PHONE_NUMBER]`, `[p/PHONE_NUMBER] n/NAME` is also acceptable.

* If a parameter is expected only once in the command, but you specified it multiple times, only the last occurrence of the parameter will be taken.

  e.g. if you specify `p/12341234 p/56785678`, only `p/56785678` will be taken.

* Extraneous parameters for commands that do not take in parameters (such as `help` and `exit`) will be ignored.

  e.g. if the command specifies `help 123`, it will be interpreted as `help`.

* Date and time must follow dd-MM-yyyy HH:mm format.
  e.g. if the date and time is 1 May 2021 6.30pm, you should specify it as `01-05-2021 18:30`

## Quick start

1. Ensure you have [Java 11](https://www.oracle.com/java/technologies/downloads/) or above installed in your Computer.

:bulb: **Tip:**

   [Here](https://www.java.com/en/download/help/version_manual.html) is how you can check the Java Version installed in your Computer.

2. Download the latest `soconnect.jar` from [here](https://github.com/AY2122S1-CS2103T-W15-3/tp/releases).

3. Copy the file to the folder you want to use as the _home folder_ for your SoConnect app.

4. Double-click the file to start the app. The GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.

   ![Ui](images/Ui.png)
   If SoConnect does not start by double-clicking, you can check this [alternative](#how-to-start-soconnect-using-command-prompt) to start it too.

5. Type the command in the command box and press Enter to execute it.
   e.g. typing `help` and pressing Enter will open the help window.

   Some example commands you can try:

   * `elist`: Lists all events.

   * `cadd n/John Doe p/98765432<EMAIL_ADDRESS>a/John street, block 123, #01-01`: Adds a contact named `John Doe` to SoConnect.

   * `cdelete 3` : Deletes the third contact shown in SoConnect.

   * `eclear` : Deletes all entries of events from SoConnect.

   * `exit` : Exits SoConnect.

6. Refer to the [Features](#features) below for details of each command.

--------------------------------------------------------------------------------------------------------------------

## Features

There are three main sections to SoConnect Features:
[Contact Management](#contact-management),
[Event Management](#event-management) and
[General](#general).

For each feature, you are provided with:
* Function and Description of the feature
* Format of _Command Syntax_ of the feature
* Examples of some usages of the feature

## Contact Management

This section details all the features and commands available in SoConnect that can help you with managing your contacts:
* [Adding a contact](#adding-a-contact-cadd)
* [Bookmarking a contact](#bookmarking-a-contact-cmark)
* [Clearing all contacts](#clearing-all-contacts-cclear)
* [Deleting a contact](#deleting-a-contact-cdelete)
* [Editing a contact](#editing-a-contact-cedit)
* [Finding contacts](#finding-contacts-cfind)
* [Listing all contacts](#listing-all-contacts-clist)
* [Removing bookmark of a contact](#removing-bookmark-of-a-contact-cumark)
* [Viewing a contact](#viewing-a-contact-cview)

### Adding a contact: `cadd`

Adds a contact to SoConnect.

**Format:** `cadd n/NAME e/EMAIL [p/PHONE_NUMBER] [a/ADDRESS] [th/TELEGRAM_HANDLE] [z/ZOOM] [t/TAG]…`

:bulb: **Tip:**
A contact can have any number of tags (including 0)

**Examples:**
* `cadd n/Alex Doe<EMAIL_ADDRESS>a/COM1 #99-99 th/johnDoe99 t/Professor`
* `cadd n/ Jon Cheng t/TA<EMAIL_ADDRESS>a/COM1-0201 p/87654321 t/Senior th/jonnyjohnny z/https://nus-sg.zoom.us/j/0123456789?pwd=ABCDEFGHIJKLMNOPDJFHISDFSDH`

### Bookmarking a contact: `cmark`

Bookmarks the specified contact(s).

**Format:** `cmark INDEX1 [INDEX]...`

![image](images/demo-screenshots/BookmarkContact.png)

* Bookmarks the contact at `INDEX1` and pins it at the top of the contact list.
* You may bookmark **more than one contact at a time** by specifying multiple indexes `cmark 1 2`.
* `INDEX` refers to the index number shown in the displayed contact list.

:information_source: **Note:**

`INDEX` **must be a positive integer**, e.g. 1, 2, 3,…

**Examples:**
* `cmark 2` bookmarks the second contact in SoConnect.
* `cmark 2 4` bookmarks the second and fourth contacts in SoConnect.

_See also: [Removing bookmark of a contact](#removing-bookmark-of-a-contact-cumark)_

### Clearing all contacts: `cclear`

Clears all entries of contacts from SoConnect.

**Format:** `cclear`

:information_source: **Note:**
This will not change the events saved in SoConnect.

### Deleting a contact: `cdelete`

Deletes the specified contact(s) from SoConnect.

**Format:** `cdelete INDEX1[-INDEX2]`

* Deletes the contact at:
  * the specified `INDEX1` or
  * between the specified range from `INDEX1` to `INDEX2` inclusively (if you provide `INDEX2`).
* `INDEX` refers to the index number shown in the displayed contact list.

:information_source: **Note:**

`INDEX` **must be a positive integer**. e.g. 1, 2, 3, …

**Examples:**
* `clist` followed by `cdelete 2` deletes the second contact from SoConnect.
* `cfind Betsy` followed by `cdelete 1` deletes the first contact from the results of the `cfind` command.
* `cdelete 3-5` deletes contacts from index 3 to 5 from the currently displayed contacts.

### Editing a contact: `cedit`

Edits an existing contact in SoConnect.

**Format:** `cedit INDEX [n/NAME] [e/EMAIL] [p/PHONE] [a/ADDRESS] [th/TELEGRAM_HANDLE] [z/ZOOM] [dt/TAG_DELETED]… [t/TAG_ADDED]… `

* Edits the contact at the specified `INDEX`.
* `INDEX` refers to the index number shown in the displayed contact list.
* You must provide **at least one** of the optional fields.
* Existing values will be updated to the input values.
* You can use `t/` to add a tag.
* You can remove a specific tag by typing `dt/` followed by the tag name that you wish to remove.
* You can remove all existing tags of a contact by typing `dt/*`.
* When editing tags, the tags to be deleted will be removed first, before new tags are added.

:information_source: **Note:**

`INDEX` **must be a positive integer**. e.g. 1, 2, 3, …

**Examples:**
* `clist` followed by `cedit 2 p/91234567<EMAIL_ADDRESS>edits the phone number and email address of the second contact of SoConnect to be `91234567` and<EMAIL_ADDRESS>respectively.
* `cfind Betsy` followed by `cedit 2 n/Betsy Crower dt/*` edits the name of the second contact from the results of the `cfind` command to be `Betsy Crower` and clears all existing tags.
* `cedit 3 dt/TA`  deletes the `TA` tag from the third contact.
* `cedit 4 dt/*` deletes all tags from the fourth contact.
* `cedit 5 dt/classmate t/friend` first deletes the `classmate` tag, then adds `friend` tag to the fifth contact.

### Finding contacts: `cfind`

Finds all contacts that contain any of the given keywords based on your search type.

**Format:** `cfind [KEYWORD]… [e/KEYWORD…] [p/KEYWORD…] [a/KEYWORD…] [th/KEYWORD…] [z/KEYWORD…] [t/KEYWORD…]`

:bulb: **Tip:**

There are two types of contact searches you can do in SoConnect:
1. If you **do not specify any optional fields before your keywords**, e.g. `cfind KEYWORD1 KEYWORD2`,

   You will only search the names of the contacts based on the keywords you provide.

2. If you specified optional fields before your keyword, e.g. `cfind e/KEYWORD1 p/KEYWORD2`,

   You will search the emails and phone numbers of the contacts based on `KEYWORD1` and `KEYWORD2` respectively.

* You need to provide **at least one keyword**.
* You can provide multiple keywords without specifying any optional fields.
* You can only **specify each optional field once**.
* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`.
* Partial words can be matched e.g. `Han` will match `Hans`.
* Contact matching at least one keyword will be returned (i.e. _`OR` search_).
  e.g. `Hans Bo` will return `Hans Gruber` and `Bo Yang`.

:information_source: **Note:**

The search by `cfind` is case-insensitive. e.g. `hans` will match `Hans`.

**Examples:**
* `cfind John` returns `john` and `Johnathon Doe`.
* `cfind alex david` returns `Alex Yeoh` and `David Li`.
* `cfind p/123 e/gmail` returns
   contacts with phone numbers that contain `123` and with emails that contain `gmail.com`.
* `cfind alex david p/123 456` returns `Alex Yeoh`, `David Li` and
   contacts with phone numbers that contain `123` and `456`.

### Listing all contacts: `clist`

Shows all contacts in the SoConnect, with all details by default.

**Format:** `clist [e/] [p/] [a/] [th/] [z/] [t/]`

* Names of contacts are always shown.
* When no optional fields are provided, e.g `clist`, all available details of each contact will be shown.
* When optional fields are provided, it will only show the names and the corresponding specified fields for each contact.
* You can provide more than one optional field.
* The order of the optional fields does not matter. e.g. both `clist e/ p/` and `clist p/ e/` will show only the names, email addresses and phone numbers of each contact.
* Fields of a contact that have no value will not appear.

:information_source: **Note:**

Do not add extraneous values after each optional field you specify.

**Examples:**
* `clist` shows all contacts in SoConnect with all available details for each contact.
* `clist e/ p/` shows all contacts in SoConnect with only their names, email addresses and phone numbers (if available).

### Removing bookmark of a contact: `cumark`

Remove bookmark(s) of the specified contact(s).

**Format:** `cumark INDEX1 [INDEX]...`

* Removes the bookmark of the contact at `INDEX1`.
* You may remove bookmarks of **more than one contact at a time** by specifying multiple indexes, eg `cumark 1 2`
* `INDEX` refers to the index number shown in the displayed contact list.

:information_source: **Note:**

* `INDEX` **must be a positive integer**, e.g. 1, 2, 3,…
* You must ensure that the contact indexed at `INDEX` is **initially bookmarked**.

**Examples:**
* `cumark 1` removes the bookmark of the first contact in SoConnect.
* `cumark 2 3` removes the bookmarks of the second and third contact in SoConnect.

**Format:** `cview INDEX`

* Views the contact at the specified `INDEX`.
* `INDEX` refers to the index number shown in the displayed contact list.
* All truncated details of the contact you want to view will be expanded fully.

:information_source: **Note:**

`INDEX` **must be a positive integer**. e.g. 1, 2, 3, …

**Examples:**
* `cview 2` shows all details of the second contact in SoConnect fully.
* `cfind alex david` followed by `cview 1` shows all details of the first contact from the result of the `cfind`.

## Event Management

This section details all the features and commands available in SoConnect that can help you with managing your events:
* [Adding an event](#adding-an-event-eadd)
* [Bookmarking an event](#bookmarking-an-event-emark)
* [Clearing all event](#clearing-all-events-eclear)
* [Deleting an event](#deleting-an-event-edelete)
* [Editing an event](#editing-an-event-eedit)
* [Finding events](#finding-events-efind)
* [Linking an event to contacts](#linking-an-event-to-contacts-elink)
* [Listing all events](#listing-all-events-elist)
* [Removing bookmark of an event](#removing-bookmark-of-an-event-eumark)
* [Sorting events](#sorting-events-esort)
* [Unlinking an event from contacts](#unlinking-an-event-from-contacts-eunlink)
* [Viewing an event](#viewing-an-event-eview)

### Adding an event: `eadd`

Adds an event to SoConnect.

**Format:** `eadd n/NAME at/START_TIME [end/END_TIME] [d/DESCRIPTION] [a/ADDRESS] [z/ZOOM] [t/TAG]…`

:bulb: **Tip:**
An event can have any number of tags (including 0)

:information_source: **Note:**

* Start time and End Time should be of format “dd-MM-yyyy HH:mm” (date-MONTH-year HOUR:minutes in 24-hour format).
* Ensure the End Time you enter is **chronologically after** the Start Time.

**Examples:**
* `eadd n/Summer Party at/12-12-2021 15:12 a/123, Clementi Rd, 1234665 t/fun`
* `eadd n/CS2103T Lecture at/10-09-2021 16:00 end/18:00
  z/https://nus-sg.zoom.us/j/0123456789?pwd=ABCDEFGHIJKLMNOPDJFHISDFSDHk t/lecture`

### Bookmarking an event: `emark`

Bookmarks the specified event(s).

**Format:** `emark INDEX1 [INDEX]…`

![image](images/demo-screenshots/BookmarkEvents.png)

* Bookmarks the event at `INDEX1` and pins it to the top of the event list.
* You may bookmark **more than one event at a time** by specifying multiple indexes, eg `emark 1 2`
* `INDEX` refers to the index number shown in the displayed event list.

:information_source: **Note:**

`INDEX` **must be a positive integer**, e.g. 1, 2, 3,…

**Examples:**
* `emark 2` bookmarks the second event in SoConnect.
* `emark 2 4` bookmarks the second and fourth event in SoConnect.

_See Also: [Removing bookmark of a contact](#removing-bookmark-of-a-contact-cumark)_

### Clearing all events: `eclear`

Clears all entries of events from SoConnect.

**Format:** `eclear`

:information_source: **Note:**
This will not change the contacts saved in SoConnect.

### Deleting an event: `edelete`

Deletes the specified event from SoConnect.

**Format:** `edelete INDEX1[-INDEX2]`

* Deletes the contact at:
    * the specified `INDEX1` or
    * between the specified range from `INDEX1` to `INDEX2` inclusively (if you provide `INDEX2`).
* `INDEX` refers to the index number shown in the displayed event list.

:information_source: **Note:**

`INDEX` **must be a positive integer**. e.g. 1, 2, 3, …

**Examples:**
* `elist` followed by `edelete 2` deletes the second event from SoConnect.
* `efind Exam` followed by `edelete 1` deletes the first event from the results of the `efind` command.
* `edelete 3-5` deletes events from index 3 to 5 from SoConnect.

### Editing an event: `eedit`

Edits an existing event in SoConnect.

**Format:** `eedit INDEX [n/NAME] [at/START_TIME] [end/END_TIME] [d/DESCRIPTION] [a/ADDRESS] [z/ZOOM] [dt/TAG_DELETED]… [t/TAG_ADDED]…`

* Edits the event at the specified `INDEX`.
* `INDEX` refers to the index number shown in the displayed event list.
* You must provide **at least one** of the optional fields.
* Existing values will be updated to the input values.
* You can use `t/` to add a tag.
* You can remove a specific tag by typing `dt/` followed by the tag name that you wish to remove.
* You can remove all existing tags of a contact by typing `dt/*`.
* When editing tags, the tags to be deleted will be removed first, before new tags are added.

:information_source: **Note:**

* `INDEX` **must be a positive integer**. e.g. 1, 2, 3, …
* Start time and End Time should be of format “dd-MM-yyyy HH:mm” (date-MONTH-year HOUR:minutes in 24-hour format).

**Examples:**
* `elist` followed by `eedit 2 n/CS2103T Exam dt/Easy_exams t/Hard_exams`
  first changes the name of the second event to `CS2103T Exam`, deletes the tag `Easy_exams` and
  adds the tag `Hard_exams`.
* `efind Betsy` followed by `eedit 2 n/Betsy’s Wedding` edits the name of the second event from the results of the `efind` command to be `Betsy’s Wedding`.
* `eedit 4 dt/*` deletes all existing tags from the fourth event.

### Finding Events: `efind`

Finds all events that contain any of the given keywords based on your search type.

**Format:** `efind [KEYWORDS]… [at/KEYWORD…] [end/KEYWORD…] [d/KEYWORD…] [a/KEYWORD…] [z/KEYWORD…] [t/KEYWORD…]`

:bulb: **Tip:**

There are two types of event searches you can do in SoConnect:
1. If you **do not specify any optional fields before your keywords**, e.g. `efind KEYWORD1 KEYWORD2`,

   You will only search the names of the events based on the keywords you provide.

2. If you specified optional fields before your keyword, e.g. `efind a/KEYWORD1 d/KEYWORD2`,

   You will search the addresses and descriptions of the events based on `KEYWORD1` and `KEYWORD2` respectively.

* You need to provide **at least one keyword**.
* You can provide multiple keywords without specifying any optional fields.
* You can only **specify each optional field once**.
* Partial words can be matched e.g. `Exa` will match `CS2103T Exam` .
* Events matching at least one keyword will be returned (i.e. _`OR` search_).
  e.g. `Exam Hard` will return `Hard Exam`, `CS1101S Exams`.

:information_source: **Note:**

The search by `efind` is case-insensitive. e.g. `exams` will match `Exams`.

**Examples:**
* `efind ex` returns `exams` and `Examinations`
* `efind CS Exam` returns `CS2100 Exam`,  `CS2101`
* `efind CS EXAM t/hard easy` returns `CS2100 Exam`, `CS2101` and events with tags that contain `hard` and `easy`

### Linking an event to contacts: `elink`

Links the specified event to one or more contacts.

**Format:** `elink EVENT_INDEX c/CONTACT_INDEX [c/CONTACT_INDEX]…`

* Links the event at `EVENT_INDEX` to the contact(s) at `CONTACT_INDEX`.
* `EVENT_INDEX` refers to the index number shown in the displayed event list.
* `CONTACT_INDEX` refers to the index number shown in the displayed contact list.

:information_source: **Note:**

`EVENT_INDEX` and `CONTACT_INDEX` **must be a positive integer**, e.g. 1, 2, 3,…

**Examples:**
* `elink 1 c/1` links the first event in the displayed event list to the first contact in the displayed contact list.
* `elink 2 c/1 c/2 c/3` links the second event in the displayed event list to the first, second and third contact in the displayed contact list.

_See Also: [Unlinking an event from contacts](#unlinking-an-event-from-contacts-eunlink)_

### Listing all events: `elist`

Shows all events in SoConnect, with all details by default.

**Format:** `elist [at/] [end/] [d/] [a/] [z/] [t/]`

* Names of events are always shown.
* When no optional fields are provided, e.g. `elist` , all available details of each event will be shown.
* When optional fields are provided, it will only show the names and the corresponding specified fields for each event.
* You can provide more than one optional field.
* The order of the optional fields does not matter. e.g. both `elist d/ at/` and `elist at/ d/` will only show the names, descriptions and starting times of each event.
* Fields of an event that have no value will no appear.

:information_source: **Note:**

Do not add extraneous values after each optional field you specify.

**Examples:**
* `elist` shows all events in SoConnect with all available details for each event.
* `elist d/ at/` events in SoConnect with only their names, starting times and descriptions (if available).

### Removing bookmark of an event: `eumark`

Removes bookmark of the specified event(s).

**Format:** `eumark INDEX1 [INDEX]...`

* Removes bookmark of the event at `INDEX1`.
* You may **remove bookmarks of more than one event** by specifying multiple indexes, eg `eumark 1 2`
* `INDEX` refers to the index number shown in the displayed event list.

:information_source: **Note:**

* `INDEX` **must be a positive integer**, e.g. 1, 2, 3,…
* You must ensure that the event indexed at `INDEX` is **initially bookmarked**.

**Examples:**
* `eumark 1` removes the bookmark of the first event in SoConnect.
* `eumark 2 4` removes the bookmark of the second and fourth event in SoConnect.

_See Also: [Bookmarking an event](#bookmarking-an-event-emark)_

### Sorting events: `esort`

Sorts all events by start time and displays all upcoming or ongoing events.

**Format:** `esort`

:information_source: **Note:**

Events that have ended will not be shown after you execute `esort`

### Unlinking an event from contacts: `eunlink`

**Format:** `eunlink EVENT_INDEX c/CONTACT_INDEX [c/CONTACT_INDEX]…`

Unlinks the specified event and the specified contact(s).

**Examples:**
* `eunlink 1 c/1` unlinks the first event in the displayed event list from the first contact in the displayed contact list.
* `eunlink 2 c/1 c/2 c/3` unlinks the second event in the displayed event list from the first, second and third contacts in the displayed contact list.
* `eunlink 3 c/*` unlinks the third event in the displayed event list from all contacts that are linked to it.

_See Also: [Linking an event to contacts](#linking-an-event-to-contacts-elink)_

### Viewing an event: `eview`

Views an event with all details fully shown.

**Format:** `eview INDEX`

* Views the event at the specified `INDEX`.
* `INDEX` refers to the index number shown in the displayed event list.
* All truncated details of the event you want to view will be expanded fully.

:information_source: **Note:**

`INDEX` **must be a positive integer**. e.g. 1, 2, 3, …

**Examples:**
* `eview 1` shows all details of the first event in SoConnect fully.
* `efind exam` followed by `eview 4` shows all details of the fourth event from the result of the `cfind`.

## General

This section details all other the features and commands available in SoConnect that can enhance your SoConnect experience:
* [Calendar Window](#calendar-window-calendar)
* [Exiting SoConnect](#exiting-soconnect-exit)
* [Help Window](#help-window-help)
* [Redo a command](#redo-a-command-redo)
* [Undo a command](#undo-a-command-undo)

### Calendar Window: `calendar`

Shows a calendar of all the events.

**Format:** `calendar`

:bulb: **Tip:**

Alternatively, you can view the calendar using the top menu via `File -> Calendar` or press `F2`.

:exclamation: **Caution:**
Any changes made in the calendar window will not be saved.
Do not attempt to add new events using the calendar window.
Doing so might result in a crash and your data may be lost.

![calendar](images/demo-screenshots/Calendar.png)

### Exiting SoConnect: `exit`

Exits and Closes SoConnect.

**Format:** `exit`

### Help Window: `help`

Displays a summary of all commands in SoConnect User Guide.

**Format:** `help`

![help message](images/demo-screenshots/helpMessage.png)

### Redo a command: `redo`

Restores SoConnect to a previously undone state from its history.

**Format:** `redo`

**Examples:**
* `edelete 1` followed by `undo` restores the deleted event in the event list. This followed by `redo` command will delete the event at index 1 again.

_See Also: [Undo a command](#undo-a-command-undo)_

### Undo a command: `undo`

Restore SoConnect to its previous state from its history.

**Format:** `undo`

**Examples:**
* `edelete 1` followed by `undo` restores the deleted event in the event list.
* `add n/John Doe<EMAIL_ADDRESS>followed by `undo` removes the added contact from contact list.
* `eview 1` followed by `undo` will display the full event list.

_See Also: [Redo a command](#redo-a-command-redo)_

--------------------------------------------------------------------------------------------------------------------

## SoConnect Saved Data

### Saving the data

SoConnect data is saved in the _hard disk_ automatically after any command that changes the data.
There is no need to save manually.

### Editing the data file

SoConnect data are saved as a _JSON file_ `[JAR file location]/data/soconnect.json`.
Advanced users are welcome to update data directly by editing that data file.

:exclamation: **Caution:**
If your changes to the data file makes its format invalid,
SoConnect will discard all data and start with an empty data file at the next run.

--------------------------------------------------------------------------------------------------------------------

## Others

### FAQ

**Q**: How do I transfer my data to another Computer?

**A**: Install SoConnect in the other computer and copy over the contents from your previous SoConnect JSON file to the
empty data file SoConnect creates on the other Computer.

#### Copying Details and Opening Links

![clickable links](images/clickableLinkExample.png)

**Q**: How do I copy the email address of a contact?

**A**: You can copy any specific details of a contact or an event just by clicking on that detail!

As shown on the image above, clicking on the `telegram handle` of `Bernice Yu` will copy her Telegram handle.

**Q**: Can SoConnect automatically open a link on my browser?

**A**: YES! You can open any links that you have included in a contact or in an event.

:bulb: **Tip:**

Clickable links are underlined in blue

Referring back to the same image, if you click on the `zoom` link saved under `Bernice Yu`,
SoConnect will help you open the link on your browser automatically.

#### Linked Contacts and Events

**Q**: How do I view the contacts linked to a particular event?

**A**: Click on the particular event card in the panel containing events.
Then click on the yellow boxes which are links to the contacts.
The linked contacts will be displayed on the contact panel on the left.
![View links of event](images/demo-screenshots/ClickLinksEvent.png)

**Q**: How do I view the events linked to a particular contact?

**A**: Click on the particular contact card in the panel containing contacts.
Then click on the yellow boxes which are links to the events.
The linked events will be displayed on the event panel on the left.
![View links of contact](images/demo-screenshots/ClickLinksContact.png)

**Q**: What is the purpose of using links?

**A**: Links are a form of relationship between the contacts and the events saved in SoConnect.
Typically, we link an event to a contact if the contact is involved as a participant of the event.
For instance, you can link your professor to the lecture.

### How to start SoConnect using Terminal

Open the terminal (For [MacOS](https://support.apple.com/en-sg/guide/terminal/welcome/mac) or Linux) or Command Prompt (For [Windows](https://www.howtogeek.com/235101/10-ways-to-open-the-command-prompt-in-windows-10/)).

Navigate to the folder containing `soconnect.jar`. See the tutorial for [Windows](https://www.howtogeek.com/659411/how-to-change-directories-in-command-prompt-on-windows-10/), [MacOS or Linux](https://www.macworld.com/article/221277/command-line-navigating-files-folders-mac-terminal.html) (Linux uses the same command for navigating folders).

Enter the following command: `java -jar soconnect.jar`. The SoConnect window should open.

:bulb: **Tip:**

If you are still unable to open the file, [check your Java version](https://www.java.com/en/download/help/version_manual.html) again and make sure it is version 11. [Download Java 11](https://www.oracle.com/java/technologies/downloads/) if you have not done so.

--------------------------------------------------------------------------------------------------------------------

## Command Summary

**Contact Management**

Action | Format, Examples
--------|------------------
**[Add](#adding-a-contact-cadd)** | `cadd n/NAME e/EMAIL [p/PHONE_NUMBER] [a/ADDRESS] [th/TELEGRAM_HANDLE] [z/ZOOM] [t/TAG]…`
 e.g., `cadd n/James Ho p/22224444<EMAIL_ADDRESS>a/123, Clementi Rd, 1234665 t/Professor`
**[Bookmark](#bookmarking-a-contact-cmark)** | `cmark INDEX [INDEX]…`
 e.g. `cmark 1 4`
**[Clear](#clearing-all-contacts-cclear)** | `cclear`
**[Delete](#deleting-a-contact-cdelete)** | `cdelete INDEX1[-INDEX2]`
 e.g. `cdelete 3`
 e.g. `cdelete 1-5`
**[Edit](#editing-a-contact-cedit)** | `cedit INDEX [n/NAME] [e/EMAIL] [p/PHONE] [a/ADDRESS] [th/TELEGRAM_HANDLE] [z/ZOOM] [dt/TAG_DELETED]… [t/TAG_ADDED]…`
 e.g.`cedit 2 n/James Lee<EMAIL_ADDRESS>p/91234567 dt/OP1_projectmate t/CS2103T_projectmate t/roommate`
 e.g. `cedit 3 dt/*`
**[Find](#finding-contacts-cfind)** | `cfind [KEYWORD]… [e/KEYWORD…] [p/KEYWORD…] [a/KEYWORD…] [th/KEYWORD…] [z/KEYWORD…] [t/KEYWORD…]`
 e.g. `cfind James Jake p/12345678`
**[List](#listing-all-contacts-clist)** | `clist [e/] [p/] [a/] [th/] [z/] [t/]`
 e.g. `clist`
 e.g. `clist e/ p/`
**[Remove Bookmark](#removing-bookmark-of-a-contact-cumark)** | `cumark INDEX [INDEX]…`
 e.g. `cumark 1 3 4`
**[View](#viewing-a-contact-cview)** | `cview INDEX`
 e.g. `cview 3`

**Event Management**

Action | Format, Examples
--------|------------------
**[Add](#adding-an-event-eadd)** | `eadd n/NAME at/START_TIME [end/END_TIME] [d/DESCRIPTION] [a/ADDRESS] [z/ZOOM] [t/TAG]… `
 e.g., `eadd n/Summer Party at/12-12-2021 15:12 a/123, Clementi Rd, 1234665 t/fun`
**[Bookmark](#bookmarking-an-event-emark)** | `emark INDEX [INDEX]…`
 e.g. `emark 1 4`
**[Clear](#clearing-all-events-eclear)** | `eclear`
**[Delete](#deleting-an-event-edelete)** | `edelete INDEX`
 e.g., `edelete 3`
 e.g., `edelete 1-5`
**[Edit](#editing-an-event-eedit)** | `eedit INDEX [n/NAME] [at/START_TIME] [end/END_TIME] [d/DESCRIPTION] [a/ADDRESS] [z/ZOOM] [dt/TAG_DELETED]… [t/TAG_ADDED]…`
 e.g.,`eedit 2 n/CS2103T Exam dt/Easy_exams t/Hard_exams`
 e.g., `eedit 3 dt/*`
**[Find](#finding-events-efind)** | `efind [KEYWORDS]… [at/KEYWORD…] [end/KEYWORD…] [d/KEYWORD…] [a/KEYWORD…] [z/KEYWORD…] [t/KEYWORD…]`
 e.g., `efind CS2103T t/hard`
**[Link](#linking-an-event-to-contacts-elink)** | `elink EVENT_INDEX c/CONTACT_INDEX [c/CONTACT_INDEX]...`
 `elink 2 c/1 c/2 c/3`
**[List](#listing-all-events-elist)** | `elist [at/] [end/] [d/] [a/] [z/] [t/]`
 e.g., `elist`
 e.g., `elist at/ d/`
**[Remove Bookmark](#removing-bookmark-of-an-event-eumark)** | `eumark INDEX [INDEX]…`
 e.g. `eumark 1 3 4`
**[Sort](#sorting-events-esort)** | `esort`
**[Unlink](#unlinking-an-event-from-contacts-eunlink)** | `eunlink EVENT_INDEX c/CONTACT_INDEX [c/CONTACT_INDEX]...`
 e.g., `eunlink 2 c/1 c/2`
 e.g., `eunlink 3 c/*`
**[View](#viewing-an-event-eview)** | `eview INDEX`
 e.g. `eview 1`

**General**

Action | Format, Examples
--------|------------------
**[Calendar](#calendar-window-calendar)** | `calendar`
**[Exit](#exiting-soconnect-exit)** | `exit`
**[Help](#help-window-help)** | `help`
**[Redo](#redo-a-command-redo)** | `redo`
**[Undo](#undo-a-command-undo)** | `undo`

________________________________________________________________________________________________________________

## Glossary
{to be added}

repository: pcgiang/tp

gha_license_id: NOASSERTION

repo_name: pcgiang/tp


text:
# Changelog

The format is based on [Keep a Changelog].

[Keep a Changelog]: http://keepachangelog.com/en/1.0.0/

## [Unreleased]

## [0.8.0] - 2021-01-27
### Breaking
- Updated `ethereum-types` to 0.11. [#510](https://github.com/paritytech/parity-common/pull/510)

## [0.7.0] - 2021-01-05
### Breaking
- Bump `rust-secp256k1` to v0.19, always allow zero signatures. [#438](https://github.com/paritytech/parity-common/pull/438)
- Updated `rlp` to 0.5. [#463](https://github.com/paritytech/parity-common/pull/463)
- Updated dependencies. [#483](https://github.com/paritytech/parity-common/pull/483)
- Remove deprecated trait impls `FromStr`/`TryFrom` for `Secret` [#495](https://github.com/paritytech/parity-common/pull/495)

## [0.6.2] - 2020-06-19
- Put `Secret` memory on heap. [#400](https://github.com/paritytech/parity-common/pull/400)
- Add `copy_from_str` conversion methods for `Secret`.
- Deprecate `From<&str>` in favor of `copy_from_str`.

## [0.6.1] - 2020-04-11
- Add `recover_allowing_all_zero_message()` and `ZeroesAllowedMessage` to accomodate ethereum's `ecrecover` builtin. [#369](https://github.com/paritytech/parity-common/pull/369)

## [0.6.0] - 2020-03-16
- License changed from GPL3 to dual MIT/Apache2. [#342](https://github.com/paritytech/parity-common/pull/342)
- Updated dependencies. [#361](https://github.com/paritytech/parity-common/pull/361)

## [0.5.0] - 2020-02-08
- Remove `inv()` from `SecretKey` (breaking). [#258](https://github.com/paritytech/parity-common/pull/258)
- `Generate::generate()` does not return error. [#258](https://github.com/paritytech/parity-common/pull/258)
- `Secp256k1` is no longer exported. [#258](https://github.com/paritytech/parity-common/pull/258)
- Remove `public_is_valid()` as it is now impossible to create invalid public keys. [#258](https://github.com/paritytech/parity-common/pull/258)
- 0-valued `Secp::Message`s are disallowed (signatures on them are forgeable for all keys). [#258](https://github.com/paritytech/parity-common/pull/258)
- Switch to upstream `rust-secp256k1` at v0.17.2. [#258](https://github.com/paritytech/parity-common/pull/258)
- make `rustc_hex` dependency optional. [#337](https://github.com/paritytech/parity-common/pull/337)

repository: KomodoPlatform/parity-common

gha_language: Rust

repo_name: KomodoPlatform/parity-common


text:
# Changelog

## 1.11.0(2023-07-25)

### Improvement
* Implement Caching and Cache Busting

## 1.10.1(2023-07-19)

### Updates
* Dependency updates and maintenance

## 1.10.0(2023-02-28)

### Feature
* Add 28mm option as base (907e4e3 @indero)

### Updates
* Update dependencies

## 1.9.2(2022-12-23)

### Fix
* Fix an issue with the fake user agent
* Update some dependencies

## 1.9.1(2022-10-19)

### Improvements
* Dependency updates
* Switch to Python 3.10

## 1.9.0(2022-08-31)

### New
* Cavalry mode. This mode prints the creature on a rectangular base. Mostly for war-gaming.
* Temporary accounts cannot be created anymore. Existing ones can be converted as long as the session exists.

## 1.8.2(2022-09-03)

### Hotfix
* PDF size is now handled correctly, including a print margin
* Update django

## 1.8.1(2022-05-18)

### Hotfix
* Fix dtype issues when generating images

## 1.8.0(2022-05-18)

### New
* Add the possibility to change the creature background color. Default remains white.
* Added color selection tools to the classic builder as well as the Quickbuilder

### Improvements
* Transparent PNGs have their transparency replaced with the chosen background color.
* Applied a fix where enumeration doesn't apply correctly in the Quickbuilder and sometimes in the classic builder

## 1.7.0(2022-05-18)

### New
* Rearrange how images and nameboxes are sorted on a mini significantly increasing creature image size
  * Before, the namebox size has always been substracted from max_height in any configuration. Now, it will use that space for the image to maximise the size. If a namebox is requested, it will use available space first (max_height) and if not, it'll shrink the image to fit. Now, all space is optimally used and the minis are standardized in size.

## 1.6.5(2022-05-18)

### Improvements
* Image size and creature size are bigger now.
* If you choose a bigger paper size (A4 or Tabloid), Large, Huge and Gargantuan Minis are full height sized. Width is always correct of course.
* Improved the handling of creature position for cleaner minis and better size adjustments (Walking, Hovering, Flying)

## 1.6.4(2022-05-16)

### Improvements
* Added initial wave of unit tests
* Improved error handling, messages

## 1.6.3(2022-05-12)

### Improvements
* Improved english
* Improved descriptions
* Decreased docker image size by 200MB

## 1.6.2(2022-05-11)

### New
* Quickbuilder video added

### Improvements
* Small text tweaks and improvements

## 1.6.1(2022-05-11)

### Hotfix
* Hotfix for the classic minibuilder is released

## 1.6.0(2022-05-11)

### New
* The Quickbuilder beta is released!
  * Since this does not require an account, temporary accounts are deprecated and will be disabled in the future
  * If you want to keep your collections, make sure you convert to a real account

## 1.5.0(2022-05-04)

### New
* Instead of a ZIP file containing images, Monsterforge generates a PDF to print directly

### Improvements
* English has been improved

## 1.4.7(2022-05-04)

### Improvements
* Improve the /minis/ redirect
* Add robots.txt to protect authenticated views

## 1.4.6(2022-05-03)

### Hotfix
* More CR/CreatureType hotfixes

## 1.4.5(2022-05-03)

### Hotfix
* Fix the creature form

## 1.4.4(2022-05-03)

### Improvements
* Change some descriptions
* Smaller UI improvements
* Prevent signed in users from signup and temp account creation
* Remove D&D Agnostic data from creatures, this tool serves all
  * Create CR is no longer available as setting
  * Creature Type is no longer available as setting
  * This allows Monsterforge to be slimmer

## 1.4.3(2022-05-03)

### Improvements
* More descriptive title and meta description

## 1.4.2(2022-05-03)

### Improvements
* Redirect "minis/" to / for people that still the old url somewhere

## 1.4.1(2022-05-03)

### Improvements
* Remove "minis/" sub-url for cleaner urls

## 1.4.0(2022-04-29)

### Features
* First iteration of account management via profile page
  * You can change your password
  * You can delete your account which will delete all of your data

## 1.3.6(2022-04-25)

### Improvements
* Bump Django to fix CVE #55

## 1.3.5(2022-03-16)

### Improvements
* Update several dependencies

## 1.3.4(2022-01-13)

### Improvements
* Bump Django to fix CVE #51

## 1.3.3(2022-01-13)

### Improvements
* Update several dependencies

## 1.3.2(2021-09-22)

### Improvements
* Added Plausible Insights (Default=False)

## 1.3.1(2021-09-21)

### Improvements (So pretty!)
* Added new images on the Index page that better show the results
* Update sidebar image to better represent a forge

## 1.3.0(2021-09-20)

### Improvements
* Fixed many bugs with the DDB Importer (See #41)
* DDB Importer can now handle homebrewed monsters
* Log DDB URLs for better debugging

## 1.2.0 (2021-09-14)

### Improvements

* Code refactoring and cleanup
* Migrate to Django 3.2 (From Django 2.2)
* Enhance RPG Agnostic aspect
* Several bugfixes
* Dependency updates

## 1.1.1 (2021-08-19)

### Improvements

* Circular minis now have a rectangular guiding lines, this will help crafting it in the end. Cut the Mini and glue it then cut the circle out.

### Other

* Updated the Readme
* Monsterforge is now it's own root

## 1.1.0 (2021-08-18)

### Improvements

* Refactored how images are processed and served, reducing server overhead
* Implemented some basic image caching for each requested build
* Add Link to Changelog notes in footer

## 1.0.7 (2021-08-17)

### fixes

* Fixed a problem where printing Names resulted in a 500 Error (#31)

## 1.0.6 (2021-08-05)

### fixes

* Significantly reduce image size
* Use github actions and registry
* Fix DDBs wrongly defined SRD monster image URL

## 1.0.5 (2021-08-05)

### features

* Add stats command

## 1.0.3 (2021-03-18)

### Fixes

* Update Django dependency due to CVEs

## 1.0.1 (2021-03-18)

### Fixes

* Properly handle deleted objects and cascading

## 1.0.0 (2021-03-17)

### Happy 1.0 release

* Updated the domain from dndbox.com to dice.quest
* Added changelog
* Start using tags for better release management
* Add version display to web

repository: schemen/monsterforge

gha_language: CSS

gha_license_id: MIT

repo_name: schemen/monsterforge


text:
#NetSensors

##Description
These sensors are measuring network activity using Sigar.

##Example
```javascript
{
  "contexts":[
    {
      "key":"name",
      "value":"eth0"
    }
  ],
  "interval":{
    "period":1,
    "timeUnit":"SECONDS"
  },
  "metricName":"net_Packets_in_usage",
  "sensorClassName":"be.bewan.cloudiator.sensors.networksensors.NetPacketsInSensor"
}
```

##Contexts value
Parameter | Type   | Description
--------- | ------ | -----------
name 	  | String | Default : "eth0".

##SensorClassName
>all these class are from be.bewan.cloudiator.sensors.networksensors package.

###NetPacketsInSensor
A sensor for measuring the number of received packets per interval

###NetPacketsOutSensor
A sensor for measuring the number of sent packets per interval

###NetBytesInSensor
A sensor for measuring the received bytes per interval

###NetBytesOutSensor
A sensor for measuring the sent bytes per interval

repository: azarioh/bewan-sensors

repo_name: azarioh/bewan-sensors


text:
# Create Assessment

> Sample create assessment request

```shell
https://launchpadrecruitsapp.com/1/live
```

When an integration partner wishes to create a Live assessment

## Request (Partner to LaunchPad)

> Sample JSON data body for create assessment request

```json
{
    "interview": {
        "title": "Sample Live Assessment",
        "description":"optional field",
        "email"<EMAIL_ADDRESS>    }
}
```

Partner will send the JSON data with the following contents:

### Interview Object

Parameter    | Type    | Always present? | Description
------------ |---------|-----------------|------------
title        | String  | **Yes**         |Title of the Live assessment. Provided by the Partner
descrption   | String  | **No**          |Additional reference details for the assessment. Provided by the Partner
email        |String   | **Yes**         |Email address of the LaunchPad user where the assessment is attributed

## Response (LaunchPad to Partner)

> Sample JSON data body for create assessment response

```json
{
    "interview": {
        "id": "4567",
        "title": "Sample Live Assessment",
        "description":"optional field",
        "email"<EMAIL_ADDRESS>    }

	"metadata": {
        "timestamp": "2019-03-21T22:57:33Z"
    }
}
```

LaunchPad will respond with a JSON data with the following contents:

### Interview Object
> Interview object response body snippet

```json
{
    #..snip..
    "interview": {
        "id": "4567",
        "title": "Sample Live Assessment",
        "description":"optional field",
        "email"<EMAIL_ADDRESS>    }
    #..snip..
}
```

Parameter    | Type    | Always present? | Description
------------ |---------|-----------------|------------
id           | String  | **Yes**         |LaunchPad identifier for the Live assessment
title        | String  | **Yes**         |Title of the Live assessment. Provided by the Partner
descrption   | String  | **No**          |Additional reference details for the assessment. Provided by the Partner
email        |String   | **Yes**         |Email address of the LaunchPad user where the assessment is attributed

### Metadata Object
> Metadata object response body snippet

```json
{
    #..snip..
    "metadata": {
        "timestamp": "2019-03-21T22:57:33Z"
    }
    #..snip..
}
```

Parameter    | Type    | Always present? | Description
------------ |---------|-----------------|------------
timestamp    | String  | **Yes**         |Date and time when the event occurred

repository: launchpadrecruits/slate

repo_name: launchpadrecruits/slate


text:
---
layout: leftnav-page-content
title: Singapore Communities in ASEAN Countries
permalink: /asean-countries/go/singapore-communities-in-asean-countries/
breadcrumb: Singapore Communities in ASEAN Countries
collection_name: asean-countries
second_nav_title: "Go"
---

![banner-singapore-communities-in-asean-countries](\images\asean-countries\sg-communities-new.jpg)

Connect with fellow Singaporeans based in ASEAN countries through these clubs, associations and communities. This is a selection of Singapore communities in ASEAN countries available from the Internet and is not meant to be an exhaustive list.

- [Brunei](#brunei)
- [Cambodia](#cambodia)
- [Indonesia](#indonesia)
- [Malaysia](#malaysia)
- [Myanmar](#myanmar)
- [Philippines](#phiippines)
- [Thailand](#thailand)
- [Vietnam](#thailand)
- [Singapore Missions in ASEAN countries](#singapore-missions-in-asean-countries)

### **Brunei**
#### Singaporean expatriates in Brunei

This website enables Singaporeans living and working in Brunei to connect and get in touch with other fellow Singaporeans based in the country.

[http://www.expat.com/en/nationalities/singaporean/in/asia/brunei/](http://www.expat.com/en/nationalities/singaporean/in/asia/brunei/){:target="_blank"}

### **Cambodia**
The Singapore Club Cambodia based in Phnom Penh is a social club that aims to connect and reach out to Singaporeans living or working in Cambodia. To foster closer ties among Singaporean families in Cambodia, the club organises major events each year to celebrate Lunar New Year, National Day, Mid-Autumn Festival, Christmas and Family Day. The club also organises “Shiok Night” on the first Friday of every month for entrepreneurs, the Singaporean business community as well as non-Singaporeans to network and interact socially.

[http://www.singaporeclubcambodia.com/](http://www.singaporeclubcambodia.com/){:target="_blank"}

### **Indonesia**

#### Singapore Chamber of Commerce Indonesia

Based in Jakarta, the Singapore Chamber of Commerce Indonesia aims to promote closer ties between the business communities in Singapore and Indonesia through various networking programmes and initiatives.

[http://singchamindonesia.com/](http://singchamindonesia.com/){:target="_blank"}

#### Singaporean expatriates in Indonesia
This website enables Singaporeans living and working in Indonesia to connect and get in touch with other fellow Singaporeans based in the country.

[http://www.expat.com/en/nationalities/singaporean/in/asia/indonesia/](http://www.expat.com/en/nationalities/singaporean/in/asia/indonesia/){:target="_blank"}

#### International Enterprise Singapore Overseas Centre in Indonesia
The International Enterprise Singapore’s Overseas Centres in Jakarta and Surabaya provide assistance to Singaporean companies that wish to venture into Indonesia or are already operating from there.

[https://www.iesingapore.gov.sg/Contact-Info/Global-Networks](https://www.iesingapore.gov.sg/Contact-Info/Global-Networks){:target="_blank"}

#### BLOCK71 Jakarta
Set up by NUS Enterprise in partnership with Salim Group, BLOCK71 Jakarta is an incubation facility located in Kuningan to help start-ups from Singapore exploring business opportunities in Indonesia to understand the Indonesian market as well as to expand their networks through events and programmes offered.

[http://jakarta.block71.co/](http://jakarta.block71.co/){:target="_blank"}

### **Malaysia**
#### International Enterprise Singapore Overseas Overseas Centre in Malaysia

The International Enterprise Singapore’s Overseas Centre in Kuala Lumpur provides assistance to Singaporean companies that wish to venture into Malaysia or are already operating from there.

[https://www.iesingapore.gov.sg/Contact-Info/Global-Networks](https://www.iesingapore.gov.sg/Contact-Info/Global-Networks){:target="_blank"}

### **Myanmar**
#### International Enterprise Singapore Overseas Centre in Myanmar

The International Enterprise Singapore’s Overseas Centre in Yangon provides assistance to Singaporean companies that wish to venture into Myanmar or are already operating from there.

[https://www.iesingapore.gov.sg/Contact-Info/Global-Networks](https://www.iesingapore.gov.sg/Contact-Info/Global-Networks){:target="_blank"}

#### Singapore Association of Myanmar

The Singapore Association of Myanmar in Yangon brings together Singaporeans living or working in Myanmar to promote social, recreational, cultural, educational and business-related activities for its members.

[https://www.facebook.com/pg/SingaporeAssociationOfMyanmar.SAM/](https://www.facebook.com/pg/SingaporeAssociationOfMyanmar.SAM/){:target="_blank"}

#### Nanyang Technological University Alumni Association (Myanmar)

The association serves as a central resource for the Nanyang Technological University alumni community in Myanmar, often organising activities to bring the community together.

* [http://www.ntu.edu.sg/Alumni/associations/Overseas-Based-web/Pages/Myanmar.aspx](http://www.ntu.edu.sg/Alumni/associations/Overseas-Based-web/Pages/Myanmar.aspx){:target="_blank"}
* [http://www.ntuaamyanmar.org/](http://www.ntuaamyanmar.org/){:target="_blank"}

#### Singapore Management University Alumni Chapter in Yangon, Myanmar

The Singapore Management University’s alumni chapter established in Yangon helps to keep its alumni in Myanmar connected with each other.

[https://www.smuaa.org.sg/alumni-leaders/](https://www.smuaa.org.sg/alumni-leaders/){:target="_blank"}

### **Philippines**
#### International Enterprise Singapore Overseas Centre in the Philippines

The International Enterprise Singapore’s Overseas Centre in Manila provides assistance to Singaporean companies that wish to venture into the Philippines or are already operating from there.

[https://www.iesingapore.gov.sg/Contact-Info/Global-Networks](https://www.iesingapore.gov.sg/Contact-Info/Global-Networks){:target="_blank"}

#### Singapore Philippines Association Inc.

The Singapore Philippines Association based in Makati City, Manila, provides a platform for Singaporeans living and working in the Philippines to network, promote mutual understanding and friendship between Singaporeans and Filipinos, as well as build stronger ties between Singaporeans and other nationalities living in the country.

* [http://www.singphil.org/](http://www.singphil.org/){:target="_blank"}
* Facebook page: [https://www.facebook.com/SingaporePhilippinesAssociationInc/](https://www.facebook.com/SingaporePhilippinesAssociationInc/){:target="_blank"}

#### Singapore Ladies Club Philippines

The Singapore Ladies Club Philippines is an informal social network for Singaporean women working and residing in the Philippines. Through activities such as tea sessions, lunches, festival get-togethers, charity events and cultural visits, the club aims to promote friendship and celebrate Singapore’s culture and heritage.

Facebook page: [https://www.facebook.com/SingaporeLadiesClubPhilippines/](https://www.facebook.com/SingaporeLadiesClubPhilippines/){:target="_blank"}

### **Thailand**
#### International Enterprise Singapore Overseas Centre in Thailand

The International Enterprise Singapore’s Overseas Centre in Bangkok provides assistance to Singaporean companies that wish to venture into Thailand or are already operating from there.

[https://www.iesingapore.gov.sg/Contact-Info/Global-Networks](https://www.iesingapore.gov.sg/Contact-Info/Global-Networks){:target="_blank"}

#### Singapore-Thai Chamber of Commerce

The Singapore-Thai Chamber of Commerce in Bangkok aims to promote and develop economic and social relations between Singapore and Thailand. It also provides advice to Singaporean business interests in Thailand.

[http://www.singaporethaicc.or.th/](http://www.singaporethaicc.or.th/){:target="_blank"}

#### Singapore Club of Thailand

The Singapore Club of Thailand established in Bangkok is a social club for Singaporeans living or working in Thailand. Activities are periodically organised to bring members together.

[http://www.singaporeclubthailand.org/](http://www.singaporeclubthailand.org/){:target="_blank"}

#### Nanyang Technological University Alumni Association (Thailand)

The association serves as a central resource for the Nanyang Technological University alumni community in Thailand, often organising activities to bring the community together.

[http://www.ntu.edu.sg/Alumni/associations/Overseas-Based-web/Pages/Thailand.aspx](http://www.ntu.edu.sg/Alumni/associations/Overseas-Based-web/Pages/Thailand.aspx){:target="_blank"}

### **Vietnam**
#### International Enterprise Singapore Overseas Centre in Vietnam

The International Enterprise Singapore’s Overseas Centres in Hanoi and Ho Chi Minh City provide assistance to Singaporean companies that wish to venture into Vietnam or are already operating from there.

[https://www.iesingapore.gov.sg/Contact-Info/Global-Networks](https://www.iesingapore.gov.sg/Contact-Info/Global-Networks){:target="_blank"}

#### Singapore Business Association Vietnam

With its base in Hanoi, the Singapore Business Association Vietnam aims to assist Singaporeans in their business ventures in Vietnam. Included in the association’s lineup of programmes and events are seminars and dialogues on relevant business-related topics of interest to members.

* [http://www.sbav-hanoi.org/](http://www.sbav-hanoi.org/){:target="_blank"}
* Facebook page: [https://www.facebook.com/mySBAV](https://www.facebook.com/mySBAV){:target="_blank"}

#### Singapore Business Group HCM City Chapter

Set up in Ho Chi Minh City, the Singapore Business Group HCM City Chapter promotes business relations among members as well as with Vietnamese companies and other foreign entities. It organises monthly social networking sessions and seminars for members, and also participates in charity events to help the less fortunate.

[http://www.sbghcm.org](http://www.sbghcm.org){:target="_blank"}

#### The Vietnamese Chamber of Commerce in Singapore (VietCham Singapore)

VietCham Singapore supports the Vietnamese and Vietnam-related business community in Singapore as well as promotes business opportunities between Vietnam and Singapore.

[https://www.vietchamsg.org](https://www.vietchamsg.org){:target="_blank"}

### **Singapore Missions in ASEAN countries**

We have listed the contact details of the Singapore Missions in ASEAN countries in the table below.

| **Mission** | **Contact** |
| (Brunei) Singapore High Commission in Bandar Seri Begawan	|<EMAIL_ADDRESS>|
| (Cambodia) Singapore Embassy in Phnom Penh |<EMAIL_ADDRESS>|
| (Indonesia) Singapore Embassy in Jakarta |<EMAIL_ADDRESS>|
| (Indonesia) Singapore Consulate-General in Batam | 62 (0778) 470070 |
| (Indonesia) Singapore Consulate-General in Medan |<EMAIL_ADDRESS>|
| (Lao PDR) Singapore Embassy in Vientiane |<EMAIL_ADDRESS>|
| (Malaysia) Singapore High Commission in Kuala Lumpur |<EMAIL_ADDRESS>|
| (Malaysia) Singapore Consulate-General in Johor Bahru | 60-7 226 5012 |
| (Myanmar) Singapore Embassy in Yangon |<EMAIL_ADDRESS>|
| (Philippines) Singapore Embassy in Manila |<EMAIL_ADDRESS>|
| (Thailand) Singapore Embassy in Bangkok |<EMAIL_ADDRESS>|
| (Vietnam) Singapore Embassy in Hanoi |<EMAIL_ADDRESS>|


text:
# Pi_dartboard
This project implements a (somewhat crude) way to estimate Pi using Monte-Carlo simulation.

This uses the method discussed in the following article:

Laura Sach, "Whose spline is it anyway?", *Raspberry Pi Hello World Magazine*, Issue 10, October 2019, pp.16-18 (N.B. Can be found online at https://helloworld.raspberrypi.org/)

The basic concept is to throw notional 'darts' pseudo-randomly at a (also notional) 'dartboard'. Note that in practice we only use a quarter-dartboard of side 1 unit. If we label as 'p' the proportion of darts which fall within radius 1 (or, equivalently unity radius-squared) of the bottom left hand corner, then we can estimate Pi as 4p. Note that if we take the bottom left-hand corner as the coordinate origin, and each dart has horizontal and vertical coordinates x and y respectively, then the distance-squared of each dart from the origin is x^2+y^2. So if this is <1 we say the (quarter) dartboard was 'hit', otherwise 'missed'.


text:
# cron

The `cron` and `at` services enable sysadmins to schedule tasks to run at a specific time in the future. The `at` service specifies a one-time task that runs at a certain time. The `cron` service can schedule tasks on a repetitive basis, such as daily, weekly, or monthly.

The `crond` daemon is the background service that enables cron functionality.

The cron service checks for files in the `/var/spool/cron` and `/etc/cron.d` directories and the `/etc/anacrontab` file. The contents of these files define cron jobs that are to be run at various intervals. The individual user cron files are located in `/var/spool/cron`, and system services and applications generally add cron job files in the `/etc/cron.d` directory. The `/etc/anacrontab` is a special case that will be covered later in this article.

> The macOS doesn't have these files and directories.

TODO:

## REF

1. [How to use cron in Linux](https://opensource.com/article/17/11/how-use-cron-linux), by *David Both*, 2017/11


text:
# saucelabs-grunt-cucumber
Sample project to run cucumberjs acceptance tests in saucelabs using protractor and grunt task runner
## Prerequisites
- Visual Studio Code >1.3
- Node.js >6
- Chrome Browser >50
- Saucelabs User Name and Access Key (https://saucelabs.com)

>_Note: I used windows environment_

## How to install
- Add saucelabs username and access key in the environment variables
  - `SAUCE_USERNAME` User Name
  - `SAUCE_ACCESS_KEY` Access Key
- Update the hostname
  - Open `C:\Windows\System32\drivers\etc\hosts`
  - Update `<IP_ADDRESS>  localhost` (is required to access localhost from saucelabs)
```

npm install
npm install grunt-cli express -g

```

## How to run
There are four tasks configured in grunt task runner with two categories

- local : execute protractor tests in local chrome browser
  - `grunt`  run tests in chrome
  - `grunt debug` run tests in debug mode
- saucelabs : executes protractor tests in saucelabs (start tunnel before execution)
  - `grunt sauce` run tests in saucelabs
  - `grunt sauce-debug` run tests in debug mode

> debugging
> - Open `saucelabs-grunt-cucumber` from Visual Studio Code
> - Put break point in the IDE
> - Navigate to the `..\saucelabs-grunt-cucumber>` from command prompt
> - Execute debug task (ex: `grunt debug`)
> - Start debugging `F5` from Visual Studio Code

### Start saucelabs tunnel
- Navigate to the `saucelabs-grunt-cucumber\bin\sc-4.3.16-win32\bin>` from command prompt
- execute command `sc.exe -u <UserName> -k <AccessKey> --tunnel-identifier myTunnel --no-remove-colliding-tunnels --wait-tunnel-shutdown`
  - Replace `<UserName>` with saucelabs username and `<AccessKey>` with saucelabs access key


text:
# Lumen PHP Framework

[![Build Status](https://travis-ci.org/laravel/lumen-framework.svg)](https://travis-ci.org/laravel/lumen-framework)
[![Total Downloads](https://poser.pugx.org/laravel/lumen-framework/d/total.svg)](https://packagist.org/packages/laravel/lumen-framework)
[![Latest Stable Version](https://poser.pugx.org/laravel/lumen-framework/v/stable.svg)](https://packagist.org/packages/laravel/lumen-framework)
[![Latest Unstable Version](https://poser.pugx.org/laravel/lumen-framework/v/unstable.svg)](https://packagist.org/packages/laravel/lumen-framework)
[![License](https://poser.pugx.org/laravel/lumen-framework/license.svg)](https://packagist.org/packages/laravel/lumen-framework)

Laravel Lumen is a stunningly fast PHP micro-framework for building web applications with expressive, elegant syntax. We believe development must be an enjoyable, creative experience to be truly fulfilling. Lumen attempts to take the pain out of development by easing common tasks used in the majority of web projects, such as routing, database abstraction, queueing, and caching.

## Client id
Client_id : 2

## Client Secret
Client_secret: j2kC50ZbHolBQsle4pa7yr7zUxXPrQXUeInkIrel

# Demo Site
here is the demo site where you can interact with ouath 2 api.
[Click here to Demo Site](https://shahzadafridi10.000webhostapp.com/home).

## Registration
![Oauth - Registartion](https://i.imgur.com/9RVcnmN.png)

## Token Generation
![Oauth - Token](https://i.imgur.com/aypsO3W.png)

## Refresh Token
There is a minior bug in url. To Refresh token, just back to home [Click home](https://shahzadafridi10.000webhostapp.com/home) page then do refersh token operation.

refrest_token: At time of new token generation then there is two keys one is token and second is refresh token so to refresh token then pass the last time generated token api -> refesh token. It will work only one time.

e-g

If I pass refresh token of last time generated token api -> refresh token. It will give me new token and refersh token so next time we will use these.

![Oauth - Refresh Token](https://i.imgur.com/Sh8mEaK.png)

## Login
Login is not working at the moment. I will updat the code soon.

# Postman collection of API's

Explore api from postman documentation. [Here is the complete Postman documentation](https://documenter.getpostman.com/view/4771623/SVfRuoJ1?version=latest).

# database
This is Oauth table. You can use this clinet_id as column name id and client_secret in order to generate token.
![Database - Oauth Table](https://i.imgur.com/g8bdYRI.png)

![Database - User Table](https://i.imgur.com/IBG3PNe.png)

## License

The Lumen framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).


text:
# Turkish Delight

Crystal/Toro

Need to compile with the release flag...
```
crystal build src/el_toro_loco.cr --release --no-debug
```

Before running, need the URLs in ENV variables:
```
export REFEREE_URL="enqfc8y2t9fo.x.pipedream.net"
export OPPONENT_URL="http://enqfc8y2t9fo.x.pipedream.net"
```

repository: dhoplaros/microwars

repo_name: dhoplaros/microwars